The Machine of a Dream: девлог или типа того.
Ну что ж, теперь, когда есть время остановиться и оглянуться назад, самое время написать девлог.
Частично, я уже писал о том, как взялся за участие в Гаминаторе, впервые для себя. Это, частично спонтанное решение, зрело уже довольно давно. Но сейчас не об этом, лучше расскажу про путь проекта. И так…
Идея: концепт хранился у меня в голове уже довольно давно. Там он настаивался и переосмыслялся много раз, однако суть была всегда примерно одинаковая. Это была какая-то монструозная комбинация настольной игры «Стальная арена» и старой игры на SNES, название которой я забыл. Там нужно было управлять боевым роботом, а порой покидать кабину. Даже была хот-сит сетевая игра про дуэль таких роботов.
Реализация: тут всё довольно сложно. Изначальный концепт категорически отличается от того, что было реализовано. И дело не только в том, что я не успевал. Просто пришлось принять несколько решений, успешных или нет, кто знает?
ОжиданиеФантазия/реальность — это буквально лейтмотив всего моего участия в этот раз. Чтобы адаптировать идею под тему конкурса и уложиться в сроки, я первым делом отказался от концепции «полуактивной» боевой системы. Дело в том, что в изначальной идее, управление роботом берёт корни как раз таки в настольной игре. Там, у игрока есть четыре (или больше) типа снаряжения, активируя которые, он как бы отдаёт роботу команды. Например — пройти на два шага вперёд, или выстрелить вперёд. В моём же концепте, вместо пошагового оригинала, всё должно было происходить в реальном времени, с одним исключением, каждое снаряжение имеет перезарядку, что и делает боёвку полауктивной. То есть, игрок сделал шаг вправо и выстрелил — чтобы повторить эти действия, ему придётся подождать, НО он всё ещё может, допустим, поднять щит или ещё сделать что-то ещё. Враги бы действовали по такому же принципу. Разумеется — на реализацию такого проекта нужно куда больше времени и знаний движка. Так что, я пошёл по пути наименьшего сопротивления — сделал обычный экшен.
Обучение — я ничуть не совру, если скажу, что делал всё буквально с нуля, ведь до дня начала конкурса ни разу не открывал Godot. Это был своего рода эксперимент. У меня были: какие никакие навыки в программировании (максимально базовые), ролики не ютубе, статьи с тематического сайта. Последние были особенно полезны, не знаю, будет ли уместно указывать ссылку, но хотя бы напишу, что дико благодарен Doctor_Bug. Без него у меня не получилось бы и 10% от результата.
Движок[Godot] — это отдельная боль пониже поясницы. Наверняка, люди, что привыкли в нём работать, сейчас закидают меня шапками (если вообще читают это), но я скорее воевал с ним, чем сотрудничал. Для человека, плохо знакомого с интерфейсом, он покажется перегруженным, а без базовых знаний в программировании тут делать нечего. Казалось бы, это не удивительно? Но с другой стороны, сейчас существуют движки, где всё можно сделать из готовых материалов. У Годота с этим сложнее, особенно если брать четвёртую версию, где многое изменилось, а значит, старые решения не особо актуальны, новых же, пока ещё, маловато. И это отдельная боль, о которой я не мог не упомянуть. А ещё — постоянно сталкивался с парой багов, что мешали работать. Например, если переключать раскладку языка через win+space (да, я привык, что поделать) клавиша win как бы залипает, что мешает использовать хот-кеи и даже клавишу backspace.
Дальше я постараюсь кратко расписать все этапы работы и частично загляну «под капот» проекта.
Неделя 1 — этап концептуализации. Наверно, первые дня два, ушли на то, чтобы написать диздок и пайплайн (да, они был, но время показало, что совершенно неправильные). Дальше пошло погружение в движок, с перерывами на основную работу и другие незначительные дела. На этом этапе меня радовало буквально всё. Даже то, что получилось реализовать какие-то базовые механики, типа ходьбы и погружения в транспорт.
Неделя 2 — проработка механик. Тут я особенно глубоко погрузился в кодинг, написал большинство механик, что использовались в игре, а потом и те, что отбросил в дальнейшем. Пожалуй, подойди я к этому этапу несколько иначе, игра бы получилась кое-как законченной и приятной в управлении, но, задним умом мы все умные, да? Тогда я ещё верил, что успею реализовать куда больше из задуманного.
Неделя 3 — графика. Да, узнав, что конкурс продлят, я знатно так расслабился. Посветил больше времени сторонним делам и, вместо тестового наброска, сделал набросок базовый. Конкретно, ту графику, что вы видите сейчас в проекте. Разумеется, она тоже далека от того, что я хотел бы видеть в результате, но мне просто хотелось хоть как-то улучшить визуал. Здесь тоже использовался не совсем правильный пайплайн, наверняка, ведь я делал модельки в блендере, потом рендерил их под определённым углом и переводил в спрайты, разбивая по сетке через фотошоп. Это самый первый вариант, что пришёл мне в голову, им я и воспользовался. А ещё, я набросал схему будущих уровней игры. Забегая вперёд, скажу, что это было не лишним и помогло в дальнейшем хоть как-то закончить проект.
Неделя 4 — кранчи. Буквально с самого начала недели, я стал понимать, что не успеваю. Эта мысль роилась в голове уже давно, но тут она достигла апогея. Большинство дел были задвинуты в дальний ящик, годот почти не выключался на компьютере. Повезло, что основная работа тоже не слишком-то напоминала о себе. Но возникла новая проблема, ещё под конец третьей недели я заболел. Не особо серьёзно, разболелось горло, но порой оно сильно отвлекало от мыслей, из-за чего «котелок» не привыкший к программированию, вскипал пуще прежнего. Возгласов: «Да почему ты не работаешь?!» стало куда больше. Идеи, одна за одной, летели в корзину, а оставшееся сшивалось белыми нитками, склеивалось синей изолентой и подпиралось костылями. Я даже не смог реализовать обучение и добавить звуки в игру. Надеюсь, это не окончательно похоронило мой проект.
Да, я реализовал несколько пушек в игре, но используется только одна, самая примитивная, потому что, тупо не успевал научить игрока менять снаряжение. А ведь изначально слотов для пушек вообще 4! :D
Итог: могу ли я сказать, что доволен результатом? И да и нет. Я всё-таки закончил проект, хотя желание сойти с дистанции росло экспоненциально к приближению дедлайна. Другое дело, что результат вышел с множеством претензий и решений, которые меня не устраивают. В любом случае, это хороший опыт, который, надеюсь, меня хоть чему-то научил. Хочу за это поблагодарить Luca_Nia, как организатора, да и других участников, чья продуктивность и идеи невероятно вдохновляли меня.
P.S: благодарю за внимание. Надеюсь, я не зря потратил ваше время и это было хоть капельку интересно читать. Всем удачи и творческих успехов.
- 02 мая 2023, 13:17
- 06
Лежит коробочка с дополнением на полке и пылится с остальными. Времени поиграть не хватает.
Развивать проект планируешь?
Да. Недостаток времени на настолки - это прям большая боль.
А по развитию проекта, пока не уверен. Есть другие работы, требующие внимания, а тут, скорее всего, придётся всё переделывать сызнова, потому что многое делал костылями, лишь бы успеть. Авось, когда-нибудь хватит рук и знаний сделать всё так, как хотелось бы изначально.
Как любитель мехов, у которых больше чем 2 "ноги" - буду ждать "ремейка" 8)
О, привет, я (можно сказать) тоже не открывал! Ладно, если честнее сказать, то ничего не разрабатывал и не разбирался в нём. Это забавно вышло, значит уже минимум 2 участия были обучающими знакомствами с движком Godot.
Возможно стоило открыть предыдущую версию? Есть же вполне рабочие плагины с материалами и механиками.
Я подозреваю присутсвует лукавство, автор явно знаком с движком, но для конкурса использовал именно четвертую версию, так сказать для экспириенса своих возможностей, иначе зачем его нужно было брать, когда для ликбеза использования тройки, на гитхабе полно всяких полезных штук.
Ого сколько там всего оказывается. Но в рамках обучения думаю полезно и велосипед собрать.
Это лишь малая часть на самом деле, все остально разбросано по интернету...
Никакого лукавства, всё выложил как на духу, хотите верьте, хотите нет. Выбрал 4 как минимум потому, что статья, по которой начинал делать проект написана именно по нему. Да и по наивности своей думал, что и старые вещи актуализировать можно. Оказалось - это не так просто. :D