G#1.03 Плохая проводка
Продолжение и немного социального деструктивизма. Он больной, ему можно, нет.
Подобрал палитру для этого персонажа, возможно не финальная.
И долгий путь мести в картинках. Месть, она ведет слепо.
Продолжение и немного социального деструктивизма. Он больной, ему можно, нет.
Подобрал палитру для этого персонажа, возможно не финальная.
И долгий путь мести в картинках. Месть, она ведет слепо.
Всем привет, дорогие товарищи! Представляю вашему вниманию большой обзор игрового движка Godot Engine. Надеюсь, вам будет интересно :)
Для ЛЛ: многабукв, но можно пролистать в конец поста – там есть список преимуществ и недостатков движка. Godot классный! Попробуйте Godot!
Этот материал актуален для молодых игроделов –кто делает первые шаги в индустрии и мучительно выбирает движок. А также для тех разработчиков, кто устал вносить денежки владельцам проприетарного ПО и хотел бы пересесть на что-то подешевле.
Статья написана с целью познакомить сообщество с игровым движком Godot, а не сравнить его возможности с конкурентами, поэтому попрошу воздержаться от холивара на тему «чьи поезда поездатее».
Мною было приложено много усилий, чтобы обзор получился ёмким и более-менее объективным. Это не копипаста чьей-то более ранней статьи, обзор основан на личном опыте использования движка.
Немного истории
Разработкой движка Godot (читается «годо») с 2007 года занимались Хуан Линетски и Ариель Манзур. Стоит отметить, что в те бородатые времена движок был проприетарным, закрытым и создавался для нужд частных заказчиков.
В 2014 году авторы выпустили обновлённую версию движка под лицензий MIT и выложили исходники на GitHub, разработка перешла сообществу Godot Engine Community, и продолжается до сих пор.
Репозиторий Godot Engine Community на GitHub
Обзор
Godot Engine – очень компактный (~74MB), быстрый и оптимизированный движок, позволяющий создавать с нуля любую игру любого жанра. Он кроссплатформенный, мультифункциональный, бесплатный, опенсорсный.
Кстати «с нуля» здесь ключевое. В базовой сборке Godot не имеет шаблонов для игровых процессов, однако есть огромное количество плагинов, аддонов и внешних библиотек, которые могут помочь со стартом. Доступ к репозиторию осуществляется прямо из окна запуска движка. Просто переходим на нужную вкладку и листаем ;)
Он достаточно дружелюбен к новичкам. Элементы документации продублированы в трёх местах, что обеспечивает быстрый доступ к справке «без отрыва от производства». Так же в движок зашиты ссылки на он-лайн ресурсы, которые помогут вам в решении большинства проблем.
Несмотря на свою легковесность, Godot обладает необходимым и достаточным функционалом разработки (об этом ниже), а так же берёт на себя базовые оптимизационные задачи, такие как: управление памятью и ресурсами компьютера, интеграция устройств ввода, сборка и оптимизация продукта под различные платформы – от мобильных, до консолей.
При этом базовая сборка не тащит за собой «ваще все библиотеки, которые только есть в природе» – вплоть до того, что в ней отсутствуют инструменты для билда. Godot – это конструктор. Он не знает, чем вы будете заниматься, поэтому предоставляет функционал разработки… и… всё! Остальное вы докачиваете сами по мере необходимости.
Периодически в этих ваших интернетах на форумах и у обзорщиков проскальзывает снисходительная ремарка «Godot – движок для первой игры, и всё». Это не так. Godot – высокоуровненвый профессиональный инструмент, достаточно дружелюбный, но своеборазный и сложный в освоении, если вы хотите нарисовать что-то сложнее пиу-пиу платформера.
Среда разработки
Godot «из коробки» обладает всеми необходимыми компонентами для разработки, отладки, тестирования и конструирования игры, не требует использования дополнительного ПО для создания программной и архитектурной составляющих (разумеется, вам в любом случае потребуются программы для создания визуального контента, звуковых ассетов, etc.).
Однако, если по какой-то причине, встроенные инструменты вас не устраивают, вы легко можете воспользоваться привычным. Godot умеет дружить со множеством внешних редакторов и IDE.
Для воплощения ваших самых смелых идей он имеет 2D и 3D пространство со стандартным набором классов и объектов, а так же редактор скриптов и два редактора шейдеров — для прямого программирования и визуальной настройки. Поведение любого класса вы можете расширять и/или изменять по мере надобности.
Об особенностях рендера и визуальной среды ниже.
Редактор скриптов обладает возможностями дополнения кода, авто-отступами, подсветкой синтаксиса, быстрым доступом к API движка и докам.
Интерфейс приятный, лакончиный и довольно интуитивный:
Внутренние ресурсы проекта
Основным объектом для программных манипуляций является дерево «сцен» и «узлов». Узлом может являться как самостоятельный объект, так и группа объектов. Прелесть заключается в том, что любой из узлов в любой момент времени можно изолировать в самостоятельный компонент («сцену»). Поэтому при разработке можно быстро и безболезненно редактировать, масштабировать или полностью менять структуру проекта и/или его отдельных модулей.
Все игровые ресурсы (графические и звуковые ассеты, скрипты, конфиги, шейдеры, etc.) хранятся в файловой системе как набор файлов, не являясь частью БД или иерархических компонентов структуры самого движка. К файловой системе можно обращаться как непосредственно средствами вашей ОС, так и из редактора проекта.
Возможно, вам трудно осознать преимущества этого подхода, поэтому отмечу, что упрощённая система хранения данных обеспечивает лёгкий доступ всех членов команды разработчиков ко всем ассетам (мы не зависим от версии БД, текущей версии продукта и даже версии самого движка!), а так же сильно облегчается контроль версий — особенно если применяете внешние системы управления.
Скрипты
Godot исользует собственный высокоуровневый динамически типизированный скриптовый язык программирования — GDScript, который является плодом порочной связи гибридом Python и Lua.
Язык специализировался и оптимизировался под ранее упомянутую архитектуру систем сцен и узлов, однако если по какой-то причине вам хочется писать на другом языке (допустим, не хватает каких-либо инструментов, или вы просто не хотите осваивать новый синтаксис), Godot умеет интегрировать другие языки программирования, в частности C#, C++, Rust.
Помимо этого (начиная с версии 3.0) присутствует компонент для визуального программирования — Visual Scripting. Про него не могу ничего сказать, не приходилось пользоваться, но, думаю, это легко нагуглить.
Идеология движка имеет строгое ограничение: один узел — один скрипт. Однако, если вам необходимо менять поведение и/или состояние объекта в зависимости от игрвого состояния, Godot любезно предоставляет возможность заменять один скрипт на другой «на лету» или пользоваться внешними скриптами, которые вообще не привязаны ни к одному узлу — например, это могут быть списки оружия, брони и соответствующее им поведение, которое подхватывается из мирно дремлющего скрипта активным и применяется.
Визуализация
Графическая система — OpenGL ES. Для рендеринга 3D-сцен применяются технологии order-independent transparency, normal mapping, specularity, полноэкранные постэффекты типа FXAA, bloom, DOF, HDR, гамма-коррекции, distance fog, динамические тени на основе shadow maps и другие.
Отдельно стоит отметить превосходную симуляцию освещения и постобработки. В возможностях манипуляций со светильниками Godot не уступает движкам, специализирующимся на кинематографических эффектах для игр.
В отличие от многих других движков, которые имитируют 2D-среду на 3D пространцстве, 2D компонент Godot полностью изолирован, оптимизирован и имеет свой собственный набор классов и объектов. Следствием этого является компактность и быстродействие готового игрового продукта (мы не тащим с собой тяжёлые 3D-объекты и обвязку к ним там, где это не требуется), а так же удивительная лёгкость манипуляций с 2D компонентами в процессе разработки.
Помните, выше упоминалось, что Godot поддержит вас в любых самых сумасшедших начинаниях? ;) Стартуя работу с 2D сценой, вы легко можете добавить в неё 3D объекты или целые блоки, воспользовавшись многоуровневой системой вьюпортов. Благодаря изоляции 2D и 3D пространства (и, разумеется, многопоточности) компоненты не мешают друг другу и не тормозят работу продукта. В обратную сторону это тоже работает ;)
Игровая физика
Физический движок для 2D и 3D тоже уникальный и разработан с нуля, что позволило добиться требуемого уровня оптимизации физической подсистемы. Реализованы возможности рейкастинга, обнаружение столкновений, динамики твёрдых тел и соединений между ними. Так же имеется обширный арсенал инструментов, осуществляющих кинематику.
Кстати, объекты предназначенные для распознавания физических взаимодействий, полностью изолированы от визуализационных, что облегчает манипуляции с теми и другими и гарантирует, что вы не поломаете визуал своего сложного десептикона столкновением с автоботом.
К сожалению, в версиях движка 3.0 — 3.5 (к настоящему моменту самая свежая из стабильных) на 2D пространстве отсутствует физика частиц — поведение имитируется, оставаясь не более, чем визуальным эффектом. Честной физики мы тут не увидим. В Godot 4.0 этот компонент улучшен, но это всё ещё альфа — имейте это в виду, если захотите поиграть с физикой частиц в новой версии движка. Для 3D всё в порядке.
Платформы
Напоминаю, для того, чтобы сбилдить проект вам сперва нужно скачать и настроить соответствующий компонент. Выбор при этом у вас впечатляющий. Godot поддерживает Windows (и UWP OS), MacOS, X11 (Linux, BSD), Android OS, iOS, HTML5. Также можно производить экспорт на другие платформы вручную через компилирование движка для SDK целевой платформы.
Система ввода поддерживает клавиатуру, мышку, геймпад и сенсорный экран (разные устройства могут быть назначены на абстрактное действие, и оно будет рассматриваться независимо от использованного метода ввода).
Подведём итоги
Здесь перечислены плюсы и минусы движка в голом виде — без дополнительных библиотек и плагинов, как будто вы его только что скачали.
Плюсы:
- компактность;
- MIT лицензия;
- открытый код;
- не трубет установки;
- кроссплатформенность;
- гибкость;- универсальность;
- быстродействие;
- многопоточность;
- высокая оптимизация;
- эффективное управление ресурсами компьютера;
- удобство для использования;
- быстрый доступ к справке и внешним библиотекам;
- возможность взаимодействия с компонентами управления из вашего скрипта (например, можно статистику смотреть не на выделенной панели, а вывести прямо во вьюпорт игры).Минусы:
- скундый набор инструментов визуальной разработки;
- отсутсвие предустановленных тимплейтов;
- отсутствие встроенных инструментов для билда;
- неудобные инструменты вёрстки диалоговых окон;
- слабые AR/VR компоненты;
- осутствие физики для 2D частиц;
- отсутствие возможности редактирования мешей и уровней сглаживания;
- низкая популярность в России (очень мало материалов на русском языке).
Благодарю за внимание! Надеюсь, вам было интересно в общих чертах познакомиться с Godot. Если у вас остались вопрсы, можете задать их в комментах, постараюсь ответить на все :)
Всем хорошего дня, вдохновения и успехов в освоении Godot!
P.S.: Следующим постом выложу полезные материалы для новичков с кратким описанием полезности.
P.P.S.: К сожалению, невозможно запихать в один обзор всю полезную и интересную информацию, поэтому в перспективе планирую сделать подробное описание каждого блока с разбором функциональных компонентов. Пожалуйста, посигнальте в комментах, если эта информация вам интересна.
Привет всем! Меня зовут Пётр.
Отвечу на уже задаваемый сотню раз вопрос: я знаю, что Godot - не самый популярный для мобильной разработки движок, но я выбрал его давно, активно изучал и разобрался со многими аспектами разработки.
В Godot я сделал игру Бункер 21, которая в своё время добилась больших успехов. По моим меркам, конечно же.
Однако, время идет, ошибки копятся, и в жизни каждого разработчика когда-то наступает момент, когда разработка начинается заново. Будь то новая игра, новое приложение, или что-то ещё.
Я же начал разрабатывать с нуля ядро игры. В свою очередь старое ядро, которое я "полировал" и отлаживал для "Бункера", повертев, потестировав, решил, что, как бы я не старался раньше, кодовую базу требуется тщательно переосмыслить. С учётом нового опыта, с учётом всех "всплывших" нюансов, я принялся за работу. Пришлось попотеть.
Несколько месяцев ушло на то, чтобы с нуля переписать весь требуемый функционал: систему AI, управление персонажем, систему окружения, систему обработки звуков, работу с камерой, физикой, ввод с сенсора, ввод с клавиатуры, и ещё кучу всего, что происходит "под капотом" игры.
К тому же, всё это должно корректно работать на телефонах, которые не могут похвастаться обилием памяти и процессорных мощностей.
В какой-то момент я остановился. Работы была окончена. Ядро готово, а значит, наступило время создавать саму игру. Ещё месяц на моделирование уровней первой главы, параллельно писал сюжет и подбирал звуки.
В итоге на свет родился новый проект - игра "Альтернативный мир. Часть 1".
Игра рассказывает об одном персонаже из игры "Бункер 21", но с совсем другой стороны, нежели было показано в основной игре. Сразу же даются ответы на вопросы, касающиеся второстепенных персонажей и их способностей.
Я полностью переделал графическую часть, построение сцены и систему классов, отвечающих за эффекты и работу с трёхмерным миром, теперь звук реагирует на пространство, в помещениях слышимость окружающей среды снижается, зато звуки шагов и голоса становятся четче из-за меньшего рассеивания и смешивания с окружением.
Ну и да, игра не тормозит даже на самых слабых телефонах, отображая различные графические эффекты, например - огонь. Для особо тяжелых случаев можно включить пиксельную графику, это срезает область перерисовываемой части экрана, за счет снижения "разрешения" камеры.
В конечном счете процесс разработки перешагнул точку невозврата, все аспекты работы учтены, благо прошлый опыт позволяет на него опираться для ускорения нынешнего.
Я завершил первую главу игры, и уже отправил её на рассмотрение в Google и Apple.
Посмотрим, что из этого выйдет.
Желать мне удачи не прошу, но очень надеюсь, что всё получится!
Ну и вот, небольшой собранный на коленке "трейлер".
Продолжаю развивать новеллу. Следующим этапом планирую подобрать цветовую палитру или заняться следующим убийством.
Эта сцена последняя в череде убийств, или нет. За этой сценой последует расследование и поиск убийцы. Или не будет поиска, так как детектив расследующий убийства уже определил для себя убийцу. И нет, наш детектив явно не лейтенант Коломбо.
Хорошая концовка и не очень.
Пока что это рабочее название для моей скромной игры. Начал обдумывать и делать ещё пару месяцев назад, но чёткой концепции так и не выработал. Всякий раз, как начинал глубже задумываться как будет работать та или иная механика, то она отметалась, видоизменялась и перерабатывалась. Уже и не помню какой жанр я задумывал изначально ) В общем, это первая моя неочевидная ошибка, на мой взгляд: без чёткого плана и понимания что ты делаешь начинать не стоит.
Я хотел сделать что-то вроде Slay the spire в плане: есть главный герой, есть враг напротив и с помощью какой-нибудь игровой механики (не ККИ -- я ж не хочу тупо копировать) происходит битва, а главная фича должна была быть в кастомизации, модификации и усиления персонажа при помощи чего-то похожего как в Diablo — сбор, слияние и вставка различных гемов в определённые слоты.
Перебирая различные механики я остановился на "Match-3" для основы геймплея. В качестве движка я выбрал Godot. Поскольку я ни в зуб ногой в коде, то начал искать уроки и писать по ним. Тут же было принято решение повременить с рисованием всей графики, а обойтись только шариками, но чтобы хотя бы набросать примерный вид я накидал картинок с интернета )
На протяжении 30 секунд игрок лопает шарики, а у каждого цвета своя функция: красный даёт очки атаки, синий — очки защиты, жёлтый — множитель очков атаки и т.д (на деле я даже это не до конца додумал). По истечению таймера противнику наносится урон и наступает его ход. Хотел сделать, как в подобных играх, мол, противник также двигает шары и в целом действует как игрок, но мне показалось, что наблюдать за этим не шибко весело и просто долго. Поэтому соперник будет атаковать, защищаться и что-нибудь кастовать как в вышеупомянутой Slay the spire -- определённое количество действий над головой, где будет видно какие шары надо будет собирать игроку, защищаться или активно нападать.
По мере написания кода, его улучшением и переделкой (не всё же кальку с уроков делать) я понемногу обновлял графику, пытаясь придать хоть какую-то стилистику и отойти от слизанных с тырнета картинок.
Тут можно понять, что рисовать я, в общем-то, не умею. И этот момент станет в будущем моей большой головной болью ) Но это ещё ничего, ведь недавно до меня дошло, что нет "фишки" — того, что сделало бы игру уникальной. И я придумал: а сделаю-ка перемещение между уровнями в виде карты, наподобие как в Монополии!
• Точка старта, проходя через которую очередной круг, будет увеличиваться сложность существ (здоровье, урон, защита и т.д.), аля как действует время в Risk of rain
• Точка перехода на новую локацию-карту
• Здания и ивенты, которые будут давать бафы и дебафы на последующие битвы.
• Бросок кубика, конечно же )
Мне кажется это нововведение придаст уникальности и сильно разнообразит гейплей.
Вообще, я завёл этот акк, чтобы помочь себе, при помощи такого вот "дневника разработки", разобраться в том, чего хочу соорудить . Ну, и заодно услышать какие-либо советы, критику, дельные предложения от аудитории. Да и готовность страдать над кодом и графикой слегка пошатывается -- хочется набраться побольше смелости )
Всем спасибо )
Синематик на Godot Engine.
Место действия.
День добрый всем любителям Godot. Будет очень небольшой пост, так сказать по самым основам, чтобы было хоть от чего-то отталкиваться, информации по новой фиче прям скажем не густо, с грехом пополам хоть что-то начало получаться, как могу напишу. Брат просил давно, наконец-то созрел)
Движение перса дописывать не стал, чтобы поменьше было, в целом имея массив точек, движение добавить дело пустяковое, допишу уже в следующих частях, где будет поиск пути пересекающийся с другим NavAgent'ами.
Сначала сделаем простенький тайлсет из двух тайлов, пол и стенка.
Быстренько намалюем "лабиринт"
Быстренько глянем на сцену персонажа
Поместим героя на сцену Game где так же присутствует Tilemap
И немножечко совсем кода
ХЗ чего я так долго соображал как этим пользоваться, все думал что тут должен быть какой-то подвох и усложнение, но нет, все проще чем даже можно было себе представить.
Дальше конечно у меня есть ещё сложности и некоторое непонимание, ну как разберусь и лениться перестану, так сразу напишу продолжение)
Спасибо за внимание.
Справились? Тогда попробуйте пройти нашу новую игру на внимательность. Приз — награда в профиль на Пикабу: https://pikabu.ru/link/-oD8sjtmAi
Или как я ощутил зависимость от интернета
Для подписчиков важная информация внизу
В общем. Представьте что интернет исчезнет для вас в течении ДВУХ месяцев
Я ощутил это на себе и хочу поделиться этой историю
После пропажи интернета я понял что мой диск пуст :(
что же проводить досуг в paint не очень крутая затея и я принялся за работу в godot. Башня испытаний началась с того что МНЕ НУЖЕН ГРАФИЧЕСКИЙ РЕДАКТОР
И мне на удивление удалось
Скриншот сегодняшний. В нем были все привычные функции. Он был отвратителен но оно работает карл! и оно сделано на ДВИЖКЕ GODOT
Я думаю вам он не пригодиться
Со звуками все было в порядке остались файлы с Пак звуков CDDA которые я когда то скачивал
В итоге в течении двух месяцев после появлении интернета результат неплохой
Вдохновился я старой версией Sim city но немного накаченным реализмом и разнообразием
И возможно об этом своем проекте расскажу в следующем посту
Информация для бывалых и подписчиков что с ремейком CDDA?
Он утерян изза перепадов напряжения мой внешний диск погиб вместе с исходниками и я не готов писать все заново по памяти и нужно развиваться а не выгорать, логично же? И я перейду на более простые проекты и буду полагаться на вашу заинтересованность
UPD: Чтобы не повторить ошибку завел git
После всей проделанной роботы я ощутил себя создателем компьютера
Дам вам совет НЕ чистите ваши хранилища полезной информации с надеждой интернет же есть
Мира вам!