cyberbach

cyberbach

Пикабушник
569 рейтинг 47 подписчиков 12 подписок 51 пост 2 в горячем
Награды:
5 лет на Пикабу
15

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

Привет =)


Я делаю игру LikeHunters на libgdx.


Игра - action/quest/rpg в мультяшном сэттинге для мобильников.


Видео (DevLog вернулся =))) ): https://www.youtube.com/watch?v=lslt6k9aY_8

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


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

- несколько вариаций домов домов с дверями или стёклами

- пару вариантов магазинов

- дороги с проезжей частью

- мусорный бак и мусорный мешок

- большой и маленький фонарь

- светофор

- ветниляцию на стену дом

- столбы электричества

- оконные фрамуги

- столб, для поддержки балконов

- рекламная вывеска

- металлический забор

- парапет на крышу дома (для плоских крыш)

- два варианта крыш (двухскатная и четырёхскатная)

- бетонная плита для входа в здание

- металлический забор маленький и большой

- тележка с фастфудом

- большая бетонная стена

- деревянная лестница

- спутниковая тарелка


- электростанцию

Неделя хардкода 9 Libgdx, Open Source, 3D моделирование, Длиннопост

- две машины

Неделя хардкода 9 Libgdx, Open Source, 3D моделирование, Длиннопост
Неделя хардкода 9 Libgdx, Open Source, 3D моделирование, Длиннопост

Может кому-нибудь пригодится: для стен и парапетов я придумал такую технику.

- Делаю т-образную заготовку и с четырёх сторон заготовки я приклеиваю продолжения стен.

- Центр вращения (Pivot) я магничу к самой нижней части этой модели.

- Дальше копирую эти заготовки по краям какой-то прямоугольной локации, комбинирую их в один объект.

- Вырезаю лишние торчащие стены и продлеваю оставшиеся стены до следующего столба.

Это для меня самый быстрый способ моделирования любых ограждений.


Сценарий:

♦ В двух словах

Наш ГГ бегает, разговаривает с людьми, узнает, что нужно найти "Охотников за лайками" (ЛХ) и уничтожить их, или сдать полиции, или вообще присоединиться к этим охотникам.

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


♦ История и завязка

"Охотники за лайками" - это секта фанатиков, которые издеваются над людьми, снимают издевательства на видео и зарабатывают лайки.

ГГ меняется с начала до конца игры. Сначала по новостям и от людей он выслушивает, что эти ЛХ - ублюдки. И ГГ их ненавидит, хочет уничтожить всех распространителей, всех участников. Но потом всплывают странные подробности, что эти охотники издеваются только над зажравшимися чиновниками, продажными судьями, людьми, которые воруют и унижают нормальных людей.

Очень важно, чтобы история была не о самих ЛХ, а о борьбе ГГ с самим собой.

Ближе к концу игры ГГ знакомится с людьми из ЛХ, эти люди разные, живут в разных местах.

В конце игры, ЛХ захватывают органы, садят в тюрьму. Суд. И казнят.

А потом, мы видим ролик, что появляются те люди, которых якобы казнили и рассказывают: нас держали в санаториях с кучей психологов. Мы поняли что совершали неправильные действия. Эти люди, которых "казнили" изменились и стали лучше.

Конец игры.

Как вариант, можно попытаться спасти этих ЛХ от казни, при втором прохождении можно сразу познакомится с лидерами ЛХ. ГГ узнает, что все члены ЛХ написали завещания и если что-то случится, то они переводят свои деньги в детские дома и фонды помощи.


Вот и всё.


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

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


gl & hf

Показать полностью 3
13

Неделя хардкода 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

Показать полностью 2
3

Неделя хардкода 7 / Релиз

Привет =)


Это платформер про белку на libgdx.


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

Плей-маркет: https://play.google.com/store/apps/details?id=net.overmy.adv...

Неделя хардкода 7 / Релиз Libgdx, Open Source, Android, Indiedev

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

- исправил несколько ошибок в физике. Иногда оружие или ключ проваливалось под землю. И физику дверей чуть переделал, смоделировал физическое тело прямо в Майе.

- исправлены ошибки в моделях рендер-уровней

- доделаны анимации персонажей

- отлажены все диалоги у NPC

- всё переведено на английский с помощью гугла и яндекса

- большой рефактор кода

- зарелизил игру (УРА!)

- нашёл и исправил несколько ошибок после релиза, т.к. поторопился

Неделя хардкода 7 / Релиз Libgdx, Open Source, Android, Indiedev

Следующую игру начну более чем скоро. Огромное количество механик уже сделано. Моделить получается всё лучше и быстрее. Анимировать ещё учиться и учиться. Немного отдохну и буду делать мобильный Бладборн =) Шутка.


На Юнити и Анриал пока что нет желания переходить. Основную часть времени разработки занимало именно: сценарий, моделирование и совсем чуть-чуть программирования. Постоянно одни и те же муторные операции. И какая разница на чём написана игра? Хоть на Бейсике, главное что играется!


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


Спасибо за внимание =) gl & hf!

Показать полностью 2
15

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

Привет =)


Это игра про белочку на libgdx - 3д платформер для android-девайсов.

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


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

- все 30+ уровней

- при убийстве врагов из них что-то выпадает

- дверь открывается с помощью ключа

- сделать ещё одну бутылку с неуязвимостью на 30 секунд

- если поднять 2 одинаковых оружия, то их можно объединить в 1 более мощное

- смена музыки на локациях

- дистанция до отображения текста

- сценарий

- прописаны все диалоги с NPC и оказалось их очень сложно вставлять в игру.


У меня диалоги сделаны на направленных графах. У диалога есть заголовок, тело, фраза по которой мы пришли в диалог, и связи: куда можно уйти из диалога. Кроме этого я использую текст из енума TextAsset, в котором я пишу локализацию. Без этого енума будет очень сложно локализовать игру. И получается, что мне нужно постоянно "переключаться" между текстовым ассетом, диз-доком и файлом с графами диалогов.


Основные ошибки в моделировании:

- нельзя моделировать локацию без карты локаций

- до начала моделирования уровня должны быть готовы модели окружения, которые будут стоят на уровне. До моделирования нужно написать максимально полный СПИСОК объектов. Дальше нужно эти модели сделать и сохранить как "набор предметов уровня". Теперь можно моделировать сам уровень, и нужно помнить какие предметы будут стоять на этом уровне.

- недостаток опыта. Чтобы быстро получился более-менее приличный замок, нужно предварительно смоделировать хотя бы 10 разных вариантов замков. В моей игре я замок моделировал первый раз и получилось, так сказать, не очень =( А ещё я не умею моделировать здания, поэтому в игре у меня нет даже простых построек.

Для локации замок я долго не мог придумать, какие предметы расставить внутри замка. Локация выглядит очень пусто. Пришлось перелопатить кучу референсов и выписать себе список предметов. Для замка я сделал: бочки пустые и с водой, скамейки и столы, флаги висящие на стенах и столбы, выглядящие как фонари.

Летние и зимние локации было легко моделировать, потому что год назад я сделал набор lowpoly моделек с деревьями, кустами и травой. После моделирования уровня я просто расставляю кусты и деревья, это занимает очень мало времени. В итоге на одну локацию сейчас я трачу где-то полчаса.


Основные ошибки в анимации:

- анимация не продумана. То есть, я начинаю придумывать анимацию во время анимации. Это не правильно. Мне очень повезло, что сразу получилось классно и смешно анимировать овечку, валяющуюся на спине и шевелящую лапками. И с морской звездой тоже повезло. Она в анимации ожидания стоит на одной ноге и балансирует, а в состоянии атаки - катится как сюрикен. А с другими моделями сложился очень неприятный ступор, они слишком обыденны и неинтересны. Потому что заранее не продумал.

- до начала анимации, нужно посмотреть и вспомнить правила хорошей анимации: youtube.com/watch?v=uDqjIdI4bF4

- постараться найти референсы, например, в том же ютубе

- недостаток опыта =) Опыт - самое главное, он важнее всех знаний


Релиз где-то через неделю.


На твиче (http://twitch.tv/cb_online) сохраняются последние записи стримов с процессом разработки и процессом моделирования.

gl & hf

Показать полностью
9

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

Привет =)


Это игра на libgdx.

Детская игра про белочку - 3д платформер для android-девайсов.


За прошедшую неделю я сделал: https://youtu.be/ucRJX-BzyqE

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


За неделю:

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

- доанимированы вражеские NPC, теперь у них есть анимация "получение урона" и анимация "умирания" уникальная у всех NPC

- переделаны анимации IDLE и RUN у птичек. Для этого мне пришлось доучиваться анимации. И раза с третьего получилось более-менее.

- сделаны 2 новых оружия - большая подушка и пистолет, примотанный к палке

- разобрался как выровнять текст в 3д пространстве, для фраз от NPC

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

- исправлены зависающие анимации удара у персонажа

- сделал эффекты при использовании бутылочек и озвучил использование бутылочек

- сделаны 8 новых уровней (из них 3 зимних и 4 секретных). Пока что в игре 18 уровней и на многих из них расставлены враги и предметы.

- на секретных локациях уникальное оружие, уникальные NPC и уникальные враги, и начинают появляться пасхалочки =)


На твиче (http://twitch.tv/cb_online) сохраняются последние записи стримов с процессом разработки и процессом моделирования.


gl & hf

Показать полностью
15

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

Привет =)

Я делаю игру на libgdx. (Не делаю на Юнити, т.к. не умею работать в Юнити)

Модели и анимацию готовлю в Autodesk Maya и Autodesk MotionBuilder (Maya - потому что не умею работать в других программах моделирования)


Это детская игра про белочку - бегалка/прыгалка/собиралка для слабых мобильников.


За прошедшую неделю я сделал: https://youtu.be/sW3LtLK0KcM

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


Сделано за неделю:

- облака через декали

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

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

- сделал маленькое физическое тело на месте руки и теперь можно драться без оружия

- смоделировал и анимировал 4 новых NPC (птичка, лисичка и овечка, бабочка) с анимациями (IDLE, RUN)

- сделал 3 новых врага с анимациями (IDLE, RUN, ATTACK): звёздочка, крабик и птичка

- смоделировал 1 новую зелёную локацию с невидимым переходом в секретную локацию

- опять исправлены ошибки в DynamicLevels =) и рефактор

- поднял фпс, чуть изменив WоrldContactListener


TODO:

- моделировать следующие локации

- тёмная трава выглядит как тень от деревьев. Деревья лучше поднять на возвышенности, или ставить на больших плоских участках.

- сценарий

- варианты ответов в диалогах сделать крупнее, а то слишком мелкие - неудобно нажимать

- к оружиям - подушка, чтобы перья разлетались

- к оружию - если поднять 2 одинаковых оружия, то их можно объединить в 1 более мощное

- Добавить NPC вариантов IDLE-анимаций, включая ГГ

- анимировать получение урона

- кроме охоты, добавить Экшен - проиграть анимацию за время. Типа, дровосек рубит дрова. И т.д.

- в локации горка, с которой катаются NPC на WAIT и кричат ЯХУУУ

- добавить в ActionSystem параметр лояльности, и если он максимальный, то NPC не атакует. И наоборот.

- смена музыки на локациях

- Сделать книги на подставке, прикрутить к диалогам


Всё что касается игры я делаю в прямом эфире на http://twitch.tv/cb_online , на ютубе, в контакте и на гуд-гейме. Чатики читаю =)


gl & hf

Показать полностью
9

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

Привет =)


Я делаю игру на libgdx. Игра - бегалка/прыгалка/собиралка для мобильников.


За прошедшую неделю я сделал: http://youtu.be/yASdtnU5IsA

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


Сделано за неделю:

- ещё 2 локации (сейчас их 6)

- боевая система, подсчёт урона

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

- сделал разрушаемые предметы

- доделываю инвентарь, ГУИ и окно диалога

- исправлена целая куча багов в DynamicLevels

- рефактор и оптимизация


TODO:

- добавить врагов и сделать AI

- моделировать следующие локации

- добавить HPbar и систему подсчета жизней.

- Деревья лучше поднять на возвышенности, или ставить на больших плоских участках.

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

- варианты ответов в диалогах сделать крупнее, а то слишком мелкие - неудобно нажимать

- нарисовать шаблон для схемы диалогов в ворде

- писать диалоги и сценарий


Всё что касается игры я делаю в прямом эфире на http://twitch.tv/cb_online , на ютубе, в контакте и на гуд-гейме. Чатики читаю =) К сожалению, более плодотворно работать без стрима, но стримить я продолжу.


gl & hf

Показать полностью
4

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

Привет =)


Я делаю игру на libgdx. Игра - бегалка/прыгалка/собиралка для мобильников.


За прошедшую неделю я сделал: youtu.be/1gn2xK7eEfQ

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


- озвучены монетки и звёздочки

- при расстановке бонусов, нужен GMmode, а не долгое тупое копирование координат из Майи

- добавил пальмы

- сделал подсчёт звёздочек в рюкзаке

- оптимизировал физику. И сделал самостоятельные генераторы физических форм для куба, циллиндра и сферы по размерам модели. Или без размера модели.

- исправил ошибку в динамических уровнях - добавил проверку, которую я раньше считал не существенной. Пытались удалиться Entity, которые уже были удалены.

- скрипт движения NPC - горбатый, нужно его протестировать step-by-step. И, кстати, расстановка точек скрипта тоже делается в GMmode.

- смоделированы уже 4 больших уровня с физикой

- протестировал, обнаружил просадку фпс на 150+ рендер моделей с физикой на экране. Физику нужно тщательно упрощать. У моделей тщательно сокращать количество полигонов и обязательно (что я не делаю) сворачивать UV.

- при тесте меньше 100 рендер моделей на экране - фпс 61. По полигонам - меньше 5000 полигонов, хотя тут количество полигонов не сильно решает.



TODO:


- рефактор GameScreen

- упростить и улучшить GameMaster (GM) Mode в игре

- звуки шагов и звуки окружения/музыка

- заменить иконку для ingameMenu

- протестировать скрипт движения NPC

- свернуть UV на уровнях. Доработать модель лестницы.

- моделить 04-ую локацию со стеной и 05-ую за стеной


Всё что касается игры я делаю в прямом эфире на twitch.tv/cb_online , на ютубе, в контакте и на гуд-гейме. Чатики читаю =)


gl & hf

Показать полностью
Отличная работа, все прочитано!