forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Bomberman_Standard_Edition (http://forum.boolean.name/showthread.php?t=79)

Жека 26.11.2005 13:19

Итак, я попробовал объединить кубики.
ДО количество фпс у меня было ~166, ПОСЛЕ стало ~250.
Делал при помощи команды AddMesh(src,dest).
НО: я добавлял кубики в два меша - один для пробиваемых, другой для непробиваемых кубиков.
Как же теперь удалять пробиваемые кубики? - Никак! Просто их не надо объединять!
Я это для проверки сделал.
Если их не объединять, то фпс = ~200
Объединение стенок и пола прироста не дало, но возможно на медленных тачках будет заметно.

Жека 26.11.2005 13:29

Цитата:

А то всего 3 скачивания (((
да и никто сюда давно не писал!

Цитата:

Есть просьба:

не пишите плз. сообщения типа "все клево" ... пишите в томи случае, если баги или проблемы(в частности с ФПС) обнаружены!

:o''

pax 26.11.2005 19:08

Цитата:

Originally posted by Жека@Nov 26 2005, 01:19 PM
Итак, я попробовал объединить кубики.
ДО количество фпс у меня было ~166, ПОСЛЕ стало ~250.
Делал при помощи команды AddMesh(src,dest).
НО: я добавлял кубики в два меша - один для пробиваемых, другой для непробиваемых кубиков.
Как же теперь удалять пробиваемые кубики? - Никак! Просто их не надо объединять!
Я это для проверки сделал.
Если их не объединять, то фпс = ~200
Объединение стенок и пола прироста не дало, но возможно на медленных тачках будет заметно.

Могу поделиться алгоритмом изменения (точнее построения нового) меша налету (как в моей Bombers3d) :) , хотя он наверное вам понадобится, если вы будете карты еще больше делать :)

PS: я над ним бился довольно долго 8) , но зато вышло неплохо ;)

Fant 26.11.2005 19:27

2Жека:

Накосячил! Знаю! Сам виноват! Просто в разработке впервые и не знаю как себя правильно вести! Вот и написал муть! Мне очень стыдно.

2PAX:

Буду просто очень-очень признателен если вы покажете алгоритм! Будет тогда все клево!

2All:

Сказал я глупую фразу! Простите пожалуйста!
Очень хотелось бы всегда знать мнение ваше! И заходите в топик мой почаще!

вот.

Пока не буду писать ЧТО нужно делать, поскольку трудная работа с объединением все в один меш, и ИИ еще не до конца окончена!

pax 26.11.2005 20:38

Ладно начнем...

Во-первых: весь мой уровень построен в виде матрицы пользовательского типа, каждый элемент матрицы содержит тип геометрии (если например куб уничтожен, то на его место ставится "0", для вашего случая можно в матрицу добавить поле для точки привязки, чтобы обрабатывать столкновения);
Код:

Type PlaneMatrix
        Field GeomType%, Pivot%
End Type

dim Matrix.PlaneMatrix(Width,Height)
For i = 1 to Width
 * For j = 1 to Height
 * * *Matrix.PlaneMatrix(i,j)= New PlaneMatrix
 * * *'здесь можно присвоить тип геометрии (Matrix(i,j)\GeomType%=GeomType1)
 * * *'тлт создать пивот для обработки столкновений
 * Next
Next

Во-вторых: вся геометрия (квадратная) разделена на вертикальные линии (т.к. кол-во объектов по вертикали меньше чем по горизонтали);

В-третьих: линия геометрии имеет свой тип (или список), в котором хранится mesh (это на всякий случай),для кажной линии создается свой меш, и surface, все объединяется в масиив этого типа (Plane.PlaneLine(N), где N число линий);
Код:

Type PlaneLine
        Field Surface%, Mesh%
End Type

Далее есть дополнительный тип, который отвечает за то, какие линии карты будут обрабатываться:
Код:

Type PlaneLineUpd
        Field I% 'это номер линии, т.к. поле это матрица, то i - номер столбца
End Type

Добавление лини для обработки осущ. след функцией:
Код:

Function UpdateLine(I%)
        For plu.PlaneLineUpd = Each PlaneLineUpd
 *If plu\I=I Then Return
        Next
        plu.PlaneLineUpd=New PlaneLineUpd
 * *plu\I=I
End Function

Потом, в главном цикле перестраиваются линии, которые изменились:
Код:

For plu.PlaneLineUpd = Each PlaneLineUpd
        UpdatePlaneLine(plu\I)
        Delete plu
Next

Вот функция перестраивания линии:
Код:

Function UpdatePlaneLine(I)
 *Local Z%, K%, Surf% ',Mesh%
 *Local X#=GetX#(I)

 *Surf%=DarkPlane.PlaneLine(I)\Surface%
 *'Mesh%=DarkPlane.PlaneLine(I)\Mesh%
 *ClearSurface(Surf)

 *For K=0 To MatrixHeight
 * *Z=GetZ#(K)
 * *AddBoxToSurface(Surf%,Matrix(I,K)\GeomType%,X,PoleY,Z) 'PoleY
 * *'AddBoxToSurface(Mesh%,Matrix(I,K)\GeomType%,X,PoleY,Z)
 *Next
End Function

Функция добавления бокса к мешу:
Код:

Function AddBoxToSurface(Mesh%,GeomType%,X#,Y#,Z#)
local TempMesh%=0
        Select GeomIndex%
 *Case GTNothing%
 *  return
 *Case GTBlock1%
 *        TempMesh%=CopyEntity%(Block1)
 *Case GTBlock2%
 * * * * * * * * *TempMesh%=CopyEntity%(Block2)
        End Select
 * * *PositionEntity(TempMesh%,X#,Y#,Z#)
 * * *AddMesh TempMesh%,Mesh%
End Function

Функцию добавления бокса к поверхности я приводил раньше (используйте метод, котторй вам больше понтавится),в моём случае добавление происходит повертексно, чтобы не рисовать лишние грани кубов (это заметно при включении каркасного режима), с паралельным наложением UW координат, и установкой нормалей для получения качественной освещенности.

Рекомендации: можете добавлять торько разрушаемые кубы к мешу, а неразрушаемые объединить в один (как сделал Жека).

PS: Я привел сильно упрощенный алгоритм (в нем нет "тумана войны" и повертексного создания геометрии) но думаю для вашей игры это лучше всего (кстати, в моей игре в загружаемых картах неразрушимая геометрия строится этим же способом).

Вот и все ;)

jimon 26.11.2005 22:27

а зачем такие сложности ?

pax 27.11.2005 18:58

Цитата:

Originally posted by jimon@Nov 26 2005, 10:27 PM
а зачем такие сложности ?
Чтоб рендирилось быстрее :)

Fant 27.11.2005 19:22

2PAX

Огромное тебе СПАСИБО !

Я в нем со временем постараюсь разобраться! Хотя сложно (для моего уровня)

Fant 27.11.2005 21:09

2Жека

Огромное спасибо, что ты со мной и всегда помогаешь, а главное ВСЕГДА ПОДДЕРЖИВАЕШЬ меня! Для меня все это очень важно!

2ALL

Сделал:
1) С камерой покончено. Все.
* Я с удовольствием выслушаю любое предложение(что и где поменять В КАМЕРЕ
* Любую критику или совет ПО ПРАВКЕ кода! Без вашей помощи будет сложно тестировать проект!

Нужно:
1) ИИ (все в диздоке)
2) Оптимизировать код (все засунуть в меш, как мне неоднократно предлогали и Pax выложил как это сделать! За что ему отдельный respect!!!
-----------------------------------------------------------------------------------------------
думаю, что пока это все. есть всего два вопроса. Но они очень объемные.

8,4,5,6 - на доп. клаве - движение.
1,2,3 - на доп. клаве фиксировать камеру.
1,2 - вызвать ИИ
f1, f2, f3, f4, f5, f6, f7 - призы
пробел - ставить бомбу
enter - взорвать (если есть приз детонатор)
колесо мыши, левая, правая кнопка - управление камерой

*выкладываю ВСЕГО бомбера, что есть на сегодня. ВЕСИТ 41 КБ!!!

Жека 28.11.2005 21:00

Цитата:

Накосячил! Знаю! Сам виноват! Просто в разработке впервые и не знаю как себя правильно вести! Вот и написал муть! Мне очень стыдно.
Всё ок ;)
Я тебя понимаю: хочется так много сказать, вот и говоришь, а то что мысли кое-где не стыкуются, это не страшно (меня радует, когда такое вижу, в хорошем смысле).

По игре:
1. можно сделать ещё "режим бога", т.е. чтобы камера была высоко и смотрела вниз, но была привязана к игроку. А то врагов не видно и заблудиться можно в лабиринте ().
2. так и хочется вручить игроку дробовик при виде от первого лица :)
(и чтобы монстры не кончались, пока камера вся не зальётся кровью)
3. конструкцию
***bomb\lifetime = bomb\lifetime+50
***If (bomb\lifetime=5000 ) то взрыв бомбы
надо заменить на такое
а)запоминаем время создания бомбы, т.е. когда нажали пробел - bomb\timeCreated = MilliSecs()
б)устанавливаем НАСТОЯЩЕЕ время (в миллисекундах) жизни бомбы - bomb\timeLife = 2000 (будет жить 2 секунды)
в)делаем проверку: если (MilliSecs()-bomb\timeCreated >= bomb\timeLife) то делаем всё, что относится к взрыву
Это нужно для того, чтобы скорость взрыва бомбы не зависела от мощности компа игрока.
4.почему враги не убивают игрока, они же такие страшные и злые?
5.в функции создания камеры сразу после строчки
c\camera=CreateCamera()
добавить строчку
PositionEntity C\camera,5,5,-270
этим мы установим камеру в позицию игрока, и она не будет нестись к игроку через всё игровое поле
6.функция сброса коллизий для прохода игрока сквозь стены получилась почти копией для функции установки коллизий для всего, надо подумать, можно ли упростить её.
7.самого бонуса прохода сквозь стены я не нашёл
8.убрать удаление уровня нажатием на F8

ПС: Дробовик нужен, стопудово!

Fant 29.11.2005 19:05

Спасибо за поддержку!

По игре:
1) Режим бога сделал. Теперь по нажатии клавиши 9 на доп. Клаве есть этот режим.
* Ужасное неудобство на середине карты. Очень резкий поворот камеры, хотя и и так уменьшил значения. Что делать?
2) Этот бомбер называется standard edition. То есть ничего оригинального. Просто ремейк старого бомбера 92 года. Ни крови, ни насилия, ни оружия не будет. Зато в проекте Bomberman_UnlimitedEdition (если закончим этот бомбер, конечно…вот там можно будет оторваться J )
* Все еще в переди;)
3) Не осилил. К сожалению.
4) Враги теперь убавляют жизни у игрока
· Систему нужно дорабатывать. К примеру если жизнь отняли, уничтожаем плеера и ставим в начальную позицию. Думаю, что на данном этапе этого пока достаточно
5) Сделал камеру.
6) Буду думать, но пока ничего не придумал. Да и идея сброса – jimona…но буду думать!
7) F2 на клавиатуре. Появляется кубик как обычно.
8) Убрал!

Жду следующих команд по тому, что нужно делать!

Тестим то, что есть!

ПС: ты серьезно про оружие?

Жека 29.11.2005 19:52

1. пока не знаю, не думал
3. Это просто, не парься, если не въезжаешь пока, сделаю - увидишь.

про оружие пошутил, но если довернуть оружие, то получим отдельную игру.

я с ИИ так и не разобрался - дёргаются! :(

Fant 29.11.2005 20:01

Как ты считаешь!? Чтоит обраться на RBC или засмеют и заклюют как обычно?

Жека 29.11.2005 20:11

Надо противников доделать сначала, чтобы уже поиграться можно было.

ПС: просьба мне рейтинг не повышать так часто - неудобно.

Fant 29.11.2005 20:14

Я повысил тебе рейтинг за ДЕЛА!

Ты, единственный, кто ТАК моного помогаешь с блиц!
Это достойно +

А логотип! Без тебя не было бы того, что там есть) загляни, кстати!
Это тоже "+"

Я не прав?

Если не прав, то не буду так часто повышать) А Если прав - то...


Так я и говорю! Обратиться в RBC форум? Может не засмеют...хотя сомневаюсь! Там тока это и умеют!

Жека 29.11.2005 20:49

Просто надо делать так, чтобы не засмеяли. Смех - естественная реакция. И вообще, ты же просто показываешь игру, не понравится - их проблемы :)

pax 29.11.2005 22:15

И еще, сделайте кубики без нижней стороны, чтоб лишних треугольников в сцене не было.

jimon 29.11.2005 23:07

а у вас все угарно получается :)

фант... иногда даже гуру ошибаются (я думаю ты поймеш о чем я)

Fant 29.11.2005 23:08

Цитата:

Originally posted by jimon@Nov 29 2005, 10:07 PM
а у вас все угарно получается :)

фант... иногда даже гуру ошибаются (я думаю ты поймеш о чем я)

Честно - не понял.

Но подразумеваю что ты имеешь ввиду что-то плохое! ГОВОРИ! :(

Жека 30.11.2005 13:45

Цитата:

И еще, сделайте кубики без нижней стороны, чтоб лишних треугольников в сцене не было.
в 3д максе ;)

Fant 30.11.2005 13:46

Цитата:

Originally posted by Жека@Nov 30 2005, 12:45 PM
Цитата:

И еще, сделайте кубики без нижней стороны, чтоб лишних треугольников в сцене не было.
в 3д максе ;)

А размер какой брать? Экспреементировать?

Жека 30.11.2005 14:35

Цитата:

А размер какой брать? Экспреементировать?
Сам хотел спросить.
Вопрос: какой нужно брать размер в максе и при каких единицах измерения, чтобы "линейная 1ца" в максе соответствовала 1це в блитце?

jimon 30.11.2005 16:01

2 fant - я тебе раньше когдато говорил что у тебя проект провальный

похоже что щас дела пошли наоборот ;)

Fant 30.11.2005 16:56

2Жека:
Понял! Буду эксперементировать!
Не знаю про размеры. Не проверял! Когда я делал в максе можели(для прошлых неудачных игр, то я все делал в масе и проблем с размерами не было!

2jimon:
Спасибо за поддержку!

Fant 01.12.2005 00:57

Цитата:

Originally posted by Жека@Nov 30 2005, 01:35 PM
Цитата:

А размер какой брать? Экспреементировать?
Сам хотел спросить.
Вопрос: какой нужно брать размер в максе и при каких единицах измерения, чтобы "линейная 1ца" в максе соответствовала 1це в блитце?

У меня сейчас нет макса. Я скачал milkshare а на нем нельзя таких кубиков делать((

pax 01.12.2005 22:29

Я помойму раньше приводил этот код:
Код:

Const BoxUpperSide%=0
Const BoxFrontSide%=1
Const BoxBackSide%=2
Const BoxLeftSide%=3
Const BoxRighrtSide%=4

;C-размер куба, Surf%-поверхность к которой добавляется Куб
;X#,Y#,Z# - координаты центра куба
Function AddBoxToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#=1)
AddBoxSideToSurface(Surf%,BoxUpperSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxFrontSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxBackSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxLeftSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxRighrtSide%,X#,Y#,Z#,C#)
; Нижнюю сторону куба я не добавлял :)
End Function

;Можно добавить только сторону
Function AddBoxSideToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#)
Local X1#, Y1#, Z1#, X2#, Y2#, Z2#, X3#, Y3#, Z3#, X4#, Y4#, Z4#
Local V1%, V2%, V3%, V4%
Local T1%, T2%
C#=C#/2
Select BoxSide%
 Case BoxUpperSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
 Case BoxFrontSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#-C: Y2#=Y#-C: Y3#=Y#+C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#-C: Z4#=Z#-C
 Case BoxBackSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#-C: Y4#=Y#-C
 Z1#=Z#+C: Z2#=Z#+C: Z3#=Z#+C: Z4#=Z#+C
 Case BoxLeftSide%
 X1#=X#-C: X2#=X#-C: X3#=X#-C: X4#=X#-C
 Y1#=Y#-C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#-C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
 Case BoxRighrtSide%
 X1#=X#+C: X2#=X#+C: X3#=X#+C: X4#=X#+C
 Y1#=Y#+C: Y2#=Y#-C: Y3#=Y#-C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
End Select
V1%=AddVertex(Surf%, X1#, Y1#, Z1#, 0, 0)
V2%=AddVertex(Surf%, X2#, Y2#, Z2#, 1, 0)
V3%=AddVertex(Surf%, X3#, Y3#, Z3#, 1, 1)
V4%=AddVertex(Surf%, X4#, Y4#, Z4#, 0, 1)
T1%=AddTriangle(Surf%, V1%,V3%,V2%)
T2%=AddTriangle(Surf%, V1%,V4%,V3%)
End Function

В максе стандартные размеры в дюймах, в прочем как и в блитце ;)

Fant 01.12.2005 22:35

2Pax

Уууу...код то ты приводил...но я не понимаю КАК им пользоваться! :??

что куда втыкать, что бы куб появился!?

pax 01.12.2005 22:44

Цитата:

Originally posted by Fant@Dec 1 2005, 10:35 PM
2Pax

Уууу...код то ты приводил...но я не понимаю КАК им пользоваться! :??

что куда втыкать, что бы куб появился!?

вот пример:
Код:

box=CreateMesh()
surf=GetSurface(box)
AddBoxToSurface(Surf%,0,0,0,5)
UpdateNormals(box)


Да из функции AddBoxToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#=1) сотрите параметр BoxSide% - он не нужен, а код примера просто скопируй в своего бомбера ;)

Fant 01.12.2005 22:46

СпасибО!
Я сделаю! Завтра!
А то щас англ. делаю! Не могу проверить!

Fant 01.12.2005 23:30

Выбирая направление движения ориентируй врагов на Игрока, а не проверяй бездумно куда можно пойти... Сначала строй вектор между врагом и игроком, определяй где он находится, если правее. значит сначала проверь можно пойти направо или нет...

Проверку на смену движения делай только между блоками, незачем делать ее через рандомное время...

Синхронизацию скорости с ФПС тем способом который ты делаешь сделать невозможно... У тебя будет получаться что объект который проходит обработку позднее будет двигаться быстрее. Хотя в данном случае этого может и не будет заметно. Нужно перед обработкой логики запомнить значение времени и везде использовать эту переменную...

Колизии тебе здесь мешают... Тебе нужет только masPrep...

Это для ИИ посоветовал Tolking Pet!

Fant 01.12.2005 23:49

Код:


Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Const BoxUpperSide%=0 *
Const BoxFrontSide%=1
Const BoxBackSide%=2
Const BoxLeftSide%=3
Const BoxRighrtSide%=4

box=CreateMesh()
surf=CreateSurface(box)
AddBoxToSurface(Surf%,0,0,0,5)
UpdateNormals(box)


;C-размер куба, Surf%-поверхность к которой добавляется Куб
;X#,Y#,Z# - координаты центра куба
Function AddBoxToSurface(Surf%,X#,Y#,Z#,C#=1)
AddBoxSideToSurface(Surf%,BoxUpperSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxFrontSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxBackSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxLeftSide%,X#,Y#,Z#,C#)
AddBoxSideToSurface(Surf%,BoxRighrtSide%,X#,Y#,Z#,C#)
; Нижнюю сторону куба я не добавлял :)
End Function

;Можно добавить только сторону
Function AddBoxSideToSurface(Surf%,BoxSide%,X#,Y#,Z#,C#)
Local X1#, Y1#, Z1#, X2#, Y2#, Z2#, X3#, Y3#, Z3#, X4#, Y4#, Z4#
Local V1%, V2%, V3%, V4%
Local T1%, T2%
C#=C#/2
Select BoxSide%
Case BoxUpperSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
Case BoxFrontSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#-C: Y2#=Y#-C: Y3#=Y#+C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#-C: Z4#=Z#-C
Case BoxBackSide%
 X1#=X#-C: X2#=X#+C: X3#=X#+C: X4#=X#-C
 Y1#=Y#+C: Y2#=Y#+C: Y3#=Y#-C: Y4#=Y#-C
 Z1#=Z#+C: Z2#=Z#+C: Z3#=Z#+C: Z4#=Z#+C
Case BoxLeftSide%
 X1#=X#-C: X2#=X#-C: X3#=X#-C: X4#=X#-C
 Y1#=Y#-C: Y2#=Y#+C: Y3#=Y#+C: Y4#=Y#-C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
Case BoxRighrtSide%
 X1#=X#+C: X2#=X#+C: X3#=X#+C: X4#=X#+C
 Y1#=Y#+C: Y2#=Y#-C: Y3#=Y#-C: Y4#=Y#+C
 Z1#=Z#-C: Z2#=Z#-C: Z3#=Z#+C: Z4#=Z#+C
End Select
V1%=AddVertex(Surf%, X1#, Y1#, Z1#, 0, 0)
V2%=AddVertex(Surf%, X2#, Y2#, Z2#, 1, 0)
V3%=AddVertex(Surf%, X3#, Y3#, Z3#, 1, 1)
V4%=AddVertex(Surf%, X4#, Y4#, Z4#, 0, 1)
T1%=AddTriangle(Surf%, V1%,V3%,V2%)
T2%=AddTriangle(Surf%, V1%,V4%,V3%)
End Function

camera=CreateCamera()
MoveEntity camera,0,0,-10

Repeat

UpdateWorld
RenderWorld
Flip
Until KeyHit(1)

Делаем крутой кубик! И без дниЩЩа!

Pax ! Его идея!

Повысилось ФПС! Очень незначительно! Но повысилось!

Fant 02.12.2005 16:59

Подведем итоги:

Глобальные проблемы:

1) ИИ
К сожалению это проблема номер 1. И пока не решима(на сегодня)
--------------------------------------------------------------------------------

Очень нужна помощь с ИИ

2) Сделать генератор случайной расстановки пробиваемых кубиков(для "схватки")

Жека 02.12.2005 18:31

Я бы сказал не нерешима, а не решеНА.

Случайная расстановка кубиков аналогична расстановке бонусов, только делаешь цикл от 1 до колвоКубиков, в котором их и расставляешь.

pax 02.12.2005 20:37

2Жека :
Я кстати не заметил, где в бомбере неразрушимые кубики объединяются в один меш...
по мойму для этого надо создать пустой меш, и запихивать их туда, да еще вместо того чтобы к кубикам применять EntityRadius() надо создать точку привязки и ей сделать EntityRadius() (как бы имитация, что на этом месте стоит куб). Просто если все объединить в один меш инфа по колизиям потеряется...

Жека 02.12.2005 20:50

А я Fant'у не давал исходник с объединёнными кубиками.
А у нас стоит (и стоял) метод элипсоид-полигоны, поэтому ничего не потерялось.
Если делать элипсоид-элипсоид, то игрок будет немного "въезжать" между кубиков.

pax 02.12.2005 21:10

Цитата:

Originally posted by Жека@Dec 2 2005, 08:50 PM
А я Fant'у не давал исходник с объединёнными кубиками.
А у нас стоит (и стоял) метод элипсоид-полигоны, поэтому ничего не потерялось.
Если делать элипсоид-элипсоид, то игрок будет немного "въезжать" между кубиков.

Эллипсоид-полигон - это достаточно тормозной метод, тогда лучше сделайте точки привязки и поменяйте метод на эллипсоид-бокс, так быстрее должно быть, эллипсоид -полигон надо использовать только к стенам.

в своей игре я кстати вообще обрабатываю коллизии вручную, тока для вашей игры это может не подойти, у меня положение игрока выравнивается по клеточкам про каждом повороте...

Жека 03.12.2005 09:27

Здесь тоже надо вручную: и игрок, и противники должны двигаться между кубиками от кубика к кубику, а щас они просто движутся, без выравнивания.

Fant 03.12.2005 10:31

Цитата:

Originally posted by Жека@Dec 3 2005, 08:27 AM
Здесь тоже надо вручную: и игрок, и противники должны двигаться между кубиками от кубика к кубику, а щас они просто движутся, без выравнивания.
Ты хочешь сказать, что игрок должен двигаться как паровоз!? ( в том смысле, что по ЗАДАННОЙ траектории! (то есть нельзя сместиться на -1)

Так так оно и есть! Повернуться можно на 90 градусов! А хотьба? Можно заставить игрока ходить на 5 единиц каждый раз! Тогда что же бужедет с плавностью? Вообще идея, конечно, хорошая! Но я пока что не представляю как ее реализовать!

Не кажется ли, что при выравнивании будут "резкие движения" ? (я,конечно, не знаю точно, но все же!)

Fant 03.12.2005 10:34

Цитата:

Originally posted by Жека@Dec 2 2005, 05:31 PM
Я бы сказал не нерешима, а не решеНА.

Случайная расстановка кубиков аналогична расстановке бонусов, только делаешь цикл от 1 до колвоКубиков, в котором их и расставляешь.

Спасибо за досказку!

Надеюсь, что это я сам осилю! Ну а если что, то напишу в раздел 3d программирования! Но, надеюсь, что кубики я сам расставлю!

Я уже так сам как-то расставлял (года 1,2 назад)

И проблема, с котороя я застрял была: КАК заставить коллидется пробиваемые кубики между собой! Это и была самая ужасная трабла! Я сумел сделать так, что бы не было коллизии непробиваеых и пробиваемых, а вот пробиваемых и пробиваемых увы не смог :(

Жека 03.12.2005 12:59

Цитата:

И проблема, с котороя я застрял была: КАК заставить коллидется пробиваемые кубики между собой! Это и была самая ужасная трабла! Я сумел сделать так, что бы не было коллизии непробиваеых и пробиваемых, а вот пробиваемых и пробиваемых увы не смог
Не понял, зачем это? Они же не двигаются. Вот если сделать взрывную волну, тогда да.
Посмотри расстановку бонусов.

Метод элипсоид-бокс надо попробовать - узнать что быстрее.
Кстати, для работы ИИ кубикам установлен ПИК-режим - это тоже тормозит, наверное.

Движения на 5 делать конечно не надо!
Просто надо сделать автоматическую хотьбу между клетками, т.е. игрок нажал клавишу "вперёд" и отпустил, а его герой продолжает двигаться, пока не пройдёт 5 единиц - ПЛАВНО.
Так же и с простивниками.

pax 04.12.2005 00:28

Цитата:

Движения на 5 делать конечно не надо!
Просто надо сделать автоматическую хотьбу между клетками, т.е. игрок нажал клавишу "вперёд" и отпустил, а его герой продолжает двигаться, пока не пройдёт 5 единиц - ПЛАВНО.
Так же и с простивниками.

Для этого я хотел использовать вот этот алгоритм:

Fant 02.01.2006 17:21

ВО ПЕРВЫХ С НОВЫМ ГОДОМ ВСЕХ!!!!!!!!!!

а теперь к делу:

Как насчет такого меню?

Ведь работает!
Можно нажать на кнопку "опции", а потом опять вернуться в главное меню!

Только вот так и не смог я начать новую игру из меню! (вставлял все "главные" функции, но почему-то не вышло.

Вообщем как вообще ЛУЧШЕ делать меню?

И чего плохого в моем меню! (ведь можно его продолжать расширять(по моей идеи). Этот вариант меню я взял с учебника Скавена.

Если убрать в начале функцию главного меню, то можно рассмотреть игру.

Добавил 1 карту игровую.
+ влепил по нажатии f10 случайную расстановку.

Пока что все!

Жду замечаний по поводу меню! (и конечно советов)

jimon 02.01.2006 19:23

кстати кльово ! :)
только меню ужс...
и двигай на одиницу движения а не на то что щас - просто удобнее будет

Fant 02.01.2006 20:33

Цитата:

Originally posted by jimon@Jan 2 2006, 06:23 PM
кстати кльово ! :)
только меню ужс...
и двигай на одиницу движения а не на то что щас - просто удобнее будет

Меню клевое???

Как меню?

jimon 02.01.2006 23:25

по коду более мение
по виду ужас и неработает

Fant 03.01.2006 11:55

Цитата:

Originally posted by jimon@Jan 2 2006, 10:25 PM
по коду более мение
по виду ужас и неработает

По виду знаю! Графика уже сделана на 0%
Хм...как это по коду не работает? В меню "опции" можно зайти? Да! Значит работает!
И выход тоже работает! Только почему-то ругается на freefont!(странно)

Что бы кнопки нажимались нужно целиться в центр слова(пока так! Ведь это все пока что "без графы")

Я не знаю как мне сделать "одиночную"(пока там стоит чушь! Лишь бы ничего не происходило) ! Я при условии нажатия if нажали=1
загружаю 4 основные функции:

;MAIN FUNCTIONSfnCreatePlayer()
fnCreateEnvir()
Global cam.ChaseCam = CreateChaseCam.ChaseCam(player\obj); - CAMERA
fnLoadlevel("maps\TestAI1.txt")
fnSetCollisions()
;MAIN FUNCTIONS

и ничего!
Не знаешь в чем фишка? Может cls де-нибудь не хватает!?

И еще! По какому принципу строить меню "изменение клавиш управления" ?
Да и "выбор разрешения монитора"

2LL

Не у кого случайно нет(или может кто знает) как делать реальное меню!?

jimon 03.01.2006 15:30

взять нормальное gui - к примеру NGui

impersonalis 03.01.2006 16:11

XGUI-красиво, стильно, аля Win - но долго грузит скины - для игры не самое подходящее
AlphaGUI - красивые эффекты перехода, но безбожно глючит , если в игре заюзан ProjMode
NGUI - оптимальный вариант, но некоторые переменны (по недосмотру авторов) не имеют библиотечного префикса, так что надо быть аккуратным при объявлении переменных, чтобы "не задеть" ГУИшные.

Fant 03.01.2006 17:37

У меня когда-то был GUI какой-то, но я так и не разобрался. Хелпа к нему не было.

Насколько меню, сделанное в NGUI лучше чем то, которое можно сваять средствами blitz?

Если разница велика, подскажите пожалуйста где можно скачать NGUI с примером и хелпом (если такое имеется)

Если "игра не стоит свеч" то по какому принципу лучше делать меню средствами блиц?

jimon 03.01.2006 19:30

ети все перечисленые гуи написаны на блитце :)

Fant 03.01.2006 20:06

Цитата:

Originally posted by jimon@Jan 3 2006, 06:30 PM
ети все перечисленые гуи написаны на блитце :)
ха))

Вывод. Если делать меню без них, то выходит что я изобретаю велосипед!

А насколько сложно делать на ГУИ меню?
Может мне проще будет по функциям(как и в начале задумано)?
Где можно достать ГУИ? (а стоит ли, если разница между красотой и сожностью создания настолько велика, что я просто не справлюсь)

jimon 04.01.2006 13:45

где достать ? в гугле или где нить... даже хотябы по запросу "NGui download" :)

и делать несложно... только надо незапутатся ... а то .bb файл гуи весит ~400 кб, справка столько же :)

Fant 05.01.2006 12:37

Цитата:

Originally posted by jimon@Jan 4 2006, 12:45 PM
где достать ? в гугле или где нить... даже хотябы по запросу "NGui download" :)

и делать несложно... только надо незапутатся ... а то .bb файл гуи весит ~400 кб, справка столько же :)

Скачал!

Посмотрел примеры, но еще не резбирался! Примеры ооочень красивые!
А это правильно, что Ngui.bb не запускается?

jimon 05.01.2006 18:27

ето просто набор функций,типов и глобальных переменых + когда ты его инклудиш там выполняется код псевдоинициализации

тоесть ето просто можно щитать псевдо-библеотекой, из етого правильно что он незапускается :)

Fant 10.03.2006 23:57

Вообщем первое, что я хочу сказать тут это то, что бомбер жив, и продолжает развиваться!!! :ok:

Хотя сейчас испытывает проект трудности (наврерное это уже все слышали 1000 раз, так что пишу это с улыбкой)

Выкладываю последнюю версию.

А вот и что необходимо:

1) Нужен 2D художник!

2) Есть баги, которые трудно мне исправить, то если кто-нить из форума великодушно сможет разобраться, то я буду только рад!
Описание:
Сейчас игра запускается в режиме "случайное расставление пробиваемых кубиков"
Так вот: Если попытаться клавишей f2-f6 (любой из них) добавить приз на игровую локацию, игра полностью зависнет.
При этом если загрузить карту с кубиками, то бага не происходит и призы добавляются отлично.

Что нужно: Сделать так, что бы при добавлении приза на локацию, не происходило зависание игры.

Пока что все! очень надеюсь, что мне помогут с этим вопросом!!!

Fant 16.03.2006 17:48

:SOS: никто не знает как это сделать!?

Fant 18.03.2006 11:27

Блин! нет ничего хуже, чем когда тебя игнорируют!
Это тонкий намек на то, что мне можно удалять тему и забить на бомбера? :'((

tormoz 18.03.2006 13:25

Цитата:

2) Есть баги, которые трудно мне исправить, то если кто-нить из форума великодушно сможет разобраться, то я буду только рад!
Описание:
Сейчас игра запускается в режиме "случайное расставление пробиваемых кубиков"
Так вот: Если попытаться клавишей f2-f6 (любой из них) добавить приз на игровую локацию, игра полностью зависнет.
При этом если загрузить карту с кубиками, то бага не происходит и призы добавляются отлично.

Что нужно: Сделать так, что бы при добавлении приза на локацию, не происходило зависание игры.

Пока что все! очень надеюсь, что мне помогут с этим вопросом

Если ты про это, то тут тебе НИКТО не в состоянии помоч.
Это примерно то же самое. что :
Я варю борщ, а он гад очень невкусный выходит. Что мне делать ?

Где-то ты накосячил в коде, а вот где - только тебе искать. ;)

Fant 18.03.2006 14:14

Ладно! С багом помутю что-нить! А как реализовать (я даже представить не могу) хождение игрока не на 1 клетку (при нажатии клавиши вперед) а сразу на 5 или на 10 (при этом что бы это мягко было)

tormoz 18.03.2006 15:45

Покажи кусок кода, который у тебя двигает на одну клетку

Fant 18.03.2006 15:49

Код:

Function fnUpdatePlayer(spd#=1)
       
;for each прееделать так
; движение игрока
        KEY_MOVE_LEFT = KeyHit(75)
        KEY_MOVE_UP = KeyDown(72)
        KEY_MOVE_RIGHT = KeyHit(77)
        KEY_MOVE_DOWN = KeyDown(76)
       
        If (KEY_MOVE_UP=1)
        MoveEntity player\obj,0,0,spd#
        End If
       
        If (KEY_MOVE_LEFT=1 )
        TurnEntity player\obj,0,90,0
        End If
       
        If (KEY_MOVE_RIGHT=1 )
        TurnEntity player\obj,0,-90,0
        End If
       
        If (KEY_MOVE_DOWN=1)
        MoveEntity player\obj,0,0,-spd#
        End If

Как такого перепещения на "клетку нет" ! просто движение!

axel186 18.03.2006 16:39

не уверен, но может надо сделать spd#=5 или скока там надо...

tormoz 18.03.2006 17:58

Меняй значение spd#
или делай так:

Код:


If (KEY_MOVE_UP=1)
For i=1 to step_player

MoveEntity player\obj,0,0,spd#

Next
End If

step_player - количество шагов

Fant 18.03.2006 20:21

Цитата:

Originally posted by tormoz@18.3.2006, 16:58
Меняй значение spd#
или делай так:

Код:


If (KEY_MOVE_UP=1)
For i=1 to step_player

MoveEntity player\obj,0,0,spd#

Next
End If

step_player - количество шагов

Не совсем понял где логика!
А где же мы используем step_player?


Часовой пояс GMT +4, время: 04:52.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot