Наконец-то удалось уделить два прошлых денька бомберу)
На этот раз я занялся формированием поля боя и его разрушением готовыми бомбами.
А так же набросал класс главного героя, подгрузил туда тестовую модельку и заставил его выполнять свои обязанности)
Ещё успел задизайнить главное меню и заставки.
Вот об этом и поподробнее...
О деталях кода и каких-либо реализациях в нём говорить уже получиться много.На этот раз я занялся формированием поля боя и его разрушением готовыми бомбами.
А так же набросал класс главного героя, подгрузил туда тестовую модельку и заставил его выполнять свои обязанности)
Ещё успел задизайнить главное меню и заставки.
Вот об этом и поподробнее...
Я решил что лучше подробно опишу идеи, да и вообще ход моей мысли которая привела меня к реализации, которую вы и увидите.
Начнём с того, что в силу основной занятости я почти не садился за бомбера и от этого ход плавной инкрементной разработки перешёл в экстремальное программироавние.
После реализации бомбы я сделал такую же отдельную реализацию поля боя без пола, но зато сразу прицепил туда бомбу и обработал коллизию осколков со стенками, вот что получилось:
Сразу хочу обратить внимание на ту деталь с бомбами, которая выглядит не совсем так как надо - это то что они вертятся за камерой, код приведён в прошлой теме. Но щас как-то к этому уже привык)
Ну вот, а дальше и пошла спешка в написании. Я взялся уже сразу за код основного проекта, сделал основу заставки с логотипами, главное меню и вход в пока что единственный уровень.
Первым делом добавил ещё кое каких эффектов к взрывам.
Вот тут я чутка попарился с взаимным отображением спрайтов...
Дело в том, что если создавать плоскости(для спрайтов эффектов) чаелдами разных родителей(в моём случае были разные дамми кубы), то на альфа областях начинают резать глаза артефакты.
От такие вот:
Сначало я думал что надо крутить настройки материалов, перекрутил всё, в основном это были настройки буфера глубины, но никакие изменения не подошли.
И уже когда отчаялся всё рендерить вручную, создал все эффекты под одним родителем и всё исправилось "само")
И так для эффектов у меня в результате получилось написано 2 класса:
- это эффект огненного хвоста осколка, в котором по сути реализована система частиц на основе TGLPlane'ов
- и простой спрайтовый эффект для дополнительных взрывов.
Далее подкрутил функцию для того чтобы извне(а все эти действия присходят в классе TField) можно было приказом создавать уровень с определёнными параметрами.
После этого решил что надо бы и главного героя набросать, чтобы уже он сам ставил бомбы, а не мне рандомно тыкать приходилось) Сделал потомка от TGLActor'а с локальным расчётом очерёдности нажатий клавиш, которые влияют на его перемещение и установку бомб.
А обработку столкновений и само движение, как следствие, сделал в TField, что позже оказалось не совсем правильно организованным с моей стороны...(плоды экстрима)
По уму обработка связки бомбермен-стены должна быть в вышестоящем классе TSingleGameManager, и класс-то у меня был, но сейчас не думаю что буду тратить время на перенос в него должных операндов...
В результате у меня образовалась картинка с перемещающимся "нежевым" болваном-бомберменом, но зато он уже ставит бомбы и плавно обруливает углы стен)
Вот пара скринов:
Вот думаю, оставить зазор у кирпичных стен или нет?
Далее я чуток повыбирал что делать дальше... Сделать ботов или сделать "живую" модель бомбера. Благо, что сама модель уже готова, а вот анимация и текстуры не очень.
У ботов же вообще ничё не готово)
И решил сделать звуки) Всяко не скучно будет тестить))
Для звуков у меня есть общедоступный синглтон TSoundManager, который представляет из себя мини менеджер на основе библиотеки squall.dll.
Звуки получились отменными, аж сам доволен)
Ну теперь всётаки пришло время пошевелиться с моделькой бомбера, а то пока настроения нету ИИ писать.
Анимацию решил поделать сам и поделал) Сётаки анимирую я лучше чем моделю, а моделить аще вроде как не умею)
Вот кстати и скрин модельки без текстуры, но уже с анимацией:
От визуального образа модельки даже придумал название для игры)
Терь надо загрузить его вместо балванки да ещё и анимацию подгружать в нужный момент.
Вот тут у меня возникли какие-то непонятки с загрузкой... я сначало подумал что что-то я в настройках актёра подзабыл, а потом когда всё проверил, решил что чё-то с экспортёром не правильно. Но дело вроде как оказалось в том, что перед экспортом я выделил не все кости, а решил выделить только те, которые скинуются с моделькой. Точно я это не проверял, но когда переэкспортировал выделив всё, то всё стало грузиться нормалёк.
По поводу обработки поворотов - это я добавил операнды в локальный обработчик Progress в классе бомбера.
Посмотрел на динамику, подправил чутка скорость анимации, вроде всё ровно.
Далее добавил условия непроходимости бомб, эт впринципе тоже самое что со стенками, только с бомбами)
Пока писал и сшулал музыку, нашёл боле-менее подходящую музыку к главному меню и процессу игры) Вывел настройки уровня звука для музыки и эфектов в обычный .ini файл.
Т.к. менюшку опций наверное делать не буду, а в инишке пускай будет.
От такие дела за 2 дня, вроде на этом пока всё, видос того что получилось показывать не буду ибо интрига! Ну или пока не выйдет что-нить пободрее)
Из основных этапов впереди ждут крипы, бонусы и организация уровней.
А по мелочи: очки-кнопочки))




Отлично :)
ОтветитьУдалитьПо поводу бомб - я все же был прав. Вертятся они так же, как и у меня вертелась планета в космосиме. Как делаешь их биллбордами? Direction выставляешь как вектор к камере?
perfect daemon,
Удалитьв прошлой теме был код:
fBombSprite.Up.SetVector(VectorMake(0, 1, 0));
cam_ap := Self.Scene.CurrentGLCamera.AbsolutePosition;
fBombSprite.Direction.SetVector(VectorSubtract(cam_ap, fBombSprite.AbsolutePosition));
т.е. всегда сначало Up вверх, а потом direction по вектору к камере.
Взрывы шикарны!
ОтветитьУдалить