24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
А так-же куча различных фишек вроде разветвленной анимации, охуеннейшего дебаггера с графиками и статистикой, подсветка синтаксиса прямо в редакторе с автодополнением, поддержки интернет протоколов и многое другое, о чем ещё не знал ОП первого треда.
В этом треде предлагаю лампово собираться в дружное комьюнити вокруг годо, чтобы обмениваться идеями, подсказками, сниппетами, и запилить вместе какую-то простенькую игру.
>>524599 >и запилить вместе какую-то простенькую игру Я просто напомню, что годоту нужен киллер-тайтл, который ещё сильнее захайпит годот. Это твой шанс, анон!
>>524600 Киллер тайтлы за день не делаются. И за неделю не делаются. И за месяц. И даже за год. Я вот свой пилю уже больше года, и пока готово от силы 20% игры. Хотя я почти закончил вылизывать все базовые механики, так что дальше быстрее пойдёт, но всё равно прогнозирую ещё года два до завершения. Так что, учитывая, что юзабельная версия 2.1 вышла только два года назад, киллер-тайтлы на Годо ещё год как минимум не появятся.
>>524597 (OP) >разветвленной анимации Кстати, вот, где это и как делается? Кто-нибудь пользовался? А то я пока все ветвления анимации делаю через вызовы функций, но может есть проще путь?
>>524608 Она в 2.1.х ветке тоже будет? 3.х меня не интересует, так как всё равно пользоваться им смысла нет, сырой ещё. А пока его допилят, я свой проект на 2.1.х закончить успею.
>>524607 >Хуан споткнулся об свой костыль, все верно. Видео его. Он же не 3д-модельер вроде. Его задача просто достигать майлстоуны на патреоне, что он и ставит.
>>524613 Заебись системка. А на шарпе они продают модули для интеграции в свою игору? А натренировать нейроночку они за сколько возьмутся? А то у меня днищепека.
>>524613 гм, ну я вообще про 2Д говорил, для начала. А потом я не очень понимаю какая связь всё же. Я имел в виду, как управлять анимацией из другой анимации, такого вида ветвления. Например, у меня есть анимация приседания и вставания персонажа. И нужно, чтобы по окончанию анимации вставания запускалась idle анимация. Пока я это делаю вызовом функции из анимации(там треки функций есть). Вопрос, собственно, был - можно ли как-то по-другому это делать, проще?
>>524618 >Как 3д моделирование связано с тем, что коллайдер проваливается под землю? Напрямую, блядь. ведь коллайдер это геометрическое тело, просто невидимое. строится либо полигонами, либо параметрически. имеет свои координаты, располагается на сцене именно моделером, и если между коллайдерами образовалась дырка - это косяк именно моделера уровней. Мне гораздо интереснее посмотреть на код и на дерево из той вебэмки, где белые меши трясутся. Там видимо хитрый хейтер годота ебанул ригидбоди в том месте, где обычно на всех движках юзают статики и визжит "смотрите, как в говнодоте физика трисётси!"
>>524622 >Мне гораздо интереснее посмотреть на код и на дерево из той вебэмки, где белые меши трясутся. Смотри, это же опен сорс, баг публичный, с проектами-пруфами. >Actually this is an even better example, just a cube: https://github.com/godotengine/godot/issues/21409
>>524613 Причем тут это вообще? Даже если бы такое было в годоте, никто тут бы не стал бы тратить часы своих криптоферм на то, чтобы ноги и руки персонажа махались независимо.
>>524631 Через моно. Я лично проверял, поднимал монодевелоп на штабильном дебиане и усё работает, собирается. Правда тормозит даже на официальных дровах (ой, то есть на модулях ядра конешно же, штоты-штоты линекс) нвидия.
>>524632 Получается тру кроссплатформенное приложение. Потому что, если пытаться использовать формы, начинаются огромные подводные камни в виде принципиально неработающих в линуксе формах винды и работающих с кучей оговорок формах гтк в винде. Ну это чисто поверхностный взгляд, я уверен, что на этот пост рано или поздно выскочит анон у которого всё работает, достаётся за полсекунды, без задней мысли.
>>524626 Что в них хорошего, если физика так и глитчит? Это ведь означает, что скорее всего issue перекочуют в следующую версию и теперь придется ждать как минимум 3.2 и надеяться, что хотя бы в ней поправят. Ну ничего, ждали три года и еще подождем, главное ПОТЕРПЕТЬ. >хитрый хейтер годота ебанул ригидбоди в том месте, где обычно на всех движках юзают статики и визжит "смотрите, как в говнодоте физика трисётси!" Что-то не помню, чтобы хотя бы в одном движке ригид боди в форме прямоугольника трясся на ровной поверхности, даже когда лет 10 назад программировал на допотопном блитз бейсике, там и то не было такого. Но манька ИТТ превзмогает, скоро и ригидные тела окажутся не нужны, будем сделаем всё через статик боди, зато ничего и трястись не будет.
Годоны, напомните, пожалуйста, с каким именем нужно файлик создавать в папке с исполняемым, чтобы папка с настройками годо создалась сдесь же а не у пользователя. Что-то там формата __%%__
>>524627 >>524630 Ну так объясни нормально, раз ты такой понятливый, блджад! Как добавлять анимации вообще, например? Вот у меня есть AnimationPlayer с готовыми анимациями в нём, как из него загрузить в AnimationTree? Только не говори "Import Animation", оно нихуя не делает и не загружает.
Я об этом. Вот только речь о гексе, разделенном на множество треугольников. Премного буду благодарен, если помимо вертексов поможешь и с uv.Также прилагаю картинку для наглядности
>>524692 Что ты несешь? За 10 лет ни одна игра, ни один эмулятор не вылетает, годот на глес3 не вылетает. Только с глес2 проблема. Где-то там бесконечный цикл, видимо не проверяется какое-то условие.
Вопрос открыт А кроме дурацких игр в которые играть не возможно, годот на что-то способен, или сам факт что там, что-то запустилось и двигается уже прогресс?
>>524716 Видимо годот из тех программок, которые нужно самому пересобирать, что бы хоть что-то заработало. Думаю если выйдет реально стабильный и удобный релиз, то он тут же перестанет быть бесплатным.
Запустил этот ваш гОдот. Этим деревянным, прибитым гвоздями интерфейсом совершенно невозможно пользоваться после удобств юнити.
Почему опенсурс-оборванцы не понимают, что юзабилити > все остальное. Движку можно простить многое, в том числе плохую графику (потому что 99% кириллов все равно это не нужно), но не плохой интерфейс.
>>524711 >А кроме дурацких игр в которые играть не возможно, годот на что-то способен, или сам факт что там, что-то запустилось и двигается уже прогресс? Если кто-то и сделает хорошую игру, то рассказывать всем, что он тратил время работая на годоте, будет полнейшей глупость. Это как признаться, что выкопал яму вилами или граблями, или построил дом из говна.
>>524766 Погоди, я только с работы пришел. Весь день ебался с райзеном, в попытке установить на него спермёрку. Такой неожиданностью для меня стало, что она туда не ставится. Какие то сумрачные утилиты от гигабайта качал, патчил ими установочный образ. Нихуя не помогло. Пришлось поставить линукс. Завтра буду изучать вопрос, какую Виртуалку поставить для корпоративного софта. Сейчас лежу не могу встать комп домашний включить. Ты расскажи хоть, что сам пробовал, и что не получилось?
>>524770 В том, что я не хочу писать индусский код для каждого треугольника, а хочу их генерировать через хитрый алгоритм. Собственно, спрашиваю, есть ли такой где-нибудь, дабы не писать самостоятельно.
>>524851 >полную версию программы я наоборот щитаю что говнот недостаточно модульный. какой-то блоб данных, вместо движка. очередное доказательство никчемности хуана как программиста.
>>524857 Ну и что? Не следует unix философии Хуан. В идеале движок должен из себя представлять модульные, подключаемые библиотеки, плееры для разных платформ использующие эти библиотеки и фронтенд (редактор). Все. Плеер бы запускался например так: godot.exe game.zip, просто загружая игру из архива
>>524867 Не всем нужен экспорт. Допустим, у тебя команда (хаха, ну прикол, у тебя, команда), один уровни строит, второй персонажей анимирует, а собираешь всё вместе ты. Им экспорт не нужен. Они тебе просто ресурсы в систему управления версиями грузят.
>>524870 Ну нифига себе, на годот работают целые команды и даже уровни строить пытаются. У них даже есть выбор использовать экспорт или нет, до чего технологии дошли, безумие.
Что-то я разочаровался в сишарпе, получается, при использовании сишарп-скриптов, они все компилируются в сишарповую библиотеку, которая для работы требует моно, которое придется редистрибутировать вместе с игрой, казалось бы мелочь. А неприятно. Прав был анон в прошлом треде. Надо сразу кресты учить.
>>524937 Бенчмаркни, бенчмаркни. Вон в бомбермем-треде анон делал: f = preload(fire.tscn) ... p = f.instance() Где fire.tscn - это простенькая нода со спрайтом, разбитым на 50 фреймов и аниматором, который проигрывает эти фреймы один раз, после чего нода самоуничтожается. И вот 50 таких инстансов наглухо сажали у него GTX1060. Дерзай, может ты оптимальнее бенчмаркнешь.
>>524988 Подъебка засчитана. Но разгадка в том, что глитчи физики во всех этих уважаемых коммерческих движках, что указаны в видосе, происходят от того, что симуляция физики на данном этапе развития техники ещё очень далека от реализма. Реально симулировать физику могли бы воксельные алгоритмы, но пока что домашние пека не потянут воксельные миры с такими мелкими вокселями, которые были бы не видны глазу.
>>525123 Дичайше проигрываю с самосборщиков, которые на серьёзных щщах пилят ААА проект по самосбору, а в это время один хитрый распидор буквально выбивает у них табуретку из под ног, запилив уже три тайтола по вселенной. Они такие выпускают релиз в стиме, а им - нна в ебало судебный иск на стопицот мильонов за нарушение авторских прав. Угораю! Жги дальше, расп!
Сап Годотобояре у меня вопрос Станет ли Годот настолько же популярным как Юнете? Ну типо я сейчас вкачусь, стану годот жуниором и потом смогу на хедхантере найти работу в офисе?
Официальный ответАнонимOP02/09/18 Вск 13:27:47#177№525344
>>525318 Что тебе мешает выучить годот И юнити? Там учить-то особо нечего. Оба движка могут работать на шарпе. Как минимум шарп учи обязательно, если метишь в офисе работать. А зная шарп, тебе будет похуй, как писать игру: class Player : MonoBehaviour {} или class Player : Node {} В любом случае учи современный айтишный подход к симуляции физики, он в целом схож во всех физических движках: есть три вида тел: статические, динамические упрощённые и динамические усложнённые. Вся симуляция физики рассчитана на то, чтобы сделать игру (или в общем виртуальную сцену) как можно быстрее, ибо на данном этапе развития техники, компы не тянут полноценную симуляцию физики. Всё остальное во всех движках различается в сущих мелочах. Такие же плееры звуков, такие же средства сериализации, такие же средства работы с сетью. Различия только в названиях классов/методов. ну и в скоростях конечно. Кто-то сделал быстрее, вовремя понял, что другие так не смогут, закрыл код и требует роялти. А кто-то сделал не так быстро и понимает, что денег за это не дадут, потому открыл код под опенсорц-лицензией.
>>525318 Что тебе мешает учить годот И юнити? там учить-то особо и нечего. В одном движке компоненты называются нодами, в другом движке ноды называются компонентами. Оба движка могут в шарп. Вот шарп учи обязательно, раз метишь в офисе работать. А с шарпом тебе будет похуй, как писать код игор: class Player : MonoBehaviour {} или class Player : Node {}
>>525345 >>525344 Не обращайте внимания на даблпост. Первый пост запостился с ошибкой, а я не посмотрел, что он запостился, и начал по памяти переписывать второй.
>>525332 Выкидываешь из питона импорты, работаешь только с одним импортом, который неявно устанавливается для любого скрипта - import Godot В остальном различия минимальны, если чего-то не хватает из модулей питона - ищи аналоги в АПИ годота, если не найдёшь - пиздец, приехали. Ну и оператор match ещё, кажется это личное изобретение команды Хуана.
>>525334 Годотовских игр в 10-ки раз больше. Просто МИТ лицензия этот проклятье. Ведь никто не обязан сообщать, что он сделал на этом движке. Вот если GPL или EULA проприетарная была, все бы уже знали про игры на годоте.
>>525318 >Станет ли Годот настолько же популярным как Юнете? Говно навсегда останется говном. Когда идиотам надоест ЖДАТЬ, и без того никакая популярность говна исчезен окончательно, вместе с 10к Хуана.
Годотаны, у меня как всегда дебильные вопросы. Есть ли нода, которая умеет отключать собственный скрипт? Вкратце — она мне понадобилась для маркера АОЕ-скилла. Я прикинул, что если он будет появляться по команде из HUDа, бегать за мышью, а потом передавать свою позицию дальше и отключаться, это сэкономит мне до чёрта разных _process с проверками никому не нужных флагов и срежет треть существующих сейчас костылей. Вариант скрипта с проверкой кучи флагов — не вариант, лишний _process, который 90% времени проверяет, что всё вокруг false — это боль. Вариант спавна этой ноды в виде инстанса и удоления по завершению её работы тоже не очень удобен, а вот именно такая нода, которая есть у кучи других объектов и отличается, по сути, только спрайтом, а большую часть времени не отсвечивает, была бы очень к месту.
>>525590 У ноды есть свойство "скрипт", теоретически ты можешь обнулять это свой... блять стоп! Тебе поможет функция set_process() - она тупо отключает обработку скриптов в ноде из которой вызвана.
>>525592 На самом деле мне очень стыдно, что я не просмотрел ещё миллион роликов, где всё это разжевано для существ с интеллектом улитки, но если я не буду тут задавать тупых вопросов, кроме срача ничего и не останется.
>>525604 Детишек всё еще учат. Есть Lazarus, на котором очень легко и быстро набрасывать гуёвые софтины. Я на нём до сих пор всякую мелочевку пишу вроде индикатора даблклика.
>>525604 Паскаль - хороший язык для обучения информатике, потому что там тебе нужно все объявлять. Безтиповые питоны и сиподобные языки с кучей неопределенного поведения хуже для понимания, что происходит внутри.
>>525614 И о чем это говорит? Ты бы хоть книжку какую по питону прочитал. Называется динамическая типизация. В каждый момент времени result ссылается на конкретный тип данных.
>>525628 Не безтиповый. Если бы он был безтиповый то сработал бы такой код a=5 b="hello" a + b А это вызовет исключение. Необходимо сделать приведение типов str(a) + b Придуриваешься здесь только ты, уважаемый специалист.
>>525629 Хотя конечно даже если бы это работало он бы все равно не был безтиповым. От тебя глупостью заразился. Ведь бывает автоматическое приведение типов, в данном случае его просто нет.
>>525629 Ты отлично понял, что имелось в виду. Да, формально только какие то абстрактные языки для матеши являются безтиповыми. Но, блджад, в повседневной жизни проще сказать "безтиповый", чем "языки с динамической или утиной типизацией, с вариантными типами и прочей парашей, которые не требуют объявления типа переменной в до использования, и позволяют переменной сменять тип в процессе"
Внезапно обнаружилось, что документацию кто-то начал переводить на русский: https://godot.readthedocs.io/ru/latest/getting_started/step_by_step/index.html Пожелаем же долгих лет и безболезненной смерти этому святому человеку!
There are still hundreds of open bug reports for the 3.1 milestone, which means that we are aware of many bugs already. Yet, many of those issues may not be critical for the 3.1 release and may end up be retargeted to a later release to allow releasing Godot 3.1 within a couple of months.
IMPORTANT: Make backups of your Godot 3.0 projects before opening them in any 3.1 development build. Once a project has been opened in 3.1, it's project.godot file will be updated to a new format for input mappings which is not compatible with Godot 3.0 - the latter will thus refuse to open a 3.1 project.
Это как называется, когда минорные версии ломают проект?
>>526063 1. Да 2. Нет, может у тебя дрова не обновлены. 3. Да, если других дров нет. 4. Нет, у тебя 3.06, а ты обновись на 3.1 с gles2 5. Да, ведь gles2 тоже может не работать >>524657
>>526210 Так вот почему у тебя игор нет! Оказывается запятую ошибочно назвали двоеточием и это мешает тебе сделать хоть одну игру! А я-то наивный, думал, у тебя нет игор, потому что ты хуило бездарное. Сейчас он напишет, что у него куча игор на других неговнодвижках, но он нам их не покажет, потому что у нас пачпорта нет.
>>526212 Ты мне лучше объясни, почему Хуан вместо того чтобы исправить, пишет в топике ссылку на названия кнопок в шиндоус, и призывает Героя? Хуан не Герой?
>>526214 Причем тут Хуан? Мы же выше выяснили, что ты хуило бездарное, сидишь в треде, мониторишь незакрытые ишью на гитхабе. Изо всех сил пытаешься доказать кому-то в интернетах, как в интернетах кто-то неправ, что пишет игоры на говнодоте.
>>526216 >Причем тут Хуан? При том, что он отписался в топике, вместо того чтобы исправить и закрыть баг. >мониторишь незакрытые ишью на гитхабе Я их не мониторю, а попал туда из новости на главной движка.
>>526244 > и ежемесячные 10к$ донатов Он же 3к из них платит ещё тупому французу, который следит за сайтом и игрой про твою мамку, и не играет в игры. А почему он тупой - читай Самосбор:Восстание.
>>526461 Поздравляю с открытием. Оказывается, пидоры уже третий тред подряд срут в годотреде. Может теперь-то наконец вы начнете их игнорировать, годаны? ну, типа, зашквар с пидорами беседовать и всё такое.
>>526500 >скрипт из внешней либы, т.н. нативскрипт. Готовая обвязка есть для C, C++, D, Nim, Haskell, Rust, Go. Языки по списку от более поддерживаемыми к менее поддерживаемым, т.е. Rust полгода назад обновлялся и скорее всего не заработает.
>>526502 Т.е. можно взять С/С++ и писать на нем, но низкоуровнего, просто обращаясь к хедерам движка, но всякое Godot IDE и игровые скрипты - это уже не для тебя и уже на нем не напишешь?
>>526505 Если брать кресты, то намного выгоднее взять исходник движка и приписывать к нему свои ноды, со своим функционалом. Потом компилируешь движок и в редакторе просто, без задней мысли кидаешь на сцену свои ноды. Это будет производительнее, чем нативскрипт, но велика вероятность запутаться в дебрях Хуанового говнокода.
>>526511 Ну это фреймворк все же, а не движок. А из них с чем работал больше пришелся SDL2 по душе, т.к. разрабатывается давно, запускается хоть на утюге, низкоуровневый при необходимости, да даже valve его под свое крыло взяла и спонсирует разработчиков.
>>526641 >делает не Хуан А что, Хуан что-то вообще делает? Последнее что он сделал, это gles 3, который откатывают теперь обратно лел. Велосипедщик ебаный.
>>526641 Учи мемы, чтобы не быть баттхертом. Я пытался перевести хедеры, но мне не хватило знаний. Да и усидчивости тоже. Там охуеть сколько кода нахуярено.
>>526655 >Там охуеть сколько кода нахуярено. Так он вроде автоматически генерится скриптом по списку функций из json файла. Ты же не руками писать собрался? >Учи мемы Да уж, Pascal в 2к19 это тот еще мем.
>>526675 А, разобрался о чем ты. Это функция scons, которая генерирует код для джавы и си. Я пробовал конвертор сишных заголовков фрипаскаля и он мне какую-то хуйню выдавал.
https://www.reddit.com/r/IndieDev/comments/9eoblq/it_took_a_few_months_but_i_finally_released_my/ >Using Godot as my engine was a two edged sword, it allowed me to make use of really useful features for free (Tilemaps, post processing, portability, ease of exporting) but had me exploring the realms of limited documentation and forum browsing on the daily, trying to understand why X crash was happening or why Y feature was not working. Most times, the solution to any seemingly 'engine' related problem had to be solved and debugged by me - sometimes taking multiple days. Наткнулся на реддите, вот вам реалии разработки на годоте. Забагованное сырое говно
>>526772 Ишьюс это не баги. Там большая часть фича-реквесты "а хорошо бы, чтобы вы добавили свистоперделку". Хуан уже озаботился этим и большую часть выкинет перенесет в отдельную репу.
>>526849 Кириллица - не забота движка. Чтобы в твоей игре была кириллица, скачай и установи в проект кириллический шрифт. Это принципиальный момент, который не изменится. Можете скринить.
>>526852 >оптимизация - не забота движка. Надо самим попердолиться, чтобы была оптимизация, из-коробки этого не будет. Можете скринить >удобство - не забота движка. Надо самим попердолиться, чтобы было удобно, из-коробки этого не будет. Можете скринить >графон - не забота движка. Надо самим попердолиться, чтобы был графон, из-коробки этого не будет. Можете скринить. >работоспособность - не забота движка. Надо самим попердолиться, чтобы работало, из-коробки этого не будет. Можете скринить.
>>526944 Долго ж я ждал, пока ты передёрнешь. Кушай, мой зелёненький. Годот может выводить любые национальные символы. Однако о наличии шрифта с твоими национальными символами позаботься сам.
>>526946 А хули Хуан не добавил тогда такой шрифт? Другие же опенсурс проекты добавляют такое и не ноют, нет Хуану нужно быть особенным и выделиться долбаебом
>>527061 Без обид, но юнитибояре на своем движке уже покоряют космос игростроя, а годот это такая вырезанная из пластиковой бутылке лопаточка, чтобы играть в песочнице.
>>527073 Ben Tristem обещал, но пока они в https://www.udemy.com/godot/ дойдут от хелоуворлдов и примитивных дваде-платформеров до хоть чего то - хуй знает сколько ещё времени пройдёт.
Был ещё один курс на юдеми ( вот уж где "качество", лол) вроде как с тридями, но не смотрел.
>>527152 Но ведь это правда. Ты действительно говна поел. Да, все вокруг "бабахнули", но это того стоило. Я могу "бабахать" и "подгорать" хоть весь день если ты для этого будешь говно кушать, договорились?
>>524597 (OP) Нашел на Реддите игру, которая сделана в Pygame (не маркетолог): https://store.steampowered.com/app/442210/Switchcars/ Выглядит более-менее (с точки зрения геймплейных фич, а не графона, конечно). Имеет смысл сразу начать учить Годот или все-таки попробовать сделать какой-то проект в Пайгейме для начала? Спрашиваю опытных людей просто ради того, чтобы не терять время зря на, возможно, хуевый фрейморк Питона. Плановый проект: 2д игра.
>>527207 При одинаковой кривости рук и умении пользоваться и тем и тем инструментом - да, godot незначительно, но шустрее, но на это можно не обращать внимание при выборе.
>>527211 > но на это можно не обращать внимание при выборе Сравни шоукейс годота и пигейма. Тут в треде только одну типа игру с пигеймпа показали, а в шоукейсе у годота есть даже игра про твою мамку.
Игру бы сначала придумали, которую разработать надо да тз написали, а уж написать-то ее - это уже значительно проще и уж тем более движок потом выбрать.
>>527249 Ну, короче, 2Д-экшон суть такова... Пользователь может играть лесными эльфами, охраной дворца и злодеем. И если пользователь играет эльфами то эльфы в лесу, домики деревяные набигают солдаты дворца и злодеи. Можно грабить корованы...
>>527249 Есть разные типы людей, некоторые если начнут писать тз, то у них все на бумажках и останется, а когда ты запускаешь редактор годота, все сразу расцветает, ты сразу начинаешь творить, экспереминтировать.
>>527083 Потому, что нет альтернатив. UE крутой, но слишком тяжеловесный для инди-разработки, unyti настолько кривое говно, что уже стало синонимом говноигр на пизженных ассетах, что еще остается? Только верить в годот.
>>527265 Смотря что требуется и для каких задач. Где-то и UE хорош, где-то love - приходилось писать на разных движках и это зависит от проекта больше.
>>527351 Обидненько, но правде в лицо надо смотреть. Даже в инсталлере вижуал студии сишарп и бейсик идут одним пунктом. Что намекает на то, в каком углу зашкерен сишарп и с кем.
>>527355 Потому-что бэйсик.net это полностью тот же Сисярп, только с другим синтаксисом, ебанько. Мелкософт просто захотел срубить бабла на старых дедах пердунах, которым синтаксис васика привычнее, вот и всё.
>>527359 Ты копротивляешься безнадёжно, мой милый шарпоед. Ибо с бейсиком мс дружит давно и плотно, еще в мохнатых 70х, молодой гейц нагревал на даллары крупные фирмы, продавая им ворованный айбиэмовский бейсик. потом появился борланд и начал банчить трубо-посралем. И тогда мс в лице гейца и борманы поделили сферы влияния и договорились, что мс никогда не лезет в пасраль, а борман никогда не лезет в бейсик. Но си/сиплюсы не в счёт. Это полноценный язык и никто от него не отказывался. Так что твой шарп в одном петушином углу с языками для недопрограммистов.
>>527365 И что ты хотел сказать этой простыней текста? Я блядь просто говорю, что Сисярп и васик.net это одного поля ягоды, где разное, это только синтаксис. А ты тут начал неведомую хуйню писать. Мне сука абсолютно посрать/нассать/поебать что на c#, что на vb.net
Значит, вот что я придумал: Сделать на движке окно конфигуратора, запускаемое перед основной игрой. В конфигураторе будет выбираться разрешение экрана, оконность режима, настройки графики, ну и что там обычно делается в конфигураторах. Набросал небольшой набросок, там всё просто: Главная сцена - сплэш-скрин. Он читает настройки из инифайла и если там параметр "уже настроено" существует и равен тру, то сплешскрин прелоадит и инстансит сцену главного меню, сцена главного меню читает остальные настройки из инифайла. if not "уже настроено": то сплешскрин прелоадит и инстансит сцену "конфигуратор", которая вся построена на контрол-нодах, которая ресайзит окно под себя, у меня 800х600, и выглядит как типичный диалог с кнопками внизу: "отменить (выйти)", "сохранить", "играть!". Всё правильно делаю? Какие есть замечания к идее?
>>527384 >В конфигураторе будет выбираться разрешение экрана, оконность режима, настройки графики, ну и что там обычно делается в конфигураторах. Ты юнитипидор что ли? Это все должно быть в настройках в самой игре.
>>527395 Я хочу показать юнитизависимым, которые еще не стали пидорами, что такое же окно конфигурации можно запилить и в годоте. И вообще, множество игр использует отдельный конфигуратор/лаунчер. Почему бы не сделать такой же ассет-кирпич для годота?
>>527400 >И вообще, множество игр использует отдельный конфигуратор/лаунчер Это ненужный костыль, добавленный потому, что юнитипидары очень легко могут накосячить, и записать такие настройки, при которых игра ничего не рисует. Вот поэтому им и сделали это инвалидное окно, чтобы пользователь мог починить. В нормальных играх настройки внутри игры, а при запуске рисуются красивые логотипы движков и спонсоров. А если что-то сломалось, можно зайти в папку документов и поправить настройку в человекочитаемом текстовом файле. Не надо копировать неудачные решения, только потому что они в куче говноподелий на юнити.
>>527401 Да лаунчеров вообще-то полно в куче игор на других движках. Это же удобно, когда игру можно настроить перед игрой. Банально субтитры включить, чтобы они отобразились в начальной демке. И ЧСХ, если разрабы не делают такого конфигуратора - его делают сами игроки. Для тонкой настройки. Может поэтому и не стоит такой встраивать в игру, ибо игрокам все равно не понравится и они сделают "только лучше"?
>>527384 Проорал с этого парня. Окно конфигуратора в Юнити это признак разработчика-школяра, который не смог его отключить чтоб запускалась нормально как и все игры сразу. В общем зашквар. А ты хочешь эту хрень повторить еще в годоте, ахаха)) Вот что значит перенимание "лучших практик игростроя" xD
>>527514 Лучше расскажи, как ты сделал фоновую загрузку с рабочей анимацией. Все мои попытки пока что упирались в то, что движок намертво останавливает любую обработку активного окна, когда происходит загрузка сцены, даже если она в параллельном потоке идёт.
>>527528 Я просто не сохраняю слишком много объектов в одной сцене. Добивайся того, чтобы каждая загружаемая сцена была максимально лёгкой. Затем игровая логика конструирует конечную сцену из десятка маленьких сцен, подгружаемых по отдельности. Таким образом, загрузка любой сцены-компонента хоть и блокирует процесс, но на микросекунды. И ты сможешь обработать анимацию. Само понятие "сцен" в годоте слегка сбивает с толку, ненавязчиво предлагая сделать в редакторе один тяжёлый объект и грузить его часами. Но это неправильно и годотовые "сцены" в твоей игровой логике должны быть мелкими, легковесными "компонентами" одной большой "сущности" в которую ты должен заложить "систему" для подгрузки и выгрузки компонентов на лету.
>>527532 Это убивает весь смысл сцен. У меня вот есть сцена уровня с объектами. Так мне теперь вместо объектов ставить пустые ноды и писать подгрузчик для уровня? Ну и нахуя тогда вообще редактор нужен, да и вообще Годот? Мне тогда проще будет свой движок накатать, где фоновая подгрузка не будет блокировать основной процесс.
>>527535 Ну вот чо ты истеришь? Ничего там не убивается. Сцены не пустые, просто легковесные, соблюдают принцип KISS. Маленькую игру можно сделать одной большой сценой, загружаемой за раз. Но в крупных проектах хоть какой движок возьми, хоть свой сделай - будешь грузить ресурсы самописным менеджером ресурсов, оптимизированным под эту конкретную игру. В тех же юнити тредах, например, постоянно проскакивают кулстори про то, как команды разработчиков, плюясь и матерясь, выкидывают нахуй искаропочные решения юнитеков и пишут с нуля свои решения загрузки ресурсов. Я говорю о ресурсах сейчас, хотя тормозить при загрузке могут и скрипты с какой-нибудь чудовищной процедурной генерацией всего подряд. А виноват у косолапого дауна конечно движок.
>>527547 Именно так. Причем, по мере продвижения игрока по сцене, удаляющиеся объекты должны выгружаться, а приближающиеся - загружаться. Ты впервые слышишь об этом?
>>527559 > тут же все самому делать надо, так что неудивительно. Уже не всё. Уже в ассетлибе есть и террейны и конечные аппараты (finite state machine), и много ещё всего. И ещё больше будет. Комьюнити растёт!
>>525348 >Ну и оператор match ещё, кажется это личное изобретение команды Хуана. >Change "switch default" to a _ Ну что ты. Это спизжено из функциональных языков.
let x = match 1 with | 1 -> "a" | 2 -> "b" | _ -> "z"
>>527579 Зависит от задачи: где-то лучше подойдет, где-то хуже. >>527595 Даже если не знаешь питон, но знаешь хотя бы основы скриптов/программирования, то вникнуть хватит недели в синтаксис и как применять. >>527606 Не сложно, всякие игры под мобилки можно склепать очень просто и быстро.
Есть какой то способ не вращать ноду вместе с родителем? Нужно чтобы кинематик боди был на самом верху для функции мув энд слайд, чтобы прикрутитить тот же хелт бар. Общая родительская нода не вариант.
>>527383 А я уже два года как сменил дефолтное именование рабочих потоков с "worker" на "nigger". У меня даже продакшн логи нашего серверного приложения ниггерами наполнены, оказывается(а я уже и забыл об этом, лол).
>>527688 Я тоже понял, но если бы там дальше проследовала какая то претензия на оригинальную мысль, то я бы просто перестал читать, т.к. он уже показал что не в состоянии справится даже с базовыми терминами.
>>527692 Пойми, я хочу чтобы диалог был построен на доверии, но доверие не может строиться на такой некомпетентности. Потому в следующий раз внимательно подумай прежде чем что-то писать.
>>527756 >Не представляю, зачем это нужно? Просто из академического интереса штоле? В интервью с разрабами годота (второе, с французом) упоминался чел, что компилил под расберри, вроде.
>>527811 А расскажи с каким оверхедом уже столкнулся, ну там кроме постоянного отключения невидимых объектов, раздутых сетевых пакетов и.. Есть конечно еще много вкусовщины, которую я бы сделал иначе, но тут уже только вкусы мои)
>>527843 Невидимость - это вот ты ставишь что-нибудь эффект там света или спрайт и временами отключаешь ему прозрачность, например, линейно, до нуля. Ну и потом большинство просто так и оставляют, а для производительности надо еще сам объект в сцене делать невидимым, чтобы рендеринг его каждый раз не дергал на отрисовку. Сеть - там много мусора передается, поэтому если пишешь высоконагруженную сетевую, но не получается их парадигма "из коробки есть все, что нужно" и берешь другую либу или пишешь свою. У них там eNet вроде используется видоизмененный.
>>527895 Понятно, ну про прозрачность вроде все геймдевы должны знать, что прозрачность это пздц пздц дорого. А про сеть можно подробнее, что именно за мусор там?
А вы знали, что в 3.0.6 убрали обязательное требование Таба? Я только что случайно обнаружил, что отступы из пробелов тоже прекрасно работают. Я сильно слоупок?
>>528464 >нельзя принимать спонсорскую помощь от лохотронщиков? >нельзя принимать спонсорскую помощь от террористов? >нельзя принимать спонсорскую помощь от торговцев наркотиками? >нельзя принимать спонсорскую помощь от продавцов органов?
>>528464 Так и представил себе - ты оказываешься с Тимом Куком в лифте, и у тебя 10 секунд на питч, чтобы убедить его вложиться в твою игру. Ты запускаешь демку, а там реклама казино, в лифте открываются двери, играют фанфары, вбегают горячие карнавальщицы, бьют в тамтамы. Все, время вышло.
Ребята, памагити! Скопировал код из официального урока по сохранению игор (на рид-зэ-докс) скопировал один в один. Добавил объекты, добавил группы. Но функция get nodes in group возвращает пустой массив. Памагити. Гугл молчит. Регистр групп проверял и менял. ЧЯДНТ ИЛИ ГДГВН?
Чёт у меня бомбит от годота, очень сильно. Решил я кароче вкатится в годот, только 3д. И внезапно оказалось что почти все туториалы, как и почти все годотодрочеры, как и почти вся документация, внезапно исключительно для 2д. Любой у кого спрашиваю вопрос начинает свой ответ с фразы "ну в 3д я конечно не шарю но по моему... ". Мне блять пришлось создать тред в редите чтобы мне ответили на вопрос какой функцией я могу двигать предметы, потому что представляете, в гугле внятного ответа нету, как и в документации или ютюбе, и ответ в редите внезапно начинался с этой же фразой. Вообщем всем кто советует годот как хорошый 3д движок желаю сгореть в аду а я пошёл обратно в юнити в ожидании когда это зафиксят, боюсь это займёт много лет
>>528692 Чот пиздеж чую я. Особенно просмотрев кучу туториалов по триде в годоте. Придираться нужно не к отсутствию туториалов, а к дичайшим тормозам, лагам, глитчам в тридэ физике. По факту годот сегодня - это двадэ движок. За триде возвращайся в юнити. Это я тебе как ОП треда говорю. Вечером подпишусь, если не веришь.
>>528692 Ну правильно, ты ничего не мог найти, потому что твой вопрос некорректный. Что еще за "предметы" которые ты двигать собрался? Там есть RigidBody и KinematicBody с разным поведением. А если это базовый Spatial то его не "двигают" а используют translate как и положено в 3d.
>>528694 Смотри, быть может я слепой, и проходил мимо святого, а может я просто привык к избытку документации юнити, но я бы не отрицал тот факт что помощи для 3д почти нету, особенно по сравнению с 2д. Кстати вангую ты тоже двадешник. На счёт пройзводительности тоже читал, и пока не понаехали фанатики с криками "самое сложное делай в нативе или сишарпе" или "исправят", скажу что учить ещё один синтакс и делать так никто не будет, тк слижком пердоливо, а исправить не исправят, тк это из за гдскрипта который на основе питона сделан, тут уже можешь не мечтать о межпланетных сражениях. Это наверное действительно главная проблема годота, опять же ести 3д, тк 2д есть 2д, тут сила не нужна. >>528697 Вопрос у меня был такой : есть два стула я хотел создать мяч который бы спавнился в определённом месте, и сразу улетал в нужное направление, а position3d оказался спасиалом, и плюс к этому я не знал что есть глобальные координаты и локальные, и собственно транслейт тоже фигово у меня работал, мне в редите посоветовали пользоватся трансформом. В любом случае я посмотрел что такой хуеты в 2д нету и люди не парятся, и тк на форумах годота все двадешники то мне постоянно советовали 2дшные функции аля get_position() когда даже слово position не существует в 3д, не то что функции. Вообщем ад
>>528708 > Спавнился мяч и улетал в нужном направлении. Делаешь отдельную сцену "мяч". В корне сцены kinematicbody, в потомках - collisionshape и meshinstance c одинаковым шаром в параметрах. Далее, в основной сцене делаешь load или preload. Устанавливаешь трансляцию координат. После этого добавляешь к сцене. И сразу после добавления вызываешь moveandslide с нужным ускорением в виде вектора-3, который задаёт и направление тоже.
>>528708 Соглашусь, что выбор скриптового языка был у них очень неудачен, к тому же еще и переделанный до своего. Наверное даже AngelScript подошел бы больше под задачу.
>>528719 Важный фикс: 1. Делаешь мяч - rigidbody. 2. Никаких move, просто при спавне мяча задаёшь два вектора: translation и linear_velocity. 3. It's just works!
Прилагаемые скриншоты послужат тебе туториалом. Я сделал простенькую сцену ballspawner с камерой и таймером. По таймеру происходит код на скрине 3.
>>528708 В движке на производительность влияет архитектура, управление конвеером видяхи, а никак не то, на каком языке скрипты пишутся. Ну и да, делай в нативе.
>>528719 Как бы я так и сделал, но тк смотрел тутор на 2д то была засада с позишоном, который здесь транслейт, кстати я до сих пор не понял разницу между трансформом и транслейтом кроме того что трансформ зачем-то массив массивов координат. Боже, в юнити это настолько легче делается, я не понимаю зачем столько сложностей, в юнити блин это всё делается двумя кликами и тремя буквами....
>>528725 Ну и результат, увы без видео, но мячи реально скачут в разные стороны. Необходимо код со скринов выше модифицировать как на втором скрине в этом посте, а у таймера отключить one_shot. В качестве домашнего задания, сделай translation так же рандомным.
>>528725 Линеар велосити вроде задаёт прямую траекторию, а мне надо чтобы он падал, но всё равно спасибо. Правда пожар мой это особо не потушило, так что я пожалуй всё равно вернусь к просьтенькому юнити который всё таки более заточен под 3д. но скрины сохранил
>>528736 >Линеар велосити вроде задаёт прямую траекторию, а мне надо чтобы он падал Неверно. Он задаёт ускорение в данный момент. После этого, в течение каждого кадра движка ригидбоди будет падать. Если оно в режиме ригид - оно падает автоматически. Благодаря этому автоматически получаются баллистические траектории полёта.
>>528738 >когда я наспавнил мячей 40 А теперь наспавни их через сишарп и сравни производительность. Без этого твои возгласы - пустой кукарек. И нет, за тебя это делать никто не будет.
>>528739 Я пока не могу проверить так что утверждать действительно перестану хотя ты тоже доказать не можешь ололо, хотя в форчане и редите это обсуждалось, попытаюсь найти снова треды
>>528744 Если рассмотреть код на скринах выше, то там язык вообще на выполнение сцены не влияет. Мячи спавнятся по таймеру. Двигаются физическим движком. От того, что таймер станет на шарпе - ничего не изменится. Изменилось бы если бы сотни мячей спавнились циклом в одном кадре. Вот тогда бы гдскрипт соснул. Об этом на реддите и пишут. Я читал.
>>528731 >натив тоже язык скриптования Что еще за язык такой? C++ знаю, C знаю, натив не слышал. А вообще я к тому, что большинство операций выполняется очень редко (клик мышкой например) и на это вообще оверхед языка не влияет. Если у тебя армии в сотни юнитов, то обсчет их логики на cpu, наверное, будет разниться между нативом и питоном. Но скорее все упрется в архитектуру рендера, а там надо смотреть, что и как, вроде бы батчи должны помочь.
>>528753 Я согласен что если починить архитектуру то будет намного лучше, но если починить интерпретер то будет ещё лучше, тк если сделать хорошую архитектуру но не оптимизировать интерпретер, это во первых извращенство, а во вторых интерпретер будет ботлнекать и всё равно будет лагать
>>528759 На всех конференциях учат что надо профайлить перформанс вначале, потому что не угадаешь что современный компайлер сделает, а прематурная оптимизация зло как и отсутствие.
А посоветуйте не видео туториалов, чтобы скипать уже известное и навигировать к тому, что нужно ровно сейчас? А то пока эти видеоняни до сути дела дойдут, я, блджад, рисовать научусь.
>>528860 >А посоветуйте не видео туториалов, чтобы скипать уже известное и навигировать к тому, что нужно ровно сейчас? Чем тебе чатики с официального сайтега годота не понравились?
>>529029 >на шарпе уже можно без пердолинга писать? Писать можно >>525657 Но без пердолинга - только во внешнем редакторе. Держишь параллельно с открытым годотом открытую студию/монодевелоп. Написал - сохронил - альттабнулся.
Годот охуенен! Можно прикрепить скрипты не только к нодам, но и к ресурсам! После чего: extends Resourse func _init(): И вперёд! Вы понимаете, что это значит? Это же управляемые ресурсы! Этому квадрат, тому круг, остальным картинку с дулей. Этому таймс, тому курьер нью, остальным - комик. Этому техно, тому митол, остальным нудятину распидора))
>>529205 >как подключить и прочее? 1. Скачиваешь годот-шарп с официального сайта. 2. Скачиваешь и устанавливаешь монофреймворк не ниже версии, указанной при скачивании годота (они пишут, что и не выше, но у меня нынешний стейбл монофреймворка вполне работает с годотом, а он выше что ли на две ревизии). 3. При создании первого скрипта на шарпе в любом открытом проекте, годот-шарп автоматически генерирует солюшон в папке проекта. В принципе, если ты хорошо знаешь шарп и тебе не требуется интеллисенс в работе, ты сможешь кодить прямо там, но мне удобнее выбирать дальнейший код из подсказок интеллисенса. Поэтому: 4. В студии открываешь солюшен из папки, где годот его сгенерировал и вуаля - вся мощь майкрософта помогает тебе писать код >>529156
Привет, годаны! Планирую реализовать контроллер от третьего лица в триде со следующим алгоритмом: На карте стоит позишонтриде и перемещается по ВАСД, в потомках этого позишона находятся камера и риджидбоди, камера двигается жёстко, а риджидбоди двигается функцией аплифорс с анимацией ходьбы/бега. Направление вперёд-назад берется из вектора, который проведен из точки под камерой до точки позишона. Начну реализовывать прямо щас. Если что толковое получится, покажу позже.
>>529437 Может потому что это кроссплатформенный инструмент, гарантирующий выполнение игор на линуксе, а не только на Винде и маке? Да не, хуйня какая-то. >>529434 А виноват у косолапого конечно движок.
>>529437 А ты почитай что там с Java произошло. Oracle выкатил новую версию с новым соглашением, и те, кто не используют OpenJDK, стали получать от них письма счастья, что вообще то вы нам денег должны.
>>529527 Нихуя не понимаю, у меня джава что-то пишет по английски постоянно. У меня на работе циска админится джавой 6-ой версии. Мне надо что-то покупать?
есть здесь кто-нибудь, кто может разъяснить, что это за прекол с "вектором (0, -1)" который как-то связан с определением того, что ты стоишь на полу? увидел это в одном из уроков на ютьюбе, подумал, что дело в авторе, но в стандартном примере платформера в годоте то же самое. почему оно так работает?
>>529786 >как организовать подбор предметов и инвентарь? В первую очередь инвентарь - это список, поэтому начать следует с того, чтобы добавить список в код ноды, которая будет с инвентарём. Причём для ясности, этот список следует называть не "инвентарь", а "содержимое". Поскольку содержимое будет у игрока, у ботов/мобов, в сундуков, у сундуков-мимиков, если таковых завезёшь. Итак, список есть и в _Готов() он создаётся пустой. Что дальше? Дальше мы определяем, какие предметы у нас будут помещаемы в инвентарь. После этого нода каждого такого предмета должна быть обогащена следующими функциями в скрипте: ПоднятьПредмет(), БроситьПредмет(), Так же следует завести метод Содержимое, в котором будет возвращаться и задаваться ссылка на список-содержимое при обмене/облутании/краже/поднятии/бросании. В функции ПоднятьПредмет, нужно позаботиться о том, чтобы нода отключала визуальную составляющую (а лучше вообще уничтожала), в функции БроситьПредмет, наборот, сделать включение (а лучше создание). Так, теперь по геймплейной составляющей. Подбор предметов состоит из двух частей: Со стороны игрока - это рейкаст, направленный в точку прицела на экране и детектирующий предметы. Со стороны предмета это зона (Area) в которой игрок может дотянуться до предмета, чтобы его взять. Таким образом, если рейкаст детектирует И игрок в зоне - выводим надпись "пресс Е чтобы взять %Рейкаст.Коллайдер.ИмяПредмета%", при нажатии Е вызываем Рейкаст.Коллайдер.ПоднятьПредмет(ИнвентарьИгрока). Но перед этим всем, конечно же надо проверить коллайдер на тип, если у тебя будет несколько типов, я это не описываю, как само собой разумеющееся. Соответственно, в обратном случае, ты нажимаешь кнопку И, открывается красивый интерфейс инвентаря, который ты нарисуешь, при своём открытии, он читает твой список "Инвентарь" типа "Содержимое" и выводит найденные предметы в ячейках (если хочешь реализовать чтоб разные предметы занимали разное количество ячеек, это отдельная тема). Допустим у тебя есть действие "Выбросить_Предмет" забинденное на ПКМ. При выполнении этого действия над предметом инвентаря (это проверяется вначале, считывается позиция курсора, определяется ячейка и индекс предмета в ней) этот предмет удаляет себя из инвентаря, вызывает у интерфейса инвентаря функцию перерисовки, у себя вызывает функцию БроситьПредмет, которая запрашивает у игрока его координаты, создаёт у предмета визуальную часть (или отображает, что хуже) и делает сцене аддчайлд(предмет) (в случае отображения придется делать телепорт). Перемещение предметов при торговле/луте/воровстве через интерфейс, вообще реализуется проще. Там удалить из содержимого, тут добавить, послать интерфейсу команду перерисовки. Всё.
>>529851 И тут ты наверняка спросишь, а как быть, если надо подбирать предметы, а потом уходить с одной сцены на другую? И я тебе отвечу, вообще функционал инвентаря тесно связан с функционалом сохранений и реализовывать их следует вместе. На годот-доках есть туториал, как делать сохранения, но в нём самом написано, что это самая простейшая реализация и в реальных играх крупнее миниигор, надо делать с учётом специфики. Инвентарь это и есть наша специфика. В этом случае сохранение придётся делать так: Все сохраняемые сущности не должны напрямую работать с файлами. При старте игры ты создаёшь (или загружаешь из файла) в памяти структуру, в которой будет описано состояние игрового мира. При каждом изменении это состояние должно обновляться. Затем, при сохранении именно эта структура записывается а диск, а при загрузке она записывается с диска в память. Все ноды, сцены, сущности, должны работать только с этой структурой. Пример: В сцене А на столе лежит яблоко. Ты подбираешь его и идешь в сцену Б. Затем сохраняешься. Идешь в сцену Ц и там тебе что-то не понравилось и ты загружаешься. При загрузке в структуре написано, что игрок в сцене Б по таким-то координатам с яблоком в инвентаре (причем не нужно говорить, из какой сцены яблоко). Загружается сцена Б и опрашивает структуру-синглтон игрового мира на предмет изменений в себе относительно дизайнового состояния. Затем спавнится игрок в указанных координатах. После загрузки ты идёшь в сцену А. Ну ты уже догадался, да? Грузится сцена А, опрашивает игровой мир и узнаёт, что в ней следует удалить яблоко на столе. Удаляет. После этого сппавнится игрок в точке телепорта из сцены Б.
>>529853 Автонаполняемые сундуки: Для каждого сундука, если хочешь реализовать автонаполнение, нужно реализовать свойство-таймер, которое привязано к внутреннему времени игрового мира и свойство со временем облутания. При загрузке сцены с таким сундуком, игра сначала смотрит "облутан" не нуль? Если да, смотрит свойство таймер, и сравнивает, если времени прошло меньше чем, то загружается сохранённое содержимое, если больше, то после загрузки содержимого дополнительно запускается процедурный генератор, который что-то добавляет, что-то удаляет (в зависимости от логики игры). Мобы: По такому же принципу, ты должен определиться, какая часть поведения должна быть сохранена и писать её в структуру игрового мира из кода самих мобов при их активности. Квесты: В дополнение ко всему вышеописанному, квесты при изменении прогресса, пишут в структуру изменения для целой кучи сущностей. Ты может никогда не посещал локацию Д, но выполнив квест в локации Б, затрагивающий её, квест пишет в игровой мир эту инфу и когда локация Д загружается, она приводит себя в состояние, отвечающее состоянию при пройденном квесте (удаляет домики деревянные, усиливает охрану дворца и т.п.)
>>529851 >>529853 >>529855 Спасибо огромное тебе, анон. У меня, конечно, не такая комплексная игра даже не 3D Но информация полезная. Такой вопрос: если я задам глобальный скрипт и буду туда сохранять данные инвентаря, а потом просто загружать из этого скрипта данные в другой сцене - это сработает?
>>529862 >Просто скачай ассет на инвентарь. Иначе зачем пользоваться движками Хочу сам написать.
>>529872 >если я задам глобальный скрипт и буду туда сохранять данные инвентаря, а потом просто загружать из этого скрипта данные в другой сцене - это сработает? Да, вполне сработает. Более того, для гдскрипта, это пожалуй самый простой и логичный способ реализовать вышеописанную портянку.
>>529876 Вот на шарпе я бы делал по другому. На шарпе доступ к синглтонам неудобный (надо дёргать функции дерева сцен), при этом на шарпе есть свой общепрограммистский способ создавать синглтоны и выглядит это для программиста проще и прозрачнее: в неймспейсе игры задаётся объект, инициализируется через тот же автолоад, далее обращение к его методам идёт через неймспейс. Таким же образом в шарпе искаропки есть несколько простых и удобных способов обмена данными между объектами. То, чего в гдскрипте нет "бай дизайн".
>>529880 Звучит похоже на тот же автолоад. А вообще, мне, как человеку только вкатившемуся в разработку игр есть ли смысл изучять С#? Или можно продолжать жрать GDScreept?
>>529855 Небольшая иллюстрация моего пиздабольства прилагается на пикче. Этот небольшой скриптик, помещаемый в автозагрузку, создаёт в памяти словарь, который прямо на старте знает своё имя, знает позицию игрока, название стартовой локации. Кроме того, в главном цикле у него считается (реальное) время его жизни. Если этот скрипт в автозагрузке, то любая нода, любой скрипт, в любое время может вызывать функцию gws_write() и записывать какие-то свои данные в этот словарь. А при помощи gws_read() читать какие-то данные. Охуенная технология, которая и не снилась двемерам! Теперь мы берём и совмещаем этот скрипт с туториалом про сохранения с официального сайта, только вместо группы "persistent" мы сохраняем один только словарь State и только его!
>>529891 > как в Godot с поддержкой С++? На уровне среды разработки. То есть, чтобы писать на плюсах, тебе надо открыть исходники движка в среде разработки и дописывать туда код, как делал анон, пытавшийся сделать клон майнкрафта на годоте год назад. Второй вариант - нативскрипт, ничем не отличающийся по сути от реализации шарпа, но при этом поддержка шарпа удобно интегрирована в редактор, а с плюсами тебе придется пердолить консольку.
>>529900 >Теперь мы берём и совмещаем этот скрипт с туториалом про сохранения с официального сайта, только вместо группы "persistent" мы сохраняем один только словарь State и только его! То есть, вот так:
>>529904 При таком подходе исчезает необходимость утомительной еботни с выгрузкой объектов, потом с загрузкой их же по путям в файле сохранения. Мы просто перезагружаем всю сцену (или просто загружаем другую, беря значение из State же), а каждая сцена у нас содержит в себе функцию, которая вызывается в _Ready(), которая синхронизирует своё состояние с данными State.
Годаны, как правильнее: 1. В скрипте игрока держать функцию Get_UI() которая возвращает ноду юзеринтерфейса. 2. В скрипте юзеринтерфейса держать функцию Get_Player() которая возвращает ноду игрового персонажа.
>>529908 Так. Протестировал это говно. Вот этим кодом: var dt = OS.get_ticks_msec() for i in range(0, 1000000): gws_write(i, i) dt = (OS.get_ticks_msec() - dt) * 0.001 print("Init time: ", dt)
И вот результаты: Init time: 1.159 Load time: 2.905 Save time: 6.51
Во время этих 6 секунд сохранения, как я и предполагал, годот наглухо виснет. Выходной файл сохранения с миллионом записей весит 15 мегабайт. Результаты эксперимента: Сохранения надо делать как-то иначе. Как минимум сохранять и загружать данные в файл построчно, а не одной блокирующей функцией. Второй вариант, делать через шарп и бинарный сериализатор. Чем сейчас и займусь.
>>530177 > А то в шарпе у меня крошится чот. Лапки, хуле. Знаете что, а у меня и в гдскрипте крошиться начало. var t = Thread.new() t.start(self, "load_game") ЧЯДНТ?
>>530237 Итак, воспроизвёл проект по своим же скринам. Всё так же. Тред крашит приложение при выполнении save_game(), а при load_game() - всё нормально. Какие будут у вас идеи, годаны?
>>530255 Хорошая попытка, но нет. Решил проблему сам. 1. В строке 45 присваивалось значение переменной State, которая из треда не видна. Это нужно было решить либо передачей параметром, либо работой с глобальной переменной. Я решил глобальной, всё равно функционал сохранения проектирую как глобальный. 2. По несчастливому стечению обстоятельств поверх наложилась вторая проблема, которую удалось на удивление быстро отловить: присвоение словаря из миллиона элементов непустому словарю тоже вызывало какой-то сбой, который внутри треда приводил к крашу. Потому... та-дам! Пикрелейтед.
>>530265 Есть. Но работа с тредами - это известное неосиляторство Хуана, о котором даже в доках написано. Вольная цитата: "неблокирующие треды мы не осилили, заботьтесь о блокировках сами".
>>530270 Заебца. Создаётся. Почти минуту (скрин1). И файл на 170 мегабайт. Но есть одно но, при закрытии приложения, оно слегка подвисает, но закрывается без краша и в ошибках пишет скрин2. Я осторожно предполагаю, это из за висящего в памяти словаря на десять(!) миллионов(!!) строк, который уничтожается в модуле list годота. Всё же думаю, такие большие объёмы в реальной игре не встретятся, но нужно быть к этому готовым. А то, знаете ли, сегодня думаешь, что 650 килобайт хватит всем, а завтра говно по штанине потекло.
>>530274 А теперь внимание, ловкость рук и никакого мошенства! После того, как распихиваем всё это барахло по синглтонам, получаем в будущей игре вот такой код:
>>530281 Используя флаг is_job_active, можно выводить в интерфейсе модную анимацию процесса сохранения "не выключайте свою пека, пока видите этот значок".
>>530274 >>530281 >>530474 >>530476 Это из коробки в годоте такое, или ты велосипедируешь? А, вижу. Модифицированный туториал. Чего они там, учат сохранять всё-всё-всё в текстовик? Ну-ну.
>>530536 Что ну ну? Продолжай раз начал. Сериализация? А она что, не блокирует свой тред? Анус ставишь? А если проверю? Подсказка: я уже проверял и майкрософтовский сериализатор вешает тред так же на отличненько, как и годотовский. При этом с ним больше еботни. А в отдельный тред оборачивать все равно придется.
>>530536 >сохранять всё-всё-всё в текстовик Вот какой текстовик выдаёт код с пикч выше. Если вычислишь, в каком месте ебут твою маму - получишь в подарок бесплатную пачку галоперидола.
>>530549 Не знаю, нахуй мне нужна сломанная сериализация, но я точно знаю, что мне не нужна подвисающая на несколько секунд при сохранении или загрузке игра. Вы наслушаетесь баззвордов и носитесь с ними. Сериализация это подготовка членов класса в требуемый формат и запись на диск. Раньше под сериализацией подразумевалось сохранение только классов, сейчас все подряд называют сериализацией. Если я не хочу плодить классы? Если я хочу подготовить и записать на диск просто массив или словарь? Если настройка такой записи занимает один день? Нужна ли мне си-ри-ва-ле-за-цэя?
>>530556 > но я точно знаю, что мне не нужна подвисающая на несколько секунд при сохранении или загрузке игра. А чо, при загрузке/сохранении игры на других движках не подвисают? Точно? А нажми ф5 в какой-нибудь, ты не замечаешь, как все подвисает на пару секунд?
>>530557 Подвисали игры где-то до конца нулевых, потом видимо ААА-игроделы научились делать: >>530474 >"не выключайте свою пека, пока видите этот значок"
>>530558 >потом видимо ААА-игроделы научились делать Чекпоинты. Всего пару байт записать, на каком чекпоинте сохранился и сколько у тебя было патронов.
>>530565 Почему же после загрузки чекпоинта восстанавливаются не только позиция и патроны, а ещё и все недобитые враги, несобранные картины, неоткрытые вышки, и т.д.?
>>530567 >все недобитые враги Это не везде так. Могут и сброситься в начальное состояние. >несобранные картины, неоткрытые вышки База данных. При открывании меняется всего 1 байт - флаг. Кстати врагов можно так же сделать. Их будет в среднем штук 20 на обозримом между чекпоинтами участке. Хранить тольк их хитпоинты, тоже байт. Все будет мгновенно сохраняться.
>>530596 Чекпоинты хорошая штука, но я не уверен, что они подойдут для РПГ. Я нацелен именно на РПГ. А вообще, о разделении сохранений на бд мира и настройки игрока я давно подумывал.8
>>530556 >> сейчас все подряд называют сериализацией Вот, вот. Еще и пихают в нее все подряд. Нет бы данные просто сохранят, нет, будем дамп памяти всей игры пихать, чтобы ускорить загрузку на две секунды.
>>530690 >будем дамп памяти всей игры пихать Ну эт уже маршаллинг какой-то. Впрочем, вчера перед сном я размышлял об идеальном сохранении, взвешивал все за и против и пришёл к выводу, что не всё так однозначно. Тот метод, что описывался выше, когда сцены просто, без задней мысли загружаются и опрашивают состояние игрового мира на предмет своих переменных - он тоже не идеален. Если сцены будут большими локациями, которые сами по себе долго грузятся, то такой подход будет накладным, когда игрок, скажем, босса сражает по хардкору, выходя из сохранения каждые 5 минут - при этом он еще минуту смотрит на экран загрузки локации босса. Таким образом, нужно проработать сбалансированную систему, в которой будут сочетаться загрузка данных, загрузка объектов (сериализация) и загрузка дампов состояния объектов (маршаллинг). Причём, это не зависит от движка. Это общая идея.
>>530777 Так дамп состояния игры - это слепок того, что сейчас есть в оперативке. Там вычленять отдельные объекты и потом их возвращать - еще дольше. Вариантов всегда два на выбор - это либо бд в каком-то виде, либо состояние твоего процесса (игры), скопированное из оперативки в файл и потом просто загружающееся оттуда обратно как есть. Первый вариант - это экономия места, но удлинение времени загрузки. Второе - наоборот. И при методе с дампами уже строго указываем в минималках игры, что требуется столько-то оперативки. И сцены, что дампаем, конструируем, чтобы гарантировано не превышали его.
>>530835 Я понял. В таком случае можно применить вот какое решение. Сцена не выгружается, она просто расставляет интерактивные объекты по местам, читая данные об этом из загруженного состояния мира. Как шахматные фигуры на доске. Отсутствующие предметы создаются и рекурсивно проверяют свои дочерние предметы, например, инвентарь. Насколько это будет быстро?
>>530836 Это и будет обычной загрузкой сериализованных данных из бд. Скорость для всех игр всех жанров приемлимая. Игроки почти никто не задрачивает сейф-лоад, чтобы на паре секунд более долгой загрузки заморачиваться, если она вообще достигнет таких величин. А рекурсивная загрузка - да, можно. Ты загружаешь сначала данные игрока и данные, которые необходимы ему в ближайшие несколько секунд. Какие именно это будут данные можно вписывать в сам сейв во время сохранения. Но тут еще надо дописать модуль, который будет это анализировать. Поэтому проще сразу просто все данные сохранить в бд, потом все считать из бд и уже стартануть игру. На это лучше пока не тратить время, потом уже когда игру напишешь, если вдруг именно это будет не устраивать, то потом легко дописать среди прочего рефакторинга.
Годот, конечно, прикольный, но я сегодня охуел от того, что нельзя делать слайсы у массивов. Плюс конструкция not in не поддерживется, приходится делать not(1 in [1] )
>>531389 >Почему движок реально годный , а ни одной нормальной игры нет? Вечная проблема опенсурса: он всегда догоняющий. В большинстве случаев опенсурс - это реализация того, что уже есть на рынке. Вот и здесь, Вася из 6 б просто возьмет Unity для своей игры про срущих пингвинов. Просто потому, что Unity появился раньше, успел продвинуться, на нем сделали несколько грамких проектов. Большинство возьмет то, что у всех на слуху, и будут им пользоваться, распространяя эту заразу по цепочке
>>531392 >Вечная проблема опенсурса: он всегда догоняющий. Двачую. Вчера поставил убунту на свою пека 4 ядра 8 гигов, ПЕЧ1060. И таки шо ви думаете? В фаерфоксе тормозит плавная прокрутка. Шёл 2018 год.
>>531389 Потому что он годный только для прототипирования. Возможно также для мобилок, так как он под них затачивается авторами, но я этой парашей не интересуюсь, так что не могу достоверно сказать. Для всего остального же там всюду торчат квадратные колёса и палки в спицах: - Нет экспорта на консоли искаропки, даже платного. - Нет полноценных рендер таргетов для ПК, даже опенгл. А вшивый глес умудряется тормозить на топовых пк в простеньких платформерах. - Опенсорс на словах, а на деле этого опенсорса для акнеблядей не существует. Всё заточено под прыщеблядикс, причём авторы очень любят альтернативные тулсеты, неизвестные рядовому программисту. Настроить среду для компилирования Годо - та ещё задача. - Побочный эффект опенсорса - никто не чинит баги, даже критические, вместо этого большую часть времени занимаются добавлением новых никому нахуй не нужных фич. Забагованных, естественно.
Да, и на данный момент Годо как продакшн-движка опять не существует. Ветка 3.0 сломана и недоделана, в стабильную фазу войдёт хорошо если через два года. А ветку 2.1 тоже сломали последними апдейтами и, похоже, забросили.
Итого - движок вроде и есть, но если рассматривать его со стороны выпуска игр для конечного пользователя, то его нет, если только ты не совсем простое дерьмо делаешь, или мобилкодерьмо. Но для прототипирования и быстрых игр для джемов на пару дней - лучше нету. Саму концепцию и архитектуру движка я считаю очень удачной. Но блядь, как обычно, реализация подводит.
>>531422 >Советую установить юнити >>531393 >unity это лучший движок >>531399 >Юнити - годот => 5:0 Семен, задрал пиарить Унити Вот станет он опенсурсным - тогда можно будет попробовать. А пока из движков есть только Годо
>>531421 > Возможно также для мобилок, так как он под них затачивается авторами У меня на вин7 все с первого раза завелось, под плюсы и вижуал студию. Но у меня 20 лет оптыа геймдева. Впердюлил сконс в питон, потом вот этот скрипт доработал https://gist.github.com/Calinou/6cd0c45f994b31f281eec66f0eeb401d >Побочный эффект опенсорса - никто не чинит баги, даже критические, вместо этого большую часть времени занимаются добавлением новых никому нахуй не нужных фич. Двачую. До сих пор охуеваю, уже Хуан объявил заморозку фич в альфе 3.1, только фиксы, но чу, все новости и коммиты начинаются со слов Мы добавили хуйнянейм.
>>531422 Видел я ваше юнити(когда моды на КСП делал), больше не хочу. Концептуально юнити сосёт с проглотом у Годо. Да и реализация там не сильно лучше.
>>531421 Ещё вдогонку - вот я пишу на Годо довольно крупную игру, уже год. Но в последнее время я реально задумываюсь о том, чтобы переписать всё нахуй на свой движок с человеческим рендером, оставив архитектуру и использовать в дальнейшем Годо просто как редактор сцен.
>>531448 Классно. >скачайте неизвестно какую версию мастер ветки >скачайте какую то приблуду для гита неизвестно для каких платформ >которая качнет неизвестно откуда и какие блобы >запустите то что получится но не факт что оно заработает
>>531479 >А чем обычное ECS не подходит) Тем, что его - нет. >>531480 >Просто наследуй все от ноды. От ноды будут наследоваться системы. Компоненты и сущности будут наследоваться от потомков ноды.
А это мысль, нужно создать персонажа Петуха-Энтитуха, страдающего преждевременной кокоптимизацией. Чтобы он такой кокококококо внимательно в экран смотрит, задумчиво клювом водит, тут SSE-интринсик впендюрил, сразу радостное КУДАААААх , там кучу бойлерплейта написал, такой получил +5 фпс и сидит довольный, кукарекает и тут такое оказывается, что он всё это время сидел в питушином углу, его блатные сокамерники уже три игры на объектах с наследованием написали и зашиппили, а разъяренный издатель в конце этой истории засовывает ему банку с абстрактной фабрикой в анус.
>>531544 В курсе, что если в одном фрейме вызвать два new Random()'а, то оба выдадут одинаковый NextDouble()? Надо одним инстансом Random'а пользоваться
>>531545 В курсе. Потому что в одном фрейме у них будет одинаковый seed, который в конструкторе по умолчанию берется из таймштампа. Я уже сталкивался с этой проблемой в GenerateSpawnPoint() она сейчас уже переписана на один инстанс, заскриншотить забыл.
>>531662 Ну а что, в Mono с тех пор появились какие-нибудь убер-оптимизации в корне меняющие картину? В новых замерах добавили C# .NET Core, он пошустрее будет, но всё равно не быстрее Джавы. К тому же разрабы Годота предпочли его проигнорировать (выбрав Mono), поэтому в этом треде нет смысла про него говорить.
Продолжаем велосипедить. Вот попил с утра чайку и навелосипедил процедурную генерацию игрового мира с возможностью загрузки разных кусочков ландшафта. Ваши замечания и предложения?
>>531687 Код пока что абстрактный, не удивляйтесь, почему целых два словаря. По гениальной кириллозадумке, в сохраняемом словаре хранятся только индексы и координаты, а в действующем словаре хранятся координаты и инстансы. Таким образом, для выгрузки блока достаточно выгрузить инстанс из словаря и удалить запись, для повторной загрузки достаточно чекнуть индекс по ключу-координатам и снова загрудить блок с полученным индексом. Вместо add_child() будет set_chunk(index, parent_node) внутри которого для parent_node будет уже вызываться add_child(). Таким образом можно будет строить дерево сцены любого уровня вложенности, который опять же можно будет сохранять в файл в виде простого представления, например, как строка с разделителем-слешем, или как строковое имя ноды, при этом несложно реализовать отложенную загрузку: нода-А требует в качестве родителя ноду-Б, но нода-Б ещё не загружена, нода-А тоже не загружается и записывает себя во второй проход. Первый проход, при наличии хотя бы одной записи, рекурсивно вызывает сам себя.
Godot ECS! Hell yeah! А вы думали я тут с вами шуточки шучу? Завтра будем пилить сообщения и системы. В результате нехитрого кода на скриншоте, в запущенной игре появляется полноценно управляемый персонаж. Компоненты: боди - кинематика, контроллер - просто нода с обработкой инпута в процессе, спрайт - годофейс. Самое интересное - аргументы. При задании парента компонент создаётся как потомок указанного парента. При задании экзека - происходит вызов функции, если она имеется у компонента. Это нужно, чтобы, например, спрайт следовал за телом, являясь его потомком.
>>531734 Соответственно, код из первого скрина выносится в ComponentFactory, снабжаясь дополнительным аргументом Entity или eName. Экзеки вырезаются нахуй и заменяются подписками на сообщения.
>>531704 Даже с JIT, работающая хрень, написанная под виртуальную машину, запущенная на реальной машине. Никогда физически не приблизится к скорости работы с той хрень, что работает просто на физической машине.
>>531744 Давно уже известно (и никогда не было секретом), что преимущество языков на виртуальной машине (или фреймворке каком) не в скорости. Дальше сам.
>>531679 >AOT-компиляция >помимо открытости исходов .NET Core тоже открытый. И тоже имеет решение для AOT, а именно CoreRT. >главная причина >почему >в годоте Ну, Хуан приводил аргументы, что Mono легче интегрируется и портируется. Кроме того, там же высказывались, что .NET Core ещё пока молод и незрел, но в будущем его могут задействовать. >>531704 benchmarksgame же. Довольно известный набор микробенчмарков.
Опять упёрся в производительность. Если генерировать вокруг себя 16х16 чанков или более, начинаются ощутимые просадки фпс. Жизнь боль. Причём встроенный счётчик фпс показывает ложь, правду показывает только профайлер.
>>531767 Как ты находишь, куда ставить новые чанки? Простой перебор всех возможных мест очень сильно сказывается на производительности. Как вариант - разбивай спавн по фреймам, чтобы более Х чанков за фрейм не спавнилось.
Столкнулся с проблемой. При вызове из гдскрипта публичных свойств объекта на сишарпе, они не устанавливаются. Код простейший. Сделай ноду на сишарпе, добавь публичное свойство с сеттером. Создай ноду на гдскрипте, любым способом добавь к ней ноду на сишарпе. Попробуй задать у нее свойство.
>сайт Godot >REQUIREMENTS: OpenGL ES 3.0 compatible hardware >смотрю у себя >OpenGL Version: 3.2 >скачиваю >ставлю >Fatal error >Your system's graphic drivers seem not to support OpenGL 3.3
>>532091 Ага, дрова 2010-го. Залез на сайт Радеона, там есть за 2015-й. Поставил. После перезагрузки черный экран. Пришлось откатываться восстановлением. Охуенные дрова, блябуду.
>>532090 Если у тебя интегрированная видюха от Интел -- можно попробовать Линукс -- там оно наверняка запустится без проблем. Вообще, дрова интеловских интеграшек там по уровню поддержки OpenGL как правило опережают виндовые. Например: >Sandy Bridge HD 3000 and 2000 Linux:OpenGL 3.3 Windows:OpenGL 3.1 Недаром Intel -- контрибьютор номер один в ядро Linux.
>>532111 И вообще, на линуксе, по крайней мере в производных от дебиана дистрибах, искаропки ставится свободный драйвер с программной поддержкой всего-всего. Годот хоть и медленно, но работает.
>>532443 Конечно, в опенсурсе сейчас тренд такой. Принять Code of Conduct, потом заставить переименовывать master-slave в primary-replica, запретить файлы настроек whitelist и blacklist,
Скидка 88% на CopperCube 5 Оказывается, есть еще более элитный движок. https://gcup.ru/news/skidka_88_na_coppercube_5/2018-10-19-8238 фьючелист такой же как у годота: - идеально подходит для бомжей - игор на нем и не будет - можно делать 3д - можно делать качественные презентации - мало весит - хуй тебе, а не ассет стор - обрабатывает ввод с клавиатуры - можно засирать все дискачи вскукареками о своем любимом движке Но есть и эксклюзивное преимущество: - можно его включить и все стимодрузяшки будут видеть, что ты игродел - можно засирать все дискачи вскукареками о своем любимом движке-который-не-годот
>>533992 Приветствую новичков треда! Нам очень важно, что Вы присоединились к нам. Обесняю: два треда подряд один местный юродивый кривлялся, что игры на годоте не запускаются на нищевстройках пека от интел и нищемобилах, на которых нищуки не покупают игоры, а воруют на 4пда. Сначала ему пытались объяснить, что глес2 устарел и не нужен, но быстро поняли, что он может только кривляться и паясничать.
>>533997 Как видишь, у него запустилось, но не работает. Это ничем не лучше. >юродивый Юродивый тут только ОП треда, у которого Годот это второе пришествие Иисуса Христа, а то что не работает это просто ненастроено, и вообще юнити в тапки насрали. >>533992 Так ты подробности давай. Лагает на пустом проекте с одним кубом? С прыгающей демкой Хуана? С каким-то твоим проектом на 100500 спрайтов? 2д, 3д?
>>533997 >>533999 У меня это была версия до той самой демки, уже и не вспомню номер. А фантомные тормоза даже в самой примитивной 2d-сцене с 3.5 спрайтами. Думаю, не все даже внимание обратят на такие закидоны движка, а меня аж прям коробит.
>>534000 Хуан повёлся на нытьё вот таких вот нищуков, и вместо того, чтобы довести до ума движок (те же фантомные подтормаживания побороть, я их тоже видел, а ещё зэтфайтинг в тайлмапах в 2д (в двадэ, Карл! зэтфайтинг!), начал пилить поддержку глес2. Позор ему. Да вы посмотрите на этого Хуана. Типичный омежка, не умеющий сказать - нет.
>>534059 Я на месте Хуана вообще бы заморозил разработку мобильных платформ до полного доведения до ума движка. А уж после того, как годот заработал бы нормально на пеках, только тогда перешел бы к реализации мобильных фич. Нужен мобильный гейминг - юзайте ветку 2.1. и ниибёт.
https://github.com/godotengine/godot/issues/937 >Integrate javascript support as scripting language >I'd rather programmers learn GDScript and then have a good experience, than use something they know and then have a bad experience, so probably never going to happen. Сказочный долбоеб. Зачем его только из больницы выпустили?
>>534135 >ChakraCore and JavaScriptCore both perform superfast pure js calculations (50-200 times faster then GDScript) >But using the bridge to C++ is still very slow (10-30 times slower then GDScript)
>>534312 Я с дивана сейчас скажу, сильно не пинайте, но на мой взгляд, у гд-скрипта вообще моста нет, я со своего дивана предполагаю, что он интерпретируется при исполнении программы-проекта. А в самом движке реализован парсер, который преобразует операторы гд-скрипта в заранее написанные на плюсах функции. В качестве пруфа, в годоте возможен такой код: var s = GDScript.new () s.set_source_code ("extends Button\nfunc _pressed():\n\tget_node(\"/root/Control\").choice(" + String (c) + ")") s.reload () b.set_script (s)
То есть, для мимокроков поясню, на лету создаётся скрипт и присоединяется к на лету создаваемой кнопке. То есть, на этапе компиляции проекта скрипт не существует, как скрипт. А только как строковая константа. Таким образом, чтобы добиться сравнимой производительности, следует искать/делать не мост/враппер между сторонним интерпретатором джава-скрипта, а искать/делать сам интерпретатор и встраивать его в годот на уровне компиляции самого годота.
>>534378 Примерно так и есть, но свой интерпретатор пилить это задачка та еще. В юнити пытались и получили обрезок джаваскрипта, которым никто не пользуется.
Каковы мои шансы выучить ГДСкрипт, если я: -Распиздяй -Дрочу каждый день -Ранее не программировал, кроме как пару раз на C#, с уроков на гикбрейнс и всё уже давно забыл.
>>534670 >А что можно делать игры не уча какой-либо язык программирования? Ага. Вот например, недавно в веге всплыл олдфажный Bioware Aurora Toolset for Neverwinter Nights - кодить не надо, только диалоги пиши и домики деревянные по карте расставляй, вся остальная игора уже сделана за тебя. Прекрасный вариант для начинающего кирилла осознать, что программирование в создании игры - это от силы 5-10% трудозатрат.
>>534677 >Bioware Aurora Toolset for Neverwinter Nights Не, совсем не то. Там за пределы однотипной ммо рпг выйти нельзя и не сделать какой-нибудь шутан.
>>534680 Это само собой, что в конструкторе модов к уже готовой игре, можно сделать только можы в том же жанре. Но суть ты не уловил, в шутанах не меньше художественной работы, чем в псевдоизометрической эрпогэ. А учитывая современные требования к графону, даже больше. Таким образом у тебя код игровой логики (рейкаст на цель, подсчёт урона, отдельный подсчёт на хедшоты, загрузка/выгрузка уровней, запись параметров в сейв) займёт у тебя гораздо меньше времени, чем моделинг/скульптинг, и настройка постобработки ползунками и мышкой.
>>534682 От жанра зависит. В пошаговой эропеге ты будешь кодить половину времени, в вн будешь писать сценарий 90% времени, в клоне дварф фортресса - кодить 99% времени.
>>534684 Без обид, анон, но не соглашусь. Объём кодинга зависит напрямую от проектирования приложения. Если всё правильно спроектировать - реализация пишется за несколько дней. Конечно если писать по наитию (как я писал бомбермема) выйдет так, что к середине реализации выяснится, что выбранный способ хранения данных не подходит для реализации половины фич, о которых вспомнил по пути. И это не зависит от жанра. Когда есть правильно расписанный диздок, дварф фортресс не отличается от пошагового эрпогэ. Даже если ты всё отрисовываешь псевдографикой.
>>534748 Без обид, анон, но ты сейчас хуйню полную спизданул. Головой сам подумай, как тебе правильно расписанный диздок сделает объём кодинга трёх механик равным объёму кодинга трёх сотен механик?
>>534858 > не может решить задачу по проектированию игровых механик без бойлерплейта и оверинжиниринга @ > считает дебилом того кто может (и мог 15 лет назад)
Эталонный двачной дурачок-обсиратель, аж печать ставить негде.
>>534859 Я понимаю, что ты выучил новые умные слова и тебе не терпится их применить без повода, но они не сделают тебя умнее. Я вроде довольно просто и ясно общаюсь обычно, но, похоже, у некоторых не хватает интеллекта даже на восприятие простых и очевидных фраз.
>>534862 А что у тебя не бьется на подзадачи? Мне даже чот в голову не приходит такое, что нельзя было бы разбить на более мелкие части, которые можно писать и тестировать по отдельности.
>>534943 Ну например глубоко оптимизированный цикл рассчётов массива структур, оптимизированных под процессорный кэш. Даже если в нём производится много разных и сложных рассчётов, ты не сможешь вынести их в отдельные функции, например, потому что у тебя тогда пойдёт по пизде оптимизация - засрутся очереди вызовов, прогнозирование процессорных инструкций станет вести себя непредсказуемо, да и вообще хорошо, если оно простым джампом разрешится, а иначе вызов процедуры у тебя жрать будет больше, чем сама процедура. Если это в узком месте случится, то это тебе производительность в разы просадит. мимокрок
>>534960 Если ты это написал с мыслью о GDScript или, боже упаси, Visual Script, то я даже не знаю, что тебе ответить. А если имелись в виду кресты или шарп, то там есть такая прекрасная штука, как inline.
>>535196 >Сейчас каждый второй движок умеет экспорт в WebAssembly, так что твоя фраза теряет смысл. Юнити умеет в WebAssembly? Иди запусти тогда Rust в браузере, дебил.
>>535218 >>535215 Вообще да, изначально собирался пилить что-то типа хоррора. А скорее даже, что-то типа лавкрафтовщины. Жуткая НЁХ в глубоких подземельях воздействует на разумы и тела людей. Потом ты такой открываешь дверь ударом ноги и перед тобой ночь, пылающий огнём пожарищ город, толпы мутантов и нужно продержаться, пока не настанет рассвет.
>>524599 >В этом треде предлагаю лампово собираться в дружное комьюнити вокруг годо, чтобы обмениваться идеями, подсказками, сниппетами, и запилить вместе какую-то простенькую игру. Ну, как собрались? Запилили?
Знатоки godot подскажите. Можно как то задать толщину компоненту sprite3d. Или может быть как то программно создать меш на основе картинки, так что бы при сменен картинки менялся меш?
Комп тянет. Просто задумка такая, есть картинка и её нужно задать объём в ширину, причём нужно сделать так что при смене картинки объём тоже изменялся. Может я конечно это не правильно делаю.
Хочу предупредить любителей шарпа о найденном мною баге в редакторе 3.0.6. Если добавлять сигнал через редактор, то связанная с ним функция добавляется без задней мысли в конец файла, а не в конец класса, как должно быть. Поэтому надо вручную переставить закрывающую класс скобачку. Для профи это не проблема, а новичка может ввести в ступор, почему не работает?
>>536036 >3д игру на годоте >как быстрее всего вкатиться??? Лучше катись в УЕ4. Годот для двадэ. Либо жди вместе с нами, пока допилят до ума. Главное в юнити не вкатывайся - параша та ещё.
>>536067 Если денег не жалко. Валяй. Никто тебе не запрещает. Но не рекомендую. Уровень юнити - уровень бесплатных приложений. Стыдно продавать подобный продукт. УЕЧ - достоин своих денег. Юнити - нет.
>>536076 Смотрел туториалы на ютубе. Читал документацию. Много читал. На инглише. Ну и вообще, до вката в игрострой прошлой зимой, я программировал, поэтому в кодинге вообще не новичок, знаю ООП, знаком с парой-тройкой паттернов, в частности, понимаю суть ECS и т.д.
>>524597 (OP) Сап. Нужно сделать очень маленькое приложение под Android/iOS. Когда я сделал билд с пустым проектом на Unity, он весил около 40 мегабайт. Сколько, приблизительно, будет весить пустой билд на Godot?
>>536129 Как и везде. Самый быстрый способ обучения - обучение с живым преподавателем. В условиях сычевальни, самый ближайший аналог живого преподавателя - туториалы на ютубе. Ты смотришь, что объясняет тебе живой человек и обязательно повторяешь на практике. Никакого копипаста из "ссылок в описании", ставь на паузу и перепечатывай код с экрана в редактор. Это очень важно. Пока ты набираешь код руками, активируется моторная память, ты запоминаешь как набирать код. Это касается не только кода, но и работы с пикчами для спрайтов и даже с мешами для тридэ. Поэтому всю настройку проекта тоже повторяй самостоятельно, импорт пикч, например, настройку анимаций и т.п. После того, как ты поывал на "лекции", ты обращаешься к учебникам, в которых закрепляешь полученные знания. И добавляешь новых. Вместо учебников у нас мануалы и документация.
Пиздец что за хуйня нахуя столько типов нод делать. И везде главное одно и то же - персонажа игрока,например - делают по-разному: то 2днода в корне, то 2ареа, то спрайт, то ещё какая-нибудь хуйня
>>536036-кирилл врывается в тред Короче поковырялся немного в годоте, почитал доки, и оказывается охуеть как там всё просто! Какие же тут дауны сидят, если считают что годот не для 3д и за 9 месяцев смогли запилить одну демо-парашу. Ждите меня на четвертый день с востока, скоро сделаю убийцу всех ААА-прожектов.
>>527061 >>536257 Во французо-курсе наконец родили 12 главу, которой не хватало. Заодно половину курса Ben'a Tristem'а с udemy залил, вторую докину через пару дней.
>>524597 (OP) Правильно я понимаю, что в самом годоте скелетную анимацию для 3д моделей создавать нельзя? Только экспортировать из блендера каждый раз заново?
>>536880 Как ты собрался анимировать что-то в кастрированном редакторе годота? Без нормального инструментария, автоматизации, которая есть в блендере, это проблематично.
>>537053 да вы заебали нахуй, я только сегодня это дерьмо скачал, сука спрашиваю блядь у вас как сделать шо б не лагало, нахуй вы такие трудные, а ебать!?
>>537174 >как сконвертить псевдопитон в ноды? Что ты подразумеваешь? Выскажись внятно. Псевдопитон это гдскрипт? Что значит сконвертить в ноду? extends "res://my_node.gd" так штоле?
>>537182 Ты должен явно указывать, о каких нодах в годоте речь. Тут Хуан не продумал, да. Значит если вынуть хуй из твоего рта, вопрос будет звучать так: Как сконвертировать гдскрипт в вижуал скрипт? Ответ - Никак. Следующий.
Поясните про обработку сигналов следующее. Предположим, я захочу создать ноду-слушателя, которая будет собирать все сигналы от других нод. Для примера: игрок встаёт на какую-нибудь Aread2D, где выскакивает диалоговое окно. Если у меня есть такая нода-слушатель, то эта Area2D сигнал отправляет на неё, а уже внутри слушателя происходит отправка нужного сигнала другим нодам (заблокировать управление игроку, открыть окно с диалогом и так далее). Как вы считаете, будет ли это намного удобнее? Сильно ли больше нагрузки будет? Все-таки сигналов больше становится.
>>537510 >будет ли это намного удобнее? Вопрос удобства сильно субъективен. Кому-то будет удобно, кому-то нет. Годот позволяет это сделать. Если тебе это удобно - делай. >Сильно ли больше нагрузки будет? Нагрузка от лишнего десятка сигналов всё еще будет ниже нагрузки от геометрии и физики. Не там ты оптимизацию ищешь.
>>537519 Ого, спасибо за ссылку. Я пока разбираюсь больше с движком, чем делаю что-то серьёзное, поэтому мне любая подобная информация пригодится.
Я не планирую делать что-то в 3D или что-то сильно завязанное на физике/геометрии, скорее подобие RPG с видом сверху вниз. Сомневаюсь, что это вообще в целом имеет большую нагрузку на пк. Хотя наговнокодить можно так, что даже такое будет адски тормозить.
>>537530 Норм идея. Постараюсь оказать всю возможную помощь. Я-то сам прокрастинатором оказался, хотя тоже хотел запилить эрпогэ игру мечты. Знаний много познал, а применять - лень.
>>537531 Тогда сразу вопрос задам. Предположим, есть NPC, с которым можно поговорить, нажав на клавишу. То есть герой не должен проходить сквозь NPC, а если к нему вплотную и нажать кнопку, то должен срабатывать какой-то скрипт (вызов диалога, например). С Area2D я разобрался, но она не подходит для того, чтобы не давать игроку двигаться сквозь неё. Какой тип ноды лучше подойдет? Например, тот же StaticBody2D с CollisionShape2D работает хорошо в качестве стены, но можно ли привязать к нему какой-то детект того, что персонаж в него врезался? Можно наверняка к StaticBody приделать дочернюю ноду в виде той же Area, но мне кажется, это какой-то костыль, и есть гораздо проще варианты.
>>537536 >Можно наверняка к StaticBody приделать дочернюю ноду в виде той же Area, но мне кажется, это какой-то костыль, и есть гораздо проще варианты. Мы же о двадэ говорим? Ничего костыльного, это самый оптимальный вариант. НПЦ состоит из RigidBody2D в который вложен CollsionShape2D с кругом радиуса 20 и там же вложена Area2D c кругом радиуса 40. При приближении в зону ареи у персонажа отображается приглашение к диалогу, при приближении до коллижона срабатывает коллизия и игрок упирается в НПЦ. То же самое со стенами. Коллизия, чисто математически - это прикосновение (с опциональным пересечением) двух геометрических тел. При детекте коллизии физические тела посылают сигнал об этом. В годоте для отлова сигнала о коллизиях всё есть. Гугли, читай, изучай.
>>537542 Да, именно о 2D. Я уже пробовал по отдельности все эти ноды, с коллизиями тоже разобрался, просто пока несколько разных по типу нодов вместе в один объект не смешивал и не был уверен, что это оптимальный вариант. Спасибо большое за ответы, пойду разбираться.
>>537542 Даже для тридэ вкладывание Area в состав какого-либо составного объекта (сцены) не является каким-то костылём. Если обратиться к официальным туториалам, там Хуан прямо пишет: "Вы повар. Вы готовите игоры-блюда из нод-продуктов. Комбинируя ноды, вы создаёте желаемое поведение." Но в тридэ свои нюансы. Общеизвестное поведение экшенов - когда приглашение к действию отображается на экране при наличии двух условий 1) вы находитесь рядом с интерактивным объектом, 2) вы смотрите на интерактивный объект. Это поведение реализуется так: У интерактивного объекта есть Area которая сигнализирует о появлении в её поле игрока (как минимум), у игрока есть рейкаст из глаз в направлении прицела мышкой. Когда игрок получает одновременно сигнал от рейкаста, что он смотрит на определённый объект, и сигнал от эрии объекта о том, что игрок поблизости (в поле действия) тогда и только тогда на экране появляется надпись "Е - говорить".
Всё, ваши данные сохранены. Достать их так же просто: func load(file_name): •var save_file = File.new() •if not save_file.file_exists("user://"+file_name): return •save_file.open("user://"+file_name, File.READ) •save_dict = parse_json(save_file.get_string()) •save_file.close()
Естественно, функция ingame_data_filling здесь дана для наглядности, в идеале словарь save_dict должен наполняться данными в процессе игры. Об уникальности ключей в словаре разраб должен побеспокоиться самостоятельно. Итого, функция save - 4 строки, функция load - 5 строк и то за счёт проверки существования файла. Если добавить ещё проверок на дурака (например, проверку, что имя файла содержит только допустимые символы), строк может стать 6-8.
В моей игре (ну, в том подобии игры, что пока есть) есть самая главная нода World, которая является обработчиком всех сигналов от всех типов объектов в годоте очень удобно сделана настройка этих сигналов, кстати. Впрочем, другими движками я не баловался, поэтому не знаю, может, там тоже есть подобное. То есть наступил персонаж на Area2D, она посылает сигнал ноде World, а та уже, например, отрубает движения игрока, делает диалоговое окно видимым, передаёт окну текст, который должен быть. В целом мне это показалось очень удобным, но проблема в том, что есть переходы между уровнями. Нода World пока выглядит так: World CanvasLayer DialogWindow Собственно, она еще в себе держит диалоговое окно. Просто потому, что я не придумал, куда его девать. Может, вместе с камерой в сцену самого игрока запихать?. В процессе запуска игры грузится уровень, который нодой World добавляется в конец списка своих детей. При смене уровня игра удаляет последнюю ноду и добавляет другую ноду-уровень с переопределением всех сигналов. Так вот, хороший ли это вариант смены уровней? И вообще такая организация нод в игре. Я читал про синглтоны и автолоады в годоте, наверно, это было бы удобно, но мне тогда придется переписывать многое. Стоит ли заморачиваться с переписыванием кода, стоит оно того?
Еще вопрос: как сильно влияют на нагрузку коллизии в 2D? Это в мониторинге пункт Collision pairs. Пока я раскидал объекты как попало, поэтому некоторые из них пересекаются, но я особо не заметил никаких проблем при 20+ коллизий. Стоит ли вообще об этом беспокоиться при составлении уровней в целях улучшения производительности?
>>537860 >Стоит ли заморачиваться с переписыванием кода, стоит оно того? Стоит заморачиваться. Ибо уж не думал ли ты, что у тебя с первого раза получится идеальная и удобная архитектура? Рекомендую разделить свою логику на постоянную (например, деньги, патроны и инвентарь игрового персонажа) и уровневую (сам уровень, карта, инвентари врагов). Постоянная логика грузится через автолоад и висит в памяти всегда. Уровневая логика грузится постоянной логикой через change_scene() Так же в постоянной части игры рекомендую организовать логику сохранений и загрузок, юзер-интерфейс, главное меню. И вот еще кое что: Годот предполагает, что ноды в составе сцены автономны, поэтому рекомендуется не писать всю логику в отдельный скрипт, а снабжать ноды небольшими скриптами, которые делают что-то одно, но делают это хорошо.
>>537860 >Стоит ли вообще об этом беспокоиться при составлении уровней в целях улучшения производительности? Стоит. Коллизии это одна из ресурсозатратных задач физических движков. Поэтому о них всегда надо помнить. И оптимизацию начинать с них. Например, вместо разбросанных по уровню отдельных пересекающихся эрий, сделать одну с составной коллижон-формой. Или даже с коллижон-полигоном нужной тебе формы. Если я правильно понял туториалы, движок каким-то хитрым образом оптимизирует все формы внутри одного физик-объекта в одну при инициализации объекта, после чего работает с ней. Но это не точно.
>>537862 >>537864 >что-то одно, но делают это хорошо. Да, я неверно выразился. Главная нода является лишь обработчиком сигналов. Мне показалось не очень удобным иметь кучу сигналов в разных местах, чтобы то же диалоговое окно принимало по десятку за раз из разных мест, которые, в общем-то, выполняют одно и то же: делают окно видимым. Так очень легко запутаться. С моей точки зрения удобно сделать лишь одну ноду-слушателя, которая собирает все сигналы вместе и действует соответственно им. Так, это же диалоговое окно в таком случае будет всегда получать лишь один сигнал.
Именно логика поведения, скажем, врагов, конечно, будет в нодах этих самых врагов.
Хорошо, тогда попробую переписать сегодня всё под автолоад. Уровни пока все равно только тестовые, в них нет ничего, лишь проверить переходы между ними да какие-нибудь механики внутри них, но про коллизии запомню на будущее. Спасибо за советы.
>>537867 >С моей точки зрения удобно сделать лишь одну ноду-слушателя, которая собирает все сигналы вместе и действует соответственно им. Да, это нормально. Вполне укладывается в принцип KISS. >>537868 Что не так?
Еще вопрос по годоту. Есть скрипт в автолоаде, который занимается обработкой сигналов. Есть Area2D, которая при коллижене с игроком отправляет сигнал смены уровня. Скрипт его принимает, но get_tree().change_scene() не работает. Точнее , сцена-то меняется, проблема в другом. Для начала, я не могу её найти в потомках рута. Видима остаётся первая сцена, но второй нет. Или вторая сцена просто заменяет первую, имя ноды остаётся такое же? Даже если так, скрипт после загрузки сцены должен переопределять все сигналы на себя заново, но он не делает это со второй сценой (если предположить, что имя осталось такое же). Как бы ноды-то сами на месте, я вижу их при передвижении по уровню, но в скрипте их не получается найти.
Вопрос: почему так? Как достать вторую сцену? Как перепривязывать сигналы? В целом, я нашел обходной путь. Нужно вручную загружать сцену, создавать её инстанс, удалять предыдущую ноду-сцену и добавлять к руту новую, тогда всё работает, все сигналы нормально переопределяются. Но я не уверен, что это хороший вариант.
>>538021 > отдельный нод, который тебе сцены и меняет Что-то такое я тут и описал: >>537860 Как раз нода World отвечала за смену сцен и была главной сценой в настройках Run проекта. Но мне предложили всё перетащить в автолоад скрипт, который со всем этим будет разбираться. В целом, в World была описана общая механика для всех сцен, поэтому мне показалось уместным практически полностью её скрипт перетащить в синглтон (Да и какая разница, к скрипту в автолоаде все равно при запуске игры создаётся выделенная нода-потомок рута).
>И сцену менять не в потомках рута, а по имени фаила сцены же. Я разные варианты пробовал. Именно функция change_scene(путь_до_сцены) не работает ни в каком варианте. То есть, работает, сцена действительно меняется, но годот не видит эту сцену в качестве ноды. Он видит старую, со всеми её нодами-потомками, а новую отказывается показывать где-либо.
>>538026 >Как раз нода World отвечала за смену сцен и была главной сценой в настройках Run проекта. В ПРЕЛОАД, БЛЯДЬ, ЗАСУНЬ. Она выгрузится при первой смене сцены.
>>538026 >Но мне предложили всё перетащить в автолоад скрипт, который со всем этим будет разбираться. Воу-воу, братиш, притормози! Тебе посоветовали КАК ВАРИАНТ держать в автолоаде глобальный менеджер сцен (самописный). Это не значит, что ты должен бежать и переделывать, как тебе сказали. Предполагалось, что ты сделаешь выводы для себя, подтянешь матчасть, поглядишь примеры и сделаешь, как тебе удобнее.
>>538030 >Ты точно иеархию нодов не попутал? Я проверю это еще раз, все-таки сцена-то грузится, значит, куда-то она прицепилась.
>Только ноды должны видеть это. У тебя есть нод "Годот" чтоле? Я имею в виду скрипт, конечно. Такой ноды нет.
>>538033 Что такое прелоад? Есть АВТОлоад. И я именно это уже и сделал. Из прелоада я вижу только это: http://docs.godotengine.org/en/3.0/classes/class_resourcepreloader.html >>538034 Ну, что сделано, то сделано, в общем-то. Обратно уже не откатишь ничего. Да и к тому же я побежал сначала писать скрипт, а прочитал, как работают синглтоны лишь потом. В итоге я убил пару часов на то, что делается одной кнопкой. Будет мне уроком.
>>538036 >Из прелоада я вижу только это Да, он имел ввиду это. Однако он не упомянул тонкость. Загруженная прелоадом нода не отобразится на экране и в ней не заработают колбэки процессов, пока ты не добавишь её в дерево сцен. В дереве сцен текущей сценой называется последняя сцена в дереве, это можно увидеть, если при включенной отладке открыть "Удалённый" (тупо паруске звучит). Если ты добавишь туда (в крайнюю ноду, повторюсь), то как он и написал, всё предзагруженное выгрузится вместе со сценой, при выполнении get_root().change_scene() Однако! Существует вкуснейшая возможность подгружать ноды и добавлять их в дерево как потомки автозагруженных нод. Ммм, возможности, открывающиеся в этом случае поистине безграничны!
>>538041 Например, самое простое, что приходит на ум: При смене локации на экране остаётся интерфейс, отображается анимация полёта, можно принимать зелья из инвентаря, хилиться, писать смешнявки в чятек, который продолжает висеть на экране. А в это время продолжает грузиться новая локация отдельным потоком. И когда она загрузилась, камера в синглтоновой ноде с анимацией выключается, камера в новой локации включается. Ты бесшовно и без задержек попадаешь в полностью загруженную локацию.
>>538035 Если сцена из run то есть сцена которая запускается при запуске годота сменит сцену - она пропадёт сама при первой же смене. Тебе её в прелоад надо.
Как можно реализовать генерацию 3д-поверхностей? Например у меня изначально есть плоскость и я хочу чтобы на ней рандомно появились какие-нибудь холмы, то есть как-то добавить на неё 4 вершины, одна из которых будет выпирать. Создавать для каждого бугра новый 3д объект слишком много сжирает.
>>538105 Обычно делается триангуляция меша твоей поверхности, и там уже двигаешь вершины как хочешь. Но есть всякие нюансы, с растянувшемися текстурами например. Можешь начать с готового ассета https://godotengine.org/asset-library/asset/231
>>538124 Ты решил не терять выходные и уже обкурился? >не не слышал? Для кого написано, что там есть нюансы? >рандомную И че, бля? Тебе религия запрещает рандомно генерить пиксели?
русский - значит ПРОСТОЙи истинно свободный школьников пока мамка кормит - понты кидают, а вот потомта-аА.. жизнь пальцы загнет обратно и куда надо определит
вся суть кододебильных детей, которые могут только скриптики писать на СИСТЕМНОМ япе, а как дело доходит до реального говна, где код уже хотя бы на полшишечки не выглядит уебанским прожиганием времени, они срут в штанишки и бегут размазывать это по комнате
>>524597 (OP) Работаю над простенькой рпг 3 класса - маг, лучник, воен. 3 расы - хуманы, дворфы, эльфы. Когда на форуме геймдев.сру сообщил, что использую годо, был засран и закидан тапками. Что за предвзятость? тема с гномом жива до сих пор, я охуел
1) Простота.
2) Кроссплатформенность.
3) Бесплатность.
4) 2D.
5) 3D.
А так-же куча различных фишек вроде разветвленной анимации, охуеннейшего дебаггера с графиками и статистикой, подсветка синтаксиса прямо в редакторе с автодополнением, поддержки интернет протоколов и многое другое, о чем ещё не знал ОП первого треда.
С чего начать?
С изучения документации. Если не можешь в инглиш, и даже в гугл-переводчик, то есть варианты русскоязычного перевода части доков на ресурсе конкурирующей фирмы: http://c2community.ru/forum/viewforum.php?f=119
Но вообще, будь мужиком и изучи английский: https://godot.readthedocs.io/en/stable/index.html
Вместе с движком обязательно смотри примеры, там есть все - от платформера до чата. Примеры качаются прямо в движке через свой магазин.
Скачать движок: https://godotengine.org/download/ или http://store.steampowered.com/app/404790/Godot_Engine/
FAQ: https://godot.readthedocs.io/en/stable/about/faq.html
Игры, созданные глобальными кириллами: https://godotengine.org/showcase или https://steamcommunity.com/app/404790/discussions/0/412448792354265655/