Неделя хардкода 8

Привет =)


Я делаю новую игру на libgdx с 20-го апреля.

Игра - action/rpg в мрачном сэттинге для мобильников. Слабых мобильников ;-)

Игры написанные не руками из жопы идут на всех устройствах.


Исходный код: http://github.com/cyberbach/likehunters


За прошедшую неделю я сделал:

- сделал голый проект/заготовочку на фреймворке libgdx

- подключил/настроил физику Bullet и компонентную систему Ashley

- рефакторил код MyPlayer, перенёс его из синглетона в Ashley

- возможность менять главного героя, перекидыванием одного компонента из одной Entity в другую

- сделал физическое тело для камеры

- переделал AnimationComponent - теперь анимации нужно переключать только по ID, а не по названиям. Хотя сами названия и хранятся в маленьком и быстром Immutable массиве.

- сделал GameHelper класс (не синглетон), чтобы его один раз использовать и выгрузить. И облегчить классы MyPlayer и DynamicLevels

- убрал из рендера КамеруОтсечения и перенастроил логику выборки для ПризмыОтсечения основной камеры.


Готовы механики:

- неограниченный мир, который подгружается "на лету"

- интерактивные объекты с физикой, поднимаемые объекты, разрушаемые объекты

- работа с ГУИ

- диалоговая система

- NPC действуют по скриптам, могут ходить/ждать/говорить/что-то делать или могут нападать

- 3д-текст и 3д-частицы 2д-декалями


TODO:

- Моделировать уровни и всё остальное

- Оформление ГУИ

- моделировать первые 3 уровня (с анимациями)

- кат-сцены

- motion-trail оружию, анимацию оружию

- фиксация камеры на цели

- хит-боксы на костях

- бамп-маппинг, фейк тени, быстрые шейдеры, свет

- анимация уровня

---

Два слова, как я делал физическое тело камере.

Неделя хардкода 8 Libgdx, Open Source, Android, Bullet Physical Engine, Ashley, Длиннопост

Над физическим телом ГГ я пытался подвесить сферу, которую я крутил бы вокруг ГГ. Адекватный вариант - присобачить тело камеры к телу ГГ через Constraint. Очень сложно было правильно подобрать правильные типы тел, типы из взаимодействия с физикой.


Над телом ГГ (playerBody) я поставил малюсенькое, но тяжелое Призрачное тело камеры (GhostCameraBody). Это тело создано с флагом CollisionFlags.CF_CUSTOM_MATERIAL_CALLBACK.


Этот флаг подсказывает Bullet-движку, что тело полностью участвует в физике, может посылать/принимать сообщения о контактах и им можно как угодно управлять. И импульсами, и просто так таскать через setWorldTransform. В любом случае, тело участвует в физике.


FixedConstraint держится только телами, которые 100% должны участвовать в физике. Другие типы тел не подходят, пробовал на CollisionFlags.CF_KINEMATIC_OBJECT и CollisionFlags.CF_NO_CONTACT_RESPONSE - не работает. Либо приклеплённое тело падает на землю, либо вообще в начале координат лежит и не шевелится. По-этому, только CollisionFlags.CF_CUSTOM_MATERIAL_CALLBACK.


К маленькому телу GhostCameraBody я прикрепил с помощью FixedConstraint лёгкое, но большое тело камеры (cameraBody).


Теперь тело cameraBody полностью получает трансформацию от тела GhostCameraBody, хотя и висит на небольшом отдалении в воздухе.


Телу GhostCameraBody я передаю трансформацию в особой системе PhysicalConnectSystem (позицию без вращения) от персонажа playerBody, каждый тик физики.

- GhostCameraBody следует за playerBody

- а камера cameraBody следует за GhostCameraBody и тело cameraBody можно вертеть вокруг GhostCameraBody

Неделя хардкода 8 Libgdx, Open Source, Android, Bullet Physical Engine, Ashley, Длиннопост

Вот и всё.

---

Интересные механики (если получаются), моделирование и анимацию я делаю в прямом эфире

на: http://twitch.tv/cb_online


gl & hf

Лига Разработчиков Видеоигр

6.8K поста22.2K подписчик

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

2
Автор поста оценил этот комментарий

я был обычным программистом, а потом попробовал наркотики и стал реверсером((

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Фух... хорошо хоть java-script-ом не балуешься!


Говорят, что нужно приложить ко лбу книгу "Образ мышления IDA" и всё пройдет.

3
Автор поста оценил этот комментарий

Добавь хоть README.md простой, мало кто не захочет сам разбираться, что да как.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ок, добавлю. Ещё ни разу этого не делал, надо учиться =)

3
Автор поста оценил этот комментарий
Из всего написанного понял только: привет,игра и мобильник! А так годный пост, успехов!
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо =) Про сценарий недели через 3 напишу =)))

3
Автор поста оценил этот комментарий

Звиняй, но только это пришло на ум после этих слов)

Иллюстрация к комментарию
раскрыть ветку (1)
Автор поста оценил этот комментарий

Спасибо, что интересуешься моими проектами =)))))))))))) Негатив тоже нужен!

показать ответы
Автор поста оценил этот комментарий

День 358:

Объект продолжает бороться с libgdx.

Продолжаю наблюдение.

раскрыть ветку (1)
Автор поста оценил этот комментарий

У меня с libgdx особые отношения ;-) Он мне даёт всё что я хочу.

показать ответы
2
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
Автор поста оценил этот комментарий

Я уже думал об этом и стараюсь каждую неделю, что-нибудь полезное писать. Вот сейчас про камеру написал =)

Автор поста оценил этот комментарий

по теме TODO

бряк сюда:

004a3c27 8a15f04b9100 mov dl,byte ptr [mstrt+0x514bf0 (00914bf0)] ds:002b:00914bf0=00

и как сработает -переписать единицей энтот байт. будет фуллверсия.


TODO: если перезагрузить базу, т всё слетит, тут в него снова 0 запишут

.text:004574D8 test al, al

004574da 0f9405f04b9100 sete byte ptr [mstrt+0x514bf0 (00914bf0)]

004574e1 803df04b910000 cmp byte ptr [mstrt+0x514bf0 (00914bf0)],0 ds:002b:00914bf0=00


TODO: и разобраться с числом юзеров

TODO: и правами на дб тупо в запись

TODO: и правами на дб поюзерно, в флагами


############################################################################################################################

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

что с тобой не так?

показать ответы