Пятница, 08 Ноября 2024, 21:45

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Godot. Обзор кросплатформенного движка/конструктора для игр
hazyДата: Воскресенье, 09 Ноября 2014, 21:06 | Сообщение # 1
был не раз
Сейчас нет на сайте
Движок/конструктор игр Godot - замечательный во всех отношениях кросплатформенный интрумент для создания игр который к тому же еще и опенсорсный. И если у кого есть предостережения по поводу опенсорсности проекта, то спешу сообщить развеять их. Разработчики реально пользуются движком для создания качественных игр, и недавно успешно завершили компанию по сбору средств на кикстартере для своей игры, разрабатываемно на этом движке. Это говорит о том, что движок реально применим в игрострое (уже сейчас у них есть качественное демо игры) и будет поддерживаться и развиваться.

Звучит заманчиво, не так ли? ... Но, к сожалению пока я не могу смело подписаться под всем вышесказанным :Р
Но мне совсем не хочется вас обманывать.

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

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

Ответы на такие вопросы помогли бы и мне понять чего вообще стоит ждать от подобного инструмента и его возможностей в современном мире. Так что, почему бы не помочь друг другу?

Для затравки, вот вам небольшое
Введение:

С одной стороны Godot - это игровой движок. Да да, все те сложные программистские штучки для работы с графикой двухмерной/трехмерной, физикой, звуком и управлением. Но по факту, если вы не начнете в этом рыться изучая исходники, написанные на C, то для вас Godot предстанет скорее инструментом (в какой-то мере конструктором) для создания игр. Т.е. прежде всего вы будете щелкая мышкой на нужные кнопки добавлять один за другим игровые элементы (детали конструктора для вашей игры), такие как картинка, физическое тело, форма, звук, анимация, управляющие события. Это наверное одни из основных элементов из которых может состаять самая примитивная игры, но есть и еще много других полезных реализующих популярные аспекты игростроения и упрощающих тем самым вам жизнь.
Но отделаться толь
ко этим не получиться. Для реализации даже самой простой игровой механики придется для этих элементов добавлять скрипты. В движке предумотрен собственных скриптовый язык (куда сейчас без этого?) называющийся GDScript и напоминающих язык Python. Если кто не знает, одно из заметнейших особенностей этого языка - выделение блоков кода с помощью отступов.

Прямо в инструменте встроена документация по каждому элементу. Так что если если что-то подсказывает вам, что элемент с названием "анимация" можно заставить проиграть ее, но вы не знаете как, идем в документацию, забиваем в поиске название элемента, и замечаем там метод play(name). Не все, конечно, так просто, так что по основным особенностям различных элементов придется почитать wiki о движке.

Разобравшись со всем этим вы за пару часов сможете написать простенькую игру-лабиринт и нажав на пару кнопок экспортировать игру для Винды, Линкуса, Макоси, Андройда или в HTML5 (Как я понял, позже, разработчиками планируется расширить список целевых платформ).

Заключение:

Вот пока и все, если у вас возникли вопросы из разряда "все это здорово, но не понятно как например сделать в нем ..." Смело задавайте сюда. По мере сил постараюсь разобраться и ответить.

Материалы:

урок по созданию игры Catch the Clown.
о движке Godot в базе gcup.ru


Сообщение отредактировал hazy - Четверг, 13 Ноября 2014, 00:55
Edison6Дата: Воскресенье, 09 Ноября 2014, 21:56 | Сообщение # 2
TRUE Programmer
Сейчас нет на сайте
Вопрос есть ли альтернатива GDScript? учить доп язык ради одного движка...

Берил сбрей усы
hazyДата: Воскресенье, 09 Ноября 2014, 22:22 | Сообщение # 3
был не раз
Сейчас нет на сайте


TRUE Programmer, если кратко, то нет. Во всяком случае пока. Иторически разработчики пробовали использовать и Lua и Python и Squirrel (тут стоит отметить, что изначально это был движок для их внутренних нужд). Но по ряду причина, которые мне до конца не открылись, пришли к выводу, что нужно писать свой. Впрочем проект опенсурсный, так что возможно кто-нибудь и решится добавить поддержку других скриптовых языков, но от разработчиков этого ждать вряд ли стоит.

Хороший вопрос, стоит ли учить язык ради одного движка. Поскольку в моем случае ясно, как я ответил на этот вопрос, напишу чем я руководствовался. Во-первых, утверждение из документации "несколько дней, чтобы его изучить язык и пару недель, чтобы уверенно на нем писать" оказалось справедливо в моем случае. Во-вторых, язык по синтаксису очень похож на Python, так что если вы вдруг его знаете, вам будет еще легче, а если не знаете, то вам потом будет легче его изучить если соберетесь. В-третьих, как мне представляется, любой игровой движок - механизм весьма специфический, и вы гораздо больше времени потратите изучая выбранный его авторами подход в организации игровых элементов, логики, физической модели, инструментов и так далее, чем на изучение скриптового языка программирования (которые по возможностям все довольно похожи, а в детали внутренней реализации можно и не вдаваться). Так что почему бы и нет?


Сообщение отредактировал hazy - Воскресенье, 09 Ноября 2014, 22:25
Edison6Дата: Воскресенье, 09 Ноября 2014, 22:35 | Сообщение # 4
TRUE Programmer
Сейчас нет на сайте
Цитата hazy ()
Разобравшись со всем этим вы за пару часов сможете написать простенькую игру-лабиринт и нажав на пару кнопок экспортировать игру для Винды, Линкуса, Макоси, Андройда или в HTML5 (Как я понял, позже, разработчиками планируется расширить список целевых платформ).

Можете выложить исходники и билды?


Берил сбрей усы
hazyДата: Воскресенье, 09 Ноября 2014, 23:17 | Сообщение # 5
был не раз
Сейчас нет на сайте
Цитата Edison6 ()
Можете выложить исходники и билды?


TRUE Programmer, конечно.

Во-первых к движку прилагается набор замечательных демо: http://www.godotengine.org/wp/download/

Во-вторых я веду дневник на smartprogress, где пишу о своих наработках в изучении движка.
Исходники этих всех наработок тут: https://github.com/vakimov/godot-path
Вот билды под Линукс и Винду, одной из самых первых учебных игр-прототипов. Тот самый лабиринт:
Linux.64 https://dl.dropboxusercontent.com/u.....64.bin
Win.64 https://dl.dropboxusercontent.com/u.....64.exe
OpenGOOДата: Понедельник, 10 Ноября 2014, 01:02 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
hazy, если уж ты решил заняться просветительской деятельность, может сделаешь урок Catch the Clown из Game Maker на Godot? Потом можно будет хоть сравнить эти системы.

Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
Edison6Дата: Понедельник, 10 Ноября 2014, 10:10 | Сообщение # 7
TRUE Programmer
Сейчас нет на сайте
Цитата OpenGOO ()
, если уж ты решил заняться просветительской деятельность, может сделаешь урок Catch the Clown из Game Maker на Godot? Потом можно будет хоть сравнить эти системы.

+1


Берил сбрей усы
hazyДата: Понедельник, 10 Ноября 2014, 11:26 | Сообщение # 8
был не раз
Сейчас нет на сайте
Хм, почему бы и нет. Если я правильно понял речь идет об этом уроке. Вообще гугл мне выдал много разных ссылок на уроки с подобным названием, но в том, который я привел, есть хотя бы факлы для создания игры.
_ToBe_Дата: Понедельник, 10 Ноября 2014, 11:44 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
hazy, да, это именно оно
Ждём результата smile
OpenGOOДата: Понедельник, 10 Ноября 2014, 11:45 | Сообщение # 10
почти ветеран
Сейчас нет на сайте
Цитата hazy ()
Хм, почему бы и нет. Если я правильно понял речь идет об этом уроке. Вообще гугл мне выдал много разных ссылок на уроки с подобным названием, но в том, который я привел, есть хотя бы факлы для создания игры.

Можешь его за основу взять или можешь скачать GMS, там есть официальная версия урока.


Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
hazyДата: Понедельник, 10 Ноября 2014, 15:19 | Сообщение # 11
был не раз
Сейчас нет на сайте
Так, сама игруха вот:
Linux.64: https://dl.dropboxusercontent.com/u.....64.bin
Win.64 https://dl.dropboxusercontent.com/u.....64.exe

Если есть замечания по ней, пишите. Инструкция в процессе написания.

А пока пара замечаний:
Средствами движка файл в формате mid не удалось проиграть, пришлось сконвертировать его в ogg. Тоже самое с bmp файлами - конвертил в png.
Весь код единственного скрипта занят 55 строчек.
При экспорте проекта на целевую платформу в итоговый файл зачем-то запихиваются все файлы из папки проекта, даже те, кторые не используются.


Сообщение отредактировал hazy - Понедельник, 10 Ноября 2014, 15:24
OpenGOOДата: Вторник, 11 Ноября 2014, 14:28 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
hazy, Мы игру сами сделаем, после того как напишешь урок, в этом-то вся соль.

Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
_ToBe_Дата: Вторник, 11 Ноября 2014, 17:42 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Как-то клоун рывками движется... не очень плавно и раздражает глаз surprised
hazyДата: Среда, 12 Ноября 2014, 00:27 | Сообщение # 14
был не раз
Сейчас нет на сайте
OpenGOO, я скинул пример, чтобы люди знакомые с уроком могли оценить, ту ли я игру вообще сделал. Мне лень было ставить Game Maker и повторять урок =) Так что я просто попытался понять, что нужно в результате, и повторить это.

_ToBe_, у меня он достаточно плавно идет. Если вы не про то, что он по щелчку перемещается в новую точку, то возможно дело в производительности. Можете написать характеристики вашей машины и я сравню со своей.

Первый вариант урока готов. https://github.com/vakimov/catch_the_godot/wiki Можете пытаться пройти.
Надеюсь ошибок не очень много. Буду исправлять и дорабатывать по мере сил и по мере поступления замечаний.


Сообщение отредактировал hazy - Среда, 12 Ноября 2014, 00:49
xmihasДата: Среда, 12 Ноября 2014, 10:01 | Сообщение # 15
был не раз
Сейчас нет на сайте
вот это круто) спасибо за труд)))
Edison6Дата: Среда, 12 Ноября 2014, 10:14 | Сообщение # 16
TRUE Programmer
Сейчас нет на сайте
Урок просто отличный!

Берил сбрей усы
OpenGOOДата: Среда, 12 Ноября 2014, 18:17 | Сообщение # 17
почти ветеран
Сейчас нет на сайте
Godot вынес мне мозг, без урока было бы тяжко, даже с уроком не все так просто оказывается.

Создал я сцену, добавил в неё объекты, затем прикрепил к клоуну скрипт, запустил сцену и что я вижу. Клоун двигается, но об стену не отскакивает.

Почему порядок для клоуна такой
Код
KinematicBody2D
   Sprite
   CollisionShape2D


а для стены вот такой
Код
Sprite
   StaticBody2D
   CollisionShape2D

Добавлено (12.11.2014, 18:17)
---------------------------------------------
С этим я разобрался, но возникла другая проблема, клоун заходи в верхнюю стенку на половину, а до нижней не доходит тоже на половину. Если создать объект для стены прямо в главной сцене, то все работает корректно.


Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
GnomovДата: Среда, 12 Ноября 2014, 22:28 | Сообщение # 18
Пустота – основа всего...
Сейчас нет на сайте
Нужно будет глянуть на него...

hazyДата: Среда, 12 Ноября 2014, 22:39 | Сообщение # 19
был не раз
Сейчас нет на сайте
OpenGOO, для начала про порядок. Сцена tileset.scn нужна только для создания соответствующего файла ресурсов tileset.res, и как самостоятельная сцена вообще нигде не участвует. Предполагаю, что по-этому у нее особый порядок. Например из названия элемента типа Sprite, будет взято названия для тайла (по-этому его необходимо переименовать). Так же и с StaticBody2D надо переименовать в collision. К слову, данный порядок я взял из одного демо написанного создателями Godot и опытным путем определял какие элементы необходимы и для чего.

То, что у вас клоун пролетает сквозь стены скорее всего означает, что при импорте tileset.scn в tileset.res не импортировались формы объекта, а только его картинка. Второй случай, когда клоун заходит в верхнюю стену на половину означает, что форма почему-то задана со смещением. К сожалению в TileMap не видно полупрозрачного квадратика формы, как у клоуна, но зато можно, задав элементу TileMap параметр TileSet, посмотреть его детализацию (подобно тому, как мы изменяли размеры квадрата для клоуна). Там в параметре Shape Offset должно быть задано 16,16.

При импорте это должно автоматически расчитываться. Но вы можете задать это самостоятельно вручную. Или стоит удалить оба файла, и tileset.scn и tileset.res, и повторно создать сцену, проследив за соответствием иерархии следующему порядку (знак -> показывает какие элементы надо переименовать):

Код

Node
       Sprite -> wall
           StaticBody2D -> collision
               CollisionShape2D


Теперь по поводу порядка для клоуна. Чтобы KinematiBody2D, а также RigidBody2D и StaticBody2D, обрабатывали столкновения в них нужно добавить от одной до нескольких форм CollisionShape2D или CollisionPolygon2D. Елси добавлять в них еще спрайт, или любой другой элемент - это просто означает что положение внутреннего элемента будет считаться от родительского, т.е. двигая KinematiBody2D, будет двигаться все его вложенные. При желанию, думаю, можно и наоборот: в спрайт запихнуть KinematicBody, но тогда движение нужно будет задавать элементу Sprite, а столкновения контролировать вложенным в него элементом KinematicBody.

Надеюсь не слишком путанно объяснил. Но в общем я понял, что в инструкцию нужно добавить пояснений о том зачем нужен тот или иной элемент. Спасибо, что указали на это.


Сообщение отредактировал hazy - Среда, 12 Ноября 2014, 22:54
OpenGOOДата: Среда, 12 Ноября 2014, 23:50 | Сообщение # 20
почти ветеран
Сейчас нет на сайте
Заглянул я в tileset а там элементы расстановлены почти как у клоуна.

Код
Node
     StaticBody2D -> collision
       Sprite -> wall    
       CollisionShape2D


Поправил и заработало. Странно это, ведь в главной сцене такой порядок работает.

Как сделать так, например я заставил клоуна двигаться в верх и вниз. Как мне теперь добавить такое же поведения и для других объектов?


Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]


Сообщение отредактировал OpenGOO - Среда, 12 Ноября 2014, 23:56
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг