Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

Godot #45

 Аноним OP 30/01/24 Втр 21:17:50 #1 №931045 
1706638667500.png
Добро пожаловать в тред любви, взаимопомощи и скрытого явно на виду!
Шапка: https://hipolink.me/godothread
Предыдущий: >>926070 (OP)
Архивный: >>919752 (OP)
Аноним 30/01/24 Втр 21:30:54 #2 №931052 
Вобщем, снес нахуй юнити. Посидел повтыкал пару деньков в годо, почитал документацию, посмотрел видосики, и сделал вывод что юнити хоть и в большинстве случаев получше будет, но годо движок с душой, а это важнее. Думал сначала с шарпом перекатываться ибо впадлу было на гдс пересаживаться, но хуй к носу прикинул и решил все же пересесть. Прощай рабство, привет годо!
>>930620 →
Аноним OP 30/01/24 Втр 21:33:20 #3 №931053 
Добавил книгу из прошлого треда в шапку. Раздел годноты.
Аноним OP 30/01/24 Втр 21:35:53 #4 №931056 
>>931052
Добро пожаловать!
А ГДСкрипт настолько охуенен, что я жду, когда найдется среди годанов скилловый гик, который на LLVM запилит GDLang чтобы прям консольные утилиты и оконные приложения на нём пилить. Сам я, увы, не потяну.
Аноним 30/01/24 Втр 21:55:35 #5 №931062 
image.png
>>931043 →
Поправил, заработало, спасибо. Под вечер мозг плохо соображает - не заметил.
Но я все равно не понимаю, зачем это нужно. Только для того, чтобы не возиться с editable children?
>>931044 →
Обычно так и делаю
Аноним 30/01/24 Втр 21:58:53 #6 №931064 
>>931062
> чтобы не возиться с editable children?
В том числе да.
Подумай перед сном, какие возможности тебе дали бы выполняющиеся в редакторе тулскрипты?
Аноним 30/01/24 Втр 22:01:33 #7 №931065 
1706641292938.png
Наступает новый век...
Аноним 30/01/24 Втр 22:41:53 #8 №931081 
Как вы делаете инвентари в игре? Я блять какие-то ресурсы хуячу, пытаюсь связать сцену предмета с ресурсом для инвентаря. Вроде всё работает, но на протяжении всего времени меня не покидает чувство, что делаю какую-то хуйню.
Аноним 30/01/24 Втр 23:23:11 #9 №931090 
>>931081
> Как вы делаете инвентари в игре?
Ебашишь массив и в него вхуячиваешь предметы. Что тут сложного-то?
> Я блять какие-то ресурсы хуячу
Ресурсы (как класс) нужны для удобства управления ресурсами (как файлами).
> пытаюсь связать сцену предмета с ресурсом для инвентаря
Тебе не сцена предмета нужна, тебе в первую очередь класс предмета нужен. А сцена, это вообще-то говоря, ресурс, это файл, в который сериализирован инстанс определенного класса. Пока ты не поймёшь эту фундаментальную разницу, ты не продвинешься вперед.
> меня не покидает чувство, что делаю какую-то хуйню
Подтверждаю. Ты делаешь хуйню. Даже не глядя в твой код. Чисто по тексту видно непонимание смысла.

> Как вы делаете инвентари в игре?
Инвентарь это база данных, таблица, у которой есть набор строк (записей) и столбцов (полей).
У инвентаря есть методы: Create - создать запись о новом предмете, Read - прочитать запись с предметом, Update - обновить запись с предметом (стакнуть в стак, например), Delete - удалить запись с предметом. Это всё. Этого достаточно для любого инвентаря любой сложности.

Но ведь твой вопрос не об инвентаре, а об его внедрении в геймплей. А вот в геймплее уже есть дохуя дел, которые придётся сделать.
Как выкидывать предметы?
Как сортировать предметы?
Как вставлять предметы в слоты?
И т.д. и т.п. Тут целую книгу можно написать, весь тред исписать длиннопостами до бамплимита.
Аноним 30/01/24 Втр 23:23:29 #10 №931091 
>>931081
Нахуя? Тебе Хуан дал массивы, пользуйся. Если у тебя простенькая игрушка, то просто хватит добавление индекса предмета, если нет, то можешь сделать предметы объектами, да и инвентарь тоже сделать отдельным классом.
Аноним 30/01/24 Втр 23:32:07 #11 №931094 
>>931081
Вот, кстати, периодически вспоминаю такую штуку и советую всем: Во многих играх есть консоль. Квейки, думы, халф-лайфы, тесы. Так вот, ящитаю, годная практика для новичка - это сделать такую консоль, которая принимает на вход текстовые команды и совершает действия в игре. Что-то типа:
> player.inventory.add iron_greatsword 10
> player.equip steel_armor
Продумать, что должна сделать игра при получении команд?
И реализовать.
И когда реализуешь, многие вопросы сами собой отпадут.
Аноним 30/01/24 Втр 23:49:21 #12 №931096 
>>931094
И наткнется на expression
Аноним 31/01/24 Срд 00:18:39 #13 №931101 
>>931081
>Как вы делаете инвентари в игре?

Пишу на шарпе, был выбор писать самому или спиздить готовенький ассет. Выбор пал на inventory-system на гдскрипте. Спиздил и перекатил на шарпы, сейчас допиливаю и перекрываю говнокод автора своим
Аноним 31/01/24 Срд 00:45:38 #14 №931104 
>>931091
Ему это в позапрошлом треде говорили. Он все страдает. Пройдет 3 года, игры не будет, зато инвентарь доделает.

Проще надо делать, проще. Тем более в инди. Раз-раз и готово. Идеей надо брать.
Аноним 31/01/24 Срд 01:41:34 #15 №931109 
>>931104
Не, ну тогда он точно троллит.
Аноним 31/01/24 Срд 02:18:26 #16 №931111 
Такой вопросик, сейчас разбираюсь с машиной состояний анимаций, и вот чет не пойму почему в дереве смешивания анимации начинаются не с того же кадра, а начинают проигрываться заново, где та волшебная кнопочка лежит которая мне поможет?
Аноним 31/01/24 Срд 04:02:55 #17 №931116 
>>931111
Вобщем так и не понял в чем проблема, все перетыкал но ниче не помогло, а нагуглить нормально не получается, как проснусь буду дальше разбираться.
Аноним 31/01/24 Срд 06:16:14 #18 №931118 
Аноны. какие лучшие практики по загрузке и переключению сцен?
Есть главное меню игры, откуда после нажатия на кнопку, происходит переход к самому игровому процессу, при помощи change_scene_to_file.
И вроде все ок, но игра жалуется на циклические импорты т.к. в главном меню игры грузится сцена с игрой, а в сцене с игрой есть переход в главное меню игры.
Как фиксать? Что-то не так делаю?
Аноним 31/01/24 Срд 06:25:49 #19 №931120 
>>931090
>Инвентарь это база данных, таблица, у которой есть набор строк (записей) и столбцов (полей).
>У инвентаря есть методы: Create - создать запись о новом предмете, Read - прочитать запись с предметом, Update - обновить запись с предметом (стакнуть в стак, например), Delete - удалить запись с предметом. Это всё. Этого достаточно для любого инвентаря любой сложности.
Ну это я и хотел увидеть. У меня есть класс инвентаря, в массив которого и записываются предметы, которые сами наследуют класс предмета. Чисто по тексту видно, что в первой половине поста ты пытаешься продать мне какую-то хуйню.

>Но ведь твой вопрос не об инвентаре, а об его внедрении в геймплей. А вот в геймплее уже есть дохуя дел, которые придётся сделать.
>Как выкидывать предметы?
>Как сортировать предметы?
>Как вставлять предметы в слоты?
Про это я не спрашивал, с этим у меня ни вопросов, ни проблем нет.
Аноним 31/01/24 Срд 06:29:32 #20 №931121 
>>931091
>>931104
Шизы, я тут впервые, перекатился с реддита
Аноним 31/01/24 Срд 06:34:09 #21 №931122 
>>931094
Я думаю, что консоль должна от обратного делаться. Нужно добавлять команды к существующим функциям/методам. А добавлять функционал исходя из требований консоли это что-то странное. Да и не нужна она зачастую индюшатине
Аноним 31/01/24 Срд 06:42:01 #22 №931123 
>>931101
Если ты про ассет от expressobits, то мне кажется, что у него версия на шарпе где-нибудь на гитхабе. А вообще я смотрел его, понял, что делаю примерно тоже самое и не стал менять свой велосипед на чужой
Аноним 31/01/24 Срд 07:56:41 #23 №931125 
>>931081
У меня на C# ECS пока инвентарь на базовом уровне, в виде двух вкладок: список всех предметов кроме надетых, и вкладка с снаряжением, где слева надетое, справа сответственно не надетое. При поднятии я удаляю со сцены спрайт и компонент позиции в пространстве и добавляю "В инвентаре", при открытии инвентаря я опрашиваю все предметы "В инвентаре" у которых владелец игрок, и ими заполняю список, аналогичным образом со снаряжением. Когда выбрасываю удаляю "В инвентаре" и рисую спрайт и добавляю компонент позиции.
Аноним 31/01/24 Срд 08:57:23 #24 №931132 
насколько по вашему годот будет хорош для 3д более менее среднего уровня графики? в 4.3 добавляют новое ГО где убрали протечки света. Да и в самом годоте куча фич типа динамичных лодов, запекание света, PBR материалы, серверы для прямого сообщения с движком, кароче тема. Вот я считаю что да, хотя движок изначально и не для этого.
Аноним 31/01/24 Срд 08:59:13 #25 №931133 
>>931094
Ты почти что Test-Driven Development описал.
В коде (тест-юнита) пишешь пример использования, и становится понятна архитектура
Аноним 31/01/24 Срд 09:03:22 #26 №931137 
>>931133
Только юнит-тесты(почему тесты-юнита, что то меняется от перестановки?) и они зачастую ломаются без поломки в самой игре, и добвляют головной боли. Консоль же -- это немного другое. По нужной команде она либо сама чёто напишет в консоли, либо покажет прям от лица камеры. И писать команды для консоли можно прям в скрипте объекта который нужно менять через них.
Аноним 31/01/24 Срд 09:19:11 #27 №931139 
>>931137
> они зачастую ломаются без поломки в самой игре
Так и задумано. Значит что то в апи поменялось и вызов выглядит теперь по другому
Аноним 31/01/24 Срд 09:30:25 #28 №931141 
>>931139
и в чём смысл? показать что в разработке что то меняется? для этого можно просто в логе выписывать ошибку на неправильный вызов функции или несовпадение форматов, для последнего даже писать ничего не нужно.
Аноним 31/01/24 Срд 10:31:53 #29 №931145 
>>931141
Не все вызовы всегда происходят (был случай когда разраб забыл потестировать движение назад - он всегда шел только вперед), несоотвтетствие форматов может пройти тихо.
Аноним 31/01/24 Срд 11:30:18 #30 №931157 
>>931064
>Подумай перед сном, какие возможности тебе дали бы выполняющиеся в редакторе тулскрипты?
Доброе утро. Могу без запуска сцены сразу смотреть поведение нод? И это в свою очередь упростит сборку уровня, например
Аноним 31/01/24 Срд 11:32:52 #31 №931158 
>>931118
>И вроде все ок, но игра жалуется на циклические импорты
Это "желтая" ошибка? Я на них обычно не обращаю внимание. У самого в проекте после меню используется "главная сцена" с игроком, ui и прочим, и в нее уже загружаются уровни через add_child
Аноним 31/01/24 Срд 13:24:18 #32 №931174 
Куда материалы сохранять, tres, res, material?
Аноним 31/01/24 Срд 16:46:11 #33 №931215 
Так и не понял короч в чем трабл и почему анимация начинается не с кадра переключения а с первого. Буду свою машину лепить тогды.>>931116
Аноним 31/01/24 Срд 17:16:23 #34 №931216 
>>931052
>годо
Лингвисты есть в треде? Почему читается годо? Пачиму t не произносится? Это же не godoh какой-нибудь
Аноним 31/01/24 Срд 17:22:29 #35 №931218 
>>931133
> Ты почти что Test-Driven Development описал.
Потому что я всю осень про это книжку читал.
>>931096
И молодец.
>>931122
> это что-то странное
Это опыт и знания.
Аноним 31/01/24 Срд 17:26:29 #36 №931219 
>>931216
Потому что слово французское.
Peugeot читается как ПЕЖО и никто не бухтит.
Аноним 31/01/24 Срд 17:33:28 #37 №931220 
>>931216
>>931219
https://www.youtube.com/watch?v=BMo24fmrnjY
Аноним 31/01/24 Срд 17:36:37 #38 №931221 
>>931220
Мы заслужили!
Аноним 31/01/24 Срд 18:06:51 #39 №931225 
>>931220
Плевать, Годот, потому что Париж
Аноним 31/01/24 Срд 18:18:49 #40 №931229 
>>931220
Хорошая песенка.
Аноним 31/01/24 Срд 20:02:13 #41 №931244 
1706720533495.jpg
>>931225
Ну так мы и не паримся. Хочешь - называй годо, а не хочешь - называй годотом.
Аноним 31/01/24 Срд 20:06:27 #42 №931247 
>>931225
Удваиваю хороший аргумент. Также Форт Боярд. Сам говорю/пишу и Годот, и Годо, в зависимости от контекста.

Олсо, пытался посмотреть "В ожидании Годо" в постановке театра Вахтангова. Не осилил больше часа. Возможно, бродвейская постановка с Иэном Маккеленом и Патриком Стюартом была бы поинтереснее, но её в интернетах нету целиком (она хранится в Нью-Йоркской библиотеке им. Линкольна, там можно посмотреть совершенно бесплатно, лол)
Аноним 31/01/24 Срд 20:14:02 #43 №931249 
>>931247
> Возможно, бродвейская постановка
> была бы поинтереснее
Я лично сильно сомневаюсь. Это артхаус, а он редко бывает интересен.
Аноним 31/01/24 Срд 20:32:08 #44 №931252 
В годоте тоже надо ждать компиляции после каждого пука как в юнити?
Аноним 31/01/24 Срд 20:45:07 #45 №931255 
>>931252
Слава богу нет.
Аноним 31/01/24 Срд 21:04:39 #46 №931258 
Какой язык сейчас лучше взять для наибольший производительности?
Аноним 31/01/24 Срд 21:04:41 #47 №931259 
>>931158
Нет. именно что красная. Желтые алерты фиксаю, там все норм.
У меня в основном бзается именно смена сцены, для новых страниц\окон. Но вопрос возник только по главной странице и переходу к одной из игровых страниц, странно. Больше похоже на какой-то баг годота ибо принцип везде один и тот же юзаю.
Аноним 31/01/24 Срд 21:56:21 #48 №931266 
>>931258
Native
Аноним 31/01/24 Срд 22:28:43 #49 №931274 
>>931258
> Какой язык сейчас лучше взять для наибольший производительности?
Кресты.
> сейчас
Всегда.
Аноним 01/02/24 Чтв 00:05:21 #50 №931292 
Следит кто за внутренней кухней годота? Чего там с Юркой случилось, и какие функции он выполнял? Проджект менеджер?
Аноним 01/02/24 Чтв 08:08:42 #51 №931324 
>>931292
Никто не знает, но легко можно понять почему. У нас другая, не соевая культура общения, мы и лично кого то чморим если он не прав, и шуточку неуместную можем ввернуть.
Аноним 01/02/24 Чтв 08:22:27 #52 №931327 
>>931258
Плюсы - всегда дадут высшую производительность, но если выбирать между гдскриптом и шарпом, то шарп быстрее
Аноним 01/02/24 Чтв 08:51:20 #53 №931333 
>>931292
Юан который? который Жуан, да? ну вот он в основном курирует + ведёт немного обособленный от общего движка движ, как например новый HDDAGI (псевдо0рейтрейсинг на стероидах) -- это он делает. В основном по моему все нововведения это либо он делает, либо с его веления. Чел ровный, кстати.
Аноним 01/02/24 Чтв 09:02:09 #54 №931337 
Бля. Я походу приехал. Такая ситуация. Система выборов в ещё зачаточном состоянии. Выводится от 2 до 6 кнопок. Нужно сделать, что при нажатии на каждую кнопку делается что-то своё.
Ну и как бы ничего сложного. Вот только таких выборов за игру будит сколько я захочу, а это всяко больше 1 или даже 10. Возникает проблема. Как мне хранить что будет делать кнопка? Кнопки-то дубликатом создаются и в них только id меняется, чтоб знать какую именно нажали, а нужна ещё и куча разных скриптов так-как они должны делать много разного.
Меня с начала осенила мега тупая идея хранить то, что делают кнопки в ресурсах и по необходимости просто менять ресурсы, вот только из ресурса я как буду к сцене обращаться? Нельзя же. Ну и как тогда? Кучу кнопок сделать? У меня забьётся сцена кнопками очень быстро.
По сути хотелось бы просто кнопке скрипт поменять когда захочу и всё. Как это сделать хз.
Аноним 01/02/24 Чтв 09:03:48 #55 №931338 
>>931337
>будит
Бля пиздец сорян
Аноним 01/02/24 Чтв 09:06:15 #56 №931339 
>>931337
сделай контроллер кнопок в одном скрипте и обращайся к нему через кнопки и их сигналы, на каждую кнопку своя функция которую она зовёт через сигнал, чё сложного? Если ты не в курсах что такое сигналы то бегом учить, ЭТО КЛАССИКА, ЭТО ЗНАТЬ НАДО.
Аноним 01/02/24 Чтв 09:16:56 #57 №931341 
>>931337
Все кнопки ставят соответствующие флаги в переменную соответствующую выбору, хранящуюся в словаре выборов, типа
Dictionary<int, short> где инт - айдишник выбора, а шорт - его результат. Или даже Dictionary<Choice, short> где Choice - енум выбора.
Аноним 01/02/24 Чтв 09:22:41 #58 №931343 
>>931341
перемудр дикий. сверху же писали-- сигналы и уникальные функции на каждую. Да и какого типа переменная шорт чтоб результат присходил?
Аноним 01/02/24 Чтв 09:25:14 #59 №931344 
>>931343
А я и написал сразу тип: short, потому что бул слишком мала, а инт слишком велик.
> перемудр дикий.
Я из расчёта что выборов может быть слишком дохуя, а тут одна функция на всё про всё.
Аноним 01/02/24 Чтв 09:51:35 #60 №931351 
>>931333
> Юрий
> Юан
Ты там что куришь с утра?
https://www.reddit.com/r/godot/comments/1afp1pv/goodbye_yuri/
Аноним 01/02/24 Чтв 10:01:10 #61 №931353 
>>931339
Ну вроде норм звучит. Только код будет в спагетину превращаться, если я правильно понимаю. Ну там спагетина простая, однослойная, так что, как бы, как вариант.
>>931341
Звучит круто. Только где я буду short"ы хранить и как запускать? Вот тут-то я и обосрался. Где про шорты почитать, если ты говоришь что short это тип? Пять секунд в гугле не дали ответ.
Аноним 01/02/24 Чтв 10:07:27 #62 №931355 
>>931353
> где
В словаре. Эти переменные не для запуска, а для хранения выборов, которые сделал игрок. Запускать ты будешь одну и ту же функцию, которой ты будешь передавать (обходным путём) какой это выбор и выбранный ответ, после чего ты их сохраняешь в словарь, и при необходимости к нему обращаешься.
> Где про шорты почитать
В годоте его зовут uint8_t
https://docs.godotengine.org/en/stable/contributing/development/core_and_modules/core_types.html
Аноним 01/02/24 Чтв 10:29:17 #63 №931356 
>>931351
ничего не курю, многие Жуана юриком называют. А Юра настоящий походу прослыл трансфобом и его кикнули за это. Как обычно, не поделили повестку. Очень жаль, и движок хороший и Юра большой вклад сделал.
Аноним 01/02/24 Чтв 11:00:46 #64 №931360 
>>931337
var a = null
if игрок нажал на кнопку 1:
a = 1
if игрок нажал на кнопку 2:
a = 2
____
if a = 1:
такой-то сюжетный поворот
if a = 2:
другой сюжетный поворот
Аноним 01/02/24 Чтв 11:01:43 #65 №931361 
>>931259
Тащи сюда код. Так не понять, что там у тебя
Аноним 01/02/24 Чтв 13:18:56 #66 №931382 
>>931339
Ой, а кто это у нас тут порвался на весь тред?)
Аноним 01/02/24 Чтв 13:31:57 #67 №931385 
image.png
>>931382
вы, кажется, не тому отвечаете.
Аноним 01/02/24 Чтв 13:32:39 #68 №931386 
>>931337
Этот код будет давать тебе преднастроенную кнопку:
> func create_button(name: String, text: String, on_press: Callable, on_press_id: int) -> Button:
> ____ var result := Button.new()
> ____ result,name = name
> ____ result,text = text
> ____ result,pressed.connect(on_press, [on_press_id])
> ____ return result
Использовать его примерно так:
> for item in my_choises:
> ____ var btn = create_button(item.name, item,text, on_choise, item.id)

> func on_choise(id):
>___ match id:
>___ ___ 0: foo()
>___ ___ 1: bar()
>___ ___ 2: baz()
Аноним 01/02/24 Чтв 13:34:38 #69 №931388 
>>931386
> > for item in my_choises:
> > ____ var btn = create_button(item.name, item,text, on_choise, item.id)
> > ____ my_dialogue_scene_button_panel.add_child(btn)
Быстрофикс. Самое главное недоговнокодил.
Аноним 01/02/24 Чтв 13:55:51 #70 №931392 
c1.mp4
Делойте игры
Аноним 01/02/24 Чтв 14:10:08 #71 №931397 
>>931392
Красивое
Очень
Аноним 01/02/24 Чтв 14:11:21 #72 №931398 
>>931397
Средне
Аноним 01/02/24 Чтв 14:12:33 #73 №931399 
не-заставляй-меня.mp4
>>931392
>Делойте игры
Аноним 01/02/24 Чтв 14:13:07 #74 №931400 
>>931392
Как сделать красивый переход между плаваньем и ходьбой? Я как-то делал, у меня лютое дрожание было при переключении стейта на границе области воды с областью земли. Как годаны решают такую задачу?
Аноним 01/02/24 Чтв 14:39:18 #75 №931402 
>>931400
Я просто хожу по воде.
Аноним 01/02/24 Чтв 14:46:37 #76 №931404 
Анончики, подскажите:
Если я планиркю сделать кастомизацию персонажа (пол, текстуры, экипировка) то мне надо просто намоделить это на один скелет и отображать при надобности?
Аноним 01/02/24 Чтв 14:47:26 #77 №931405 
>>931400
У тебя скорее всего в другом состоянии определялось что тут же пора переключаться обратно, и так по кругу. Решается таймером отложенным, когда нужно пробыть хотя бы 0.1 сек в состоянии, или например разнесением в пространстве триггеров, когда между ними есть зазор, а не просто граница сред. Ну могут быть и другие варианты может ты просто pivot point криво поставил и у тебя в другом состоянии поза сдвинута.
Аноним 01/02/24 Чтв 14:57:35 #78 №931406 
>>931399
проиграл
Аноним 02/02/24 Птн 00:00:00 #79 №931467 
guessthenumber.gif
Guess Number MindMap.png
Вчера чуть не высрал простыню о том, как я, тупой даун, не могу додуматься как делать игры. Не могу понять как использовать все эти функции и переменные, какие-то блять сигналы, ноды, _ready, _process, хуй пойми зачем они нужны, как и когда применять, комментарии к этим функциям довольно абстрактны. Пока строчил всё это, в голове сложилась картина о том как я должен реализовать свою игру и ответил сам себе почти на все свои решающие вопросы и вышел из ступора советы из краткого гайда в шапке действительно работают.

Самая элементарнейшая игра которую можно придумать - отгадай число. Кое-как я это сделал, но до конца не понял как и потому прошу разобрать некоторые моменты.
Короче, игра состоит типа из 4-х сцен:
main.tscn - начальное окно с кнопкой старта
game.tscn - 10 кнопочек, числа от 1 до 10
result_win.tscn - сцена где говорят что мы победили
result_lose.tscn - а тут что проиграли

У каждой корневой Node2D ноды этих сцен есть скрипт, у main и result'ов это просто скрипт содержащий

func _on_button_pressed():
get_tree().change_scene_to_file("res://game.tscn")

то бишь переход к сцене game.tscn

А вот скрипт ( https://paste.lcomrade.su/rB6bG0OJ ) главной ноды Game сцены game.tscn.

Во-первых: возьмём любую функцию кнопки _on_button_pressed(). Я не понимаю как происходит сравнение в условии if 1 == random_number, а если конкретнее, то откуда у нас берётся значение random_number'a, ведь функция get_ranum() существует, но не вызывается. Так же есть тело функции _ready(), я прописал его чтобы просто смотреть в консоле какое число было задано. Если это тело убрать или функцию удалить то при попытке играть я всегда проигрываю, то есть random_number пустой и ни одно значение с кнопки с ним не сходится. Короче говоря, выходит, что как раз в функции _ready(), которая выполняется прежде всего, мы вызываем get_ranum() и, соответственно, заполняем random_number с которым, в последующем, и работает условие. Я пытался пользоваться отладчиком чтобы посмотреть что куда присваивается, но что-то нихуя не понял как он работает. пока писал это, до меня дошла мысль что это всё вполне логично, и, наверное, всё именно так и работает. Надеюсь я ошибаюсь и не зря это строчил.
Во-вторых, хочу узнать как можно реализовать всё это более чисто и ёмко. Я уверен, наверняка, вместо десяти функций для каждой кнопки, можно сделать одну, и вообще всё оптимизировать и сделать чотка!
Короче, расскажите как вы бы сделали, аноны.
Аноним 02/02/24 Птн 00:13:13 #80 №931471 
>>931467
>Пока строчил всё это, в голове сложилась картина
Классика, у меня такое регулярно. Происходит затык, не могу что-то понять, найти или придумать. Пишу длиннопост. В процессе написания приходит понимание. А ещё чаще - оно приходит через пару минут после того, как пост отправлю.
Я это для себя объясняю так, что сам процесс написания поста стимулирует мозг к осознанию мыслей, так как они переводятся из абстрактной в текстовую форму и упорядочиваются.

А ещё отвлечься полезно тоже и сходить куда-нибудь, да хотя бы посрать. Все самые лучшие идеи приходят на толчке.
Аноним 02/02/24 Птн 02:53:37 #81 №931503 
image.png
image.png
image.png
image.png
>>931467
То что уже хоть что то высрал, большой прогресс. Не стоит себе засорять голову мусорными вопроси по типу а точно я делаю все правильно, а так можно, а как это использовать правильно, просто бери и делай, попутно смотри как игры делают другие, и тогда вопросы сами отпадут.

>Я не понимаю как происходит сравнение
@
>Короче говоря, выходит, что как раз в функции _ready(), которая выполняется прежде всего, мы вызываем get_ranum() и, соответственно, заполняем random_number с которым, в последующем, и работает условие.
Так и есть.

Во первых.
>random_number = randi() % 10 + 1
Насколько я помню % это остаток, да и вообще не пойму зачем ты пытаешься этим колдануть, когда есть randi_range(int "from", int "to").
Во вторых.
Зачем тебе вообще генерировать от 1 до 10 если у тебя при нажатии только 2 состояния, победа и поражение.
В третьих.
Следуя из пункта выше, у тебя отпадает нужда в 10!!! функциях, делаешь один метод в котором генерируешь инт от 0 до 1. Да даже если бы тебе нужно было что бы каждая кнопка отправляла свое число, столько функций не нужно, хватит одной которая принимает переменную и ее обрабатывает как надо.

Прилагаю пикрилы как бы сделал я. Пик 1 менеджер, если его можно так назвать, который обрабатывает входящие данные и на их основе манипулирует состоянием игры. Скрипт висит очевидно на менеджере. Пик 2 простейший скрипт для передачи номера кнопки который ты поставишь в инпекторе. Скрипт висит очевидно на кнопке. Пик 3, как выглядит сцена. Ну и пик4 сонсолька.
Аноним 02/02/24 Птн 08:12:15 #82 №931526 
>>931467
>>931471
> Пока строчил
Нормальный, общеупотребимый паттерн программирования - объяснить свою проблему во всех подробностях резиновой уточке
Аноним OP 02/02/24 Птн 15:53:25 #83 №931584 
1706878406110.png
Когда уже китайцы сделают нам резиновую Годеточку для ванны? Рассказывать ей о своих проблемах со скриптами.
Аноним 02/02/24 Птн 16:14:58 #84 №931589 
>>931584
Зочем? Для этого как раз и существует тред, разве нет?
Галочку то сними
Аноним 02/02/24 Птн 16:50:37 #85 №931598 
image.png
>>931404
Вдогонку: интересует еще вопрос оптимизации. В этой модельке 1900 полигонов, если теоретически добавить экип то будет около 5. Ну для одного персонажа допустим нормально. А если их 30? А если 64? Опыта в геймдеве нет поэтому для меня это еще неочевидно.
Аноним 02/02/24 Птн 17:33:15 #86 №931606 
>>931598
Накопипасти ее в редакторе годота, выключи всинк и лимит фпс, и посмотри когда фпс падать начнет.

Чет помню в каких-то дьяблах разрабы модельки по 5 миллионов полигонов делали, все с них охуевали.
Аноним 02/02/24 Птн 21:10:33 #87 №931669 
>>931598
включи сетку, хочу увидеть где именно эти 1.9к Хотя если экип будет той же детализации, то полигонов 3к скорее всего, не утрируй.
Аноним 02/02/24 Птн 21:41:42 #88 №931684 
Имеется вопрос по сохранению и загрузке данных. Я так понял в этом двигле есть два стула, это классические текстовики тип жсона и свои ресурсы. Свои ресурсы я так понял проще, т.к. не нужно делать се и десериализацию, но ставит палки в колеса любителям загружать чужие сейвы т.к. есть лазейки для вредоносного кода.
Теперь наверное нужно указать что мне собственно надо сохранять и загружать.
Это сложный инвентарь с предметами на десяток параметров, различные обьекты которые может строить игрок в мире(сундуки, переработчики со своими инвентарями и обработками). Изменения в мире: уничтожение предметов, обьектов, врагов.
В юнити я уже это делал на жсоне, мне совершенно не понравилось что это превращается в переборку листов в листе листов. Особенно если потом надо добавить еще один параметр предметов.
Так вот, вопрос в том, каким образом рекомендуете сохранять данные? Насколько уязвимость с сохранением через ресурсы актуальна? Целевые платформы десктоп шинды и ведро, чистый синглплеер.
Аноним 02/02/24 Птн 21:57:22 #89 №931702 
image.png
>>931669
Про добавить экип я имел ввиду общее количество предметов, даже неотображаемых. Или то что не видно не жрет ресурс?

>>931606
Спасибо за мысль, так потом и поступлю!
Аноним 02/02/24 Птн 22:04:50 #90 №931709 
>>931702
то что не видно не рендерится. программа отрисовки на корню чекает если объект "всключён" и если нет пропускает его.

И про включить сетку я имел ввиду нажми SHIFT+Z чтоб насквозь было видно. обратно той же комбинацией.
Аноним 02/02/24 Птн 22:07:42 #91 №931711 
image.png
>>931709
>не видно не рендерится
Успокоил, спасибо
Аноним 02/02/24 Птн 23:01:03 #92 №931734 
>>931711
по черноте видно что основная детализация в руках, затылке и грудной клетке, почему то? затылок не видно да и грудина судя по всему -- продолжение шеи. то чего не видно надо вырезать, оптимизация, хуё моё.
Аноним 02/02/24 Птн 23:06:29 #93 №931735 
>>931734
слышь грудь не трогай, зря он чтоль делал
Аноним 02/02/24 Птн 23:11:25 #94 №931740 
image.png
image.png
>>931734
Сисик поправил, а в грудной клетке пока находится законцовка "бюста". Экспериментирую со взаимозаменяемостью.
Аноним 02/02/24 Птн 23:35:56 #95 №931747 
>>931735
я не про саму грудь, блин, не про сиськи.а про то что внутри грудной клетки явно лишняя геометрия которая, как я и думал, является бюстом башки.
Аноним 02/02/24 Птн 23:41:50 #96 №931750 
>>931684
>чистый синглплеер
>уязвимость с сохранением через ресурсы актуальна
Тебе не похуй, что там будут шаманить через сохранения в сингле?

Алсо, я просто закидываю переменную инвентарь (массив со словарями) в такую же переменную инвентарь в файле сохранения. И все норм работает.
Аноним 03/02/24 Суб 04:27:26 #97 №931965 
Нужна помощь эксперта. match по скорости так же работает как и if else или быстрее?
Аноним 03/02/24 Суб 09:56:10 #98 №931998 
1706943370714.png
>>931965
Сделай два метода, один с 100500 ифов, второй с 100500 матчей. В начале каждого метода
> var elapsed = OS.get_time_msec()
В конце
> print("Time elspsed is %s msec" % OS.get_time_msec() - elapsed)

И сам получишь ответ на свой вопрос.
Аноним 03/02/24 Суб 10:31:26 #99 №932006 
image.png
>>931503
Я нихуя не понял что тут происходит.
То есть у нас есть корневая для кнопок нода манагер.
У ноды манагер есть скрипт.
У каждой кнопки есть общий скрипт.

Скрипт кнопок поменьше, поэтому с него:
Мы добавляем в Инспектор свойство Number Button. В скрипте
number_button = 1
1 (один) это типа просто дефолтное значение, но для каждой кнопки оно будет равно значению указанному в Инспекторе этой кнопки если, конечно, укажем?

Потом подключаем сигнал export_value в скрипт манагера, собственно, создаётся наш
func _on_butoon_export_value(value)
с интересным названием. Выходит, все 10 сигналов каждой кнопки подключаем к скрипту?
Однако, ты пишешь
>Да даже если бы тебе нужно было что бы каждая кнопка отправляла свое число, столько функций не нужно, хватит одной которая принимает переменную и ее обрабатывает как надо.
То есть можно сделать чтобы один некий func _on_butoon_export_value(value) обрабатывал всю эту группу из 10 кнопок? Как это? Как она, одна функция, примет другие переменные, если эти переменные берутся из Инспектора кнопки (типа возьмёт value из заэмиченной к скрипту кнопки первой, скажем, и всё ведь, а дальше)?
Блат, надеюсь внятно сформулировал. Кажется, чем дольше я думаю, тем хуже понимаю что происходит и сам путаюсь.

upd: Я начинаю подозревать что если мы не будет выводить какие либо значения в консоль, а будем общаться с игроком через UI, как в моей графической версии, то все эти value нахуй не нужны. Нажали на кнопку с числом - выиграли/проиграли. Какое там value передалось никого не ебёт. Надо сделать

match, очевидно в начале прочитал как math и пол дня ебался искав что же такое math, проверяет на совпадение. В справочнике про эту функцию написана какая-то непонятная поебень. Does a simple expression match (also called "glob" or "globbing"), where * matches zero or more arbitrary characters and ? matches any single character except a period (.). An empty string or empty expression always evaluates to false.
Аноним 03/02/24 Суб 13:08:57 #100 №932074 
Нужна помощь эксперта. RigidBody3D по скорости так же работает как и KinematicBody3D?

Я хочу сделать много, несколько тысяч, объектов, которые почти всегда будут просто сидеть на месте, и лишь иногда (редко) укатываться от игрока и коллизить со стенами (но не друг с другом). Как оптимальней это сделать?
Аноним 03/02/24 Суб 13:15:40 #101 №932075 
image.png
>>932006
>1 (один) это типа просто дефолтное значение, но для каждой кнопки оно будет равно значению указанному в Инспекторе
Да.
>Выходит, все 10 сигналов каждой кнопки подключаем к скрипту? ....... Как она, одна функция, примет другие переменные, если эти переменные берутся из Инспектора кнопки
Да, но не ручками, кроме первого раза офк. Мы сделали отдельную сцену с кнопкой. Мы добавили эту сцену в главную сцену, туда же добавили менеджер. Сделали подпись менеджера на сигнал. И просто КТРЛ + Д сделали несколько дубликатов сцен с кнопкой. Получился пикрил 1. Я хуй знает как это адекватно объяснить честно говоря. Если по тупому то в дубликатах у сигнала остается та же ссылка на метод которая была у оригинала, но данные которые будут передавать сигналы уже будут разными. Бля, я вот знаю как это все работает, но объяснить нихуя не могу.
>upd
Ну дак да. Я просто показал что можно передавать абсолютно любые данные сигналом, и обрабатывать их в одном методе, если в этом есть нужда. Ну вот допустим тебе понадобится узнать при нажатии какой кнопки игрок проиграл, что бы собрать условную статистику невезучих кнопок, будешь знать как можно сделать.
Аноним 03/02/24 Суб 13:20:06 #102 №932078 
>>932006
Смотри, дизайн твоего приложения может создаваться по двум вариантам, в зависимости от того, как тебе удобнее.
1. Много мелких скриптов в объектах.
2. Один божественный скрипт на все объекты,
Второй вариант считается, антипаттерном. Нежелательным. Потому что тогда в одном скрипте будет намешана лапша из всех объектов приложения. (Я специально не называю это игрой, потому что это не эксклюзивные знания геймдева, это общая для кодинга инфа).
Тебе выше предлагается дизайнить по первому варианту.
У каждой кнопки свой скрипт и свой индекс (но нейминг конечно, фу), при нажатии на кнопку, она испускает сигнал с индексом. Но проблема в том, что на все сигналы всех кнопок нужно подписываться. Этот момент либо упущен, либо проигнорирован автором поста. Сигналы (ивенты) это реализация другого паттерна, наблюдатель (обсервер), и распихивание локальных сигналов без возможности на них подписаться - бессмыслица.
>>932075
> я вот знаю как это все работает, но объяснить нихуя не могу
Не знаешь. А лезешь советовать.

>>932006
Так что выкинь нахер весь этот код и просто работай по варианту 2 (год-обджект) пока не поймёшь, как от него избавиться. Пока сам жо этого не дорастёшь.

То есть, тебе надо в рамках одного скрипта объявить и массив кнопок, и нагрузить их своими коллбэками (либо одним коллбэком с индексом-аргументом). Вот. Приступай.

>>932074
> много, несколько тысяч, объектов, которые почти всегда будут просто сидеть на месте, и лишь иногда (редко) укатываться от игрока и коллизить со стенами (но не друг с другом). Как оптимальней это сделать?
Для этого у них есть режим сна, в котором они игнорируются физическим движком. Изучи это.
Аноним 03/02/24 Суб 14:10:21 #103 №932099 
>>932078
>Не знаешь. А лезешь советовать.
Критикуешь предлагай. Покажи сам как правильнее будет сделать, это в разы полезнее будет нежели вести пустой треп о паттернах, особенно когда человек не понимает даже как работает код.
Я из себя тут гуру не строю, и только рад буду если кто то более знающий поможет анону.
Аноним 03/02/24 Суб 14:14:45 #104 №932101 
>>932078
>Для этого у них есть режим сна, в котором они игнорируются физическим движком. Изучи это.
Увы, у этого вечные проблемы. Например: Ригидбоди лежит на ригидбоди. Оба спят. Убираешь нижний - верхний продолжает спать и висит в воздухе. Такая же история если куча ригидбодей лежит на статикбоди, и мы удалим статикбоди из мира. Все ригиды спят вися в воздухе.

Можно, конечно, будить их вручную. Но это излишек геморроя, каждую ситуацию учитывать и ригидбоди искать.
Аноним 03/02/24 Суб 15:05:43 #105 №932119 
>>931998
Я же написал ЭКСПЕРТА, а не какую-то синеволосую соевую гномиху капишь?
>OS.get_time_msec()
Неправильно. Нет такого метода сейчас. Да и как я буду столько матчей и ифов делать нах надо.
Пацаны говорят, что матч, вроде как, как свичами этой всех хуетенью оперирует, а потому быстрее елсифа.
Сам я не ебу конечно.
Аноним 03/02/24 Суб 15:18:49 #106 №932122 
>>932099
> Критикуешь предлагай
Предложил:
>>932078
> Так что выкинь нахер весь этот код и просто работай по варианту 2 (год-обджект) пока не поймёшь, как от него избавиться. Пока сам жо этого не дорастёшь.

> То есть, тебе надо в рамках одного скрипта объявить и массив кнопок, и нагрузить их своими коллбэками (либо одним коллбэком с индексом-аргументом). Вот. Приступай.
Аноним 03/02/24 Суб 15:29:02 #107 №932128 
>>932122
Че за глупые маневры
Аноним 03/02/24 Суб 15:35:26 #108 №932130 
>>932119
Все правильно он тебе ответил. Метод может иначе называется, или его переименовали в четверке. Погуглить ты же в состоянии, верно? Принцип как он тебе и написал - берешь миллисекунды до, берешь после, вычитаешь, смотришь сколько мс код работал.

>Да и как я буду столько матчей
В цикле, епта. for i in range(10000000000): match ...
Аноним 03/02/24 Суб 15:46:52 #109 №932136 
>>932130
>В цикле, епта. for i in range(10000000000): match ...
Так у меня i будет просто бежать до 10000000000 же. Скорость будет одна и та же вне зависимости от метода сравнения.
Аноним 03/02/24 Суб 16:03:53 #110 №932140 
>>932136
А внутри цикла у тебя матч. А внутри такого же другого цикла у тебя иф. В ифах-матчах сравниваешь то, что тебе там надо сравнивать. Потом сравниваешь результаты работы двух больших циклов. Это база, это знать надо.

Короче ты заебал тупить, и я сравнил за тебя на обычных интах. На 10 миллионах сравнений матч быстрее иф-елс на 32 миллисекунды. Это дохуя ценное знание конечно сильно ускорит твой проект.
Аноним 03/02/24 Суб 16:13:48 #111 №932142 
>>932128
Нахуй иди.
Аноним 03/02/24 Суб 16:18:37 #112 №932145 
>>932142
На словах ты лев толстой, а на деле хуй простой. Ожидаемо.
Аноним 03/02/24 Суб 19:11:01 #113 №932246 
Делайте игры, хватит прокрастинировать.
Аноним 03/02/24 Суб 19:32:22 #114 №932249 
>>932246
Делаю!
Аноним 03/02/24 Суб 20:02:35 #115 №932264 
1706979756513.png
1706979756535.png
1706979756541.png
1706979756542.png
>>932145
> На словах ты лев толстой, а на деле хуй простой.
Нет ты.
Аноним 03/02/24 Суб 20:56:52 #116 №932285 
>>932246
схуяль ты решил что я их не делаю?
Аноним 03/02/24 Суб 21:29:15 #117 №932293 
image.png
>>932285
Аноним 03/02/24 Суб 21:37:56 #118 №932294 
>>932264
Это конечно хорошо, но в рамках т.з первого поста нет никакой необходимости в динамическом создании кнопок. Это имело бы смысл только в том случае когда нам надо было бы генерировать рандомное число кнопок на старте, а у нас блять их количество статичное, их никогда не будет ни больше ни меньше. Делать динамику там где она нахуй не нужна - бессмыслица.
Аноним 03/02/24 Суб 21:43:19 #119 №932296 
>>932294
> нет никакой необходимости в динамическом создании кнопок
Есть смысл.
Это удобно и красиво.
Не нужно ебаться с заданием им параметров в инспекторе, или копипастить сконфигурированные, или копипастить код с коннектами в скриптах.
Весь коннект происхожит быстро, элегантно, в одном месте. И там же может так же элегантно поизойти расстановка динамических контролов по форме.
Аноним 03/02/24 Суб 22:06:22 #120 №932304 
>>932296
>Это удобно и красиво.
Слишком жидкое оправдание.
>Не нужно ебаться с заданием им параметров в инспекторе
А это убило. Лучше же поебаться в самом коде насрав милиард ненужных строк, сделав при этом не расширяемое говно, верно?
Короче, смысла в дальнейшей дискуссии нету. Оба варианта имеют право на жизнь т.к используются в абсолютно разных ситуациях.
Бля ща не доеб, но я чето в голос с того что попытался твое ебало имадженировать, весть такой нарядный, с пакетом, одним словом елегантный.
Аноним 04/02/24 Вск 08:05:56 #121 №932387 
>>932304
> верно?
Неверно.
Данный код добавит любое количество кнопок с любыми именами без изменения кода проекта. Достаточно описать эти кнопки в конфигурационном файле, эмуляция которого описана в var choises_from_persist_data
> Угадайте число от 1 до 10
> Угадайте число от 45 до 97
> Угадайте фрукт из списка [банан, яблоко, апельсин, слива]
> Да / Нет
> Да / Нет / Не знаю / Мне повезёт
И так далее.
Аноним 04/02/24 Вск 13:46:26 #122 №932444 
image.png
Сделал основные анимации движения, закинул .blend файл в папку проекта, приготовился уже разбираться с анимированием и столкнулся со следующей проблемой. В AnimationPlayer отображаются не все анимации, которые есть в блендере. В чем я напортачил?
Аноним 04/02/24 Вск 14:02:45 #123 №932448 
image.png
>>932444
Короче просто через gtlf export буду выгружать. Эх, а с редактированием .blend файла в реальном времени было бы в сто крат лучше.
Аноним 04/02/24 Вск 20:19:22 #124 №932523 
image.png
Что оно хочет этим сказать? При запуске проекта сыпет, но все работает ок
Аноним 04/02/24 Вск 23:53:18 #125 №932650 
Аноны, я правильно понимаю, что точечный свет в 2д + тени очень медленно работает? Решил добавить в мобильную игру свет и тени на локацию - на ведре (пиксель 5а) лагает. В какую сторону копать с оптимизациями?
Тени сделал менее детальными, фпс поджал - стало лучше. Но все еще плохо.
И это с учетом того, что добавил лишь 5 источников света и около 15 предметов с тенями. Источники свет статичны, предметы с тенями могут появляться\пропадать(некоторые).
Аноним 05/02/24 Пнд 00:24:28 #126 №932668 
>>932650
Советы давать не буду, просто свое отрепорчу.

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

У меня такие результаты. 5-15 омнилайтов, только один из них с тенями, главный. В настройках проекта прошелся и снизил почти все. Эффективнее всего снижать разрешение - актуально если у тебя пиксели или лоуполи. На своем realme 9 получаю стабильно 60 фпс. При этом в доступе у меня есть сяоми с каким-то стремным чипсетом. По бенчмаркам он шустрее моего телефона, но умирает до 3 фпс от одного омнилайта.
Аноним 05/02/24 Пнд 10:15:43 #127 №932706 
>>932650
Если только исчезать пропадать, не двигаться, то просто запеки, очевидно.
Аноним 05/02/24 Пнд 23:14:58 #128 №932860 
>Note: call_group() will always call methods with an one-frame delay
Ебать это мне половину вечера испортило.
Аноним 06/02/24 Втр 12:48:27 #129 №932928 
image.png
алё бля, где новые версии, хули сидите
Аноним 06/02/24 Втр 13:17:08 #130 №932945 
>>932928
Да нахуй они нужны? Пусть не трогают, что не сломано
Аноним 06/02/24 Втр 13:34:34 #131 №932952 
>>932928
Токсичного Юрку пидорнули, теперь нового искать надо. Жди.
Аноним 06/02/24 Втр 13:39:19 #132 №932958 
>>932952
> Юрку пидорнули
Как бабки базарные, ей богу. Игры делайте, вместо того чтобы за жизнью разрабов следить.
Аноним 06/02/24 Втр 14:01:10 #133 №932975 
>>932952
>Токсичного
Чё он там, не поддержал трансовый переход чьего-то ребёнка, не поцеловал ботинок негру или скзаал долбоёбу, что он долбоёб без увиливаний и ужимок? Англосаксы очень нежный и в их понимании токсичностью можно назвать всё, что угодно.
Аноним 06/02/24 Втр 14:19:37 #134 №932981 
>>932975
Забулил француза, который физический движок пилил при переходе с 3 на 4. Тот так и сказал, ай фил буллиед и уебал в рокстар.
Аноним 06/02/24 Втр 14:23:34 #135 №932982 
>>932981
То есть так можно в адрес любого написать, хоть Хуана, и он уйдёт?
Аноним 06/02/24 Втр 14:27:25 #136 №932985 
Делаю survival horror.
Запили базовое перемещение персонажа, переход между уровнями, систему сохранения, сейчас делаю инвентарь и сразу вплетаю его в систему сохранений. Все верно делаю?
Аноним 06/02/24 Втр 14:31:03 #137 №932986 
>>932982
На Юрку много жалоб было, я тебе просто самый наглядный пример дал, из-за которого физика в 4 до сих пор сломана.
Аноним 06/02/24 Втр 15:03:40 #138 №932994 
>>932986
Хорошо хоть на хуана жалоб немного было
Аноним 06/02/24 Втр 16:58:28 #139 №933025 
Нужно ли remove_child(node) перед node.queue_free()?
Аноним 06/02/24 Втр 17:21:36 #140 №933029 
>>931045 (OP)
Можно ли вообще включить один AnimationPlayer внутри другого? Я из скрипта вызываю функцию первым AnimationPlayer, которая проигрывает второй, но это не работает, при этом сама функция точно вызывается.
Аноним 06/02/24 Втр 18:01:40 #141 №933045 
image.png
Сап, годач. А как изменить размер кнопки? Меняю его в size, но меньше 21 по x и 17 по y кнопка не становится (возвращаются минимальные размеры). Срабатывает через scale, но это костыль
Аноним 06/02/24 Втр 18:31:59 #142 №933063 
1583916099111.png
>>933025
Не нужно
>>933029
Не вижу проблемы честно говоря. В конце концов в плеере есть возможность запустить функцию скрипта.
Плееры анимируют разное или одно и то же? Может они просто оба одновременно играют и один оверрайдит значения другого?
>>933045
Скорее всего, это высчитаный размер исходя из текста таким шрифтом. Попробуй поиграться с отрицательными Margin, потом вон выше есть custom minimum size, посмотри всякие флаги типа extrend, не помню где они в 4-ке. Может быть в Layout.

Ладно котики. Меня позвали пилить мобилки на другом движке, так что не смогу давать советы в ближайшие полгода. Но я обязательно вернусь с игрой мечты и мы сделаем годот великим!
Аноним 06/02/24 Втр 18:45:10 #143 №933068 
>>933063
>пилить мобилки
>на другом движке
Смотри не выгори там.
Аноним 06/02/24 Втр 18:50:03 #144 №933070 
IMG20240206184832342.jpg
>>933063
Уже поиграл сотвсякими ползунками и значениями. Даже через код попробовал - ничего. Думаю, дело вот в этих ебанутых границах. Как их убрать?
Аноним 06/02/24 Втр 18:57:11 #145 №933073 
>>933045
В тройке был rect_min_size, который именно что не давал уменьшить контрол-элемент ниже указанного. В четверке хз.
Аноним 06/02/24 Втр 20:04:45 #146 №933094 
>>932981
Ахаха, пиздец, забулили в интернете, они что, дети что ли? Не умеют отстаивать свою точку зрения?
Аноним 06/02/24 Втр 20:12:35 #147 №933096 
>>933063
>В конце концов в плеере есть возможность запустить функцию скрипта.
Ею и пользуюсь. print_debug из функции нормально выводит значение, а плеер уже не работает.

>Плееры анимируют разное или одно и то же? Может они просто оба одновременно играют и один оверрайдит значения другого?
Абсолютно разное, так что ничего не перезаписывается. Элемент, который должен анимироваться при вызове функции вообще не меняется.
Аноним 06/02/24 Втр 21:57:02 #148 №933121 
>>933068
Планирую сгореть как свеча быстро и ярко и умереть богатым.
Аноним 06/02/24 Втр 22:04:24 #149 №933122 
1652748813105.png
>>933096
Только то проверил, все работает обоими способами. Как через Call Method, так и через Animation Playback Track.
Аноним 06/02/24 Втр 22:38:56 #150 №933123 
1627074324795.png
>>933070
Я попробовал и не нашел способа уменьшить, только увелиить.
Нечто похожее можно получить добавив вокруг MarginContainer с негативными маргинами, и галочкой clip content,но он отрезает скругленные углы кнопке - возможно тебе как то под это придется текстуру подогнать.
Аноним 06/02/24 Втр 22:52:26 #151 №933126 
>>933025
Queue_free() ставит ноду на удаление со следущим кадром а не во время выполнения функции, ибо в текущем кадре к ней может обратиться другой код и будет плоха если ноды не будет на месте
Аноним 06/02/24 Втр 22:55:52 #152 №933127 
>>933122
Ясно, буду искать тогда ошибку в другом месте. Спасибо.
Аноним 06/02/24 Втр 22:59:30 #153 №933129 
>>933126
Полезно.
Аноним 07/02/24 Срд 02:34:01 #154 №933164 
Делойте
Аноним 07/02/24 Срд 07:28:22 #155 №933173 
Игры на годоте же можно будет в Яндекс игры залить?
Аноним 07/02/24 Срд 11:13:56 #156 №933186 
Свершилось! После полугода поиска идеи, прокрастинации, и клепания безыдейных прототипов с копирками, на меня все же снизошло чудо. Теперь я отчетливо вижу то что желаю сделать. И это оригинальная задумка, но довольно очевидная, поэтому все же оригинальность под сомнением, но разве это меня остановит?
Теперь можно со спокойной душой лечь спать, а на утро начать колдовать.
Давно я такой мотивации не ловил от собственных идей.
Путь будет тернистым и долгим, но зато каким!
Аноним 07/02/24 Срд 11:16:46 #157 №933188 
>>933186
Запиши ее
Аноним 07/02/24 Срд 11:17:12 #158 №933190 
>>933173
На 3-й версии. 4-й нужна поддержка SharedArrayBuffers на сервере, которую никто не нашел как в яндексе включить.
Аноним 07/02/24 Срд 18:12:06 #159 №933275 
170731805349853474.webp
Чуваки, а что если у меня линукс?
Я только вкатываюсь, код пишу хуе мое, но тестировать надо наверно на винде и вообще на ней сидеть? Там же эти библиотеки, дирекс 12 и прочее говно

Алсо я на ноуте геймдевлю, 2 ядра, 8 гигов, амудевстройка, которая в 60 только сталкер тень чернобыля тянет, если все выставить на средние
Хотя я и не планирую делать графоуни шутеры
Аноним 07/02/24 Срд 18:13:20 #160 №933276 
>>933275
Я конечно могу запускать ехешники через вайн, портпротон, ботлз, но хз
Аноним 07/02/24 Срд 18:35:07 #161 №933285 
>>933275
Ты о чем вообще, какие экзешники? Годот, будучи опенсорным, работает где угодно и на чем угодно. Я, сидя на линуксе, уже четвертый проект на годоте допиливаю, все предыдущие опубликовал под винду, макось, линь, веб и андроид.
Аноним 07/02/24 Срд 19:16:18 #162 №933292 
>>933275
Трешка у меня збс работает на дебиане, 4ка работает почти никак потому что в моем некроноуте нет дров на вулкан.
А с точки зрения релиза, вообше проблем нет, экспорт это бинарник платформы + твоя игра в виде пака скриптов и ассетов. Кидал и веб билды и виндовые на твг
Аноним 07/02/24 Срд 19:17:28 #163 №933293 
>>933285
Айфону нужен мак с икскодом?
Аноним 07/02/24 Срд 19:22:21 #164 №933295 
>>933293
Под айфон не делал, единственная платформа которую я пропустил. Насколько понимаю да, нужен мак с икскодом, и нужен еще и айфон. Плюс если в гугл-плее ты как разработчик платишь единоразово за девелоперский аккаунт, то аппл с тебя ежегодно драть будет 99 баксов. Плюс санкции-верификация, хуе-мое. Поэтому не стал заморачиваться.

А для мака релиз собирается легко из-под любой платформы.
Аноним 07/02/24 Срд 19:48:46 #165 №933300 
>>933285
>>933292
Понял, спасибо
Аноним 07/02/24 Срд 20:53:49 #166 №933314 
>>933186
Удачи тебе, анон
Аноним 07/02/24 Срд 21:35:56 #167 №933319 
>>933275
Ты это я.
Такой же ноут с линухом, только интелвстройка вместо амуде.

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

С другой стороны, когда дойдёт до тестирования, тебе в любом случае не хватит одного устройства. Там уже надо подключать всех знакомых и заставлять их играть в твою игру на всём, что у них есть. Тащемта, люди и сами рады в таком деле помочь, как правило.
Но до тех пор просто делай на том, что есть. Оно должно работать везде одинаково; а где не будет - там в любом случае нужно тестирование.
Аноним 07/02/24 Срд 21:44:00 #168 №933320 
Сделал первую из четырех игру по книжке из прошлого треда

Годно, но местами будто автор забыл написать код (иначе бы он наверно написал что то типа "а теперь придумайте код сами) и хоть там и легко для меня было додуматься, ведь я уже пару туторов по паре часов посмотрел, рандом может невтыкнуть и его анус лопнет

Не обьяснил про PackedScenes и что после двоеточия присваивается тип переменной
Не обьяснил что такое randi_range (вроде)
Не обьяснил что делают -=1 и +=1

А так в целом говна с кодом небыло
Аноним 07/02/24 Срд 22:15:43 #169 №933332 
Как ограничить игровое 2D поле только чтоб там были плюсовые координаты? И чтоб камера не выезжала за игровое поле
Аноним 07/02/24 Срд 22:22:17 #170 №933334 
https://www.youtube.com/watch?v=PQQgY2fVTOY

Стоит оно 5 лет разработки?
Аноним 07/02/24 Срд 22:35:12 #171 №933337 
>>933320
>Не обьяснил про PackedScenes и что после двоеточия присваивается тип переменной
>Не обьяснил что такое randi_range (вроде)
>Не обьяснил что делают -=1 и +=1
А разве должен был? Книга то не по изучению гдскрипт, а по обучению работы с годо. Если нюфажи скипают банальное ознакомление с базой языка на котором им придется писать, то это их проблемы, а не автора. Такую ебейшую документацию зря писали что ли?
Аноним 07/02/24 Срд 22:46:58 #172 №933340 
Годаны, ражуйте мне, чего я не понимаю.

Вот у меня есть нода, которой надо перерисовать много дочерних нод. Когда это происходит, всё подвисает на несколько секунд. Не круто. У меня есть два пути, как это обойти.
А) Разбиваю цикл на части, в _процессе выполняю некоторое количество, ограничиваю время выполнения, чтобы продолжить в следующем фрейме. Пробовал такое в трёшке для загрузки сейвов.
Б) Мультитрединг.
И тут у меня вопросы, которые требуют ответов. Курил-курил доку, но так и не понял. Мутексы и семафоры вообще описаны в двух словах людьми, которые слишком хорошо понимают, как это работают, поэтому уже забыли, что тут можно не понимать.
В общем, мои вопросы:
1. Надо ли это делать в _процессе, таким же методом, только в отдельном потоке? Или func do_all_my_update() и в ней описать весь тхред? Если и так, и так можно, то какие критерии выбора?
2. Если я захочу прервать/перезапустить тхред, как мне к этому всему обратиться?
3. Есть какие-то тхред-сейф операции, а есть какие-то не тхред-сейф. В чём их несейфность? Если я буду добавлять чайлдов в тхреде, что плохого может произойти?
4. Есть у меня переменная в скрипте, которая в варианте А использовалась как индекс цикла, запоминаемый между _процессами. Я точно знаю, что она никому, кроме тхреда, не нужна. Надо ли её как-то защищать мутексами/семафорами при условии, что я пока только пытаюсь вкурить в мультитрединг, или для начала и так сойдёт?
Аноним 07/02/24 Срд 22:51:27 #173 №933342 
>>933334
Говно какое-то соевое

>>933337
Очередной адепт документации. Никогда ни в одной блять документации нормально не пишут, что и как делать. Что и как работает. Пишут ее задроты для задротов. А вся мудрость на формуах и в туториалах
Аноним 07/02/24 Срд 22:54:23 #174 №933345 
>>933332
>чтоб камера не выезжала за игровое поле
У Camera2D есть параметры limit_*, делающие как раз это
>Как ограничить игровое 2D поле
StaticBody2D, запихни в него шейпы типа WorldBoundaryShape2D (или LineShape2D для третьего годота)
Аноним 07/02/24 Срд 23:05:32 #175 №933347 
>>933337
Ну тоесть выделить главу на обьяснение что такое вектора он должен, а вот строчку текста потратить на обьяснение нубику принцип работы +=, который юзается постоянно, он не должен?
Аноним 07/02/24 Срд 23:06:56 #176 №933349 
>>933345
Спасибо, попробую
Аноним 07/02/24 Срд 23:10:56 #177 №933351 
>>933342
>>933347
Напишите свои книги.
Аноним 07/02/24 Срд 23:19:42 #178 №933355 
>>933353
Ну не читай и не пиши. Хуле ты ноешь то все? Книги у тебя не то, документация не то, сам ничего делать не хочешь, и игры соевое говно, и все у тебя кончи, один ты красивый. Только срешь тут.
Аноним 07/02/24 Срд 23:38:16 #179 №933361 
>>933347
Не читал, но объясняю.
Это типичное искажение восприятия. Человек, который глубоко погружён в какую-то тему, не может воспринимать её глазами новичка. И ему не всегда понятно, какие концепты очевидны, а какие надо разжёвывать. Автор книги, судя по всему, решил, что += это достаточно очевидный оператор, значение которого понятно из контекста.
Тут, кстати, очень полезно бывает попрактиковаться на детях. Взрослые имеют разный уровень знаний, в то время как дети не знают ничего по определению.
Аноним 08/02/24 Чтв 00:03:36 #180 №933371 
image.png
>>933342
Ебать ты шизло, документацию то хоть открывал? Там буквально все расписано, картиночки, да даже анимированые есть, специально наделали, чтоб даже додич с слюной у рта мог понять что ему объясняют. Или по твоему там должны готовые %механикинейм% подавать?
>>933347
Эт че шутка такая? Нахуй ты прешься в движок если блять даже БАЗОВЫХ операторов языка не знаешь. Иди язык учи епта. Игры делоть он лезет бля. Это блять как придти на завод болты крутить, но в душе не ебать каким инструментом это надо делать, и в какую сторону вообще крутить.
>>933361
Нехуй тут объяснять, в книге черным по белому написан пикрил текст, а значит книга не для вкатыша в геймдев, а для новичка в годо.
Аноним 08/02/24 Чтв 07:23:48 #181 №933401 
>>933371
Я книгу скачал чтобы их не делать а чтобы научили делать
Я не на завод приперся точить деталь, я попросился к опытному мастеру в ученики, и мастер местами нихуя не обьяснил
Аноним 08/02/24 Чтв 11:58:42 #182 №933444 
>>933371
>книга не для вкатыша в геймдев, а для новичка в годо.
Ты сам-то прочитал то, что запостил? Книга и для вкатыша в геймдев, и для новичка в годо.
>This book is for anyone
>New users and experienced developers
>Some programming experience is recommended
Знаешь разницу между recommended и necessary?
Аноним 08/02/24 Чтв 12:52:07 #183 №933453 
>>933371
Блять, двачую! Аплодирую стоя! У меня так же пригорает от нулевых нубов, вкатывающихся в геймдев без элементарных знаний школьной информатики.
Аноним 08/02/24 Чтв 13:28:51 #184 №933467 
>>933453
Тут даже знания школьной информатики не нужны, достаточно скилла гуглить. Или хотя бы придти и спокойно спросить в треде, без предъяв что кто-то кому-то должен.
Аноним 08/02/24 Чтв 13:30:57 #185 №933470 
>>933453
Нас на информатике только заставляли печатать в ворде текст из учебника
Аноним 08/02/24 Чтв 13:31:41 #186 №933471 
>>933467
> достаточно скилла гуглить
ИМХО, недостаточно.
Есть БАЗА, и её знать надо. До того, как он полез в геймдев (вершину айти, на которую восходят лучшие и сложнейшие технологии из остальных подразделов айти).
Аноним 08/02/24 Чтв 13:32:05 #187 №933472 
image.png
Делойте игры
Аноним 08/02/24 Чтв 13:32:06 #188 №933473 
>>933470
Печально. Придётся учить информатику в гугле.
Аноним 08/02/24 Чтв 13:32:25 #189 №933474 
>>933472
Денги плоти!
Аноним 08/02/24 Чтв 13:32:51 #190 №933476 
>>933453
Информатика нахуй нинужна. Вот без матеши с физикой пососёш бибу.
Аноним 08/02/24 Чтв 13:36:04 #191 №933479 
>>933476
Покажи свои игры.
Аноним 08/02/24 Чтв 13:44:50 #192 №933485 
>>933479
https://2ch.hk/b/arch/2020-08-11/res/226549079.html
Сойдёт? Бля, остальные треды проебались оказывается
Аноним 08/02/24 Чтв 15:10:27 #193 №933541 
[bombing]
Да вы задрали, илитки бля. Годот (как и некоторые другие движки) делает геймдев доступным для любого хуйдожника без базовых технических знаний, и именно это замечательно. Анон приходит в тред, делится своим мнением по книге, которую прочитал. То есть, он не просто лезет в геймдев, а он прикладывает усилия к тому, чтобы обучиться. И он пишет отзыв, который, может быть, пригодится другому нубу, ищущему хорошую книжку для обучения.
А вы тут развели - кококо не хотим пускать в наш уютненький геймдев.
Стыдно, товирищи!
[/bombing]

По мультитредингу вопрос.
В целом я разобрался, как создавать тхред и как пользоваться мутексами. Но теперь вот что спрашивается.
Вот у меня в тхреде встречаются call_deferred и set_deferred. И я хочу раньше времени прервать выполнение тхреда (например, чтобы его перезапустить с начала). Как мне теперь отменить эти деферреды, чтобы они не выполнялись?
Аноним 08/02/24 Чтв 15:59:09 #194 №933558 
1707397151001.png
>>933485
Это не игра. И ты сам об этом написал. Такшта, остаюсь при своём. Такой ассетфлип да, можно вообще без знаний чего-либо запилить.
Аноним 08/02/24 Чтв 16:02:13 #195 №933560 
>>933558
Я тебя понял. Теперь покажи свои.
Аноним 08/02/24 Чтв 16:07:15 #196 №933565 
>>933541
>А вы тут развели - кококо не хотим пускать в наш уютненький геймдев.
Соглы. Я был одним из тех, кто на его посты отвечал. Он их так писал, что меня триггернуло на его пустые претензии. Приношу извинения, если что. Вкатывайтесь в геймдев как вам удобно.
Аноним 08/02/24 Чтв 16:16:38 #197 №933569 
>>933558
> как бы не
У тебя русский неродной?
Аноним 08/02/24 Чтв 16:43:00 #198 №933575 
https://godotengine.org/article/dev-snapshot-godot-4-3-dev-3/

tl;dr - в этом снапшоте директ 12, однотредовый веб-экспорт, вэйланд.

Вот эта >>933190 проблема с яндексом, который не умеет в SharedBuffer, теперь решилась за счет однотредового веб-экспорта. Радуйтесь, четверочники.
Аноним 08/02/24 Чтв 16:51:49 #199 №933576 
>>933560
> Теперь покажи свои.
У меня нет игор. Я диван.
>>933569
Я просто тупой, не обращайте внимания.
Аноним 08/02/24 Чтв 17:36:24 #200 №933581 
image.png
>>933444
>>книга не для вкатыша в геймдев
Ну пардон, не то слово выбрал. Не для вкатыша в программирование, а для новичка в годо. Так понятнее?
>>This book is for anyone
Че ты с контекста вырвал, пес. Написано что для каждого кто хочет научиться использовать игровой движок. Нехуй подменой понятий заниматься.
>>New users
Что в твоем понимании новые пользователи? Те кто нубас в движке? Или те кто нубас в скилле кнопкодава? Ты вообще контекст умеешь воспринимать? Или для тебя прямой перевод всегда несет тру смысл строк?
>Знаешь разницу между recommended и necessary?
Разница лишь в том что ты, тупорылый, настойчиво пытаешься игнорировать эту строку. На всех играх пишут рекомендуемые минимальные системные требования. Если ты игру попытаешься запустить на ведре параметры которого еще ниже минимальных, она, как неожиданно, запустится, но будет выдавать максимум 2 фпс. И в ком же вина что столько фпс выдает? В разработчиках? Или в том что ты игру запустил на ведре? Рекомендация хоть и не обязательная форма действия, но это явный маркер того что книга содержит материал который будет не понятен вкатуну.
>>933541
Никто и не гонит. Если человек приходит с безосновательными предъявами, то пусть уходит нахуй. Этож литерали пикрил мем предъявы.
Аноним 09/02/24 Птн 03:08:59 #201 №933698 
64.png
как работает ебучий await?

Если хуярю так:
>zalupa(a)
>await cum
>zalupa(b)
>await cum
>zalupa(c)
>await cum

то все работает. Но если вхуярить эвейт в конец самой функции, чтобы не повторять одно и то же
>func zalupa(x):
>...
>...
>......await cum

>zalupa(a)
>zalupa(b)
>zalupa(c)

то нихуя, функции хуярят все сразу одна за другой
Аноним 09/02/24 Птн 04:08:46 #202 №933702 
>>933698
Смари.

-Вася.Пукни() -zalupa(a)
-Саня браток падажжи пока комната проветрится -await cum
-Саня.Пукни() -zalupa(b)
-Серега браток падажжи пока комната проветрится -await cum
-Серега.Пукни() -zalupa(c)
-Кто там следующий пажжи пока комната проветрится -await cum

Во так и работает корутина. https://gdscript.com/solutions/coroutines-and-yield/
Аноним 09/02/24 Птн 11:57:05 #203 №933770 
Хотел загрузить несколько реплик персонажа в один проигрыватель аудио и вызывать их ASP.play("hallo") на свое усмотрение, а оказывается годо так не умеет и нужно под каждую реплику создавать отдельный узел. Ну или возиться с массивами. В юнити такая же ебасосина?
Аноним 09/02/24 Птн 11:59:29 #204 №933774 
>>933698
там где стоит await выполнение функции останавливается, пока не кончится await
Аноним 09/02/24 Птн 12:07:05 #205 №933777 
IMG20240209120829.jpg
>>933702
Аж всхрюкнул чет

мимо
Аноним 09/02/24 Птн 13:01:32 #206 №933801 
>>933770
Так можно же в скрипт пустого проигрывателя заебенить ссылку с переменной, в которую будет будет передаваться название нужного файла с вызовом функции play()

var replika_name = null

func igrat_huinyu(name):
__replika_name = name
(Не помню куда там грузить и как,)
var suda_gruzit = load('res/audio/repliki/%s.wav' % replika_name)
Play() (хз как там)
Аноним 09/02/24 Птн 13:02:35 #207 №933802 
>>933770
Сам озвучиваешь?
Аноним 09/02/24 Птн 13:34:03 #208 №933810 
>>933802
Не, ии. Охерел от правдоподобности англ голоса на elevenlabs.io
>>933801
Спс, да, через какие-то костыли конечно можно наверное. Но простого решения чет нет. Пишут в годо 2 была библиотека семплов, но ее выпилили.
Аноним 09/02/24 Птн 13:38:15 #209 №933812 
>>933810
А куда проще?
Аноним 09/02/24 Птн 18:14:54 #210 №933896 
1707491695404.jpg
>>933698
> как работает ебучий await?
https://learn.microsoft.com/ru-ru/dotnet/csharp/language-reference/operators/await
Аноним 09/02/24 Птн 19:42:42 #211 №933916 
image.png
Ля, чому я о такой крутой штуке только сейчас узнал, чому мне никто о ней на рассказал раньше, яж теперь куда меньше времени буду тратить на рисование и редактирование связей внутри движка. Бля, я ща радуюсь как маленький, такую годноту купить, за такие копейки, прям подарок.
Аноним 09/02/24 Птн 20:01:15 #212 №933931 
>>933916
Вспоминали о ней и раньше, но редко. Годноты вообще много, всю и не упомнишь.
Аноним 09/02/24 Птн 21:17:29 #213 №933973 
image.png
Нихуя не пойму
а зачем этот hurt.emit ? кому он эмитит? ареа 2д может сразу у вошедшего в зону предмета вызывать функции, а функция смерти напиример уже в самом плеере

как этот эмит ловить и чем и зачем?
Аноним 09/02/24 Птн 21:28:21 #214 №933974 
>>933973
Худу например, либо другим типчикам которые ловят сигнал и на его основе меняют данные, ну вот допустим получил ты урон, потом еще раз и умер, вылезает окошко со статистикой сколько ударов было получено и в какое время. Можно конечно не пускать ивент, а сделать тупо на жесткой связи все, но это не правильно ибо получится получится лапша с которой работать будет невозможно.
Аноним 09/02/24 Птн 22:06:34 #215 №933987 
>>933973
Эмит, как концепция, рассылает "всем кому интересно". Кому интересно, сами подписываются на то, что им интересно. Либо их менеджер/спавнер подписывает. Еще вариант с event bus когда все эмитят в одну кучу, и все подписываются на интересующие события в этой куче, плюсв и минусы в этом свои.
Аноним 10/02/24 Суб 06:53:33 #216 №934027 
>>933987
> плюсв и минусы
Я только плюсы вижу. Из минусов только что ивентбас является синглтоном, от которого на собесах не перезванивают.
мимо фанат ивентбаса
Аноним 10/02/24 Суб 16:05:45 #217 №934161 
>>933987
Мне эвент бас тоже кажется удобней обычных сигналов. Сигналы заебешься еще коннектить туда-сюда, в иерархию погружаться. А в автобус насрал и забыл, а кому надо сам подберет.

Годотным туториалам надо чаще эвентбас упоминать
Аноним 10/02/24 Суб 17:47:42 #218 №934192 
>>934161
Ты не знаешь БАЗУ туториалов. А она такова, что в туториалах инфоцыгане городят говнокод ради донатов. Запомните глупцы: на ютубе вы найдёте только развлекательный контент. Если хочешь изучить движок - читай документацию, качай примеры. Как сказано в шапке.
Аноним 10/02/24 Суб 17:59:29 #219 №934195 
>>934192
Полтреда назад утверждали обратное.
Аноним 10/02/24 Суб 18:04:23 #220 №934196 
1707577456149.webm
>>934195
Таков двач.
Завтра будут утверждать обратное.
Думай своей головой, а не постами на двачах. Не верь никому, даже мне.
Аноним 10/02/24 Суб 18:24:32 #221 №934206 
>>934195
Ты про этого единственного чтоль >>933342 ? Так он же шизик. Как сказал анон выше, туторы - развлекаловка, в основном это примеры того как можно делать и оно будет работать, но в то же время это то как делать вообще не надо. Они скорее нужны для того что бы у тебя отпал страх писать код.
Аноним 10/02/24 Суб 22:27:39 #222 №934314 
Самое приятное в геймдеве - после долгого периода кода, моделирования и дизайна, наконец собрать и подключить звук и музыку. Игра сразу оживает 10 из 10
Аноним 10/02/24 Суб 23:43:36 #223 №934332 
>>934192
Инфоцыган в годоте - полтора землекопа. Тут другая проблема. Туториалы делают такие же нубы, которые просто чуть-чуть что-то узнали и теперь бегут этим делиться. Настоящих опытных профессионалов среди них - те самые полтора инфоцыгана плюс ещё полтора канала с парой сотен подписчиков.
Доку же пишут те, кто действительно шарит. И в доке есть текстовые туторы, кстати. Просто существует большой разрыв между опытными и нубами. Среди опытных кодеров очень мало хороших учителей, а без этого навыка писать понятные туторы очень сложно. С другой стороны, читать доку - это тоже навык, которому надо учиться, вкатышам это сложно, им проще видос на ютубе.
Аноним 11/02/24 Вск 00:54:55 #224 №934344 
>>934332
>читать доку - это тоже навык
Ну 50/50, тут скорее лень читать и тестировать играет роль, вкатышу же че надо, чтоб он на следующий день уже сидел игру делал, вот и прутся видосики смотреть. Я думаю ты сам часто замечал что вкатыши как способ передвижения юзают телепортацию, тобишь изменение позиции на прямую, а потом задают вопросы типо че при большой скорости тело проходит через коллайдеры, как фиксить. Или вон, недавний пример, анону не объяснили что такое : и +=, хотя с его слов он не один туториал посмотрел. Или вопрос с await. И таких примеров триллиард можно привести. А самое главное, ответы на все эти вопросы можно найти чуть ли не на первой странице документации.
Поэтому это скорее не навык, а желание действительно чему то научиться.
Аноним 11/02/24 Вск 16:03:43 #225 №934451 
Вопрос по BBкодам, сейчас имею richtextlabel и базу с диалогами JSON, где прямо внутри " " тоесть в string данных вписаны цветовые коды для нужных мне слов. Все работает, нужные мне слова другого цвета.

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

Для понимания сейчас в json так:
"Ебать его в рот диалог [color=#62FF4A] тут типо зелёный цвет [/color] а тут обычный "

Есть идея сделать выделить нужные слова в отдельный массив и в годоте шаманить с выводом, но это какие то лютые костыли
Аноним 11/02/24 Вск 16:06:58 #226 №934452 
>>934451
var TEST1 : string = "[color=#62FF4A"
var TEST2 : string = "[/color]"
"Ебать его в рот диалог" + TEST1 + "тут типо зелёный цвет" + TEST2 + "а тут обычный "

Ваще не шарю в этом. Но вот так не сработает?
Аноним 11/02/24 Вск 16:14:37 #227 №934455 
>>934452
Проблема в том, что это внутри json вписано, тоесть внутри словаря. А в нем я не могу ??? ввести внутри переменную
Аноним 11/02/24 Вск 16:26:42 #228 №934457 
>>934455
Ну конечно не можешь. Это данные. Но ты можешь трактовать какие то данные особым образом. Естественно для этого придется написать какой код, обрабатыающмй данные. Например regex или просто шаблонизатор. По сути автозамену в строке какого то маркера. "My string {green} word {white} " ну ты понел.
Перестаньте записывать все подрял, включая нормальный рабочий процесс, в костыли.
Аноним 11/02/24 Вск 17:32:21 #229 №934476 
>>934457
Двачую этого. Посмотрите любые диалоговые плагины, они буквально все на регекспах.
Аноним 11/02/24 Вск 17:58:59 #230 №934483 
Чем отличается:
for i in grid_container.get_child_count()

от:
for i in range(grid_container.get_child_count())

?
Аноним 11/02/24 Вск 18:22:01 #231 №934498 
>>934483
Ничем
Аноним 11/02/24 Вск 18:56:46 #232 №934506 
>>934483
А лучше всё-таки
for child in grid_container.get_children()
Аноним 11/02/24 Вск 19:06:36 #233 №934512 
Есть какой-нибудь инструмент, который удаляет фон спрайт-шита?
Аноним 11/02/24 Вск 19:25:14 #234 №934517 
>>934512
Нуу, а чего бы на исходнике не удалить в граф редакторе? А так, шейдером цвет можно поменять
Аноним 11/02/24 Вск 19:32:29 #235 №934519 
>>934344
Так падажжи. Не вижу в твоих аргументах опровержения тезиса о том, что вкатышам сложно в доку. Телепортацию они используют, потому что это самый простой способ перемещения. При том, что все видеотуторы говорят про move_and_slide и move_and_collide прямо с первого же урока.
Вот у меня прямо сейчас открыта страница в доке https://docs.godotengine.org/en/stable/classes/class_xmlparser.html . Представим, что её увидел вкатыш, который не знает даже основ погромирования, но телепортировать спрайт уже научился. Как много там непонятных элементов? Буду комментировать как бы от его лица.

>Inherits: RefCounted < Object
Блять, что это?
>Пример кода на гдскрипте и сишарпе
Сложно, надо читать каждую строчку и пытаться осознать.
>Methods (табличка)
Ну эээ это список всяких штук, которые оно умеет, наверное? Левая колонка вообще хз что значит, справа от штук буковки игнорируем.
>Enumerations:
Какой-то список состояний. Интересно, для чего?
>Method descriptions
О, КОНТЕНТ!
>int get_attribute_count ( ) const
эээ а нахуя тут int? И что значит const в конце?
Так, эту функцию я не понимаю, она делает какие-то штуки из высших сфер знаний... Эту тоже... И эту... (мотает)
>Returns the type of the current node. Compare with NodeType constants.
Так чот знакомое. Даёт тип ноды. Я слышал это слово прежде!
>Error open ( String file )
Ошибка открытия (строковый файл). Загадочно.
Пишут, что открывает хмл-файл. Почему ошибка?
прим. авт.: будучи нубом, я долго не вкуривал, что функции в доке описаны в сишном стиле, хотя с синтаксисом сей, жаб и прочих таких был знаком. Просто от доки годота ожидал, что функции будут описываться в гдскриптовом стиле.

И последнее. В доке и в официальных туторах информация подаётся супер сжато. Примеров очень мало и они очень базовые. Не поясняется способ мышления и почему тот или иной элемент используется. Если что-то повторяется, тебе не будут повторно разжёвывать, зачем оно нужно, вернись назад и прочитай там; но некоторые вещи повторяются из страницы в страницу, потому что они такой доковый аналог бойлерплейта. Нубу приходится учиться выдавливать из одной строчки максимум информации, одновременно с тем, чтобы находить эти золотые строчки среди неактуальных и бойлерплейтных.
Для примера. Найди в доке описание оператора += . Много ли этой супер важной штуке уделено текста?
И да, я всё ещё считаю, что годотская дока - лучшая из всех, что я когда-либо видел. Но это всё ещё сухой технический текст, написанный по принципу sapienti sat.
Аноним 11/02/24 Вск 20:42:20 #236 №934534 
>>934519
Не. Ты смотришь в справку по апи классов. Справка по апи содержит именно его. Справка по апи каждого класса не должна начинаться с курса информатики, типов данных, объяснения инхеритед, и опреатора += и тем более способ мышления.
Потому что апи представляет собой кубики конструктора.
При этом способ мышления вполее описывается в водной части документации. Полистай содержание. Там и введение в гдскрипт, и туториалы, и способ мышления, бест практис, многое описано.
Наоборот, ящитаю что в апи классов слишком много примеров. Они заставляют пролистывать их.
Аноним 11/02/24 Вск 21:19:22 #237 №934548 
>>934519
Так я и не опровергал лол, я лишь написал что для того чтоб читать документацию нужен скорее не навык а банальное желание. Ты сейчас буквально написал все тоже самое что и я, только более развернуто)
Аноним 11/02/24 Вск 22:39:08 #238 №934574 
Есть 3д модель с анимацией. Как из нее сделать элемент интерфейса, иконку? Вьюпорт какой-нибудь, или что? А то рисовать пиздец как не хочется.
Аноним 12/02/24 Пнд 01:30:02 #239 №934675 
>>934483
> Чем отличается
Метод range(a, b, c) имеет три параметра, второй и третий необязательные. Таким образом приведенные тобой варианты кода аналогичны. Цикл for генерирует range с одним параметром из поданного ему на вход целого числа (а ты ему целое число на вход подаёшь, int get_child_count().

Сила ренжа проявляется, когда ты используешь два-три параметра:
> range(3, 7) # Выдаёт массив целых от 3 до 6
> range(10, -10, -2) # Выдаёт массив от 10 до -9 с шагом -2
Аноним 12/02/24 Пнд 01:32:07 #240 №934677 
>>934517
> а чего бы на исходнике не удалить в граф редакторе?
Например, исходник может делать изъёбистый художник которому впадлу и нахуй, а спрайтщитов может быть сотня и все периодически обновляются.
Аноним 12/02/24 Пнд 01:38:24 #241 №934682 
>>934519
> открыл классреференс
> считает это всей докой, а не одно лишь из её частей
Имаджинировали, с кем в одном треде сидим?
> Вот у меня прямо сейчас открыта страница в доке https://docs.godotengine.org/en/stable/classes/class_xmlparser.html
> Представим, что её увидел вкатыш
Вкатыш, который с наскока пытается в хмл вкотиться? Через геймдев? Очень реалистичный сценарий (нет).
Аноним 12/02/24 Пнд 02:56:56 #242 №934688 
>>934548
>не навык а банальное желание
Нет, именно навык. Потому что:
1. Найти нужную страницу с нужной строчкой - для этого надо уметь ориентироваться в этой доке.
2. Вычленить из сухих описаний ответ на свой вопрос.
3. Объединить несколько разрозненных частей информации, каждый из которых по отдельности не отвечает на заданный вопрос, в единый ответ.

А, и самое главное:
0. Суметь сформулировать сам вопрос, ответ на который искать в доке.

Желания может быть сколько угодно, но умение работать с докой - это именно умение. У меня во времена вката (года три назад) был вагон желания, но я открывал доку, читал, нихуя не понимал и шёл в тредик спрашивать анона. Анон давал ссылку на страницу и спрашивал: ЭТО ЧТО?
Аноним 12/02/24 Пнд 03:18:49 #243 №934690 
>>934451
https://docs.godotengine.org/en/stable/classes/class_string.html#class-string-method-format

var text = "{wow} диалог [color={green}] тут типо зелёный цвет [/color] а тут обычный"

var uncensored = "Ебать его в рот"
var censored = "Ну эт ваще"
var light_green = "#00FF00"
var dark_green = "#008000"

var light_text = text.format({"wow": uncensored, "green" : light_green})

print(light_text)
#Ебать его в рот диалог [color=#00FF00] тут типо зелёный цвет [/color] а тут обычный

var dark_text = text.format({"wow": censored, "green" : dark_green})

print(dark_text)
#Ну эт ваще диалог [color=#008000] тут типо зелёный цвет [/color] а тут обычный

Ну или ты можешь завелосипедить свой аналог при помощи String.replace или String.replacen, если тебя напрягает присутствие фигурных скобок в строке внутри жсона. Или использовать String.json_escape | String.json_unescape.

Вообще, использовать String.format в таких случаях предпочтительнее всего, потому что при переводе на разные языки может оказаться, что в другом языке другой порядок слов, и порезанная строка никак не адаптируется под него. А так прямо в переводимой строке можно прописывать все "переменные".
Аноним 12/02/24 Пнд 04:38:10 #244 №934697 
>>934451
>>930629 →

This
Аноним 12/02/24 Пнд 10:49:32 #245 №934732 
>>934677
Опиши реальный сценарий.
Ну ок не с исходником, а со спрайтшитом до импорта в годот.
Фон однотонный? Imagemagick. Фон типа пейзаж? Вроде нейронки какие то были.
Аноним 12/02/24 Пнд 13:30:18 #246 №934786 
Всем привет.
Что стоит иметь ввиду при вкате в годот?
Я рассматриваю его как альтернативу возможному своему текущему инструментарию (я - изврат из IF-треда, пишущий на твайне (связка js-html-css-sugarcube 2 с основным упором на жс), пилящий пейсочницу/рпг), пока что безыгорный.
Вообще, есть какое-то подобие роудмапа?
Как какать куда смотреть в первую очередь?
Аноним 12/02/24 Пнд 13:31:31 #247 №934787 
image.png
Гугл приехал
Аноним 12/02/24 Пнд 13:35:46 #248 №934789 
>>934786
>на твайне
>пилящий пейсочницу/рпг
Твайн же по визуальным новеллам, не? Если так, то у нас хватает плагинов для ВНок.

>Вообще, есть какое-то подобие роудмапа?
Мой путь был таков. Проходил официальный 2д гайд, делал насколько учебных проектов, потом поглядывая разные туториалы на ютубе начинал делать свои идеи.
Аноним 12/02/24 Пнд 13:50:37 #249 №934797 
>>934789
Твайн необязательно по вн, но для них он хорошо подходит.
Но он точно не подходит для того, чтобы писать игру песочницу/рпг, в которой можно грабить корованы. А я именно на это нацелился.
К слову, я пописываю уже полгода в неторопливом темпе. Из последнего - влетел в один досадный баг и выкинул нахуй весь жс с целью переписать его с начала с учётом того, что узнал, лучше и с менее отбитыми решениями.
Аноним 12/02/24 Пнд 14:40:48 #250 №934828 
image.png
Расшифруйте

это код для RigidBody2D игрока, чтобы когда он влетал в край экрана то появлялся с противоположной стороны

То что _integrate_forces юзается чтобы просчет process_physics(delta) не пидорасило я понял
Но что делает аргумент в скобках? по дефолту там "state", но автор книги написал "physics_state" потому что "state" уже используется выше
Вроде это добавляемое состояние для Игрока, но как оно работает непонятно
и что еще за physics_state.transform? что за origin и его ".x"
Аноним 12/02/24 Пнд 14:43:22 #251 №934829 
>>934787
Ну это бомба.
Аноним 12/02/24 Пнд 14:47:10 #252 №934833 
image.png
>>934828
из этого даже с переводчиком мало что понятно
Аноним 12/02/24 Пнд 14:47:36 #253 №934835 
>>934828
Physics state это внутреннее состояние физ движка, нк пытайся понять, это тебе не понадобится в билжайшие несколько лет.
Трансформы описаны в доках, сам трансформ это общее преобразование (позиция, поворот, масштаб), origin это только позиция, x это одна из 3д координат x.y.z
Аноним 12/02/24 Пнд 15:06:11 #254 №934844 
>>934675
Спасибо
Аноним 12/02/24 Пнд 15:06:22 #255 №934845 
>>934835
Вроде разобрался, спасибо
Аноним 12/02/24 Пнд 15:13:14 #256 №934850 
Как сделать чтобы новый скрипт создавался без ебаных комментариев, а все остальное типа _process _ready extend чтобы было?
Аноним 12/02/24 Пнд 15:36:22 #257 №934859 
>>934850
Темплейт выбери/зделой.
Аноним 12/02/24 Пнд 15:36:24 #258 №934860 
>>934850
В папке пользователя в ос есть папка script templates, там делаешь какие хочешь шаблоны
https://docs.godotengine.org/en/stable/tutorials/scripting/creating_script_templates.html
Аноним 12/02/24 Пнд 15:39:18 #259 №934861 
>>934850
Где-то в скрытых папках годота лежат эти шаблоны скриптов, можно поправить. Да и вообще можно свои шаблоны на разные случаи написать.
Аноним 12/02/24 Пнд 16:17:29 #260 №934875 
Screenshot48.png
Проблема, не меняется текст в richtextlabel:

На пике снизу приходит сигнал с менеджера сцен, 30 строчка просто не работает, никаких ошибок ничего нет, просто не работает, при этом в отладчик print мне спокойно эти +++ выводит (31 строчка), то есть сигнал доходит без проблем.

Я добавил специально в сцену кнопку для теста, когда я нажимаю на кнопку, текст меняется на --- без проблем

под переменной просто ссылка на richtextlabel, я пробовал вставлять напрямую, все тоже самое. В чем проблема?
Аноним 12/02/24 Пнд 16:28:25 #261 №934876 
>>934875
У ббкода вроде другое поле, не text
Аноним 12/02/24 Пнд 16:31:22 #262 №934877 
>>934875
append_text() посмотри
Аноним 12/02/24 Пнд 16:36:24 #263 №934880 
Screenshot49.png
>>934877
С таким сразу ошибка

>>934876
на кнопку работает без проблем

Я сделал вот так на пике
В обоих случаях принт мне все выводит, но если через сигнал с менеджера сцен, то текст не меняется. Если через кнопку - меняется. То есть когда сигнал идет с другой сцены - .text просто не работает. Это баг или фича?
Аноним 12/02/24 Пнд 16:39:15 #264 №934881 
>>934875
Хотя это наверное не при чем. Сложно сказать. По опыту могу посоветовать проверить, что ты не затираешь значение тут же другим, например в процесс постоянно не перезаписываешь или обработчиком кнопки (может у тебя постоянно создается эта строка заново ), второе проверь что сама ссылка указывает на тот же объект.
Попробуй вывести print(fio), print(fio.name), print(fio.text)
Аноним 12/02/24 Пнд 16:52:22 #265 №934890 
>>933575
> SharedBuffers
У меня с 4-кой love hate
Придется ОПЯТЬ уже в пятый раз попробовать.
Аноним 12/02/24 Пнд 16:59:48 #266 №934891 
>>934880
Так а сигнал ты вызываешь? Просто зеленая стрелочка означает что кнопку ты подключал через интерфейс редактора, а у второго такой нет, значит ты где-то должен сделать connect, и emit.
Проверь в таком случае количество аргументов. Емнип если у тебя обработчик handler(), а ты испускаешь сигнал с параметрами, то этот не вызовется потогму что не совпадает кол-во аргументов.
Аноним 12/02/24 Пнд 17:04:33 #267 №934894 
Screenshot51.png
Screenshot52.png
>>934877
>>934891

Это похоже какие то костыли в работе сигналов или я не знаю. Вообщем я еще потестил пик. С кнопки все работает как надо. Через сигнал работает только отладчик, .text и .hide не работают. При всем этом для сигнала и для кнопки счет x идет независимо, хотя по идеи должно идти вместе. То есть я нажму кнопку, станет 11, потом через сигнал - опять 11 выводит, 2 раза кнопку - 1111, а потом сигнал - 111. Короче залупа какая то я хуй знает или я чего то не понимаю в работе сигналов и так и должно быть.

выше кода ничего нет и ниже тоже, я все закомментил
на втором пике как вызывается сигнал, функция активируется просто нажатием на кнопку на другой сцене
Аноним 12/02/24 Пнд 17:27:55 #268 №934901 
>>934894
>То есть я нажму кнопку, станет 11, потом через сигнал - опять 11 выводит
Это скорей говорит о том что ты твой объект принимающий сигнал в какой то момент задублировал. В каком файле/классе находится _test()? Проверь где ты создаешь объект этого класса. Выведи при отладке и print(self.name)
Аноним 12/02/24 Пнд 17:35:41 #269 №934906 
23ce941ec0503407e75dab2dd9914cba.png
>>934894
Я даже так предположу.
Ты добавил на сцену объект (пациента или что то такое). Подключил ему в редакторе сигнал от кнопки. Не подключал скриптом его ко второму сигналу. Он принимает только сигналы от кнопки.
Потом ты в скрипте где-то спавнишь такой же объект. Ты не подключал его к кнопке. Но ты в скрипте подписываешь его коннектом на програмный сигнал. Он принимает только програмные сигналы, но не кнопку.
Они могут находиться в одном месте экрана, и ты даже не знаешь что они накладываются друг на друга.
Аноним 12/02/24 Пнд 17:43:46 #270 №934909 
>>934901
>print(self.name)
Благодаря этому нашел проблему, сейчас все заработало, спасибо!

>>934906
Да всё проще, я изначально на сцену добавил вторую сцену и все подключил. Потом я эту вторую сцену решил переместить в третий сцену, а уже третью сцену добавить к начальной. При всем этом я забыл удалить вторую сцену из первой, а она ещё и скрыта была, поэтому я не замечал, что у меня по факту стало 2 вторых сцены. При всем этом скрипт к сценам был прикреплен один и тот же. Короче затуп на ровном месте.
Аноним 12/02/24 Пнд 17:53:43 #271 №934911 
3fb3ff2407c461919012cd0a64da7403.jpg
>>934909
Ладно, телепаты возвращаются в отпуск.
Аноним 12/02/24 Пнд 21:59:46 #272 №935015 
Контент за 2о23
https://www.youtube.com/watch?v=W1_zKxYEP6Q
Аноним 12/02/24 Пнд 22:26:34 #273 №935033 
>>935015
>Gunmetal Gothic
https://store.steampowered.com/app/2248150/Gunmetal_Gothic/
ля какая красота
Аноним 12/02/24 Пнд 23:50:36 #274 №935084 
>>935033
На первой соньке столько игор сделано, что за одну жизнь всех не переиграть. Если хочется первоплойковской эстетики, просто качаешь эмуль и кайфуешь до самой смерти. Создатели подобных гунметалов перекрывают доступ нам к настоящей олдовой годноте.

Такшта я как считал, так и считаю, делать надо современное, с туншейдером, если тебе не хочется 4К текстуры ставить.

П.С. Да ещё и мультиплеер, фунахуй.
Аноним 13/02/24 Втр 01:39:15 #275 №935093 
>>935084
>Если хочется первоплойковской эстетики, просто качаешь эмуль и кайфуешь до самой смерти
К первоплойковой эстетике в настоящих играх на первой плойке прилагается хуевое управление, кривой геймдизайн, ограничения железа и прочие чудесные вещи консольных игр той эпохи
Аноним 13/02/24 Втр 01:45:49 #276 №935096 
>>935093
Двачую этого. Плюс, имея выбор поддержать копрокорпорацию или поддержать братана-индюка, я всегда выберу второе.
Аноним 13/02/24 Втр 03:08:44 #277 №935106 
>>935033
>ля какая красота
Если бы был магазин для китайских консолек до десяти тысяч...
Аноним 13/02/24 Втр 07:26:47 #278 №935115 
А чем лучше делать город для 3д игры? Неужто в блендере?
Аноним 13/02/24 Втр 11:32:58 #279 №935159 
Crysis на Годо слабо сделать?
Аноним 13/02/24 Втр 11:58:13 #280 №935164 
image.png
>>935159
Аноним 13/02/24 Втр 12:02:43 #281 №935166 
>>935159
Если заплатишь такой же бюджет то легко
Аноним 13/02/24 Втр 13:09:21 #282 №935199 
image.png
>>935115
если ГРАФОН не нужен, то в blockbench
Аноним 13/02/24 Втр 13:11:29 #283 №935201 
>>935115
>Неужто
Почему неужто? Блендер давно уже дефакто индустрии. Если проще - блокбенч, да.
Аноним 13/02/24 Втр 13:21:56 #284 №935215 
>>935199
>>935201
Нужен.
Спасибо.
Аноним 13/02/24 Втр 13:23:52 #285 №935216 
>>935159
Ну, 3д графику 2010-х тут раза три кидали. Road to Vostok, еще пара каких то. И да, нужен будет игровой комп чтобы это работало.
Аноним 13/02/24 Втр 13:40:34 #286 №935229 
>>935159
так тут важен не годот,а 3д редактор
Аноним 13/02/24 Втр 13:45:23 #287 №935232 
>>935229
Тут важен и не 3д редактор, а 3д скилл. Все всегда в скилл упирается.
Аноним 13/02/24 Втр 14:20:06 #288 №935251 
>>935229
Не совсем, там же какой то физон был, типа взрывом можно снести стену лачуге, можно раздвигать кусты джунглей.
Аноним 13/02/24 Втр 21:08:32 #289 №935622 
Блять вторая игра из книжки это дохуя сложно для меня, какой то турбокод который хуй проссышь
Автор тупо говорит добавляй это в код, потом это добавляй он то то делает, но я нихуя не пойму логику по которой он вообще добавляется, типа блять а как мне быть когда я сам буду скрипты писать? Как мне продумать что в этом скрипте писать а что в том? А как лучше?

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

Пиздец короче
Аноним 13/02/24 Втр 21:44:47 #290 №935673 
image.png
непонял...
Аноним 13/02/24 Втр 21:50:03 #291 №935675 
>>935673
_ready() вызываются в порядке от вложенных нод в сторону корневой. Поэтому в ready можно присваивать переменным ссылки на объекты гуя
Запись
@onready var a = $smth
Соответствует
var a

func _ready():
a = $dmth
Аноним 13/02/24 Втр 21:51:55 #292 №935676 
>>935675
Соответственно просто
var a = $smth не сработает потому что дети еще не загрузились
Аноним 13/02/24 Втр 22:00:14 #293 №935678 
>>935675
У меня сейчас нахуй голова лопнет

Я немогу просто засунуть в переменную ссылку на ноду потому что?
Аноним 13/02/24 Втр 22:04:15 #294 №935679 
>>935678
Потому что то она еще не загрузилась, ее ready не был вызван, объект не до конца сформирован.
Аноним 13/02/24 Втр 22:10:53 #295 №935683 
>>935622
Старайся и осиливай. Потом пригодится.
Аноним 13/02/24 Втр 23:01:33 #296 №935697 
>>935679
А онреади ждет пока нода сформируется и только потом присваивает?
Аноним 13/02/24 Втр 23:08:35 #297 №935700 
>>935697
Да. И когда дети этой ноды тоже станут готовыми.
Аноним 14/02/24 Срд 11:46:34 #298 №935788 
>>935015
Выглядит как-то печально. Дальше первой ps1 не особо ушли
Аноним 14/02/24 Срд 11:58:44 #299 №935793 
>>935788
> Выглядит как первой ps1
> печально
??
Аноним 14/02/24 Срд 13:05:48 #300 №935835 
>>935788
Это и был их план, пчел.
Аноним 14/02/24 Срд 15:00:39 #301 №935913 
Какие жанры вы делаете?
Аноним 14/02/24 Срд 15:02:58 #302 №935914 
>>935913
Рогалик
Аноним 14/02/24 Срд 15:17:27 #303 №935927 
>>935913
Физические головоломки.
Аноним 14/02/24 Срд 15:40:06 #304 №935932 
>>935913
Sandbox/rpg.
Аноним 14/02/24 Срд 15:42:29 #305 №935933 
Сейчас делаю игры по книжке где 4 игры
Мне стоит пока на этом сосредоточится или надо паралельно какую нибудь свою игру пилить?
Просто я думаю если игру паралельно пилить то там гуглить надо будет дохуя а это время, а у меня после работки его маловато
Аноним 14/02/24 Срд 15:45:15 #306 №935934 
>>935933
Ты это делаешь имея стабильный заработок, следовательно это твоё хобби, так что делай как тебе интереснее.
Аноним 14/02/24 Срд 15:48:35 #307 №935935 
>>935934
Ну вообще хочеться перекатится побыстрее на заработок с игор, ибо у меня дноработка 20к и умирающий новутбук, а родня подгоняет пойти на работу пооплачиваемей в колхоз блять за 40к (скорее 30к)

Ты бывал на коровьей ферме? Я бывал, и я не хочу туда
Аноним 14/02/24 Срд 15:49:26 #308 №935936 
>>935935
Тогда делай то, что принесёт деньги, а это гиперказуалки
Аноним 14/02/24 Срд 16:00:16 #309 №935939 
>>935927
На jolt?
Аноним 14/02/24 Срд 16:04:10 #310 №935941 
>>935936
Например?
Аноним 14/02/24 Срд 16:05:36 #311 №935942 
>>935935
>Ты бывал на коровьей ферме?
Я бывал, прикольный говняк кругом.

>заработок с игор
Будем честны, шансы не слишком большие. Как сказал анон выше - тебе в гиперказуалки, кликеры, веселые фермы, 3-в-ряд, и все такое. И лучше всего сразу под мобилки. А с гугл-плеем и выводом оттуда денег - сам понимаешь, санкции. Мне пришлось в соседней стране банк открывать чтобы все заработало.

Либо, если не под мобилки, то возможно какие-нибудь яндекс-игры или вк-игры. Тут я не шарю.
Аноним 14/02/24 Срд 16:05:49 #312 №935943 
>>935939
Нет, зачем? Я пока с 3-ки не перехожу.
Аноним 14/02/24 Срд 16:21:45 #313 №935961 
>>935942
Ну в яндекс игоры и мечу

Правда я хз через сколько времени смогу нормально пилить игры а не сосать хуй с туториалами
Аноним 14/02/24 Срд 16:23:37 #314 №935962 
>>935961
Ебашь гиперказуалки. По многим из них есть туториалы. Берешь готовые ассеты и хуяк-хуяк и выложил. Со временем еще свои шаблоны наработаешь.
Аноним 14/02/24 Срд 16:25:52 #315 №935966 
>>935962
Ну там же вроде модерация ебет в рот, и калл не пропускают
Аноним 14/02/24 Срд 21:10:14 #316 №936124 
>>935935
эпоха игр типа флэппи берд осталась в истории,так считай что делаешь для души
Аноним 14/02/24 Срд 21:25:26 #317 №936129 
>>936124
Да нифига, регулярно очередная ноубрейн кликалка взлетает.
Аноним 14/02/24 Срд 21:28:01 #318 №936131 
>>936129
например,с оплатой или рекламой
Аноним 14/02/24 Срд 21:29:06 #319 №936132 
>>935942
Тоесть с гугол плея чтобы вывести надо счет за бугром открывать ехать? Мда блять
Наверно прийдется в отечественный рустор сувать...
Аноним 14/02/24 Срд 21:59:26 #320 №936141 
>>936132
Добро пожаловать в новую с 2022 реальность. Тебе в гугл-плее еще 25 баксов оплатить надо будет за девелоперский аккаунт. С российской картой это, увы, невозможно.
Аноним 15/02/24 Чтв 00:33:21 #321 №936245 
>>935966
Наоборот. Только его и пропускают. С чем-то более сложным, чем три в ряд, заебёшься проходить модерацию, там всегда найдут, к чему прицепиться.

Удваиваю >>935962 . Ебашь по туторам, это самый рабочий вариант для ЯИ.
Аноним 15/02/24 Чтв 01:31:58 #322 №936282 
>ThreadLoadStatus load_threaded_get_status ( String path, Array progress=[] )
>...
>An array variable can optionally be passed via progress, and will return a one-element array containing the percentage of completion of the threaded loading.
Сукааа в чью светлую голову пришла вообще эта идея? Нахуя? Почему нельзя было сделать как-то так:
>Array load_threaded_get_status ( String path, bool report_progress=false )
Чтобы функция возвращала две чиселки вместо одной - первая это статус, вторая прогресс.

Ёбаные сишники. Как же бесит эта их манера вместо int foo(int bar) делать void foo(int★ bar). Возвраты вам для чего Ритчи и Страуструпом даны?
Аноним 15/02/24 Чтв 03:48:56 #323 №936305 
Снимок.PNG
годот 4.2, хочу выложить игру на яндекс калыч, но выдает эту ошибку. В итче знаю можно просто галочку поставить и все заработает, но тут так сделать нельзя, как можно пофиксить?
Игра браузерная
Аноним 15/02/24 Чтв 04:14:15 #324 №936306 
>>936305
Смотри сюда -> >>933575
Аноним 15/02/24 Чтв 05:22:59 #325 №936307 
>>935933
Либо пили свое, либо улучшай игры из книги, так ты гораздо быстрее познаешь все нюансы. Простое копирование - не твой путь.
Если соберешься делать под мобилку и ведроид, то помни, что есть не только гугло-стор но и всякие дополнительные площадки типа:
apkmirror.com
appbrain.com
taptap.io
developer.taptap.io
open.qoo-app.com
Там зачастую нет такой анальщины как в гугле с предрелизной проверкой.
Мимо пилю под игру и хз как найти 20 тестеровщиков для гугло-стора.

>>936141
> еще 25 баксов оплатить
С беларуского райфайзена все оплатилось отлично, так что проблема решаема дешевым путем.
Аноним 15/02/24 Чтв 05:32:53 #326 №936308 
>>936264
Аноним 15/02/24 Чтв 05:33:28 #327 №936309 
>>936264
што тама? у меня нету вк
Аноним 15/02/24 Чтв 05:54:25 #328 №936310 
>>935913
Хочу сделать шутер, но получится ли у меня, хз.
Аноним 15/02/24 Чтв 07:03:11 #329 №936314 
>>936245
А как вообще модерация проходит? Типа загрузил игру и какой то модер должен ее поиграть пару часов и потом как то на почту напишет что "хуйню сделал, переделывай давай"?
Аноним 15/02/24 Чтв 12:54:04 #330 №936436 
Напомню что типизированный гдскрипт работает на 30-50% быстрее. Типизируйтесь.
Аноним 15/02/24 Чтв 13:00:34 #331 №936439 
>>936436
Пишу исключительно на шарпе
Аноним 15/02/24 Чтв 13:05:42 #332 №936443 
>>936439
Очень важная информация нет
Аноним 15/02/24 Чтв 13:12:36 #333 №936445 
>>936443
Он ещё быстрее типизированного гдскрипта
Аноним 15/02/24 Чтв 13:24:17 #334 №936451 
>>936439
Пишу исключительно на с++.
Аноним 15/02/24 Чтв 13:50:46 #335 №936469 
Делойте игры.
Аноним 15/02/24 Чтв 13:51:16 #336 №936471 
Пишу исключительно на бумаге.
Аноним 15/02/24 Чтв 13:51:59 #337 №936473 
>>936469
Делоем.
Аноним OP 15/02/24 Чтв 15:56:00 #338 №936553 
1708001758835.png
>>936436
Пост ушёл в шапку!
Аноним 15/02/24 Чтв 17:42:46 #339 №936598 
>>936553
Найс. Добавь еще про sharedbuffer в 4.3, а то часто спрашивают. Если шапку вообще кто-то читает.
Аноним 15/02/24 Чтв 19:08:28 #340 №936647 
>>936436
Все подряд типизировать или есть какие-то особенно важные моменты?
Аноним 15/02/24 Чтв 19:38:21 #341 №936655 
Как прервать анимацию вызванную из _physics_process?
Вот у меня персонаж, у него играет анимация idle, тут к нему подходит другой персонаж которому надо уебать и проиграть с этим анимацию attack. Анимация, конечно, проигрывается, за доли секунды, поэтому создаётся впечатление что постоянно играется idle.
Вот и как прервать idle на время проигрывания attack?
Загуглив нашёл только один тред на Редите где чел вышел из положения вместо _physics_process использовав _ready, но это не мой случай, ибо c _ready ничего не будет играть вообще.
Аноним 15/02/24 Чтв 19:51:28 #342 №936660 
>>936647
Можешь все подряд, если не лень. Если лень - самый интенсивные места/циклы.
Аноним 15/02/24 Чтв 21:05:00 #343 №936678 
>>936655
Контекста маловато. Это ты с AnimatedSprite2D бодаешься или с AnimationTree? Скинул бы хоть гифку/видос как это выглядит
Аноним 15/02/24 Чтв 22:29:18 #344 №936717 
FirstLessonProject.png
>>936678
Вот так как-то
Аноним 15/02/24 Чтв 23:08:33 #345 №936737 
>>936598
Шапку никто не читает. Я месяц проводил эксперимент, добавив в шапку кое-что в самом начале. Никто не прокомментировал в треде.
Аноним 15/02/24 Чтв 23:10:34 #346 №936738 
>>936647
> Все подряд типизировать
>>936660
> Можешь все подряд

Это не сложно, добавить двоеточие к знаку равенства в большинстве случаев не вызовет ругани компилятора. В редких случаях нужно будет указать тип вручную.
Аноним 16/02/24 Птн 00:38:14 #347 №936752 
>>936314
Ты только что крейзигеймс, лол
Нет, у них там воооот такенный свод правил, и модер должен убедиться, что в игре они нигде не нарушаются ни на буковку.

>>936647
Я всё подряд типизирую, мне не сложно.
Вообще, нетипизированные данные - это клёвая фича, но нужна она буквально в двух случаях.
1. Когда делаешь универсальную функцию, принимающую на вход какие-то данные. Функция их как-то интерпретирует, приводит к типу и выдаёт однозначный результат. Например, func play_sound(sound), где sound может быть ресурсом наследником AudioStream или именем файла.
2. Словари. Хотя в четвёрке стало гораздо удобнее использовать кастомные классы в большинстве случаев, когда в тройке я бы заюзал словарь. По сути сейчас словари нужны только для хранения больших гибких структур, типа сохраняемых данных.
Аноним 16/02/24 Птн 02:31:09 #348 №936766 
>>936752
>Ты только что крейзигеймс, лол
Поясни. Я как раз туда собирался свою поделку отправлять, даже вкладка открытая висит.
Аноним 16/02/24 Птн 03:30:45 #349 №936767 
image.png
image.png
Аноны, я может перегрелся уже, но что-то не понимаю.
Если скрипт принадлежит данной сцене и я в нем ищу ноду, то как может быть нулл?
Аноним 16/02/24 Птн 03:40:06 #350 №936768 
>>936767
Я не знаю. Поставь брейкпоинты и посмотри что в рантайме находится. Можешь еще во вкладке remote в дереве нод посмотреть во время запуска.
Аноним 16/02/24 Птн 04:42:58 #351 №936770 
>>936767
А если get_node() используешь, что выдаёт? Может ты по пьяни "C", "o" или "e" не в той раскладке написал?
Аноним 16/02/24 Птн 04:55:49 #352 №936772 
>>936768
>remote в дереве нод посмотреть во время запуска.
Спасибо антош.
Там искомая Нода2Д не появляется, странно.
Аноним 16/02/24 Птн 05:12:50 #353 №936774 
image.png
>>936717
Ну, тут конечно ситуация тяжкая, раз уж ты в процессе каждую анимацию проигрываешь. Можешь либо переписать всё под стейт-машину, но это почти весь код перелопатить придётся, либо добавить проверку текущей анимации и ее прогресса в строчку с is_on_floor(). Привести к виду чего-то типа пикрила. Конечно, работать будет только при условии, что у тебя анимация "attack" не поставлена на луп.
Аноним 16/02/24 Птн 05:47:40 #354 №936776 
1708051623356.jpg
>>936436
Протипировался, быстрее работать не стало
Аноним 16/02/24 Птн 06:13:20 #355 №936779 
>>936772
Удаление папки .godot помогло. Немного заебало такое.
Аноним 16/02/24 Птн 10:26:42 #356 №936809 
>>935913
стелс
Аноним 16/02/24 Птн 10:39:21 #357 №936813 
>>936752
А че там за правила?
Можно например кровавый клон дум первого залить? Или там совсем на малышей все расчитано?
Аноним 16/02/24 Птн 10:57:03 #358 №936817 
>>936774
>ситуация тяжкая
А как можно сделать лучше?
>стейт-машину
Это что такое?

Попробовал твоё условие, всё равно не работает, зацикливание не стоит.
Аноним 16/02/24 Птн 13:02:39 #359 №936826 
>>936817
Стей машина это типа механизм изменения состояний
Final state machine

У тебя типа будет список состояний (стоит, сосет хуй, идет) и каждое состояние будет задавать агимации или характеристики другим нодам

А текущее состояние будет указано в определенной переменной, тоесть одновременно можно только одно состояние
Аноним 16/02/24 Птн 13:09:25 #360 №936832 
>>936813
>А че там за правила?
Да блять, ну что ты как маленький?
https://yandex.ru/dev/games/doc/ru/concepts/criteria
С таким подходом ты модерацию не пройдёшь.

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

>Можно например кровавый клон дум первого залить? Или там совсем на малышей все расчитано?
Можно-то оно можно, сисема возрастного рейтинга там есть. Вот только игроков постарше нет. Там не то чтобы рассчитано под детей, но преимущественно именно они и обитают на платформе.

>>936766
На крейзи, если твоя игра им "не подходит", они просто отказывают без указания причин. Причины указывают только если "подходит", но какие-то правила нарушает.
Какие критерии "подходимости"? А пошёл ты на хуй, вот какие.
Аноним 16/02/24 Птн 13:30:27 #361 №936836 
>>936832
>крейзи
Ты меня замотивировал туда отправиться. Сейчас открою вкладку, которая уже недели 2 висит, и заполню эти унылые формы. Отпишусь возьмут ли.
Аноним 16/02/24 Птн 13:48:29 #362 №936838 
>>936832
Мда, поднимаем отечественный гейдев

А если этот самый, вконтакте плей какой то, где атомик херт, че там по модерации и аудитории?
Аноним 16/02/24 Птн 13:54:56 #363 №936839 
>>936832
По сути сторы хотят чтобы:
твоя игра не вредила их бизнесу (не подставляла под порнографию, политику итд)
в частности им не нужна хорошая игра как игра, но тот же ЯИ требует хотя бы набивать контентом. Им же надо чтобы игрок зависал на платформе и ему было интересно, чтобы скармлимать ему рекламу.
То есть им не нужна игра на 5 минут, им надо игра на полчаса хотя бы.
И они не хотят технических косяков. Это пункты про картинку пола, отключение звука на альт табе, отключение долгого клика на айфонах, вот это все.
Так что принцип довольно простой.
Им не нужна хорошая игра как хорошая игра. Им нужна качественно сделанная, наполненная контентом на какое-то продолжительное время, пусть и примитивная казуальная игра.
Аноним 16/02/24 Птн 13:59:53 #364 №936840 
>>936832
Короче говоря, нужно быть нормисом, чтобы сделать нормисную игру и нормисы-модеры её заапрувят. В общем, не для двачеров сервис, мда, штош.
Аноним 16/02/24 Птн 14:52:37 #365 №936861 
>>933698
твою залупу тоже нужно подождать иначе ждать cum будет только залупа:
await zalupa(a)
await zalupa(b)
await zalupa(c)
Аноним 16/02/24 Птн 15:16:07 #366 №936870 
>>934451
ебаш свой собственный RichTextEffect и делай там что хочешь. можешь там хранить мапку с цветами и юзать их по ключу.

extends RichTextEffect¶
var bbcode = "mycolor"
var color_map = {
title = "#ff0000",
text = "#00ff00",
dialog = "#0000ff"
}

func _process_custom_fx(char_fx):
var c = char_fx.env.get("color", "text")
var out_color = color_map.get(c, "#000000")
char_fx.color = out_color

Юзать:
[mycolor color=title]Title[/mycolor]
Аноним 16/02/24 Птн 15:22:16 #367 №936872 
>>936870
P.S. Вроде еще нужно tool и class_name на скрипт. Смотри доку по текст эффектах. можно сделать эффектов на каждый чих для каждого цвета
Аноним 16/02/24 Птн 15:45:36 #368 №936876 
Как у годо дела,если надо сервак прикрутить?
Аноним 16/02/24 Птн 15:56:17 #369 №936882 
>>936876
https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_dedicated_servers.html

Все ок.
Аноним 16/02/24 Птн 15:57:48 #370 №936883 
>>936876
Отлично, есть healess игровой сервер (который может запускать ту же игру, только без графона - физон, игровую логику), его поднимали во всяких облачных хостингах, есть RPC (дистанционный вызов функций) в 4-ке это аттрибут @rpc, в 3-ке надо было вызывать rpc("имя функции"). Пользовался в 1 игре и 2х утилитах (коннект мобильного клиента и пк).
Ну если что попроще там есть http запросы и вебсокеты, если с самописным серваком соединяться.
Аноним 16/02/24 Птн 16:44:17 #371 №936893 
>>936836
>>936832
Крч с крейзигеймс сразу же обломался, потому что в sharedbuffer оно как и яндекс не умеет. Даже до модерации не дошел.
Аноним 16/02/24 Птн 16:55:20 #372 №936896 
>>936893
> sharedbuffer
Несколько тредов назад постили аддон, который как-то решает эту проблему, я сразу не схоронил, а теперь ссылку найти не могу. А может он оказался нерабочий и его удалили из ассетлиба.
Аноним 16/02/24 Птн 16:57:01 #373 №936898 
>>936896
Да у меня все равно игра мультитредовая, если ей шаред буффер вырубить то она работать перестанет. Так что крейзигеймс в пролете, не получат они мою драгоценную 10/10 готи игру.
Аноним 16/02/24 Птн 17:02:29 #374 №936899 
>>936898
Хаха! Так им и надо, ретроградам! Это ж надо ж, не могут две строчки в конфиг сервера прописать!
Аноним 16/02/24 Птн 17:11:27 #375 №936901 
>>936898
> Godot 4.3 will FINALLY fix web builds, no SharedArrayBuffers required!
https://forum.godotengine.org/t/godot-4-3-will-finally-fix-web-builds-no-sharedarraybuffers-required/38885

?
Аноним 16/02/24 Птн 17:13:40 #376 №936904 
>>936896
НАШЁЛ!!!
https://godotengine.org/asset-library/asset/1818
Аноним 16/02/24 Птн 17:17:19 #377 №936905 
>>936901
>This allows you to force the exported game to run on a single thread
У меня мультитредовая игра. Я в коде, сам, треды использую. Чтобы треды работали в вебе им нужен SharedArrayBuffer, если я его выключу (когда дадут возможность), то у игры жопа код отвалится.

Но не критично на самом деле. Игра свое уже показала, когда-то давно я ее под итч делал, сейчас просто хотел дополнительно раскидать.
Аноним 16/02/24 Птн 17:26:21 #378 №936907 
>>936905
Обьясни нубику че за треды и нахуй нужны?
Аноним 16/02/24 Птн 18:13:38 #379 №936919 
>>936907
Ну вот ты открыл несколько тредов в отдельных вкладках и читаешь один, а в сосежних мигает значок, что новые посты появились, ты переключаешься в соседнюю вкладку и читаешь посты там, и пока ты читаешь в одной вкладке ты не можешь читать другие, но при появлении новых постов они опять мигают и ты опять переключаешься в другую вкладку.

Вот буквально, литерально, точно так же действуют треды в кодинге. Только читателем в этом случае является процессор пеки.

В одном треде крутится основная игра, а в других тредах подгружаются соседние локации, и когда подгрузились, мигают процессору семафором "эй, я сделял" и проц хватает данные и предоставляет основному треду.
Аноним 16/02/24 Птн 19:49:23 #380 №936950 
image.png
>>936774
>>936817

А вот теперь работает. Не понимаю в чём разница.
Аноним 16/02/24 Птн 19:51:27 #381 №936951 
Сколько места занимает готовая простая игра?
Аноним 16/02/24 Птн 19:52:48 #382 №936954 
>>936951
100 литров
Аноним 16/02/24 Птн 19:53:35 #383 №936955 
>>936954
Остроумно
Аноним 16/02/24 Птн 21:53:12 #384 №936983 
>>936951
Мои на 30-60мб.
Аноним 16/02/24 Птн 22:04:42 #385 №936992 
image.png
Давайте всем трендом соберемся и запилим НАШИМОНЫ для яндекса или вк с аццким донатом. Мне 65% выручки за идею, остальное между собой поделите
Аноним 16/02/24 Птн 22:13:21 #386 №936996 
image.png
image.png
Делойте игры.
Аноним 16/02/24 Птн 22:28:00 #387 №937005 
>>936996
Итс революшн,Джонни!
Аноним 16/02/24 Птн 22:56:54 #388 №937017 
>>936905
>когда-то давно я ее под итч делал, сейчас просто хотел дополнительно раскидать.
Не повторяй моих ошибок. Игра под итч и игра под ЯИ - это две очень разные игры.
>Я в коде, сам, треды использую
А поделись, если не секрет: для чего? Просто мне вот до сих пор не встречалось ситуаций, когда бы это было действительно нужно. Единственный раз понадобилось для загрузки файлов, но для этого у годота есть готовый объект, который сам внутри себя мультитредит как надо. А операции с нодами в любом случае надо в основном потоке делать.
Аноним 16/02/24 Птн 23:19:16 #389 №937019 
>>937017
Для оптимизации тугого участка кода, там много массивов с кучей информации об истории ходов и оно хорошо параллелилось. Сейчас я уже понял как сделать однопоточно и еще быстрее, но лезть в старый код, в старый проект - и лень и стремно.

Может однажды слоупоки вроде ЯИ и крейзигеймс смогут в SharedArrayBuffer, тогда и им выложу.
Аноним 16/02/24 Птн 23:35:02 #390 №937024 
>>936992
Шутки шутками, но ящитаю покемоны-стайл или тамагочи-стайл - всегда актуально. Тот же "мой говорящий том" и его клоны до сих пор в топе гуглплея.
Аноним 17/02/24 Суб 02:12:46 #391 №937037 
Годаны, чего я не понимаю?
@tool скрипт. Делаю add_child(node). В дереве сцены, ессно, она не появилась, но визуально видна.
Таких нод у меня много, целая генерация. Я в редакторе их нагенерировал, проверил, что всё ок, и теперь хочу, чтобы они отобразились в дереве и сохранились в сцене, чтобы больше не генерировать. Применяю к ним node.set_owner(self). И нихуя не происходит.
Что я мог упустить?
Аноним 17/02/24 Суб 02:25:30 #392 №937038 
>>937037
Там вроде не self а что то про editor current scene, погугли
Аноним 17/02/24 Суб 08:33:20 #393 №937049 
Как делать звуковую составляющию игры, если вообще ничего не понимаешь в этом? Я про общую композицию, атмосферу, правила они же наверно есть? и прочее. Вообщем реквест годных материалов по прости господи саунд дизайну или как это называется, желательно на русском

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

Ну и какой подход лучше, делать звуки одновременно с другими задачами, или сделать все, а потом в конце плотно сесть за музыку и сделать сразу для все игры.
Аноним 17/02/24 Суб 10:29:58 #394 №937058 
>>936817
> >стейт-машину
> Это что такое?
Это такая вещь, с которой обязаны начинаться настоящие курсы геймдева.
(как мы выяснили пару тредов назад)
https://ru.wikipedia.org/wiki/Состояние_(шаблон_проектирования)
https://gameprogrammingpatterns.com/state.html
Аноним 17/02/24 Суб 10:32:28 #395 №937059 
1708155149158.jpg
>>936992
> всем трендом соберемся и запилим НАШИМОНЫ
Покеходы-наоборот с толщемонами.

Нихуя они не соберутся, проверено. Полна доска одиночек, не умеющих в командную работу.
Аноним 17/02/24 Суб 11:41:29 #396 №937066 
>>937024
Актуально-то актуально, но не значит, что хорошо, жанр так рано или поздно вымрет из-за эксплуатирования ровно тех же идей в каждой игре.

>>937059
Да и хуй с ними. Я - индюк-ебиночка тоже и мне норм.
Аноним 17/02/24 Суб 13:13:35 #397 №937081 
>>937066
>жанр так рано или поздно вымрет из-за эксплуатирования ровно тех же идей в каждой игре.
Это как утверждать что котики-собачки вымрут из-за того что живут в каждой второй квартире.
Аноним 17/02/24 Суб 13:25:22 #398 №937085 
>>937081
Кривая аналогия подобна котенку с дверцей.
Нет, это как сказать, что спиннеры и попыты уже не покупают, потому что их купили все желающие.
Аноним 17/02/24 Суб 15:40:32 #399 №937128 
>>937085
Спиннеры и попыты это мимолетный хайп, а котики вечное.
Аноним 17/02/24 Суб 17:58:20 #400 №937168 
>>937085
Ну так-то ты прав и их купили все желающие, потому их не покупают.

>>937081
Решил посоревноваться со мной в кривых аналогиях? Ну держись.
Нет, то что я сказал, это как утверждать, что динозавры вымерли потому что питались одним и тем же мясом и одними и теми же папоротниками.
Аноним 18/02/24 Вск 00:21:15 #401 №937301 
>>937038
Поковырялся в доках, пришёл к рабочему решению: EditorScript.new().get_scene()
аригато, семпай
В итоге всё равно отказался от этого решения, потому что тормоза вызывает генерация кучи нойзтекстур, а не это вот всё. Но на пути к этому пониманию твой совет очень помог.
Аноним 18/02/24 Вск 20:55:21 #402 №937510 
Игры сами себя не сделают.
Аноним 18/02/24 Вск 21:44:54 #403 №937524 
image.png
>>937510
Аноним 19/02/24 Пнд 00:11:55 #404 №937566 
Мнение?
https://github.com/godotengine/godot-proposals/issues/6122
Аноним 19/02/24 Пнд 00:36:06 #405 №937577 
>>937566
Отсутствует, потому что я не использую анимацию.
Аноним 19/02/24 Пнд 07:11:45 #406 №937600 
1111.png
Че за хуйня, как сделать нормальную тень? годот 4, в настройках проекта все менял
Аноним 19/02/24 Пнд 12:16:16 #407 №937650 
>>937600
на качество тени влияют настройки источника света. Непонятно какой источник у тебя
Аноним 19/02/24 Пнд 12:52:06 #408 №937664 
>>937600
В тройке в настройках проекта были опции для разрешения теней. Вот они на это влияли. В 4 хз.
Аноним 19/02/24 Пнд 13:02:03 #409 №937668 
1614771787453.png
1557261076483.png
1605333577026.png
1698333332000.png
>>937600
Попробую объяснить своими словами (это может быть не так, как реализовано реально в коде, но так, как воспринимается со стороны игродела)
Вся сцена помещается в Bounding Box, и на этот объем натягивается текстура для тени размером указанным в Project Settings directional shadow size.
Соответственно, проблему можно решить:
1) Увеличив размер текстуры тени (за счет видеопамяти)
2) Уменьшив дальность в Directional Light, тем самым уменьшив 3д объем, при сохранившемся разрешении текстуры тени.
Ну и играйся с остальными настройками, например blend splits сглаживает края.
А так да, тени в годоте всегда сложно настраивать. Дальше возможно придется погружаться в запечение (для неподвижных объектов).
Аноним 19/02/24 Пнд 13:03:10 #410 №937671 
>>937668
Порядок пик перепутал. пик2 - 2), пик3 - 1).
Аноним 19/02/24 Пнд 13:05:50 #411 №937672 
>>937668
Плюс, насколько я понимаю, настройка Splits сделана для того, чтобы можно было сделать и тени для больших объектов (типа стен), и небольших (типа мяча рядом с камерой игрока).
Аноним 19/02/24 Пнд 14:23:56 #412 №937694 
>>937668
Сохранил себе
Аноним 19/02/24 Пнд 14:42:02 #413 №937700 
>>937694
Там очень много подводных, все сразу не вспоминть, и такие моменты что тебе важнее, четкая тень или стабильная (которая не дрожит между кадрами), и что тебе важнее, тень на горизонтальном полу или вертикальных стенах, довольно сильно зависит от того большие или мелкие предметы.
многое описано в доках
https://docs.godotengine.org/en/stable/tutorials/3d/lights_and_shadows.html
а в мобилках это все выкидывается нафик и рисуется просто декаль кружока, такие дела
Аноним 19/02/24 Пнд 17:28:18 #414 №937741 
>>937668
> возможно придется погружаться в запечение (для неподвижных объектов)
А если в игре мечты предполагается динамическая смена дня и ночи? Запечение не покатит.
Аноним 19/02/24 Пнд 17:38:25 #415 №937746 
>>937700
>>937694
Так, годаны, погодите.
Обесните мне в чём я неправ: Ящитаю, в 2024 нет смысла ебаться с тенями/зеркалами. Задача движка сегодня - предоставить видеокарте с рейтрейсингом, где в сцене источники света и дальше она сама строит тени и отражения.
Соответственно, задача девелопа теней сводится к простому алгоритму:
1. Берём в руки си++ и пишем свой проприетарный модуль-адаптер к ртх видюхи (либо нанимаем скиллового челика)
2. Детектируем ртх у игрока.
3. Если ртх не найден, сообщаем игроку, что пусть довольствуется дефолтными говнотенями.
Всё.

А вы пытаетесь какие-то тени идеальные выводить. Смысла в этом ноль. Эпоха сменилась. Алё.
Аноним 19/02/24 Пнд 17:42:01 #416 №937747 
>>937741
Собственно на этом месте я пока и бросил делать дин. смену дня и ночи в опенворлде. Скила пока не хватает, изкоробочными решениями не обойтись.
Одна из проблем как раз упомянутые горизонтальные/вертикальные поверхности. Допустим я настроил параметры bias и прочее как мне нравится в сцене, а потом поменял угол солнца, и только тени снова пошли полосами, а значит эти параметры надо тоже менять динамически для объектов, может быть даже для каждого часа времени.
А еще, емнип в 3-ке, если просто крутить directional light, то шэдоумапа пересчитывается. Поэтому каждый кадр это делать тяжеловато становится для фпс. Возможно там надо делать что-то с интерполяцией, посчитав тень для двух углов солнца. Но вот на такое скила у меня не хватает.
Аноним 19/02/24 Пнд 17:53:52 #417 №937749 
>>937747
Не дрочи на графон. В игре главное геймплей. Что толку от твоих теней, если в игре скучно?
Аноним 19/02/24 Пнд 17:56:53 #418 №937750 
>>937749
Не угадал. Важен И геймплей, И графон, и много чего еще.
Аноним 19/02/24 Пнд 18:22:34 #419 №937755 
>>937746
>Ящитаю, в 2024
Лет через 10 это будет актуально. Прогресс, когда он зависит от железа, двигается довольно медленно.
Аноним 19/02/24 Пнд 18:42:36 #420 №937757 
>>937747
>>937700
>>937668
https://twitter.com/Paw_Rescuers/status/1757359069273141310

Меня вот эти интересуют. У них древний телефон и глес2, но при этом вполне себе графон на 60 фпс, динамичное освещение, смена дня и ночи, вся хуйня. Они обещали запостить как они этого добились, но так ничего и не запостили, только хайпанули. Пидоры.
Аноним 19/02/24 Пнд 18:53:10 #421 №937758 
>>937757
Магия мультитрединга.
Аноним 19/02/24 Пнд 18:58:41 #422 №937760 
>>937757
Тень попадает в кашу из травы - так что там никакая четкость не нужна. В отличии от скрина выше, где идеально ровная гладкая стена.
Аноним 19/02/24 Пнд 19:00:53 #423 №937761 
1611044308178.png
https://habr.com/ru/articles/794572/
Аноним 19/02/24 Пнд 19:06:42 #424 №937762 
>>937757
>древний телефон
8 ядерный флагман, хех. Чуть чуть быстрее моего Xiaomi того же года, а у меня все летает. Так что не очень показательно, не днищефон.
Аноним 19/02/24 Пнд 19:12:44 #425 №937764 
>>937762
У меня на телефоне в 2 раза мощнее динамичное освещение дает результаты в 2 раза хуже, как я ни пытался. Тоже на тройке.
Аноним 19/02/24 Пнд 19:16:23 #426 №937767 
>>937764
У меня видос мыльный в этом месте так что не могу сказать что там происходит.
Может дело в том что показан маленький кусочек мира? Ну то есть попробуй применить совет выше и просто ограничь directional light max range
God rays и дождь там просто 2д (брызги прямо на дереве спавнятся, не за ним), но с пересчетом проекции.
Аноним 19/02/24 Пнд 19:26:24 #427 №937773 
>>937761
что-то слишком заумно написано, многа букаф, матиматика какая-то, но картинки прикольные, промотал всю статью
Аноним 19/02/24 Пнд 19:43:45 #428 №937777 
>>937773
программисты-не-нужны, ты что ли?
Аноним 19/02/24 Пнд 21:18:50 #429 №937812 
16595197807300.png
Как в годот 4 шейдере получить степень затенения?
Аноним 19/02/24 Пнд 21:56:58 #430 №937823 
>>937812
Я тут порылся похоже такой возможности вообще нету
Аноним 19/02/24 Пнд 21:58:39 #431 №937825 
>>937812
>>937823
Маской.
Аноним 19/02/24 Пнд 21:59:41 #432 №937826 
>>937823
>>937812
Маской альфаканала. Как и в любом другом шейдере.
Аноним 19/02/24 Пнд 22:14:19 #433 №937833 
>>937825
>>937826
Можно пример для spatial?
Аноним 19/02/24 Пнд 22:23:29 #434 №937837 
>>937825
>>937826
Вот я хочу сделать резкое стилизованное затемнение шейдерной травы для plane. Т.е что бы спрайт травы не частично затемнялся от тени, а целиком создавая резкий переход. Насколько я понимаю мне надо получить в точке с травой на plane с шейдером количество тени, и покрасить этой тенью весь спрайт травы. Но я что то нихуя не пойму где тут получить это тенивое значение. Нашёл только какие то обсуждения годовой давности на забугорном форуме но там пишут, что без ковыряния в исходниках такой возможности нету. https://www.reddit.com/r/godot/comments/11ma6if/is_there_any_way_to_access_the_directional_shadow/
Аноним 19/02/24 Пнд 22:29:37 #435 №937842 
Как еще можно оптимизировать 3д омнилайты? Тени выключены, запечение не подходит, настройки проекта снижены, слои выставлены.
Аноним 19/02/24 Пнд 22:31:32 #436 №937843 
>>937842
Была мысль прикрепить к ним VisibilityEnabler, но подозреваю они и так скрываться должны когда находятся вне видимости.
Аноним 19/02/24 Пнд 23:19:03 #437 №937849 
1619398466717.jpg
>>937842
Какой рендер? Подозреваю мобильный? В любом случае, твоя цель - минимизировать кол-во пар свет-материал. То есть:
ограничить радиус света, чтобы свет светил на меньшее кол-во объектов, (соответственно возможно имеет смысл разбить большие объекты на мелкие тайлы, но тут не 100% уверен).
ограничить чтобы на один объект светило как можно меньше источников, в идеале только 1. В каких-то режимах рендера, каждый свет это отдельный проход, поэтому на мобилке вообще хардкод лимит 8.
Уменьшить кол-во материалов в объекте, а то бывает даже в лоуполи нагородят десятки материалов, когда достаточно одного-двух. По возможности не связываться с полупрозрачностью, особенно многослойной (стакан на фоне бутылок на фоне окна). Обычная прозрачность (есть/нет), вроде, норм, поэтому иногда заменяют тени или прозрачность на дизеринг (в геншине видел).
Если ты делаешь траву как выше, копай в сторону Multimesh Instance. Или вообще попробуй для начала готовый аддон https://github.com/HungryProton/scatter там есть готовый пример.
Аноним 19/02/24 Пнд 23:28:10 #438 №937850 
>>937837
>Насколько я понимаю мне надо получить в точке с травой на plane с шейдером количество тени, и покрасить этой тенью весь спрайт травы.
Думаю, это можно получить или рисуя в текстуру и проверяя результат, или пуская рейкасты, на проверку между листом и источником света, для конкретного листка. Изнутри шейдера не могу придумать, как это может работать хорошо (если только в вершинном это сначала как то определить)
Аноним 19/02/24 Пнд 23:43:53 #439 №937853 
>>937849
Хорошие советы, спасибо. Поделаю их.
Сейчас пытаюсь нагородить альтернативу с помощью HDR в тройке, оставив только 1 реальный омнилайт, остальные заменив объектами с эмиссией.
Аноним 20/02/24 Втр 00:42:13 #440 №937858 
>>937853
HDR вроде отжирает долю перформанса, и его нет в GLES2. Ну и с эмиссией там будет такой момент, что аура свечения у emission будет одинаковая и индивидуально настроить тут не придумали, см. >>875941 →
Аноним 20/02/24 Втр 00:48:43 #441 №937859 
1679937146173.png
>>937853
Еще из экстремальных приемов фары из гта5. То ли 3д спрайты, то ли как то с буфером глубины разбираться.
Аноним 20/02/24 Втр 01:07:00 #442 №937861 
image.png
image.png
>>937858
>HDR вроде отжирает долю перформанса
Да, сразу на треть упало, но по моим тестам это пока лучше чем омнилайты. Тут еще плюс в том, что глоу-объектов я могу навалить сколько угодно, и фпс будет почти одинаковый что при 1, что при 300 объектов. А каждый дополнительный омнилайт больно кусает за фпс. Ты прикинь какие красивые уровни можно запилить, имея 300 небольших глоу объектов? Да я ща Blackreach из скайрима!

>Если менять Power в emission, меняется цвет свечения, но радиус остается тем же.
Пикрилы - только energy поменял, с 16 до 2. Радиус уменьшился. Думаю у тебя была проблема в настройках WorldEnvironment -> Glow -> Levels. Я все 7 включил.
Аноним 20/02/24 Втр 01:16:48 #443 №937862 
>>937861
Видимо проглядел эту настройку. Ну в любом случае подозрительно, надо посмотреть как будет в динамике скакать между ними.
Аноним 20/02/24 Втр 01:20:46 #444 №937863 
>>937861
А не знает ли кто-нибудь способа скрыть меш, оставив глоу от нее?
Аноним 20/02/24 Втр 03:08:48 #445 №937872 
>>937761
>Однако, через время мы осознали, что взяли слишком жирный кусок и поняли, что нам стало тяжело и неинтересно. Мы увязли в этом проекте, и он стал напоминать вторую работу, просить очень много времени и приносить минимум веселья. Поэтому мы решили не продолжать. Вместо этого мы стали делать другую игру,
Лол. Сделали самую маленькую (пусть даже и сложную) часть, а как дошло до всей остальной игры - забили. Ай да разрабы.
Аноним 20/02/24 Втр 03:12:56 #446 №937873 
>>937872
Я до туда вообще не дочитал...
Впрочем, тут в разделе 99% так поступает.
Аноним 20/02/24 Втр 14:25:02 #447 №937922 
>>931045 (OP)
Подскажите как провода сделать, я могу же сделать кабеля ЛЭП и чтоб таскать их болванчиком по сианции в 3D?
Аноним 20/02/24 Втр 14:39:31 #448 №937923 
>>937922
В 2д есть лайн2д. В 3д видел аналогичные плагины.
Аноним 20/02/24 Втр 15:17:49 #449 №937927 
>>937923
Не могу найти эти плагины
Аноним 20/02/24 Втр 15:50:45 #450 №937929 
>>937927
Может это ноды?
Аноним 20/02/24 Втр 15:52:24 #451 №937930 
>>937927
https://github.com/RedefineGamedev/Line3D
https://github.com/ApocalypticPhosphorus/Godot-3D-Line-Renderer

Не знаю правда работают ли они в годот 4. А вот тут люди шейдерами делают: https://github.com/godotengine/godot-proposals/issues/6151
Аноним 20/02/24 Втр 15:58:48 #452 №937931 
>>937922
Сейчас подумал что можно сделать с помощью скелетон3д. Если надо по станции таскать, то вероятно тебе нужна еще и физика, а не просто графика. Чел тут похожее делает - https://www.youtube.com/watch?v=0AR7RqQ_QzU
Аноним 20/02/24 Втр 16:25:56 #453 №937934 
>>937930
>>937931
Спасибо
Аноним 20/02/24 Втр 16:50:19 #454 №937938 
Обнаружил что в ноды скрипты можно _встраивать_, без создания отдельного файла-скрипта. Как удобно для создания маленьких костылей.
Аноним 20/02/24 Втр 16:56:36 #455 №937941 
>>937938
звучит, как игрушка дьявола, лучше изначально не трогать
Аноним 20/02/24 Втр 17:04:05 #456 №937943 
>>937941
Ну я разок, от одного раза хуже не будет.
Аноним 20/02/24 Втр 17:09:06 #457 №937945 
>>937938
А еще можно унаследоваться от майнлупа и подсунуть этот скрипт майнлупу (дефереддом подсовывать). И будет у тебя майнлуп со своими дополнительными методами.
Только в четвёрке с допиленными до ума статиками это уже не нужно.
Аноним 20/02/24 Втр 17:19:04 #458 №937946 
Парни, я как всегда забрёл в пучину деталей, хотя даже движок ещё не скачал и меня волнует совершенно левый вопрос, но я жить не могу споукойно, пока не докопаюсь до сути. Короче, узнал тут про draw call'ы, и что типа если текстурки находятся на разных "слоях", типа на 3 слоях 2 текстуры: 1 2 1, то будет 3 дк, а не 2. Как это решается, если нужно расположить вот так вот слоями и с наложением?
Аноним 20/02/24 Втр 17:24:17 #459 №937947 
1708439056826.png
1708439056844.png
>>937946
Репорт
Аноним 20/02/24 Втр 17:36:14 #460 №937948 
>>937947
при чём тут движкосрач, даже в доке годота есть кусок на эту тему, но я не понял написанного, там типа предлагается размещать как-то последовательно текстуры, тогда можно будет рендерить как 1 1 2, но момент с наложением я не понял
Аноним 20/02/24 Втр 17:43:09 #461 №937950 
>>937947
А я тоже не понял почему репорт, обычный технический вопрос. С другой стороны, его вопрос я тоже не понял, лол.
Аноним 20/02/24 Втр 17:44:11 #462 №937951 
>>937950
вот https://docs.godotengine.org/en/3.5/tutorials/performance/batching.html#a-trick
Аноним 20/02/24 Втр 19:06:10 #463 №937961 
>>937938
На практике бывает - хочу скопировать кусок кода из прошлого проекта. Ну в общем копаться, листать в блокноте tscn которые бывают мегабайтные, с немного съехавшим форматированием - такое себе. Поиск по файлам тоже дольше. Один раз искал в какой папке положил - вот скрипты одной системы, (контроллер персонажа к примеру), вот другой, а нужных нет. Оказалось тоже в сцене был.
Аноним 20/02/24 Втр 19:28:26 #464 №937963 
>>937951
По описанию звучит так, что движок при батчинге занимается этим сам, и тебе ничего переставлять не нужно. Или ты про то, как это отключить? Есть проходы (shader next pass), есть Material Overlay.
Но они и нужны когда тебе надо сначала что-то нарисовать, а потом либо постобработать, либо поверх полупрозрачный эффект накинуть (типа силового поля). А в таких случаях это должно быть гарантировано после. Нет никакого смысла покрывать один материал другим непрозрачным - тогда первый вообще не был нужен.
Переупорядочивание относится только к непрозрачным объектам, скорее всего, а благодаря буферу глубины, неважно в каком порядке они рисуются.
Аноним 20/02/24 Втр 19:56:22 #465 №937966 
>>937963
да я в целом про оптимизацию, типа как это происходит и зачем об этом пишут, если это делается сорт оф на автомате
Аноним 20/02/24 Втр 20:04:09 #466 №937968 
>>937966
Чтобы на словах объяснить, как работает движок, и что именно включает эта опция.
Аноним 20/02/24 Втр 20:06:18 #467 №937969 
>>937968
Пон, бюлагодарю.
Аноним 20/02/24 Втр 22:57:14 #468 №938013 
Для сервака придется учить си шарп,типа 1 язык и для клиента и сервера?
Аноним 20/02/24 Втр 23:32:03 #469 №938021 
>>938013
любой серверный язык программирования, но вроде в годоте можно делать локалку, типа один игрок сервер, другие клиенты, в таком случае и гдскрипт будет работать наверно
Аноним 20/02/24 Втр 23:48:01 #470 №938023 
>>938013
Все на гдскрипте хуячится.
Аноним 21/02/24 Срд 03:39:07 #471 №938033 
Годаны, посоветуйте годной инфы по ИИ.
Игра - по типу Катана Зеро. Двумерная вид сбоку, у врагов есть огнестрел. Пытаюсь понять, какие алгоритмы существуют, чтобы в подобных играх выстраивать пути, но все материалы по 2д фокусируются на виде сверху.
Аноним 21/02/24 Срд 11:43:48 #472 №938068 
>>938033
>все материалы по 2д фокусируются на виде сверху

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

Беглый поиск конкретно для годо приводит, например, к такому видосу - чел рассказывает про инструменты в самом движке и как это работает (на инглише офк, кто тебе на русском чето объяснять будет)
https://www.youtube.com/watch?v=LKyGdiHzIk8
Аноним 21/02/24 Срд 12:28:42 #473 №938070 
Аноны, я новичок в годоте, можете подсказать? Есть state machine игрока, там список действий и анимации к ним. Допустим, я хочу, чтобы игрок мог бить во время прыжка, но первый кадр атаки вызывается в прыжке, а остальные уже при приземлении. Как это исправить? Сорян за тупой вопрос, просто не понимаю
Аноним 21/02/24 Срд 12:48:11 #474 №938073 
>>938070
Покажи код
Аноним 21/02/24 Срд 13:00:38 #475 №938074 
>>938068
> (на инглише офк, кто тебе на русском чето объяснять будет)
Яндекс браузер со встроенной нейроозвучкой видосов.
Аноним 21/02/24 Срд 13:06:07 #476 №938075 
>>938070
> Сорян за тупой вопрос, просто не понимаю
Вопрос не тупой и описан в статье о стейтмащинах (выше по треду).
Суть в том, что для движения и для стрельбы нужны две стейт-машины.
Нельзя мешать в кучу то, что должно быть одновременно.
Поэтому ты заводишь вторую стейтмашину для стрельбы, вырезаешь из первой всё, что связано со стрельбой и настраиваешь свою логику так, чтобы стейт-машина ходьбы управлялась WASD, а стейт-машина стрельбы управлялась ЛКМ.

Самое интересное начнётся с анимациями. Потому что в анимациях нужно как-то замиксовать несколько стейтов из разных стейт-машин. Как правило это решается через ограничения по скелету.
Аноним 21/02/24 Срд 13:15:09 #477 №938076 
>>938075
Окей, спасибо, теперь понял.
>Как правило это решается через ограничения по скелету.
А если скелета нет?
Аноним 21/02/24 Срд 13:31:10 #478 №938079 
>>938076
> А если скелета нет?
Тогда подразумевается, двадэ на спрайтщитах? Тогда нужно делать комбинированный узел персонажа из двух и более спрайтов, каждый из которых контролируется своей стейт-машиной.
Например, одна часть - туловище с ногами, контролируется ФСМ движения, вторая - руки и голова, контролируется ФСМ стрельбы.
Аноним 21/02/24 Срд 13:34:26 #479 №938080 
>>938079
Я не он, но у меня например 3д с простейшей не-скелетной анимацией, и пока я их проигрываю последовательно, "прыгнуть", "покрутиться". Сделано на AnimationPlayer, где я тупо меняю rotation_y и origin_y. Если бы мне нужно было их замиксовать, как бы тогда эта проблема решалась?
Аноним 21/02/24 Срд 14:02:35 #480 №938083 
>>938074
Зонд майора не нужен, этоь сервис отдельно выдрали как расширение
Аноним 21/02/24 Срд 14:10:48 #481 №938086 
>>938083
Для мозилы есть? У меня мозила - основной звездолёт. Приходится я.хоромог для переводов держать.
Аноним 21/02/24 Срд 15:10:36 #482 №938088 
>>938086
У меня работает фаерфокс + виолентманки + версия клаудфлары https://github.com/ilyhalight/voice-over-translation
Аноним 21/02/24 Срд 17:07:20 #483 №938093 
>>937943

a few hours later...

Анонсы, я встроил ноду без отдельного файла-скрипта, брат умер, комп стал сверхновой, где найти деньги на новый комп и пересадку сгоревшей кожи?
Аноним 21/02/24 Срд 17:57:23 #484 №938097 
>>938068
>на инглише офк, кто тебе на русском чето объяснять будет
Спасибо за заботу, братюнь, как-нибудь пойму.
В целом видос кое-что прояснил. По крайней мере, указал направление, куда копать.
Аноним 21/02/24 Срд 19:26:51 #485 №938119 
>>938088
Спасибо! Добра тебе и успехов! Братишка!
Аноним 21/02/24 Срд 19:29:29 #486 №938120 
1649746091486.png
1643018333703.png
1673222709567.png
>>938033
Вот тебе еще пища для ума
path finding in platform game
https://godotengine.org/asset-library/asset/968
https://github.com/smix8/Godot_3D_Navigation_Jump_Links

Я так понимаю идея в том что навигация - это граф, соответственно можно делать все то же самое что обычно. Возможно пометив (даже автоматически) точки где спрыгивать-запрыгивать.
Аноним 21/02/24 Срд 23:08:19 #487 №938176 
image.png
Вот вам тоже пища для ума.
Аноним 21/02/24 Срд 23:13:56 #488 №938178 
>>938176
А теперь тож самое, только чтоб все это дело ещё заранее перед тестами прогонялось один раз.
Аноним 21/02/24 Срд 23:15:19 #489 №938180 
>>938176
59мс на 10кк атомарных операций не такая уж и разница
Аноним 21/02/24 Срд 23:48:28 #490 №938185 
>>938178
Нет ты. Я это вообще с реддита принес.

Есть другое, более подробное: https://www.beep.blog/2024-02-14-gdscript-typing/
Аноним 22/02/24 Чтв 00:18:54 #491 №938188 
>>938120
>ссыль №1
О! А я ведь искал этот аддон и не нашёл. А оказывается, он просто для тройки был. Жаль. Ну хоть исходники почитаю.

Годаны, а я тут знаете что понял? В четвёрке же добавили тип Callable. Так вот, а ведь с ним гдскриптовые словари полностью повторяют луа-таблицы. Даже лучше, потому что таблица в луа это неловкий гибрид словаря и массива, а в гдскрипте массивы теперь ещё и типизировать можно, джва года ждал.
Так вооот. Теперь можно в словари запихивать не только сложные иерархические структуры, но и целые указатели на функции. И эти функции по этим указателям вызывать. Ну круто же!
Или вот такие штуки:
var arr: Array[Callable]
...
for f in arr:
f.call()
сразу напрашивается применение - сценарии для всяких комплексных процедур, которые так и хочется разбить на части и выполнять не то что в цикле, а по чуть-чуть в _процессе.
Это я к чему. Раньше я мечтал о человеческом луа в годоте (было только не дебагаемое). А получил даже лучше - ещё и возможность статической типизации.
Каеф.

Осталось блочные комментари добавить для полного счастья. Ну типа --[[ такого --]] или / такого /. Или, для соблюдения стиля, как-нибудь |# вот так #|
Аноним 22/02/24 Чтв 00:29:18 #492 №938190 
>>938188
>блочные комментари
Я """ использую.
Аноним 22/02/24 Чтв 16:47:18 #493 №938256 
>>938188
> Осталось блочные комментари добавить для полного счастья.
Выделяешь блок. Нажимаешь Ctl+K
Аноним 22/02/24 Чтв 16:59:05 #494 №938258 
>>938188
>сценарии для всяких комплексных процедур, которые так и хочется разбить на части и выполнять не то что в цикле, а по чуть-чуть в _процессе.
Звучит как корутины. В оф доках не нашел, но как понимаю их можно делать на yield
>for f in arr:
>[Callable]
Могут быть накладные расходы, надо тестить.
Аноним 22/02/24 Чтв 17:36:46 #495 №938265 
Вопрос по логике генерации персонажей.

Сейчас имею такую систему, массив:
y: [x1,x2]
Нахожу количество данных в массиве, а потом рандомлю в полученном диапазоне значение. Шанс x1 50%
Но вот я захотел, что после некоторого события шанс увеличился скажем до 75%. Как мне это грамотнее реализовать?

Пока придумал такую схему, я просто добавляю к массиву ещё x1 до вида y:[x1,x2,x1] да шанс 77% но смысл я думаю понятен
Аноним 22/02/24 Чтв 17:43:09 #496 №938268 
>>938265
Для такого точно есть и готовые решения и туториалы.
В целом это грамотнее делать словарем, т.е. { x1: 15, x2: 75 }
Аноним 22/02/24 Чтв 18:14:36 #497 №938275 
image.png
Понимает кто-нибудь как работает raw формат цветов в годоте? Вот тут я бы ожидал что цвет будет желтым, но на практике он белый. В документации ничего найти не получилось.
Аноним 22/02/24 Чтв 18:19:09 #498 №938278 
>>938275
Похоже на баг. RAW явно отражает 0 ... 255 в 0 ... 1,0.
Т.е. поменяй на 1, 1, 0, 1.
Либо это для поддержки HDR сделано, но в любом случае интерфейс неудачный.
Аноним 22/02/24 Чтв 18:19:16 #499 №938279 
>>938268
Для гскрипта я не нашел решений хотя особо и не искал, плюс хочется сделать +- самому, чтобы понять принцип работы и нормально встроить в уже готовый json с массивами.

Количество в словаре изначально неизвестно, поэтому вместо % я думаю лучше использовать коэффициент, условно 1
Допустим словарь {x1: 1, x2: 3}. Я беру и рассчитываю массив для генерации, используюя значения из словаря, получится [x1,x2,x2,x2] и рандомлю одно значение из массива. Вполне себе работает. Но если я захочу сделать значение 0,5 или 3,5 то как тогда?
Аноним 22/02/24 Чтв 18:25:05 #500 №938281 
>>938279
Видел такой вариант (сам им буду пользоваться) - складываешь все веса (1+2+2+2+0.5+3.5), делаешь рандом от этого (11), и в цикле проверяешь. roll < 1? roll < 1+2? roll < 1+2+2?
Аноним 22/02/24 Чтв 18:25:50 #501 №938282 
>>938279
Догадался до очевидного решения взять тогда коэффициент по стандарту не за 1, а за 100. Какие подводные кроме огромного конечного массива для генерации, насколько тяжело будет компу условно с 10000 элементами в массиве?
Аноним 22/02/24 Чтв 18:26:46 #502 №938283 
>>938278
Для HDR, да. Raw можно поднимать выше 1, это работает как запланировано, чем выше значение тем заметней HDR эффект. Я просто не могу понять как в raw-формате указать конкретный цвет при условии значений выше единички. Я могу конечно руками подобрать, на глаз, но это такое себе.
Аноним 22/02/24 Чтв 18:30:27 #503 №938285 
>>938283
Ну попробуй выставить нужный цвет мышкой (получится какой-то 0.96, 0, 0.77), а потом умножить на коэффициент, прямо в окошке инспектора напиши *100
Аноним 22/02/24 Чтв 18:30:39 #504 №938286 
>>938281
Что то не понял, как это работает
Аноним 22/02/24 Чтв 18:30:48 #505 №938287 
>>938256
Это другое. Блочными же можно закомментить даже часть строки.
К тому же 4.2 расставляет эти # не в самом начале строки, как это делала тройка, а после табов. И пробел не ставит. Некрасиво.
Аноним 22/02/24 Чтв 18:35:57 #506 №938289 
1628439847167.png
>>938286
Некогда особо расписывать. Ну у тебя рандом число может быть float 0..11.0 (сумма всех твоих весов). Значит оно указывает на какой-то диапазон. Диапазон считаешь от нуля. Если не принадлежит первому диапазону, то искать в следующих, если принадлежит, вернуть предмет. Цикл может накапливать сумму весов, не обязательно каждый раз всю пересчитывать, просто прибавлять вес текущего проверяемого предмета.
Аноним 22/02/24 Чтв 18:48:00 #507 №938291 
>>938289
Теперь понял, неплохой способ, спасибо
Аноним 23/02/24 Птн 02:38:47 #508 №938367 
Есть куча спрайтов. Все разного размера. От крохотных (например, 51х51) до довольно больших (что-нибудь типа 257х368). Хранить их отдельными картинками не комильфо, лучше одним атласом, говорят, это уменьшает количество дравколлов. Ок, собрал все в один файл, он получился даже не слишком гигантский.
Дальше надо придумать, как их размещать. Ну, очевидный тайлмап? Увы нет, тайлмапа хочет плитки одинакового размера, а это привести к одинаковому размеру нереально. Спрайтами используя регионы? Тогда придётся создать дохуя сцен под каждый предмет, чтобы каждый раз не настраивать регион и оффсет.
Я в замешательстве. Годаны, посоветуйте.
Аноним 23/02/24 Птн 04:09:12 #509 №938370 
>>938367
Я ее особо в этом шарю, но как вариант можно объединить спрайты только одного размера, и спокойно использовать тайлмап. Тоесть будет не один атлас как сейчас, а условно 10 или сколько у тебя там разных размеров.
Аноним 23/02/24 Птн 07:54:35 #510 №938376 
>>938367
> тайлмапа хочет плитки одинакового размера
Может использовать несколько плиток на один большой тайл?
Аноним 23/02/24 Птн 12:57:58 #511 №938421 
Петруха вышел из анабиоза!
https://www.youtube.com/watch?v=aq2Y6yrxfG4
Аноним 23/02/24 Птн 13:28:13 #512 №938426 
Аноны, направьте в нужное русло. Хочу сделать зелье хп, игрок их может подбирать/покупать. Зелья должны где-то храниться и запоминаться. Я нихуя не понимаю, подскажите статейку или гайд, по схожей теме мейби
Аноним 23/02/24 Птн 13:41:10 #513 №938433 
>>938426
А вот собственно, на канале из видоса постом выше, погляди старые видосы, он там и за подбираемые предметы поясняет в том числе. Делай скидку на трёшку, подхватывай суть и делай на четвёрке. А если ты на трёшке еще сидишь, так вообще легко будет.
Аноним 23/02/24 Птн 13:42:35 #514 №938434 
>>938433
Окей, чекну
Аноним 23/02/24 Птн 14:03:06 #515 №938442 
>>938426
> направьте в нужное русло
> Хочу сделать %предмет_нейм% игрок их может подбирать/покупать.
> должны где-то храниться и запоминаться
...и, поскольку ты думаешь о зельях, эти предметы должны применяться на игрока и возможно на других персонажей.

Так вот, направляю в нужное русло. Главный программный паттерн большинства игор - база данных. Это необязательно должна быть большая серьёзная СУБД больших дядь из серьёзного ентерпрайза, нет. Тебе достаточно организовать в памяти словарь с данными и удобные тебе функции создания, чтения, обновления, удаления данных в нём.

Когда у тебя будет действующая база данных в проекте (назовём её "Менеджер предметов", МП) у тебя большинство вопросов само отпадёт. Но допустим, не отпало, давай по шагам распишем события, происходящие с типичной банкой с зельем на локации.
1. Локация загрузилась в память и обратилась к МП, получив список предметов, которые у неё должны быть.
2. У локации есть первоначальный список предметов, с которыми она была изначально запроектирована. Локация сразу удаляет из него все предметы, помеченные как удалённые и удаляет (не даёт им появиться в принципе).
3. Локация проходит по списку из МП и расставляет предметы оттуда, не забывая сверяться с встроенным списком, чтобы не задваивать предметы.
4. Игрок идёт по локации и видит зелье. Зелье это интерактивный предмет, у которого есть действие "подобрать". Это действие выполняет две простейшие операции: создаёт (или обновляет если есть) запись в МП о наличии в инвентаре игрока зелья (если это зелье из списка первоначальных предметов, а не дропнуто игровой логикой ранее, то дополнительно в списке локации помечается как удалённое), и второе - удаляет себя с локации.
5. У зелья так же может быть действие "применить" которое минуя работу с МП сразу передаёт игроку свои параметры и самоуничтожается (с записью в локации, если оно первоначальное).
6. У игрока есть инвентарь. Инвентарь состоит из двух частей: визуальной и логической. Визуальная часть - управляет картинками, перетаскиваемыми по гриду или листбоксу. Логическая часть, как и у локации, взаимодействует с МП, чтобы создавать, читать, обновлять и удалять данные в МП, относящиеся к инвентарю игрока.
7. Запись в МП о зелье должна аналогично интерактивному предмету на локации обладать функцией "применить", при которой запись обновляется в минус-один или удаляется если достигает нуля. И при этом передаёт классу игрока некие параметры. +10 ХП например.

Воот как-то так.
Аноним 23/02/24 Птн 15:26:01 #516 №938456 
>>938442
Огромное спасибо, анон.
Аноним 23/02/24 Птн 15:53:00 #517 №938463 
>>938442
Сделаешь мне игру? Хочу чтобы эльфы набегали.
Аноним 23/02/24 Птн 16:28:58 #518 №938473 
>>938463
Зарплату 20к в месяц плати.
Аноним OP 23/02/24 Птн 16:56:01 #519 №938480 
Ой, блять, а у нас тут бамплимит! А что вы молчите? Предлагайте контент для переката!
Аноним 23/02/24 Птн 17:02:50 #520 №938483 
image.png
image.png
>>938480
Аноним 23/02/24 Птн 17:04:42 #521 №938484 
>>938483
>2
Бицуха больше чем у половины ИТТ
Аноним OP 23/02/24 Птн 17:05:49 #522 №938485 
1708697149284.webp
?
Аноним 23/02/24 Птн 17:18:18 #523 №938488 
image.png
>>938480
Аноним 23/02/24 Птн 17:20:55 #524 №938490 
>>938488
Это законно ваще?
ПЕРЕКАТ Аноним OP 23/02/24 Птн 17:27:25 #525 №938494 
1708698444429.gif
>>938493 (OP)
>>938493 (OP)
>>938493 (OP)
Аноним 18/03/24 Пнд 15:36:53 #526 №942126 
print('Привет')
comments powered by Disqus

Отзывы и предложения