Поговорим о Godot

Список разделов Геймдев в Blender Общие вопросы по игровой тематике

Модератор: exooman

Сообщение #21 Neofit » 20.03.2018, 11:55

Дмитрий, Никуда я не делся. Есть идея, есть даже тех демо на Game maker (который я когда то тыкал). Аркада с налетом реализма про дуэли подводных лодок. Еще есть интерес сделать сим про плавание через океан на парусном корабле века эдак 16го. Ориентирование по звездам, измерение скорости стравливанием веревки с узлами, вручную отбивать склянки, ручное рисование карты, и заполнение бортового журнала. Никаких боевых действий, но можно было бы прикрутить мультиплеер, что бы не сойти с ума от скуки.Ну там в картишки перекинуться на палубе, или рыбу половить, устроить поэтические чтения на капитанском мостике =) Даа, менеджмент команды немотивированных придурков - вот задача капитана =)))


Вот только хочется перейти на движок поприличней, и пооткрытей желатеньно.
Neofit
Аватара
Сообщения: 897


Сообщение #22 Дмитрий » 20.03.2018, 13:35

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

При выборе среды разработки (движка) стоит руководствоваться прагматикой. Если вам попутно ещё предстоит его осваивать, то возможно Юнити идеальный вариант, это и обширное, в том числе русскоязычное, сообщество, это и обилие готовых решений, в том числе бесплатных.

Что касается Годот, лично мне всё очень нравится, развивается динамично, багрепорты обрабатывают/правят, документацию пишут/обновляют (правда на английском), в добавок это если не единственная, то лучшая среда разработки под Linux (но это далеко не каждому актуально). Чего не хватает... хотелось бы русскоязычное сообщество, где можно бы было пообщаться с кем то по теме, желательно с кем то поумнее =-) .
Дмитрий M
Сообщения: 43

  • 1

Сообщение #23 maleficmax » 20.03.2018, 22:29

Дмитрий писал(а):размениваться на "маленькие, обучающие" проектики бессмысленно
Зависит от склада характера. Кому-то нравится корчиться в муках, решая сразу очень сложную задачу, а кому-то легче учиться, выполняя последовательно всё более сложные задачи с новыми элементами. Мой путь был второго типа, к примеру )
Не стоит путать небо со звездами, отраженными ночью в поверхности пруда. А.Сапковский
Моя свалка | Уроки
maleficmax M
добрый админ
Аватара
Откуда: Україна, Кременчук
Сообщения: 4315


Сообщение #24 Neofit » 20.03.2018, 22:53

Так, а Годот сколько человек разрабатывает? Мне показалось что один.

И как у него с производительностью? По графике и процессорным рассчетам?
Neofit
Аватара
Сообщения: 897


  • 1

Сообщение #25 Дмитрий » 21.03.2018, 10:55

maleficmax писал(а):Кому-то нравится корчиться в муках, решая сразу очень сложную задачу, а кому-то легче учиться, выполняя последовательно всё более сложные задачи с новыми элементами.

Есть такая поговорка: "Слона не едят целиком". Я признаться не представляю как можно "корчится в муках" решая очень сложную задачу, Вам неизбежно придётся решать множество подзадач последовательно, особенно если вы в проекте один... и вам совершенно никто не мешает выстроить задачи от простого к сложному и постепенно осваивать ремесло. Преимущество такого подхода заключается в том, что вы инвестируете своё время (ограниченный и невозобновимый ресурс) в небезразличное вам творчество, иными словами в сухом остатке у вас и опыт и наработки по вашему проекту.

Neofit писал(а):Так, а Годот сколько человек разрабатывает? Мне показалось что один.

Несколько человек стоит во главе разработки с момента открытия исходных кодов, а вообще теперь это опен соурц проект и "вкладчиков" в его кодовую базу много. Хотите посмотреть кто этим занимается, сколько вкладчиков, активность развития - заходите на гитхаб репозитарий проекта. Я в развитии проекта участвовал только периодическими багрепортами, многие уже исправлены. Вообще с развитием проекта всё в порядке, напоминает блендер в эпоху после выхода 2,5.
Хоть яндекс переводчик, хоть гугл переводчик умеют переводить сайты, почитайте официольный сайт Годот, новости на сайте, думаю на многие вопросы найдёте ответы.

Neofit писал(а):И как у него с производительностью? По графике и процессорным рассчетам?

Тут сильно не углублялся, каких то объективных и/или сравнительных тестов не проводил, я начинал с Годот 2.Х, путём загрузки нескольких монолитных высокополигональных сцен, с наложением на всю сетку физики счёл производительность приемлемой для себя, правда пока никак не занимался анимациями. Сейчас портирую проект на Годот 3.Х, ещё не весь асет подготовил под ПБР и экспортировал, но часть уже перенёс тестировал, в целом новый рендер прожорливые прежнего, но стоило отключить фильтрацию теней зашевелился - тут правда надо упомянуть что я гоняю игру на подручном стареньком мобильном ноутбуке с вот таким кумушком: https://www.notebook-center.ru/processor_780.html, графика только встроенная. Да вот такой я извращенец, но для тестов мне хватает и всегда под рукой.
Дмитрий M
Сообщения: 43

Сообщение #26 Bibo » 02.04.2018, 18:20

Bibo
Аватара
Сообщения: 566

Сообщение #27 СамСуCам » 02.04.2018, 19:18

Кто может сказать, полноценный PBR есть в Godot?
В любой непонятной ситуации спи, кушай и улыбайся. SATtva
Моя галерея Ежедневный конкурс моделирования в Blender
СамСуCам M
то добрый, то злой админ
Аватара
Откуда: Русь, Китеж
Сообщения: 3341



Сообщение #28 Bibo » 02.04.2018, 19:48

СамСуCам, что значит "полноценный"?
Bibo
Аватара
Сообщения: 566

Сообщение #29 СамСуCам » 06.04.2018, 11:32

Bibo, значит, нормально работающий с стандартными PBR картами, а не как в юнити. Там такой непредсказуемый результат выходил...
В любой непонятной ситуации спи, кушай и улыбайся. SATtva
Моя галерея Ежедневный конкурс моделирования в Blender
СамСуCам M
то добрый, то злой админ
Аватара
Откуда: Русь, Китеж
Сообщения: 3341



  • 1

Сообщение #30 O.din13 » 10.04.2018, 08:43

Neofit писал(а):Так, а Годот сколько человек разрабатывает? Мне показалось что один.

Скорее всего ты про Хуана, он типа как Тон, но для Godot. То есть руководит и программит, пишет и принимает решения. При этом он написал большую часть кода, а после успеха на патреон стал нанимать себе оплачиваемых помощников; до этого только открытая помощь принималась. Сейчас есть как-минимум два оплачиваемых программиста и ещё гдквест набился в доработку документации.

Neofit писал(а):И как у него с производительностью? По графике и процессорным рассчетам?

С производительностью всё неоднозначно, в всё отлично, а в сейчас (третья версия) появилась куча технологий, но красивая картинка ощутимо напрягает систему. К примеру, сложно получить на обычной системе более 30фпс в фуллHD, если ты используешь риалтайм AO и GI.

Сам GScript по производительности примерно рядом с чистым Python. Есть возможность подключить и сам Python. А можно и C++ или C#, и более специфичные вещи, и ты получишь соответственное ускорение. Самый быстрый показатель сейчас вроде бы у языка D.

Для 2д движок очень хорош. А в целом с BGE сравнивать особо смысла нет, в первую очередь по причине паблишинга, с этим у BGE всё никак от слова — очень сложно. Да, паблишить можно и на BGE, Дима (Кива) и его несколько изданных на Steam игр — вам в пример, но в целом всё будет сложно и печально. И костыльно.

У Godot своя философия построения игр на базе сцен, сигналов и иерархической зависимости; система достаточно интересная и отчасти удобная. С ним проще доделать первую приличную игру, чем с BGE. А с BGE проще получить первую интерактивную реакцию, если вы уже знакомы с Blender. Чуть-чуть проще, да то всё относительно и смотря в чём.

Кстати. Когда только познакомился с #Godot, то дико бесило, что про него не пишут простым языком. Вот попробую сравнить с #BGE на парочке примеров. Так сказать, для 'самых маленьких'. :)

Простой пример. Как сделать объект с простой анимацией, вроде вращения или покачивания.

BGE. Берём кубик, ставим ключи анимации. Заходим в брики и делаем цепочку: Always > And > Action (выбрали сделанную анимацию, указали диапазон и прочие параметры).

Godot. Берём нод (Sprite или MeshInstance, или это может быть готовый ресурс/сцена). Входим в режим установки ключей (в дерево сцены нужно добавить нод AnimationPlayer, выбрать его и создать в нём новую анимацию), cтавим инстансу ключи на его свойства (плейеру ставим активацию при загрузке и цикличность).

Теперь, если вы ставили ключи на вращение, то у вас есть вращающийся кубик и там, и там. Или кубик двигающийся по ключевым точкам. Всё хорошо. Всё примерно одинаковой сложности. Плюс в Godot вы можете создать из этой сцены ресурс и добавлять его в нужные сцены, и его анимация, скрипты и прочее будет уже внутри него, и работать так, как если бы вы запустили эту сцену отдельно в Godot. Этот момент сильно упрощает организацию сцен, что называется, — мышкой.

Теперь более сложный момент. Допустим реакция на мышку над объектом.

BGE. Меняем в нашей цепочке Always на MouseOver. Всё. По дефолту у нас и так создаётся Static объект, так что физика и raycasting будут работать (кстати, это можно и из скрипта делать). Кубик закрутится, когда мы наведём мышку на него.

Godot. Нам уже придётся познать скрипты и сигналы. Полезные новичкам подробности под катом, а вывод после него. :)
Спойлер
VisualScript использовать для простых задач можно, некоторые вещи в нём интересно сделаны; но всё же не рекомендую, так как по большому счёту, это просто визуальная и достаточно неудобная обёртка для возможностей GDScript, немножко изменённая, но не так как хотелось бы и в целом лучше сразу идти в GDSсript. Вот этим путём и пойдём.

GDSсript так устроен, что когда вы пишите новый скрипт, то тем самым расширяете функционал уже существующих классов объектов. К примеру Sprite или Camera. При этом, если вы делаете расширение класса который входит в другой класс, то есть имеет родителя, то вы автоматом получаете и возможности родительского класса. Так что если вам чего-то не хватает, то возьмите от класса повыше в иерархии или сделайте себе новый экземпляр другого класса прямо здесь. Но продолжим. Мы делаем реакцию на мышку над кубиком.

Сделаем сцену, где будет такая иерархия нодов:

Код: Выделить всё
(root)
- Node >
    - Camera
    - AnimationPlayer
    - RigidBody(static) >
        - CollisionShape(куб)>
            - MeshInstance(куб)

Скрипт можно повесить на любой нод (в Godot всё добавляемое в сцену называется нодами, а не объектами как в Blender). То, куда мы повесили скрипт вообще не принципиально и влияет только на удобство обращения к нужным нодам, их функциям, методам и свойствам.

Скрипт будет такой:

Код: Выделить всё
extends Node

var player # это переменная, она будет доступна во всех функциях далее

func _ready():
   player = get_node('/root/Node/AnimationPlayer') # получаем нод плейера из дерева сцены по указанному пути

func _on_RigidBody_mouse_entered():
   player.get_animation('New Anim').set_loop(true) # получаем анимацию по имени и ставим бесконечный цикл
   player.play('New Anim', -1, 1.0, false) # запускаем анимацию

func _on_RigidBody_mouse_exited():
   player.get_animation('New Anim').set_loop(false) # выключаем цикл
   player.stop() # остановили анимацию

Теперь такой момент, у нас в скрипте (расширении класса Node) есть три функции:

_ready — это резервированное имя метода, который активируется в момент, когда после запуска проекта наш нод и все его потомки/чайлды добавились в дерево сцены, т.е. готовы к работе с ними. Резервов такого рода несколько, например _process(), _physics_process() и другие, но эти вы будете использовать чаще всего. В BGE такого вообще нет, потому по началу будет немного непривычно, но это быстро пройдёт.

_on_RigidBody_mouse_entered(), _on_RigidBody_mouse_exited() — с этими интереснее, так как если мы их просто напишем сами, то ничего не заработает. В Godot есть такая штука как сигналы, они есть у каждого нода и находятся в своём отдельном свитке. Любой сигнал можно подключать как функцию в скрипт на любом ноде. Просто берём 'Connect' и выбираем нужный _нод_со_скриптом_ в открывшейся форме выбора. В данном случае я использовал два сигнала, когда курсор мышки заходит в/над RigidBody и когда покидает его. Оба два просто подключил к нашему скрипту/расширению выбрав нод с ним. Функции появляются в скрипте автоматически и мы можем добавлять в их 'тело', что нам требуется. В данном случае управление анимацией.

Таким образом, самый простой способ сделать аналог MouseOver из BGE в Godot:
Добавить RigidBody, ColisionShape, MeshInstance (грубо говоря, собрать свой аналог объекта BGE, с мешем и физикой). Повесить скрипт на кого-то из них и подключить в этот скрипт сигналы по детекту мышки из RigidBody, с помощью которых управлять анимацией.


Этот простой пример уже показывает, что в Godot очень большая функциональная раздробленность и зачастую, что бы добраться до какой-то фичи, нужно попутно задействовать ещё 2-3. В принципе в BGE тоже ситуация не далеко ушла, если смотреть на скриптинг, разница только в том, что в BGE нет такого разнообразия типов объектов в дереве сцены и идёт связка брики-скрипты. А в Godot связка ноды-расширения(классов). В BGE мы добавим брик-сенсор для raycast и будем хитить объект, а в Godot добавим нод raycast и будем делать тоже самое (правда довольно мудрёно). Плюс в BGE есть и более комплексные решения, как в примере с MouseOver. А в Godot всё несколько более низкоуровнево и даже VS, который вроде как создан для новичков, но ставит им высокую планку вхождения. Такая вот ситуация.

При этом у Godot есть такие специализированные ноды, про которые BGEшникам лишь мечтать. Например, есть класс Control, где в том числе есть табы, контейнеры, скролл, меню, есть готовые кнопки и так далее... вам осталось только научиться этим управлять. :)

Но самое главное, что в BGE проект — набор файлов и скриптов.
А в Godot проект, это именно проект. Со всеми сопутствующими плюшками.
Последний раз редактировалось O.din13 10.04.2018, 09:23, всего редактировалось 3 раз(а).
Az есмь.
O.din13 M
Аватара
Сообщения: 15

Сообщение #31 Kaiwas » 10.04.2018, 08:58

Немного оффтоп, но ещё можно в сторону Armory 3d посмотерть. На мой взгляд перспективная штука.
Проектирую
Kaiwas M
Аватара
Откуда: Россия, г.Липецк
Сообщения: 2796

Сообщение #32 Zapor » 12.04.2018, 16:29

Например, у меня на одного пероснажда одна анимация, нужные анимации выбираются по кадрам (например, анимация с 1000 до 1120 кадр). Утритую конеш, но суть именно такая. Придется ли разкидывать такие анимации по отдельным анимациям как в Юнити или можно уже в самом годоте повыбирать?

всю тех документацию я держу в самом бленд файле в тексте. Найдешь - разберешься. ну или спросишь как я что делал.


то есть вопросы скорее технического характера. Ибо есть вопрос по поводу переноса БГЕ проекта в Годот
Окей, гугол. Как не быть ленивой жопой?
Zapor M
Аватара
Откуда: Москва
Сообщения: 22

Сообщение #33 Bibo » 12.04.2018, 18:37

Zapor писал(а):Придется ли разкидывать такие анимации по отдельным анимациям как в Юнити или можно уже в самом годоте повыбирать?
Да, придется. Можно конечно и в Godot порезать вручную, но зачем нужна дополнительная работа?
Bibo
Аватара
Сообщения: 566

Сообщение #34 Zapor » 13.04.2018, 11:10

Bibo писал(а):Можно конечно и в Godot порезать вручную

Это как в БГЕ - выбираешь анимацию и начальный и конечный кадр? Если так, то резать ничего не надо, у меня в документации каждая анимация прописана, бери до копируй числа =)

Если же нет - тогда могу заняться порезкой. Экспорт в какой формат?
Окей, гугол. Как не быть ленивой жопой?
Zapor M
Аватара
Откуда: Москва
Сообщения: 22

  • 2

Сообщение #35 Bibo » 13.04.2018, 12:03

Zapor писал(а):Это как в БГЕ - выбираешь анимацию и начальный и конечный кадр? Если так, то резать ничего не надо, у меня в документации каждая анимация прописана, бери до копируй числа =)
Нет, в Godot кадры не выбираются, например, Эмма из твоей игры

Изображение

Как видишь, в Godot указывается только продолжительность анимации и временной интервал между кадрами, все в секундах.
В идеале, резать в Blender. Но не буду строить из себя специалиста, я не опытен в анимации и сам Godot только изучаю.
Zapor писал(а):Если же нет - тогда могу заняться порезкой. Экспорт в какой формат?
А ты уже знаком с тем, как движок устроен в принципе? Его система нодов и прочего? Если нет, начни с основ иначе будет дурно. Выше я давал ссылку на перевод документации.

Тем не менее, раздел посвященный импорту пока не перевел, так что объясню здесь.
Спойлер
Для импорта 3D сцен используется формат DAE. Встроенный в Blender экспортер работает криво, лучше использовать этот аддон. В меню Export появится Better Collada

Изображение

Чтобы импортировать в Godot, просто скопируй экспортированный файл в папку проекта, импортирует он автоматически. Потом открой этот DAE файл в Godot и сохрани как обычную сцену.
По скелетной анимации - перед экспортом из блендера, выбери скелет, перейди в Pose Mode, выбери все кости и убери трансформирование

Изображение

иначе криво экспортируется.

Добавлено спустя 42 минуты 38 секунд:
Bibo писал(а):Нет, в Godot кадры не выбираются, например
Ой-ёй-ёй-ёй! Совсем забыл!
В Godot нельзя указывать анимацию с какого по какой кадр, то есть, во время редактирования. Но во время импорта можно

Изображение

Выбираешь импортируемый DAE файл, указываешь FPS, какой установлен в Blender, в разделе Clips указываешь количество анимаций (Amount) в файле и дальше сами анимации - имя, начальный кадр, конечный кадр. Затем жмешь Reimport, готово.
Порежет сам.
Вложения
collada-exporter-master.zip
(20.22 КБ) Скачиваний: 26
Bibo
Аватара
Сообщения: 566

Сообщение #36 stark » 13.04.2018, 17:16

Грустно видеть подробные ответы без реакции. Мой плюс :beer:
stark M
Сообщения: 2219


  • 1

Сообщение #37 O.din13 » 22.04.2018, 08:59

Zapor писал(а):Это как в БГЕ - выбираешь анимацию и начальный и конечный кадр?

В Godot нет такой реализации, но ты можешь использовать lenght() и seek(), что бы обрезать анимацию и проиграть с нужного момента. А что бы попасть в нужные кадры, ты можешь взять длину анимации и зная общее кол-во кадров посчитать время до нужного. И что бы не делать это каждый раз, можно сделать глобальное расширение класса Animation и прописать там свою функцию для такого расчёта, что бы просто указывать диапазон кадров и их общее кол-во в анимации.

Или не париться и просто заранее поделить на state анимации. :)
Az есмь.
O.din13 M
Аватара
Сообщения: 15

Сообщение #38 Zapor » 24.04.2018, 20:30

O.din13 писал(а):В Godot нет такой реализации, но ты можешь использовать lenght() и seek(), что бы обрезать анимацию и проиграть с нужного момента. А что бы попасть в нужные кадры, ты можешь взять длину анимации и зная общее кол-во кадров посчитать время до нужного. И что бы не делать это каждый раз, можно сделать глобальное расширение класса Animation и прописать там свою функцию для такого расчёта, что бы просто указывать диапазон кадров и их общее кол-во в анимации.


Какой ужас. Не, я пас, мне и роль аниматора-моделлера устраивает хД
Окей, гугол. Как не быть ленивой жопой?
Zapor M
Аватара
Откуда: Москва
Сообщения: 22

Сообщение #39 grayich » 16.03.2019, 13:37

x64 Linux
grayich M
Аватара
Откуда: Харьков
Сообщения: 5235

Пред.

Вернуться в Общие вопросы по игровой тематике

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 1 гость