Gamedev

Ответить в тред Ответить в тред
Godot #19 Аноним # OP 10/09/20 Чтв 16:17:25 6980541
1599743830052.png 1552Кб, 1700x1700
1700x1700
Добро пожаловать в тред любви, взаимопомощи и форматирования отступами!

Ссылки
Скачать движок: https://godotengine.org/download/ или http://store.steampowered.com/app/404790/Godot_Engine/
FAQ: https://docs.godotengine.org/ru/latest/about/faq.html
Документация: https://docs.godotengine.org/ru/latest/ https://docs.godotengine.org/en/stable/
Примеры качаются прямо в движке через свой магазин в отдельной вкладке AssetLib. Там есть всё - от платформера до чата.
Игры, созданные глобальными кириллами: https://steamcommunity.com/app/404790/discussions/0/412448792354265655/
Изумительный Годот: https://github.com/Calinou/awesome-godot - подборка дополнений, модулей и минишоукейс от одного из авторов.

Годнота от анона
- Для приверженцев опенсорца существует возможность распространять проекты в незапакованном формате. Просто скачай темплейт с оф.сайта и положи экзешник/эльфешник в папку с проектом, этого достаточно. Дополнительно можешь вшить свою иконку в экзешник. После этого, запустившийся файл темплейта обнаружит рядом с собой файл project.godot и начнет грузить проект из него и из файлов, лежащих в распакованном виде в той же директории.
- В версии 3.2 появилась возможность прикреплять pck к бинарнику. Бриллиант для любителей однофайлового продукта!
- Редактор персонажей на основе makehuman: https://github.com/Lexpartizan/Go_MakeHuman_dot
- Тест-бенчмарк:
- - Веб-версия - https://govdot.herokuapp.com
- - Вишмастер для винды - https://govdot.herokuapp.com/4Anon.rar

Предыдущий тонет там: >>681839 (OP)

Архивы:
1 https://arhivach.ng/thread/207802/
2 https://arhivach.ng/thread/388500/
3 https://arhivach.ng/thread/388501/
4 https://arhivach.ng/thread/388502/
5 https://arhivach.ng/thread/388503/
6 https://arhivach.ng/thread/432708/
7 https://arhivach.ng/thread/433902/
8 https://arhivach.ng/thread/436355/
9 https://arhivach.ng/thread/455461/
10 https://arhivach.ng/thread/479963/
11 https://arhivach.ng/thread/489815/
12 https://arhivach.ng/thread/494513/
13 https://arhivach.ng/thread/515567/
14 https://arhivach.ng/thread/533171/
15 https://arhivach.ng/thread/555441/
16 https://arhivach.ng/thread/592945/
17 https://arhivach.ng/thread/592946/
Аноним 10/09/20 Чтв 17:10:38 6980682
>>698054 (OP)
> В версии 3.2 появилась возможность прикреплять pck к бинарнику. Бриллиант для любителей однофайлового продукта!
Кстати на TWG не сработало, некогда было разбираться почему.
Аноним 10/09/20 Чтв 17:41:07 6980773
Аноним 10/09/20 Чтв 17:43:54 6980804
>>698077
Нет, винда. Мне даже кажется один раз запустилось, но больше ни разу, и ни у кого.
Аноним 10/09/20 Чтв 18:01:17 6980855
Есть годные примеры по изометрическим рпг?
Аноним 10/09/20 Чтв 18:40:24 6980916
Аноним 10/09/20 Чтв 19:04:15 6980977
>>698080
Чё за игра? На недавнем ТВГ? Там вроде как не было игр на годоте?
Аноним 10/09/20 Чтв 19:18:49 6980998
>>698097
Чего? Полно было.
Аноним 10/09/20 Чтв 19:27:13 6981009
>>698099
Чегоо? Серьёзно? А куда делись все участники с прошлых ТВГ?
Аноним 10/09/20 Чтв 19:30:31 69810210
>>698100
А куда делся двач в 2009?
Аноним 10/09/20 Чтв 19:54:44 69811511
Ебашу сейчас стейтмашину на гдскрипт. Почувствовал, что доразвился до реализации собственной стейтмашины. Состоит она из трёх классов:
1. собственно сама машина (FSM)
2. класс-состояние (state)
3. класс-передача (transition)
Все классы наследуются от Reference, то есть, это не ноды и не могут входить в дерево сцены. И разумеется, у них нет коллбэков к мэйнлупу.
Машина содержит в себе массив состояний и массив передач.
Передача содержит в себе ссылки на состояние-откуда и состояние-куда.
Класс-состояние содержит в себе функции start, stop и update. Состояние это базовый класс с пустыми функциями, в си, это был бы абстрактный класс, требующий наследовать от него специализированных потомков с реализацией этих функций.
Алгоритм работы таков. У машины есть своя функция update, которая пробегает по массиву состояний, чекает у них внутреннюю переменную mode которая enum { Active, Idle } и у найденных активных выполняет их функцию update.
Каждая передача создаётся с обязательным указанием ссылок на состояния, и при своём создании подписывается на их сигналы activated и finished, которые сигналы излучают при переходе из режима в режим. Соответственно, при переходе состояния в idle состояние излучает finished и если в какой либо из передач оно указано состоянием-откуда, оно активирует эту передачу, а она активирует состояние-куда согласно своему режиму либо сразу, либо ждёт, когда то состояние будет idle. Можно запрограммировать машину так, что из одного состояния будет выходить несколько передач к другим состояниям, активируя их одновременно. Это несколько расходится с классическим определением конечного автомата, который должен иметь одно активное состояние в единицу времени, но звучит интригующе.
Я предполагаю использовать данную машину, объявляя её переменной, а затем вручную вызывая у неё update там, где мне надо, когда по таймеру, когда в _process.
Программирование машины пока что предполагается из кода, без каких бы то ни было визуальных компонентов. Создаются состояния-потомки, реализующие требуемый функционал. Объявляется машина, объявляются состояния, в машину специальной функцией добавляются передачи вместе с состояниями. Стартовому состоянию выставляется режим Active и начинает вызываться update из машины, как описано выше, по требованию.
Если всё получится, то следующим шагом прикручу конфигурирование из текстового конфига.
В чём вопрос? Спросишь ты. Этот пост скорее минидиздок для себя, чтобы собрать мысли в кучу.
Аноним 11/09/20 Птн 02:11:57 69816412
>>698115
>передача
Сцук, ты там что, коробку передач в автомобиль проектируешь?
Transition == Переход.
Аноним 11/09/20 Птн 02:17:28 69816513
>>698115
И да, я не сильно вникал в твою писанину, но навскидку, вот это:
>которая пробегает по массиву состояний, чекает у них внутреннюю переменную mode которая enum { Active, Idle } и у найденных активных выполняет их функцию update.
и вот, это:
>Можно запрограммировать машину так, что из одного состояния будет выходить несколько передач к другим состояниям, активируя их одновременно.
выглядят, как крайне хреновые идеи.
-------
>Это несколько расходится с классическим определением конечного автомата, который должен иметь одно активное состояние в единицу времени, но звучит интригующе.
Это звучит так, что ты наебешься, когда будешь делать отладку этого франкенштейна. Не трахай себе мозг и делай отдельные стейтмашины.
Аноним 11/09/20 Птн 10:38:31 69817314
1599809565.png 22Кб, 510x435
510x435
1599809588.png 5Кб, 504x285
504x285
>>698164
О, спасибо, а я вчера мучительно подбирал русскоязычный термин, так и не подобрал. Код универсален, можно и гонки на нём сделать.
>>698165
> хреновые идеи
> наебешься
Ну а щито поделать, программирование не лишено некоторой доли мазохизма.

Алсо, всё заработало. Пикрелейтед. Доволен как слон. ЧСВ +10
Аноним 13/09/20 Вск 16:07:16 69851315
Посоветуйте, как закодить контроллер, чтобы он катился и подскакивал?
Аноним 13/09/20 Вск 18:02:40 69853016
>>698513
2d? 3d? Можно на физике, у rigibody тела можно создать физический материал, там есть bounciness. А само вращение можно задавать какими-то пропертями angular_... Но может быть без импульсов не обойтись будет.
Можно и без физики, просто обычный контроллер, только при движении спрайт/меш выставляешь на угол, пропорциональный пройденному расстоянию (чет там на пи поделить). Подпрыгивать, соответственно, так же как прыгают в обычном контроллере вычитая из .y и потом прибавляя гравитацию.
Аноним 13/09/20 Вск 21:13:59 69859017
Общался с одним из представителей годототреда по поводу игры про иерархию карт. Прикладываю исходники моего говнокода.

https://dropmefiles.com/TWCLL
Аноним 14/09/20 Пнд 09:35:51 69868818
1600064850.png 30Кб, 739x483
739x483
>>698173
> всё заработало
Чтобы эта машина не казалась абстрактным экспериментом, приведу пример использования, пиклелейтед класс-состояние, который при его достижении, управляет персонажем с клавиатуры. Можно активировать другие состояния, в которых персонаж управляется компом, в катсценках например, или использовать несколько типов управления (на земле, под водой, в полёте, и т.п.), или реализовать геймплей майнд-контроля, когда вашего персонажа контроллит лич, а вы судорожно стучите по клавише хила, чтобы управление вернулось.
Аноним 14/09/20 Пнд 11:49:41 69869319
>>698590
У тебя уже много сделано, молодец
Аноним 15/09/20 Втр 00:27:01 69883120
>>698693
Да, я же говорю, тупо забомбил от того, что не могу карточки нормально по столу на рандоме расположить так, чтобы они не пересекались и перегорел, лол.
+ без понятия как сделать нормально кастомные вызовы функций с передачей туда параметров.
Аноним 15/09/20 Втр 12:27:04 69886321
>>698831
> как сделать нормально кастомные вызовы функций с передачей туда параметров
Эмм, поподробнее здесь. Я вызывал кастомные параметрические методы несколькими способами. Чаще всего через встроенный механизм .call(), .callv()
Аноним 15/09/20 Втр 14:00:53 69887822
>>698831
Я на твг делал карты на сигналах. Правда, толком не доделал. Идея простая - кому надо, тот на те сигналы и подписан. Например, карта может получить сигнал пора лететь в такую-то точку. Начинается анимация, когда анимация закончится, карта получит сигнал об окончании анимации и разошлет сигнал о том, что она на месте. В простых случаях вызывающий код просто ждал по yield(...). В сигнале можно передавать данные. Это может быть массив, или к примеру, словарь. [location:"лес", action:"мамку твою любил"]
Аноним 15/09/20 Втр 18:24:42 69890023
>>698863
Все верно. А теперь представим, что для части действий, которые должен сделать пользователь, ты должен передать урон этой же карте, другой, герою, печенью на столе. Меняется только объект. И вот это разделение говнокодом на matchс каким-нибудь текстом из жсона меня выбесило чето.

>>698878
Сигналы это круто,но я о другом.
Аноним 15/09/20 Втр 23:54:33 69894724
>>698900
> для части действий, которые должен сделать пользователь, ты должен передать урон этой же карте, другой, герою, печенью на столе
Анон выше верно заметил, это делается через сигналы.
> это разделение говнокодом на match с каким-нибудь текстом из жсона
Возможно, твоя задача более удобно решится через глобальные сигналы. Объясню: делаешь синглтон, в нём объявляешь сигналы. Излучает сигналы только этот синглтон. Объекты, когда им нужно, подписываются на глобальные сигналы своим коллбэком. После чего ты единожды излучив нужный сигнал (signal_hub.emit_signal make_damage(10), будешь уверен, что эта же карта, другая, герой, печенье на столе, обработают глобальный сигнал и нанесут себе урон.
Аноним 16/09/20 Срд 00:04:21 69895025
1600203860868.png 32Кб, 494x400
494x400
>>698947
Вот например, у меня в одном из проектов было:
Аноним 16/09/20 Срд 12:59:51 69899726
>>698947
Не нужны сигналы. У моего персонажа есть ссылка и на первую карту и на выбранную и на себя. Он вполне может агрегировать внутри себя эту логику. Да и сигналы много кушают, как бы они не были удобны. Нотификациями быстрее.
Аноним 16/09/20 Срд 13:53:13 69900627
>>698997
А ты куда то торопишься в карточной игре?
Аноним 16/09/20 Срд 20:38:38 69917728
>>698997
> Да и сигналы много кушают, как бы они не были удобны. Нотификациями быстрее.
Ничоси, какой внезапный хинт. Изучил вопрос и нашёл вот эту писечку:
https://github.com/didier-v/GodotNotificationCenter
Пойду щупать.
Аноним 16/09/20 Срд 20:41:08 69917929
>>699177
Зачем это? Это то же самое, что делают сигналы.
Аноним 16/09/20 Срд 20:42:38 69918030
>>699179
Я уже сам разглядел. Да ещё и хуже, надо вручную дисконнектить. Я думал, этот код юзает встроенный механизм нотификаций, а это просто название в коде.
Аноним 16/09/20 Срд 20:45:34 69918131
Аноним 16/09/20 Срд 21:23:52 69919832
>>699181
На моём примере. У чувака есть 3 спелла. Первый юзается на себя, второй на героя, третий на комбо карту. Все что они делают - передают дамаг. Причем тут сигналы? Мне надо прокинуть верный референс без заеба, считав из жсона ноду.
Аноним 16/09/20 Срд 21:40:03 69920833
Аноним 16/09/20 Срд 21:41:56 69921034
>>699198
У тебя в проекте, который ты скидывал, это реализовано? Назови точное место. Я несколько раз туда заглядывал, но ничо нипонил.
Аноним 16/09/20 Срд 22:08:58 69921535
>>699198
> считав из жсона ноду
Нирикаминдую такой подход, несмотря на то, что он показан в официальной документации (навскидку, в статье по сохранениям игор).
Моё мнение - игровые данные (которые считываются из текстовых жсон-файлов) должны быть отделены от внутренней логики движка. Это значит, что никаких нод и путей к нодам в жсон быть не должно. В терминологии жсон объект - это ассоциативный массив, который в терминологии годота - словарь. Вот единственное, что я сериализую и всем рекомендую. Приложения перекидываются между собой словарями. Этого необходимо и достаточно для подавляющего большинства задач.

Если же тебе для поднятия карты, нужно десериализовать ноду, сохранённую в жсон - это, по моему глубокому убеждению, ошибка архитектуры твоего проекта.
Аноним 18/09/20 Птн 21:15:14 69953736
>>699210
Есть синглтон-персонаж. У него есть методы взаимодействия с миром. И вот каждая карточка спела несет в себе action_id, который является ссылкой в жссон на такой экшон. В будущем этот жсон сменится на бд. И он такой считывает жсон и вызывает то, что надо.

>>699215
Я знаю. И я по этому сгорел. Как указать одностроково в коде таргет который описан в скролле жсона, чтобы это могли быть разные таргеты. Не ясно.
Аноним 19/09/20 Суб 11:20:43 69955637
>>699537
Подойдёт ли тебе метод Пети "Сканера" с ютуба? Он добавляет в проект единственный синглтон для глобальных вещей G - Global. В нём он заводит переменные для сущностей, которые должны быть видимы глобально, например var player : Node, а потом при загрузке сущности игрока, у неё в _ready пишется G.player = self
Но этот метод статичный, а у тебя, как я понимаю, таргеты будут динамически появляться и исчезать в течение игры, поэтому я бы попробовал завести словарь, но я подозреваю, что быстродействие такого решения будет медленнее, чем ранее посоветованный способ с сигналами. Потому что хоть хэш, хоть хуэш - поиск таргетов будет происходить по строковым ключам.

Я сам не уважаю этот модный молодёжный подход, когда части приложения обмениваются между собой строковыми идентификаторами. Как серпом по яйцам, когда вижу emit_signal("string_signal_name"). Зумеры уверяли меня неоднократно, что строки в современных средах исполнения хэшируются и их быстродействие якобы не отличается от именованных целочисленных констант. Но я во первых не проверял, а во вторых всё равно хочется emit_signal(INT_SIGNAL_CONSTANT)
Аноним 19/09/20 Суб 13:58:09 69957638
>>699556
>Зумеры уверяли меня неоднократно, что строки в современных средах исполнения хэшируются и их быстродействие якобы не отличается от именованных целочисленных констант.
Я хз, но я не нашел (может плохо искал) описания того как это реализовано в годоте. Зная гений Хуана, там вполне может быть обычная цепочка "ссылка-длина-побайтово"
>>699556
Но я во первых не проверял, а во вторых всё равно хочется emit_signal(INT_SIGNAL_CONSTANT)
Вот да, я бы тоже не отказался от возможности присваивать объектам обычные человеческие числовые статические ID
Аноним 19/09/20 Суб 14:01:17 69957739
>>699556
>Подойдёт ли тебе метод Пети "Сканера" с ютуба? Он добавляет в проект единственный синглтон для глобальных вещей G - Global. В нём он заводит переменные для сущностей, которые должны быть видимы глобально, например var player : Node, а потом при загрузке сущности игрока, у неё в _ready пишется G.player = self
Жесть, как же это плохо выглядит.
Аноним 19/09/20 Суб 14:05:59 69958040
Аноним 19/09/20 Суб 16:05:51 69959141
>>699580
Вовсе да. Метод Пети жоска абузит принцип инкапсуляции. В глобальном объекте прямые ссылки на разные части программы. Какая уж тут инкапсуляция когда всем всё видно? Сначала возможность напрямую обращаться к игровому персу, неписям, сундукам на сцене выглядит заманчиво, но потом наступит путаница и пиздец. Неизбежно наступит путаница и обязательно придёт пиздец.
Гораздо корректнее выглядит описанный выше принцип глобальных сигналов.
Игровым объектам всё так же нужно у себя в _ready обращаться к глобальному объекту, но в этом случае они не оставляют там прямую ссылку на себя, а регистрируются на глобальные сигналы. Глобальный объект может дёргать эти сигналы, но ни он, ни другие объекты не могут обратиться к получателям сигналов напрямую.
Я настолько глубоко изучил данную тему, что даже научился возвращать данные с излученных сигналов. Просто регистрируешь сигнал с аргументом и следуешь соглашению о том, что аргументом должен быть словарь, в который все зарегистрированные на сигнал обработчики добавляют запись о результатах своей работы.
Например, в глобальном объекте:
signal query_something(query_result) #Пока что язык не позволяет задекларировать в аргументе статический тип, увы.

Далее, в объектах-обработчиках:

func _ready():
____G.connect("query_something", self, "process_query")

func process_query(byref_result : Dictionary):
____byref_result[self.name].data = "Задание принял сержант %s" % self.name
Аноним 19/09/20 Суб 16:11:52 69959542
>>699591
О, и в объектах-излучателях примерно так:

func command():
____var reports : Dictionary
____G.emit_signal("query_something", reports)

После чего в словаре reports окажется что-то типа:
{
"Иванов" : { "data" : "Задание принял сержант Иванов"},
"Петров" : { "data" : "Задание принял сержант Петров"},
"Сидоров" : { "data" : "Задание принял сержант Сидоров"}
}
Аноним 19/09/20 Суб 23:34:39 69967043
>>698900
> А теперь представим, что для части действий, которые должен сделать пользователь, ты должен передать урон этой же карте, другой, герою, печенью на столе. Меняется только объект. И вот это разделение говнокодом на matchс каким-нибудь текстом из жсона меня выбесило чето.
>>699198
> У чувака есть 3 спелла. Первый юзается на себя, второй на героя, третий на комбо карту. Все что они делают — передают дамаг. Причем тут сигналы? Мне надо прокинуть верный референс без заеба, считав из жсона ноду.
> Причем тут сигналы?
Я всё больше убеждаюсь, что именно сигналы здесь притом и к месту.
>>698997
> Да и сигналы много кушают, как бы они не были удобны. Нотификациями быстрее.
Я так и не увидел примера твоей работы с нотификациями. Я бы освоил эту подсистему. Если конечно имеются ввиду те самые нотификации, которые идут через _notification(what)
Аноним 20/09/20 Вск 14:53:32 69974144
>>699670
Сигналы нужны, когда я хочу десятку неизвестных сказать - вперед/назад/стань красным, на какое-то событие.
А когда у меня четкое ограниченное число лиц, на которых я имею референс, тогда не надо.
Вопрос только в том, как использовать референс адекватно.

Но спорить об этом без смыслено. Давай на практике.

Есть dict спелов.
var mayspelldict = {
0: {"name":"damage spell", "damage":5, "func":"hello_world"}}
Как заставить пикачу юзнуть это на всех/одного себя/вызвавшего и т.п.?
Аноним 20/09/20 Вск 19:53:52 69982145
>>699741
Если у тебя есть референсы на все нужные тебе объекты, то наиболее адекватным решением будет вызывать у требуемых тебе объектов нужный метод. И всё.

Практически это означает, что у тебя есть скажем, несколько объектов, которые реализуют интерфейс "ПринимательСпеллов" (разумеется, в гдскрипте нет интерфейсов и возможности объектами указанный интерфейс реализовывать, потому в гдскрипте, это всё следует сделать ручками).
Допустим, принимателями спеллов у нас являются сами карты, игроки, игровой стол. Как у принимателей спеллов у любого из них есть созданный тобою лично метод .accept_spell(spell_data : Dictionary)

Таким образом, наш пикачу, когда ему необходимо, берёт имеющиеся у него референсы, согласно игровым правилам, и пишет:

ref1.accept_spell(myspelldict[0])
ref2.accept_spell(myspelldict[1])
desk.accept_spell(myspelldict[100500])


Ну а приниматели спеллов у себя в вышеуказанном методе применяют полученный из аргумента спелл на себя. Разумеется, проверяя, что в метод прилетел спелл, а не словарь с прогнозом погоды в Мозамбике. Парсить словарь придётся в любом случае.

Есть ещё вот такой вариант, тоже с серпояйцевыми стрингами:
call_group("spell_acceptors", "accept_spell", myspelldict[0])
В этом варианте роль интерфейсов частично берут на себя группы. Включая объект в группу, ты "должен" позаботиться, чтобы в нём были реализованы методы, которые ты потом будешь дёргать через call_group.

Если хочется кодить нормально, с соблюдением парадигм и паттернов, чтобы классы принудительно реализовали интерфейсы, чтобы данные между инстансами передавались по числовым ключам, минуя явные и неявные преобразования в строки, то тогда рекомендую заюзать годот-шарп и кодить всю ключевую логику на шарпе. А уж мелочи вроде загрузить/выгрузить, показать/скрыть/задать-цвет-прозрачность - на гдскрипте.
Аноним 20/09/20 Вск 20:00:54 69982246
>>699741
> "func":"hello_world"
Ах да, и вот это ещё не заметил.
Ну, это в любом случае через call.

if ref1.has_method("hello_world"): ref1.call("hello_world") else: assert(false, "Wrong object for call hello_world!")
Аноним 20/09/20 Вск 20:12:56 69982347
>>699741
Для простоты проверки можно типизировать данные отдельным ключом в словаре:
var mayspelldict = {
0: {"type" : "spell", "name":"damage spell", "damage":5, "func":"hello_world"}}


После чего, кастуем спелл на имеющиеся референсы:
ref1.accept_spell(myspelldict[0])

После чего объекты по референсам у себя в методе делают так:
func accept_spell(spell_data : Dictionary):
___ if !spell_data or !(spell_data.has("type") and spell_data.type == "spell"): return

Этим условиями мы убедились, что в аргумент прилетел строго типизированный спелл, в котором точно есть name:String, damage:int, func:String и далее можем не выполнять утомительные перепроверки, но в случае, если юзеры залезут шаловливыми пальчиками в наши файлы данных (юзеры даже в БД смогут залезть через сторонние утилиты, даже зашифрованные данные расшифруют), то наша игора будет падать как тот скайрим, крошиться на десктоп после каждого чиха. Поэтому тут решай сам: удобство сейчас или головняк с саппортом потом.
Аноним 21/09/20 Пнд 12:17:24 69988148
Парни, подскажите пожалуйста, возможно ли в годоте сделать варианты ответа и хоть какие-то диалоги?
Аноним 21/09/20 Пнд 12:25:36 69988249
Аноним 21/09/20 Пнд 12:50:27 69988750
Аноним 21/09/20 Пнд 19:39:48 69996151
Парни, подскажите пожалуйста, как в годоте сделать диалоги с вариантами ответов?

Мне надо чтобы были скилл-чеки и эквип-чеки (это когда у гироя на поясе весит легендарный ибанитовый меч +2 к ловкости и он может в диалогах поугражать что дастанет мечь и уебет).
Аноним 21/09/20 Пнд 20:54:29 69996752
>>699961
В треде тут обычно все свои велосипедят.
Что такое варианты ответа? Это кнопки какого то вида (не обязательно кнопки, может быть спрайты). Они собираются в список, например в VBoxContainer.
Тут я вижу два варианта. Первый - набирать список по пунктам в коде, например из какого-то массива вариантов ответа. И по условию не добавлять твой пункт, если меча нет.
Второй - наоборот, накидать сразу все возможные ответы, а отсутствующие по условию скрывать.
В реале, там будет не массив, а скорее какой то словарь.

Или ты можешь пощупать готовые ассеты. Там есть и с условиями.
https://godotengine.org/asset-library/asset/628
https://godotengine.org/asset-library/asset/273
https://godotengine.org/asset-library/asset/416
Аноним 22/09/20 Втр 00:49:33 69999253
>>699967
Годный ответ, спасибо, бро!
Аноним 22/09/20 Втр 15:12:18 70001854
изображение.png 85Кб, 857x608
857x608
Откуда берется input_vector, и что вообще означают записи в скобках?
Аноним 22/09/20 Втр 16:12:15 70002655
>>700018
Это объявление функции. В скобках - параметры, которая она принимает.
Пример из математики - функция синус принимает параметром угол.
При вызове функции эти параметры будут заполнены значениями. Вызов смотри в 16 строчке.
Аноним 22/09/20 Втр 19:27:23 70005456
>>699821
Бля, о принимателе спелов я не подумал. Годная страта.
А что скажешь о расположении объектов на местности в генерирующемся случайном/псевдослучайной порядке, но при этом объект не должен наслаиваться на другой обьект?
Аноним 22/09/20 Втр 19:39:57 70005757
>>700026
Откуда этот параметр будет браться? Переменная input_vector в нескольких функциях задействуется. Или в скобках ничего общего с переменной не имеет?
Аноним 22/09/20 Втр 20:00:18 70005958
>>700057
Параметр функции - это как бы новая переменная. Она "затеняет" другую. Т.е.

var x = 1
var y = 2

func foo(x):
print(x)
print(y)

foo(300)

>300
>2
Аноним 22/09/20 Втр 20:06:50 70006059
>>700059
Для чего это нужно вообще
Аноним 22/09/20 Втр 20:13:54 70006160
>>700060
Для того, чтобы функция работала с тем, что ей передали. А не с оригинальной переменной.
Например, на тело действует ветер, и ты вызываешь с другой переменной
apply_horizontal_force(input_vector, delta)
apply_horizontal_force(wind_vector, delta)

Если тебя смущает совпадение имени, то просто переименуй.
Аноним 22/09/20 Втр 20:15:01 70006261
>>700061
Ничего не понял, но спасибо
Аноним 22/09/20 Втр 20:20:02 70006462
>>700062
Ну смотри - как бы ты написал функцию возведения в квадрат?
Она получает параметр и возвращает значение.
func square(x):
return x*x

Этот x определен как псевдо-переменная внутри функции.
Ты можешь вызывать эту функцию
square(2) #вернет 4
var x = 3 #завели переменную x
square(5) #вернет 25, потому что ВНУТРИ функции x означает по прежнему то, что в нее передали, а не этот новый x
Аноним 22/09/20 Втр 20:22:37 70006563
Аноним 22/09/20 Втр 20:26:42 70006664
>>700064
Типа чтобы возвращать какое-то значение не меняя общую переменную?
Аноним 22/09/20 Втр 20:34:13 70006865
>>700066
Да, можно и так сказать.
Аноним 22/09/20 Втр 20:34:39 70006966
>>700068
Не проще просто новую переменную в функции заводить?
Аноним 22/09/20 Втр 20:37:53 70007067
>>700069
Тебе нужно как то обращаться к полученным параметрам. У них должно быть имя.
Аноним 23/09/20 Срд 13:53:44 70018168
изображение.png 114Кб, 1920x1042
1920x1042
Сап годотач. Делаем кликер и не знаем как заставить лэйбел прибавлять и отображать кол-во очков, по нажатию на кнопку. Скрин с кодом предоставил
Гугл ответов не дал
Аноним 23/09/20 Срд 14:09:14 70018469
1495677166412.png 87Кб, 690x848
690x848
>>700181
Все правильно, но надо подкчлючить сигнал.
Либо из UI редактора (справа вкладка Узел, рядом с Инспектором)
Либо из кода: $Button.connect("pressed", self, "_on_Button_pressed")
Аноним 23/09/20 Срд 14:16:25 70018570
Аноним 23/09/20 Срд 14:40:39 70019071
>>700184
Благодарю анонче, не знаю что бы я без тебя делал.
Аноним 24/09/20 Чтв 16:50:49 70029872
>>700065
Петр, ну хватит кидать сюда свое говно.
Аноним 24/09/20 Чтв 21:37:38 70032073
>>700298
Покажи туторы которые не говно. Я серьёзно.
Аноним 24/09/20 Чтв 22:01:09 70032174
Есть способ получить _грань_ объекта с которой произошло столкновение в физике? Желательно без перекомпиляции с++
Аноним 24/09/20 Чтв 22:02:19 70032275
>>700054
Накинь на объекты дополнительную area и пусть генератор перед тем, как выставить следующий объект, проверяет нет ли в сгенерированном месте чьих-либо area, если есть - значит будет наслоение, значит надо сгенерировать другую точку.
Аноним 24/09/20 Чтв 22:04:37 70032376
>>700065
> Почему у вас нет туторов этого парняги?
Он и без нас прекрасно справляется. Щас бы пиарить конкурента бесплатно, ага.
Аноним 24/09/20 Чтв 22:06:25 70032577
>>700323
>конкурента
Вут? Скаммерсофт ты что ли?
Аноним 24/09/20 Чтв 22:08:17 70032678
>>700321
Нормаль столкновения физический сервер возвращает. Согласно направлению нормали можешь посчитать с какой стороны столкновение и теоретически определить подходящую грань.
Аноним 24/09/20 Чтв 22:08:59 70032879
>>700325
Я Петя Сканер и это - мой любимый тред на дваче.
Аноним 24/09/20 Чтв 22:10:01 70032980
>>700326
> теоретически определить подходящую грань.
Сложна. Вот в three.js мне реальный индекс грани в меше вернули.
Аноним 24/09/20 Чтв 22:11:27 70033081
>>700323
>конкурента
Ты бы своей кпыше крикнул остановится. Какой конкурент, он в каждом видео говорит о точ, что сам учится и не является последней инстанцией и внезапно оказался прав о том что рускоязычных полных туторов по годоту на ютубе нет. Если у тебя есть примеры опровергающие это, то почему они не в шапке?
Аноним 24/09/20 Чтв 22:12:58 70033182
>>700326
Я имею в виду что движок же уже должен знать какая. По видимому придется в кишочки лезть.
Аноним 24/09/20 Чтв 22:18:53 70033383
>>700329
Тебя заждались в движкосрач-треде.
Аноним 24/09/20 Чтв 22:21:34 70033584
>>700333
Произошла чудовищная ошибка.
Аноним 24/09/20 Чтв 22:22:41 70033685
>>700331
> По видимому придется в кишочки лезть.
Лишь бы игры не делать. Вот я вместо тебя полез в документацию и уточнил, что при коллизии возвращается не только нормаль, но ещё и точка, и какие-то шейп-индексы. https://docs.godotengine.org/en/3.2/classes/class_kinematiccollision.html
Аноним 24/09/20 Чтв 22:27:05 70033786
>>700336
Точка - это просто координата в пространстве, она так же не помогает узнать грань. А шейп-индексы действительно "какие-то", это если у тебя несколько коллизий на одном объекте. Ты же понимаешь, что я сначала все это почитал а потом перепробовал. Пришлось написать свой tool скрипт который дублирует геометрию и строит ареа и коллижншейпы, но это же костыль оверхедный.
Аноним 24/09/20 Чтв 22:54:30 70034687
>>700337
Давай зайдём с другой стороны. Какую вообще задачу ты решаешь?

(просто я сейчас после твоих слов о тулскриптах почувствовал главную болезнь форумов, когда приходит пользователь, который поставил себе задачу, начал её решать неправильно и уже после этого обратился на форум за советом, как ему заставить работать своё неправильное решение)
Аноним 24/09/20 Чтв 22:56:23 70034788
>>700346
>Какую вообще задачу ты решаешь?
Определить грань меша, с которой произошло столкновение.
Аноним 24/09/20 Чтв 22:58:18 70034889
>>700347
Например для спецэффекта чтобы мигнула только она.
Аноним 24/09/20 Чтв 23:07:23 70035190
Аноним 25/09/20 Птн 13:42:47 70037291
>>700351
Это уже для следующего этапа, когда я захочу модифицировать полигон. Сначала мне надо узнать, какой именно полигон столкнулся.
Представь себе следующую ситуацию - игрок кидает нож во врага. Я хочу чтобы мигнул тот полигон в который он попал. Движок эту инфу судя по всему не пробрасывает https://github.com/godotengine/godot/issues/684
Поэтому я решил временно написав тул, который создает для каждого треугольника меша area, который уже сможет отозваться на рейкаст. Видимо без с++ никак.
Аноним 25/09/20 Птн 19:12:51 70060192
>>700372
Насколько я знаю, такую задачу решают помещением на одну модель нескольких коллайдеров.
Аноним 29/09/20 Втр 10:46:09 70103193
Итак, вот мои результаты исследования стейтмашин. Я написал две.

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

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

Я просмотрел имеющиеся в наличии стейтмашины на ассетлибе и выяснил, что они в том или ином виде относятся к одному из двух вышеописанных типов. При этом они тянутся со времён 3.0, в них перемешивается старый синтаксис с новым. И в общем-то, ассеты, они и тут ассеты - работать с ними непривычно, неудобно, демотивирующе.

Продолжу изыскания, попробую совместить оба принципа.
Аноним 29/09/20 Втр 11:09:08 70103494
>>701031
Мой дидовский подход к стейтмашинам выглядит очень просто.
Смущают строки или классы? Идут нахуй - стейты это просто enum интов.
Смущают косяки в транзишнах? Транзишны идут нахуй, все возможные переходы описаны в обработчике конкретного стейта через switch (или match), для необрабатываемых в default вывод ошибки.
Аноним 29/09/20 Втр 11:24:06 70103995
>>701034
Тащемта, всё так. Но хочется изъебнуться, например. Ну не игры же делать, в самом-то деле, а?
Аноним 29/09/20 Втр 11:28:41 70104296
>>701039
Ага.
Вспоминил еще почему не люблю enter/exit в FSM
В них все равно пролезает говно типа if (prevState was...)
Ну и нахуй так жить
Аноним 29/09/20 Втр 11:37:19 70104697
>>701042
Это говно теоретически исправляется разделением логики и данных. В твоём случае логика включения стейта пытается смешаться с данными о предыдущем стейте. Значит надо добавить в класс данные, набор флагов, включаемых стейтами и при старте стейтов смотреть не на предыдущий стейт, а на интересующие конкретно этот стейт флаги.

И разумеется, поскольку флаги - это данные, они с лёгкостью вынесутся из класса в БД, потом, на стадии оптимизации.
Аноним 29/09/20 Втр 22:40:31 70137398
Аноним 29/09/20 Втр 23:11:41 70137899
>>701373
Жаль что он тоже не выбрал путь реализма.
Аноним 29/09/20 Втр 23:31:12 701381100
>>701378
В одиночку ты не сможешь запилить реалистичный графониум уровня трипл-эй. Получится какое-нибудь корявое ассетоговно уровня 35мм. Поэтому как ни крути - нужно делать упор на стиль и геймплей. Стилизованный графон может быть пиксельный, может быть под первую плойку, или сингл-колор-лоу-поли.
Аноним 30/09/20 Срд 00:00:37 701382101
https://youtu.be/HKTR8upoaLw
За сколько в годо можно такие игры научиться делать, и что для этого нужно знать?
Аноним 30/09/20 Срд 01:27:22 701384102
>>701382
Какой у тебя опыт? Про арт ничего не скажу. Если умеешь кодить, механики тут пишутся за неделю (а может быть есть и пример игры с исходниками - не помню попадались ли такие), но если не знаешь - прибавь пару месяцев на изучение языков программирования и прохождение туториалов конкретно по top-down rpg и менюшкам в стиле ВНок.
Аноним 30/09/20 Срд 01:38:03 701386103
>>701384
Потом уже сами карты, уровни, сюжеты сверху плюсуй.
Аноним 30/09/20 Срд 03:47:52 701394104
>>701384
>механики тут пишутся за неделю
Две-три на самом деле, заебешься итерфейс кодить. Ничего сложного, конечно, но тупо долго и муторно.
Аноним 30/09/20 Срд 03:52:23 701395105
>>701031
Ты нихуя не знаешь про дидовский подход к стейтмашинам. Истинный дидовский подход - это цепочка if...elseif
Аноним 30/09/20 Срд 03:54:55 701396106
>>701394
Ну вот для интерфейса то как раз во-первых есть искаробочный гуй с кастомизацией тем, потом есть 9-patch rect, и в конце концов для диалогов-инвентарей есть хоть какие то ассетики.
Аноним 30/09/20 Срд 06:19:31 701403107
>>701382
Игры должны развлекать, а не вгонять в тоску.
Аноним 30/09/20 Срд 12:45:18 701413108
Аноним 30/09/20 Срд 14:02:36 701425109
>>701396
А логику(которая и занимает больше всего времени) за тебя будет личный раб писать?
Аноним 30/09/20 Срд 14:35:44 701429110
>>701425
Так в скинутой игре логики почти не наблюдается (один раз двигается ящик по принципу сокобана и 1 раз вводится число в кодовый замок), в остальном это просто зашел в ареа-сработал триггер, логику топ-даун бродилки можно найти в туторах за указанную неделю, а логика ассетов-диалогов будет работать из коробки, или ты про общую логику типа завести переменные-флаги- isHauntedHouseVisited, isNpcBartenderKnowsAboutGhost?
Аноним 30/09/20 Срд 16:39:50 701454111
>>701413
Тем кто деньги платит.
Аноним 30/09/20 Срд 17:10:31 701464112
>>701454
Ну если кого-то развлекает тоска, то что ж.
Аноним 30/09/20 Срд 21:22:31 701500113
xVHk2eK9lUc.jpg 38Кб, 453x452
453x452
Годаны, а в природе имеется учебник по гдскрипту в отдельном файле?
Аноним 01/10/20 Чтв 00:53:24 701517114
>>701500
Хз, страничка из документации подойдет?
Аноним 01/10/20 Чтв 02:23:49 701519115
>>701517
разве, что из скачивать и задрачивать.
Аноним 01/10/20 Чтв 10:04:31 701530116
1566035196592.png 263Кб, 795x419
795x419
>>701519
Ну смотри, в природе оно существует.
Аноним 01/10/20 Чтв 12:06:23 701543117
>>701530
о, так оно всё таки есть!
Аноним 01/10/20 Чтв 17:10:26 701590118
1581544892506.png 497Кб, 1441x953
1441x953
Подбираю сейчас трекер для геймджема, а оказывается Chibitracker Хуан сделал.
Аноним 02/10/20 Птн 11:40:54 701732119
Запилил генератор херни через surface tool
Но вообще не понимаю, как к этому объекту прилепить UV развёртку и повесить текстуру. По сути надо лишь развернуть планарной проекцией с видом сверху и на неё назначить текстуру
Но я вообще не пойму - через что это можно сделать?
Аноним 02/10/20 Птн 13:42:40 701790120
>>701732
Через что в движке? Ну вроде там есть add_uv, по аналогии с add_normal
https://docs.godotengine.org/en/3.2/tutorials/content/procedural_geometry/surfacetool.html
Почитай еще тут, там три инструмента для создания мешей, может тебе другой окажется удобней
https://docs.godotengine.org/en/3.2/tutorials/content/procedural_geometry/index.html
Или ты про сами алгоритмы uv развертки?
Аноним 02/10/20 Птн 20:16:31 701892121
>>701519
> скачивать и задрачивать
Ну если ты на дачу едешь, где интернетов нет.
Аноним 02/10/20 Птн 22:14:16 701913122
1495068402865.mp4 26161Кб, 1920x1080, 00:01:39
1920x1080
3 часа назад релизнулась бета 0.3.1 тайлового редактор LEd
https://github.com/deepnight/led/releases/
Его пишет автор dead cells, которому надоели неудобные редакторы.
Фишка редактора в автотайлинге - задаешь правила, какие тайлы могут появляться слева, с краю, сверху от каких - и просто рисуешь кистью по карте, а он все расставляет.
В чем магический эффект?
Вот этот ассет годота позволяет импотировать файлы редактора Tiled .tmx https://godotengine.org/asset-library/asset/158
А LEd 0.3.1 научился экспортировать в этот формат, если поставить галочку.
Таким образом, практически в два клика получаем в Годоте то, что рисуем в LEd.
Из замеченных косяков - при экспорте правила применяются в обратном порядке - поэтому при финальном экспорте надо будет переставить их (думаю быстро поправят), во-вторых расставленные объекты (враги, паверапы) промахнулись на 1 клетку вниз, в-третьих не нашел куда деваются кастомные проперти (если им там задавать здоровье, лут и т.д.)
Мржет быть кому то понравится.
Аноним 02/10/20 Птн 22:19:05 701915123
>>701913
> В чем магический эффект?
Маски, тысячи их. И связи логические.

Судя по видосу, редактор помощнее искаробочного, как минимум он может рандомно траву поверх граунда рисовать.
Аноним 02/10/20 Птн 22:26:14 701918124
>>701913
А, еще минус - там пока нет полигонных коллизий - под скосы и склоны. Вообще, по-моему там вообще нет коллизий - просто один из слоев данных можно трактовать как поклеточные коллизии.
Аноним 02/10/20 Птн 22:29:00 701919125
>>701913
> кастомные проперти (если им там задавать здоровье, лут и т.д.)
Обесни вот это, плиз. Что это, можно делать игру прямо в тайл-редакторе, без кодинга?
Аноним 02/10/20 Птн 22:29:34 701920126
Аноним 02/10/20 Птн 22:34:12 701922127
1510333243713.gif 805Кб, 1548x1061
1548x1061
>>701919
В самом редакторе заявляется вот такой пример использования.
Как ты потом распорядишься данными в игре - дело за тобой.
В принципе можно представить себе следующий воркфлоу - программист пишет логику, а предметы уже раздает дизайнер, главное чтобы называл их по ожидаемой кодом схеме.
Аноним 02/10/20 Птн 22:56:20 701928128
>>701920
Видал. Щупал. Не понравилось.
>>701922
Ясненько.
Аноним 03/10/20 Суб 09:21:26 701948129
>>701913
>во-вторых расставленные объекты (враги, паверапы) промахнулись на 1 клетку вниз,
Ха, я знаю как это поправить. Там в плагине всего в одной строке надо true/false переключиь. Доберусь до компа - посмотрю и отпишусь где.
Аноним 03/10/20 Суб 19:09:15 701998130
>>701913
>во-вторых расставленные объекты (враги, паверапы) промахнулись на 1 клетку вниз
>>701948
>Ха, я знаю как это поправить. Там в плагине всего в одной строке надо true/false переключиь. Доберусь до компа - посмотрю и отпишусь где.
Добрался, отписываюсь.
Плагин писался еще под версию годота 3.1, а там был косяк со сдвигом объектов в тайлмапах. В плагине добавили костыль для его обхода. В 3.2 косяк исправили, а в плагине костыль не отключили.
-------
Короче. В каталоге с проектом где используется плагин, находишь вот этот файл:
addons/vren.tiled_importer/tiled_import_plugin.gd
в нем находишь строку:
options.apply_offset = true
и меняешь значение на false.
И все должно быть нормально.
Аноним # OP 03/10/20 Суб 19:25:54 702001131
Аноним 04/10/20 Вск 19:41:24 702082132
Неспешно перекатываюсь на сишарп
На гдскрипте ждать следующий кадр будет так
yield(get_tree(), "idle_frame")
В C# нашел такое:
await ToSignal(this, "idle_frame");
Но требует чтобы я пометил функцию async.
А тогда же покрасятся все функции откуда и куда вызовы, то есть всю программу что ли придется делать async?
Или я переусложняю.
Аноним 04/10/20 Вск 19:42:12 702083133
>>702082
(Незначительная опечатка закралась await ToSignal(GetTree(), "idle_frame");
Аноним 04/10/20 Вск 20:28:54 702089134
Аноним 04/10/20 Вск 21:39:06 702095135
>>702089
Придется посмотреть попозже, просто функционал один и тот же, думал одной строчкой получится сделать.

На самом деле похоже столкнулся с особенностью таймлайна анимейшн плеера - хоть события и нанесены в одну точку, но сработать могут не одновременно, в моем случае смена кадра анимации и смена оффсета спрайта привели к промигиванию (кадр менялся но скакал в другую точку и потом возвращался обратно)
Аноним 04/10/20 Вск 21:40:19 702096136
>>702095
Хотя, тут возможно я сам лоханулся - всю логику то считаю в physics process, а аниматору такое же свойство выставить забыл.
Аноним 04/10/20 Вск 21:40:49 702097137
>>701998
Еще не смотрел, но спасибо за инфу.
Аноним # OP 04/10/20 Вск 22:49:03 702105138
Аноним 05/10/20 Пнд 11:33:38 702144139
Есть способ узнать разрешение экрана не включая фулскрин? Чтобы выставить окну максимальный размер.
Аноним 05/10/20 Пнд 11:52:13 702147140
>>702144
OS.max_window_size возвращает за вычетом рамки, т.е. не всю правду.
Аноним 05/10/20 Пнд 12:25:03 702163141
Решил попробовать годот, и блядь какое же это говно
Всё сделано через жопу
Аноним 05/10/20 Пнд 12:25:48 702164142
>>702144
OS.get_screen_size(-1)
-----
в скобках номер монитора если их несколько, -1 - текущий монитор.
Аноним 05/10/20 Пнд 12:30:09 702165143
>>702164
О, прикольно. Спасибо.
Аноним 05/10/20 Пнд 12:34:38 702166144
>>702163
Есть такое понятие как хиральность. Это когда есть два вида одинакового объекта, только различающихся зеркально, оптические изомеры в общем. И вот такая проблема - молекулы разной хиральности не подходят друг к другу. Не встраиваются в организм. Был такой случай, когда от лекарства Талидамид много выкидышей было. Так вот это я к чему веду. Если у тебя что-то не получилось в Годоте - есть неиллюзорный шанс, что проблема в тебе. Что ты ему не подходишь, потому что у тебя руки не той хиральности вырасли.
Аноним 05/10/20 Пнд 14:49:56 702256145
Если кто пользовался C# - API годота никогда не кидает исключения, только возвращает коды ошибки как в GDScript? Речь не про то что куда-то передал Null
Аноним 05/10/20 Пнд 19:43:47 702335146
>>702166
> хиральность
Слава Кодзиме гению, теперь этот термин у меня ассоциируется с летающими в небесах китами-зомби.
Аноним 05/10/20 Пнд 20:52:59 702343147
14706644721290.jpg 394Кб, 750x1121
750x1121
Как сделать что бы при наведении на кнопку курсор менялся на системный указывающий палец?
Аноним 05/10/20 Пнд 22:40:20 702353148
изображение.png 2271Кб, 1883x926
1883x926
А вы знали, что название доски /gd/ означает Godot?
Аноним 05/10/20 Пнд 23:12:22 702354149
>>702343
Использовать специальную кнопку LinkButton. Если нужно чтобы она выглядела, как обычная кнопка - скопировать ей тему обычной кнопки.

>>702353
Разумеется.
Аноним 06/10/20 Втр 12:21:29 702398150
https://2ch.hk/news/res/8465940.html#8466083
>Это те которые ничего не разрабатывали в своей жизни? Как я люблю их называть "Годот разработчики"
Вот это остряк.
Но впринципе верно подметил.
Аноним 06/10/20 Втр 21:20:54 702510151
1449478702415.png 186Кб, 1060x1047
1060x1047
Код плагина для добавления меню в главное меню. Работает с локализированным редактором тоже.
Аноним 06/10/20 Втр 21:21:03 702511152
>>702398
Ты тредом ошибся, движкосрачер, иди в свой загон и там обсасывай с такими же как ты недоумками, как даже в ньюсачах унижают "годотей".

Репорт.
Аноним 08/10/20 Чтв 21:48:25 702813153
>>698054 (OP)
не пойму, как работают отступы. Постоянно компилятор ругается, что где-то отступ просрал. Как это фиксится?
Аноним # OP 08/10/20 Чтв 22:06:24 702814154
1602183983890.png 42Кб, 895x719
895x719
>>702813
У меня такое бывает, когда я качаю ассеты из ассетстора, там какого-то хуя часть ассетов, по видимому какими-то гитхабовскими алгоритмами преобразует табы в двухпробельные отступы (или авторы этих проблемных ассетов за каким-то хуем настраивают двухпробельные отступы у себя в проектах). После чего годот пытается автоматически заменить уже 4 по его дефолту пробела, после чего код всирается, и если код длинен и сложен, то хуй ты уже восстановишь оригинал.

Костыльное и неудобное решение в таком случае, чтобы не портить свой код, создать отдельный проект, в его настройках выставить отступ в два пробела, скачать туда проблемный ассет, компильнуть проект один раз, чтобы годот заменил там по два каждых пробела на табы, после чего скопировать файлы ассета в рабочий проект.

Но воще это серьёзная проблема и надо создавать ишью. Но мне впадлу.
Аноним 08/10/20 Чтв 22:16:00 702815155
>>702813
Двачую табы vs пробелы.
Отступы работают так:
Все строки одного блока кода должны быть на одинаковых отступах. Они делаются табами.
Например
func somefun():
[tab]var x = 0 #эта
[tab]call1(x) #и эта
[tab]if x == 0: #и эта на одном уровне
[tab][tab]x = 1 #а этот вложенный блок
[tab][tab]call2(x) #на втором
[tab]x = 3 #вернулись на первый
[tab] call3(x) # ошибка - лишний пробел
Аноним # OP 08/10/20 Чтв 22:21:34 702817156
1602184893888.png 42Кб, 894x722
894x722
>>702813
А вообще, немношк покрутил опции, попробуй вот эту опцию отключить, пикрелейтед:


...
И вот этот совет следует пофиксить, так как настройки редактора глобальны для всех проектов, то:
>>702814
> создать отдельный проект
> настроить вооще редактор на двухпробельный таб с выставленной конвертацией при сохранении
> скачать двухпробельный ассет
> сохранить
> сбросить настройки вооще редактора на 4-пробельный таб
> перекинуть файлы
> ПРОФИТ

(А ищью Хуану надо закинуть следующего содержания: В файлы .gd следует добавить нечитаемую редактором, ну или содержащуюся в комментарии а-ля xml мета-инфу, содержащую как минимум, сколько пробелов следует рассматривать в данном скрипте как один таб. Закиньте, годаны.)
> #!tab:4!#
> extends Node
>
> func _ready(): pass
Аноним # OP 08/10/20 Чтв 22:24:22 702818157
>>702817
> попробуй вот эту опцию отключить
После этого, разумеется, придётся перекачать заново все испорченные автоконвертацией ассеты с заменой gd-скриптов.
Аноним 09/10/20 Птн 05:16:50 702851158
>>702818
>>702817
>>702815
>>702813

>табы
>пробелы
>табы
>пробелы
>ОТСТУПЫ!

Блин, как же хорошо, что я слез с иглы питоновсратого гдскрипта и пересел на лицо сишарпа.
Аноним 09/10/20 Птн 08:35:43 702859159
>>702851
Для разработки - сишарп, для джемов - только гдскрипт. Все таки компиляция солюшна отжирает ценное время между итерациями.
Аноним 09/10/20 Птн 08:44:48 702860160
>>702851
Майкрософтовская студия традиционно сама автоматически формирует отступы блоков, ещё с 90х, а может с 80х. Так же поступают все уважаемые ИДЕ, от дельфи до райдера. Так что визуально разницы нет, только кроме отступов у тебя ещё скобачьки сверху-снизу для сиподобных, бегин-энд для паскальподобных, энд %операторнейм% для бейсика, торобоан ротарепо для шеллскрипта. Именно это легло в основу философии питона: "Если отступы и так ставят почти все (кроме школокульхацкеров с их кодом в одну строку), то чобы не сделать отступы синтаксическим элементом?" Так был рождён питон, бейсик 21 века.
Аноним 09/10/20 Птн 09:10:28 702865161
>>702860
>Если отступы и так ставят почти все, то чобы не сделать отступы синтаксическим элементом?
Это и есть главный фейл.
Rак раз на днях искал пару часов баг, из-за поехавшего при копи пасте отступа в if.
Аноним 09/10/20 Птн 09:12:25 702866162
>>702859
Нахуй джемы. По крайней мере такие в которых лишняя пара секунд на компиляцию настолько критична.
Да и в принципе нахуй джемы.
Аноним 09/10/20 Птн 09:17:41 702870163
>>702866
Эта пара секунд складывается в часы.
А джемы - это область где годот может показать себя.
Аноним 09/10/20 Птн 09:28:05 702871164
>>702860
>Так что визуально разницы нет, только кроме отступов у тебя ещё скобачьки сверху-снизу для сиподобных, бегин-энд для паскальподобных, энд %операторнейм% для бейсика, торобоан ротарепо для шеллскрипта.
Весь финт в том, что в этих языках ситуация "удалил пару пробелов в начале строки - программе пиздец", в принципе невозможна. Ты можешь вообще удалить все пробелы/табы в начале всех строк и код будет работать точно так же без изменений. Может быть его будет не так удобно читать, но работать он все равно будет. А вот у питухона, даже обычное действие сохранить-закрыть-открыть файл уже может похерить программу, если редактор в котором ты это делал, решит, что табы должны быть в 2 пробела, а не 4. А выкрики вроде, "код все равно открывают только в специализированных IDE где все настроено" идут нахуй, т.к. это просто не соответствует реальному положению вещей. Та же шняга с гитхабом все это показывает.

>Именно это легло в основу философии питона: "Если отступы и так ставят почти все (кроме школокульхацкеров с их кодом в одну строку), то чобы не сделать отступы синтаксическим элементом?"
Их проблема не в том, что они сделали отступы элементом синтаксиса, а то как они это сделали.
Можно было взять любой другой символ, кроме пробела/таба и использовать его как отступ. Да даже сраное подчеркивание или точку, либо вообще свой выдумать. Тогда путаницы в принципе бы не было, т.к. при открытии в специальных питухонских IDE их можно было бы отображать как пробелы, а в любых других это были бы символы, которые ни человек, ни IDE-шка не спутает по случайности с пробелом/табом и не похерит листинг.
>>702860
>Так был рождён питон, бейсик 21 века.
Тру стори. И лет через 20 в учебниках про питон будут писать то же самое, что и про бейсик сейчас (вкатиться легко, но станешь калекой от программирования)
Аноним 09/10/20 Птн 09:57:48 702874165
>>702865
> Это и есть главный фейл.
На вкус и цвет товарищей нет. Вон выше по треду ОП обеснил, как решается проблема с отступами всего одной галочкой в настройках.
>>702871
> И лет через 20 в учебниках про питон будут писать то же самое, что и про бейсик сейчас (вкатиться легко, но станешь калекой от программирования)
Ну ХЗ, будем посмотреть. В отличие от своего духовного отца, питон таки вкатился в большой продакшон, на ём нейроночки пишут, например. И ничо, калеками не становятся. И с отступами проблем не имеют.
Аноним 09/10/20 Птн 10:06:23 702875166
>>702874
Ты вообще ерунду пишешь.
>В отличие от своего духовного отца, питон таки вкатился в большой продакшон
Бейсик был повсеместно в большом продакшне (в винде настройки тыкал когда нибудь? А там vbs скрипты, ага)
>на ём нейроночки пишут
Никто не пишет на нем нейроночки. На нем пишут конфиги к нейроночкам, а тот же numpy это Си.
>калеками не становятся
Становятся, становятся. Большинство ученых очень хуевые программисты.
> И с отступами проблем не имеют.
Конечно не имеют - это же не программа, а просто линейный конфиг.
Аноним 09/10/20 Птн 11:49:23 702886167
>>702874
>На вкус и цвет товарищей нет. Вон выше по треду ОП обеснил, как решается проблема с отступами всего одной галочкой в настройках.
Ага, а потом еще не забудь вернуть галочку обратно, а то другой проект по пизде разъедется. Да и вообще попробуй угадай, а нужно ли конкретно для этого исходника ее включать или нет.
Ну и пиздецовые ситуации, когда ты случайно, стер отступ и у тебя инструкция выскочила за пределы if-а или цикла и все продолжает работать, но совсем не так как должно, и хуй ты это отследишь.
Нахуй такие фломастеры.
Аноним 09/10/20 Птн 13:11:51 702889168
>>702875
Хотел поспорить, но потом
> Большинство ученых очень хуевые программисты.
Ой всё, кароч, иди нахуй, тролляка.
Аноним 09/10/20 Птн 13:13:03 702890169
>>702886
> а потом еще не забудь вернуть галочку обратно
Это по предыдущему посту, не путаем. В крайнем посте галочку можно не возвращать.
Аноним 09/10/20 Птн 13:21:06 702891170
>>702875
Поддвачну, все либы для машоба типа tensorflow - это высокопроизводительный многопоточный код на плюсах/сишке.
Питон нужен только для того, чтобы дата саентист (это ученый, математик, аналитик, а не программист) сформировал конфиг для этих нейроночек и запустил процесс обработки, дальше работает уже плюсовый код, заслуги питона в этом нет никакой, он нужен только для того, чтобы этот аналитик по быстрому накидал конфиг и получил результат без необходимости разбираться с плюсами/конпелять нативный код.
Ровно как и никакого программерского скилла для этого не нужно - надо знать математику, статистику, теорию вероятности, свою предметную область, никакого программирования как такового при этом не осуществляется.
>>702874
>большой продакшен
>нейроночки
И правда ерунду пишешь.
"Нейроночки" это не большой продакшен, а скриптики на 100, 200, в редких случаях больше строк. Задача этих скриптов - взять данные, прогнать через сконфигуренную нейронку, сохранить/отдать другому сервису результат. Всё. Там кода и бизнес-логики как таковой нет.
А большой продакшен - это джава, .net, плюсы, там нет места слаботипизированным языкам.
Аноним 09/10/20 Птн 13:32:59 702892171
Вот, кароч, чел предлагает свой метод борьбы с отступами https://habr.com/ru/post/501538/ статья про питон, но рассмотренные методы подходят и к гдскрипту.
Самое интересное, как водится, в комментах.
Аноним 09/10/20 Птн 13:38:17 702893172
1602239896245.png 55Кб, 805x358
805x358
>>702892
Мхех. Пост отменяется.
Аноним 09/10/20 Птн 15:03:02 702897173
>>702889
Ты просто думаешь что раз они разбираются в матане или физике то и кодинг у них на уровне Александреску. Но это далеко не так.
И это ты еще не видел как они хуево Вордом пользуются.
Аноним 09/10/20 Птн 15:07:39 702898174
>>702892
Годно. Ведь и сам редактор Годота вставляет pass в конце создаваемой функции.
Аноним 09/10/20 Птн 16:46:24 702905175
>>702892
Шедеврально. Питухонист по факту изобрел для питона аналог скобочек в других языках. И стоила ебля с отступами того, чтобы вернутся, к тому от чего отказались?
Аноним 09/10/20 Птн 19:11:44 702928176
девачьки, таб для кого придумали? Я хуееею...
10/10/20 Суб 01:53:39 702997177
>>702860
>Именно это легло в основу философии питона: "Если отступы и так ставят почти все (кроме школокульхацкеров с их кодом в одну строку), то чтобы не сделать отступы синтаксическим элементом?"
Мне кажется, авторы этой идеи так и не поняли, что отступы и скобочки нужны для разного. Отступы это удобный инструмент улучшения читаемости, но ужасно неудобный элемент синтаксиса. Скобочки это отличный и вполне естественный элемент синтаксиса, но читаемость они засоряют. Но если выбирать между языками со скобочками без отступов и с отступами без скобочек, я выберу первый. Потому что код пишут всё-таки для компиляторов, а не для людей.
Всё сказал.
Аноним 10/10/20 Суб 02:36:48 703001178
>>702997
>код пишут всё-таки для компиляторов, а не для людей.
Только если ты такой весь из себя хикка-одиночка.
10/10/20 Суб 16:36:28 703045179
>>703001
...и не любишь писать комментарии.
Аноним 10/10/20 Суб 18:10:29 703056180
>>703001
>>703045
Это из Земфиры цитата? Чот не узнаю.
Аноним 10/10/20 Суб 18:38:52 703060181
А какой рендерер сам офф. билд годота использует под линуксом и можно ли его сменить где-то не билдя самому?
Аноним 10/10/20 Суб 18:58:21 703062182
1602345500747.png 239Кб, 1080x1920
1080x1920
>>703060
Он работает в том режиме, который выставлен в правом верхнем углу.
Емнип есть какая то настройка в домашней директории
Или ты просто можешь поменять текстовым редактором в файле проекта, который открываешь.
Пишу по памяти, не за компом.
Аноним 10/10/20 Суб 19:29:29 703065183
>>703062
То есть если у проекта gles2, то у самого редактора тоже становится gles2? Ясненько, ну тогда intel-дрова для линупса не очень хорошо дружат и с gles2 и с gles3 godot-ом, что печаль.
Аноним 10/10/20 Суб 19:40:55 703066184
>>703065
> не очень хорошо дружат
А если использовать открытые дрова линукса? У меня искаробочный драйвер убунты поддерживал глес2. Потом я всё равно проприетарный поставил на свою ПЕЧ.
Аноним 10/10/20 Суб 19:42:42 703067185
>>703065
Да, многие на встройках жалуются.
Аноним 10/10/20 Суб 19:48:21 703068186
>>703066
Так интел вроде сам и выпускает только открытые дрова, а не как нвидия где есть и открытые и закрытые.
Причем смешно, то что при этом блендер на винде работал как говно, а под линем летает. Так что на обоих системах пайплайн мой сломан.
Аноним 10/10/20 Суб 19:53:08 703069187
>>703068
В общем, пора бы уже тебе купить свою первую видеокарту. Мальчик взрослый поди?
Аноним 10/10/20 Суб 21:50:05 703074188
>>702817
Спасибо, попробую.
>>702851
>Блин, как же хорошо, что я слез с иглы питоновсратого гдскрипта и пересел на лицо сишарпа
Так как я изучал его тоже, попробовал настроить, но как понял, это жутко геморойно и проще писать на гдскрипте и не выёживаться.
Аноним 10/10/20 Суб 22:38:07 703078189
>>703074
> жутко геморойно и проще писать на гдскрипте и не выёживаться
Вопрос привычки. Я сам тоже не смог привыкнуть именно к связке шарпа с годотом, хотя сам шарп понравился и просто на формсах я чота своё мелкое пописываю.
Но люди есть, которые на шарп перешли, наш анон выше по треду, и вообще куча народу, даже на ютубе есть блогер, который пилит серию туториалов по годот-шарпу.
https://www.youtube.com/watch?v=ra-BJ-fJ6Qo
Аноним 10/10/20 Суб 22:52:31 703080190
>>703074
>Так как я изучал его тоже, попробовал настроить, но как понял, это жутко геморойно и проще писать на гдскрипте и не выёживаться.
Нет там ничего геморойного. Все на изи.
Аноним 11/10/20 Вск 00:19:48 703084191
>>703078
Недавно переехал на C#, настроено примерно как на видео, только другой плагин в vs code (C# Tools for Godot)
Примерный сетап: Моно и .Net Core 3.1 - не знаю что из этого нужно, ставил полгода назад
vs code + плагины C#, Mono Debug, C# Tools for Godot, прикручиваю Roslynator для линтера (через StyleCop(Omnisharp))
В папке проекта настроены .vscode/launch.json и tasks.json по образцу коммента под видео. Таким образом, запуск по F5 настроен на Attach, у которого предварительным таском прописан запуск Годота
В Годоте в настройках проекта убрана галочка wait for debugger, а в настройках редактора - внешним редактором прописан vs code с флагами {project} --goto {file}:{line}:{col}
Автодополнение работает учитывая текущую выбранную сцену в редакторе Годота (т.е. если редактируешь Player.cs и отрыта Player.tscn, то дополнение есть, а если Level.tscn - то нет)
GD.Print срет в терминал VS Code. Работают брейкпоинты, просмотр переменных, стек вызовов.
Аноним 11/10/20 Вск 00:22:15 703086192
>>703084
+ настроен .gitignore с помощью какого то онлайн сервиса
Аноним 11/10/20 Вск 00:36:40 703088193
>>703084
> предварительным таском прописан запуск Годота
Вот этого не понел, когда смотрел видосы по этим плагинам и тулзам. Редактор всегда запущен же. По крайней мере у меня. Я ж там собственно сцены редактирую.
Аноним 11/10/20 Вск 00:55:58 703090194
>>703088
Это на случай если он не запущен, я так думаю.
Аноним 11/10/20 Вск 11:12:44 703116195
>>703090
>>703088
Сейчас проверил с закрытым редактором - если в task не указать путь до бинарника, то ничего не запускается. А если указать, то запускается только рантайм с игрой (не редактор). И уже к нему аттачится дебаггер.
Аноним 11/10/20 Вск 21:39:12 703293196
>>703078
А есть ещё каналы с туториалами для годот и C#?
Может ещё поделишься?
Аноним 12/10/20 Пнд 06:25:39 703327197
>>703293
Что с ходу удалось найти:
----------
Godot C# game development
https://www.youtube.com/watch?v=WHx0l_nKCU8&list=PLm_vxcRCNKYzIyUjHtlWAk_mM7-QUD5kw&index=8
Без комментариев, все чисто на визуале объясняется. Но довольно старые уроки (2017 год)
-------
C# Godot tutorials
https://www.youtube.com/watch?v=Ej2p_TPGCDE&list=PLMgDVIa0Pg8XMe1GVc5eg0Rwi-cXqIR6q
Более свежее (2019-2020 г.), с голосом. У автора достаточно хороший английский, все понятно без сабов.
-------
Godot C# Top Down Shooter Tutorials
https://www.youtube.com/watch?v=JTXan5M92ms&list=PLMgDVIa0Pg8W54idRaVn2ZCnFmQ7gWMmG
Тот же автор совсем свежак, видео делаются сейчас, пока всего 3 штуки.
------------
Сразу говорю, что сами видео не смотрел от и до, просто пролистал. Вполне возможно, что внутри наличествует говнокод. Я сам без уроков делаю, внутренней документации достаточно.
Аноним 12/10/20 Пнд 06:26:22 703328198
>>703327
Это все ссылки на плейлисты, если что
Аноним 12/10/20 Пнд 12:57:58 703373199
>>703327
> Я сам без уроков делаю, внутренней документации достаточно.
Удваиваю.
Видеоуроки - чисто как развлечение. С говнокода поугарать, с картавости и/или всратости ютубера. Покекать в комментах. Ну а потом опять за работу.
Аноним 12/10/20 Пнд 13:07:55 703376200
>>703373
И поддержу, и не соглашусь.
Для меня, как вообще не программиста, видеоуроки оказались хорошим стартом, чтобы увидеть, как вообще на этом творят настоящие живые люди. Но дальше - только доки, потому что в них проще найти ответы на бесконечно подкидываемые моим воображением вопросы "а можно ли сделать вот так". Если уж совсем не нахожу ответа, спрашиваю тут в тредике, пару раз получал довольно неожиданные советы, которые в итоге реализовывал.
Аноним 12/10/20 Пнд 13:40:20 703388201
>>703376
Для старта - всё верно, ютуб помогает. Но потом наступает момент, когда ты перерастаешь уровень ютуб-учителей, видишь, что они делают упрощённые проекты для новичков, пишут упрощённый код для новичков, понимаешь, что ничего нового в течение следующих N минут видоса ты не узнаешь.

И вот тогда ты переходишь на документацию.
Аноним 12/10/20 Пнд 13:57:52 703401202
>>703293
Как вариант могу предложить изучать туториалы по GDScript и отдельно уроки по C#.
Ведь алгоритм можно воспроизвести практически построчно.
(единственное что я так и не придумал как заменить однострочник yield(get_tree().create_timer(1.0), "timeout")
Аноним 12/10/20 Пнд 18:02:18 703554203
>>703327
Спасибо. Я даже не думал, что вы здесь такие отзывчивые.
Аноним 12/10/20 Пнд 18:03:11 703555204
>>703554
Это лучший тред раздела, вообще-то.
Аноним 13/10/20 Втр 23:05:29 703810205
1602619526600.png 182Кб, 822x460
822x460
Еее, детка! ГОДОТ!
Аноним 16/10/20 Птн 00:02:37 704382206
Кто нибудь проверял, скрытые (невидимые) тайлмапы много ресурсов жрут?
Аноним 16/10/20 Птн 00:06:07 704384207
>>704382
Проверял в прошлом году, до батчинга, жрали прилично. Точнее неприлично. На свежаке не проверял.
Аноним 16/10/20 Птн 00:39:51 704389208
>>704384
Я имел в виду скрытые по visible=false
Сейчас чекнул, там почти не жрут, в пределах погрешности.
На время разработки пойдет. Просто так вышло, что я импортировал все уровни отдельными слоями.
Аноним 20/10/20 Втр 18:50:24 705387209
В общем, анончик спрашивал как делать по быстрому логические игры.
Я не очень понял, интересует его 2д или 3д. Но неважно.
Для 2д в Годоте есть TileMap, а для 3д - GridMap.
Соответственно в случае 2д мы закидываем в папку проекта картинку с фигурами. (или по одной). Потом в тайлмапе создаем тайлсет, в нем добавляем атлас на эту картинку. Все, с этого момента можно работать с тайлмапом просто как с двухмерным массивом.
В 3д примерно так же, создаем GridMap, закидываем модельки фигур в папку (лучше по одной), создаем новую сцену закидываем все фигурки в новую сцену, конвертируем и сохраняем ее как библиотеку тайлов (meshlib), возможно тут захочется поменять моделькам материалы. Все, опять можем работать как с 3д массивом.
Надо добавить само поле - это можно сделать хоть тупо сделав бокс, на который натянуть текстуру в клеточку.
Другой подход будет заключаться в, например, создании сцены-объекта для фигур. В него кидаем все виды фигур и пишем простенький скрипт, который делает только одну из них видимой. Эти объекты можно расставлять по игровому уровню. Если ты включишь режим snap, то и расставляться они будут по сетке. Но тебе уже придется самому вычислять их координаты потом. Но в принципе ничего сложного, особенно если ты сделаешь их с шагом 1.
Для выделения и перемещения фигур код придется спиздить, ну или если надо я потом с ним могу помочь.
Менюшки рисуются довольно просто и быстро, накидываешь на сцену лейблы, кнопки, по вкусу задаешь им визуальные стили покрасивее, шрифты, все это надо сначала закинуть в проект. И добавляешь обработчики нажатий.
Если что то будет не понятно - спрашивай, тут всегда ответят.
Аноним 21/10/20 Срд 00:55:39 705431210
Привет анон! В ньюфаня треде задал вопрос, мол, без программирования реально художнику сделать хоть что-нибудь - желательно с мультиплеером
На мои глупые маняфантазии пришло 2 серьезных ответа - годот и юнити (плеймейкер + фотон для мультика)
Спрошу пожалуй тут - как считаешь, что лучше мне подойдет? Годот кажется мне лучше ибо он насколько я понял полностью бесплатный, а на юнити придётся скрабить этот самый плеймейкер ибо платить за него деньги ради мелкого хобби я не желаю
Но вдруг у тебя есть доводы/аргументы за и против, был бы очень рад их послушать
Аноним 21/10/20 Срд 01:44:26 705435211
1527696524039.mp4 34761Кб, 1920x1080, 00:00:06
1920x1080
>>705431
Без программирования вряд ли выйдет. Визуал скрипт это то же замаскированное программирование. Завтра могу подробнее, сейчас уже сплю.
Если хочешь можешь почитать в прошлом треде в конце.
>>697739 →
>>697740 →
>>697741 →
Мультиплеер думаю без программирования тоже не выйдет.
Хотя примеры есть, надо смотреть.
В принципе есть какой то ассет который тупо реплицирует положение объекта с сервера на клиент.
Аноним 21/10/20 Срд 05:39:23 705444212
>>705431
>Привет анон! В ньюфаня треде задал вопрос, мол, без программирования реально художнику сделать хоть что-нибудь - желательно с мультиплеером
А реально ли программисту без рисования сделать графон для своей игры? Технически реально, практически - говно на выходе.
Программировать все равно придется. Так что либо кооперируйся с кем-нибудь, либо сам изучай кодинг. Как показывает опыт научить художника минимальным скилам программирования намного легче, чем программиста рисованию.
Аноним 21/10/20 Срд 14:46:25 705524213
>>705444
> научить художника минимальным скилам программирования намного легче, чем программиста рисованию
Вот с этого больше всего горит. Особенно, когда художники жалуются
> кококодинг этоо таак слоожно!
Кодинг - это сложно, но намного легче вкатиться в кодинг с нуля, чем в рисование с нуля.
Я рисую уже джва года и до сих пор нихуя не получается.
За эти джва года я освоил две новые парадигмы в кодинге и выучил два новых языка.
Был бы я художником.
Эх, были бы у бабушки яйца, а у дедушки сиськи...
Аноним 21/10/20 Срд 15:27:15 705542214
>>705524
Представь себе что у них другая половина лучше развита - и у них то же самое, они могут за джва года освоить пару техник рисования задрочить там свето тень и анатомию, и не быть в состоянии написать что то сложнее if.
Аноним 21/10/20 Срд 15:28:19 705543215
>>705524

Основная суть художника - запрограммировать у себя в голове встроенный RTX.

По этой причине у личинусов на уроках ИЗО первому чему учат - это нахуярить на листе бумаги кубики пирамидки и прочие шарики и сделать с помощью того же карандаша им PBR.

Потом уже идет надроч силуэта и в ход идут те самые кружки с последующим усложнением формы силуэта
Аноним 21/10/20 Срд 18:09:19 705587216
>>705542
Представляю и теряю сознание.
>>705543
Дрочил квадраты. Только квадраты и могу обсветотенить. Шары уже всё - не дрочатся. О чём-то большем речи не идёт.
Аноним 23/10/20 Птн 08:44:04 705937217
Кто-нибудь реализовывал шаблон MVVM на GDScript'е? Я тут курю мануалы по MVVM и задумался, насколько он применим к играм? Насколько он реализуем в годоте? Подписаться на изменения данных средствами языка можно. Разделить данные и логику тоже можно, средствами файловой системы. Описание интерфейса языком разметки присутствует, хоть и не ХАМЛо. Остаётся только прикрутить аналог INotifyPropertyChanged к каждому требующемуся контролу/виджету через сабкласс - и готово! или нет?
Аноним 23/10/20 Птн 08:45:51 705938218
>>705937
Или всё же придётся использовать существующие фреймворки в шарпе, типа авалонии, а годот прикрутить как визуальный бэк-энд вместо, скажем avalonia.win32 или avalonia.x11 ?
Аноним 23/10/20 Птн 10:19:36 705948219
>>705937
Честно говоря не очень понятно что ты хочешь получить.
Может быть как то на примере?
Аноним 23/10/20 Птн 10:47:51 705950220
>>705948
> что ты хочешь получить
> на примере?
Честно говоря, я только начал вплотную изучать вопрос и ещё сам не понял, что конкретно мне тулят под этой волшебной фразой MVVM. Из статей и документации я почерпнул пока что только абстрактные лозунги, типа Хочу получить динамически подстраивающийся под меняющиеся условия интерфейс, действующий по заложенным внутрь него правилам, легко масштабируемый от мини-проекта инди-студии из одного человека, до масштабов корпоративного продукта.
Шаблон состоит из трёх частей:
Model - непосредственно логика, может быть написана на любом языке, любой среды и лежать где угодно, хоть в сети, отдавая данные по запросу, принимая запросы, похожа на сервер.
ViewModel - Самая сложная часть, которая являет собой связку между остальными двумя частями. Если View и Model представить себе, как слепых мудрецов из знаменитой притчи, до ViewModel для View выглядит как View, для Model выглядит как Model.
View - это собственно сам интерфейс, который строится динамически, получая данные из ViewModel.
Аноним 23/10/20 Птн 16:48:06 705982221
>>705950
Ну хз я MVVM сам толком никогда не понимал.
На примере я имел в виду на каком то конкретном.
То есть какой нибудь контрол, например слайдер с цифиркой.
У нас есть модель - собственно переменная с цифиркой
Допустим у модели есть какая то логика - хотя бы ограничивать минимальное/максимальное значение
У нас есть вью - это отображение цифирки и отображение слайдера, и еще в него можно кликать.
Допустим у вью тоже есть своя логика - слайдер двигается к месту куда кликнули постепенно, с определенной скоростью.
Ну вот я просто создам сцену, заведу переменную target_value, move_speed, и буду в process двигать к ней. Может быть, добавлю сигналы on_changed и on_finished_animation. Это, наверное, MVP?
А что предлагает MVVM? Там есть декларативные связывания. Ну писать TSCN ручками вряд ли кто то захочет в здравом уме. Тогда надо экспортить какие то переменные, чтобы можно было в редакторе их редактировать. А что туда писать? Пути к переменным, по аналогии к путям к нодам? В принципе в редакторе уже что-то подобное есть, ведь в анимейшн плеере можно анимировать, например, чей-то position:x
Аноним 24/10/20 Суб 06:00:27 706063222
unnamed.jpg 24Кб, 320x512
320x512
>>698054 (OP)
Привет, я нюфаня. Нубский вопрос. Я думаю.
Сейчас собрался скомпилировать игру на ПК, но что-то пошло не так. У меня годот стимовский и я нашёл только компиляцию для планшетов, а как для пк компилировать? Или это уже нужно платную версию годота покупать?
Аноним 24/10/20 Суб 07:04:22 706066223
>>706063
Там при экспорте должна быть кнопочка управлять шаблонами - скачать с оф зеркала. Впрочем не знаю что там в стимовской версии.
Аноним 24/10/20 Суб 08:46:57 706070224
>>706066
Всё разобрался, спасибо. Оказывается всё делается в одну кнопку, если уже скачен пакет, хрен пойми чего.
И главное сишарп работает!
А есть какой ни будь способ подключить вижуал студию?
Аноним 24/10/20 Суб 09:26:27 706074225
Аноним 24/10/20 Суб 09:27:23 706075226
>>706070
В вижуал студии ты можешь просто открыть созданный годотом солюшен и редактировать.
Аноним 24/10/20 Суб 09:34:12 706076227
Как при смене одной сцены на другую, сохранять изменения в первой?
Аноним 24/10/20 Суб 10:17:52 706079228
>>706076
Миллионом способов.
У тебя в игре наверняка планируются сохранения, так? Вот и задействуй механизм сохранений для сохранения данных в сцене.
Аноним 24/10/20 Суб 10:34:05 706081229
>>706079
Но наверняка ты следующим вопросом спросишь, а как сделоть механизм сохранений?

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

Это в общих чертах система сохранения.

Теперь, как нам её задействовать в твоём вопросе >>706076 думаю ты уже догадался. При выгрузке сцены все необходимые данные уже записаны в игровом мире, так как запись ведется постоянно, по факту появляения изменений. А вот при загрузке новой сцены, новая сцена сразу пишет туда, что сейчас она является активной сценой. И она читает оттуда переменные, относящиеся к ней: таак, читает сцена, сундук_3 опустошён, дерево_6 срублено, моб_5 убит, труп лежит в точке (1108, 637), инвентарь трупа опустошён, расставим остальные объекты по дефолту, время суток - вечер, загрузим вечерний скайбокс, ветер северо-западный, 3 м/с, загрузим данные в шейдер листвы и травы.
Аноним 24/10/20 Суб 12:44:52 706101230
>>706081
Ты случаем не Пётр из ютуба?
Аноним 24/10/20 Суб 14:01:47 706121231
>>706070
Лично я пользуюсь VS Code, но думаю и студию можно подключить.
Аноним 24/10/20 Суб 14:03:55 706122232
>>706076
Заводишь отдельную сцену, например GameState.
И в ней скрипт, в котором будут собственно глобальные переменные (или геттеры-сеттеры).
И все это удовольствие в настройках проекта - в автолоад.
И там хрванить состояние игры (например isBossDead = false, и т.д.)
Аноним 24/10/20 Суб 15:13:33 706131233
Аноним 24/10/20 Суб 16:07:26 706139234
1603544844234.png 215Кб, 400x400
400x400
>>706101
Да, я Пётр из Ютуба и это мой любимый тред на дваче.
Аноним # OP 25/10/20 Вск 20:12:09 706304235
Вот я пропустил знаменательный момент!
Наш движок был запримечен тёмным гением российского инфоцыганства!
https://www.youtube.com/watch?v=xKbZQHthbR8
Аноним 27/10/20 Втр 16:50:05 706615236
А, а , а можно ли каким-то образом не просто сохранять сцену, а не останавливать её работу при смене на новую?
Аноним 27/10/20 Втр 18:32:58 706633237
>>706615
Инстансом сцены на более общую сцену?
SceneContainer
-YourScene.tscn
Аноним 27/10/20 Втр 19:18:26 706641238
>>706615
Опенворлд? Да? Да?
Загружаешь первую и единственную сцену World и подгружаешь локации к ней чайлдами по мере приближения к ним игрока. По мере удаления - выгружаешь. Но есть один нюанс. Загрузка и выгрузка должна работать умно, в объектном пуле, потому что создание объекта (выделение памяти в куче) - затратная операция. Поэтому тебе нужно организовать пул объектов, которые будут держателями локаций и будут крутиться каруселью перед глазами игрока, показывая ему то рифтен, то винтерхолд с солитьюдом.
Аноним 28/10/20 Срд 13:09:49 706727239
>>706641
А причем тут вообще выделение на куче и пул объектов? Как ты себе это представляешь в случае годота?
Аноним 28/10/20 Срд 13:52:50 706739240
>>706727
> Как ты себе это представляешь в случае годота?
Два треда назад подробно рассмотрели.
В качестве пулов объектов прекрасно подходит механизм чайлдов в нодах. Заводишь ноду, которая не вводится в дерево сцены (далее: Бэкап-нода). К этой ноде в потомки добавляешь нужные ноды (далее: Чанки). При добавлении идёт нагрузка на комп, так что делаешь это один раз при создании абстракции игрового мира / игрового поля (далее: Игра). Далее, при необходимости ввести чанк в игру, меняешь ему парента с бэкап-ноды на игру. При необходимости вывести - меняешь парента с игры на бэкап-ноду.
Все выведенные из дерева сцены ноды вызывают колбэк _exit_tree и перестают обрабатывать _process... колбэки. Соответственно, все введённые репарентом в дерево сцены - снова выполняют _enter_tree и возобновляют вызов _process... коллбэков. Это нужно знать и активно использовать в этом, не побоюсь этого слова, паттерне.
Загрузку ресурсов следует делать в несколько этапов и в несколько потоков.
Следует завести себе не менее двух уровней детализации в зависимости от дальности от игрока. Назовём их ближний, средний и дальний.
Приближение игрока: На дальнем уровне активных чанков нет, на среднем уровне чанков всё ещё нет, но они уже начали фоновую загрузку ресурсов, на ближнем уровне чанки с загруженными ресурсами вводятся в дерево сцены репарентом из бэкап-ноды в игру.
Отдаление игрока: На ближнем уровне чанки работают в сцене, но уже помечены в очередь на вывод, на среднем чанки выведены из сцены, но сохраняют загруженные в себя ресурсы, на случай, если игрок пойдёт обратно, на дальнем чанки выгружают из себя ресурсы и помечаются, как свободные.
Свободные чанки не имеют ни типа, ни координат в игре, они получают тип и координаты, когда получают данные о ресурсах, которые им следует загрузить. Таким образом я в самом начале выразил это как карусель: Чанки как бы вращаются всё время вокруг игрока, выгружая из себя объекты позади и загружая объекты впереди.
И ещё раз повторю, загрузка ресурсов должна идти в несколько потоков. Без этого даже не пытайся зделоть опенворлд с корованами. Должна быть возможность не только быстро и одновременно, не нагружая основной поток, загружать ресурсы, но и возможность отменять начатую загрузку на любом этапе. Потому что игрок ходит рандомно. Только что он шёл на север и там прогружались замки, горы, тролли, и вдруг он резко развернулся назад и пошёл на юг, и надо срочно бросать загрузку и грузить лес, эльфов, домики деревянные.
Аноним 28/10/20 Срд 14:09:14 706747241
>>706739
Я не очень понимаю, или ты не очень понимаешь, что такое "фоновая загрузка ресурсов" и как ты собираешься ее делать без "выделения памяти в куче".
Аноним 28/10/20 Срд 15:19:13 706763242
>>706747
https://ru.wikipedia.org/wiki/Куча_(структура_данных)
>Реализации
>Стандартная библиотека шаблонов языка C++ предоставляет шаблоны функций для управления кучей make_heap, push_heap и pop_heap (обычно реализуются бинарные кучи), которые оперируют с итераторами произвольного доступа
... к данным, в оперативной памяти, при работе с инстансами классов, которые в этой памяти (и этой куче) лежат.

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

Так что да, ты не понимаешь. Ты уцепился за один аспект значения "ресурсов".
Аноним 28/10/20 Срд 15:22:19 706764243
>>706763
Это все замечательно, но ты попробуй как то внятно объяснить, что именно ты собираешься пулить, если все загружаешь в фоне и все равно выделяешь память пачками.
Аноним 28/10/20 Срд 18:57:23 706808244
>>706764
> выделяешь память пачками
Пруф или не было.
Аноним 29/10/20 Чтв 00:39:25 706864245
Бросил godot из-за старого opengl, так ещё и вулкана нет поддержки лул.
Аноним 29/10/20 Чтв 16:55:28 706935246
Как вытащить объект из его родителя?
Аноним 29/10/20 Чтв 17:06:09 706938247
>>706935
Что ты имеешь в виду?
var child = obj1.get_child(i)
obj1.remove_child(child)
some_other.add_child(child)
Возможно понадобится писать через call_deferred
Аноним 29/10/20 Чтв 19:20:51 706959248
>>706935
Сформулируй задачу. А то вытаскивание объекта из родителя попахивает операцией на голове через жопу.
Аноним 30/10/20 Птн 02:12:25 706999249
>>706959
Вообще говоря в годоте это штатная операция. Пример: у тебя игра типа кваки, сцена - уровень у которому прикреплен игрок и вращающаяся пушка. Когда игрок подходит и поднимает пушку, можно ее открепить от сцены и пприкрепить к руке игрока через boneattachment. Надо только учесть нюансы, типа упомянутого вызова add/remove через call deferred, и сработающих эффектов типа area enter/exit
Аноним 30/10/20 Птн 12:53:04 707044250
>>706999
Вообще, всё ещё проще, начиная с 3.2.1, ЕМНИП, ввели ноду, которая синхронизирует координаты. Вот тебе и готовый аттач чего угодно к чему угодно, без возни с репарентом.
Аноним 30/10/20 Птн 13:26:32 707061251
>>707044
Сомнительное решение - подозреваю что возни ты получешь больше.
Аноним 30/10/20 Птн 17:19:21 707090252
>>707061
В смысле сомнительное? Это индустриальный стандарт, который есть во всех движках и наконец хуан завёз его фкаропку.
Аноним 30/10/20 Птн 18:31:31 707101253
>>707090
>Это индустриальный стандарт
Пиздец. Скажи что ты пошутил.
Аноним 30/10/20 Птн 19:04:31 707106254
>>707101
Конечно же пошутил. Все нормально.
Аноним 31/10/20 Суб 20:39:44 707241255
Почему не работаем импорт звука?
Беру Wav, импортирую и ничего не происходит, даже в сцену не могу его добавит.
Аноним 31/10/20 Суб 21:08:44 707243256
>>707241
>импортирую и ничего не происходит
Что по-твоему должно произойти? Файл должен отобразиться в инспекторе, все.
>даже в сцену не могу его добавит.
Аудиофайлы это ресурс, который используют AudioStreamPlayer, их нельзя самостоятельно добавить в сцену.
Аноним 31/10/20 Суб 21:22:33 707245257
Аноним 31/10/20 Суб 22:01:45 707249258
>>707245
Не поверишь, но с документации я и начал. Вот только там наглядно не показывается, что перед началом работы нужно сначала добавить AudioStreamPlayer на сцену, потом загрузить трек, переимпортировать его и написать скрипт, чтобы всё заработало.
Аноним 31/10/20 Суб 22:11:31 707253259
>>707249
Вообще-то, поверю.
Я на неделе изучал некоторые UI-фреймворки для шарпа (более для ентерпрайза, чем для геймдева) и наткнулся на множество вещей, которые не понимаю, даже интуитивно не вдупляю. Тыкаюсь, как слепой котёнок, а фронтендеры в шарпотреде посмеиваются над моими жалобами. И в гугле не могу найти ответы. И в документации написано лунным языком, который влетает мне в один глаз, а вылетает через второе ухо.
Такшта, вот.
Аноним 31/10/20 Суб 23:06:58 707264260
>>707249
Да, там нет картинки, но текстом это написано.

А вообще есть же набор оф. примеров.
Они доступны через ассеты либо гитхаб.
https://godotengine.org/asset-library/asset/525
Открываешь и смотришь как там сделано
( остальные
https://godotengine.org/asset-library/asset?user=Godot%20Engine
https://github.com/godotengine/godot-demo-projects/ )
Не буду говорить что они там идеально как то сделаны, но чтобы понять что происходит то можно и ознакомиться.
Аноним 31/10/20 Суб 23:16:22 707267261
>>707264
Пожалуй, придётся вернуть в шапку изначальные предложения
1. Читать документацию.
2. КАЧАТЬ ПРИМЕРЫ
Аноним 01/11/20 Вск 02:56:44 707274262
>>707249
>Не поверишь
Я не верю. Вот смотри чего нашёл: https://docs.godotengine.org/en/stable/tutorials/audio/audio_streams.html
Вообще, советую по непоятным темам заглядывать не только в CLASS REFERENCE, но и в TUTORIALS. Поначалу не очень очевидно, что они там есть и что их сколько-нибудь достаточно, однако, если внимательно пролистать всю левую колонку (которая с оглавлением), то обнаружишь много нового. Я так годоту учился в своё время.

Чо как, пацаны? Полгода не заглядывал. Кто-нибудь релизнул свою игру мечты?
Аноним 01/11/20 Вск 06:11:32 707277263
>>707274
>Я не верю.
Зря.
>>707253
И в документации написано лунным языком, который влетает мне в один глаз, а вылетает через второе ухо.
+++
>>707264
Да, спасибо, что напомнил. Примеры проектов по умолчанию встроены, там и посмотрел.
Аноним 01/11/20 Вск 09:17:32 707289264
>>707274
> Чо как, пацаны? Полгода не заглядывал. Кто-нибудь релизнул свою игру мечты?
Всё плохо.
Мотивации нет.
Желания нет.
Фуфлыжно сидим.

Как сам?
Аноним 01/11/20 Вск 13:00:58 707294265
>>707274
Игру мечты пока нет, там много работы еще.
А мелкоигр чуть чуть не успел три в прошлом месяце закончить.
Аноним 01/11/20 Вск 19:29:25 707330266
Парни у кого есть ссылка на исходник шутера из официально тутора на гитхабе?
https://docs.godotengine.org/
Аноним 01/11/20 Вск 20:24:29 707334267
Аноним 01/11/20 Вск 20:45:38 707337268
>>707334
Вы и вправду лучший раздел треда. Спасибо.
Аноним 01/11/20 Вск 22:23:08 707343269
Screenshot1.jpg 131Кб, 2086x1221
2086x1221
Выбрал сцену для запуска, напчал писать скрипт для плеера и выскочило это.
Что не так со скриптом?


Аноним 01/11/20 Вск 22:42:37 707345270
>>707343
Какого ещё плеера? Почему плеер требует дотнетстандарт? Годот-шарп только на моно. Никаких дотнестандартов и дотнеткоров. Увы.
Аноним 01/11/20 Вск 22:44:04 707346271
Screenshot2.jpg 243Кб, 1186x1027
1186x1027
>>707343
А это мне в студии пишет.


Ошибка CS0012 Тип "Object" определен в сборке, на которую нет ссылки. Следует добавить ссылку на сборку "netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51".

как можно добавить ссылку на netstandard?
Аноним 01/11/20 Вск 22:45:14 707347272
>>707346
Выше читай. Никаких дотнетстандартов. Только моно.
Аноним 01/11/20 Вск 22:45:20 707348273
>>707345
А теперь понял. Хорошо всё буду писать на моно.
Аноним 01/11/20 Вск 22:51:52 707349274
1604260312095.png 11Кб, 322x179
322x179
>>707348
Вот так должен выглядеть сгенерированный редактором файл проекта. Там свой собственный СДК, прямо зависящий от моно.

Я в прошлом году тоже пытался напихать в проект пакетов нюгета через студию. В принципе, большинство пакетов работают. А ты что пытался затянуть в проект?
Аноним 02/11/20 Пнд 08:44:16 707358275
Слушайте, а что за "пропуки" о которых тут весь тред ниже уши прожужжал и как правильно их лечить?

Я так понял нужно налепить типа галереи материалов на прямоугольниках под полом карты, что бы никто не видел, да?
Аноним 02/11/20 Пнд 09:53:28 707360276
>>707358

> нужно налепить типа галереи материалов на прямоугольниках под полом карты, что бы никто не видел, да?

Da.

> а что за "пропуки" о которых тут весь тред ниже уши прожужжал

В целом, "пропуками" в нашем соседнем срачетреде обезумевших пуконюхов, называются проседания ФПС. Проседания ФПС случаются по разным причинам.

Управление загрузкой шейдеров в видеокарту отдано в твои руки, как полновластному разработчику твоей игры. По дефолту шейдеры грузятся лениво, в момент первого вхождения в пространство обзора камеры. Ты можешь загрузить их "трудолюбиво" при начальной загрузке сцены.

Так же ФПС может просесть при любой ленивой инициализации тех или иных сущностей объектной системы. Бороться с ними следует разными методами. Описанными не только в документации годота, но так же и в классической технической литературе. Потому что проблема времени на выполнение тех или иных алгоритмов - проблема фундаментальная. И оптимальные алгоритмы, эффективные решения, они являются ценностью, которую никто не раздаёт бесплатно. Либо реализуй самостоятельно - либо покупай библиотеку, пиши класс-адаптер к ней, используя покупное же API.

Но, повторюсь. Движок опенсорсный и модульный и даёт тебе полную власть над реализацией алгоритмов. Свою игру ты сможешь оптимизировать до бесконечности, вклиниваясь в исходники, заменяя модули на собственные. Ничто из этого не запрещено лицензией. Такие дела. Это сложно. За ручку тебя никто не поведёт.

Однако, на этапе полировки игры никто не мешает нанять грамотного кодера для оптимизации. Была бы игра. Есть у тебя игра-то? А если найду?
Аноним 02/11/20 Пнд 13:43:35 707397277
Аноним 03/11/20 Втр 21:20:27 707600278
>>707349
Выбирал те, что были вязаны с годотом. Но они не очень подходили.
Лучше в моно и не выпендриваться.
Аноним 04/11/20 Срд 19:48:06 707729279
сук я уже десяток раз экспортировал, чому иконка годота не меняется на ту которую поставил в настройках проэкта и настройках эскпорта
Аноним 04/11/20 Срд 20:35:41 707742280
>>707729
Ты по инструкции делал? С rcedit?
На самом деле виндовый проводник кеширует. Попробуй скопировать экзешник с новым именем. Если там будет новая иконка то все ок.
Аноним 04/11/20 Срд 21:24:48 707758281
1604514285577.png 295Кб, 760x498
760x498
>>707742
> С rcedit?
>>707729
> иконка годота не меняется
ИМХО, гораздо проще и удобнее поменять иконку своим любимым сторонним инструментом. Я, например, юзаю RecourceHacker. Можно вообще прошить иконку шаблону экспорта и не париться.
Но в таких прогах как редакторы ресурсов нужно матчасть знать. Иконгруп - не то же самое, что икон.
Аноним 05/11/20 Чтв 08:58:21 707813282
>>707758
Ну это вручную. А там консольная утилита. Годот просто ее вызывает при экспорте.
Аноним 05/11/20 Чтв 09:25:48 707817283
>>707742
Да, я попробовал все что только можно, ничего не помогло.
>>707758
Спс, так и сделал.
Аноним 05/11/20 Чтв 10:05:06 707823284
>>707813
> Ну это вручную.
Как что-то плохое.
Некоторые ответственные вещи не стоит доверять автоматике.
Аноним 05/11/20 Чтв 10:10:37 707824285
>>707823
Конечно плохое. Такие вещи настраиваются один раз и просто работают. Представь себе что тебе надо сдавать игру на конкурс, у тебя последние баг фиксы новые версии каждые 15 минут, экспортишь, отправляешь и... понимаешь что забыл сделать ручную операцию в последний момент.
Аноним 05/11/20 Чтв 10:26:58 707828286
>>707824
> настраиваются один раз и просто работают
>>707758
> Можно вообще прошить иконку шаблону экспорта и не париться.
Аноним 05/11/20 Чтв 16:13:25 707881287
1604582003616.png 63Кб, 779x561
779x561
>>707828
Я только что проверил - и действительно. Замена иконки в файле шаблона windows_XX_YY.exe, где X - 32 или 64, а Y - debug или release, работает прекрасно, проект экспортируется с кастомной иконкой и даже со встроенным PCK все запускается нормально.

Разумеется, это не подойдёт разрабам, которые активно выпускают патчи сразу для нескольких игор. Но я лично как правило только с одной игрой работаю, мне норм.
Хотя, чего это я туплю? Свой кастом темплейт скопировать в отдельную папочку для каждой игры и юзать его для экспорта. Тем более, если игра серьёзнее туториалов и тестов, у неё будет как минимум один сторонний модуль вкомпилен и в редактор и в темплейт, что потребует юзать именно кастом.
Аноним 05/11/20 Чтв 17:04:22 707890288
>>707828
Ну это тогда надо держать один темплейт на каждый проект, и не перепутать
Аноним 05/11/20 Чтв 18:22:03 707900289
>>707890
> и не перепутать
Не перепутаешь. Кастомный темплейт задаётся один раз в настройках проекта и дальше работаешь с ним. Автоматически, как анон выше и желал.
Аноним 05/11/20 Чтв 21:51:13 707946290
>>707900T
Ебать это просто пиздец, танцы с бубном, чтобы заставить работать С# скрипты, нахуй такая реализация если она толком не работает?
Аноним 05/11/20 Чтв 21:53:35 707947291
>>707946
Какой сишарп нахуй? Ты ебан?
Аноним 05/11/20 Чтв 22:22:07 707949292
Аноним 05/11/20 Чтв 23:29:35 707960293
Аноним 06/11/20 Птн 08:55:05 707986294
Проснулись-потянулись! Доброе утро, анончики дорогие мои! Ну-ка пописоли-покушоли и за пеку - игоры делать. Туц-туц лапками по клавиатуре!
Аноним 06/11/20 Птн 17:11:32 708055295
1557505214299.png 170Кб, 1920x1080
1920x1080
Аноним 06/11/20 Птн 19:33:21 708082296
>>708055
Ля чо творят! Ну это в шапку, однозначно!
Аноним 07/11/20 Суб 09:09:15 708177297
>>708055
>>708082
Епт. С пробуждением. Это появилось уже пару месяцев как.
И кстати это будет охуенный ход, если они до ума доведут эту версию. Т.к. это прямой заход в различные школы и прочие обучающие структуры на изи в недалеком будущем.
Аноним 07/11/20 Суб 10:31:51 708180298
>>708177
> прямой заход в различные школы
Скачать селфконтейнед приложуху (корректно подписанную к тому же) тоже не сильно сложно. Уже 2к2д и даже учителя информатики в школах умеют скачивать софт.
Аноним 08/11/20 Вск 20:38:25 708470299
Короче, собираю команду для создания опенворлда на годоте. Там в соседнем треде неосиляторы пишут что не получится. Если же мы выкатим рабочий прототип, они уже охуеют, а если мы доведём прототип до релиза - будет эпик вин.
Аноним 08/11/20 Вск 21:44:31 708481300
>>708470
Каждый делает по опенворлду, потом смотрим какие походы лучше окажутся.
Аноним 09/11/20 Пнд 11:02:35 708552301
>>708481
Гонка? Спорт? Неплохо, я согласен. Открываю редактор. И пусть победит лучший!
Аноним 09/11/20 Пнд 14:00:56 708655302
1480296389525.jpg 57Кб, 400x297
400x297
1506528731897.png 4Кб, 283x188
283x188
1496037785554.png 4Кб, 283x189
283x189
1450086417665.png 215Кб, 1000x392
1000x392
>>708552
Я особо гнать не буду - дел много.
Могу пока просто делиться ресерчем.
Из готового террейна у нас есть только heightmap террейн.
А по хорошему нужен бы vertex displacement (VDM)
Без него не получится делать террейном нависающие уступы. Только объектами, а это мне кажется уже не совсем рационально. Также придется как то дополнительно обрабатывать пещеры и вообще все двух+ ярусное. Как минимум с точки зрения коллайдеров и навигации. Т.е. пол пещеры будет еще террейном - а потолок уже отдельным объектом.
Также я не знаю, как в случае с дисплейсментом вершин будут работать встроенные тени.
(В процессе написания родилась идея на пробу - сделать для скал дополнительные полоски террейна, повернутые на ребро на 90 градусов... Надо потестить на производительность)

Второе наблюдение касается текстур. Из коробки террейн поддерживает смешивание 4 текстур, из которых на последнюю можно включить трипланар, то есть только она может играть роль скал - остальные будут растянуты. Впрочем, в шейдере написано что это можно изменить, ценой производительности. Также есть экспериментальная ветка где можно блендить до 16 текстур (но только до 4-х в каждой конкретной точке - что-то типа тайлсета выходит). Но там, вроде бы, трипланар вообще не сделан сейчас.
https://www.youtube.com/watch?v=sbADtAkh92w

Стриминг еще не продумывал. Попробую сначала просто несколько чанков террейнов и лоу-поли версию меша для дальних пейзажей. Также подумываю о том чтобы коллайдеры шли отдельно, и может быть тоже нарезаны на небольшие чанки. По идее мобы рисуются только в каком то радиусе от игрока, в ближнем радиусе будет детальный коллайдер, а подальше, там где враги просто несагрившиеся стоят - возможно просто плоскости для экономии.
Аноним 09/11/20 Пнд 17:04:26 708711303
>>708655
Ща пойду загуглю ВДМ, но, по идее плагин Зилана так и работает, дисплейсом вершин. По крайней мере я такой вывод сделал, разглядывая шейдеры в его комплекте.

А вот зацени мою идею.
Чтобы сделать сложный террейн с поддержкой нависающих скал, пещер и даже терраформирования, но (ПРЕДПОЛОЖИТЕЛЬНО) производительнее, чем воксели, нужно помимо карты высот использовать инверсную карту высот снизу, две карты ширин, справа и слева, и карту длин, спереди и сзади. То же самое триде. Все шесть карт совмещаются генератором и на их основе строится один или несколько мешей, подобно тому, как в черчении из трёх видов строится проекция объёмной модели, а у нас натурально вся модель строится из окружающих кубемапом видов. Но только получается, что для пещер всё равно придётся завозить в генератор дополнительные карты. Ведь кубемап даст нам только наружною поверхность - как только глубина впадины в поверхности увеличится настолько, что её не будет видно ни сверху, ни с боков, она перестанет вычисляться. Очевидным решением в таком случае будет от генератора запросить локальный кубемап для отрисовки этой зоны, в которм и будет закодирована полость внутри террейна (пещера).

Сложность алгоритма на первый взгляд не должна быть очень большой. Но я не спец в вычислении сложностей алгоритмов. Основной сложностью в этой идее я вижу само получение набора кубемапов. Как вариант, можно написать плагин для блендера. В блендере строится/генерируется террейн со всеми пещерами, уступами, скалами. Прямо хайполи со всеми скульптингами. Потом запускается плагин, который с этого набора мешей снимает кубемап-карты. Сначала внешнюю, глобальную, потом локальные для всех вершин, которые не видны на глобальной, затем рекурсивно со всех вершин, которые не видны на локальных картах. Каждому сгенерированному кубемапу присваивается идентификатор, или координаты, ну не знаю.

Генератор действует наоборот и уже с ЛОДами, для всей карты генерируется крупноячеистый меш, затем, при приближении к координатам нашего игрока меш уточняется так, что рассматривая поверхность вблизи игрок видит хайполи, а глядя вдаль полигональность пропорционально углу обзора падает.

Только вот тот же Зилан уже написал си++ модуль с поддержкой воксельных террейнов и эта идея в принципе нафиг не нужна. Я её реализовать сам вряд ли смогу. Проще скомпилировать редактор и шаблоны с модулем Зилана и наслаждаться готовой реализацией.
Аноним 09/11/20 Пнд 17:07:26 708712304
>>708655
> Стриминг еще не продумывал.
Главное, при продумывании стриминга чтобы не произошло путаницы между ресурсами процессора (объектами в куче, которая в оперативной памяти) и ресурсами диска (которые есть файлы на диске), как это случилось ИТТ десятком постов выше.
Аноним 09/11/20 Пнд 17:29:17 708714305
>>708711
Heightmap дисплейсит только по вертикали, вот в чем дело. Как в предыдущем посте на 2-м пике. Как на 1-м и 3-м пике - не может.
То, что у него есть воксельный, я забыл, но мне они не очень нравятся
Аноним 09/11/20 Пнд 17:30:16 708715306
1550296359167.png 279Кб, 800x306
800x306
1510754261951.jpg 141Кб, 1004x589
1004x589
Хотя, из этого можно наверное что то выжать. Но формы все же какие то несественные. Наверное, проблема в том, что они всегда осе-ориентированы.
Аноним 09/11/20 Пнд 17:40:41 708719307
>>708714
> vertex displacement
Эх, если бы разбираться во всём этом, можно крутые вещи творить! Вот нашёл простенький примерчик:
https://www.youtube.com/watch?v=4zhTtOuLpjA
>>708715
Ну да, поверх первоначальной генерации нужно накладывать фильтры, имитирующие природные эффекты: выветривание, вымывание, выплавление и т.п. И сдаётся мне, плоскими картами это будет накладываться гораздо производительнее, чем вокселями. Но опять же, я не уверен. Да и вообще, может под вокселями Зилан как раз и подразумевает примерно то, что я описал выше. Ведь каждый пиксель, описанный шестью хайтмапами кубемапа из примера выше, это по факту и есть - волюметрик пиксель - воксель.
Аноним 09/11/20 Пнд 22:13:21 708782308
>>708180
>Скачать селфконтейнед приложуху (корректно подписанную к тому же) тоже не сильно сложно. Уже 2к2д и даже учителя информатики в школах умеют скачивать софт.
А теперь даже устанавливать ничего не надо будет. "Дети, переходим по ссылке и ебашим игру своей мечты".
Аноним 09/11/20 Пнд 23:22:20 708788309
>>708782
На самом деле не факт что проще - может быть белый список доступных сайтов.
Аноним 11/11/20 Срд 18:39:09 709070310
Годаны, поясните за 2д-скелеты.
Хочу сделать по уму. Создаю Skeleton2D, к нему потомки Bone2D. Дальше ему устанавливаю позицию покоя. Дальше выбираю все кости, составляющие одну конечность (например, руку) и жму "создать цепь ИК". Двигаю конец руки, но предыдущая кость растягивается, а не идёт следом.
Делаю по простому. Создаю дерево из обычных 2д-нод. Потом из него создаю пользовательский скелет. У этого скелета выбираю кости одной конечности, создаю цепь ИК - вуаля, при движении последней кости предыдущая не растягивается, а тащит и поворачивает следом всю конечность, сохраняя длину каждой кости.
ЧЯДНТ? Это так и задумано? Или баг? Или я чего-то не знаю?
Аноним 11/11/20 Срд 19:33:49 709102311
Аноним 11/11/20 Срд 19:41:13 709106312
>>709070
Я с 2д не работаю, так что могу только вечером попозже глянуть
Вроде бы читал что с IK что то меняли в последнее время. Вполне возможно что там что то не работает.
Аноним 12/11/20 Чтв 01:25:50 709193313
>>709102
Какой ты молодец. Сам-то туда заглядывал? Я вот тщательно всё прогуглил, прежде чем спрашивать.

>>709106
>в последнее время
Как минимум полгода назад всё работало ровно так же, как сейчас. Именно поэтому у меня закралось сомнение, а баг ли это или всё же фича.
Аноним 12/11/20 Чтв 01:42:58 709194314
>>709070
> Дальше выбираю все кости, составляющие одну конечность (например, руку) и жму "создать цепь ИК".
Может там как в блендере, важен порядок выбора нод?
Аноним 12/11/20 Чтв 01:55:54 709197315
>>709193
Судя по тому что пишут, баг заключается в том, что кнопка Make IK chain не работает, а работает кнопка Make custom bones при выделенных костях.
Аноним 12/11/20 Чтв 02:00:04 709198316
>>709197
То есть, если я правильно понял, предлагается сделать кости из костей, чтобы получились кости?
Аноним 12/11/20 Чтв 02:38:35 709201317
>>709198
Посмотри с 15-й минуты, я сам не понял, но вроде у него работает.
https://youtu.be/QL57J3anDTU?t=905
Может есть какой то сторонний модуль? Смущает отсутствие аттрактора для локтя
Аноним 12/11/20 Чтв 03:41:28 709203318
>>709201
сцуко. Всё затевалось для того, чтобы НЕ делать custom bones. А тут выходит, что делать это надо в любом случае, потому что кости это на самом деле не настоящие кости, а настоящие кости это те, которые не кости.
Точнее, просто кости нужны не для того, чтобы строить из них скелет, а для того, чтобы привязывать к ним искажения меша. А для построения скелета подойдут любые ноды, просто в режиме отображения как будто это кость.
Я понял. Спасибо, анончик, ты мне действительно помог.
Аноним 12/11/20 Чтв 13:33:48 709276319
Аноним 14/11/20 Суб 02:23:37 709604320
1546943912285.mp4 9696Кб, 704x704, 00:01:02
704x704
Аноним 14/11/20 Суб 05:17:35 709618321
>>709604
В начале бой выглядит норм
Аноним 15/11/20 Вск 23:00:20 709892322
1527267797259.mp4 26044Кб, 1920x1080, 00:01:11
1920x1080
Аноним 15/11/20 Вск 23:15:06 709896323
>>709892
На годоте сделано?
Аноним 15/11/20 Вск 23:36:35 709900324
1492621794170.png 68Кб, 712x549
712x549
>>709896
Очевидно да, вон вакуху постят.
Аноним 15/11/20 Вск 23:41:48 709901325
>>709900
Качественно, сколько людей такое делают интересно
Аноним 15/11/20 Вск 23:56:10 709902326
>>709901
Не меньше четырех, по крайней мере художник, аниматор, дизайнер уровней и программист. Может быть больше.
У них оказывается еще и кикстартер 2 года назад был, собрали $5000.
Аноним 15/11/20 Вск 23:57:57 709903327
>>709902
+ у них музыкант в коре тиме
Аноним 16/11/20 Пнд 03:24:02 709922328
>>709892
Годно. Вот только анимации слабоваты, очень каменные. Прям даже глядя на видео персонаж не ощущается плотным или живым.
Аноним 16/11/20 Пнд 18:00:03 709983329
>>709892
гг не вписывается как-то
Аноним 16/11/20 Пнд 18:32:41 709992330
визуальный скриптинг рабочая тема или костыль лютый? Никогда в жизни не программировал, занимался исключительно цг, а на погромиста денег нет, что очевидно
Аноним 16/11/20 Пнд 19:01:46 710003331
>>709992
Не попадайся в эту ловушку. Визуальный скриптинг - ЭТО ТОЖЕ ПРОГРАММИРОВАНИЕ. Если у тебя нет кодерского скилла - ты ничего толкового на нодах не соберёшь.

Но вообще, ВС полноценен. Но не нравится лично мне излишней громоздкостью. Все ноды соединяются слева-направо. А мне бы хотелось, чтобы ноды вращались таким образом, чтобы соединять их можно было в любом направлении. В отсутствие этого визуальный скрипт неприлично разрастается в ширину.
Аноним 16/11/20 Пнд 20:19:23 710039332
1453054955445.png 52Кб, 1478x853
1478x853
1604072699953.png 108Кб, 898x572
898x572
>>709992
На мой (программистский) взгляд не стоит того.
Дело в том, что в Годоте ВС делали люди с программистским мышлением.
ИМХО стоило загнать в ВС предметную область, а они загнали программерские конструкции.
В самом деле, вместо "создать случайное число" они используют "вызов встроенной функции" в которой параметром "rand_range". Вместо проверки "столкнулись с шаром" там нода "приведение типа" с параметром "ball.vs". Вместо какой нибудь ноды "создать вектор 2d" там нода "конструктор" с параметром "new Vector2()", а вместо "нормализовать" там "базовый вызов" с параметром "Vector2.normalized()".
Лучше уж тогда учить простенький кодинг по туториалам, и спрашивать совета как что делать ИТТ.
Аноним 16/11/20 Пнд 22:08:56 710061333
>>710039
>Лучше уж тогда учить простенький кодинг по туториалам
Я очень плохо понимаю в вашей теме, но из того что я успел понять, что если я буду использовать куски чужого кода это равноценно воровству трейсу чужих рисунков у нас в цг, правильно? Что тогда насчёт кода из туториалов, я могу использовать их в коммерческом проекте?
Аноним 16/11/20 Пнд 22:23:58 710062334
>>710061
Начав кодить, ты неизбежно начнёшь понимать, как это работает. Копируя код из туториалов, обнаружишь, что тебе надо его допилить под свой проект. И вообще, если ты из туториала "как нарисовать сову" скопируешь начальные овалы, а потом нарисуешь совсем другую сову, это будет считаться воровством?
Вообще, я вот прямо сейчас сижу и рассказываю ребёнку (8 лет), как кодить в Годоте. Это вот настолько просто.
Аноним 16/11/20 Пнд 22:28:41 710064335
>>710062
Двачую этого!
Зашкаливающая простота гдскрипта будет воспета в веках!
Аноним 16/11/20 Пнд 22:30:43 710066336
>>710061
> если я буду использовать куски чужого кода это равноценно воровству
Воровство - когда забираешь то, что тебе не хотели отдавать. Когда ты берёшь опенсорс, это не воровство. Потому что опенсорс тебе хотели отдать и отдали.
Аноним 17/11/20 Втр 01:10:52 710116337
>>710061
Как и в цг все зависит от лицензии - у вас бывает все что угодно начиная от all rights reserved, когда нельзя ничего, от CC-ND когда можно только смотреть, до CC-0 когда можно все. Обычно код туториала выложен на гитхаб, и там есть лицензия. Часто это MIT или BSD, грубо аналог CC-BY - если используешь должен упомянуть авторство оригинала.
Второй момент заключается в том, что туториалы покрывают базовые вещи, то есть практически азы. Там сложно что то предъявить, это как туториал на рисование квадратов и кубов - что же теперь, никто не может их рисовать?
Аноним 17/11/20 Втр 05:26:50 710129338
>>710116
>Часто это MIT или BSD, грубо аналог CC-BY - если используешь должен упомянуть авторство оригинала.
С чего ты это взял? Не нужно этого делать.
Аноним 17/11/20 Втр 08:11:44 710131339
>>710129
Насколько я помню их текст, ты обязан предоставить пользователю copyright notice, который идет в начале лицензии используемой либы.
Аноним 17/11/20 Втр 08:23:36 710135340
>>710116
> MIT или BSD, грубо аналог CC-BY
Насчёт бсд не интересовался, а мит - аналог цц-0. Я специально интересовался. Делая игры на годоте, ты можешь отключить сплеш-скрин. Ну ты понел.
Аноним 17/11/20 Втр 09:30:30 710141341
1605594630071.png 153Кб, 1080x1920
1080x1920
>>710135
> мит - аналог цц-0.
Нет, даже не близко. Ты обязан include copyright. Это сказано в самом тексте лицензии:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Более того, в годоте используются либы под apache лицензией, а она требует так же указывать авторство. Это значит что просто указать мит лицензию годота с копирайтом хуана, скорее всего, юридически недостаточно
Так что я бы советовал вообще куда то в about тиснуть содержимое этого файла https://github.com/godotengine/godot/blob/3.2/COPYRIGHT.txt
Даю ссылку на версию 3.2., но надо учитывать что состав либ мог поменяться между билдами

> ты можешь отключить сплеш-скрин.
Да, можешь. Нет лицензии которая обязывала бы тебя его показывать.
Аноним 17/11/20 Втр 10:25:12 710147342
Аноним 17/11/20 Втр 10:47:23 710148343
>>710147
Перестал смотреть этого инфоцыгана, и вам рекомендую. Начал делать фундаментальный гайд по движку, забросил и хуярит вот такое. Позор. Презрение. Дизлайк. Отписка.
Аноним 17/11/20 Втр 13:09:49 710180344
1529353073990.webm 12039Кб, 854x480, 00:01:19
854x480
Аноним 17/11/20 Втр 16:53:52 710211345
sss.jpg 82Кб, 462x1171
462x1171
s ss.jpg 29Кб, 832x397
832x397
Кто ни будь подскажите почему мой код не работает?
Я даже упростил назначение клавиш и всё равно кубик стоит.
Сначала всё делал через список действий, но и там ничего не работает.

Аноним 17/11/20 Втр 17:04:26 710214346
>>710211
Velocity - это твоя переменная. Она ни к чему не подключена.¯\_(ツ)_/¯
Очевидно тебе надо делать Position += Velocity или какой нибудь MoveAndSlide.
Аноним 17/11/20 Втр 17:09:25 710215347
>>710211
Потому что ты просто написал, что у тебя velocity чему-то равна. Для движения kinematic body нужно вызвать метод move_and_slide/move_and_collide. Еще я не понял, зачем тебе вообще spatial node.
Аноним 17/11/20 Втр 17:12:49 710217348
>>710215
Да, еще, если используешь kinematic body, то двигать лучше с помощью physics process, а не просто process.
Аноним 17/11/20 Втр 17:33:38 710218349
>>710215
> Еще я не понял, зачем тебе вообще spatial node.
Просто неудачно гайды посмотрел и не правильно понял. Простим нашему новому брату сию оплошность?
Аноним 17/11/20 Втр 17:58:55 710224350
>>710215
>>710214
Заработало, спасибо. В туторах и вправду как то не то показывают.
Аноним 17/11/20 Втр 19:52:03 710245351
Ловлю очередное подгорание от загрузки игры.
Делаю так. Сначала очищаю игровое поле. Потом подгружаю тайлмап (словарь, у которого ключи это вектора, а значения это виды тайлов). После тайлмапа загружаю всякие дополнительные объекты-сцены. После загрузки всё молча падает.
Файл сейва не битый, загружается корректно.
Игровое поле очищается корректно, если запускать очистку без загрузки.
Какую бы часть из непосредственно загрузки ресурса я ни удалял, падает всё равно.
Предохранился, обернул все добавления в дерево при помощи call_deferred. Не помогло.
По точкам останова прошёл весь процесс загрузки, никаких проблем. Падение наступает позже.
Проект довольно простой, загружается, кроме тайлов, всего два объекта.

Вот как это отлавливать?
Аноним 17/11/20 Втр 20:35:13 710253352
>>710245
> Вот как это отлавливать?
Лично я в таких ситуациях начинаю логгировать все действия. Чем подробнее, тем лучше. Необязательно в файл, можно прям в консоль. На чём вылетит, на той строке лог и прервётся. С теми переменными, которые ты подозреваешь.
Если и так не получается отладить - пили модульные тесты, как настоящий программист.
Аноним 18/11/20 Срд 01:47:36 710274353
>>710253
>На чём вылетит, на той строке лог и прервётся
Ни на чём. В момент вылетания не выполняется никакой мой код. Загрузка всего завершена, все ноды выполнили свои _ready, а ноды, имеющие _physics_process, будут созданы позже игроком.
>как настоящий программист
Я не настоящий программист. Погуглил, чоэтотакое. По частям-то у меня всё работает. Не работает только всё вместе.
Аноним 18/11/20 Срд 08:26:54 710297354
>>710274
Выкладывай проект на любой файлообменник (ну или копию проекта без твоих ресурсов, но с воспроизводящейся проблемой) и ссылку сюда. Будем посмотреть, что у тебя там.
Аноним 18/11/20 Срд 17:59:25 710341355
А теперь у меня >>710245 подгорает от собственной тупости.
Я не делал сохранению и загрузке какого-либо интерфейса, просто повесил на привычные по большинству игр клавиши F5 и F8. Катарсис наступил, когда я закомментил вообще весь код, срабатывающий после выполнения клавиши F8, а игра всё равно молча падала. Ну да, я ж её, получается, сам и останавливал.
Аноним 18/11/20 Срд 23:10:04 710373356
>>710341
Бывает. Штош. Проблема решена?
Аноним 19/11/20 Чтв 03:45:40 710401357
А кто-нибудь юзал веб-версию движка? Я чёт попытался скормить ему ZIP-файл с проектом, не видит.
Аноним 19/11/20 Чтв 08:27:37 710410358
>>710401
Фича новая. Понимать надо. Оформи багрепорт.
Аноним 19/11/20 Чтв 09:15:40 710414359
Аноним 19/11/20 Чтв 10:00:59 710419360
>>710401
1. закидываешь Zip. Он заливается в файл preload.zip
2. нажимаешь Import, выбираешь preload.zip
3. во второй строчке создаешь новую папку под проект.
Например /home/web_user/projects/your_excellent_game
Аноним 19/11/20 Чтв 14:11:20 710544361
Возможно ли на Godot создать Action/RPG с элементами dungeon crawler?
Спрашиваю без рофлов, а потому что интересно.
Аноним 19/11/20 Чтв 14:16:48 710546362
Аноним 19/11/20 Чтв 14:51:20 710551363
1527533313407.mp4 9521Кб, 1280x720, 00:00:30
1280x720
1572451029514.mp4 11432Кб, 1280x720, 00:00:41
1280x720
>>710544
Что-то такого уровня делают люди.
Аноним 19/11/20 Чтв 16:27:08 710558364
>>710544
> Возможно ли ... создать Action/RPG с элементами dungeon crawler?
Возможно.
Командой от 3 человек.
Вас сколько?
Аноним 19/11/20 Чтв 16:58:59 710559365
>>710419
Немножко не очевидная последовательность действий. Спасибо, анон.
Аноним 19/11/20 Чтв 18:14:16 710567366
>>710551
Так. А изометрия?
Аноним 19/11/20 Чтв 18:14:43 710568367
>>710558
Я и 2 воображаемых сотрудника
Аноним 19/11/20 Чтв 18:19:38 710569368
>>710568
Ну тогда от 10 лет. Только на прототип. За убийство столько не дают.

Я не троллю. Сам начал игру мечты уже три года как назад. Пока что в процессе прототипирования базовых механик нахожусь.
Аноним 19/11/20 Чтв 18:41:41 710573369
>>710567
Не помню именно изометрических. Туториалов на просто 2д рпг и отдельно изометрию полно.
Аноним 19/11/20 Чтв 20:17:39 710583370
Аноним 19/11/20 Чтв 21:01:14 710594371
>>710573
Ладно, спасибо анон, поищу
>>710569
Меня это не пугает, главное начать и не забросить
Аноним 19/11/20 Чтв 21:31:27 710600372
Аноним 19/11/20 Чтв 21:57:35 710606373
>>710583
Хуёво что от третьего лица, воспринимать как шутер трудно, хотя зумерам норм скорей всего
Аноним 19/11/20 Чтв 22:02:06 710608374
>>710606
От первого ещё проще контроллер (анимировать увороты и перекаты не надо). И ассеты на него уже имеются.
Аноним 19/11/20 Чтв 22:17:28 710611375
>>710608
А есть нормальный контроллер чтобы сразу риг рук с оружием?
Аноним 19/11/20 Чтв 22:24:41 710613376
>>710611
Сомневаюсь. Оружие-то всё равно своё приделывать, следовательно и анимации свои подгонять. Но я уверен ты найдёшь с ригом рук и анимированным базовым пистолетиком. Надо только загуглить. Всё, я спать.
Аноним 19/11/20 Чтв 22:25:45 710614377
>>710611
И ещё.
> нормальный
Это просто 10 из 10 ти техусловие. Охуеть просто.
Аноним 19/11/20 Чтв 22:28:31 710616378
>>710613
Я имею ввиду, риг - это не проблема. Проблема в анимациях на нём основанных. Гораздо проще сразу заанимированные руки-крюки-базуки экспортнуть в глтф какой-нибудь, чем вытаскивать из ассетного глтф в блендер модель, ебаться с ней, а потом переэкспортировать обратно?
Честное слово - проще самому всё сделать.
Ну всё, ушёл.
Аноним 19/11/20 Чтв 22:36:33 710617379
>>710613
Ну в этом же тоже модельку подменять, однако она есть.
>Оружие-то всё равно своё приделывать, следовательно и анимации свои подгонять.
Можно же просто подсунуть другие модельки рук, и переименовать анимации, не?
>>710614
Те что я смотрел были довольно куцыми по функционалу, приседаний нет, ступеньки низкие не перешагивают. Хотя при этом встречается и бег по стенам, и зацепление крюком.
Аноним 20/11/20 Птн 08:46:43 710647380
>>710606
>Хуёво что от третьего лица, воспринимать как шутер трудно
Меня в последнее время стало укачивать от первого лица особенно быстрых шутерах типа халфы.
А здесь ничего так, можно модельку ГГ забабахать красивую, анимацию приделать, опять же боёвка будет более наглядной.
Меня кстати всегда это добивало. Шутер от первого лица вижу врагов, вижу обстановку, но не вижу себя кроме 2х рук и если повезёт ног. Не логично.
Аноним 20/11/20 Птн 09:43:04 710651381
>>710606
У бумеров была плойка с кучей игр от третьего лица.
Но если вырос на досе, то тогда увы конечно.
Только серия гта 3 вспоминается
Аноним 20/11/20 Птн 12:34:27 710691382
image.png 233Кб, 339x259
339x259
>>710647
Да, есть удобство игры от третьего лица, так же как в гонках, но минус атмосфера.
Аноним 20/11/20 Птн 14:05:57 710706383
>>710617
> Те что я смотрел были довольно куцыми по функционалу
Возьми этот и перемести точку крепления камеры на переносицу персонажа. Получишь современный FPC с видимыми ногами и сисечками.

У меня другая проблема с ассетными контроллерами.
Все они предполагают базовый функционал. Чтобы допилить мне свой, мне придётся привыкать к привычкам кодинга автора ассета. Например, у него в туториалах все переменные нетипизированные. Мне, как диду-паскалисту, это как серпом по яйцам. То есть первое же, что мне придётся сделать с ассетом, это переписать все определения вида var velocity = Vector3() на var velocity : Vector3 = Vector3.ZERO
Далее.
Множество ассетов тянется с версии 3.0 а то и с 2.0. И там уже на сегодняшний день существует легаси натуральное. Например, подгрузка скриптов через preload вместо раздачи нужным скриптам имён и конструированием их классов через new(). Это тоже весьма раздражает. Хочется взять и переписать.
И самое главное.
Контроллер-ассеты (если вернуться к ним) предоставляют базовую функциональность. Мне кроме ходьбы/бега нужно перемещение по лестницам (вертикальным). А ещё мне хочется, чтобы колёсиком мыши менялась длина плеча камеры за спиной и в крайнем ближнем положении переключалась на вид от первого лица. Как я описал в первом предложении.
Бленд-дерево слишком простое. Помимо перекатов туда ещё следует добавить анимации активностей, добавить логику, при которой проигрывается короткая анимация начала активности, потом играется бесконечная анимация тела активности, а потом следует предусмотреть несколько коротких конечных анимаций конца активности (нормальная при окончании активности, при прерывании игроком, при уроне мобом, при изменении условий на локации).
А ещё я хочу, чтобы при получении абилки, персонаж мог летать. Следовательно, при активации абилки игроком, бленд-дерево переключается на анимацию полёта, а стейт-машина персонажа должна переключиться с логики ходьбы/бега на логику полёта на крыле.
А ещё я хочу, чтобы в режиме боя включалась имитация пошаговой боёвки, при которой локация дробится на кубы, персонаж перемещается из одного центра куба в другой, когда у него есть ОД (очки действия, ходы) и их хватает на перемещение туда. При этом персонаж переключается в режим ожидания, когда ОД нет и ходят мобы, и получая урон от них, проигрывает соответствующую анимацию.

Такие задачи в принципе нерешаемы дженерик-контроллерами.
Допустим, некоторая фирма продаёт сложный модульный контроллер, со своим фактически АПИ. Который может ходить (тремя способами искаропки с возможностью написать свой модуль ходьбы), летать (двумя способами), ползать, карабкаться, взбираться, имеет расширяемое бленд-дерево, в которое простыми жсон-файлами мы можем добавить логику с путями к анимациям. Допустим я купил его. И теперь помимо основного движка мне нужно учить АПИ ассета. Охуеть просто какой геймдев!

Реально проще изучить матчасть и запилить свой контроллер с нуля. С твоими привычками кодинга и с удобным тебе расположением ресурсов.
Аноним 20/11/20 Птн 14:16:06 710707384
>>710706
Ах да, если я хочу контроллер в слешерную игору, я автоматически иду нахуй, потому что 99% ассетов дженерик-сцай-файные с пистолетиком и механикой стрельбы. А для слешера мне мало того, что придётся переделывать скелет. Мне под каждое холодное оружие придётся добавить свои мувсеты и добавить их целой пачкой в бленд-дерево. (Держим в уме, что персонаж в любой момент может получить абилку полёта и махать клинком в полёте нужен отдельный мувсет). (И не забываем, что карабкаясь по лестницам персонаж может отмахиваться от набигающих вражин ещё одним отдельным мувсетом). (И имеем ввиду, что мувсет не даётся игроку целиком, а постепенно открывается при прокачке, следовательно следует предусмотреть блокировку частей каждого мувсета по отдельности).

И ещё. Если я хочу, чтобы контроллеры персонажей не были жестко прибиты к игроку гвоздями, а могли своей стейт-машиной переключаться с AI на управление игроком когда надо - то я тоже иду нахуй.
Аноним 20/11/20 Птн 14:57:23 710710385
1605873433065.png 1027Кб, 1920x1080
1920x1080
>>710706
> Возьми этот и перемести точку крепления камеры на переносицу персонажа.
Даже эта простая операция на чужом ассете обладает подводными камнями.
Попробовал сейчас. Результат пикрелейтед. Когда стоишь на месте выглядит неплохо. Когда бежишь - лицо маячит перед камерой. Лень видос записывать.
В общем:
1. добавляем на кончик носа отдельную камеру.
2. добавляем флаг FPC в код.
3. по нажатию F (или прокрутке колёсика до упора вперёд) меняем значение флага.
4. переключаемся между камерами искаропки (да их там две, зачем - не вникал) (FPC=false) и камерой на носу (FPC=true).
5. ПРОФИТ(?)
Аноним 20/11/20 Птн 15:00:46 710711386
>>710710
4.1. Для режима FPC: Пишем заново логику поворота камеры вверх-вниз, а вместо поворота камеры вправо-влево пишем логику поворота тела.
Быстрофикс.
Аноним 21/11/20 Суб 00:33:27 710796387
Годотаны, есть у меня такой вопрос.
Двумерный изометрический пруф оф концепт. Есть две тайлмапы для пола и стенок, пол в том числе под стенками (стенки не занимают весь ромб, да ещё и торчат наверх, как обычно). Есть ли способ сделать красиво сделать автоматическую навигацию «вычитая» из общего навигационного полигона стенки? Или лучше добавить к тайлсету стенок прозрачный и проходимый тайл и впихивать повсюду в пустые места?
Или с навигацией в тайлах есть подводные камни и стоит не сношать мозги, а нарисовать полигон вручную? Всё равно тестовый уровень тестового уровня.
И второй вопрос: простого способа организовать правильную сортировку тайловой карты и спрайтов, чтобы видеть ровно то, что нужно, не существует? Понятное дело, что это не очень тривиальная задача, но очевидно, что её уже кто-то решил.
Опять-таки, если нет — я забью, у меня там сейчас спрайты на три кадра, и дрочить нужно не это, а игромеханики.
Аноним 21/11/20 Суб 01:27:34 710800388
>>710796
>второй вопрос
ЕЯПП, то ответом будет Y-sort. Но вообще чёт ты как-то не очень ясно выражаешься, и первый вопрос я вообще не понял.
Аноним 21/11/20 Суб 01:47:52 710801389
>>710796
Я не очень понял твой вопрос, но я писал импортер из редактора уровней и никаких проблем с генерацией кастомных полигонов коллизий нужной формы из кода не было.
Аноним 21/11/20 Суб 02:05:55 710802390
>>710800
Кстати, да, Ysort я для этого не пробовал, потому что думал, что он всю тайлокарту одним объектом считать будет.

А про первый вопрос — всё просто: навигация возможна везде, где не стоит стена, поэтому помимо инструмента «вот тут можно пройти» хорошо бы иметь инструмент «нет, вот тут пройти низзя». Тогда можно было бы все тайлы пола покрыть навигационным полигоном, а тайлы стен тогда вырезали бы из него непроходимые куски.
Но ладно, это уже раскат губы, пойду немножко по-другому сделаю, спасибо.
Аноним 21/11/20 Суб 02:33:31 710805391
>>710802
Kurwa! А навигацию на тайлах-то не видно в редакторе. Придётся для дебага чего-нибудь рисовать, видимо.
Или действительно не сношать мозги и импортировать из файла, но тайлоредактор-то в целом сносный.
Аноним 21/11/20 Суб 04:37:59 710811392
>>710802
Более того тебе скажу, в тайлмапе для каждого отдельного тайла можно настроить положение по оси Z.
Аноним 21/11/20 Суб 13:29:59 710838393
Аноним 21/11/20 Суб 18:25:06 710864394
>>710811
В общем, лучше переходить на какой-нибудь нестандартный редактор тайлов. Я люблю защищать стандартный, но он действительно кривоват.
Аноним 21/11/20 Суб 18:27:30 710866395
>>710864
С чего такие выводы, лол?
Аноним 21/11/20 Суб 20:22:17 710874396
Аноним 21/11/20 Суб 20:45:36 710875397
>>710874
Вот и я о том же, вместо распинания можно сразу скидывать туторы с решением проблем.
Аноним 21/11/20 Суб 23:57:28 710890398
>>710875
Если бы ещё обладать скиллом сразу находить нужный туториал... Иногда задают вопрос, и помню же, что видел такой видос с детальным разбором проблемы. Но найти не могу.
Аноним 22/11/20 Вск 01:22:36 710902399
Зачем-то скомпилировал форк ecs под 3.2. Скорее всего не заработает, много всего в плюсах накостылил, да и тестовый проект сегодня лень писать.
Аноним 22/11/20 Вск 01:43:40 710906400
>>710902
> ecs
Мне казалось это такой прикол был: Форсить ЕЦС, который придумали кодеры нотидог для обхода ограничений плойки. Плойки, Карл! Всё что даёт ЕЦС на современных ИГРОВЫХ пека, это тысячные доли секунды выигрыша. Зато эти доли секунды ты покупаешь ценой отказа от удобных кодерских инструментов и задрачивания сотен текстовых датафайлов. Мда.
Аноним 22/11/20 Вск 01:50:28 710907401
>>710906
Ну автор у себя в синтетике намерял 5х прирост.
https://twitter.com/_AndreaCatania/status/1312824560358752256
Впрочем, в моем текущем проекте сам подход ecs удобнее будет, даже если я его на ООП напишу, тупо удобнее развешивать статусы на персонажей.
Аноним 22/11/20 Вск 04:56:46 710914402
>>710906
>тысячные доли секунды выигрыш
Какбе у тебя на кадр этих тысячных всего 16. Так что выигрыш тысячных долей секунды это пиздец как важно.
Аноним 22/11/20 Вск 10:04:09 710920403
>>710907
> автор у себя в синтетике намерял 5х прирост
в синтетике (саркастический жест)
> если я его на ООП напишу
ЕЦС - это паттерн ООП, такшта в любом случае ты пишешь на ООП, системы - есть классы, компоненты - классы, сущности - классы. Накладные расходы ООП известны и описаны в литературе ещё 80х годов. Ты отказываешься от наследования и гоняешь текстовые конфиги между компонентами и системами. И тебе тупо удобно. Да.
ЕЦС в случае плойки - жёсткая необходимость и ловкое решение. ЕЦС в остальных случаях - подростковый нигилизм по типу "МАМ, НЕ ХОЧУ ЗАМШЕЛЫЙ ООП, ХОЧУ ЧТО-ТО МОЛОДЁЖНОЕ"
>>710914
> это пиздец как важно
Как по мне - важнее качественный арт и эффекты. А ещё важнее - интересный геймплей. А выигрывать кадр на синтетическом тесте, когда ещё игоря тонет - это ящитаю преждевременная оптимизация во всей красе.
Аноним 22/11/20 Вск 12:37:01 710941404
С каких пор esc вообще что-то ускоряет?
Аноним 22/11/20 Вск 12:50:48 710943405
>>710941
С тех пор как инфоцыгане вроде Andrea Catania нассали об этом школоте в уши.
Аноним 22/11/20 Вск 15:24:23 710961406
>>710943
Я пробовал esc. Очень удобный модульный подход, но его работоспособность в разы медленнее дефолтного наследования. А если юзать не наследование, а структуры, так вообще слоупочная хуйня.
Аноним 22/11/20 Вск 15:27:48 710962407
>>710961
>его работоспособность в разы медленнее дефолтного наследования. А если юзать не наследование, а структуры, так вообще слоупочная хуйня.
Толсто.
23/11/20 Пнд 07:59:20 711111408
>>711087
Слушай, ECS не так работает, массивы компонентов-pod структур, (даже в C# это делается через unmanaged доступ к памяти) никаких "объявлений функций" они с собой не возят, у нас тут не JS, системы это просто функции, сущности это вообще просто int id. Если у тебя что то тормозило, то это значит у тебя неправильная реализация, вот и все.
Аноним 23/11/20 Пнд 21:50:16 711202409
Аноним 24/11/20 Втр 00:58:14 711222410
>>711202
За месяц можно покачественней графоний сделать, ну ок.
Аноним 24/11/20 Втр 13:21:28 711270411
>>711222
Он не делал графоний, он взял ассеты.
Аноним 24/11/20 Втр 18:00:09 711314412
>>711270
Я ошибочно прочитал за одну неделю как за один месяц, my bad.
Да, если он за 6 дней надизайнил 50 уровней, это конечно респект.
В общем моя основаня придирка к поставленному свету.
Во-первых, "честный" космический свет не работает. Он смотрится паршиво, с резким перепадом в темноту.
Во-вторых, он не озаботился частицами. Пули хоть и яркие, не производят свет, двигатели аналогично. Не пульсируют, не оставляют шлейфов. Взрывы не освещают. И вообще, кажется, тупо 2д круги.
Однообразные астероиды без вариативности, обломки тоже однообразные. Обломки можно было кстати и не в 2д плоскости раскидывать, а "в глубину" тоже.
Космолет выглядит серым, безжизненным.
При этом, он таки знает какие приемы использовать. Он применяет easing к барьеру, который пружинит после столкновения. Он анимирует слои заставки. Просто он не применил этот juice ко всем элементам игры.
Аноним 24/11/20 Втр 21:38:08 711352413
Пагни, я с тачскрином в выборе между двумя стульями. На одном TextureButton, который не работает с тачем, если не включить эмуляцию мыши (а включать её я не хочу, так как это создаст новые проблемы с управлением). На другом TouchScreenButton, который вообще не наследник контрола, следовательно имеет кучу проблем с масштабированием. Шоделоть? Кагбыдь?
Аноним 24/11/20 Втр 21:51:14 711354414
>>711352
>TextureButton, который не работает с тачем
Может быть все же работает? Просто не будет pressed и hover? Надо потестить
Аноним 24/11/20 Втр 22:44:10 711359415
>>711354
Хз, я разные варианты пробовал. В лучшем случае просто крутит часики. Не нашёл ни одного сигналау текстурбаттона, который бы отзывался на прикосновение.
Вообще, у я разрабатываю на ноуте с тачскрином и убунтой. Но сомневаюсь, что тут порылась какая-нибудь собака, так как TouchScreenButton и всякие тачевые инпуты работают без нареканий. Годот, няп, хандлит ввод напрямую, ему наплевать на установленные в системе прослойки для тача.
Аноним 25/11/20 Срд 01:33:15 711369416
Аноним 25/11/20 Срд 02:03:23 711372417
>>711369
Спс, попробую. Не рассматривал ничего, что не относится к BaseButton.
Аноним 25/11/20 Срд 07:49:49 711384418
>>711369
Попробовал. Работает. Но возникла проблема с тем, что FileDialog не умеет в тач. Сцуко. А я хотел сделать сохранение/загрузку.
Но вообще, тот факт, что интерфейсные ноды не дружат с тачем, создаёт огромные проблемы. Эмуляция нажатия мыши - ужасный костыль так-то. Как в такой ситуации определить отдельно перетаскивание левой кнопкой и СкринДраг? Ну, то есть, понятно, что можно, но кривизна прям буэээ.
Аноним 25/11/20 Срд 11:15:00 711393419
>>711384
М-да. Попытался накостылить, чтобы при вводе с тача события мыши не обрабатывались бы как мышь. Хер там плавал.
Проблема в том, что при включённом режиме эмуляции мыши всё равно сначала отправляется клик, а потом касание (при том, что реально это просто касание). И я не вижу способа в момент клика понять, последует ли за ним касание. Был вариант просто спросить систему, а есть ли у неё сенсорный экран, но вот у моего ноута и тачскрин, и мышь. Попробовал запоминать ввод, а потом реагировать на него в _physics_process; помогло, но вместо этого теперь я не могу распознать касание без перетаскивания.

В общем, что я пытаюсь запилить:
1. Щелчок мышью - заполнить клетку на тайлмапе
2. Перетаскивание мышью - заполнить все клетки на тайлмапе, через которые прошла мышь
3. Короткое касание - заполнить клетку на тайлмапе
4. СкринДраг - переместить камеру
5. Щелчок мышью ИЛИ короткое касание по кнопке интерфейса - нажатие кнопки интерфейса
Вроде бы наборчик вполне стандартный, ничего уникального. Но постоянно один-два пункта не получается приклеить, когда все остальные исправно работают. Есть какие-то готовые решения? Может, внятный видос по теме?
Аноним 25/11/20 Срд 11:56:29 711399420

>>711393
Я бы делал обработку тача и мыши в отдельных методах. Подробно тому, как игры работают с геймпадом: прошёл инпут с геймпада -> стейтмашина инпута перешла в режим геймпада, прошел инпут с клавы или мыши -> режим клавомышь.
В соответствующем режиме вызывается только соответствующий обработчик.
Аноним 25/11/20 Срд 12:45:08 711405421
>>710906
ЕЦС придуман может и для обхода ограничений плойки (в чём я сомневаюсь, так как не видел никакой информации про это), но так как он эксплуатирует особенности работы кеша и процессоров в принципе, то он применим не только лишь на Cell, но и на x86 и на ARM и дает хороший прирост где угодно.

>>710920
>ЕЦС - это паттерн ООП
Очевидно нет, так по нормальному он нарушает принцип инкапсуляции и очень редко следует наследованию и полиморфизму. Также ЕЦС прекрасно имплементируется в языках без поддержки ООП вроде раста и даже на чистейшем ФП.
>системы - есть классы
Или функция-редьюсер.
>компоненты - классы
Или структуры, содержащие лишь данные, которыми оперирует система-редьюсер.
>сущности - классы
Или кортежи компонентов. Или опять таки структуры, содержащие лишь данные.

>ЕЦС в остальных случаях - подростковый нигилизм по типу "МАМ, НЕ ХОЧУ ЗАМШЕЛЫЙ ООП, ХОЧУ ЧТО-ТО МОЛОДЁЖНОЕ"
То что за 40 лет от ООП никто не умер не значит, что это что-то хорошее и нам не нужно искать более удобные альтернативы. За всю свою жизнь я никогда не видел удобночитаемого ООП кода, в какие бы сорцы я не залезал. Весь мир сейчас движется в сторону отделения данных от кода и лишь история рассудит, что лучше.

>Как по мне - важнее качественный арт и эффекты. А ещё важнее - интересный геймплей. А выигрывать кадр на синтетическом тесте, когда ещё игоря тонет - это ящитаю преждевременная оптимизация во всей красе.
Это правда, но если вдруг ботлнеком станет архитектура, то придётся переписывать абсолютно всё. Лично для меня ЕЦС удобнее для организации кода, повышенная производительность это скорее побочный эффект.

мимо программист не из геймдева
Аноним 25/11/20 Срд 13:51:00 711414422
>>711393
> Перетаскивание мышью - заполнить все клетки на тайлмапе,
> СкринДраг - переместить камеру
Разве это не противоречит друг другу?
Аноним 25/11/20 Срд 14:22:24 711418423
>>711393
В общем, я бы на твоем месте делал так:
-либо drag работает в зависимости от того, куда кликнул. Если кликнул по рабочим тайлам - то рисуешь, если по пустому месту - двигаешь карту. Это вообще говоря много где используется.
-либо таскание работает только двумя пальцами. Это же вроде сейчас стандарт уже? обычно в связке с зумом, и иногда поворотом. Но тогда надо решить как таскать одной мышкой, возможно правой кнопкой.
Аноним 25/11/20 Срд 16:45:29 711435424
>>711414
>Разве это не противоречит друг другу?
В режиме эмуляции мыши - противоречит. В режиме здорового человека это выполняется разными устройствами и потому не возникает противоречий.
Вообще, если ивент _gui_input() прописывать интерфейсным кнопкам реакцию на ИнпутИвентСкринТач, то можно обойтись без режима эмуляции. Но возникает проблема с диалоговыми окнами (в частности, FileDialog), которые уже на тач не отзываются от слова никак.

>>711418
>либо drag работает в зависимости от того, куда кликнул
Не работает, если я делаю инструмент рисования, рисующий тайлы там, где пока ещё пусто.
>либо таскание работает только двумя пальцами
Вынос костыля на обозрение игроку. Не могу навскидку вспомнить ни одного мобильного приложения, внутри которого навигация осуществлялась бы двумя пальцами. И не мобильного тоже, если оно нативно поддерживает тач.
Прямо сейчас я пишу этот пост в гуглхроме, мышью таскаю по текстовому полю - выделяется текст; пальцем вожу по экрану, вне зависимости от места на странице, - двигается страница; тыкаю пальцем или мышкой в ссылку или кнопку - она срабатывает. Это абсолютный стандарт де-факто с самого появления управления пальцами.
>Но тогда надо решить как таскать одной мышкой, возможно правой кнопкой.
Правой, средней - это вообще не представляет сложности. Прямо сейчас у меня это выполняется средней кнопкой. Пожалуй, правую тоже добавлю, она всё равно не задействована.

На крайний случай можно вернуть эмуляцию мыши и отказаться от навигации тачем при включённом рисовании. Но ведь предполагается, что это основной игровой режим. ИЛИ убрать возможность рисовать тасканием, а для установки тайла требовать полного цикла "нажал-отпустил".

>>711399
А как ты обошёл проблему диалоговых окон, типа FileDialog? Просто не использовал их?
Аноним 25/11/20 Срд 16:59:53 711437425
>>711435
Я вижу ситуацию немного по другому - у 99% обычных людей или комп с мышкой без тача, или смартфон/планшет с тачем без мышки.
Поэтому в твоем дизайне управления половина не получает одну четверть функционала, а другая половина - другую четверть.
Ну если ты делаешь только для себя, то это другая история.
Аноним 25/11/20 Срд 20:19:20 711458426
>>711435
> А как ты обошёл проблему диалоговых окон, типа FileDialog? Просто не использовал их?
Именно так. Комповские диалоговые окна сами по себе неудобны на тач-устройствах. Там надо "диалоговые панели" однопанельного режима. Вместо тонкой строки с выбранным файлом - толстая строчища с огромными буквищами. Чтобы толстые пальцы жырных американцев попадали в неё. Большие кнопки. Список файлов не в диалоге, а вызывается отдельно поверх, модально. И тоже с жырными строками.
Аноним 25/11/20 Срд 20:26:17