![1721195396097.png](https://2ch.life/gd/thumb/963889/17211954161860s.jpg)
Шапка: https://hipolink.me/godothread
Предыдущий: >>958498 (OP)
Архивный: >>954699 (OP)
Можно. Рекурсивно выставляешь овнеров и сохраняешь как пакед сцену в .scn формате: https://docs.godotengine.org/en/stable/classes/class_packedscene.html
Забыл, для сохранения переменных они должны быть @export
Скачай ассет для сохранения/загрузки.
>Перфекционизм только вредит, замедляет.
>Да и потом... В играх "совершенство" субъективно.
Похоже ты ничего не понял из того что я сказал. Вот ты же видишь разницу между альфа версией и релизной версией продукта? Ты же не считаешь что все должны играть в альфы, и автор как только закончил игру может на нее забить потому что все и так будут довольны. Так вот я это и имел в виду. Ты делаешь игрушку, потом делаешь чтобы ей было приятно пользоваться, оборачивая в красивую обертку и делая из нее конфетку. Еще раз напомню о чем идет речь потому что ты путаешься в одном единственном посте теряя нить. Так вот изначально речь шла о том что закончить проект может быть полезным опытом.
Разработка длится практически бесконечно. Багфиксы, портирование под другие платформы, рефакторинг для повышения предсказуемости кода и производительности чтобы запускать на более слабых платформ. И опять опережу твои тупые возражения. Я не предлагаю тебе это все делать. Просто пример того насколько много вещей может нести в себе заканчивание проекта. То что ты высрав полусырой несъедобный блин, пытаешься довести рецепт до стадии где твои блины радуют видом, запахом и вкусом, не делает процесс перфекционизмом.
Думаю пора заканчивать с метафорами и этим постом. А ты иди в свою комнату и хорошенько подумай над своим поведением, я сегодня в тебе сильно разочарован.
>Разработка длится практически бесконечно.
Жиза, кстати. А потом тебя еще гугл плей пнет чтобы ты бежал все обновлял до нового АПИ.
> потому что ты путаешься в одном единственном посте теряя нить
Да не путается он, он просто думает, что его троллят и машинально пропускает абзацы текста.
>сохранить все данные со сцены
>Желательно одной строкой.
Напиши систему сохранения, сделай метод save() и сохраняйся одной строкой - вызывая свой save().
Любые встроенные решения будут иметь недостатки в контексте конкретной игры. Если, конечно, делаешь серьёзную игру, а не очередной ассетфлип, в который всё равно никто серьёзно играть не будет.
В частности, все данные сцены сохранять обычно нет необходимости. Лучше сохранять только то, что ты не можешь восстановить из других данных или файлов.
>высокая задержка рендеринга
>Задержка в районе 27 +-
Что ты имеешь в виду? Задержка (лаг) между вводом игрока и отображением изменений на экране? Или задержка между кадрами (частота кадров)?
>Отключал в. синк - задержка 0.1 и фпс 3к
Попробуй эту настройку:
https://docs.godotengine.org/en/stable/classes/class_projectsettings.html#class-projectsettings-property-application-run-max-fps
>В играх всё ок.
О чём тогда речь? В редакторе нет постоянной частоты кадров, там рендеринг только когда что-то меняется. Можно уменьшить время "сна" для ускорения отклика.
![image.png](https://2ch.life/gd/thumb/963889/17212342447140s.jpg)
Имелась ввиду вот эта задержка рендеринга в оверлее нвидиа, но и в запущенном проекте виделась. В запущеном проекте, не в редакторе. Но, как видишь, я уже порешал всё до задержки в 0.6.
>оверлее нвидиа
Это что-то новое? Никогда не видел.
>порешал всё до задержки в 0.6.
Как порешал-то?
![image.png](https://2ch.life/gd/thumb/963889/17212352923370s.jpg)
>Это что-то новое? Никогда не видел.
Если стоит Nvidia app, то там в настройках включается оверлей. Позволяет не только мониторить инфу, но и делать запись экрана, скриншоты, применять фильтры. Раньше у меня стоял GeForce Experience, там был такой же функционал.
>>64115
>Как порешал-то?
А так же, как ты подсказал - залочил фпс через настройки проекта и в-синк убрал. Я тупанул, что сразу advanced не отобразил.
![470bb58925.jpg](https://2ch.life/gd/thumb/963889/17212503270490s.jpg)
>Вот ты же видишь разницу между альфа версией и релизной версией продукта?
Вижу. Альфа имеет потенциал, а релиз - нет.
>Ты же не считаешь что все должны играть в альфы
Часто играл в альфы и доволен этим. Часто "релиз" только портит всё, а потом разработчик вообще бросает развитие игры, даже баги не фиксит. Как правило, если разработчик игры объявил "релиз" - ему просто надоело быть разработчиком и он решил избавиться от игры, чтобы не требовали обновлений.
>автор как только закончил игру может на нее забить потому что все и так будут довольны.
Большинство инди так и делают, и это раздражает. Особенно когда забивают на проект с нераскрытым потенциалом, но не отдают исходники в опенсурс, чтобы желающие могли продолжить развивать игру. Отдавайте ненужные проекты в оперсурс, чтобы вкладывать свой труд в развитие человечества.
>Просто пример того насколько много вещей может нести в себе заканчивание проекта.
Мало кто этим парится, кидают билд с номером 1.0 и считают дело сделанным. Патчи можно дождаться только если сообщество взбунтуется, а разработчик окажется не самым последним мошенником.
Не часто, но находятся ответственные разработчики, делающие игру на протяжении многих лет. В Steam это называется Early Access, в широком смысле - perpetual beta (бесконечная бета).
Godot, кстати, идеально подходит под это: возможно делать модульные сцены, ресурсы и скрипты, можно распространять обновления отдельными .pck вместо скачивания всех старых ресурсов, можно запускать проект без упаковки ресурсов в .pck-файл, движок позволяет запускать скрипты из внешних файлов. Формируешь комьюнити и кормишь их апдейтами, поддерживаешь моды, пользовательские карты. Релизной версии при этом нет и проект никогда не достигает "законченной" стадии. В идеале опенсурс, чтобы в случае твоей смерти кто-нибудь продолжил.
>>63952
>думает, что его троллят
Нет, он не троллит. Не раз встречал эту категорию разработчиков игр, которые считают достаточным выложить какую-то мелкую игру, сразу переходя к следующей. Такие ещё хвастаются, что "сделали 100 законченных игр за год", а на деле там игры уровня "нажми кнопку чтобы увидеть прикол". Уверяют, что заканчивание таких недоигр даёт бесценный опыт...
Не спорю, для игр уровня Яндекс.Игр такой подход эффективен, чтобы занять больше позиций и иметь суммарно больше просмотров рекламы. Но я хочу делать игру, а не оболочку для рекламного плеера. Поэтому "заканчивать игру за неделю" я не хочу.
![470bb58925.jpg](https://2ch.life/gd/thumb/963889/17212503270490s.jpg)
>Вот ты же видишь разницу между альфа версией и релизной версией продукта?
Вижу. Альфа имеет потенциал, а релиз - нет.
>Ты же не считаешь что все должны играть в альфы
Часто играл в альфы и доволен этим. Часто "релиз" только портит всё, а потом разработчик вообще бросает развитие игры, даже баги не фиксит. Как правило, если разработчик игры объявил "релиз" - ему просто надоело быть разработчиком и он решил избавиться от игры, чтобы не требовали обновлений.
>автор как только закончил игру может на нее забить потому что все и так будут довольны.
Большинство инди так и делают, и это раздражает. Особенно когда забивают на проект с нераскрытым потенциалом, но не отдают исходники в опенсурс, чтобы желающие могли продолжить развивать игру. Отдавайте ненужные проекты в оперсурс, чтобы вкладывать свой труд в развитие человечества.
>Просто пример того насколько много вещей может нести в себе заканчивание проекта.
Мало кто этим парится, кидают билд с номером 1.0 и считают дело сделанным. Патчи можно дождаться только если сообщество взбунтуется, а разработчик окажется не самым последним мошенником.
Не часто, но находятся ответственные разработчики, делающие игру на протяжении многих лет. В Steam это называется Early Access, в широком смысле - perpetual beta (бесконечная бета).
Godot, кстати, идеально подходит под это: возможно делать модульные сцены, ресурсы и скрипты, можно распространять обновления отдельными .pck вместо скачивания всех старых ресурсов, можно запускать проект без упаковки ресурсов в .pck-файл, движок позволяет запускать скрипты из внешних файлов. Формируешь комьюнити и кормишь их апдейтами, поддерживаешь моды, пользовательские карты. Релизной версии при этом нет и проект никогда не достигает "законченной" стадии. В идеале опенсурс, чтобы в случае твоей смерти кто-нибудь продолжил.
>>63952
>думает, что его троллят
Нет, он не троллит. Не раз встречал эту категорию разработчиков игр, которые считают достаточным выложить какую-то мелкую игру, сразу переходя к следующей. Такие ещё хвастаются, что "сделали 100 законченных игр за год", а на деле там игры уровня "нажми кнопку чтобы увидеть прикол". Уверяют, что заканчивание таких недоигр даёт бесценный опыт...
Не спорю, для игр уровня Яндекс.Игр такой подход эффективен, чтобы занять больше позиций и иметь суммарно больше просмотров рекламы. Но я хочу делать игру, а не оболочку для рекламного плеера. Поэтому "заканчивать игру за неделю" я не хочу.
![image.png](https://2ch.life/gd/thumb/963889/17212588973240s.jpg)
>Мало кто этим парится, кидают билд с номером 1.0 и считают дело сделанным
Как ты думаешь почему так? Помогу тебе с ответом - деньги и усталость.
Я занимаюсь поддержкой пары своих библиотек уже 6+ лет и я заебался, т.к. это однообразная хуйня. Это с учетом того, что небольшая прибыль за их использование мне капает периодически.
А теперь представь разработчика игры, который пару лет пилит игру, заебывается, выпускает, зарабатывает на пике N$ а потом поток денег практически иссякает и мотивация вместе с ним. Зачем ему делать патчи\контент для 1.5 пользователей которые больше серьёзных денег не занесут?
> Не часто, но находятся ответственные разработчики
Попробуй стать таким? Выпусти игру, и поддерживай ее сколько сможешь.
Ну и анон тебе пишет правильную мысль - любой продукт нужно релизить (чем раньше дашь его юзерам - тем лучше), только так ты сможешь пройти весь путь и изучить много нового\полезного. К примеру руками попробуешь релизнуться в плеймаркете\аппсторе\стиме и т.д., узнаешь многие подводные камни. Поймешь зачем нужны маркетологи и реклама.
Но если создание игр для тебя просто хобби - никаких проблем, наслаждайся, но тогда и никакого смысла в таких обсуждениях нет.
Лично я пришел к мысли что это очередной прокрастинатор. Только вместо классического "жду годот версии N+1" у него отмазки похитрее - хочу поразить мир выпустив один-единственный идеальный шедевр, и чтобы сразу в цель, в самое сердце успеха. А раз шансы такого стремятся к нулю, то и делать ничего не надо.
>Как ты думаешь почему так?
Неохотно делают ненужную нелюбимую игру.
>Зачем ему делать патчи\контент
Потому что игра - твоё любимое дитя?
Потому что контент привлечёт внимание?
Потому что патчи сделают игру играбельной?
Даже не знаю. Наверное, лучше сделать ассетфлип.
>Попробуй стать таким? Выпусти игру
Ну вот я пытаюсь придумать, что такого сделать... Расширяемого. И чтоб самому нравилось играть. Не, концептов много, но всегда чего-то не хватает.
>сможешь пройти весь путь
Так я хочу идти с годным продуктом, а не тем, что ты предлагаешь (мини-игра за неделю или ассетфлип, созданные исключительно чтоб сделать хоть что-то, соответственно без любви и энтузиазма, абы как).
>зачем нужны маркетологи и реклама
Чтобы впарить ненужное, что никто сам не ищет. Или впарить жалкое подобие уже популярного оригинала.
Делайте то, что вы сами хотите, и игроки найдутся.
How it started:
>Скоро перекат, а я все проекты снова побросал и не знаю, что мне делать и зачем. Но что-то хочется.
How it's going:
>а потом разработчик вообще
>он решил
>Большинство инди
>Мало кто
>окажется не самым последним мошенником
>Не часто, но находятся ответственные
>Формируешь комьюнити и кормишь их апдейтами, поддерживаешь
>при этом нет и проект никогда не достигает
>эту категорию разработчиков
>сразу переходя к следующей
>ещё хвастаются
>а на деле
>Но я
>оболочку для рекламного плеера
извини если слишком жестко. добра тебе.
![image.png](https://2ch.life/gd/thumb/963889/17212936879970s.jpg)
Теперь идите делать игры. На годоте.
Опции Vsync подробно описаны в документации.
> Потому что игра - твоё любимое дитя?
Да, но любовь "проходит". см. Stardew Valley.
> Потому что контент привлечёт внимание?
Нет.
> Потому что патчи сделают игру играбельной?
Да, если есть аудитория.
> Даже не знаю. Наверное, лучше сделать ассетфлип.
Да, а если концепция-демо людям зайдет - найми художника.
> Расширяемого
Поверь мне, пока ты не сделал нихуя, ты даже не представляешь что значит это слово. Как и я не знал что такое масштабирование, пока не ... .
> Так я хочу идти с годным продуктом
Годный он или нет ты узнаешь только после открытой беты, а до этого это все твои влажные фантазии.
> Чтобы впарить ненужное
Нет. Задача маркетолога донести ценность твоего продукта до аудитории, то есть объяснить мне, твоему потенциальному игроку, зачем мне играть в твою игру, какой интересный или уникальный опыт я там получу.
> Делайте то, что вы сами хотите, и игроки найдутся.
Нет, ну или да, смотря считаешь ли ты охуеть какой мизерный шанс на успех достойным твоей попытки.
>>64229
Согласен + отсутствие какого-либо опыта видно.
Хочу пилить хоррор с низкополигональными моделями как в ps1.
За образец взял пикрил.
Поясните те, кто сами модельки пилит в блендере:
Как вы это вообще делаете с такими крупными объектами, как здания?
Вы их целиком в блендере хуярите, после чего засовываете целиком в качестве одной условной сцены?
Или же все это с помощью gridmap делаете?
Алгоритмы Стима расширяют видимость игры, если у неё выходят обновления. Гугл вроде тоже добрее относится к играм, у которых выходят обновления. Платформе выгодно, чтобы игры обновлялись, ведь пользователи любят обновления и платформе нужно заманивать пользователей в себя как можно чаще. Кроме того, обновляющаяся игра вызывает больше доверия, чем какой-то старый выкидыш без патчей.
Таких же "обновляемых" игр там куча, без маркетинга одними патчами нихуя не будет, а именно это пытается рассказать анон-прокрастинатор.
Постоянные обновления лишь предотвращают скатывание игры в поисковой выдаче, но никак не ставят ее на первые места.
Насчет стима я не знаю, но с плеймаркетом и аппстором я работал, там были важны как регулярные обновления так и привлечение трафика.
Гридмап полезен, когда у тебя много повторяющихся компонентов на параллелепипедной сетке, особенно если требуется менять компоненты местами в игре. Достаточно изменить одно число, чтобы переключить компонент на другой или совсем убрать его с сетки. Оптимизация там через мультимеши, т.е. когда один меш отрисовывается несколько раз в разных местах.
В случае с домами гридмап пригодится, если у тебя однотипные строительные блоки на весь город и множество уникальных форм зданий, особенно с возможностью перестройки игроком. Если здания - простые типовые коробки без изменяемости, тогда лучше сделать цельными, упрощёнными мешами.
По интерьерам, мне кажется, гридмап полезен только если у тебя равномерная сетка, но это выглядит как-то неестественно и банально. Также, мультимеш будет рендериться даже если видно маленький кусочек... Однако цельный меш для интерьера вообще лучше не использовать, а разрезать на отдельные меши, иначе фруструм куллинг не заработает как положено.
В общем, нужно смотреть по ситуации, пробовать инструменты самому и смотреть, что подходит твоей задумке лучше всего. Самый простой лоуполи дом состоит из восьми треугольников и одной текстуры независимо от размера, для этого гридмап не нужен. Множество уникальных блоков, кривых углов и т.п. делает гридмапы менее полезными. Процедурная генерация будет легче с гридмапом, но особой сложности в ручном размещении мешей нет, а иногда выгоднее не размещать меши, а склеивать их или модифицировать каким-то образом. Для стилистики Майнкрафта гридмапы не подходят, в Майнкрафте достаточно серьёзные оптимизации чанков. И т.д.
Лучше сначала делай скетчи своих зданий на бумаге или в простой 2D картинке, прежде чем делать в 3D. Потом накидай уровень как будет тебе проще всего. Протестируй и попробуй по-другому, сравни...
Вообще, по ощущениям GridMap похож на VehicleBody: элементарно использовать для чего простого, но чем сложнее твоя задумка, тем больше ограничений ты обнаруживаешь и в итоге пишешь свой велосипед.
Впрочем, ничего удивительного: оба были созданы давно и со времён 3.x вроде не обновлялись. Мало разработчиков, желающих что-то с этим сделать, и боятся поломать старые проекты пользователей.
Короче, не жди чуда и готовься пилить велосипеды.
так вот. это же физика, поэтому я перевел это всё в physics_process, и всё сломалось. крутил константы, особо картины не сделало. я уже читал, в чем разница функций, мол в физиксе всё фиксированно и плавнее чем в процессе обычном не будет. а как физику делать-то? или физикс процесс не предназначен для моих велосипедов и там можно только мувэнслайды всякие запускать? нормальный будет вариант, что я физику всё равно буду реализовывать в обычном процессе, я понимаю что при просадке фпс будет плохо, получается, но если игра маленькая, то пофиг, какие просадки, да? в настройках дефолт физика, графитацию только отключил, чтобы свое делать.
Для мячика никакой код не нужен. Просто настраиваешь в инспекторе и он сам прыгает.
хорошо, посмотрю. а если я сам хочу сделать? то в физикс нельзя? или вообще нельзя или только если очень хороший алгоритм сделан?
То надо использовать kinematic/character body вместо ригид боди - они позволяют все свое кодом написать. Для ригидов есть отдельная функция integrate_forces, которая встраивается в физический движок и позволяет напрямую влиять на них не ломая физику.
Ничего сломаться не должно было, но вот по твоему описанию похоже, что ты не учитываешь delta, не домножаешь на нее.
на нее надо везде домножать? где pos += vel тоже? то есть так: pos += vel * delta?
![Видео 19-07-2024 102932.mp4](https://2ch.life/gd/thumb/963889/17213748155670s.jpg)
968x720, 1:27
Неплохо, твой проект оформляется в игру. Помню как ты тут первые видосы выкладывал - далеко ушел. Но почему бабища по-прежнему скользит как на коньках?
>Щас буду думать как собсна подстегивать игрока к исследованию
Наряды и скиллы - уже хорошо. Я подстегиваю статистикой, показывая "найдено 4/7 секретов". Это легкий способ триггернуть перфекционизм у игрока. В "секретах" может быть что угодно. Диалоги, катсцены, паззлы, кусочки дополнительного сюжета, просто крутые локации. Классический подход - показать на видном месте условную "закрытую дверь" и 7 замков на ней. Пусть идет ищет 7 ключей.
> если очень хороший алгоритм сделан
Если такой алгоритм сделан, то у тебя есть свой собственный физический движок и ты не задаёшь таких вопросов на двачах.
>почему бабища по-прежнему скользит как на коньках?
Из-за двух вещей, скользит тк в её передвижении использовал вектор2 хёрт бист в уроках для топ даун рпг использовал его, ну я повторял, и прост ща как шаблон использую, чтобы не зацикливаться на этом. И из-за анимации создается иллюзия, в прошлом треде анон посоветовал как через анимейшен трии привязать анимации к ползункам, чтобы даже при ходьбе назад анимация взад проигрывалась, очень простая и удобная вещь, но я изначально не по человечески все анимации соединил, поэтому так. По идее поменять всё не прям сложно, мне бы ушло день или два, но чет впадлу переделывать.
>найдено 4/7 секретов
Я думаю так в открытую подсказывать игроку не буду, хочу создать атмосферу ТАЙНЫЫ, поэтому использую для нескольких секретов ->
>показать на видном месте условную "закрытую дверь"
Думаю в основном что-то такое делать буду. А вообще недавно посмотрел всякие ролики по CoD Zombies, и меня эта тема прям зацепила, открывать условные проходы за деньги или специальными предметами, но проблема в том, что за ними что-то должно быть, в мыслях щас есть типа сделать условный ценный предмет, который используется для киберпространсва которое тоже ща в мечтах. Думаю его в 3д платформер оформить, где ты так же открываешь двери и находишь ??????? что-то
![image.png](https://2ch.life/gd/thumb/963889/17213813920770s.jpg)
>Лютое западничество
Кодовое название Самосбор2000, где 2000 это промежуток которым вдохновляюсь. А вообще, я просто пилю свое видение, поэтому лучше воспринимать как игру про подземных людей
>Ничего своего
Никаких ассет флипов, всё сам рисовал и придумываю.
>Тупо подражание всем подряд
Ну извините, придумывать на самом деле очень тяжело, а то что получается придумать, реализовать умения не всегда позволяют
Страдаю, но не терплю. Буду поливать говном всегда уёбищных второсортников, пережёвывающих вторичность.
>Буду поливать говном всегда уёбищных второсортников
Ты заблудился. Годот это движок для уёбищных второсортников. Найди себе другой тред.
Классно получается. Тексты на уровне 13-ти летнего подростка открывшего для себя порнуху в интернете, но в целом здорово выглядит.
![image.png](https://2ch.life/gd/thumb/963889/17213890855420s.jpg)
а может проще сделать олдскульное сохранение в фиксированных точках, как в метроидах и кастлах?
![Видео 19-07-2024 144341.mp4](https://2ch.life/gd/thumb/963889/17213898500530s.jpg)
978x720, 0:35
>Тексты на уровне 13-ти летнего подростка открывшего для себя порнуху в интернете
Тексты это пиздец, то что в видео я придумывал наверн дня 4. Изоляционная жизнь лишила меня речевых навыков
>>64748
>может проще сделать олдскульное сохранение в фиксированных точках
Ну кста, было бы прикольно мне кажется, иммерсивненько даже. Что-то типа если пробегаешь мимо, он сразу автосейвит с прикольной выдвигающейся анимацией, в один из слотов профиля который вначале выбираешь. Наверн что-то такое замучу
А ещё надо сделать олдскульное сохранение в оперативную память: приложение закрыл - прогресс потерял. NESHard такскзть.
>Тексты на уровне 13-ти летнего
Если читать голосом Макса Пэйна, то норм.
https://www.youtube.com/watch?v=f-dnUvsr-D4
На первой пике все варианты что были
Концепт думаю сменить на более роглайково-данженкролевый, вместо той фигни с хитманом что я придумал изначально. Благо, я еще не начал ничего делать с игрой в этом плане, только работал над основами которые при любом концепте нужны. Пока еще думаю и рисую просто
>похожа на толстую карлицу
Так еще лучше. Представь какими эпичными будут битвы с гусями, или удирание от них.
Карлица с трудом протискивает свои круглые формы через узкий проход, выйдя в полуобрушенный зал с лавой. Вслед за ней врывается разоренный гусь и успевает один раз ее гневно ущипнуть клювом за жирный зад, нанося урон -1 к жизни. Ситуация запахла жаренным. Карлица застыла в напряжении, ущипанная ягодица приятно ныла приводя ее в замешательство. Гусь который до этого гонял ее через половину локации, застыл в боевой позе, опустив угрожающе голову, и все медлил нападать. Карлице стало жарко и она расстегнула еще одну пуговку на своей зеленой блузке с броней +2. Гусь который до этого выжидал, метнулся вперед, но всего на одну ячейку. И снова угрожающе застыл, делая этот момент еще более неудобным. Она не в первый раз пересекалась с гусями. Но этот раз был слишком странным. Она больше не понимала к чему все ведет. Они все-таки наконец начнут драться, или же дело идет к сексу...
прошло 29 лет игр все нет
У них на окулус квест в едиторе для андроида, в проектах с VR, запускается вр для десктопа как у настольной версии, и вылетает с ошибкой что вр не найдено. Их попросили чтобы сделали чтобы в андроиде, запускался опен иксар, как в деплоенных проектах под андроид. Но они не торопятся. Жду когда починят. Прикидываю как шустро можно будет разные штуки опробывать на ходу.
Хуя, живой вр девелопер в нашем итт. Потрогал тебя.
>проектах с VR
>они не торопятся
Хайп спал и ВР оказался снова никому не нужен, ибо реальных достижений с 90-х как не было, так и нет.
![godotsoftbody.gif](https://2ch.life/gd/thumb/963889/17214917918900s.jpg)
>чтобы мячик отскакивал от земли при падении, словно резиновый
Велосипед нужен только если ты хочешь сделать физику мягкого тела, но есть готовые ассеты:
https://github.com/appsinacup/godot-softbody2d
Для мячика с отскоками без физики мягких тел достаточно простому RigidBody3D задать материал и увеличить в этом материале параметр bounce:
https://docs.godotengine.org/en/stable/classes/class_physicsmaterial.html#class-physicsmaterial-property-bounce
Также на движение влияет damping, для бесконечных отскоков можно установить linear_damp = 0 и ещё linear_damp_mode = DAMP_MODE_REPLACE:
https://docs.godotengine.org/en/stable/classes/class_rigidbody2d.html#class-rigidbody2d-property-linear-damp
> Так, а в чём проблема?
В дурацкой привычке неуверенного в себе анончика оглядываться на международные стандарты красоты.
Не, из каких-то соцсетей притащил. Не помню уже.
Так толстая карлица и есть международный стандарт
![2024-07-22 03-53-07.mp4](https://2ch.life/gd/thumb/963889/17216063526380s.jpg)
1920x1080, 0:04
Сделай просто какой-то дизер или прозрачный градиент. Эта анимация слишком отвлекает и если на границе будет какой-то монстр, то ещё и будет разрдажать.
Единственное что мне пришло в голову это текстуру для шара в два раза больше чем экран и с дыркой посередине.
Есть ли другие идеи как это сделать? Типа маску для слоя как фотошопе может быть?
Не уточнил что у меня 2д.
-слой с картинкой
-черный слой
-двигающаяся дырка в черном слое, сквозь которую видно картинку
clip children делает то же самое что и представленный тобой шейдер, вырезает все дочерние спрайты по силуэту своего спрайта. Если ему в дети поставить большое изображение которое мы должны видеть сквозь дырку, и скрипт который будет минусовать вектор координат шарика из вектора координат изображения, чтобы постоянно держать изображение в глобальной системе координат, а не двигаться вместе с шариком который является ее родителем. Я об этом тоже подумал, но не знаю какой вариант уродливее, плюс тут еще скрипт с вычислениями. Тот вариант с 3д выглядит элегантно. Я о чем-то подобном и подумал, чтобы можно спроецировать одну текстуру на другую, или вычесть одну из другой.
Все-равно спасибо за идеи.
>в дети поставить большое изображение которое мы должны видеть сквозь дырку, и скрипт который будет минусовать вектор координат шарика из вектора координат изображения, чтобы постоянно держать изображение в глобальной системе координат, а не двигаться вместе с шариком который является ее родителем.
Хитрый финт, охуенно.
По производительности предположу так:
Клип самый быстрый.
Потом 2д шейдер.
Потом 3д омнилайт.
Так и сделал.
-rigid_body_ball
--sprite_ball с включенной clip children
---sprite_background со скриптом _process(): global_position = Vector2.ZERO
Скрипт каждый цикл сбрасывает позицию.
Я еще попробовал через канвас и контрол разорвать наследственность трансформации от родителей. Но оно конечно же не сработало
>используется относительный nodepath
NodePath - это устаревший (в 4.0) метод экспорта нод, сегодня предпочтительнее делать вот так:
>@export var body: RidigBody3D
Раньше (3.x) приходилось делать так:
>export var body_path: NodePath
>onready var body: RigidBody = get_node(body_path)
Дальше тебе body_path не нужен, ты пользуешься исключительно переменной body, которая должна инициализироваться перед обработчиком _ready().
Опиши конкретнее, как ты используешь NodePath?
>Туман войны сделал.
Использовал встроенную систему освещения или пришлось велосипедить? Как-то пытался, и что-то не получается. В рогаликах сложно с освещением...
Пробовал включить сглаживание позиции?
https://docs.godotengine.org/en/stable/classes/class_camera2d.html#class-camera2d-property-position-smoothing-enabled
Возможно, это создаст анимацию плавного возврата камеры от выделения (курсора) к персонажу.
Как ты себе Microsoft Copilot активировал?
Как по ощущениям, лучше или хуже Llama3?
>sprite_background со скриптом _process(): global_position = Vector2.ZERO
Бред какой-то, костыль тот ещё. Что тебе мешает использовать встроенное решение?
https://docs.godotengine.org/en/stable/tutorials/2d/2d_lights_and_shadows.html#point-lights
Примерно такая сцена:
- CanvasModulate
- Background (любая композиция нод)
- Ball: RigidBody2D
- - Light: PointLight2D
1. CanvasModulate.color задаёшь Color(0, 0, 0).
2. Light2D.texture: GradientTexture2D с белым кругом.
3. ???
4. Восхищаешься.
>>65873
>По производительности
Он кружок по экрану гоняет...
>Скрипт каждый цикл сбрасывает позицию.
>разорвать наследственность трансформации
https://docs.godotengine.org/en/stable/classes/class_canvasitem.html#class-canvasitem-property-top-level
>If true, this CanvasItem will not inherit its transform from parent CanvasItems. Its draw order will also be changed to make it draw on top of other CanvasItems that do not have top_level set to true. The CanvasItem will effectively act as if it was placed as a child of a bare Node.
Но тебе вообще не нужно фон к мячику присоединять.
![image.png](https://2ch.life/gd/thumb/963889/17216711934830s.jpg)
Именно освещение (перекрытие обзора стенами) сделал через встроенное освещение и окклюдеры. Я пробовал написать свое и получился шизоидный пикрелейтед, так что забил. А туман войны это просто генерируется черный спрайт размером с тайлмапу и в нем делаются дырки на позиции игрока/курсора. Ну и шейдер применен вот этот. С камерой поиграюсь конечно, сейчас она просто либо ребенок игрока, либо курсора.
А насчет микрософтов я не знаю...... я просто купил ноут и он был такой уже...
![graviball1.jpg](https://2ch.life/gd/thumb/963889/17216713429260s.jpg)
К сожалению разрыв наследственность также ломает .
>>65913
Скорее всего это и есть то правильное решение которое я искал. Но тот метод с clip children дает дополнительный перк, - для переднего фона вместо монолитного фона можно использовать текстуру. То есть получается не текстура_фона/заливка_цветом_с_дыркой, а текстура_фона/текстура_фасада_с_дыркой. Как у богатых господ.
>К сожалению разрыв наследственность также ломает .
c разрывом наследственности перестает работать clip children.
самофикс
![2024-07-22 21-00-37.mp4](https://2ch.life/gd/thumb/963889/17216716081740s.jpg)
1920x1080, 0:04
Дальше буду боевку развивать. Хочу визуально эффекты удара добавить, чтобы кровь спавнилась, тряска была всякая, оружие держалось в руках в боевом режиме. И чтобы можно было предметы пинать и двигать мобов. На видео текущая боевка, выглядит скучновато, но уже есть мили-рейндж, промахи, и уклонения (моб доджит на рандомный свободный тайл поблизости)
Ну ты садист. Просто взял и зарезал гуся. Обычный гусь, не какой-то там демонический... Сделай анимацию как его душа возвышается в рай после смерти.
>взял и зарезал гуся. Обычный гусь
Проблема не в том, что зарезал.
Проблема в том, что не доел.
Ну кто так едой разбрасывается?
Я хочу чтобы мобов можно было после смерти бутчерить на мяско и готовить потом, или сжирать целиком трупы если заиметь нужный скилл
Гусь не еда. В нем побольше харизмы чем в шлюховатой карлице. И уважение должно быть соответствующее. А не как к стулу.
Пример как его вписать в лор. Мегагусь это сильный босс который подсылает к карлице своих шестерок гусясасинов, чтобы помешать ей выполнить древнее пророчество. Получается что они умирают сметрью воинов, а не просто как надоедливая птица которую карлица пырнула и бросила лежать. А могла бы просто бросить ему мякиш хлеба чтобы он отстал.
![image.png](https://2ch.life/gd/thumb/963889/17217100513260s.jpg)
>А могла бы просто бросить ему мякиш хлеба чтобы он отстал.
Как понять что человек ни разу с живым и агрессивным гусем не контактировал
Контактировал. Родители давно держали гусей. Когда он из птенца при тебе вырастает, то признает, а чужакам дает пизды. А про мякиш хлеба я имел в виду гусей которые около городских озер шастают. Отдыхающие хлеб им бросают. Гуси и лебеди похожи между собой, только лебеди крупнее и сильнее, от чего за свою жизнь могут поубивать много животных и крупных птиц, просто так.
![гусь.jpg](https://2ch.life/gd/thumb/963889/17217214468290s.jpg)
Ебаные динозавры.
![image.png](https://2ch.life/gd/thumb/963889/17218507807670s.jpg)
Надо что бы код сам себя сменил на другой(усе в угоду производительсности)
ай бля забудьте братва, я нашел. Как с матерьялами короче.
аноны а есть нормальные вводные туторы по годо или хотябы уже готовые примеры где грамотно выстроена архитектура игры. и нормальное управление памятью в сценах.
почему в их официальной доке примеры это говно ебаное? хотя сама дока вроде нормально написана.
скачал блин пример TBS (ну тот который где робот по космо-станции гоняет в жуков стреляет)
так блядь там ассет пули "например" вообще загружается во время первого нажатие на выстел. естественно это вызвывает дикий статтер. и так вообще во всем.
и это типа официальная демка от разоабов движка?
а почему так тогда так ебано сделано?
п
> а почему так тогда так ебано сделано?
У них, как и у многих болезнь "новичкового кода". Это когда полагают будто бы новичку надо давать какой-то упрощённый, неоптимальный и в целом идиотский вариант решения, и это типа способствует гармоничному развитию скилла у новичка.
И эта болезнь во всей айти и геймдев сфере. Разумеется не только в годоте.
У Романа Сакутина об этом видос был. Если интересно посмотри.
https://www.youtube.com/watch?v=RBk49B0lFaQ
> грамотно выстроена архитектура
> нормальное управление памятью
Это лучше изучить в общем айти, на тырпрайз-приложениях, а потом, когда будешь всё знать, приходи обратно в геймдев.
Дело в том, что я после 15 лет в тырпрайзе вкатился в геймдев, выбрал годот, и выжу, какие архитектурные паттерны используют Хуан и ко, какие паттерны они предлагают использовать мне. Какие строительные блоки архитектуры они заложили в движок для меня. Исходя из этого я могу делать архитектуру наиболее удобную мне. И могу оптимизировать производительность покуда не надоест. И для этого мне не нужны гайды, потому что 15 лет в тырпрайзе.
И писать гайды для тебя я не хочу.
Единственный совет, повторюсь, тебе намного эффективнее будет изучить общее айти, а потом вернуться в геймдев со скиллами.
бля мне от тебя лично ниче не надо, я просто прошу адекватный гайд или экземпл с нормальной архитектурой. Может кто натыкался и ему не лень поделиться. все что мне пока попадается какая то ебанутая дичь.
я просто хочу быстро въехать и посмотреть как опытные люди делают.
так сакутин сам инфоциган-говнарь ебаный.
лол бля. я кстати после этого видоса и удалил сакуню. позер ебаный.
у него в этом видосе как раз таки у самого говнокод.
лучше пиши длинно но понятно и логично для других, и не дергай сторонние библиотеки если это не жизненно необходимо. особенно на такие простые сокращения.
в случае годо тбс примера не то что код некрасивый, он просто неправильный. так нельзя делать
Далее, стейтам понадобятся референсы к CharacterBody3D игрока или рутовому ноду сцены игрока, камере и возможно потом еще всякой хуйне. Лучшее решение которое я придумал совместно с чатгопотой это собирать референсы в стейт-машине, создать класс State в котором задать метод для задания референсом и при onReady стейт-машины динамически их задавать для абстрактного класса State чтобы все последующие классы на его основе могли их юзать.
Всё правильно делаю или я где-то обосрался?
а для чего ты ее использовать будешь?
нахрен тебе референс камеры?
просто класс отдельный создай со стейт машиной если не хочешь засорять основной скрипт. и сигналь из самого плейера о смене состояния куда нужно.
это вроде безопасно, но хуй знает насколько быстро.
![downloadedImage(360).png](https://2ch.life/gd/thumb/963889/17219322880250s.jpg)
Придумал идею такую. Я прикидываю на глаз, что растояние от этого столба до вон того, равняется ширине улицы. То есть мне надо чтобы персонаж, двигаясь вдоль и поперек этого участка, проходил его за одинаковый отрезок времени, и еще чтобы визуально правильно менял размер, как будто он уходит вдаль. Еще раз повторюсь что геометрия изображения не совместима с реальностью и я хочу ее подделать. Для этого я рисую прямоугольный полигон, и совмещаю его с картинкой чтобы он полностью покрывал участок улицы на этой картинке. Теперь такая задача:
- Мне надо во первых попасть в перспективу изображения, то есть персонаж когда находится на этом краю полигона должен вписываться в определенную высоту, которую я прикину. А когда он находится на вон том конце полигона то должен визуально быть другой высоты которую я посчитаю на глаз из окружающих предметов. То есть полигон надо так расположить в пространстве чтобы реальная перспектива, в которой находится персонаж, совпадала с ебанутой перспективы из генерации. При этом получится что например визуально полигон должен быть квадратным, но в реальности, он его "глубина", в несколько раз длиннее его ширины.
- Вот тут и подбираемся к второй части задачи - коду. Надо чтобы персонаж пробегал за один и тот же отрезок времени, длину и ширину прямоугольника, когда эти расстояния могут разнится на порядок.
Проебался почти целый день пытаясь сообразить как из сгенерированной картинки сделать 3д изображение, пока вдруг не понял что это может быть невозможно. С моей идеей тоже вижу много проблем, которые могут возникнуть. Но пока что я даже этого не сделал.
По идее нужен аддон какой-нибудь сделать, типа EbanutyiPlane3D который ставишь как угодно в пространстве и меняешь ему как угодно пропорции, а в его настройках указываешь что это например квадрат с гранью нужной длины. И в какую сторону на нем гравитация дует.
![downloadedImage(360).png](https://2ch.life/gd/thumb/963889/17219322880250s.jpg)
Придумал идею такую. Я прикидываю на глаз, что растояние от этого столба до вон того, равняется ширине улицы. То есть мне надо чтобы персонаж, двигаясь вдоль и поперек этого участка, проходил его за одинаковый отрезок времени, и еще чтобы визуально правильно менял размер, как будто он уходит вдаль. Еще раз повторюсь что геометрия изображения не совместима с реальностью и я хочу ее подделать. Для этого я рисую прямоугольный полигон, и совмещаю его с картинкой чтобы он полностью покрывал участок улицы на этой картинке. Теперь такая задача:
- Мне надо во первых попасть в перспективу изображения, то есть персонаж когда находится на этом краю полигона должен вписываться в определенную высоту, которую я прикину. А когда он находится на вон том конце полигона то должен визуально быть другой высоты которую я посчитаю на глаз из окружающих предметов. То есть полигон надо так расположить в пространстве чтобы реальная перспектива, в которой находится персонаж, совпадала с ебанутой перспективы из генерации. При этом получится что например визуально полигон должен быть квадратным, но в реальности, он его "глубина", в несколько раз длиннее его ширины.
- Вот тут и подбираемся к второй части задачи - коду. Надо чтобы персонаж пробегал за один и тот же отрезок времени, длину и ширину прямоугольника, когда эти расстояния могут разнится на порядок.
Проебался почти целый день пытаясь сообразить как из сгенерированной картинки сделать 3д изображение, пока вдруг не понял что это может быть невозможно. С моей идеей тоже вижу много проблем, которые могут возникнуть. Но пока что я даже этого не сделал.
По идее нужен аддон какой-нибудь сделать, типа EbanutyiPlane3D который ставишь как угодно в пространстве и меняешь ему как угодно пропорции, а в его настройках указываешь что это например квадрат с гранью нужной длины. И в какую сторону на нем гравитация дует.
Я в итоге примерно так и сделал, только с экстра абстракцией.
>>67095
>а для чего ты ее использовать будешь?
>нахрен тебе референс камеры?
Надо для геймплея. Расписывать долго.
>просто класс отдельный создай со стейт машиной если не хочешь засорять основной скрипт. и сигналь из самого плейера о смене состояния куда нужно.
Нахуя мне тогда стейт-машина, если плейер занимается менеджментом стейта?
В итоге сделал как планировал, вроде работает. Единственно что надо будет спускать референсы со стейт машины в стейт класс, но это лучше чем ручками в каждом конкретном стейте хуярить.
Генерируй по отдельности части и совмещай в фотошопе.Разве в нейронку нельзя загрузить пример видил аддон для блендера генерирует из премитивов
Пока вы тут спите релиз кандидаты пошли.
движения нет, игрока нет, мира не существует. вообще ничего нет. все есть раскрашенные треугольники, в нормализованном пространстве от нуля до одного.
В зависимости от жанра игры. И так и эдак можно. Анонимус разрешил.
![869.png](https://2ch.life/gd/thumb/963889/17219771538690s.jpg)
Дело привычки, так что пройдет. Более того - со временем твои руки начинают ценить сниженную необходимость тянуться ко всяким закорюкам, расположенным по углам клавиатуры.
Через вьюпорт.
https://www.youtube.com/watch?v=iR1zCgw5Xdc
Только там старое, сейчас это без кода делается через рендер в текстуру вьюпорт контейнера: https://docs.godotengine.org/en/stable/tutorials/rendering/viewports.html
оказывается что preload это команда которая загружает сцену в память только при компиляции.
тогда беру слова назад, все бегает очень быстро и наудивление красиво.
на мой взгляд рендер и стандартные шейдеры лучше чем в юньке, такие же хорошие как в анриле. и производительность вполне хорошая и плавность есть
Это получается, что для девелопа нужен комп раз в десять мощнее средне-игрового? Ну чтобы в режиме редактора всё запускалось и не тормозило?
Обычно да
нет тут просто некоторые функции при редактировании ведут себя не так как при компиляции. ну и скорость сборки ресурсов при редактировании сильно ниже.
вообще у меня все неплохо на 1050ti крутится
Нет, просто в редакторе отключаешь основную массу спецэффектов. Как в блендере же, не моделят/анимируют в режиме рендера, а в режиме серых примитивов. А если хочется предпросмотра, прикрутить что-то типа такого переключателя https://github.com/Rytelier/Godot-Post-Processing-Manager
![1567864719066.webp](https://2ch.life/gd/thumb/963889/17220287338500s.jpg)
Посмотри как работает fSpy. Вообще он опенсорсный, но какая математика там я не знаю. Что-то с проекциями, лол. Там человек вручную размечает эти трапеции.
https://www.youtube.com/watch?v=PSeBh5HdDVs
![1717740593767.png](https://2ch.life/gd/thumb/963889/17220291212310s.jpg)
>Я правильно понял что мне нужно делать отдельный нод для стейт-машины и дочерние ноды для каждого стейта, которые при запуске стейт-машина будет собирать в коллекцию?
Я пробовал стейтмашины с нодами, мне не понравилось, неудобно редактировать, плюшек не видно.
Можно делать стейтмашину в коде. Просто массивчики, словарики, функции.
В идеале хорошо стейтмашина на узлах (как в анимациях собственно и сделано), но хороших я не встречал, а свою лень делать.
>плюшек не видно.
Может это чисто мой бзик, но мне было неприятно бегать по здоровенному скрипту где логика для всех стейтов расписана, захотелось разбить, а потом подумал что раз я разбиваю, то надо бы и DRY соблюсти, сделал класс State и класс State_Machine, и поехало. В итоге норм вышло, открываю скрипт с нужным стейтом и вижу чисто его логику, лепота.
Тебе показалось.
спасибо.
Закорюки учат дисциплине. Сам на автомате начинаешь их проставлять и приводишь код в порядок. А здесь точку с запятой поставил, там не поставил, тут хуй забил. Ну а хуле, пока интеллисенс ремня по жопе не даст, можно писать говнокод как попало. Безобразие!
> некоторые символы учат дисциплине, некоторые нет, дело в символах, а не во мне
Хуйню несёшь. Вынеси её отсюда, пж.
>там ассет пули например вообще загружается во время первого нажатие на выстел
Нет. Речь об этой строчке: https://github.com/godotengine/tps-demo/blob/master/player/player.gd#L132
>var bullet = preload("res://player/bullet/bullet.tscn").instantiate()
preload() считывает ресурс с диска, когда player.gd будет прочитан с диска в первый раз. Это, в свою очередь, считает с диска всё, что связано с bullet.tscn. Единственное, что происходит непосредственно после нажатия кнопки выстрела - это функция PackedScene.instantiate(), что, действительно, может привести к компиляции шейдеров (а также созданию процедурных текстур, инициализации частиц, а также то, что у тебя может выполняться в обработчиках _init связанных объектов), потому что запакованная сцена не вызывает компиляцию шейдеров (и создание каких-либо объектов), только считывание с диска. Если после этого игру закрыть и открыть снова, никаких задержек не будет, потому что шейдер уже скомпилировался и быстро считывается с диска. Это считается приемлемым даже для ААА игр, которые сильно тормозят в первый запуск, вовремя первой загрузки новой локации и т.д. (особенно на слабом ПК заметно) Но если очень хочется обойти эту проблему, можно в начале скрипта поставить строчку по типу такой:
>const BULLET = preload("res://player/bullet/bullet.tscn").instantiate()
И созданный объект не трогать (не удалять). Тогда все общие для всех bullet.tscn ресурсы (в т.ч. шейдеры) будут загружены и удерживаться в памяти, пока удерживается в памяти твой player.gd.
>>67012
>У Романа Сакутина
>Как вас обманывают
Этот клоун недавно высрал свою книгу по C# (со своей рожей на всю обложку, ведь что ещё можно поместить на обложку книги по программированию?), по мнению DTF состоящую из говнокода чуть более, чем полностью, хотя он её якобы писал много лет (вроде хвастался, что ещё в школе начал). Так что он такой же, как и все остальные, если не один из худших.
>Это когда полагают будто бы новичку надо давать какой-то упрощённый
Никто ничего не полагает. Просто разработчики движка сфокусированы на разработке ядра движка, поиске и исправлении багов. Им некогда делать качественные игры для примера правильного кода - за них это могут сделать другие желающие. Да и в целом, ИМХО, официальные демки не нужны. Демку ты один раз мельком глянешь и удалишь (если вообще скачивал), а движком будешь пользоваться много лет - соответственно, ресурсы разработчиков сфокусированы на движке, а не на демках. У движка и без того много проблем, требующих решения больше, чем какие-то демки. Однако, если кому-то хочется исправить именно демки - ты всегда можешь сделать пулл-реквест на гитхабе и когда-нибудь его одобрят. Или нет.
>>67013
>на тырпрайз-приложениях
У энтерпрайза совершенно другие задачи, плохо подходящие геймдеву. Поэтому не следует бездумно копировать практики энтерпрайза в геймдев проекте, особенно если ты соло инди (мастер на все руки).
>>67018
>после 15 лет в тырпрайзе вкатился в геймдев, выбрал годот, и выжу, какие архитектурные паттерны используют Хуан
А я ничего кроме школьного программирования по сути не изучал, ООП изучал методом проб и ошибок, но всё равно архитектура Godot выглядит понятной и доступной, потому что очень похожа на VCL Delphi/LCL Lazarus:
СОЗДАЁМ ПРОЕКТ
@
ШЛЁПАЕМ КОМПОНЕНТЫ НА ФОРМУ
@
ПОДГОНЯЕМ СВОЙСТВА В ИНСПЕКТОРЕ ПО ВКУСУ
@
ВСТАВЛЯЕМ ГОВНОКОД В ОБРАБОТЧИКИ СОБЫТИЙ
@
ЖМЁМ F9 F5 ДЛЯ МГНОВЕННОГО ЗАПУСКА
@
ЛЮБУЕМСЯ РЕЗУЛЬТАТОМ
Какие тут туториалы нужны? Просто как-то вот так делаешь и что-то получается. Нормально делай и нормально будет.
>>67029
>посмотреть как опытные люди делают
Говнокодят по-быстрому, чтобы поскорее высрать очередной инди-шедевр или ассетфлип.
Поскольку ты мелкобуква (тебе лень нажимать шифт), ты просто прирождённый говнокодер.
>там ассет пули например вообще загружается во время первого нажатие на выстел
Нет. Речь об этой строчке: https://github.com/godotengine/tps-demo/blob/master/player/player.gd#L132
>var bullet = preload("res://player/bullet/bullet.tscn").instantiate()
preload() считывает ресурс с диска, когда player.gd будет прочитан с диска в первый раз. Это, в свою очередь, считает с диска всё, что связано с bullet.tscn. Единственное, что происходит непосредственно после нажатия кнопки выстрела - это функция PackedScene.instantiate(), что, действительно, может привести к компиляции шейдеров (а также созданию процедурных текстур, инициализации частиц, а также то, что у тебя может выполняться в обработчиках _init связанных объектов), потому что запакованная сцена не вызывает компиляцию шейдеров (и создание каких-либо объектов), только считывание с диска. Если после этого игру закрыть и открыть снова, никаких задержек не будет, потому что шейдер уже скомпилировался и быстро считывается с диска. Это считается приемлемым даже для ААА игр, которые сильно тормозят в первый запуск, вовремя первой загрузки новой локации и т.д. (особенно на слабом ПК заметно) Но если очень хочется обойти эту проблему, можно в начале скрипта поставить строчку по типу такой:
>const BULLET = preload("res://player/bullet/bullet.tscn").instantiate()
И созданный объект не трогать (не удалять). Тогда все общие для всех bullet.tscn ресурсы (в т.ч. шейдеры) будут загружены и удерживаться в памяти, пока удерживается в памяти твой player.gd.
>>67012
>У Романа Сакутина
>Как вас обманывают
Этот клоун недавно высрал свою книгу по C# (со своей рожей на всю обложку, ведь что ещё можно поместить на обложку книги по программированию?), по мнению DTF состоящую из говнокода чуть более, чем полностью, хотя он её якобы писал много лет (вроде хвастался, что ещё в школе начал). Так что он такой же, как и все остальные, если не один из худших.
>Это когда полагают будто бы новичку надо давать какой-то упрощённый
Никто ничего не полагает. Просто разработчики движка сфокусированы на разработке ядра движка, поиске и исправлении багов. Им некогда делать качественные игры для примера правильного кода - за них это могут сделать другие желающие. Да и в целом, ИМХО, официальные демки не нужны. Демку ты один раз мельком глянешь и удалишь (если вообще скачивал), а движком будешь пользоваться много лет - соответственно, ресурсы разработчиков сфокусированы на движке, а не на демках. У движка и без того много проблем, требующих решения больше, чем какие-то демки. Однако, если кому-то хочется исправить именно демки - ты всегда можешь сделать пулл-реквест на гитхабе и когда-нибудь его одобрят. Или нет.
>>67013
>на тырпрайз-приложениях
У энтерпрайза совершенно другие задачи, плохо подходящие геймдеву. Поэтому не следует бездумно копировать практики энтерпрайза в геймдев проекте, особенно если ты соло инди (мастер на все руки).
>>67018
>после 15 лет в тырпрайзе вкатился в геймдев, выбрал годот, и выжу, какие архитектурные паттерны используют Хуан
А я ничего кроме школьного программирования по сути не изучал, ООП изучал методом проб и ошибок, но всё равно архитектура Godot выглядит понятной и доступной, потому что очень похожа на VCL Delphi/LCL Lazarus:
СОЗДАЁМ ПРОЕКТ
@
ШЛЁПАЕМ КОМПОНЕНТЫ НА ФОРМУ
@
ПОДГОНЯЕМ СВОЙСТВА В ИНСПЕКТОРЕ ПО ВКУСУ
@
ВСТАВЛЯЕМ ГОВНОКОД В ОБРАБОТЧИКИ СОБЫТИЙ
@
ЖМЁМ F9 F5 ДЛЯ МГНОВЕННОГО ЗАПУСКА
@
ЛЮБУЕМСЯ РЕЗУЛЬТАТОМ
Какие тут туториалы нужны? Просто как-то вот так делаешь и что-то получается. Нормально делай и нормально будет.
>>67029
>посмотреть как опытные люди делают
Говнокодят по-быстрому, чтобы поскорее высрать очередной инди-шедевр или ассетфлип.
Поскольку ты мелкобуква (тебе лень нажимать шифт), ты просто прирождённый говнокодер.
>надо бы и DRY соблюсти
>открываю скрипт с нужным стейтом и вижу чисто его логику
А как ты решил проблему того, что в каждом скрипте-состоянии нужно много бойлерплейта написать?
Я вот пробовал сделать конечный автомат на отдельных скриптах и ЗАДОЛБАЛСЯ тыкаться из одного скрипта в другой, потому что логика персонажа становится размазана по неизвестным местам и избыточно дублируется. В результате я так и не понял, почему мой конечный автомат не способен тупо повторить казалось бы простейшее поведение старого монолитного скрипта и откатил всё обратно до лучших времён. Всё равно я забил на этот проект, так что ничего не потерял.
Предлагаю писать на брейнфаке. Железная дисциплина будет.
Я уже убедился в этом, анончик. и проект скомпилил, погонял, и по доке по функция прошелся.
Все равно инстанциировать на выстрел это хуевое довольно решение если это не клонирование объекта. Тут надо везде пулы писать и заранее при загрузке уровня все объекты в память загонять.
Потому что всеравно нет нет да поддергивает когда что то новое на экране происходит даже после компиляции.
А так посмотрел, очень приятный движек. По мне так логика со сценами топ
сука, тоже об этом подумал
>инстанциировать на выстрел это хуевое довольно решение
>Тут надо везде пулы писать и заранее при загрузке уровня
Пулы в Unity (и некоторых других движках) рекомендуется делать из-за сборщика мусора C#, потому что если ты будешь на C# срать тысячами объектов каждый кадр, сначала у тебя будет огромный завал из больше не нужных тебе объектов в оперативной памяти (что может вызывать лишнюю нагрузку для ОС, которая будет скидывать лишние страницы памяти на диск), а потом сборщик мусора внезапно проснётся и подавится огромным количеством объектов, которые ему нужно проверить (я слышал, там какой-то сложный алгоритм, который проверяет все объекты) и удалить из памяти (а перед этим ОС достанет их из файла подкачки с диска).
В GDScript такого сборщика мусора нет. Удаление большинства объектов происходит тремя путями:
1. RefCounted - сразу после того, как не осталось ни одной доступной ссылки на объект.
2. Node - в конце кадра обрабатывается очередь из того, что ты поставил с помощью queue_free().
3. Object - сразу после вызова free(), но данный класс обычно не рекомендуется использовать.
Вызовы queue_free() по сути бесплатные и даже огромное количество нод удаляется быстро.
Создание большого числа (сотни) объектов с нуля за один кадр, конечно, даёт какую-то лишнюю нагрузку (но не такую большую, если они все используют общие ресурсы, типа один и тот же спрайт, текстура, материал, шейдер, формы коллизий и т.д.), но в целом это не так плохо, как потенциальные проблемы пулов, например:
1. Отработавший объект находится в "грязном" состоянии - его нужно сбросить в изначальное состояние, прежде чем повторно использовать. Для этого нужно знать изначальное состояние и список полей, которые нужно сбросить. Что, если ты модифицируешь объект, но забудешь сбрасывать новые поля или обновить состояние по умолчанию? Проблема может казаться незначительной, но отловить её будет проблематично, т.к. для компьютера никакой ошибки в этом нет, программа не упадёт с сообщением об ошибке, но объекты могут начать проявлять странное поведение.
2. Нужно определить: какого размера будет пул? Если пул слишком большой, то у нас в памяти будет множество лишних объектов, которые никогда не используются, а это признак плохой оптимизации игры для игрока. Если пул слишком маленький, нам придётся добавлять новые объекты динамически, а то и вовсе всё может перестать работать как надо. "Умный" менеджер пула может оказаться тяжелее, чем если бы мы создавали объекты по требованию. Кроме того, этот менеджер сначала ещё написать придётся, или адаптировать под конкретную задачу, как минимум выбрав оптимальные параметры.
3. Мы увеличиваем загрузку игры/уровня и начальные затраты памяти, т.к. создаём с самого начала миллионы пуль, тысячи врагов разных типов, выпадающих из них предметов и т.д. Никто не любит долгие загрузки - в идеале игра должна сразу бросать игрока в геймплей, особенно если ты инди, а не ГТА 5, косяки которой готовы терпеть. Кроме того, во многих играх средний игрок может и не добраться до момента, когда игре действительно понадобятся все объекты из всех пулов одновременно, а значит, игра будет только зря растягивать загрузку геймплея (и забивать память) без какой-либо пользы для условных 90% игроков.
Естественно, если ты используешь C# или другой язык со сборщиком мусора вместе с Godot, придётся делать пулы со стороны твоего кода (но, возможно, не со стороны движка - это нужно проверять).
Но главное, пул объектов - это преждевременная оптимизация. Сначала запили игру с геймплеем самым простым способом - создавая объекты по необходимости и бросая их, когда они больше не нужны. Потом оцени производительность, и если у тебя самое узкое место во время создания объектов, попробуй реализовать пул. 99% проектов не доходит до стадии, когда тебе вот прям обязательно нужно выжать максимум FPS, поэтому создание пула объектов может оказаться бесполезной тратой времени.
>инстанциировать на выстрел это хуевое довольно решение
>Тут надо везде пулы писать и заранее при загрузке уровня
Пулы в Unity (и некоторых других движках) рекомендуется делать из-за сборщика мусора C#, потому что если ты будешь на C# срать тысячами объектов каждый кадр, сначала у тебя будет огромный завал из больше не нужных тебе объектов в оперативной памяти (что может вызывать лишнюю нагрузку для ОС, которая будет скидывать лишние страницы памяти на диск), а потом сборщик мусора внезапно проснётся и подавится огромным количеством объектов, которые ему нужно проверить (я слышал, там какой-то сложный алгоритм, который проверяет все объекты) и удалить из памяти (а перед этим ОС достанет их из файла подкачки с диска).
В GDScript такого сборщика мусора нет. Удаление большинства объектов происходит тремя путями:
1. RefCounted - сразу после того, как не осталось ни одной доступной ссылки на объект.
2. Node - в конце кадра обрабатывается очередь из того, что ты поставил с помощью queue_free().
3. Object - сразу после вызова free(), но данный класс обычно не рекомендуется использовать.
Вызовы queue_free() по сути бесплатные и даже огромное количество нод удаляется быстро.
Создание большого числа (сотни) объектов с нуля за один кадр, конечно, даёт какую-то лишнюю нагрузку (но не такую большую, если они все используют общие ресурсы, типа один и тот же спрайт, текстура, материал, шейдер, формы коллизий и т.д.), но в целом это не так плохо, как потенциальные проблемы пулов, например:
1. Отработавший объект находится в "грязном" состоянии - его нужно сбросить в изначальное состояние, прежде чем повторно использовать. Для этого нужно знать изначальное состояние и список полей, которые нужно сбросить. Что, если ты модифицируешь объект, но забудешь сбрасывать новые поля или обновить состояние по умолчанию? Проблема может казаться незначительной, но отловить её будет проблематично, т.к. для компьютера никакой ошибки в этом нет, программа не упадёт с сообщением об ошибке, но объекты могут начать проявлять странное поведение.
2. Нужно определить: какого размера будет пул? Если пул слишком большой, то у нас в памяти будет множество лишних объектов, которые никогда не используются, а это признак плохой оптимизации игры для игрока. Если пул слишком маленький, нам придётся добавлять новые объекты динамически, а то и вовсе всё может перестать работать как надо. "Умный" менеджер пула может оказаться тяжелее, чем если бы мы создавали объекты по требованию. Кроме того, этот менеджер сначала ещё написать придётся, или адаптировать под конкретную задачу, как минимум выбрав оптимальные параметры.
3. Мы увеличиваем загрузку игры/уровня и начальные затраты памяти, т.к. создаём с самого начала миллионы пуль, тысячи врагов разных типов, выпадающих из них предметов и т.д. Никто не любит долгие загрузки - в идеале игра должна сразу бросать игрока в геймплей, особенно если ты инди, а не ГТА 5, косяки которой готовы терпеть. Кроме того, во многих играх средний игрок может и не добраться до момента, когда игре действительно понадобятся все объекты из всех пулов одновременно, а значит, игра будет только зря растягивать загрузку геймплея (и забивать память) без какой-либо пользы для условных 90% игроков.
Естественно, если ты используешь C# или другой язык со сборщиком мусора вместе с Godot, придётся делать пулы со стороны твоего кода (но, возможно, не со стороны движка - это нужно проверять).
Но главное, пул объектов - это преждевременная оптимизация. Сначала запили игру с геймплеем самым простым способом - создавая объекты по необходимости и бросая их, когда они больше не нужны. Потом оцени производительность, и если у тебя самое узкое место во время создания объектов, попробуй реализовать пул. 99% проектов не доходит до стадии, когда тебе вот прям обязательно нужно выжать максимум FPS, поэтому создание пула объектов может оказаться бесполезной тратой времени.
Ну нет. Пул один раз запилил и забыл и это база.
даже анрил чихнет если ты ему несколько персов инстанциируешь в один момент. Естественно нужны функции инита, системы проверки пула и возможность динамического расширения сужения пула. Но как без этого? Память давно уже не проблема. Я вообще смотрю есть релоады какието встроенные для сцен.
Сборщик мусора в юньке ведет себя абсолютно похожим образом смотрит ссылки, смотрит очередь.
>Сгенерировать изображение места в нейронке
>там полностью, много раз, проебана перспектива.
А в чём проблема-то? Если пипл хавает твой скриншот, то и геймплей схавает - целевая аудитория у "Generative AI" контента не столь критична к качеству, поэтому такие косяки простительны и даже ожидаемы. Только непонятно, что ты вообще хочешь сделать? Пойнт-н-клик квест? Тогда тупо телепортируй статичную картинку персонажа по клику в заранее заданную позицию. Тебе важны интересный сюжет и головоломки, а не "реалистичное" движение персонажа. Хотя в старых играх персонаж обычно всё-таки двигался, но это не так уж важно для квеста, особенно если у тебя красивые фоны, интересный сюжет и более-менее адекватные головоломки. Более того, лично меня вот раздражает в таких квестах смотреть и ждать, когда персонаж доберётся до точки - уж лучше бы он чисто символически телепортировался (с плавной анимацией).
А вот здесь >>958420 →, на твой взгляд, пул мог бы помочь? Там много всего за кадр создаётся.
>похожим образом смотрит ссылки, смотрит очередь
В C# что-то другое - какой-то переусложнённый механизм. Microsoft вроде хотели как лучше, а получилось как всегда... Удаление по счётчику ссылок и через очередь намного проще и быстрее "умного" сборщика мусора, хотя и не устраняет всех возможных проблем (вроде циклических ссылок, потерянных ссылок и т.п.). "Умный" сборщик мусора, по идее, сам, с нуля составляет полную схему взаимосвязей между объектами в памяти и пытается вычислить, какие из объектов можно безопасно удалить - т.е. он может удалить то, что нельзя удалить простым счётчиком ссылок (изолированные циклические связи) или что ты забыл поставить в очередь на удаление. Но этот механизм очень сложный и затратный, поэтому запускается редко и вызывает задержки - и, как я понимаю, чем больше объектов в памяти, тем дольше будет составляться карта и тем дольше будет вычисление важности/нужности каждого объекта. Может быть, это удобно для того самого энтерпрайза, но явно неудобно для игр, когда у тебя каждые несколько минут некое третье лицо (не движок и не игра) несколько секунд шерстит всю память, а ты ничего с этим сделать не можешь - пул только сокращает число объектов, но не отключает сборщик мусора насовсем, поэтому он всё равно шерстит память в поисках лишнего.
Но, может, в новых версиях C# как-то исправили эту проблему, я не интересовался.
>Какой подход считаете правильней?
Godot заточен на движение игрока по в основном статичному миру. Двигать мир вокруг игрока будет сложнее и может вызывать проблемы со стороны физики - в частности, не рекомендуется лишний раз двигать StaticBody, а позиции RigidBody вообще лучше не трогать. А главное, зачем? Ощутимых проблем дальше 8 км ты не ощутишь даже с single float, а теперь движок можно скомпилировать с поддержкой double float, так что граница глюков округления вещественных чисел отодвигается ещё дальше. Если же тебе нужен сверхбольшой мир, то в документации рекомендуют просто при достижении "границы мира" однократно телепортировать весь мир вместе с игроком ближе к началу координат. Но если у тебя симулятор космоса, то, возможно, в каких-то случаях будет лучше двигать звёзды вокруг неподвижного космического корабля, конечно, если поблизости нет кучи RigidBody астероидов, а сами звёзды - это просто декорации, а не физические объекты.
у тебя там физика захлебнулась а не спавн объектов.
я тебе так скажу анрил чихает когда ты всего 200 акторов с простым кубом без логики единоразово спавнишь.
поэтому пул необходим всегда, и должен быть написан.
>привык отделять функции за счёт скобочек
Как ты можешь без отвращения смотреть на код без отступов? Это же ересь, писать код без отступов. А раз ты всё равно ставишь отступы в обязательном порядке и ориентируешься по ним визуально (даже два пробела слева, очевидно, намного заметнее тонюсеньких скобок) - почему бы не сделать их значимыми для выполнения программы? А если отступы значимы, то программные скобки больше не нужны и их можно спокойно выбросить. Логично же всё.
>>67601
>Закорюки учат дисциплине. Сам на автомате начинаешь их проставлять и приводишь код в порядок.
Суть программных скобок - подсказать компилятору, где у тебя начинается программный блок, а где он кончается, даже если ты наговнокодил всё в одну строчку, полностью забил на отступы или расставил отступы абы как в случайном порядке. Благодаря скобкам редактор кода может автоматически сделать красивое форматирование твоего говнокода, расставив отступы где надо и добавив переносы строк.
Т.е. программные скобки на самом деле расслабляют и позволяют больше говнокодить абы как, т.к. редактор кода сам потом всё отформатирует. А вот значимые отступы как раз-таки учат дисциплине - заставляют изначально правильно форматировать свой код, расставляя отступы там, где они должны находиться, т.е. делая код ровным и красивым. Конечно, если ты потеряешь отступ или добавишь лишний, смысл программы изменится - поэтому тебе нужна дисциплина.
А ровно отформатированный код однозначно проще читать. Вопрос в том, зачем писать неровно и потом полагаться на то, что редактор правильно выровняет твой код по дополнительно указанным скобкам? Неужели тебе лень лишний раз нажать на tab или backspace? Тем более что все современные редакторы кода, включая встроенный в Godot, автоматически добавляют отступы после нажатия enter.
>mp4
А вот и конкурент тому анону, что сх-лайк делает, в лице ре-лайк с пререндеренными локами
![тест.mp4](https://2ch.life/gd/thumb/963889/17221278765710s.jpg)
480x360, 3:58
>всего 200 акторов с простым кубом
А когда так уж нужно делать 200 сразу?
>поэтому пул необходим всегда
Разница минимальна, главная проблема в:
>физика захлебнулась а не спавн объектов
Провёл такой тест, на видео 5 частей:
00:00. Создание, материал один.
00:38. Создание, материалы уникальны.
01:23. Пул, материал один.
02:06. Пул, материалы уникальны.
02:58. Пул, материалы уникальны, Jolt.
Сделал выводы для себя:
1. Да, с пулом размещение быстрее:
- на 50%, если материал один на всех;
- в 10 раз, если материалы уникальны.
2. Это фигня в сравнении с физикой.
3. Реализация пула усложняет код.
4. Jolt не любит добавлять объекты.
Это всё бесполезные телодвижения. Без мультитрединга производительности не будет. Кроме того, пул следует пилить не на нодах-сиротах (репарент которых в дерево внутри основного треда так же тормозит как и создание нод), а пул нужно делать на POCO-объектах, контейнерах, которые будут нести ресурсы для нод в дереве. То есть, например, для ноды RigidBody3D объект из пула будет (в отдельном потоке!) подгружать в себя коллизию, меш, трансформ, и т.д., и когда тред просигнализирует о том что он завершён, готовые ресурсы из пула ты вставляешь в ноду, делаеш видимой и будиш. Ну ты понел.
ну так бляха че ты тестишь у тебя затык в физике.
сам видишь что выделение памяти даже под простой объект чихает. а если у тебя перс с кучей анимаций, свойств, детей и инитиов.
да у тебя пара тройка челов начнут чихать за раз.
>непонятно, что ты вообще хочешь сделать?
К сожалению не игру. Только максимально простой концепт-гайд для народа. Чтобы можно было любое изображение локации в два клика настроить и бросить туда болванчиков чтобы бегали.
Твой вариант заебись просто. Ты большой молодец. Я себе все намного сложнее представлял, чтобы 3д занималось перспективой. Твою 2д перспективу намного легче настроить. Просто замерить высоту персонажа инструментом Линейка на самом дальнем и на самом ближнем краю шейпа, чтобы присвоить замеры переменным в скрипте для расчета перспективы, и уже можно бегать. Без 3д конечно тяжко будет в некоторых местах. Но это и не входит в список задач этой задумки.
Разбросать по полу Area2D для интерактивных штук и анимаций. И уже симулятор ходьбы готов. Добавить вялых зомбарей и напряженную музыку, и уже резики первые. Подходишь к окну: "посмотреть" -> "никого нет". Подходишь к двери: "зайти" -> экран темнеет, скрип двери, мы уже внутри, ходим по рисунку квартиры.
>>67713
Пикрилы сгенерированы в https://www.krea.ai/apps/image/realtime
https://2ch.hk/nf/res/12873.html#13705 (
![](img/mob.gif)
Насколько я припоминаю в промте был Сайлент Хилл.
Каков сисик!
Затык в физике происходит потому, что происходит взаимодействие "всех со всеми". Очень-очень теоретическое решение было бы в том, чтобы ограничить взаимодействия тел только с ближайшими. Но я забил этим заниматься.
В теории, там используется octotree, так что можно поискать размеры ячейки (квадранта) этой структуры и уменьшить.
Второй момент заключается в террейне, но тут опять же сложно что-то сказать. Если это heightmap, то наверное быстрее и не получится.
Если же просто объект, то лучше разбить его на много чанков - по той же причине, что при коллизии физ движок начинает в одном большом объекте гулять по куче вершин чтобы найти место столкновения.
Да я вообще не про это писал. Разбиение по файлам-скриптам будет такое же. Просто не использовать ноды.
>гайд для народа
Не понял. Ты просишь у нас гайд, чтобы написать гайд? Или у тебя ютуб-канал с туториалами?
>Твой вариант заебись просто. Ты большой молодец.
Я просто когда-то пытался научиться рисовать (забросил). Погугли про перспективу в рисовании. Основное вкратце: все линии сходятся на горизонте в точку, от количества таких точек схождения зависит тип перспективы - одноточечная (самая простая, как на большинстве "коридорных", "уличных" картинок), двухточечная (угловая, когда видно сразу две улицы, расходящиеся в стороны), трёхточечная (вид на угол небоскрёба с высоты или от земли, редко используется). Также могут быть искривления типа объектива "рыбий глаз", но это вообще редко используют. Художники для рисования используют "рейкасты" из точек схождения на горизонте в разные стороны, чтобы упростить рисование в перспективе. Самое главное, что вся эта теория в первую очередь применяется к большим фоновым объектам вроде домов и машин, а стоящего на некотором расстоянии ровно напротив камеры человека можно считать плоской картонкой - его рост в перспективе можно определить всего по двум точкам/рейкастам (ступни и голова), что в контексте игры позволяет просто масштабировать спрайт относительно расстояния от спрайта до горизонта (прямо на горизонте персонаж должен исчезнуть, т.к. его изображение сжимается в точку). Правда, это при условии, что дорога ровная (нет подъёма или спуска, лестниц и т.п.) и персонаж не может прыгать. В противном случае нужно уже вычислять движение по трём осям...
Кстати, подобное делали в старых 2.5D гонках: там дорога состоит из прямоугольников, создающих иллюзию уходящей вдаль дороги, и по ней "едут" увеличивающиеся спрайты других машин. Машина игрока, конечно, неподвижна на экране, меняется только сдвиг сегментов дороги и других машин. Получается довольно реалистичное по меркам тех лет 3D, состоящее из простейших спрайтов.
>чтобы 3д занималось перспективой
Можно попробовать создать 3D объект-сетку, которая используется для выбора параметров камеры по ощущениям. Суть: рендеришь этот 3D объект в текстуру, накладываешь текстуру с полупрозрачностью на свою нейрокартинку, и подгоняешь параметры 3D камеры во вьюпорте так, чтобы линии 3D сетки приблизительно повторяли схождение линий на нейрокартинке. Тогда, в теории, ты можешь накладывать 3D объекты поверх этой 2D картинки с перспективой. Это позволило бы даже использовать 3D физику с учётом перспективы 2D картинки. Предполагаю, что объект-сетка должен быть огромного размера, чтобы было заметно схождение линий на горизонте. Но от него многого не требуется, можно прямо в Godot сгенерировать кодом. Проверять прямо сейчас - лень...
>Пикрилы сгенерированы в krea.ai
Из-за тебя я несколько часов генерировал себе вайфу. Снова.
>>67878
>border в скрипте это кто?
StaticBody2D, на той картинке его коллизия - ломанная красная линия. Мог по API догадаться:
https://docs.godotengine.org/en/stable/classes/class_collisionobject2d.html#class-collisionobject2d-method-shape-owner-get-shape
>Штука может оказаться полезной.
Там кривой говнокод чисто чтобы проверить осуществимость концепции. Скриншот кода чисто чтобы показать простоту данного алгоритма. Для прикладного использования нужно что-то более удобное и универсальное, чем это. В частности, в квестах часто встречаются лестницы и мосты, по которым персонаж может ходить, и на них этот код выдаст некорректный результат.
>гайд для народа
Не понял. Ты просишь у нас гайд, чтобы написать гайд? Или у тебя ютуб-канал с туториалами?
>Твой вариант заебись просто. Ты большой молодец.
Я просто когда-то пытался научиться рисовать (забросил). Погугли про перспективу в рисовании. Основное вкратце: все линии сходятся на горизонте в точку, от количества таких точек схождения зависит тип перспективы - одноточечная (самая простая, как на большинстве "коридорных", "уличных" картинок), двухточечная (угловая, когда видно сразу две улицы, расходящиеся в стороны), трёхточечная (вид на угол небоскрёба с высоты или от земли, редко используется). Также могут быть искривления типа объектива "рыбий глаз", но это вообще редко используют. Художники для рисования используют "рейкасты" из точек схождения на горизонте в разные стороны, чтобы упростить рисование в перспективе. Самое главное, что вся эта теория в первую очередь применяется к большим фоновым объектам вроде домов и машин, а стоящего на некотором расстоянии ровно напротив камеры человека можно считать плоской картонкой - его рост в перспективе можно определить всего по двум точкам/рейкастам (ступни и голова), что в контексте игры позволяет просто масштабировать спрайт относительно расстояния от спрайта до горизонта (прямо на горизонте персонаж должен исчезнуть, т.к. его изображение сжимается в точку). Правда, это при условии, что дорога ровная (нет подъёма или спуска, лестниц и т.п.) и персонаж не может прыгать. В противном случае нужно уже вычислять движение по трём осям...
Кстати, подобное делали в старых 2.5D гонках: там дорога состоит из прямоугольников, создающих иллюзию уходящей вдаль дороги, и по ней "едут" увеличивающиеся спрайты других машин. Машина игрока, конечно, неподвижна на экране, меняется только сдвиг сегментов дороги и других машин. Получается довольно реалистичное по меркам тех лет 3D, состоящее из простейших спрайтов.
>чтобы 3д занималось перспективой
Можно попробовать создать 3D объект-сетку, которая используется для выбора параметров камеры по ощущениям. Суть: рендеришь этот 3D объект в текстуру, накладываешь текстуру с полупрозрачностью на свою нейрокартинку, и подгоняешь параметры 3D камеры во вьюпорте так, чтобы линии 3D сетки приблизительно повторяли схождение линий на нейрокартинке. Тогда, в теории, ты можешь накладывать 3D объекты поверх этой 2D картинки с перспективой. Это позволило бы даже использовать 3D физику с учётом перспективы 2D картинки. Предполагаю, что объект-сетка должен быть огромного размера, чтобы было заметно схождение линий на горизонте. Но от него многого не требуется, можно прямо в Godot сгенерировать кодом. Проверять прямо сейчас - лень...
>Пикрилы сгенерированы в krea.ai
Из-за тебя я несколько часов генерировал себе вайфу. Снова.
>>67878
>border в скрипте это кто?
StaticBody2D, на той картинке его коллизия - ломанная красная линия. Мог по API догадаться:
https://docs.godotengine.org/en/stable/classes/class_collisionobject2d.html#class-collisionobject2d-method-shape-owner-get-shape
>Штука может оказаться полезной.
Там кривой говнокод чисто чтобы проверить осуществимость концепции. Скриншот кода чисто чтобы показать простоту данного алгоритма. Для прикладного использования нужно что-то более удобное и универсальное, чем это. В частности, в квестах часто встречаются лестницы и мосты, по которым персонаж может ходить, и на них этот код выдаст некорректный результат.
![Video20240728-2.mp4](https://2ch.life/gd/thumb/963889/17221936178670s.jpg)
1330x806, 0:16
Прочитал, что он для 3д. Или я что-то неправильно понимаю?
![1704416288704.png](https://2ch.life/gd/thumb/963889/17221968758670s.jpg)
Цепь сделать сложно, я в Думере на твг делал, но на полишинг забил, так что она у меня подергивается. https://gdman.itch.io/dumer
Во-первых, нет нужды делать звено из 4 эллипсов. Его можно сделать одной жесткой фигурой у физикбоди может быть несколько шейп-чайлдов.
А еще лучше вообще прямоугольником или капсулой, а "цепочечность" оставить только в арте.
Во-вторых, есть параметры Angular и Linear Damp. Они каждый тик замедляют вращение и перемещение на соотв. значение. То есть работают типа как вязкая среда, воздух, гашение инерции. Но в случае с цепью это может не помочь, потому что соседние звенья постоянно дрюкают.
Еще у pinjoin был параметр softness, это насколько связка жесткая. Но я не помню, что влияет на разрыв. У тебя на видосе цепь рвется, наверное когда сила превышает определенный порог, а пружинистости не хватает.
Еще один прием который я пытаюсь использовать, это абсолютный лимит на скорость движения/вращения, который проверяю каждый кадр сам. Таким образом я надеюсь сглаживать полные разносы, когда объект уперевшись во что-то потом пытается отпружинить на километр.
В-третьих, надо придумать как быть с самопересечениями цепи. Если звенья не реагируют друг на друга, то цепь не сложить в бухту, например. Может быть, сделать их через один разными слоями, чтобы они реагировали через 1 но игнорировали соседнее звено, но я это не пробовал, хотя стоило.
В целом подумай, стоит ли первой игрой заморачиваться на механиках с физоном, или поделать игры попроще.
Опять же вопрос, для чего она тебе нужна. Если только для визуала, то можно сделать что-то такое. В 2д это будут линии, вдоль которых прокручивается текстура.
https://www.youtube.com/watch?v=kbNaACyqdAY
![screen2256.PNG](https://2ch.life/gd/thumb/963889/17221991993420s.jpg)
Попробовал 4 фигуры в одно тело. Однако теперь проблема с масками коллизий. Жаль, что маска крепится к боди. Я попробовал так сделать, но шейпы не держатся друг друга из-за родителя-боди посредника.
Честно, я так и не увидел причины делать коллайдеру правую форму, а не левую.
Ведь в 2д в замкнутую фигуру залететь и вылететь ничего не может (не считая глитчей)
Что же касается проблемы с масками - ее не избежать. ведь в 2д в обычном смысле цепь не возможна, там всегда есть пересечения с соседним звеном. Поэтому я предложил или отключить маску цепи с цепью вообще, оставив только с уровнем; либо придумать что-то хитрое, типа чередования масок через одну (синее с синим, оранжевое с оранжевым, но не синее с оранжевым).
>Для комплексной физики godot-jolt
Для 2D можно попробовать Rapier, он быстрее и стабильнее встроенной:
https://github.com/appsinacup/godot-rapier-physics
>>67925
>Решил сделать реалистичную цепь для механики
А точно ли тебе нужна реалистичная цепь для этой механики?
Опиши хотя бы, что у тебя за механика. Может, цепь не нужна.
>>67964
>Попробовал 4 фигуры в одно тело
Ты что-то не то делаешь.
>Не понял. Ты просишь у нас гайд, чтобы написать гайд?
Это называется коммунизм.
Однажды у меня была проблема. И я рассказал ее одному пацану африканцу на работе. И он мне дал хороший совет. После чего сказал что кто-то хорошо его научил - говорить о своих вопросах и проблемах. Потому что есть много людей которые ходят замкнутыми в себе, не зная как решить задачи которые становятся только хуже. А если рассказать, то шансы на решение резко возрастут. Я вообразил себе разные мутные решение, но твое мне кажется гениальным.
Никаких многоточечных перспектив. Надо максимально просто. Идеально было бы указать линию горизонта. И персонажа поставить в ближнюю точку и сделать ему подходящий размер. Но это чревато ебатней. Если горизонта не видно то придется пробовать и пробовать и еще пробовать. Может выбесить запускать игру много раз чтобы проверить что перспектива проебана.
В идеале надо две точки по оси Y - ближняя и дальняя. Положить туда персонажа и уменьшить чтобы его пропорции смотрелись гармонично в том месте. И пока он там, скопировать его параметр scale и присвоить его переменным в скрипте. Например scale_far и scale_near, и дальше скрипт сам сделает свою магию, управляя скоростью и размером персонажа в зависимости от положения по вертикальной оси.
Я у нейронки спросил как это делается, она сделала скрипт с горем пополам. Скрипт не для годот4. А да точно, ось У перевернута. Ах да, скорость в перспективе тоже использует перевернутую ось У. И ее пиздеж не схоится с реальностью, например она говорит что scale factor в реальности где-то 0.1, максимум 0.5. А в моем случае надо было 0.75 ставить.
>создать 3D объект-сетку
Есть программка fspy которую используют для угадывания параметров камеры. Для импорта в 3д. Но в генерациях нейронок проебана перспектива, ни один вариант не справится с этой задачей, так что нет смысла искать варианты посложнее.
>Из-за тебя я несколько часов генерировал себе вайфу. Снова.
Ну и как? Получилось?
Бля. Не те пикчи кинул. Тут с прозрачностью. Пускай полежат.
Что тебе мешает использовать Release Candidate?
https://godotengine.org/article/release-candidate-godot-4-3-rc-1/
>We are entering the final stage of development for Godot 4.3, which is the Release Candidate: all features are in-place, the most critical regressions have been tackled, and so we’re confident that it’s now ready for general use in the vast majority of cases…
>… which is usually the cue for more testers to jump aboard the pre-release train, test this release candidate on their projects, and shatter our hopes confirm that everything is ready for prime time!
Нет, стоять! Держать сторй! Игры не делаем! Вот 4.4.2 выйдет, фордж завезут и хуанГИ, баги починят все, то тогда можно качать и урчать! УХ! Заживем!
![17173565675080.jpg](https://2ch.life/gd/thumb/963889/17222600086690s.jpg)
Жду 5.0. Проблемы?
https://github.com/godotengine/godot-proposals/milestone/5
>This proposal breaks compatibility, but we will not implement it for 4.0, so kick it many years down the road until the next compatibility breakage in a decade from now.
Вот игру тогда сделаешь... ухх ебать....
>Это называется коммунизм.
От каждого по способностям, каждому по потребностям. В чём твоя потребность?
>Я вообразил себе разные мутные решение
Решение чего? Ты ж вроде сказал, что не собираешься делать такую игру.
>Никаких многоточечных перспектив
Художники с древних времён использовали, нейронка им подражает как может.
>Если горизонта не видно
Точки схода можно определить по любым сходящимся прямым линиям.
>Может выбесить запускать игру много раз
Tool-скрипт напиши себе. А встроенные ноды настраиваются визуально в редакторе.
>в зависимости от положения по вертикальной оси.
Повторюсь, это будет работать только пока у тебя пол ровный и прямой до горизонта.
>Я у нейронки спросил как это делается
А что ты спросил-то? Я до сих пор слабо понимаю, в чём твоя проблема.
>Есть программка fspy которую используют для угадывания
Ладно, скачал я твою программу, гайдов никаких не читал, результат на пикрилах.
>Но в генерациях нейронок проебана перспектива
Всё нормально там с перспективой, у художников перспектива НАМНОГО хуже.
>Ну и как? Получилось?
Сначала хотел показать, но передумал. Generative AI засасывает сильнее ютуба...
>>А точно ли тебе нужна реалистичная цепь для этой механики?
Не знаю. Когда я говорил "реалистичная", я имел ввиду нормальная цепь с поведением цепи. Для реализации оков, типа чугунного шара привязанного к ноге.
Сейчас буду пробовать с восемью гранями или что-то ещё.
>Для реализации оков, типа чугунного шара привязанного к ноге.
Так бы сразу и говорил. Это сложнее сделать нормально, чем просто свисающую цепь. В зависимости от стилизации игры, может быть лучше вообще не использовать физику, а сделать просто набор анимаций, как персонаж тащит за собой шар... или бьёт этим шаром по мордам врагов. Физика в любом случае будет добавлять хаос и управлять этим хаосом сложно, особенно если ты хочешь добиться "реализма".
Если у тебя сегменты пролетают сквозь что-то, попробуй переключить это:
https://docs.godotengine.org/en/stable/classes/class_rigidbody2d.html#class-rigidbody2d-property-continuous-cd
>>68121
>Ты лицевые и торцевые пинами склеивал?
Да, как видно на рисунке, там простая связь цепочки RigidBody2D.
>А скрипты что?
Ничего. Сначала хотел сделать процедурное добавление сегментов, но было лень.
![Сним2к.png](https://2ch.life/gd/thumb/963889/17223223429180s.jpg)
Так вот как сделать чтоб вся эта конструкция неподвижной была? Вытащить все блоки из контейнера? Звучит как-то не очень...
Так зачем ты интерфейсный контейнер юзаешь? Он для этого не предназначен. Делай свой контейнер, либо тайлмап юзай.
Пиздец.
Почему бы не почитать документацию для начала?
https://docs.godotengine.org/en/stable/tutorials/2d/using_tilemaps.html
>ремейк копателя онлайн в двадэ
Имхо, в 2Д лучше ориентироваться на Террарию.
Тебе. Копатель онлайн - слабый клон майнкрафта для нищих вконтактевских детей. Ценности в нём ровно столько, сколько в мемах "АТАШОЛ", "УХАДИ".
По сути, любой клон Майнкрафта в 2Д будет так или иначе сравниваться с Террарией как эталоном 2Д игр про копание процедурного ландшафта. Так что имеет смысл заняться изучением её механик, а не какого-то унылого 3Д клона другой 3Д игры.
Но если ты делаешь из ностальгии, тогда другое дело.
Давно знаю об этой фиче, но ценность минимальна. Цветовое обозначение слабо заметно на и без того визуально пёстром коде. Если у тебя весь код в этих цветастых тегах, потом не разберёшься, что к чему.
Лучше бы сделали список TODO как список функций слева внизу редактора. Чтоб кликнул и перешёл на строчку с конкретным TODO. Полезнее подсветки.
>Лучше бы сделали список TODO как список функций слева внизу редактора. Чтоб кликнул и перешёл на строчку с конкретным TODO. Полезнее подсветки.
Я делаю похожее через поиск по всему проекту, Ctrl+Shift+F, ищу свои TODO, кликаю на них и оказываюсь где нужно.
> Лучше бы сделали список TODO
Давно знаю об этой фиче, но ценность минимальна.
Аддонами решается вопрос.
https://godotengine.org/asset-library/asset/1327
https://godotengine.org/asset-library/asset/768
С камерой зафиксированной на персонаже все работает как надо, тк очевидно персонаж всегда в одной точке по центру. А вот если камеру отдалить/отключить/зафиксировать на чём-то другом – то приходится елозить мышкой по всему столу, как на втором видосе.
Щас поворот делается через обычный лук_ат
![Видео 01-08-2024 213234.mp4](https://2ch.life/gd/thumb/963889/17225378799010s.jpg)
976x720, 1:07
ИМХО большая ошибка. Следил за одним девом на ютубе. Так понял что он одно время был в команде разработчиков гта вайс сити где занимался мультиплеером. Так он с одиннадцатого года больше десяти лет разрабатывал игру мечты, куда пытался запихнуть все. Но так и не закончил, и сейчас пилит другие проекты, иногда возвращаясь к своему долгострою. Тоже пихал в свою игру и гонки и игры разного жанра в качестве миссий.
Если честно я увидев твою игру подумал о 3д. Но для оригинальных уровней. То есть можно переключаться в 2д или 3д от первого лица чтобы ходить по твоему зданию. Но я ничего не сказал потому что затея странная.
Ну да, я сам ещё в сомнениях на самом деле, стоит ли 3д пилить, но скорее из-за контраста, переход из 2д может вызвать диссонанс, будто другую игру запускаешь, и может 3д пространство условных игроков больше привлечет, нежели основное 2д. Поэтому я за пару дней запилил это. Прост ещё думал как можно иначе киберпространство реализовать, но чет в голову ничего не приходило, либо было слишком скучным, а так было бы клево найти шифр в 2д, чтобы ввести его в 3д и открыть новую сценку, или ударить 5 раз подряд по штанге и получить футбольный костюм.
Хуй знает в общем, если откажусь развивать, оставлю чисто как пасхалку
![Видео 02-08-2024 013720.mp4](https://2ch.life/gd/thumb/963889/17225522188290s.jpg)
1018x578, 1:20
Как же хочется 3д... но там надо ещё больше прог изучать...
Выставь правильные массы телам. Я заметил, что в большинстве игр такая проблема. Физический движок позволяет выставлять вес/массу, но разрабы забивают на это (или не знают) из-за чего все предметы в ирге весят 1 кг и чтобы они не летали по карте от удара ноги, разрабы прибегают к различным костылям. А надо всего-то массу корректно выставить предметам.
![goooool.png](https://2ch.life/gd/thumb/963889/17225853218360s.jpg)
Не думаю что визуальный кодинг когда-либо сравнится с обычным по гибкости и удобству, на любом языке. Разве что ИИ придет порядок наведет.
Привет, анон - пишу редко и может даже не метко, так что прости заранее если не правильно понял вопрос или дал косячный ответ, но почитал и в голове родилась такая идея - трансформируй движение мышки в поворот какого ни будь объекта (окружности) к которому прилеплена твоя (лук_ат) мишень, сама же окружность прилеплена к персонажу.
Вот такие мыслишки.
В целом решил ответить т.к. люблю ТСШ, но руки никак не доходят до такого.
>киберпространство реализовать
Стилизовать под восьмидесятые-девяностые, раз игра имитирует этот отрезок. Типа при входе в 3д, логотип трехмерный появляется "3D TECHNOLOGY SYSTEM", и в 3д анимации дубовые как в те года. Вырвиглазные модели голых девушек, с малополигональными сиськами. 3Д может быть средой чтобы взламывать и хакерствовать, потому что мы все знаем что хакеры используют 3д пространство чтобы взламывать пентагон и разные шифрования. Во время взлома полупрозрачные пирамиды крутятся очень эффектно и круто. Если в киберпространстве найти разные секреты которые дают доступ к взлому разных штук. То можно сделать себе хакерское имя. Например заходишь в бар а там нерды обсуждают крутого хакера которого боссы ищут и не могут найти.
Кстати хотел спросить. Как ты делал порноанимацию которую выше выкладывал, какие инструменты использовал? Очень классно получилось.
>заставить мышку быть нормальным стиком
Не получится по определению: особенность стиков в возвращении в исходное положение, чего у мыши по определению нет, если ты не закрепишь её ИРЛ резинками к какой-нибудь платформе на столе.
Спасибо, навело на мысли. Можно держать невидимую хуйню, только не на самом персонаже потому что хз как ограничить движение мыши в одной области, а в центре экрана, вертеть ее мышкой и дублировать угол поворота персонажу.
>>68781
Ну в этом случае возвращение в исходное положение не имеет значения, тк последнее направление остается, это же не авиасим
>Типа при входе в 3д, логотип трехмерный появляется "3D TECHNOLOGY SYSTEM"
Без этого вообще никак. Так сказать часть минимальной базы.
>Вырвиглазные модели
Я вот думал в таком русле пойти, вырвиглаз яркие цвета вапорвейв и все такое, но находится в 3д тогда будет просто неприятно. Поэтому ограничусь такими простыми примитивами и гармоничными цветами. Впрочем, хуй знает может в будущем захочу больше углубиться в 3д и начну пилить треугольные сиськи и анимации.
>хакеры используют 3д пространство чтобы взламывать пентагон и разные шифрования
>заходишь в бар а там нерды обсуждают крутого хакера которого боссы ищут и не могут найти
Это тоже кста база минимум, но начну добавлять с обновлениями в будущем, тк хуй знает какой можно сделать прикольный взлом, и плюс на это уйдет оч много времени, и вообще это очень комплексная вещь.
Щас я сделаю небольшой шифр связанный с 2д и 3д, и продолжу пилить контент сценки и сюжетка для 2д, тк надо уже хоп хоп и выложить всё, а потом просто поддерживать и думать.
>Как ты делал порноанимацию которую выше выкладывал, какие инструменты использовал?
Просто в анимейшен плеере кости с анимировал. Вообще, максимально по неандертальски, через визибл отображаю куклы которые участвуют в сценке, думаю нужно было сделать по уму через инстанс кукол с определеной анимацией а потом удалять их, но я уже так начал, хз как в долгосроке это сыграет, но пока не мешает лично мне.
>>68782
>Попробуй шейдеров накинуть, например, тот "дождь символов" из Матрицы, отображающий 3D фигуры
Да, вот тоже думаю нужно что то накинуть на объекты, типа текстурку пиксельную и на неё дождь символов. Либо ща так подумал, растительность добавить, но вместо травы как раз символы, а на строения пиксельный кирпич с шумом. Хзхз кароч, над будет думать
Нахуя даунгрейдиться до 2Д?
К 4.3 проапгрейдили fbx импорт.
Нахуй не нужен, я когда попробовал глтф портнуть в годот охуел какой же пиздопляской мне приходилось с анрилом заниматься.
А ну мб, я просто сам всё в блендере ебашу
Оптимист в треде!
![football.webm](https://2ch.life/gd/thumb/963889/17226744426490s.jpg)
1082x850, 0:21
Вот это совпадение... Такую игру я тоже делал!
>Что за разработчик, где посмотреть его проект?
https://www.youtube.com/watch?v=SebVNodMV4Q
На его канале глянь девлог Genocide Dolphins
https://www.youtube.com/watch?v=DnPEKI-XBCw
https://www.youtube.com/watch?v=aH75wzt1Jm8
https://www.youtube.com/watch?v=cQhcdDA_ZWQ
https://www.youtube.com/watch?v=j8TpMgWNB58
Вот нашел у себя в закладках из его девлога, драму с юнити, где как мне кажется он упирается в ограничения движка юнити, и пытается на протяжении времени решить проблему с AI для NPC.
Зависит от степени интеграции со стимом и стимворксом. С нулевой интеграцией можешь залить тупо дефолтный экзешник. Для более глубокой есть плагины. Перекомпилировать на 4 не нужно, плагин все умеет.
Если реально собираешься публиковаться в стиме, и ты из РФ - зайди потом расскажи чего там по санкциям.
Я не он, но че там рассказывать? Стим не работает с ру картами, в любом случае нужен счет из белых стран
Помимо ру-карт, которые можно обойти или забить на них и выпустить бесплатную дрочильню, могут вылезти подводные камни вида "не принимаем публикации из РФ в принципе".
>не принимаем публикации из РФ в принципе
Да всё они принимают, но у них по законам США в данный момент нет возможности напрямую тебе переводить деньги, только через костыли.
К сожалению, сообщество Стима ранее не хотело введение криптовалют в Стим, а так бы могли легко обойти систему, делая переводы в стимкойнах.
Стиму тупо невыгодно отказываться от новых игр.
![godot.png](https://2ch.life/gd/thumb/963889/17227801300130s.jpg)
>думаю нужно что то накинуть на объекты, типа текстурку пиксельную и на неё дождь символов
Ты неправильно понял. Накинь шейдер на рендер 3D сцены, чтобы выглядело типа вывод в ASCII.
Примерный алгоритм:
1. Рендеришь 3D как обычно в SubVieport.
2. Делаешь свой CanvasItem шейдер.
3. Проверяешь яркость по UV в текстуре.
4. Как-то рисуешь символ вместо пикселя?..
5. ??????
6. Получаешь эмулятор 3D терминала.
Тогда о текстурах можно почти не заботиться.
>забить на них и выпустить бесплатную дрочильню
Один хуй за публикацию игры стиму надо заплатить 100$, а платить не с чего
>заплатить 100$, а платить не с чего
Куча сервисов разной степени паршивости.
Вот, например, не проверял, но это МТС:
https://payment.mts.ru/cyber/steam
![Видео 04-08-2024 193812.mp4](https://2ch.life/gd/thumb/963889/17227898673130s.jpg)
1280x704, 1:48
Как самому сделать не понял, поэтому с инетика скачал:
https://www.youtube.com/watch?v=xZWZQBwfkVA
Бля ну клевый эффект, и действительно ненужно заморачиваться с текстурами, можно конечно при желании, но сносно и так выглядит
>забить на них и выпустить бесплатную дрочильню
Выпусти такую
https://www.youtube.com/watch?v=ayqQXGNm99U
Почему так мало классических симуляторов на годоте?
Если просто музыка без певца - вряд ли кто-то что-то докажет. Если с певцом - есть небольшая, но все же вероятность, что доебутся.
Иди гугли, что такое стеганография.
Если вкратце, в любой цифровой продукт можно вставить уникальную подпись, которая не сотрётся даже при переупаковке продукта.
![1715457459213.png](https://2ch.life/gd/thumb/963889/17230294655880s.jpg)
Как раз игры с участием Хуана в список не добавлены. Но это наверное только по стиму стата.
Вообще годотя меня пока приятно удивляет. Меня пугали пропуками в движкосраче треде, но чёт пока их нет.
Не ну развивается продукт. Раньше было больше пропуков щас меньше. А шизики в движкосраче не интересуются прогрессом, им важнее затащить в споре.
Смотря какого масштаба игра, какие спецэффекты, какое железо.
Мне вот для веб игр 3д пришлось знатно урезать хотелки.
Да и в 2д честно говоря тоже есть какая то подгрузочка, которую пришлось спрятать за loading screen.
С начала этого года юзаю годот и пропуков пока не заметил, но это если говорить о 2д, как там в 3д хуй его знает, у меня только 1 лайтовая игра в 3д сделана. Единственный жесткий косяк от которого у меня сгорело очко, это то что блять в ексклюзив фуллскрин фпс какого то хуя лочится на 30 и пока ты не альтабнешься хуй он повысится, не ебу у меня у одного так или нет.
Еще недавно странная хуйня какая то была на твг с игрой на годот, у нульчебляди фпса нихуя небыло в ней хотя у меня на дноуте все замечательно работало. Так что шизик в движкосраче не пиздел когда говорил что у него на 3080 его старый проект пердит.
Понятное дело, что нужно делать, как тебе удобней, особенно в первый раз и т.д., но всё же хочется знать, как и что, на будущее.
>ексклюзив фуллскрин
А ты юзай борделесс виндовед фуллскрин. Сейчас не 2000.
Во-вторых, если ОЧЕНЬ надо, то отключаешь всинк, но вписываешь target_fps или force_fps, не помню как он называется.
>а тех, кто реально разрабатывают игры единицы и каждый делает через свою жопу
Этот прошарил суть еще в самом начале своего пути.
Возможно тебе подойдет signal bus или какой-нибудь глобальный синглтон, где ты соберешь все в кучку и не будешь путаться. Ну, советы советами, туториалы туториалы, но на самом деле ты научишься жопой чуять правильный путь игре к пятой.
>signal bus
У меня он есть, но там записаны сигналы, которые объекты издают. Например: signal light_show. Прибор в игре даёт сигнал, лампа в игре его принимает и включается.
>но на самом деле ты научишься жопой чуять правильный путь игре к пятой
Понятно, анонче. Только свой опыт, только хардкор.
У меня 2д игра, в которой из противников выпадают монетки Rigidbody2D.
Когда игрок подходит к монетам, они попадают в Area2D "Магнитная зона"и начинают притягиваться, я добавляю их в Array "Намагниченные".
Когда монетка притянулась и коснулась второй Area2D "Сборщик монет", она удаляется методом free(), но в Array "Намагниченные" остаётся пустая ячейка.
Помогите удалить эту ячейку, не используя метод clear() в Array "Намагниченные". В нём хранятся монеты, которые ещё не были подобраны, но уже летят к игроку.
>она удаляется методом free()
Ну тут рядом ее и удаляй из Array.
https://docs.godotengine.org/en/stable/classes/class_array.html#class-array-method-erase
Можешь намутить сигнал, если не хочешь связности с передачей массива.
>отключаешь всинк, но вписываешь target_fps или force_fps
Всегда так делаю, во всех играх, не переставая охуевать насколько всинк блевотная технология.
Чинится через костыль с сортировкой массива и resize()'ом, но мне это не нравится, выглядит как монстр Франкенштейна
У тебя в чем то другом ошибка. Array.erase() не создает null, он удаляет элемент без разрыва списка.
Возможно ты в этот момент находишься в каком-то цикле, где заранее в переменную загнал длину массива, а она изменилась в процессе. да та самая инвалидация итераторов
Потому что ты free() юзаешь чел, у тебя нода раньше удаляется чем происходит erase() поэтому елемент массива не удаляется а меняет значение на нуль. Так что это у тебя руки кривые, а не функция кривая. Иди читай чем free() от queue_free() отличается.
Ему и queue free не поможет, он же вроде в конце визуального кадра, а physics process может быть невовремя. Набо просто убедиться что free/queuefree вызываются в самом последнем шаге обработки, когда все остальные обработчики уже отработали
Как это не поможет, queue_free() удаляет объект всегда в конце кадра, а значит в массиве не будет проебываться значение елемента, что значит при вызове erase() мы всегда сможем его найти и удалить. free() вообще не желательно юзать для обычных нод, ресурсы чистить - заебись, ноды - нет.
Специально написал же, конец визуального и физического кадра не лбязаны совпадать.
![Снимок.PNG](https://2ch.life/gd/thumb/963889/17230480134990s.jpg)
>>69415
>>69413
>>69412
Пока что у меня такое решение, но если убрать последние четыре строки, в массиве остаётся null. Между free() и queue_free() разницы нет, что не ставь к body.
Но эти строки иногда вызывают баг, когда монеты находятся в Area2D притяжения, но не реагируют, поскольку они уже удалены из массива.
Мб call_deferred() поможет, но на данный момент не представляю как соединить ужа body_entered() и ежа call_deferred(). Буду думать.
> но на данный момент не представляю как соединить ужа body_entered() и ежа call_deferred(). Буду думать.
Хули там думать. Сигналы тоже можно коннектить как деферред. Изучай.
Накидал пикрил и как видишь все нормально удаляется, так что не выдумывай. Как и говорили тебе уже выше, erase не оставляет null, значит этот null там был изначально. Дебаж. Ищи ошибки.
Предположу что у тебя монеты спавнились сразу в зоне сбора, эта зона их обработала, удалила, а потом начала обрабатывать фоллов зона добавляя в массив, а так как монет больше нет записывала null. Опять же это предположение которое надо протестить, а мне влом этим заниматься. В любом случае проблема на твоей стороне.
![Снимок.PNG](https://2ch.life/gd/thumb/963889/17230637641080s.jpg)
Ты прав, нули в массиве остаются, если монеты появились внутри зоны притяжения. Интересно, почему так?
Если что, исправил это пикрилом
>внутри Area сразу триггерит
Ну да, а что это даёт? Почему в массиве остаются нули до сих пор не понятно.
Так ты посмотри там, где ты добавляешь. Ты сам туда получается не присвоеный объект вставляешь. Возможно как раз из за какого то другого порядка событий.
![image.png](https://2ch.life/gd/thumb/963889/17230674198790s.jpg)
Добро пожаловать.
В шапку.
![тян в очках.jpg](https://2ch.life/gd/thumb/963889/17231177286280s.jpg)
> Когда queue_free() ноду, её сигналы дисконнектятся от приконнекченного метода другой ноды?
Да. 5 секунд набросать код и проверить, но ты вместо этого спросил на дваче и ждёшь ответа. А мог бы игры делать.
> Куда вообще сохраняются коннекты сигналов?
В оперативную память.
Я делаю другие игровые механики, пока жду ответа на дваче. Что, уже нельзя глупые вопросы задавать?
Нельзя.
Из-за этого СССР развалился. Тоже там сначала глупые вопросы задавали, а потом это закончилось тем, что стали глупо мыслить.
![1723133381468.mp4](https://2ch.life/gd/thumb/963889/17231334111290s.jpg)
1280x720, 0:08
>Создать референс и не закрывать его при выходе (вручную счетчик увеличить), тогда зомби-процесс останется висеть в памяти и окно дебага останется открытым.
Editor -> Settings -> Run -> Output -> Always close output on stop
Такие дела. А зомби-процесс тебя за жопу укусил.
Да че вы с этой хуйней по всем доскам и тредам бегаете бля. То что начали пытаться в свое уже хорошо, хуево только то что это с большой вероятностью дефолтный попил бабла.
Так-то помимо годота в списке еще три движка есть. По факту они просто взяли те, что достаточно легковесные для их некрожелеза И хорошо работают на линуксе. Потому что там линукс будет - к гадалке не ходи.
>>69643
>начали
"Начали" они еще году так в 2008. Все подобные инициативы закончились как раз тем, что ты написал. Не мешает им повторять каждый год.
Хотел сделать камеру как в геншине но чет жиденького раздал
Придется для супер крутого хоррора мутить камеру как в сайленте
> Хотел сделать камеру как в
> жиденького раздал
> Придется
> мутить камеру как в
Почему ты решил, что если у тебя не получилась камера X, то у тебя получится камера Y?
Возможно тебе стоит ээ, не воспринимай за оскорбление, стоит почитать матчасть по камерам?
О да, наш человек! Я тоже хочу игру делать как дирижёр: сюда махнул палочкой - сделалась камера как надо, туда махнул - сделался геймплей какой хотелось.
>Разбирайся, учись
А как? С чего начать в общем изучение двигла и как двигаться? Нужен какой-никакой путь, ёбана. Я вот раза четыре уже пытался в Годо вкатиться, делал чото ну просто что в голову приходило. И каждый раз выгорал, потому что не хватала навыка или базы. Ну то есть вот писал я какой-то скрипт для передвижения по гайду из документации, потом по гайду из ютуба, потом с какого-то сайта ещё. И везде каждый делает по разному, использует разный синтаксис, разные функции, и в двух из трёх случаев это вообще не банальная хуйня, до которой я бы мог сам додуматься или списать с документации. Это хуй знает, сколько лет опыта за плечами нужно иметь, чтобы прийти к такому виду скрипта, который у тех людей. И так во всех аспектах. Документация как будто не охватывает всего на 100%, и даже прочти я её вдоль и поперёк два раза, то скорее всего вскоре наткнусь на нерешаемый ею вопрос. И всё - пук, среньк, обмяк и бросил очередной проект.
>>69693
И дополню ещё по поводу разбирайся, упрощай иначе выгоришь. Не знаю, не знаю. Я как раз по этому и выгорал, потому что тратил уйму времени на разбирательства и упрощения, вместо того, чтобы делать саму игру. Разбираешься вот, ебёшься, грубо говоря, с этой камерой неделю, а она один хуй какая-то ну не такая, как хотелось. И думаешь про себя - да ну нахуй, как так-то? Столько времени уже на одном месте топчешься, и всё бестолку. Значит не моё. И отсюда дизмораль и дроп. Ну у меня так было. Хуй знает, я не могу одним делом заниматься месяцами БЕЗРЕЗУЛЬТАТНО как местные гуру движка ,видимо, занимались в своё время. Понятное дело, что нужна практика, практика и ещё раз практика. Но когда эта практика вообще никакой отдачи не несёт, и ты как будто в болоте на одном месте дрыгаешься, это нихуя как дизморалит.
Компетенции нарабатываются годами. Выбирая в качестве хобби игроделание нужно не забывать, что это просто хобби.
скалолазы занимающиеся скалолазанием как хобби не ноют.
Этим просто занимается не много человек.
сыглы, батьки на ассемблере писали, а эти сами точку с запятой на клавиатуре не найдут
У меня за ними Филд следит и создает их. А если я сделаю каждую клетку нодой со скриптом, который смотрит вокруг, так будет лучше работать? Или нет? Можно ли без сложных структур обойтись? Вопрос не по годо получается. Но я короче не знаю, как механику с распространением чисто масштабировать на большую карту.
Звучит как подходящая задача для распараллеливания. По чанкам или даже по группам бактерий.
Как дирижёр (ну, почти, дирижёр-хоровик так-то, но принциаиальной разницы нет, хотя оркестры в целом сложнее), скажу по секрету. Чтобы музыка заиграла, надо сначала чтобы кто-то её написал нотами, она не из головы дирижёра транслируется; и писать музыку - это дохуя работы, причём довольно рутинной, не имеющей в себе ничего творческого. А потом надо чтобы музыканты выдрочили свои партии, а это те ещё ленивые жопы, открывающие ноты хорошо если уже на репетиции, а то и вообще на концерте. А потом (и это уже основная работа дирижёра) надо на репе ебать музыкантов, чтобы заставить их сыграть что-то удобоваримое и вместе. И самому тоже надо выдрочить все партии, потому что придётся одному думать за всех: кому когда вступать, снимать, у кого какие синкопы, на кого где надо строго ткнуть, чтобы вспомнил про своё косячное место; так к тому же музыканты принцессы нежные, каждый со своими тараканами. И на концерте это только зрителям кажется всё красиво, а с точки зрения дирижёра происходит лютый пиздец и щас за кулисами будем кое-кому пистоны вставлять.
Это я к чему. Чудес не бывает. Хочешь сделать музыку - ебись. Хочешь сделать игру - ебись. С каждым её элементом. Ебись до тех пор, пока не получишь результат, который тебя удовлетворит. Это единственный способ сделать хорошо; ну или по крайней мере научиться делать хорошо, чтобы в следующий раз просто без ёбли повторить предыдущий подход.
А возможно ли создать композицию по нотам дома, без оркестра? Я имею ввиду взять ноты, загрузить в какую-нибудь программу и на выходе получается звучащая композиция? Такое уже изобрело человечество или ещё фантастика?
Можно, но понадобится практика, лет 5-10.
Пока практикуешься, появятся нейросети, которые сами это делают.
Понял, видимо стоит сразу у нейросетям и идти тогда
В порядке увеличения количества ёбли и улучшения результата:
1. Нотные редакторы все умеют играть написанное. Другое дело, что звучит это хуёво и безжизненно.
2. Можно преобразовать ноты в миди и подорожечно скормить SF2/SFZ плагинам с загруженными в них оркестровыми семплами.
3. Накинуть на звук обработки, чтобы звучало натуральнее, как реальная запись.
4. Накинуть хуманизации, чтобы тайминги и громкость были не идеально ровными.
5. Вручную перепилить миди-дорожки, чтобы виртуальные музыканты играли с нужными штрихами.
Даже после пятого пункта итоговый результат всё равно палится, но хомячки уже не заметят разницы. В принципе, музыку для ММО так и пишут, иногда даже останавливаясь пункте на третьем.
Нейронкой саунд ебашь. Вот например эта - soundraw.io - заказываешь стиль промтом/мудом/темой/инструментами/темпом, потом получаешь кучку нейрокнопок которыми регулируешь генерацию каждого кусочка трека, добавляешь-удаляешь новые кусочки. Получается лучше чем 98% того кала, который предлагают тебе купить композиторы-люди к твоей игре.
Я хз чего все так фокусируются на рисовательных нейронках, когда в звуке они ушли гораздо дальше и просто уничтожили нахуй всех мамкиных дирижеров.
Спасибо!
>soundraw.io
Это звучит как набор готовых лупов из конструктора, пока до толковой оркестровой музыки нейронки не доросли.
Чтобы написать грамотный саунд вручную, нужно хотя бы представлять, как выглядит каждый инструмент, какой у него диапазон, какие партии на нём можно физически сыграть, как сидят музыканты и т. д., это помимо самих партий.
Мало написать партии, надо их загнать в плагины, это монструозные библиотеки на террабайты звуков (если хочешь голливудского уровня звучания). Если хочешь звуки в стиле 90-ых, то да, пойдут SF2 и какие-нибудь древние плагины типа Edirol Orchestral.
Проблема даже не в размере библиотек (хотя да, больше семплов - живее звук), а в том, на реальном инструменте можно сыграть разными штрихами. Приходится делать одну дорожку с таким штрихом, другую с эдаким, третью с сяким; ноты перекидывать с одной дорожки на другую. Особенно это касается всяких скрипок - там вообще заебёшься все движения смычка имитировать.
>террабайты
ах ты шалунишка
Да хочется самому попробовать. Есть идея игры где от звука будет много что зависеть и вот интересно смогу ли я что-то типа такого сделать на компьютере с помощью нейронок.
https://youtu.be/dT0ymh9ZWX4?si=KLJcsmYkPiUAfcF3
![14664997173950.jpg](https://2ch.life/gd/thumb/963889/17233814778130s.jpg)
Мои исходные мэдскиллз:
https://vocaroo.com/1gYmkGshHjY1
После обработки с запросом doom metal:
https://vocaroo.com/186PLsfea6PZ
Работает не стабильно часто просто ебашит новую мелодию поверх имеющейся, для такого результата понадобилось несколько попыток. Но для своих говноигор вполне можно использовать. Кста, не обязательно насиловать реальный инструмент, как в моем случае, можно просто напеть голосом мелодию или даже настучать на жопе, а ии разберется
Неблохо. Кодил под твой саунд минут 5.
Еще такую знаю: https://melobytes.com/en/apps - умеет генерить саунд хоть по картинке.
Прикольно, в целом наверное правильней брать уже готовую профессиональную мелодию, кормить её нейронки, и изменённая версия будет не оргиналом, но тоже качественно звучать (это предположение).
![image.png](https://2ch.life/gd/thumb/963889/17234473938610s.jpg)
Радианы пихать, но у тебя так получиться идеальная полуокружность. А то что у тебя нарисовано это эллипсоид с эксцентриситетом отличным от 1. В общем, гугли формулу эллипсоида и по ней делай.
И на том спасибо. Ладно, после работы вечером разъебу эту проблему как Тузик грелку.
Удачи)
Чего? Графон конечно да, а механически там же все примитивнее деус экса 2000 года какого-нибудь
ну, дак ласт оф асс полукильмец с нулевым челенджем
В её случае, о чем блять говорить, если не про графон
Делай свою где звук занимает важное место
Я когда делал часы на синусах в школе, там была формула посерьёзнее
> y = A • sin(B • x) + C
где A - амплитуда, B - частота, C - смещение фазы. Икс в радианах, если нужно в градусах, то в формулу нужно ещё подставить преобразование.
А придется. Иначе вместо дельфина пингвином станешь.
Я делаю довольно масштабную для соло-проекта бродилку по замку. Топ даун, 3д, все ассеты кроме звука - свои. Упор на исследование и казуальный паззловый фан. Боевка простая. Прогресс идет хорошо, пара локаций готовы и полностью играбельны - в состоянии, подходящем для релиза. Сейвы готовы. Сценарий написан, система диалогов для него тоже. Система катсцен готова. Базовый ИИ врагов готов, навигация для них готова. Короче в плане кода, думаю, на 80% все написано. UI только не трогал. Остается делать ассеты, лепить из них хитровыебанные замковые уровни и прикручивать сюжет. В самом конце займусь прикручиванием звука и UI. Такие дела. Скриншоты/видосы постить ИТТ не могу.
![image.png](https://2ch.life/gd/thumb/963889/17236303537110s.jpg)
>Мне интересно наблюдать.
Делаем с другом нашу первую игру - хоррор, на 15-20 минут. Хотя там никакого хоррора, особо и нет, лол. Код готов на 60-70%, сейчас ебусь с частицами (белая хуйня на пикче). Друг модели продолжает пилить. Я бы постил, но встаёт вопрос, а что писать?
Да просто может что по прогрессу, добавили там то, сё. Ну заставлять никого не буду, не хотите - не пишите.
Ну я уже месяц как нихуя не делаю, как на твг игру запилил так и подзабил. Сейчас занят осваиванием питона + дрочу алгоритмы. Игры хорошо, но денежки все же нужнее, заебалось сидеть без них.
Нет. Это хотяб позволит начать пытаться в бекенд. От гейдева я не отказываюсь офк, просто расставил для себя приоритеты.
![image.png](https://2ch.life/gd/thumb/963889/17236364879700s.jpg)
У тебя в Chacrger опечатка.
А с частицами прикольно ебаться. Добавляют игре жизни при минимальных усилиях.
Все правильно делаешь. Геймдев в соло это либо хобби в свободное от работы время, либо фуллтайм НО но имея пассивный сторонний доход.
>У тебя в Chacrger опечатка.
Да я знаю, это просто заглушки стоят пока, даже внимания не обращаю.
>А с частицами прикольно ебаться. Добавляют игре жизни при минимальных усилиях.
Согласен, но гайдов к сожалению маловато.
Что, уже? Ну теперь надо ждать 4.3.1
Новая релиз-страничка охуенна: https://godotengine.org/releases/4.3/
Воооо! Как раз игру делать собирался! Теперь-то точно начну!
Не знаю, кто как, а я не размениваюсь по мелочам, я сразу жду 4.5.
Осталось нормальные превью-тамбнейлы для сцен генерировать. Особенно 3д. До сих пор бардак, улетают туда-сюда, превьюшатся со странным ракурсом, пиздос короче.
> Все хотят сайлент хилл на годоте
Ващет я хочу скайрим на годоте с динамической погодой искаропки, чтоб и туман и дождь и снег.
Хуле доебался?
Я про мультиплеерные кнопки не срал. Хули до меня доебался? Иди к инфоцыгам в ютуб и их заёбывай. С сегодняшнего дня упоминание мультиплеерных кнопок буду репортить как щитпост.
Накама от героик лабс работает безупречно!
бля, срочно накидайте какие-нибудь незначительные баги, чтобы я мог оправдать себя и ждать 4.4
Поздравляю всех! Дождались!
>>70139
Не совсем понятно, кому нужно растягивать окно файловой системы на всю ширину экрана, особенно если экран модный нынче у дизайнеров ultra wide.
Я стараюсь скукожить это окно или вообще скрыть.
>>70141
>превью-тамбнейлы для сцен
>улетают туда-сюда
Может быть, это ты неправильно понимаешь, как они создаются? Превью обновляется по нажатию Ctrl+S, а ракурс - такой, какой у тебя сейчас на экране. Можно сделать перспективно или ортогонально, как хочешь. Нюанс в том, что если забудешь об этом и повторно сохранишь с другим ракурсом, превью изменится.
>Превью обновляется по нажатию Ctrl+S
Хз чего там обновляется, может у меня баг на старой версии, но в превью регулярно чушь оказывается, обновить их проблемно и Ctrl+S не помогает, пару раз после переименований оно вообще превью перепутало и не смогло их обновить за неделю активной работы в этих сценах, пока я весь кеш не снес.
>3D physics interpolation is already in the making,
>really serious players
Ноунеймы какие-то, без обид.
>SECOND DINNER IS AN AWARD-WINNING INDEPENDENT GAME STUDIO BASED IN CALIFORNIA. WE MAY BE SMALL, BUT OUR DREAMS ARE BIG!
Прям так и написали: МЫ МАЛЕНЬКИЕ, НО С ЧСВ)
>former Game Director of Hearthstone
Не понял, а что, хартстон - всё? Нет? Тогда почему его уволили с позиции гейм директора? Плохой, значит.
>Marvel Snap
Ноунейм F2P игра, франшиза тупо дарит фанбазу:
>26837 (82.9% positive reviews)
100% есть двачеры с /gd/, чья игра популярнее. Как минимум BRAIN / OUT собрал 15436 отзывов, а это буквально ноунейм платформер с пушечками, а не жирнющая франшиза омерики со спудимэном. Т.е. представляете масштаб обсёра? Игра ноунейма двачевателя почти уделывает жирную франшизу. Но главное: игра с душой vs франшизопопса для быдла.
Вопрос: как очередная бездушная ККИ (потому что, очевидно, у них все - специалисты по ККИ, и следует ожидать очередную дойную корову по франшизе) от команды ноунеймов может помочь развитию Godot?
давно уже в бете какой-то сделали или даже в альфе, не помню
там был какой-то баг со звуком ещё в вебе, вот тут не в курсе
>правильно ли я разрабатываю игру или нет?
Раз сомневаешься, значит - нет. Но менять ничего не нужно, пока не потребуется. Сначала делаешь что-то, потом занимаешься рефакторингом по красоте.
https://ru.wikipedia.org/wiki/Рефакторинг
Иначе можешь застрять на этапе проектирования.
Пример:
1. Делаешь кнопку в главном меню игры.
2. Захотелось мультиплеер, но кнопка мешает.
3. Рефакторишь кнопку для большего удобства.
4. Добавляешь мультиплеер в свою кнопку.
>У меня большинство интерактивных вещей завязаны на сигналах, если контента станет в 2 раза больше, то я буду в коде путаться.
Чтоб не путаться, нужно заниматься декомпозицией.
https://ru.wikipedia.org/wiki/Декомпозиция
Разделяешь игру на части и по частям делаешь.
Пример:
1. Игра состоит из "кнопки" и "мультиплеера".
2. Сначала делаешь отдельную "кнопку".
3. Потом делаешь отдельный "мультиплеер".
4. Соединяешь "кнопку" и "мультиплеер" в игру.
>>69399
>signal bus или какой-нибудь глобальный синглтон, где ты соберешь все в кучку и не будешь путаться.
Навалил кучу в стог и потом ищешь в нём иголку?
>>69400
>signal light_show. Прибор в игре даёт сигнал, лампа в игре его принимает и включается.
Ты неправильно делаешь. Лучше делать так:
1. Сцена "переключатель" с сигналом "нажат".
2. Сцена "свет" с методом "переключить".
3. Сцена "комната" с кнопкой и переключателем.
4. Соединяешь сигнал в рамках сцены "комнаты".
5. Сцена "дом" со сценами: "комната", "лестница"...
6. Сцена "город" со сценами: "дом", "машина"...
7. ???
8. Сцена "игра" тянет за уши всё это дело с диска. Не обязательно сразу, локальные сцены могут ждать события (приближение игрока, открытие двери) и подгружать или создавать субсцены динамически. Глобальное хранилище либо отсутствует, либо, по возможности, сведено к минимуму, чтобы не путать локальные состояния разных независимых систем, которые могут даже разные люди делать. Сила ООП!
>правильно ли я разрабатываю игру или нет?
Раз сомневаешься, значит - нет. Но менять ничего не нужно, пока не потребуется. Сначала делаешь что-то, потом занимаешься рефакторингом по красоте.
https://ru.wikipedia.org/wiki/Рефакторинг
Иначе можешь застрять на этапе проектирования.
Пример:
1. Делаешь кнопку в главном меню игры.
2. Захотелось мультиплеер, но кнопка мешает.
3. Рефакторишь кнопку для большего удобства.
4. Добавляешь мультиплеер в свою кнопку.
>У меня большинство интерактивных вещей завязаны на сигналах, если контента станет в 2 раза больше, то я буду в коде путаться.
Чтоб не путаться, нужно заниматься декомпозицией.
https://ru.wikipedia.org/wiki/Декомпозиция
Разделяешь игру на части и по частям делаешь.
Пример:
1. Игра состоит из "кнопки" и "мультиплеера".
2. Сначала делаешь отдельную "кнопку".
3. Потом делаешь отдельный "мультиплеер".
4. Соединяешь "кнопку" и "мультиплеер" в игру.
>>69399
>signal bus или какой-нибудь глобальный синглтон, где ты соберешь все в кучку и не будешь путаться.
Навалил кучу в стог и потом ищешь в нём иголку?
>>69400
>signal light_show. Прибор в игре даёт сигнал, лампа в игре его принимает и включается.
Ты неправильно делаешь. Лучше делать так:
1. Сцена "переключатель" с сигналом "нажат".
2. Сцена "свет" с методом "переключить".
3. Сцена "комната" с кнопкой и переключателем.
4. Соединяешь сигнал в рамках сцены "комнаты".
5. Сцена "дом" со сценами: "комната", "лестница"...
6. Сцена "город" со сценами: "дом", "машина"...
7. ???
8. Сцена "игра" тянет за уши всё это дело с диска. Не обязательно сразу, локальные сцены могут ждать события (приближение игрока, открытие двери) и подгружать или создавать субсцены динамически. Глобальное хранилище либо отсутствует, либо, по возможности, сведено к минимуму, чтобы не путать локальные состояния разных независимых систем, которые могут даже разные люди делать. Сила ООП!
УУУУУУУХ, бля, ща как начнём делать игры
Подключай внешнюю js либу.
>попадают в Area2D "Магнитная зона" и начинают притягиваться, я добавляю их в Array "Намагниченные".
>Когда монетка притянулась и коснулась второй Area2D "Сборщик монет", она удаляется методом free()
Зачем тебе массив монеток?
https://docs.godotengine.org/en/stable/classes/class_area2d.html#class-area2d-method-get-overlapping-bodies
Делаешь как-то так (в скрипте игрока):
>func _physics_process(delta):
>_ for body: Coin in magnet.get_overlapping_bodies():
>_ _ body.apply_central_force(...) # магнитная сила
magnet для притягивания, bag для подбора:
>func _on_bag_body_entered(body):
>_ if body is Coin:
>_ _ money += body.value # номинал 1, 5, 10...
>_ _ body.free()
Если игрок убежит от монет, они должны перестать притягиваться, что реалистично и часто встречается в разных играх. Если ты хочешь, чтоб монетки 100% втягивались, делай анимацией вместо физики.
Про то, что это мобильная игра тебе уже сказали. А поможет дополнительной видимостью движка, например хотя бы за счет таких новостей, как следствие дополнительными пользователями, а в перспективе донатерами и разработчиками. То, что лично ты не находишь их игры ТРУ ДИП МИНИНГ ГОТИ 10 ИЗ 10 - иррелевантно.
>скрипт для передвижения по гайду из документации, потом по гайду из ютуба, потом с какого-то сайта ещё. И везде каждый делает по разному, использует разный синтаксис, разные функции,
Сначала ищучи программирование в целом, которое должны были преподавать в средних классах школы. Только потом изучай движок - за какие ручки нужно подёргать, куда числа вводить, откуда принимать. К сожалению, без основ программирования изучать игровой движок типа Godot/Unity/UE бесполезно. Исключение - если ты дизайнер уровней, а не соло мастер на все руки. В соло ты всегда программист, конечно, если не делаешь рескин готовой игры в конструкторе игр или вообще сказку с картинками.
>>69673
>сделать камеру как в геншине
Не играл, но предполагаю, что там самая обычная орбитальная камера от третьего лица. Собираешь на SpringArm3D, код там тривиальный.
>мутить камеру как в сайленте
Там ведь не камера, а система камер - это сложнее, поскольку нужно в каждой комнате камеру ставить, проверяя, правильно ли она следит за персонажем.
Орбитальную камеру один раз сделал и забыл.
Никакого бага не было. А касательно звука, добавили семплы специально для веба, возможностей взаимодействия конечно с ними меньше, но звук теперь чистый. Добавили уже кстати давно в какой то из бет как и саму возможность портировать на веб без локнутого многопотока, жаль я сам об этом поздно узнал, приходилось с внешней либой на 3.5 ебаться.
![Санёк.jpg](https://2ch.life/gd/thumb/963889/17237425426640s.jpg)
>дополнительной видимостью
>хотя бы за счет таких новостей
>лично ты не находишь их игры
Тебя устроит очередной Санёк?
>огромная франшиза
>бездушный "ремастер"
>лишь бы состричь бабла
>баги и глюки интереснее игры
>весь интернет узнал про Godot
>ЗАТО ХОТЬ КАКИЕ-ТО НОВОСТИ
>вложенный цикл, на больших масштабах
>каждую клетку нодой со скриптом, который смотрит вокруг, так будет лучше работать?
Нет, будет ± так же или хуже. Ты просто переносишь большой цикл с места на место, а должен его как-то сократить или вообще избавиться от него.
>как механику с распространением чисто масштабировать на большую карту.
Уже обсуждали совсем недавно. В играх наподобие Minecraft и Terraria растения распространяются не одновременно, а маленькими случайными группами. Персонажи тоже могут обрабатываться группами по несколько тел вместо всех сразу. Смысл в том, чтобы распределить симуляцию во времени, не вычисляя избыточные промежуточные данные, которые игрок заметить вообще не может.
Т.е. вместо этого:
>for node in nodes: node.do_x_if_randomly_possible()
Нужно что-то вроде этого:
>for i in N: nodes[randi() % nodes.size()].do_x_now()
Тогда вместо 100500 проверок "должен ли я сейчас сделать X" будет только N "сделай X если можешь": наблюдатель (игрок) разницы заметить не должен. Конкретное N должно зависеть от размера карты и желаемой скорости моделируемого процесса.
>чего все так фокусируются на рисовательных
Потому что голую 2D тяночку любой оценит по двум выдающимся далёко вперёд достоинствам, при том качество сисек из-за лишних пальцев не страдает. Видеоигры продаёт, ВНЕЗАПНО, ВИДЕОряд, а видео создаётся из набора картинок - особенно с тянками.
>в звуке они ушли гораздо дальше
Да кому он нужен, этот звук? Ща музыки завались в интернетах, включай любую да слушай. А в игру тупо рандомный бесплатный трек вставишь, чай у тебя не музыкальная игра для искусствоведов-ценителей. Я обычно против ассетфлипов, но звук флипнуть - это фундамент инди-геймдева. Всё равно играть будут в беззвучном режиме, по множеству разных причин.
Да и вообще...
1. Геймплей - во что играем.
2. Графика - с чем играем.
3. GUI - как сильно бесимся.
4. Моды - как долго играем.
5. Сюжет - читаем на вики.
6. Звук - выкл в настройках.
С чего вдруг кто-то будет заботиться о звуке?
![7901052.jpeg](https://2ch.life/gd/thumb/963889/17237494262760s.jpg)
Узнал тебя по твоим узнаваниям. Игру делаешь?
С хуя ли? Я что ли qodot писал? Или я не предоставил из коробки в годоте удобный левел эдитор чтобы мозги не ебать разработчикам? Отьебись анон.
Ну надо обновиться же. Мало ли там какие-то хорошие новые фичи, которые могут пригодиться. Или нынешняя обнова ничего такого не принесла? Я помню там вроде какое-то обновление рендера было крутое, что все кипятком ссались.
Ты поменял версию движка, не дождавшись пока плагин станет ее поддерживать? Лоооол. Премию дарвина заслужил.
Не менял пока что, вот сегодня заглянул в тред и узнал что обновили. Да похуям мне.
О, помню тебя.
Пчел, ну ты это, обновляться "просто на всякий случай" в программировании - такая себе затея, шишки себе набьешь с нихуя. Весь энтерпрайз софт не просто так сидит на древних LTS версиях, а обновляется только если ОЧЕНЬ нужно, только на следующую LTS, и только с интенсивным тестированием.
Это касается не только годота, а вообще всей разработки чего угодно на чем угодно. Привыкай. А ты еще буквально в день релиза побежал обновляться, да еще с зависимостями в виде сторонних библиотек.
>ты еще буквально в день релиза побежал обновляться
он выше написал, что даже ещё не обновился, а уже порвался
ебало представил?
Да оно понятно, я до какого-то времени и сидел на самом первом релизном годот 4
![869.png](https://2ch.life/gd/thumb/963889/17237539466050s.jpg)
>полетать в запущенной из эдиторе игре
Только свой собственный скрипт камеры делать. Тривиальная задача. Но зачем тебе? Обычно, тебя волнует только то, что ты сделал в редакторе и что видит игрок, а не что-то за пределами видимости.
Я ща ебусь с процедурными анимациями где задаю направления движения и проверяю правильно ли я вычисляю их, двигая объект на позицию используя вектор направления. В анриле для этого был нод drawDebug который можно вызвать в любом блюпринте, но в годоте этого тоже нет, и с перспекивы игрока мне трудновато оценить как правильно располагается объект в глубину, и опять же в анриле это решается нажатием F8 и пролётом на другую позицию.
Shift+F в редакторе. Да, генерацию можно делать тул скриптами в редакторе.
>в запущенной
Ну ассетов с такой камерой полно.
Нет, это как раз не странно, а by design - в движке стараются придерживаться кор фич, чтобы он не разбухал
Проблема в том, что по мнению сотни разных разрабов окажется что надо сотня разных фич. Впрочем для этого есть пропозалы, можешь найти соответствующий и проголсовать.
Хотел возразить какому разрабу не нужна фри лук камера, а потом вспомнил про 2Д крестьян.
>задаю направления движения и проверяю правильно ли я вычисляю их, двигая объект на позицию используя вектор направления.
В чём проблема мышку вокруг персонажа крутить? В смысле, подойти куда надо и покрутить камеру вокруг. Впрочем, намного удобнее будет запустить отдельную тестовую сцену вместо полной игры с персонажем.
>с перспекивы игрока мне трудновато оценить как правильно располагается объект в глубину
А это значит, что игрок не оценит твоих усилий. Зачем отлаживать то, что никак не влияет на восприятие со стороны игрока? Фокусируйся на том, что видит игрок.
>опять же в анриле это решается нажатием F8 и пролётом на другую позицию.
В анриле много чего решается со слов рандомов, но устанавливать очередное bloatware лично мне лень.
>>70271
>странно что это не идёт искаробки
Из коробки есть всё для рендеринга, что тебе могло помешать почитать документацию и написать всего несколько строчек скриптов?
>>70279
>какому разрабу не нужна фри лук камера
Фрилук делается парой строк к орбитальной камере. Орбитальная камера делается парой строк к камере из коробки. Камера из коробки может всё что нужно абстракции над проекцией и куллингом в 3D - нет необходимости настраивать вызовы API вручную, по сравнению с настройкой OpenGL через SDL. Так что Godot имеет всё необходимое и даже лишнее.
>Возможно ли сделать в Godot игру типа сталкера?
У кто-то делает: https://roadtovostok.com/roadmap
>Чтоб пули по физике,
Физически пули в реалистичных шутерах обычно не делают, это бесполезно: пуля пролетает несколько километров почти по прямой за секунду, а все враги у тебя в радиусе максимум трёх десятков метров, иначе игроку неудобно будет прицеливаться в них.
>хороший интеллект врагов,
>симуляция жизни (вместе с онлайн-оффлайном),
Это зависит только от тебя. Из коробки есть только базовые инструменты для навигации. В плагинах несколько реализаций фреймворков для ИИ, но ты, в первую очередь, должен сам определиться, что тебе нужно сделать, и от движка это никак не зависит.
>иллюзия открытого мира создаваемая маленько-средними уровнями соединёнными между собой переходами
Это легко сделать. Даже полноценный открытый мир несложно сделать, если ты хорошо понимаешь, как организовать процесс загрузки чанков карты.
>Я что ли qodot писал?
Зачем тебе это? Quake уже 28 лет, отпусти его.
Или зачем тебе Godot вместо мода на Quake?
>удобный левел эдитор
Если не нравится расставлять мебель в Godot, тогда расставляй мебель в Blender. Собственно, Blender в прошлом официально имел встроенный игровой движок, который теперь отдельно развивается. Импорт в Godot напрямую из Blender официально поддерживается, никаких васянок.
Понимаю, в Blender много страшных кнопок, может перегружать. Но поняв, что тебе нужно всего лишь несколько кнопок и меню, всё становится лёгким и простым. Обладать каким-то там художественным талантом не нужно, Blender почти чисто для технарей инструмент, программисту в нём легко разобраться.
>>70238
>начинает менять команды от чего старый код может просто перестать работать
Все серьёзные изменения были при переходе на 4.0, другие настолько же серьёзные будут только на 5.0. Godot строго следует https://semver.org/lang/ru/
Мелкие изменения в API некритичны и о них заранее предупреждают. Но в любом случае, у тебя ведь есть резервные копии проекта: что-то совсем перестало работать и не фиксится - откатился и всё, проблемы?
Тем более что разработчики выкатывают множество предварительных сборок и ждут отзывов тех, кто их пробует на своих проектах. Твоя вина, что ты где-то пропадаешь полгода, а потом у тебя "команды не те". Обсуждения публичные, в отличие от Unity/UE и т.п.
>строго следует
Ладно, перепутал.
>Godot loosely follows a semantic versioning system, where compatibility is assumed between minor and patch releases, while major releases can break it.
https://docs.godotengine.org/en/stable/tutorials/migrating/index.html
Там даже официальные гайды по апгрейду есть.
Тут не движкосрач тред, спокнись. Я описал проблему и как я вижу решение на примере анрила, ибо там я уже решал такую же, и никого не призывал его устанавливать, если тебе так показалось. Что игрок оценит или нет решать не тебе, ты не видишь полной картины, впрочем тебе и не надо, я пришёл с конкретной проблемой, я получил ответы, на этом можно вопрос закрыть.
>как я вижу решение на примере анрила
Ты про эту строчку? >>70266
>в анриле это решается нажатием F8
Так ведь это не решение. Решение за тебя сделали. Решением в данном случае будет скрипт на языке другого движка, чтобы было понятно, в чём вообще проблема и как её решить средствами этого движка.
А ты предлагаешь скачать UE, создать там проект, скомпилировать, запустить, нажать F8 и посмотреть, каким образом там эта функция реализована...
![128153277476.png](https://2ch.life/gd/thumb/963889/17237635360920s.jpg)
>А ты предлагаешь скачать UE
Буквально в прошлом посте написал что не предлагаю, успокойся ты уже, сумасшедший.
Рендер с вулкана на огл поменяй посмотри чего будет.
ИМХО 75 редкий фрукт целься на 60 кадров.
![image.png](https://2ch.life/gd/thumb/963889/17238079011910s.jpg)
>Рендер с вулкана на огл поменяй
То, что на пике? Менял, та же херня.
>75 редкий фрукт
75 может и редкий, но всякие 144 не сказал бы. Да и один хуй, если люди привыкли на своей герцовке играть, а тут онли 60 придётся, то вероятно и дропнут.
А, ну это тоже пробовал. Кароче, я вроде нашел в чём дело. physics_ticks_per_second по умолчанию 60 стоит. И я попробовал поднять его до 120 и макс фпс тоже 120 установил, ну эксперимента ради. И всё тоже норм работало. Только стоило поднять фпс до 121, то всё снова начало дёргаться. Но я вернулся к 60, на разработке больше и не надо.
120 физических это очень много. У игроеп комп банально может не вытянуть
![image.png](https://2ch.life/gd/thumb/963889/17238304930380s.jpg)
>The issue you're experiencing seems tied to how the engine handles and propagates global transforms through the scene graph, especially when objects are moved or their transforms are set in quick succession. Trying the above approaches may help mitigate the problem by controlling when and how the engine processes these transformations. If none of these solutions work, it might be worth exploring whether the engine's documentation or community has specific advice for handling complex transform hierarchies.
Ответ гопоты. Чё реально что ли Хуан не смог сделать движок, который не срёт под себя когда я двигаю несколько дочерних объектов друг за другом?
![210416082024.PNG](https://2ch.life/gd/thumb/963889/17238317821930s.jpg)
А чё ясно? rotation_center родитель, это деточки. Какого хуя годоту не похуй в какой последовательности я их двигаю?
Ищи ошибку в другом месте.
![14234794617620.jpg](https://2ch.life/gd/thumb/963889/17238401008500s.jpg)
Попытался воссоздать баг в пустом проекте - не вышло. Запускаю опять тот проект где был тот баг - его нет.
Где то в этом разделе анон скидывал туториал как сдеалть просвет мешей спомощью лайгта 3д
не могу найти, может знает кто?
Пожалуйста.
А про не работает - адаптируй, принцип наверняка тот же. Четверка функциональней трешки. Вот за минуту нашел: https://forum.godotengine.org/t/achieving-light-only-reveal-effect-in-godot-4-for-3d-objects/71816/4
![Снимок.PNG](https://2ch.life/gd/thumb/963889/17238581829470s.jpg)
По ИДЕЕ, всё должно быть работоспособно
https://baran-lydoed.itch.io/samosbor2000
> sex scenes
No thanks.
К слову, как ты понимаешь, что игра будет интересна людям? Я думал нужно покупать рекламу на демку/трейлер и смотреть реакцию
А че веб билд не сделол шоб я не качал?
Люди с недоверием относятся к экзешникам. Я когда свою скачиваемую игру на реддите пиарил, мне они так и писали - "надеюсь ты не двачер ебаный приличный человек и не напихал туда малвари, потому что я рискнул и скачал".
Вечером потестирую твой самосбор на виртуалке.
Вообще беспонятия, денег на еду нет, не то что на рекламу, скоро придется искать работу. А так ща смотрю 129 человека скачало, из 590, ещё человек 5 подписалось на итч, впринципе нормас, может если буду обновления два раза в месяц пилить, кто то даже денежку кинет, а так я в раскрутке не силен и в целом боюсь работать с людьми.
>>70491
Чет как-то не подумал, просто решил уже взять и выложить, чуть позже веб версию сделаю, но хз че там с сохранениями будет, как они вообще должны будут работать
> а так я в раскрутке не силен и в целом боюсь работать с людьми.
Советую тогда посмотреть видос, там про маркетинг прям по шагам всё расписано на опыте реальной игры
https://youtu.be/n_35g3MRtoQ?si=Lf8PBYSG98wF7L74
>кто то даже денежку кинет
Ты поставь на итче pay what you want. Мне так примерно раз в месяц закидывают пару баксов.
Гляну, но тут скорее в себе нужно разобраться, так сказать научиться брать ответственность, тогда не страшно будет везде спамить игрой и слушать жалобы
>>70535
>Хуя, ты уже бустач прикрутил
Вообще уже давно, но постоянно его переименовываю. ТЯЖЕЛО ПРИДУМАТЬ НИК ПО КОТОРОМУ ТЕБЯ ЗАПОМНЯТ
>>70543
>Ты поставь на итче pay what you want
В России вроде не вывести никак эти деньги, поэтому плашка будет лишь глаза мазолить, а бусти вроде как раз работает и с нами и с иностранцами
Я с тегами пока плохо работаю, но вот только что поставил адулт вместо опен ворлда
Отказываюсь, выбираю играть в игры анонимусов из этого ИТТ треда. Я буду играть, а вы делайте для меня.
![снимок2.PNG](https://2ch.life/gd/thumb/963889/17239522711130s.jpg)
За сутки в общем, 1500 просмотров, 330 скачиваний и 15 подписчиков на итч, и тег адулт перегнал все остальные, надо было сразу его ставить. Личный рекорд, до этого в лучшем случае 200 раз в браузере сыграли.
Ну и решил ликвидатора сделать
кто не покажет, того на 48 часов без интернета оставлю
Но я на 3.5 ...
Но он же вышел вчера..