Главная Юзердоски Каталог Трекер NSFW Настройки

Gamedev

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 526 96 114
Godot #45 Аноним # OP 30/01/24 Втр 21:17:50 931045 1
1706638667500.png 590Кб, 1152x648
1152x648
Аноним 30/01/24 Втр 21:30:54 931052 2
Вобщем, снес нахуй юнити. Посидел повтыкал пару деньков в годо, почитал документацию, посмотрел видосики, и сделал вывод что юнити хоть и в большинстве случаев получше будет, но годо движок с душой, а это важнее. Думал сначала с шарпом перекатываться ибо впадлу было на гдс пересаживаться, но хуй к носу прикинул и решил все же пересесть. Прощай рабство, привет годо!
>>930620 →
Аноним # OP 30/01/24 Втр 21:33:20 931053 3
Добавил книгу из прошлого треда в шапку. Раздел годноты.
Аноним # OP 30/01/24 Втр 21:35:53 931056 4
>>931052
Добро пожаловать!
А ГДСкрипт настолько охуенен, что я жду, когда найдется среди годанов скилловый гик, который на LLVM запилит GDLang чтобы прям консольные утилиты и оконные приложения на нём пилить. Сам я, увы, не потяну.
Аноним 30/01/24 Втр 21:55:35 931062 5
image.png 125Кб, 889x838
889x838
>>931043 →
Поправил, заработало, спасибо. Под вечер мозг плохо соображает - не заметил.
Но я все равно не понимаю, зачем это нужно. Только для того, чтобы не возиться с editable children?
>>931044 →
Обычно так и делаю
Аноним 30/01/24 Втр 21:58:53 931064 6
>>931062
> чтобы не возиться с editable children?
В том числе да.
Подумай перед сном, какие возможности тебе дали бы выполняющиеся в редакторе тулскрипты?
Аноним 30/01/24 Втр 22:01:33 931065 7
1706641292938.png 116Кб, 1744x937
1744x937
Наступает новый век...
Аноним 30/01/24 Втр 22:41:53 931081 8
Как вы делаете инвентари в игре? Я блять какие-то ресурсы хуячу, пытаюсь связать сцену предмета с ресурсом для инвентаря. Вроде всё работает, но на протяжении всего времени меня не покидает чувство, что делаю какую-то хуйню.
Аноним 30/01/24 Втр 23:23:11 931090 9
>>931081
> Как вы делаете инвентари в игре?
Ебашишь массив и в него вхуячиваешь предметы. Что тут сложного-то?
> Я блять какие-то ресурсы хуячу
Ресурсы (как класс) нужны для удобства управления ресурсами (как файлами).
> пытаюсь связать сцену предмета с ресурсом для инвентаря
Тебе не сцена предмета нужна, тебе в первую очередь класс предмета нужен. А сцена, это вообще-то говоря, ресурс, это файл, в который сериализирован инстанс определенного класса. Пока ты не поймёшь эту фундаментальную разницу, ты не продвинешься вперед.
> меня не покидает чувство, что делаю какую-то хуйню
Подтверждаю. Ты делаешь хуйню. Даже не глядя в твой код. Чисто по тексту видно непонимание смысла.

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

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

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

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

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

Олсо, пытался посмотреть "В ожидании Годо" в постановке театра Вахтангова. Не осилил больше часа. Возможно, бродвейская постановка с Иэном Маккеленом и Патриком Стюартом была бы поинтереснее, но её в интернетах нету целиком (она хранится в Нью-Йоркской библиотеке им. Линкольна, там можно посмотреть совершенно бесплатно, лол)
Аноним 31/01/24 Срд 20:14:02 931249 43
>>931247
> Возможно, бродвейская постановка
> была бы поинтереснее
Я лично сильно сомневаюсь. Это артхаус, а он редко бывает интересен.
Аноним 31/01/24 Срд 20:32:08 931252 44
В годоте тоже надо ждать компиляции после каждого пука как в юнити?
Аноним 31/01/24 Срд 20:45:07 931255 45
Аноним 31/01/24 Срд 21:04:39 931258 46
Какой язык сейчас лучше взять для наибольший производительности?
Аноним 31/01/24 Срд 21:04:41 931259 47
>>931158
Нет. именно что красная. Желтые алерты фиксаю, там все норм.
У меня в основном бзается именно смена сцены, для новых страниц\окон. Но вопрос возник только по главной странице и переходу к одной из игровых страниц, странно. Больше похоже на какой-то баг годота ибо принцип везде один и тот же юзаю.
Аноним 31/01/24 Срд 21:56:21 931266 48
Аноним 31/01/24 Срд 22:28:43 931274 49
>>931258
> Какой язык сейчас лучше взять для наибольший производительности?
Кресты.
> сейчас
Всегда.
Аноним 01/02/24 Чтв 00:05:21 931292 50
Следит кто за внутренней кухней годота? Чего там с Юркой случилось, и какие функции он выполнял? Проджект менеджер?
Аноним 01/02/24 Чтв 08:08:42 931324 51
>>931292
Никто не знает, но легко можно понять почему. У нас другая, не соевая культура общения, мы и лично кого то чморим если он не прав, и шуточку неуместную можем ввернуть.
Аноним 01/02/24 Чтв 08:22:27 931327 52
>>931258
Плюсы - всегда дадут высшую производительность, но если выбирать между гдскриптом и шарпом, то шарп быстрее
Аноним 01/02/24 Чтв 08:51:20 931333 53
>>931292
Юан который? который Жуан, да? ну вот он в основном курирует + ведёт немного обособленный от общего движка движ, как например новый HDDAGI (псевдо0рейтрейсинг на стероидах) -- это он делает. В основном по моему все нововведения это либо он делает, либо с его веления. Чел ровный, кстати.
Аноним 01/02/24 Чтв 09:02:09 931337 54
Бля. Я походу приехал. Такая ситуация. Система выборов в ещё зачаточном состоянии. Выводится от 2 до 6 кнопок. Нужно сделать, что при нажатии на каждую кнопку делается что-то своё.
Ну и как бы ничего сложного. Вот только таких выборов за игру будит сколько я захочу, а это всяко больше 1 или даже 10. Возникает проблема. Как мне хранить что будет делать кнопка? Кнопки-то дубликатом создаются и в них только id меняется, чтоб знать какую именно нажали, а нужна ещё и куча разных скриптов так-как они должны делать много разного.
Меня с начала осенила мега тупая идея хранить то, что делают кнопки в ресурсах и по необходимости просто менять ресурсы, вот только из ресурса я как буду к сцене обращаться? Нельзя же. Ну и как тогда? Кучу кнопок сделать? У меня забьётся сцена кнопками очень быстро.
По сути хотелось бы просто кнопке скрипт поменять когда захочу и всё. Как это сделать хз.
Аноним 01/02/24 Чтв 09:03:48 931338 55
>>931337
>будит
Бля пиздец сорян
Аноним 01/02/24 Чтв 09:06:15 931339 56
>>931337
сделай контроллер кнопок в одном скрипте и обращайся к нему через кнопки и их сигналы, на каждую кнопку своя функция которую она зовёт через сигнал, чё сложного? Если ты не в курсах что такое сигналы то бегом учить, ЭТО КЛАССИКА, ЭТО ЗНАТЬ НАДО.
Аноним 01/02/24 Чтв 09:16:56 931341 57
>>931337
Все кнопки ставят соответствующие флаги в переменную соответствующую выбору, хранящуюся в словаре выборов, типа
Dictionary<int, short> где инт - айдишник выбора, а шорт - его результат. Или даже Dictionary<Choice, short> где Choice - енум выбора.
Аноним 01/02/24 Чтв 09:22:41 931343 58
>>931341
перемудр дикий. сверху же писали-- сигналы и уникальные функции на каждую. Да и какого типа переменная шорт чтоб результат присходил?
Аноним 01/02/24 Чтв 09:25:14 931344 59
>>931343
А я и написал сразу тип: short, потому что бул слишком мала, а инт слишком велик.
> перемудр дикий.
Я из расчёта что выборов может быть слишком дохуя, а тут одна функция на всё про всё.
Аноним 01/02/24 Чтв 09:51:35 931351 60
Аноним 01/02/24 Чтв 10:01:10 931353 61
>>931339
Ну вроде норм звучит. Только код будет в спагетину превращаться, если я правильно понимаю. Ну там спагетина простая, однослойная, так что, как бы, как вариант.
>>931341
Звучит круто. Только где я буду short"ы хранить и как запускать? Вот тут-то я и обосрался. Где про шорты почитать, если ты говоришь что short это тип? Пять секунд в гугле не дали ответ.
Аноним 01/02/24 Чтв 10:07:27 931355 62
>>931353
> где
В словаре. Эти переменные не для запуска, а для хранения выборов, которые сделал игрок. Запускать ты будешь одну и ту же функцию, которой ты будешь передавать (обходным путём) какой это выбор и выбранный ответ, после чего ты их сохраняешь в словарь, и при необходимости к нему обращаешься.
> Где про шорты почитать
В годоте его зовут uint8_t
https://docs.godotengine.org/en/stable/contributing/development/core_and_modules/core_types.html
Аноним 01/02/24 Чтв 10:29:17 931356 63
>>931351
ничего не курю, многие Жуана юриком называют. А Юра настоящий походу прослыл трансфобом и его кикнули за это. Как обычно, не поделили повестку. Очень жаль, и движок хороший и Юра большой вклад сделал.
Аноним 01/02/24 Чтв 11:00:46 931360 64
>>931337
var a = null
if игрок нажал на кнопку 1:
a = 1
if игрок нажал на кнопку 2:
a = 2
____
if a = 1:
такой-то сюжетный поворот
if a = 2:
другой сюжетный поворот
Аноним 01/02/24 Чтв 11:01:43 931361 65
>>931259
Тащи сюда код. Так не понять, что там у тебя
Аноним 01/02/24 Чтв 13:18:56 931382 66
>>931339
Ой, а кто это у нас тут порвался на весь тред?)
Аноним 01/02/24 Чтв 13:31:57 931385 67
image.png 433Кб, 720x484
720x484
>>931382
вы, кажется, не тому отвечаете.
Аноним 01/02/24 Чтв 13:32:39 931386 68
>>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 931388 69
>>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 931392 70
c1.mp4 9042Кб, 1280x720, 00:01:00
1280x720
Делойте игры
Аноним 01/02/24 Чтв 14:10:08 931397 71
Аноним 01/02/24 Чтв 14:11:21 931398 72
Аноним 01/02/24 Чтв 14:12:33 931399 73
не-заставляй-ме[...].mp4 2591Кб, 1280x720, 00:00:08
1280x720
Аноним 01/02/24 Чтв 14:13:07 931400 74
>>931392
Как сделать красивый переход между плаваньем и ходьбой? Я как-то делал, у меня лютое дрожание было при переключении стейта на границе области воды с областью земли. Как годаны решают такую задачу?
Аноним 01/02/24 Чтв 14:39:18 931402 75
>>931400
Я просто хожу по воде.
Аноним 01/02/24 Чтв 14:46:37 931404 76
Анончики, подскажите:
Если я планиркю сделать кастомизацию персонажа (пол, текстуры, экипировка) то мне надо просто намоделить это на один скелет и отображать при надобности?
Аноним 01/02/24 Чтв 14:47:26 931405 77
>>931400
У тебя скорее всего в другом состоянии определялось что тут же пора переключаться обратно, и так по кругу. Решается таймером отложенным, когда нужно пробыть хотя бы 0.1 сек в состоянии, или например разнесением в пространстве триггеров, когда между ними есть зазор, а не просто граница сред. Ну могут быть и другие варианты может ты просто pivot point криво поставил и у тебя в другом состоянии поза сдвинута.
Аноним 01/02/24 Чтв 14:57:35 931406 78
Аноним 02/02/24 Птн 00:00:00 931467 79
guessthenumber.gif 6849Кб, 720x476
720x476
Guess Number Mi[...].png 706Кб, 4766x3080
4766x3080
Вчера чуть не высрал простыню о том, как я, тупой даун, не могу додуматься как делать игры. Не могу понять как использовать все эти функции и переменные, какие-то блять сигналы, ноды, _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 931471 80
>>931467
>Пока строчил всё это, в голове сложилась картина
Классика, у меня такое регулярно. Происходит затык, не могу что-то понять, найти или придумать. Пишу длиннопост. В процессе написания приходит понимание. А ещё чаще - оно приходит через пару минут после того, как пост отправлю.
Я это для себя объясняю так, что сам процесс написания поста стимулирует мозг к осознанию мыслей, так как они переводятся из абстрактной в текстовую форму и упорядочиваются.

А ещё отвлечься полезно тоже и сходить куда-нибудь, да хотя бы посрать. Все самые лучшие идеи приходят на толчке.
Аноним 02/02/24 Птн 02:53:37 931503 81
image.png 44Кб, 501x387
501x387
image.png 18Кб, 429x205
429x205
image.png 48Кб, 1226x530
1226x530
image.png 27Кб, 753x411
753x411
>>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 931526 82
>>931467
>>931471
> Пока строчил
Нормальный, общеупотребимый паттерн программирования - объяснить свою проблему во всех подробностях резиновой уточке
Аноним # OP 02/02/24 Птн 15:53:25 931584 83
1706878406110.png 408Кб, 561x561
561x561
Когда уже китайцы сделают нам резиновую Годеточку для ванны? Рассказывать ей о своих проблемах со скриптами.
Аноним 02/02/24 Птн 16:14:58 931589 84
>>931584
Зочем? Для этого как раз и существует тред, разве нет?
Галочку то сними
Аноним 02/02/24 Птн 16:50:37 931598 85
image.png 306Кб, 598x713
598x713
>>931404
Вдогонку: интересует еще вопрос оптимизации. В этой модельке 1900 полигонов, если теоретически добавить экип то будет около 5. Ну для одного персонажа допустим нормально. А если их 30? А если 64? Опыта в геймдеве нет поэтому для меня это еще неочевидно.
Аноним 02/02/24 Птн 17:33:15 931606 86
>>931598
Накопипасти ее в редакторе годота, выключи всинк и лимит фпс, и посмотри когда фпс падать начнет.

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

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

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

Алсо, я просто закидываю переменную инвентарь (массив со словарями) в такую же переменную инвентарь в файле сохранения. И все норм работает.
Аноним 03/02/24 Суб 04:27:26 931965 97
Нужна помощь эксперта. match по скорости так же работает как и if else или быстрее?
Аноним 03/02/24 Суб 09:56:10 931998 98
1706943370714.png 572Кб, 811x720
811x720
>>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 932006 99
image.png 36Кб, 1046x190
1046x190
>>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 932074 100
Нужна помощь эксперта. RigidBody3D по скорости так же работает как и KinematicBody3D?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Вот эта >>933190 проблема с яндексом, который не умеет в SharedBuffer, теперь решилась за счет однотредового веб-экспорта. Радуйтесь, четверочники.
Аноним 08/02/24 Чтв 16:51:49 933576 199
>>933560
> Теперь покажи свои.
У меня нет игор. Я диван.
>>933569
Я просто тупой, не обращайте внимания.
Аноним 08/02/24 Чтв 17:36:24 933581 200
image.png 110Кб, 304x426
304x426
>>933444
>>книга не для вкатыша в геймдев
Ну пардон, не то слово выбрал. Не для вкатыша в программирование, а для новичка в годо. Так понятнее?
>>This book is for anyone
Че ты с контекста вырвал, пес. Написано что для каждого кто хочет научиться использовать игровой движок. Нехуй подменой понятий заниматься.
>>New users
Что в твоем понимании новые пользователи? Те кто нубас в движке? Или те кто нубас в скилле кнопкодава? Ты вообще контекст умеешь воспринимать? Или для тебя прямой перевод всегда несет тру смысл строк?
>Знаешь разницу между recommended и necessary?
Разница лишь в том что ты, тупорылый, настойчиво пытаешься игнорировать эту строку. На всех играх пишут рекомендуемые минимальные системные требования. Если ты игру попытаешься запустить на ведре параметры которого еще ниже минимальных, она, как неожиданно, запустится, но будет выдавать максимум 2 фпс. И в ком же вина что столько фпс выдает? В разработчиках? Или в том что ты игру запустил на ведре? Рекомендация хоть и не обязательная форма действия, но это явный маркер того что книга содержит материал который будет не понятен вкатуну.
>>933541
Никто и не гонит. Если человек приходит с безосновательными предъявами, то пусть уходит нахуй. Этож литерали пикрил мем предъявы.
Аноним 09/02/24 Птн 03:08:59 933698 201
64.png 2Кб, 60x64
60x64
как работает ебучий 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 933702 202
>>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 933770 203
Хотел загрузить несколько реплик персонажа в один проигрыватель аудио и вызывать их ASP.play("hallo") на свое усмотрение, а оказывается годо так не умеет и нужно под каждую реплику создавать отдельный узел. Ну или возиться с массивами. В юнити такая же ебасосина?
Аноним 09/02/24 Птн 11:59:29 933774 204
>>933698
там где стоит await выполнение функции останавливается, пока не кончится await
Аноним 09/02/24 Птн 12:07:05 933777 205
IMG202402091208[...].jpg 81Кб, 955x776
955x776
>>933702
Аж всхрюкнул чет

мимо
Аноним 09/02/24 Птн 13:01:32 933801 206
>>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 933802 207
>>933770
Сам озвучиваешь?
Аноним 09/02/24 Птн 13:34:03 933810 208
>>933802
Не, ии. Охерел от правдоподобности англ голоса на elevenlabs.io
>>933801
Спс, да, через какие-то костыли конечно можно наверное. Но простого решения чет нет. Пишут в годо 2 была библиотека семплов, но ее выпилили.
Аноним 09/02/24 Птн 13:38:15 933812 209
Аноним 09/02/24 Птн 18:14:54 933896 210
1707491695404.jpg 17Кб, 326x242
326x242
Аноним 09/02/24 Птн 19:42:42 933916 211
image.png 84Кб, 350x214
350x214
Ля, чому я о такой крутой штуке только сейчас узнал, чому мне никто о ней на рассказал раньше, яж теперь куда меньше времени буду тратить на рисование и редактирование связей внутри движка. Бля, я ща радуюсь как маленький, такую годноту купить, за такие копейки, прям подарок.
Аноним 09/02/24 Птн 20:01:15 933931 212
>>933916
Вспоминали о ней и раньше, но редко. Годноты вообще много, всю и не упомнишь.
Аноним 09/02/24 Птн 21:17:29 933973 213
image.png 19Кб, 653x218
653x218
Нихуя не пойму
а зачем этот hurt.emit ? кому он эмитит? ареа 2д может сразу у вошедшего в зону предмета вызывать функции, а функция смерти напиример уже в самом плеере

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

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

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

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

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

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

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

?
Аноним 11/02/24 Вск 18:22:01 934498 231
Аноним 11/02/24 Вск 18:56:46 934506 232
>>934483
А лучше всё-таки
for child in grid_container.get_children()
Аноним 11/02/24 Вск 19:06:36 934512 233
Есть какой-нибудь инструмент, который удаляет фон спрайт-шита?
Аноним 11/02/24 Вск 19:25:14 934517 234
>>934512
Нуу, а чего бы на исходнике не удалить в граф редакторе? А так, шейдером цвет можно поменять
Аноним 11/02/24 Вск 19:32:29 934519 235
>>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 934534 236
>>934519
Не. Ты смотришь в справку по апи классов. Справка по апи содержит именно его. Справка по апи каждого класса не должна начинаться с курса информатики, типов данных, объяснения инхеритед, и опреатора += и тем более способ мышления.
Потому что апи представляет собой кубики конструктора.
При этом способ мышления вполее описывается в водной части документации. Полистай содержание. Там и введение в гдскрипт, и туториалы, и способ мышления, бест практис, многое описано.
Наоборот, ящитаю что в апи классов слишком много примеров. Они заставляют пролистывать их.
Аноним 11/02/24 Вск 21:19:22 934548 237
>>934519
Так я и не опровергал лол, я лишь написал что для того чтоб читать документацию нужен скорее не навык а банальное желание. Ты сейчас буквально написал все тоже самое что и я, только более развернуто)
Аноним 11/02/24 Вск 22:39:08 934574 238
Есть 3д модель с анимацией. Как из нее сделать элемент интерфейса, иконку? Вьюпорт какой-нибудь, или что? А то рисовать пиздец как не хочется.
Аноним 12/02/24 Пнд 01:30:02 934675 239
>>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 934677 240
>>934517
> а чего бы на исходнике не удалить в граф редакторе?
Например, исходник может делать изъёбистый художник которому впадлу и нахуй, а спрайтщитов может быть сотня и все периодически обновляются.
Аноним 12/02/24 Пнд 01:38:24 934682 241
>>934519
> открыл классреференс
> считает это всей докой, а не одно лишь из её частей
Имаджинировали, с кем в одном треде сидим?
> Вот у меня прямо сейчас открыта страница в доке https://docs.godotengine.org/en/stable/classes/class_xmlparser.html
> Представим, что её увидел вкатыш
Вкатыш, который с наскока пытается в хмл вкотиться? Через геймдев? Очень реалистичный сценарий (нет).
Аноним 12/02/24 Пнд 02:56:56 934688 242
>>934548
>не навык а банальное желание
Нет, именно навык. Потому что:
1. Найти нужную страницу с нужной строчкой - для этого надо уметь ориентироваться в этой доке.
2. Вычленить из сухих описаний ответ на свой вопрос.
3. Объединить несколько разрозненных частей информации, каждый из которых по отдельности не отвечает на заданный вопрос, в единый ответ.

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

Желания может быть сколько угодно, но умение работать с докой - это именно умение. У меня во времена вката (года три назад) был вагон желания, но я открывал доку, читал, нихуя не понимал и шёл в тредик спрашивать анона. Анон давал ссылку на страницу и спрашивал: ЭТО ЧТО?
Аноним 12/02/24 Пнд 03:18:49 934690 243
>>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 934697 244
Аноним 12/02/24 Пнд 10:49:32 934732 245
>>934677
Опиши реальный сценарий.
Ну ок не с исходником, а со спрайтшитом до импорта в годот.
Фон однотонный? Imagemagick. Фон типа пейзаж? Вроде нейронки какие то были.
Аноним 12/02/24 Пнд 13:30:18 934786 246
Всем привет.
Что стоит иметь ввиду при вкате в годот?
Я рассматриваю его как альтернативу возможному своему текущему инструментарию (я - изврат из IF-треда, пишущий на твайне (связка js-html-css-sugarcube 2 с основным упором на жс), пилящий пейсочницу/рпг), пока что безыгорный.
Вообще, есть какое-то подобие роудмапа?
Как какать куда смотреть в первую очередь?
Аноним 12/02/24 Пнд 13:31:31 934787 247
image.png 234Кб, 720x959
720x959
Гугл приехал
Аноним 12/02/24 Пнд 13:35:46 934789 248
>>934786
>на твайне
>пилящий пейсочницу/рпг
Твайн же по визуальным новеллам, не? Если так, то у нас хватает плагинов для ВНок.

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

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

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

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

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

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

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

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

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

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

>>934906
Да всё проще, я изначально на сцену добавил вторую сцену и все подключил. Потом я эту вторую сцену решил переместить в третий сцену, а уже третью сцену добавить к начальной. При всем этом я забыл удалить вторую сцену из первой, а она ещё и скрыта была, поэтому я не замечал, что у меня по факту стало 2 вторых сцены. При всем этом скрипт к сценам был прикреплен один и тот же. Короче затуп на ровном месте.
Аноним 12/02/24 Пнд 17:53:43 934911 271
3fb3ff2407c4619[...].jpg 87Кб, 720x720
720x720
>>934909
Ладно, телепаты возвращаются в отпуск.
Аноним 12/02/24 Пнд 21:59:46 935015 272
Аноним 12/02/24 Пнд 22:26:34 935033 273
Аноним 12/02/24 Пнд 23:50:36 935084 274
>>935033
На первой соньке столько игор сделано, что за одну жизнь всех не переиграть. Если хочется первоплойковской эстетики, просто качаешь эмуль и кайфуешь до самой смерти. Создатели подобных гунметалов перекрывают доступ нам к настоящей олдовой годноте.

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

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

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

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

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

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

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

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

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

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

Удваиваю >>935962 . Ебашь по туторам, это самый рабочий вариант для ЯИ.
Аноним 15/02/24 Чтв 01:31:58 936282 322
>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 936305 323
Снимок.PNG 14Кб, 775x381
775x381
годот 4.2, хочу выложить игру на яндекс калыч, но выдает эту ошибку. В итче знаю можно просто галочку поставить и все заработает, но тут так сделать нельзя, как можно пофиксить?
Игра браузерная
Аноним 15/02/24 Чтв 04:14:15 936306 324
Аноним 15/02/24 Чтв 05:22:59 936307 325
>>935933
Либо пили свое, либо улучшай игры из книги, так ты гораздо быстрее познаешь все нюансы. Простое копирование - не твой путь.
Если соберешься делать под мобилку и ведроид, то помни, что есть не только гугло-стор но и всякие дополнительные площадки типа:
apkmirror.com
appbrain.com
taptap.io
developer.taptap.io
open.qoo-app.com
Там зачастую нет такой анальщины как в гугле с предрелизной проверкой.
Мимо пилю под игру и хз как найти 20 тестеровщиков для гугло-стора.

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

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

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

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

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

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

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

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

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

А если этот самый, вконтакте плей какой то, где атомик херт, че там по модерации и аудитории?
Аноним 16/02/24 Птн 13:54:56 936839 363
>>936832
По сути сторы хотят чтобы:
твоя игра не вредила их бизнесу (не подставляла под порнографию, политику итд)
в частности им не нужна хорошая игра как игра, но тот же ЯИ требует хотя бы набивать контентом. Им же надо чтобы игрок зависал на платформе и ему было интересно, чтобы скармлимать ему рекламу.
То есть им не нужна игра на 5 минут, им надо игра на полчаса хотя бы.
И они не хотят технических косяков. Это пункты про картинку пола, отключение звука на альт табе, отключение долгого клика на айфонах, вот это все.
Так что принцип довольно простой.
Им не нужна хорошая игра как хорошая игра. Им нужна качественно сделанная, наполненная контентом на какое-то продолжительное время, пусть и примитивная казуальная игра.
Аноним 16/02/24 Птн 13:59:53 936840 364
>>936832
Короче говоря, нужно быть нормисом, чтобы сделать нормисную игру и нормисы-модеры её заапрувят. В общем, не для двачеров сервис, мда, штош.
Аноним 16/02/24 Птн 14:52:37 936861 365
>>933698
твою залупу тоже нужно подождать иначе ждать cum будет только залупа:
await zalupa(a)
await zalupa(b)
await zalupa(c)
Аноним 16/02/24 Птн 15:16:07 936870 366
>>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 936872 367
>>936870
P.S. Вроде еще нужно tool и class_name на скрипт. Смотри доку по текст эффектах. можно сделать эффектов на каждый чих для каждого цвета
Аноним 16/02/24 Птн 15:45:36 936876 368
Как у годо дела,если надо сервак прикрутить?
Аноним 16/02/24 Птн 15:56:17 936882 369
Аноним 16/02/24 Птн 15:57:48 936883 370
>>936876
Отлично, есть healess игровой сервер (который может запускать ту же игру, только без графона - физон, игровую логику), его поднимали во всяких облачных хостингах, есть RPC (дистанционный вызов функций) в 4-ке это аттрибут @rpc, в 3-ке надо было вызывать rpc("имя функции"). Пользовался в 1 игре и 2х утилитах (коннект мобильного клиента и пк).
Ну если что попроще там есть http запросы и вебсокеты, если с самописным серваком соединяться.
Аноним 16/02/24 Птн 16:44:17 936893 371
>>936836
>>936832
Крч с крейзигеймс сразу же обломался, потому что в sharedbuffer оно как и яндекс не умеет. Даже до модерации не дошел.
Аноним 16/02/24 Птн 16:55:20 936896 372
>>936893
> sharedbuffer
Несколько тредов назад постили аддон, который как-то решает эту проблему, я сразу не схоронил, а теперь ссылку найти не могу. А может он оказался нерабочий и его удалили из ассетлиба.
Аноним 16/02/24 Птн 16:57:01 936898 373
>>936896
Да у меня все равно игра мультитредовая, если ей шаред буффер вырубить то она работать перестанет. Так что крейзигеймс в пролете, не получат они мою драгоценную 10/10 готи игру.
Аноним 16/02/24 Птн 17:02:29 936899 374
>>936898
Хаха! Так им и надо, ретроградам! Это ж надо ж, не могут две строчки в конфиг сервера прописать!
Аноним 16/02/24 Птн 17:11:27 936901 375
Аноним 16/02/24 Птн 17:13:40 936904 376
Аноним 16/02/24 Птн 17:17:19 936905 377
>>936901
>This allows you to force the exported game to run on a single thread
У меня мультитредовая игра. Я в коде, сам, треды использую. Чтобы треды работали в вебе им нужен SharedArrayBuffer, если я его выключу (когда дадут возможность), то у игры жопа код отвалится.

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

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

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

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

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

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

Ну и какой подход лучше, делать звуки одновременно с другими задачами, или сделать все, а потом в конце плотно сесть за музыку и сделать сразу для все игры.
Аноним 17/02/24 Суб 10:29:58 937058 394
Аноним 17/02/24 Суб 10:32:28 937059 395
1708155149158.jpg 16Кб, 445x459
445x459
>>936992
> всем трендом соберемся и запилим НАШИМОНЫ
Покеходы-наоборот с толщемонами.

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

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

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

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

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

>Если менять Power в emission, меняется цвет свечения, но радиус остается тем же.
Пикрилы - только energy поменял, с 16 до 2. Радиус уменьшился. Думаю у тебя была проблема в настройках WorldEnvironment -> Glow -> Levels. Я все 7 включил.
Аноним 20/02/24 Втр 01:16:48 937862 443
>>937861
Видимо проглядел эту настройку. Ну в любом случае подозрительно, надо посмотреть как будет в динамике скакать между ними.
Аноним 20/02/24 Втр 01:20:46 937863 444
>>937861
А не знает ли кто-нибудь способа скрыть меш, оставив глоу от нее?
Аноним 20/02/24 Втр 03:08:48 937872 445
>>937761
>Однако, через время мы осознали, что взяли слишком жирный кусок и поняли, что нам стало тяжело и неинтересно. Мы увязли в этом проекте, и он стал напоминать вторую работу, просить очень много времени и приносить минимум веселья. Поэтому мы решили не продолжать. Вместо этого мы стали делать другую игру,
Лол. Сделали самую маленькую (пусть даже и сложную) часть, а как дошло до всей остальной игры - забили. Ай да разрабы.
Аноним 20/02/24 Втр 03:12:56 937873 446
>>937872
Я до туда вообще не дочитал...
Впрочем, тут в разделе 99% так поступает.
Аноним 20/02/24 Втр 14:25:02 937922 447
>>931045 (OP)
Подскажите как провода сделать, я могу же сделать кабеля ЛЭП и чтоб таскать их болванчиком по сианции в 3D?
Аноним 20/02/24 Втр 14:39:31 937923 448
>>937922
В 2д есть лайн2д. В 3д видел аналогичные плагины.
Аноним 20/02/24 Втр 15:17:49 937927 449
>>937923
Не могу найти эти плагины
Аноним 20/02/24 Втр 15:50:45 937929 450
Аноним 20/02/24 Втр 15:52:24 937930 451
Аноним 20/02/24 Втр 15:58:48 937931 452
>>937922
Сейчас подумал что можно сделать с помощью скелетон3д. Если надо по станции таскать, то вероятно тебе нужна еще и физика, а не просто графика. Чел тут похожее делает - https://www.youtube.com/watch?v=0AR7RqQ_QzU
Аноним 20/02/24 Втр 16:25:56 937934 453
Аноним 20/02/24 Втр 16:50:19 937938 454
Обнаружил что в ноды скрипты можно _встраивать_, без создания отдельного файла-скрипта. Как удобно для создания маленьких костылей.
Аноним 20/02/24 Втр 16:56:36 937941 455
>>937938
звучит, как игрушка дьявола, лучше изначально не трогать
Аноним 20/02/24 Втр 17:04:05 937943 456
>>937941
Ну я разок, от одного раза хуже не будет.
Аноним 20/02/24 Втр 17:09:06 937945 457
>>937938
А еще можно унаследоваться от майнлупа и подсунуть этот скрипт майнлупу (дефереддом подсовывать). И будет у тебя майнлуп со своими дополнительными методами.
Только в четвёрке с допиленными до ума статиками это уже не нужно.
Аноним 20/02/24 Втр 17:19:04 937946 458
Парни, я как всегда забрёл в пучину деталей, хотя даже движок ещё не скачал и меня волнует совершенно левый вопрос, но я жить не могу споукойно, пока не докопаюсь до сути. Короче, узнал тут про draw call'ы, и что типа если текстурки находятся на разных "слоях", типа на 3 слоях 2 текстуры: 1 2 1, то будет 3 дк, а не 2. Как это решается, если нужно расположить вот так вот слоями и с наложением?
Аноним 20/02/24 Втр 17:24:17 937947 459
1708439056826.png 39Кб, 1150x311
1150x311
1708439056844.png 853Кб, 720x1080
720x1080
Аноним 20/02/24 Втр 17:36:14 937948 460
>>937947
при чём тут движкосрач, даже в доке годота есть кусок на эту тему, но я не понял написанного, там типа предлагается размещать как-то последовательно текстуры, тогда можно будет рендерить как 1 1 2, но момент с наложением я не понял
Аноним 20/02/24 Втр 17:43:09 937950 461
>>937947
А я тоже не понял почему репорт, обычный технический вопрос. С другой стороны, его вопрос я тоже не понял, лол.
Аноним 20/02/24 Втр 17:44:11 937951 462
Аноним 20/02/24 Втр 19:06:10 937961 463
>>937938
На практике бывает - хочу скопировать кусок кода из прошлого проекта. Ну в общем копаться, листать в блокноте tscn которые бывают мегабайтные, с немного съехавшим форматированием - такое себе. Поиск по файлам тоже дольше. Один раз искал в какой папке положил - вот скрипты одной системы, (контроллер персонажа к примеру), вот другой, а нужных нет. Оказалось тоже в сцене был.
Аноним 20/02/24 Втр 19:28:26 937963 464
>>937951
По описанию звучит так, что движок при батчинге занимается этим сам, и тебе ничего переставлять не нужно. Или ты про то, как это отключить? Есть проходы (shader next pass), есть Material Overlay.
Но они и нужны когда тебе надо сначала что-то нарисовать, а потом либо постобработать, либо поверх полупрозрачный эффект накинуть (типа силового поля). А в таких случаях это должно быть гарантировано после. Нет никакого смысла покрывать один материал другим непрозрачным - тогда первый вообще не был нужен.
Переупорядочивание относится только к непрозрачным объектам, скорее всего, а благодаря буферу глубины, неважно в каком порядке они рисуются.
Аноним 20/02/24 Втр 19:56:22 937966 465
>>937963
да я в целом про оптимизацию, типа как это происходит и зачем об этом пишут, если это делается сорт оф на автомате
Аноним 20/02/24 Втр 20:04:09 937968 466
>>937966
Чтобы на словах объяснить, как работает движок, и что именно включает эта опция.
Аноним 20/02/24 Втр 20:06:18 937969 467
Аноним 20/02/24 Втр 22:57:14 938013 468
Для сервака придется учить си шарп,типа 1 язык и для клиента и сервера?
Аноним 20/02/24 Втр 23:32:03 938021 469
>>938013
любой серверный язык программирования, но вроде в годоте можно делать локалку, типа один игрок сервер, другие клиенты, в таком случае и гдскрипт будет работать наверно
Аноним 20/02/24 Втр 23:48:01 938023 470
>>938013
Все на гдскрипте хуячится.
Аноним 21/02/24 Срд 03:39:07 938033 471
Годаны, посоветуйте годной инфы по ИИ.
Игра - по типу Катана Зеро. Двумерная вид сбоку, у врагов есть огнестрел. Пытаюсь понять, какие алгоритмы существуют, чтобы в подобных играх выстраивать пути, но все материалы по 2д фокусируются на виде сверху.
Аноним 21/02/24 Срд 11:43:48 938068 472
>>938033
>все материалы по 2д фокусируются на виде сверху

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

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

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

a few hours later...

Анонсы, я встроил ноду без отдельного файла-скрипта, брат умер, комп стал сверхновой, где найти деньги на новый комп и пересадку сгоревшей кожи?
Аноним 21/02/24 Срд 17:57:23 938097 484
>>938068
>на инглише офк, кто тебе на русском чето объяснять будет
Спасибо за заботу, братюнь, как-нибудь пойму.
В целом видос кое-что прояснил. По крайней мере, указал направление, куда копать.
Аноним 21/02/24 Срд 19:26:51 938119 485
>>938088
Спасибо! Добра тебе и успехов! Братишка!
Аноним 21/02/24 Срд 19:29:29 938120 486
1649746091486.png 724Кб, 1803x852
1803x852
1643018333703.png 1694Кб, 1710x1027
1710x1027
1673222709567.png 448Кб, 1056x1027
1056x1027
>>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 938176 487
image.png 276Кб, 2665x1289
2665x1289
Вот вам тоже пища для ума.
Аноним 21/02/24 Срд 23:13:56 938178 488
>>938176
А теперь тож самое, только чтоб все это дело ещё заранее перед тестами прогонялось один раз.
Аноним 21/02/24 Срд 23:15:19 938180 489
>>938176
59мс на 10кк атомарных операций не такая уж и разница
Аноним 21/02/24 Срд 23:48:28 938185 490
Аноним 22/02/24 Чтв 00:18:54 938188 491
>>938120
>ссыль №1
О! А я ведь искал этот аддон и не нашёл. А оказывается, он просто для тройки был. Жаль. Ну хоть исходники почитаю.

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

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

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

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

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

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

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

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

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов