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)

Жека 24.10.2005 17:45

Насчет фпс:
1. Надо сделать как PAX советовал, все в 1 меш засунуть
2. Учти, что противники - это кубики, когда модельки будут, будет еще тормознее работать
3. 45 врагов не понадобится за раз рисовать, максимум 10-15 (если только на сложном уровне).

Насчет поправок в коде: это нормально, я постараюсь в ближайшее время продвинуть ход разработки.

С камерой думаю надо подождать.
Расстановка пробиваемых кубиков аналогична расстановке бонусов.

Fant 29.10.2005 17:56

Официально заявляю!

ВСЕ ПРИЗЫ ДЛЯ одного игрока СДЕЛАНЫ и РАБОТАЮ


НУЖНО СДЕЛАТЬ:

1) ИИ2, ИИ3, ИИ4, ИИ5 - Жека над этим работает

2) Камера:

1. Вид "из глаз"(как в экшн).

2. Следящая сверху справа(или слева).камера следит за игроком(как в РПГ).

3. Вид "вертикально сверху. При приближении камера следит за игроком.

4. Вид, установленный пользователем. камера следит за игроком(любой вариант, настроенный игроком).

3) Возможность СОХРАНЕНИЯ и ЗАГРУЗКИ
Людей над работой корпит очень мало! Жека и Я поэтому прошу присоединиться кто МОЖЕТ и ХОЧЕТ учавствовать в проекте!

БАГ - если игрок стоит на бомбе и происходит взрыв, то не отнимаются жизни у игрока. - нужно работать над этим!

Я не могу сказать, что проект "вянет", но лишние силы не помогут!

ПРОШУ ПРОТЕСТИТЬ!!!
1) Если ли еще баги?
2) не мало ли ФПС при добавлении ИИ или большого количества взрывов?
3) Если есть что-то еще - пишите!

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

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

С уважением, Санек (Александр, он же Fant)!

выкладываю только код. все ресурсы я выкладывал ранее.

Код весит 6 кб!

Жека 01.11.2005 14:09

Цитата:

если игрок стоит на бомбе и происходит взрыв, то не отнимаются жизни у игрока. - нужно работать над этим!

я ждал, когда же ты наконец скажешь об этом ;)
Решение: надо перед самым взрывом бомбы проверять расстояние от нее до игрока, и если оно меньше, скажем, размера бомбы, то влип он, этот игрок.

ОффТ:
Цитата:

Я не могу сказать, что проект "вянет", но лишние силы не помогут!
прочитай-ка внимательно концовочку ;)

Fant 01.11.2005 19:34

:?? :?? :?? :?? :?? :?? :?? :?? :)) :)) :)) :)) :))
вот я... :bad: :bad:

совсем из ума выжил!!!

Я имел ввиду НЕ помешают!!!!!!!!!!!!!!!!!!!!!!!!!!!!

ТО есть наоборот! Хочу что бы люди присоединялись!!!
А то всего 3 скачивания (((
да и никто сюда давно не писал!

С бомбой Я лично разберусь, ! Это просто!!! Возможно поняту камеру

А вот с остальными вопросами это уже сложнее :( :(

и!!!! ЛЮДИ

вы меня не правильно поняли!!! Вернее это я неправильно написал!!! Ни не помогут,а НЕ ПОМЕШАЮТ!!! ТО есть наоборот хочу, что бы народ присоединялся! И писал мнение об игре! Для этого я создам в болтавне специальный раздел!!! Так можно писать все, что угодно!!!

Жека 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) Убрал!

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

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

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


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

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