1706638667500.png590 Кб, 1152x648
Godot #45 # OP 931045 В конец треда | Веб
Добро пожаловать в тред любви, взаимопомощи и скрытого явно на виду!
Шапка: https://hipolink.me/godothread
Предыдущий: >>926070 (OP)
Архивный: >>919752 (OP)
2 931052
Вобщем, снес нахуй юнити. Посидел повтыкал пару деньков в годо, почитал документацию, посмотрел видосики, и сделал вывод что юнити хоть и в большинстве случаев получше будет, но годо движок с душой, а это важнее. Думал сначала с шарпом перекатываться ибо впадлу было на гдс пересаживаться, но хуй к носу прикинул и решил все же пересесть. Прощай рабство, привет годо!
>>930620 →
# OP 3 931053
Добавил книгу из прошлого треда в шапку. Раздел годноты.
# OP 4 931056
>>31052
Добро пожаловать!
А ГДСкрипт настолько охуенен, что я жду, когда найдется среди годанов скилловый гик, который на LLVM запилит GDLang чтобы прям консольные утилиты и оконные приложения на нём пилить. Сам я, увы, не потяну.
image.png125 Кб, 889x838
5 931062
>>931043 →
Поправил, заработало, спасибо. Под вечер мозг плохо соображает - не заметил.
Но я все равно не понимаю, зачем это нужно. Только для того, чтобы не возиться с editable children?
>>931044 →
Обычно так и делаю
6 931064
>>31062

> чтобы не возиться с editable children?


В том числе да.
Подумай перед сном, какие возможности тебе дали бы выполняющиеся в редакторе тулскрипты?
1706641292938.png116 Кб, 1744x937
7 931065
Наступает новый век...
8 931081
Как вы делаете инвентари в игре? Я блять какие-то ресурсы хуячу, пытаюсь связать сцену предмета с ресурсом для инвентаря. Вроде всё работает, но на протяжении всего времени меня не покидает чувство, что делаю какую-то хуйню.
9 931090
>>31081

> Как вы делаете инвентари в игре?


Ебашишь массив и в него вхуячиваешь предметы. Что тут сложного-то?

> Я блять какие-то ресурсы хуячу


Ресурсы (как класс) нужны для удобства управления ресурсами (как файлами).

> пытаюсь связать сцену предмета с ресурсом для инвентаря


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

> меня не покидает чувство, что делаю какую-то хуйню


Подтверждаю. Ты делаешь хуйню. Даже не глядя в твой код. Чисто по тексту видно непонимание смысла.

> Как вы делаете инвентари в игре?


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

Но ведь твой вопрос не об инвентаре, а об его внедрении в геймплей. А вот в геймплее уже есть дохуя дел, которые придётся сделать.
Как выкидывать предметы?
Как сортировать предметы?
Как вставлять предметы в слоты?
И т.д. и т.п. Тут целую книгу можно написать, весь тред исписать длиннопостами до бамплимита.
10 931091
>>31081
Нахуя? Тебе Хуан дал массивы, пользуйся. Если у тебя простенькая игрушка, то просто хватит добавление индекса предмета, если нет, то можешь сделать предметы объектами, да и инвентарь тоже сделать отдельным классом.
11 931094
>>31081
Вот, кстати, периодически вспоминаю такую штуку и советую всем: Во многих играх есть консоль. Квейки, думы, халф-лайфы, тесы. Так вот, ящитаю, годная практика для новичка - это сделать такую консоль, которая принимает на вход текстовые команды и совершает действия в игре. Что-то типа:

> player.inventory.add iron_greatsword 10


> player.equip steel_armor


Продумать, что должна сделать игра при получении команд?
И реализовать.
И когда реализуешь, многие вопросы сами собой отпадут.
12 931096
>>31094
И наткнется на expression
13 931101
>>31081

>Как вы делаете инвентари в игре?



Пишу на шарпе, был выбор писать самому или спиздить готовенький ассет. Выбор пал на inventory-system на гдскрипте. Спиздил и перекатил на шарпы, сейчас допиливаю и перекрываю говнокод автора своим
14 931104
>>31091
Ему это в позапрошлом треде говорили. Он все страдает. Пройдет 3 года, игры не будет, зато инвентарь доделает.

Проще надо делать, проще. Тем более в инди. Раз-раз и готово. Идеей надо брать.
15 931109
>>31104
Не, ну тогда он точно троллит.
16 931111
Такой вопросик, сейчас разбираюсь с машиной состояний анимаций, и вот чет не пойму почему в дереве смешивания анимации начинаются не с того же кадра, а начинают проигрываться заново, где та волшебная кнопочка лежит которая мне поможет?
17 931116
>>31111
Вобщем так и не понял в чем проблема, все перетыкал но ниче не помогло, а нагуглить нормально не получается, как проснусь буду дальше разбираться.
18 931118
Аноны. какие лучшие практики по загрузке и переключению сцен?
Есть главное меню игры, откуда после нажатия на кнопку, происходит переход к самому игровому процессу, при помощи change_scene_to_file.
И вроде все ок, но игра жалуется на циклические импорты т.к. в главном меню игры грузится сцена с игрой, а в сцене с игрой есть переход в главное меню игры.
Как фиксать? Что-то не так делаю?
19 931120
>>31090

>Инвентарь это база данных, таблица, у которой есть набор строк (записей) и столбцов (полей).


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


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

>Но ведь твой вопрос не об инвентаре, а об его внедрении в геймплей. А вот в геймплее уже есть дохуя дел, которые придётся сделать.


>Как выкидывать предметы?


>Как сортировать предметы?


>Как вставлять предметы в слоты?


Про это я не спрашивал, с этим у меня ни вопросов, ни проблем нет.
20 931121
>>31091
>>31104
Шизы, я тут впервые, перекатился с реддита
21 931122
>>31094
Я думаю, что консоль должна от обратного делаться. Нужно добавлять команды к существующим функциям/методам. А добавлять функционал исходя из требований консоли это что-то странное. Да и не нужна она зачастую индюшатине
22 931123
>>31101
Если ты про ассет от expressobits, то мне кажется, что у него версия на шарпе где-нибудь на гитхабе. А вообще я смотрел его, понял, что делаю примерно тоже самое и не стал менять свой велосипед на чужой
23 931125
>>31081
У меня на C# ECS пока инвентарь на базовом уровне, в виде двух вкладок: список всех предметов кроме надетых, и вкладка с снаряжением, где слева надетое, справа сответственно не надетое. При поднятии я удаляю со сцены спрайт и компонент позиции в пространстве и добавляю "В инвентаре", при открытии инвентаря я опрашиваю все предметы "В инвентаре" у которых владелец игрок, и ими заполняю список, аналогичным образом со снаряжением. Когда выбрасываю удаляю "В инвентаре" и рисую спрайт и добавляю компонент позиции.
24 931132
насколько по вашему годот будет хорош для 3д более менее среднего уровня графики? в 4.3 добавляют новое ГО где убрали протечки света. Да и в самом годоте куча фич типа динамичных лодов, запекание света, PBR материалы, серверы для прямого сообщения с движком, кароче тема. Вот я считаю что да, хотя движок изначально и не для этого.
25 931133
>>31094
Ты почти что Test-Driven Development описал.
В коде (тест-юнита) пишешь пример использования, и становится понятна архитектура
26 931137
>>31133
Только юнит-тесты(почему тесты-юнита, что то меняется от перестановки?) и они зачастую ломаются без поломки в самой игре, и добвляют головной боли. Консоль же -- это немного другое. По нужной команде она либо сама чёто напишет в консоли, либо покажет прям от лица камеры. И писать команды для консоли можно прям в скрипте объекта который нужно менять через них.
27 931139
>>31137

> они зачастую ломаются без поломки в самой игре


Так и задумано. Значит что то в апи поменялось и вызов выглядит теперь по другому
28 931141
>>31139
и в чём смысл? показать что в разработке что то меняется? для этого можно просто в логе выписывать ошибку на неправильный вызов функции или несовпадение форматов, для последнего даже писать ничего не нужно.
29 931145
>>31141
Не все вызовы всегда происходят (был случай когда разраб забыл потестировать движение назад - он всегда шел только вперед), несоотвтетствие форматов может пройти тихо.
30 931157
>>31064

>Подумай перед сном, какие возможности тебе дали бы выполняющиеся в редакторе тулскрипты?


Доброе утро. Могу без запуска сцены сразу смотреть поведение нод? И это в свою очередь упростит сборку уровня, например
31 931158
>>31118

>И вроде все ок, но игра жалуется на циклические импорты


Это "желтая" ошибка? Я на них обычно не обращаю внимание. У самого в проекте после меню используется "главная сцена" с игроком, ui и прочим, и в нее уже загружаются уровни через add_child
32 931174
Куда материалы сохранять, tres, res, material?
33 931215
Так и не понял короч в чем трабл и почему анимация начинается не с кадра переключения а с первого. Буду свою машину лепить тогды.>>31116
34 931216
>>31052

>годо


Лингвисты есть в треде? Почему читается годо? Пачиму t не произносится? Это же не godoh какой-нибудь
35 931218
>>31133

> Ты почти что Test-Driven Development описал.


Потому что я всю осень про это книжку читал.
>>31096
И молодец.
>>31122

> это что-то странное


Это опыт и знания.
36 931219
>>31216
Потому что слово французское.
Peugeot читается как ПЕЖО и никто не бухтит.
38 931221
>>31220
Мы заслужили!
39 931225
>>31220
Плевать, Годот, потому что Париж
40 931229
>>31220
Хорошая песенка.
1706720533495.jpg357 Кб, 1100x1183
41 931244
>>31225
Ну так мы и не паримся. Хочешь - называй годо, а не хочешь - называй годотом.
42 931247
>>31225
Удваиваю хороший аргумент. Также Форт Боярд. Сам говорю/пишу и Годот, и Годо, в зависимости от контекста.

Олсо, пытался посмотреть "В ожидании Годо" в постановке театра Вахтангова. Не осилил больше часа. Возможно, бродвейская постановка с Иэном Маккеленом и Патриком Стюартом была бы поинтереснее, но её в интернетах нету целиком (она хранится в Нью-Йоркской библиотеке им. Линкольна, там можно посмотреть совершенно бесплатно, лол)
43 931249
>>31247

> Возможно, бродвейская постановка


> была бы поинтереснее


Я лично сильно сомневаюсь. Это артхаус, а он редко бывает интересен.
44 931252
В годоте тоже надо ждать компиляции после каждого пука как в юнити?
45 931255
>>31252
Слава богу нет.
46 931258
Какой язык сейчас лучше взять для наибольший производительности?
47 931259
>>31158
Нет. именно что красная. Желтые алерты фиксаю, там все норм.
У меня в основном бзается именно смена сцены, для новых страниц\окон. Но вопрос возник только по главной странице и переходу к одной из игровых страниц, странно. Больше похоже на какой-то баг годота ибо принцип везде один и тот же юзаю.
48 931266
>>31258
Native
49 931274
>>31258

> Какой язык сейчас лучше взять для наибольший производительности?


Кресты.

> сейчас


Всегда.
50 931292
Следит кто за внутренней кухней годота? Чего там с Юркой случилось, и какие функции он выполнял? Проджект менеджер?
51 931324
>>31292
Никто не знает, но легко можно понять почему. У нас другая, не соевая культура общения, мы и лично кого то чморим если он не прав, и шуточку неуместную можем ввернуть.
52 931327
>>31258
Плюсы - всегда дадут высшую производительность, но если выбирать между гдскриптом и шарпом, то шарп быстрее
53 931333
>>31292
Юан который? который Жуан, да? ну вот он в основном курирует + ведёт немного обособленный от общего движка движ, как например новый HDDAGI (псевдо0рейтрейсинг на стероидах) -- это он делает. В основном по моему все нововведения это либо он делает, либо с его веления. Чел ровный, кстати.
54 931337
Бля. Я походу приехал. Такая ситуация. Система выборов в ещё зачаточном состоянии. Выводится от 2 до 6 кнопок. Нужно сделать, что при нажатии на каждую кнопку делается что-то своё.
Ну и как бы ничего сложного. Вот только таких выборов за игру будит сколько я захочу, а это всяко больше 1 или даже 10. Возникает проблема. Как мне хранить что будет делать кнопка? Кнопки-то дубликатом создаются и в них только id меняется, чтоб знать какую именно нажали, а нужна ещё и куча разных скриптов так-как они должны делать много разного.
Меня с начала осенила мега тупая идея хранить то, что делают кнопки в ресурсах и по необходимости просто менять ресурсы, вот только из ресурса я как буду к сцене обращаться? Нельзя же. Ну и как тогда? Кучу кнопок сделать? У меня забьётся сцена кнопками очень быстро.
По сути хотелось бы просто кнопке скрипт поменять когда захочу и всё. Как это сделать хз.
55 931338
>>31337

>будит


Бля пиздец сорян
56 931339
>>31337
сделай контроллер кнопок в одном скрипте и обращайся к нему через кнопки и их сигналы, на каждую кнопку своя функция которую она зовёт через сигнал, чё сложного? Если ты не в курсах что такое сигналы то бегом учить, ЭТО КЛАССИКА, ЭТО ЗНАТЬ НАДО.
57 931341
>>31337
Все кнопки ставят соответствующие флаги в переменную соответствующую выбору, хранящуюся в словаре выборов, типа
Dictionary<int, short> где инт - айдишник выбора, а шорт - его результат. Или даже Dictionary<Choice, short> где Choice - енум выбора.
58 931343
>>31341
перемудр дикий. сверху же писали-- сигналы и уникальные функции на каждую. Да и какого типа переменная шорт чтоб результат присходил?
59 931344
>>31343
А я и написал сразу тип: short, потому что бул слишком мала, а инт слишком велик.

> перемудр дикий.


Я из расчёта что выборов может быть слишком дохуя, а тут одна функция на всё про всё.
60 931351
>>31333

> Юрий


> Юан


Ты там что куришь с утра?
https://www.reddit.com/r/godot/comments/1afp1pv/goodbye_yuri/
61 931353
>>31339
Ну вроде норм звучит. Только код будет в спагетину превращаться, если я правильно понимаю. Ну там спагетина простая, однослойная, так что, как бы, как вариант.
>>31341
Звучит круто. Только где я буду short"ы хранить и как запускать? Вот тут-то я и обосрался. Где про шорты почитать, если ты говоришь что short это тип? Пять секунд в гугле не дали ответ.
62 931355
>>31353

> где


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

> Где про шорты почитать


В годоте его зовут uint8_t
https://docs.godotengine.org/en/stable/contributing/development/core_and_modules/core_types.html
63 931356
>>31351
ничего не курю, многие Жуана юриком называют. А Юра настоящий походу прослыл трансфобом и его кикнули за это. Как обычно, не поделили повестку. Очень жаль, и движок хороший и Юра большой вклад сделал.
64 931360
>>31337
var a = null
if игрок нажал на кнопку 1:
a = 1
if игрок нажал на кнопку 2:
a = 2
____
if a = 1:
такой-то сюжетный поворот
if a = 2:
другой сюжетный поворот
65 931361
>>31259
Тащи сюда код. Так не понять, что там у тебя
66 931382
>>31339
Ой, а кто это у нас тут порвался на весь тред?)
image.png433 Кб, 720x484
67 931385
>>31382
вы, кажется, не тому отвечаете.
68 931386
>>31337
Этот код будет давать тебе преднастроенную кнопку:

> 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()

69 931388
>>31386

> > 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)


Быстрофикс. Самое главное недоговнокодил.
c1.mp48,8 Мб, mp4,
1280x720, 1:00
70 931392
Делойте игры
71 931397
>>31392
Красивое
Очень
72 931398
>>31397
Средне
не-заставляй-меня.mp42,5 Мб, mp4,
1280x720, 0:08
73 931399
>>31392

>Делойте игры

74 931400
>>31392
Как сделать красивый переход между плаваньем и ходьбой? Я как-то делал, у меня лютое дрожание было при переключении стейта на границе области воды с областью земли. Как годаны решают такую задачу?
75 931402
>>31400
Я просто хожу по воде.
76 931404
Анончики, подскажите:
Если я планиркю сделать кастомизацию персонажа (пол, текстуры, экипировка) то мне надо просто намоделить это на один скелет и отображать при надобности?
77 931405
>>31400
У тебя скорее всего в другом состоянии определялось что тут же пора переключаться обратно, и так по кругу. Решается таймером отложенным, когда нужно пробыть хотя бы 0.1 сек в состоянии, или например разнесением в пространстве триггеров, когда между ними есть зазор, а не просто граница сред. Ну могут быть и другие варианты может ты просто pivot point криво поставил и у тебя в другом состоянии поза сдвинута.
78 931406
>>31399
проиграл
79 931467
Вчера чуть не высрал простыню о том, как я, тупой даун, не могу додуматься как делать игры. Не могу понять как использовать все эти функции и переменные, какие-то блять сигналы, ноды, _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 с которым, в последующем, и работает условие. Я пытался пользоваться отладчиком чтобы посмотреть что куда присваивается, но что-то нихуя не понял как он работает. пока писал это, до меня дошла мысль что это всё вполне логично, и, наверное, всё именно так и работает. Надеюсь я ошибаюсь и не зря это строчил.
Во-вторых, хочу узнать как можно реализовать всё это более чисто и ёмко. Я уверен, наверняка, вместо десяти функций для каждой кнопки, можно сделать одну, и вообще всё оптимизировать и сделать чотка!
Короче, расскажите как вы бы сделали, аноны.
79 931467
Вчера чуть не высрал простыню о том, как я, тупой даун, не могу додуматься как делать игры. Не могу понять как использовать все эти функции и переменные, какие-то блять сигналы, ноды, _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 с которым, в последующем, и работает условие. Я пытался пользоваться отладчиком чтобы посмотреть что куда присваивается, но что-то нихуя не понял как он работает. пока писал это, до меня дошла мысль что это всё вполне логично, и, наверное, всё именно так и работает. Надеюсь я ошибаюсь и не зря это строчил.
Во-вторых, хочу узнать как можно реализовать всё это более чисто и ёмко. Я уверен, наверняка, вместо десяти функций для каждой кнопки, можно сделать одну, и вообще всё оптимизировать и сделать чотка!
Короче, расскажите как вы бы сделали, аноны.
80 931471
>>31467

>Пока строчил всё это, в голове сложилась картина


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

А ещё отвлечься полезно тоже и сходить куда-нибудь, да хотя бы посрать. Все самые лучшие идеи приходят на толчке.
81 931503
>>31467
То что уже хоть что то высрал, большой прогресс. Не стоит себе засорять голову мусорными вопроси по типу а точно я делаю все правильно, а так можно, а как это использовать правильно, просто бери и делай, попутно смотри как игры делают другие, и тогда вопросы сами отпадут.

>Я не понимаю как происходит сравнение


@

>Короче говоря, выходит, что как раз в функции _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 сонсолька.
82 931526
>>31467
>>31471

> Пока строчил


Нормальный, общеупотребимый паттерн программирования - объяснить свою проблему во всех подробностях резиновой уточке
1706878406110.png408 Кб, 561x561
# OP 83 931584
Когда уже китайцы сделают нам резиновую Годеточку для ванны? Рассказывать ей о своих проблемах со скриптами.
84 931589
>>31584
Зочем? Для этого как раз и существует тред, разве нет?
Галочку то сними
image.png306 Кб, 598x713
85 931598
>>31404
Вдогонку: интересует еще вопрос оптимизации. В этой модельке 1900 полигонов, если теоретически добавить экип то будет около 5. Ну для одного персонажа допустим нормально. А если их 30? А если 64? Опыта в геймдеве нет поэтому для меня это еще неочевидно.
86 931606
>>31598
Накопипасти ее в редакторе годота, выключи всинк и лимит фпс, и посмотри когда фпс падать начнет.

Чет помню в каких-то дьяблах разрабы модельки по 5 миллионов полигонов делали, все с них охуевали.
87 931669
>>31598
включи сетку, хочу увидеть где именно эти 1.9к Хотя если экип будет той же детализации, то полигонов 3к скорее всего, не утрируй.
88 931684
Имеется вопрос по сохранению и загрузке данных. Я так понял в этом двигле есть два стула, это классические текстовики тип жсона и свои ресурсы. Свои ресурсы я так понял проще, т.к. не нужно делать се и десериализацию, но ставит палки в колеса любителям загружать чужие сейвы т.к. есть лазейки для вредоносного кода.
Теперь наверное нужно указать что мне собственно надо сохранять и загружать.
Это сложный инвентарь с предметами на десяток параметров, различные обьекты которые может строить игрок в мире(сундуки, переработчики со своими инвентарями и обработками). Изменения в мире: уничтожение предметов, обьектов, врагов.
В юнити я уже это делал на жсоне, мне совершенно не понравилось что это превращается в переборку листов в листе листов. Особенно если потом надо добавить еще один параметр предметов.
Так вот, вопрос в том, каким образом рекомендуете сохранять данные? Насколько уязвимость с сохранением через ресурсы актуальна? Целевые платформы десктоп шинды и ведро, чистый синглплеер.
image.png377 Кб, 631x771
89 931702
>>31669
Про добавить экип я имел ввиду общее количество предметов, даже неотображаемых. Или то что не видно не жрет ресурс?

>>31606
Спасибо за мысль, так потом и поступлю!
90 931709
>>31702
то что не видно не рендерится. программа отрисовки на корню чекает если объект "всключён" и если нет пропускает его.

И про включить сетку я имел ввиду нажми SHIFT+Z чтоб насквозь было видно. обратно той же комбинацией.
image.png175 Кб, 583x730
91 931711
>>31709

>не видно не рендерится


Успокоил, спасибо
92 931734
>>31711
по черноте видно что основная детализация в руках, затылке и грудной клетке, почему то? затылок не видно да и грудина судя по всему -- продолжение шеи. то чего не видно надо вырезать, оптимизация, хуё моё.
93 931735
>>31734
слышь грудь не трогай, зря он чтоль делал
94 931740
>>31734
Сисик поправил, а в грудной клетке пока находится законцовка "бюста". Экспериментирую со взаимозаменяемостью.
95 931747
>>31735
я не про саму грудь, блин, не про сиськи.а про то что внутри грудной клетки явно лишняя геометрия которая, как я и думал, является бюстом башки.
96 931750
>>31684

>чистый синглплеер


>уязвимость с сохранением через ресурсы актуальна


Тебе не похуй, что там будут шаманить через сохранения в сингле?

Алсо, я просто закидываю переменную инвентарь (массив со словарями) в такую же переменную инвентарь в файле сохранения. И все норм работает.
97 931965
Нужна помощь эксперта. match по скорости так же работает как и if else или быстрее?
1706943370714.png572 Кб, 811x720
98 931998
>>31965
Сделай два метода, один с 100500 ифов, второй с 100500 матчей. В начале каждого метода

> var elapsed = OS.get_time_msec()


В конце

> print("Time elspsed is %s msec" % OS.get_time_msec() - elapsed)



И сам получишь ответ на свой вопрос.
image.png36 Кб, 1046x190
99 932006
>>31503
Я нихуя не понял что тут происходит.
То есть у нас есть корневая для кнопок нода манагер.
У ноды манагер есть скрипт.
У каждой кнопки есть общий скрипт.

Скрипт кнопок поменьше, поэтому с него:
Мы добавляем в Инспектор свойство 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.
100 932074
Нужна помощь эксперта. RigidBody3D по скорости так же работает как и KinematicBody3D?

Я хочу сделать много, несколько тысяч, объектов, которые почти всегда будут просто сидеть на месте, и лишь иногда (редко) укатываться от игрока и коллизить со стенами (но не друг с другом). Как оптимальней это сделать?
image.png80 Кб, 1059x410
101 932075
>>32006

>1 (один) это типа просто дефолтное значение, но для каждой кнопки оно будет равно значению указанному в Инспекторе


Да.

>Выходит, все 10 сигналов каждой кнопки подключаем к скрипту? ....... Как она, одна функция, примет другие переменные, если эти переменные берутся из Инспектора кнопки


Да, но не ручками, кроме первого раза офк. Мы сделали отдельную сцену с кнопкой. Мы добавили эту сцену в главную сцену, туда же добавили менеджер. Сделали подпись менеджера на сигнал. И просто КТРЛ + Д сделали несколько дубликатов сцен с кнопкой. Получился пикрил 1. Я хуй знает как это адекватно объяснить честно говоря. Если по тупому то в дубликатах у сигнала остается та же ссылка на метод которая была у оригинала, но данные которые будут передавать сигналы уже будут разными. Бля, я вот знаю как это все работает, но объяснить нихуя не могу.

>upd


Ну дак да. Я просто показал что можно передавать абсолютно любые данные сигналом, и обрабатывать их в одном методе, если в этом есть нужда. Ну вот допустим тебе понадобится узнать при нажатии какой кнопки игрок проиграл, что бы собрать условную статистику невезучих кнопок, будешь знать как можно сделать.
102 932078
>>32006
Смотри, дизайн твоего приложения может создаваться по двум вариантам, в зависимости от того, как тебе удобнее.
1. Много мелких скриптов в объектах.
2. Один божественный скрипт на все объекты,
Второй вариант считается, антипаттерном. Нежелательным. Потому что тогда в одном скрипте будет намешана лапша из всех объектов приложения. (Я специально не называю это игрой, потому что это не эксклюзивные знания геймдева, это общая для кодинга инфа).
Тебе выше предлагается дизайнить по первому варианту.
У каждой кнопки свой скрипт и свой индекс (но нейминг конечно, фу), при нажатии на кнопку, она испускает сигнал с индексом. Но проблема в том, что на все сигналы всех кнопок нужно подписываться. Этот момент либо упущен, либо проигнорирован автором поста. Сигналы (ивенты) это реализация другого паттерна, наблюдатель (обсервер), и распихивание локальных сигналов без возможности на них подписаться - бессмыслица.
>>32075

> я вот знаю как это все работает, но объяснить нихуя не могу


Не знаешь. А лезешь советовать.

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

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

>>32074

> много, несколько тысяч, объектов, которые почти всегда будут просто сидеть на месте, и лишь иногда (редко) укатываться от игрока и коллизить со стенами (но не друг с другом). Как оптимальней это сделать?


Для этого у них есть режим сна, в котором они игнорируются физическим движком. Изучи это.
103 932099
>>32078

>Не знаешь. А лезешь советовать.


Критикуешь предлагай. Покажи сам как правильнее будет сделать, это в разы полезнее будет нежели вести пустой треп о паттернах, особенно когда человек не понимает даже как работает код.
Я из себя тут гуру не строю, и только рад буду если кто то более знающий поможет анону.
104 932101
>>32078

>Для этого у них есть режим сна, в котором они игнорируются физическим движком. Изучи это.


Увы, у этого вечные проблемы. Например: Ригидбоди лежит на ригидбоди. Оба спят. Убираешь нижний - верхний продолжает спать и висит в воздухе. Такая же история если куча ригидбодей лежит на статикбоди, и мы удалим статикбоди из мира. Все ригиды спят вися в воздухе.

Можно, конечно, будить их вручную. Но это излишек геморроя, каждую ситуацию учитывать и ригидбоди искать.
105 932119
>>31998
Я же написал ЭКСПЕРТА, а не какую-то синеволосую соевую гномиху капишь?

>OS.get_time_msec()


Неправильно. Нет такого метода сейчас. Да и как я буду столько матчей и ифов делать нах надо.
Пацаны говорят, что матч, вроде как, как свичами этой всех хуетенью оперирует, а потому быстрее елсифа.
Сам я не ебу конечно.
106 932122
>>32099

> Критикуешь предлагай


Предложил:
>>32078

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



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

107 932128
>>32122
Че за глупые маневры
108 932130
>>32119
Все правильно он тебе ответил. Метод может иначе называется, или его переименовали в четверке. Погуглить ты же в состоянии, верно? Принцип как он тебе и написал - берешь миллисекунды до, берешь после, вычитаешь, смотришь сколько мс код работал.

>Да и как я буду столько матчей


В цикле, епта. for i in range(10000000000): match ...
109 932136
>>32130

>В цикле, епта. for i in range(10000000000): match ...


Так у меня i будет просто бежать до 10000000000 же. Скорость будет одна и та же вне зависимости от метода сравнения.
110 932140
>>32136
А внутри цикла у тебя матч. А внутри такого же другого цикла у тебя иф. В ифах-матчах сравниваешь то, что тебе там надо сравнивать. Потом сравниваешь результаты работы двух больших циклов. Это база, это знать надо.

Короче ты заебал тупить, и я сравнил за тебя на обычных интах. На 10 миллионах сравнений матч быстрее иф-елс на 32 миллисекунды. Это дохуя ценное знание конечно сильно ускорит твой проект.
111 932142
>>32128
Нахуй иди.
112 932145
>>32142
На словах ты лев толстой, а на деле хуй простой. Ожидаемо.
113 932246
Делайте игры, хватит прокрастинировать.
114 932249
>>32246
Делаю!
115 932264
>>32145

> На словах ты лев толстой, а на деле хуй простой.


Нет ты.
116 932285
>>32246
схуяль ты решил что я их не делаю?
image.png224 Кб, 534x392
117 932293
118 932294
>>32264
Это конечно хорошо, но в рамках т.з первого поста нет никакой необходимости в динамическом создании кнопок. Это имело бы смысл только в том случае когда нам надо было бы генерировать рандомное число кнопок на старте, а у нас блять их количество статичное, их никогда не будет ни больше ни меньше. Делать динамику там где она нахуй не нужна - бессмыслица.
119 932296
>>32294

> нет никакой необходимости в динамическом создании кнопок


Есть смысл.
Это удобно и красиво.
Не нужно ебаться с заданием им параметров в инспекторе, или копипастить сконфигурированные, или копипастить код с коннектами в скриптах.
Весь коннект происхожит быстро, элегантно, в одном месте. И там же может так же элегантно поизойти расстановка динамических контролов по форме.
120 932304
>>32296

>Это удобно и красиво.


Слишком жидкое оправдание.

>Не нужно ебаться с заданием им параметров в инспекторе


А это убило. Лучше же поебаться в самом коде насрав милиард ненужных строк, сделав при этом не расширяемое говно, верно?
Короче, смысла в дальнейшей дискуссии нету. Оба варианта имеют право на жизнь т.к используются в абсолютно разных ситуациях.
Бля ща не доеб, но я чето в голос с того что попытался твое ебало имадженировать, весть такой нарядный, с пакетом, одним словом елегантный.
121 932387
>>32304

> верно?


Неверно.
Данный код добавит любое количество кнопок с любыми именами без изменения кода проекта. Достаточно описать эти кнопки в конфигурационном файле, эмуляция которого описана в var choises_from_persist_data

> Угадайте число от 1 до 10


> Угадайте число от 45 до 97


> Угадайте фрукт из списка [банан, яблоко, апельсин, слива]


> Да / Нет


> Да / Нет / Не знаю / Мне повезёт


И так далее.
image.png19 Кб, 633x310
122 932444
Сделал основные анимации движения, закинул .blend файл в папку проекта, приготовился уже разбираться с анимированием и столкнулся со следующей проблемой. В AnimationPlayer отображаются не все анимации, которые есть в блендере. В чем я напортачил?
image.png13 Кб, 634x255
123 932448
>>32444
Короче просто через gtlf export буду выгружать. Эх, а с редактированием .blend файла в реальном времени было бы в сто крат лучше.
image.png10 Кб, 530x111
124 932523
Что оно хочет этим сказать? При запуске проекта сыпет, но все работает ок
125 932650
Аноны, я правильно понимаю, что точечный свет в 2д + тени очень медленно работает? Решил добавить в мобильную игру свет и тени на локацию - на ведре (пиксель 5а) лагает. В какую сторону копать с оптимизациями?
Тени сделал менее детальными, фпс поджал - стало лучше. Но все еще плохо.
И это с учетом того, что добавил лишь 5 источников света и около 15 предметов с тенями. Источники свет статичны, предметы с тенями могут появляться\пропадать(некоторые).
126 932668
>>32650
Советы давать не буду, просто свое отрепорчу.

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

У меня такие результаты. 5-15 омнилайтов, только один из них с тенями, главный. В настройках проекта прошелся и снизил почти все. Эффективнее всего снижать разрешение - актуально если у тебя пиксели или лоуполи. На своем realme 9 получаю стабильно 60 фпс. При этом в доступе у меня есть сяоми с каким-то стремным чипсетом. По бенчмаркам он шустрее моего телефона, но умирает до 3 фпс от одного омнилайта.
127 932706
>>32650
Если только исчезать пропадать, не двигаться, то просто запеки, очевидно.
128 932860

>Note: call_group() will always call methods with an one-frame delay


Ебать это мне половину вечера испортило.
image.png585 Кб, 872x675
129 932928
алё бля, где новые версии, хули сидите
130 932945
>>32928
Да нахуй они нужны? Пусть не трогают, что не сломано
131 932952
>>32928
Токсичного Юрку пидорнули, теперь нового искать надо. Жди.
132 932958
>>32952

> Юрку пидорнули


Как бабки базарные, ей богу. Игры делайте, вместо того чтобы за жизнью разрабов следить.
133 932975
>>32952

>Токсичного


Чё он там, не поддержал трансовый переход чьего-то ребёнка, не поцеловал ботинок негру или скзаал долбоёбу, что он долбоёб без увиливаний и ужимок? Англосаксы очень нежный и в их понимании токсичностью можно назвать всё, что угодно.
134 932981
>>32975
Забулил француза, который физический движок пилил при переходе с 3 на 4. Тот так и сказал, ай фил буллиед и уебал в рокстар.
135 932982
>>32981
То есть так можно в адрес любого написать, хоть Хуана, и он уйдёт?
136 932985
Делаю survival horror.
Запили базовое перемещение персонажа, переход между уровнями, систему сохранения, сейчас делаю инвентарь и сразу вплетаю его в систему сохранений. Все верно делаю?
137 932986
>>32982
На Юрку много жалоб было, я тебе просто самый наглядный пример дал, из-за которого физика в 4 до сих пор сломана.
138 932994
>>32986
Хорошо хоть на хуана жалоб немного было
139 933025
Нужно ли remove_child(node) перед node.queue_free()?
140 933029
>>31045 (OP)
Можно ли вообще включить один AnimationPlayer внутри другого? Я из скрипта вызываю функцию первым AnimationPlayer, которая проигрывает второй, но это не работает, при этом сама функция точно вызывается.
image.png214 Кб, 1647x1170
141 933045
Сап, годач. А как изменить размер кнопки? Меняю его в size, но меньше 21 по x и 17 по y кнопка не становится (возвращаются минимальные размеры). Срабатывает через scale, но это костыль
1583916099111.png165 Кб, 225x317
142 933063
>>33025
Не нужно
>>33029
Не вижу проблемы честно говоря. В конце концов в плеере есть возможность запустить функцию скрипта.
Плееры анимируют разное или одно и то же? Может они просто оба одновременно играют и один оверрайдит значения другого?
>>33045
Скорее всего, это высчитаный размер исходя из текста таким шрифтом. Попробуй поиграться с отрицательными Margin, потом вон выше есть custom minimum size, посмотри всякие флаги типа extrend, не помню где они в 4-ке. Может быть в Layout.

Ладно котики. Меня позвали пилить мобилки на другом движке, так что не смогу давать советы в ближайшие полгода. Но я обязательно вернусь с игрой мечты и мы сделаем годот великим!
143 933068
>>33063

>пилить мобилки


>на другом движке


Смотри не выгори там.
IMG20240206184832342.jpg36 Кб, 620x462
144 933070
>>33063
Уже поиграл сотвсякими ползунками и значениями. Даже через код попробовал - ничего. Думаю, дело вот в этих ебанутых границах. Как их убрать?
145 933073
>>33045
В тройке был rect_min_size, который именно что не давал уменьшить контрол-элемент ниже указанного. В четверке хз.
146 933094
>>32981
Ахаха, пиздец, забулили в интернете, они что, дети что ли? Не умеют отстаивать свою точку зрения?
147 933096
>>33063

>В конце концов в плеере есть возможность запустить функцию скрипта.


Ею и пользуюсь. print_debug из функции нормально выводит значение, а плеер уже не работает.

>Плееры анимируют разное или одно и то же? Может они просто оба одновременно играют и один оверрайдит значения другого?


Абсолютно разное, так что ничего не перезаписывается. Элемент, который должен анимироваться при вызове функции вообще не меняется.
148 933121
>>33068
Планирую сгореть как свеча быстро и ярко и умереть богатым.
1652748813105.png24 Кб, 891x225
149 933122
>>33096
Только то проверил, все работает обоими способами. Как через Call Method, так и через Animation Playback Track.
1627074324795.png58 Кб, 1331x345
150 933123
>>33070
Я попробовал и не нашел способа уменьшить, только увелиить.
Нечто похожее можно получить добавив вокруг MarginContainer с негативными маргинами, и галочкой clip content,но он отрезает скругленные углы кнопке - возможно тебе как то под это придется текстуру подогнать.
151 933126
>>33025
Queue_free() ставит ноду на удаление со следущим кадром а не во время выполнения функции, ибо в текущем кадре к ней может обратиться другой код и будет плоха если ноды не будет на месте
152 933127
>>33122
Ясно, буду искать тогда ошибку в другом месте. Спасибо.
153 933129
>>33126
Полезно.
154 933164
Делойте
155 933173
Игры на годоте же можно будет в Яндекс игры залить?
156 933186
Свершилось! После полугода поиска идеи, прокрастинации, и клепания безыдейных прототипов с копирками, на меня все же снизошло чудо. Теперь я отчетливо вижу то что желаю сделать. И это оригинальная задумка, но довольно очевидная, поэтому все же оригинальность под сомнением, но разве это меня остановит?
Теперь можно со спокойной душой лечь спать, а на утро начать колдовать.
Давно я такой мотивации не ловил от собственных идей.
Путь будет тернистым и долгим, но зато каким!
157 933188
>>33186
Запиши ее
158 933190
>>33173
На 3-й версии. 4-й нужна поддержка SharedArrayBuffers на сервере, которую никто не нашел как в яндексе включить.
170731805349853474.webp55 Кб, 883x1024
159 933275
Чуваки, а что если у меня линукс?
Я только вкатываюсь, код пишу хуе мое, но тестировать надо наверно на винде и вообще на ней сидеть? Там же эти библиотеки, дирекс 12 и прочее говно

Алсо я на ноуте геймдевлю, 2 ядра, 8 гигов, амудевстройка, которая в 60 только сталкер тень чернобыля тянет, если все выставить на средние
Хотя я и не планирую делать графоуни шутеры
160 933276
>>33275
Я конечно могу запускать ехешники через вайн, портпротон, ботлз, но хз
161 933285
>>33275
Ты о чем вообще, какие экзешники? Годот, будучи опенсорным, работает где угодно и на чем угодно. Я, сидя на линуксе, уже четвертый проект на годоте допиливаю, все предыдущие опубликовал под винду, макось, линь, веб и андроид.
162 933292
>>33275
Трешка у меня збс работает на дебиане, 4ка работает почти никак потому что в моем некроноуте нет дров на вулкан.
А с точки зрения релиза, вообше проблем нет, экспорт это бинарник платформы + твоя игра в виде пака скриптов и ассетов. Кидал и веб билды и виндовые на твг
163 933293
>>33285
Айфону нужен мак с икскодом?
164 933295
>>33293
Под айфон не делал, единственная платформа которую я пропустил. Насколько понимаю да, нужен мак с икскодом, и нужен еще и айфон. Плюс если в гугл-плее ты как разработчик платишь единоразово за девелоперский аккаунт, то аппл с тебя ежегодно драть будет 99 баксов. Плюс санкции-верификация, хуе-мое. Поэтому не стал заморачиваться.

А для мака релиз собирается легко из-под любой платформы.
165 933300
>>33285
>>33292
Понял, спасибо
166 933314
>>33186
Удачи тебе, анон
167 933319
>>33275
Ты это я.
Такой же ноут с линухом, только интелвстройка вместо амуде.

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

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

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

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

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

Стоит оно 5 лет разработки?
171 933337
>>33320

>Не обьяснил про PackedScenes и что после двоеточия присваивается тип переменной


>Не обьяснил что такое randi_range (вроде)


>Не обьяснил что делают -=1 и +=1


А разве должен был? Книга то не по изучению гдскрипт, а по обучению работы с годо. Если нюфажи скипают банальное ознакомление с базой языка на котором им придется писать, то это их проблемы, а не автора. Такую ебейшую документацию зря писали что ли?
172 933340
Годаны, ражуйте мне, чего я не понимаю.

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

>>33337
Очередной адепт документации. Никогда ни в одной блять документации нормально не пишут, что и как делать. Что и как работает. Пишут ее задроты для задротов. А вся мудрость на формуах и в туториалах
174 933345
>>33332

>чтоб камера не выезжала за игровое поле


У Camera2D есть параметры limit_*, делающие как раз это

>Как ограничить игровое 2D поле


StaticBody2D, запихни в него шейпы типа WorldBoundaryShape2D (или LineShape2D для третьего годота)
175 933347
>>33337
Ну тоесть выделить главу на обьяснение что такое вектора он должен, а вот строчку текста потратить на обьяснение нубику принцип работы +=, который юзается постоянно, он не должен?
176 933349
>>33345
Спасибо, попробую
177 933351
>>33342
>>33347
Напишите свои книги.
178 933355
>>33353 (Del)
Ну не читай и не пиши. Хуле ты ноешь то все? Книги у тебя не то, документация не то, сам ничего делать не хочешь, и игры соевое говно, и все у тебя кончи, один ты красивый. Только срешь тут.
179 933361
>>33347
Не читал, но объясняю.
Это типичное искажение восприятия. Человек, который глубоко погружён в какую-то тему, не может воспринимать её глазами новичка. И ему не всегда понятно, какие концепты очевидны, а какие надо разжёвывать. Автор книги, судя по всему, решил, что += это достаточно очевидный оператор, значение которого понятно из контекста.
Тут, кстати, очень полезно бывает попрактиковаться на детях. Взрослые имеют разный уровень знаний, в то время как дети не знают ничего по определению.
image.png62 Кб, 614x274
180 933371
>>33342
Ебать ты шизло, документацию то хоть открывал? Там буквально все расписано, картиночки, да даже анимированые есть, специально наделали, чтоб даже додич с слюной у рта мог понять что ему объясняют. Или по твоему там должны готовые %механикинейм% подавать?
>>33347
Эт че шутка такая? Нахуй ты прешься в движок если блять даже БАЗОВЫХ операторов языка не знаешь. Иди язык учи епта. Игры делоть он лезет бля. Это блять как придти на завод болты крутить, но в душе не ебать каким инструментом это надо делать, и в какую сторону вообще крутить.
>>33361
Нехуй тут объяснять, в книге черным по белому написан пикрил текст, а значит книга не для вкатыша в геймдев, а для новичка в годо.
181 933401
>>33371
Я книгу скачал чтобы их не делать а чтобы научили делать
Я не на завод приперся точить деталь, я попросился к опытному мастеру в ученики, и мастер местами нихуя не обьяснил
182 933444
>>33371

>книга не для вкатыша в геймдев, а для новичка в годо.


Ты сам-то прочитал то, что запостил? Книга и для вкатыша в геймдев, и для новичка в годо.

>This book is for anyone


>New users and experienced developers


>Some programming experience is recommended


Знаешь разницу между recommended и necessary?
183 933453
>>33371
Блять, двачую! Аплодирую стоя! У меня так же пригорает от нулевых нубов, вкатывающихся в геймдев без элементарных знаний школьной информатики.
184 933467
>>33453
Тут даже знания школьной информатики не нужны, достаточно скилла гуглить. Или хотя бы придти и спокойно спросить в треде, без предъяв что кто-то кому-то должен.
185 933470
>>33453
Нас на информатике только заставляли печатать в ворде текст из учебника
186 933471
>>33467

> достаточно скилла гуглить


ИМХО, недостаточно.
Есть БАЗА, и её знать надо. До того, как он полез в геймдев (вершину айти, на которую восходят лучшие и сложнейшие технологии из остальных подразделов айти).
image.png638 Кб, 1600x1454
187 933472
Делойте игры
188 933473
>>33470
Печально. Придётся учить информатику в гугле.
189 933474
>>33472
Денги плоти!
190 933476
>>33453
Информатика нахуй нинужна. Вот без матеши с физикой пососёш бибу.
191 933479
>>33476
Покажи свои игры.
192 933485
>>33479
https://2ch.hk/b/arch/2020-08-11/res/226549079.html (М)
Сойдёт? Бля, остальные треды проебались оказывается
193 933541
[bombing]
Да вы задрали, илитки бля. Годот (как и некоторые другие движки) делает геймдев доступным для любого хуйдожника без базовых технических знаний, и именно это замечательно. Анон приходит в тред, делится своим мнением по книге, которую прочитал. То есть, он не просто лезет в геймдев, а он прикладывает усилия к тому, чтобы обучиться. И он пишет отзыв, который, может быть, пригодится другому нубу, ищущему хорошую книжку для обучения.
А вы тут развели - кококо не хотим пускать в наш уютненький геймдев.
Стыдно, товирищи!
[/bombing]

По мультитредингу вопрос.
В целом я разобрался, как создавать тхред и как пользоваться мутексами. Но теперь вот что спрашивается.
Вот у меня в тхреде встречаются call_deferred и set_deferred. И я хочу раньше времени прервать выполнение тхреда (например, чтобы его перезапустить с начала). Как мне теперь отменить эти деферреды, чтобы они не выполнялись?
1707397151001.png9 Кб, 524x164
194 933558
>>33485
Это не игра. И ты сам об этом написал. Такшта, остаюсь при своём. Такой ассетфлип да, можно вообще без знаний чего-либо запилить.
195 933560
>>33558
Я тебя понял. Теперь покажи свои.
196 933565
>>33541

>А вы тут развели - кококо не хотим пускать в наш уютненький геймдев.


Соглы. Я был одним из тех, кто на его посты отвечал. Он их так писал, что меня триггернуло на его пустые претензии. Приношу извинения, если что. Вкатывайтесь в геймдев как вам удобно.
197 933569
>>33558

> как бы не


У тебя русский неродной?
198 933575
https://godotengine.org/article/dev-snapshot-godot-4-3-dev-3/

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

Вот эта >>33190 проблема с яндексом, который не умеет в SharedBuffer, теперь решилась за счет однотредового веб-экспорта. Радуйтесь, четверочники.
199 933576
>>33560

> Теперь покажи свои.


У меня нет игор. Я диван.
>>33569
Я просто тупой, не обращайте внимания.
image.png110 Кб, 304x426
200 933581
>>33444

>>книга не для вкатыша в геймдев


Ну пардон, не то слово выбрал. Не для вкатыша в программирование, а для новичка в годо. Так понятнее?

>>This book is for anyone


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

>>New users


Что в твоем понимании новые пользователи? Те кто нубас в движке? Или те кто нубас в скилле кнопкодава? Ты вообще контекст умеешь воспринимать? Или для тебя прямой перевод всегда несет тру смысл строк?

>Знаешь разницу между recommended и necessary?


Разница лишь в том что ты, тупорылый, настойчиво пытаешься игнорировать эту строку. На всех играх пишут рекомендуемые минимальные системные требования. Если ты игру попытаешься запустить на ведре параметры которого еще ниже минимальных, она, как неожиданно, запустится, но будет выдавать максимум 2 фпс. И в ком же вина что столько фпс выдает? В разработчиках? Или в том что ты игру запустил на ведре? Рекомендация хоть и не обязательная форма действия, но это явный маркер того что книга содержит материал который будет не понятен вкатуну.
>>33541
Никто и не гонит. Если человек приходит с безосновательными предъявами, то пусть уходит нахуй. Этож литерали пикрил мем предъявы.
64.png2 Кб, 60x64
201 933698
как работает ебучий await?

Если хуярю так:

>zalupa(a)


>await cum


>zalupa(b)


>await cum


>zalupa(c)


>await cum



то все работает. Но если вхуярить эвейт в конец самой функции, чтобы не повторять одно и то же

>func zalupa(x):


>...


>...


>......await cum



>zalupa(a)


>zalupa(b)


>zalupa(c)



то нихуя, функции хуярят все сразу одна за другой
202 933702
>>33698
Смари.

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

Во так и работает корутина. https://gdscript.com/solutions/coroutines-and-yield/
203 933770
Хотел загрузить несколько реплик персонажа в один проигрыватель аудио и вызывать их ASP.play("hallo") на свое усмотрение, а оказывается годо так не умеет и нужно под каждую реплику создавать отдельный узел. Ну или возиться с массивами. В юнити такая же ебасосина?
204 933774
>>33698
там где стоит await выполнение функции останавливается, пока не кончится await
IMG20240209120829.jpg81 Кб, 955x776
205 933777
>>33702
Аж всхрюкнул чет

мимо
206 933801
>>33770
Так можно же в скрипт пустого проигрывателя заебенить ссылку с переменной, в которую будет будет передаваться название нужного файла с вызовом функции play()

var replika_name = null

func igrat_huinyu(name):
__replika_name = name
(Не помню куда там грузить и как,)
var suda_gruzit = load('res/audio/repliki/%s.wav' % replika_name)
Play() (хз как там)
207 933802
>>33770
Сам озвучиваешь?
208 933810
>>33802
Не, ии. Охерел от правдоподобности англ голоса на elevenlabs.io
>>33801
Спс, да, через какие-то костыли конечно можно наверное. Но простого решения чет нет. Пишут в годо 2 была библиотека семплов, но ее выпилили.
209 933812
>>33810
А куда проще?
1707491695404.jpg17 Кб, 326x242
210 933896
image.png84 Кб, 350x214
211 933916
Ля, чому я о такой крутой штуке только сейчас узнал, чому мне никто о ней на рассказал раньше, яж теперь куда меньше времени буду тратить на рисование и редактирование связей внутри движка. Бля, я ща радуюсь как маленький, такую годноту купить, за такие копейки, прям подарок.
212 933931
>>33916
Вспоминали о ней и раньше, но редко. Годноты вообще много, всю и не упомнишь.
image.png19 Кб, 653x218
213 933973
Нихуя не пойму
а зачем этот hurt.emit ? кому он эмитит? ареа 2д может сразу у вошедшего в зону предмета вызывать функции, а функция смерти напиример уже в самом плеере

как этот эмит ловить и чем и зачем?
214 933974
>>33973
Худу например, либо другим типчикам которые ловят сигнал и на его основе меняют данные, ну вот допустим получил ты урон, потом еще раз и умер, вылезает окошко со статистикой сколько ударов было получено и в какое время. Можно конечно не пускать ивент, а сделать тупо на жесткой связи все, но это не правильно ибо получится получится лапша с которой работать будет невозможно.
215 933987
>>33973
Эмит, как концепция, рассылает "всем кому интересно". Кому интересно, сами подписываются на то, что им интересно. Либо их менеджер/спавнер подписывает. Еще вариант с event bus когда все эмитят в одну кучу, и все подписываются на интересующие события в этой куче, плюсв и минусы в этом свои.
216 934027
>>33987

> плюсв и минусы


Я только плюсы вижу. Из минусов только что ивентбас является синглтоном, от которого на собесах не перезванивают.
мимо фанат ивентбаса
217 934161
>>33987
Мне эвент бас тоже кажется удобней обычных сигналов. Сигналы заебешься еще коннектить туда-сюда, в иерархию погружаться. А в автобус насрал и забыл, а кому надо сам подберет.

Годотным туториалам надо чаще эвентбас упоминать
218 934192
>>34161
Ты не знаешь БАЗУ туториалов. А она такова, что в туториалах инфоцыгане городят говнокод ради донатов. Запомните глупцы: на ютубе вы найдёте только развлекательный контент. Если хочешь изучить движок - читай документацию, качай примеры. Как сказано в шапке.
219 934195
>>34192
Полтреда назад утверждали обратное.
1707577456149.webm5,1 Мб, webm,
720x576, 0:58
220 934196
>>34195
Таков двач.
Завтра будут утверждать обратное.
Думай своей головой, а не постами на двачах. Не верь никому, даже мне.
221 934206
>>34195
Ты про этого единственного чтоль >>33342 ? Так он же шизик. Как сказал анон выше, туторы - развлекаловка, в основном это примеры того как можно делать и оно будет работать, но в то же время это то как делать вообще не надо. Они скорее нужны для того что бы у тебя отпал страх писать код.
222 934314
Самое приятное в геймдеве - после долгого периода кода, моделирования и дизайна, наконец собрать и подключить звук и музыку. Игра сразу оживает 10 из 10
223 934332
>>34192
Инфоцыган в годоте - полтора землекопа. Тут другая проблема. Туториалы делают такие же нубы, которые просто чуть-чуть что-то узнали и теперь бегут этим делиться. Настоящих опытных профессионалов среди них - те самые полтора инфоцыгана плюс ещё полтора канала с парой сотен подписчиков.
Доку же пишут те, кто действительно шарит. И в доке есть текстовые туторы, кстати. Просто существует большой разрыв между опытными и нубами. Среди опытных кодеров очень мало хороших учителей, а без этого навыка писать понятные туторы очень сложно. С другой стороны, читать доку - это тоже навык, которому надо учиться, вкатышам это сложно, им проще видос на ютубе.
224 934344
>>34332

>читать доку - это тоже навык


Ну 50/50, тут скорее лень читать и тестировать играет роль, вкатышу же че надо, чтоб он на следующий день уже сидел игру делал, вот и прутся видосики смотреть. Я думаю ты сам часто замечал что вкатыши как способ передвижения юзают телепортацию, тобишь изменение позиции на прямую, а потом задают вопросы типо че при большой скорости тело проходит через коллайдеры, как фиксить. Или вон, недавний пример, анону не объяснили что такое : и +=, хотя с его слов он не один туториал посмотрел. Или вопрос с await. И таких примеров триллиард можно привести. А самое главное, ответы на все эти вопросы можно найти чуть ли не на первой странице документации.
Поэтому это скорее не навык, а желание действительно чему то научиться.
225 934451
Вопрос по BBкодам, сейчас имею richtextlabel и базу с диалогами JSON, где прямо внутри " " тоесть в string данных вписаны цветовые коды для нужных мне слов. Все работает, нужные мне слова другого цвета.

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

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

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

Ваще не шарю в этом. Но вот так не сработает?
227 934455
>>34452
Проблема в том, что это внутри json вписано, тоесть внутри словаря. А в нем я не могу ??? ввести внутри переменную
228 934457
>>34455
Ну конечно не можешь. Это данные. Но ты можешь трактовать какие то данные особым образом. Естественно для этого придется написать какой код, обрабатыающмй данные. Например regex или просто шаблонизатор. По сути автозамену в строке какого то маркера. "My string {green} word {white} " ну ты понел.
Перестаньте записывать все подрял, включая нормальный рабочий процесс, в костыли.
229 934476
>>34457
Двачую этого. Посмотрите любые диалоговые плагины, они буквально все на регекспах.
230 934483
Чем отличается:
for i in grid_container.get_child_count()

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

?
231 934498
>>34483
Ничем
232 934506
>>34483
А лучше всё-таки
for child in grid_container.get_children()
233 934512
Есть какой-нибудь инструмент, который удаляет фон спрайт-шита?
234 934517
>>34512
Нуу, а чего бы на исходнике не удалить в граф редакторе? А так, шейдером цвет можно поменять
235 934519
>>34344
Так падажжи. Не вижу в твоих аргументах опровержения тезиса о том, что вкатышам сложно в доку. Телепортацию они используют, потому что это самый простой способ перемещения. При том, что все видеотуторы говорят про 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.
235 934519
>>34344
Так падажжи. Не вижу в твоих аргументах опровержения тезиса о том, что вкатышам сложно в доку. Телепортацию они используют, потому что это самый простой способ перемещения. При том, что все видеотуторы говорят про 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.
236 934534
>>34519
Не. Ты смотришь в справку по апи классов. Справка по апи содержит именно его. Справка по апи каждого класса не должна начинаться с курса информатики, типов данных, объяснения инхеритед, и опреатора += и тем более способ мышления.
Потому что апи представляет собой кубики конструктора.
При этом способ мышления вполее описывается в водной части документации. Полистай содержание. Там и введение в гдскрипт, и туториалы, и способ мышления, бест практис, многое описано.
Наоборот, ящитаю что в апи классов слишком много примеров. Они заставляют пролистывать их.
237 934548
>>34519
Так я и не опровергал лол, я лишь написал что для того чтоб читать документацию нужен скорее не навык а банальное желание. Ты сейчас буквально написал все тоже самое что и я, только более развернуто)
238 934574
Есть 3д модель с анимацией. Как из нее сделать элемент интерфейса, иконку? Вьюпорт какой-нибудь, или что? А то рисовать пиздец как не хочется.
239 934675
>>34483

> Чем отличается


Метод range(a, b, c) имеет три параметра, второй и третий необязательные. Таким образом приведенные тобой варианты кода аналогичны. Цикл for генерирует range с одним параметром из поданного ему на вход целого числа (а ты ему целое число на вход подаёшь, int get_child_count().

Сила ренжа проявляется, когда ты используешь два-три параметра:

> range(3, 7) # Выдаёт массив целых от 3 до 6


> range(10, -10, -2) # Выдаёт массив от 10 до -9 с шагом -2

240 934677
>>34517

> а чего бы на исходнике не удалить в граф редакторе?


Например, исходник может делать изъёбистый художник которому впадлу и нахуй, а спрайтщитов может быть сотня и все периодически обновляются.
241 934682
>>34519

> открыл классреференс


> считает это всей докой, а не одно лишь из её частей


Имаджинировали, с кем в одном треде сидим?

> Вот у меня прямо сейчас открыта страница в доке https://docs.godotengine.org/en/stable/classes/class_xmlparser.html


> Представим, что её увидел вкатыш


Вкатыш, который с наскока пытается в хмл вкотиться? Через геймдев? Очень реалистичный сценарий (нет).
242 934688
>>34548

>не навык а банальное желание


Нет, именно навык. Потому что:
1. Найти нужную страницу с нужной строчкой - для этого надо уметь ориентироваться в этой доке.
2. Вычленить из сухих описаний ответ на свой вопрос.
3. Объединить несколько разрозненных частей информации, каждый из которых по отдельности не отвечает на заданный вопрос, в единый ответ.

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

Желания может быть сколько угодно, но умение работать с докой - это именно умение. У меня во времена вката (года три назад) был вагон желания, но я открывал доку, читал, нихуя не понимал и шёл в тредик спрашивать анона. Анон давал ссылку на страницу и спрашивал: ЭТО ЧТО?
243 934690
>>34451
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 в таких случаях предпочтительнее всего, потому что при переводе на разные языки может оказаться, что в другом языке другой порядок слов, и порезанная строка никак не адаптируется под него. А так прямо в переводимой строке можно прописывать все "переменные".
244 934697
245 934732
>>34677
Опиши реальный сценарий.
Ну ок не с исходником, а со спрайтшитом до импорта в годот.
Фон однотонный? Imagemagick. Фон типа пейзаж? Вроде нейронки какие то были.
246 934786
Всем привет.
Что стоит иметь ввиду при вкате в годот?
Я рассматриваю его как альтернативу возможному своему текущему инструментарию (я - изврат из IF-треда, пишущий на твайне (связка js-html-css-sugarcube 2 с основным упором на жс), пилящий пейсочницу/рпг), пока что безыгорный.
Вообще, есть какое-то подобие роудмапа?
Как какать куда смотреть в первую очередь?
image.png234 Кб, 720x959
247 934787
Гугл приехал
248 934789
>>34786

>на твайне


>пилящий пейсочницу/рпг


Твайн же по визуальным новеллам, не? Если так, то у нас хватает плагинов для ВНок.

>Вообще, есть какое-то подобие роудмапа?


Мой путь был таков. Проходил официальный 2д гайд, делал насколько учебных проектов, потом поглядывая разные туториалы на ютубе начинал делать свои идеи.
249 934797
>>34789
Твайн необязательно по вн, но для них он хорошо подходит.
Но он точно не подходит для того, чтобы писать игру песочницу/рпг, в которой можно грабить корованы. А я именно на это нацелился.
К слову, я пописываю уже полгода в неторопливом темпе. Из последнего - влетел в один досадный баг и выкинул нахуй весь жс с целью переписать его с начала с учётом того, что узнал, лучше и с менее отбитыми решениями.
image.png18 Кб, 685x138
250 934828
Расшифруйте

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

То что _integrate_forces юзается чтобы просчет process_physics(delta) не пидорасило я понял
Но что делает аргумент в скобках? по дефолту там "state", но автор книги написал "physics_state" потому что "state" уже используется выше
Вроде это добавляемое состояние для Игрока, но как оно работает непонятно
и что еще за physics_state.transform? что за origin и его ".x"
251 934829
>>34787
Ну это бомба.
image.png90 Кб, 797x571
252 934833
>>34828
из этого даже с переводчиком мало что понятно
253 934835
>>34828
Physics state это внутреннее состояние физ движка, нк пытайся понять, это тебе не понадобится в билжайшие несколько лет.
Трансформы описаны в доках, сам трансформ это общее преобразование (позиция, поворот, масштаб), origin это только позиция, x это одна из 3д координат x.y.z
254 934844
>>34675
Спасибо
255 934845
>>34835
Вроде разобрался, спасибо
256 934850
Как сделать чтобы новый скрипт создавался без ебаных комментариев, а все остальное типа _process _ready extend чтобы было?
257 934859
>>34850
Темплейт выбери/зделой.
258 934860
>>34850
В папке пользователя в ос есть папка script templates, там делаешь какие хочешь шаблоны
https://docs.godotengine.org/en/stable/tutorials/scripting/creating_script_templates.html
259 934861
>>34850
Где-то в скрытых папках годота лежат эти шаблоны скриптов, можно поправить. Да и вообще можно свои шаблоны на разные случаи написать.
Screenshot48.png22 Кб, 583x261
260 934875
Проблема, не меняется текст в richtextlabel:

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

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

под переменной просто ссылка на richtextlabel, я пробовал вставлять напрямую, все тоже самое. В чем проблема?
261 934876
>>34875
У ббкода вроде другое поле, не text
262 934877
>>34875
append_text() посмотри
Screenshot49.png21 Кб, 706x296
263 934880
>>34877
С таким сразу ошибка

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

Я сделал вот так на пике
В обоих случаях принт мне все выводит, но если через сигнал с менеджера сцен, то текст не меняется. Если через кнопку - меняется. То есть когда сигнал идет с другой сцены - .text просто не работает. Это баг или фича?
264 934881
>>34875
Хотя это наверное не при чем. Сложно сказать. По опыту могу посоветовать проверить, что ты не затираешь значение тут же другим, например в процесс постоянно не перезаписываешь или обработчиком кнопки (может у тебя постоянно создается эта строка заново ), второе проверь что сама ссылка указывает на тот же объект.
Попробуй вывести print(fio), print(fio.name), print(fio.text)
265 934890
>>33575

> SharedBuffers


У меня с 4-кой love hate
Придется ОПЯТЬ уже в пятый раз попробовать.
266 934891
>>34880
Так а сигнал ты вызываешь? Просто зеленая стрелочка означает что кнопку ты подключал через интерфейс редактора, а у второго такой нет, значит ты где-то должен сделать connect, и emit.
Проверь в таком случае количество аргументов. Емнип если у тебя обработчик handler(), а ты испускаешь сигнал с параметрами, то этот не вызовется потогму что не совпадает кол-во аргументов.
267 934894
>>34877
>>34891

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

выше кода ничего нет и ниже тоже, я все закомментил
на втором пике как вызывается сигнал, функция активируется просто нажатием на кнопку на другой сцене
268 934901
>>34894

>То есть я нажму кнопку, станет 11, потом через сигнал - опять 11 выводит


Это скорей говорит о том что ты твой объект принимающий сигнал в какой то момент задублировал. В каком файле/классе находится _test()? Проверь где ты создаешь объект этого класса. Выведи при отладке и print(self.name)
23ce941ec0503407e75dab2dd9914cba.png127 Кб, 350x334
269 934906
>>34894
Я даже так предположу.
Ты добавил на сцену объект (пациента или что то такое). Подключил ему в редакторе сигнал от кнопки. Не подключал скриптом его ко второму сигналу. Он принимает только сигналы от кнопки.
Потом ты в скрипте где-то спавнишь такой же объект. Ты не подключал его к кнопке. Но ты в скрипте подписываешь его коннектом на програмный сигнал. Он принимает только програмные сигналы, но не кнопку.
Они могут находиться в одном месте экрана, и ты даже не знаешь что они накладываются друг на друга.
270 934909
>>34901

>print(self.name)


Благодаря этому нашел проблему, сейчас все заработало, спасибо!

>>34906
Да всё проще, я изначально на сцену добавил вторую сцену и все подключил. Потом я эту вторую сцену решил переместить в третий сцену, а уже третью сцену добавить к начальной. При всем этом я забыл удалить вторую сцену из первой, а она ещё и скрыта была, поэтому я не замечал, что у меня по факту стало 2 вторых сцены. При всем этом скрипт к сценам был прикреплен один и тот же. Короче затуп на ровном месте.
3fb3ff2407c461919012cd0a64da7403.jpg87 Кб, 720x720
271 934911
>>34909
Ладно, телепаты возвращаются в отпуск.
272 935015
273 935033
>>35015

>Gunmetal Gothic


https://store.steampowered.com/app/2248150/Gunmetal_Gothic/
ля какая красота
274 935084
>>35033
На первой соньке столько игор сделано, что за одну жизнь всех не переиграть. Если хочется первоплойковской эстетики, просто качаешь эмуль и кайфуешь до самой смерти. Создатели подобных гунметалов перекрывают доступ нам к настоящей олдовой годноте.

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

П.С. Да ещё и мультиплеер, фунахуй.
275 935093
>>35084

>Если хочется первоплойковской эстетики, просто качаешь эмуль и кайфуешь до самой смерти


К первоплойковой эстетике в настоящих играх на первой плойке прилагается хуевое управление, кривой геймдизайн, ограничения железа и прочие чудесные вещи консольных игр той эпохи
276 935096
>>35093
Двачую этого. Плюс, имея выбор поддержать копрокорпорацию или поддержать братана-индюка, я всегда выберу второе.
277 935106
>>35033

>ля какая красота


Если бы был магазин для китайских консолек до десяти тысяч...
278 935115
А чем лучше делать город для 3д игры? Неужто в блендере?
279 935159
Crysis на Годо слабо сделать?
image.png286 Кб, 640x446
280 935164
281 935166
>>35159
Если заплатишь такой же бюджет то легко
image.png267 Кб, 1920x1040
282 935199
>>35115
если ГРАФОН не нужен, то в blockbench
283 935201
>>35115

>Неужто


Почему неужто? Блендер давно уже дефакто индустрии. Если проще - блокбенч, да.
284 935215
>>35199
>>35201
Нужен.
Спасибо.
285 935216
>>35159
Ну, 3д графику 2010-х тут раза три кидали. Road to Vostok, еще пара каких то. И да, нужен будет игровой комп чтобы это работало.
286 935229
>>35159
так тут важен не годот,а 3д редактор
287 935232
>>35229
Тут важен и не 3д редактор, а 3д скилл. Все всегда в скилл упирается.
288 935251
>>35229
Не совсем, там же какой то физон был, типа взрывом можно снести стену лачуге, можно раздвигать кусты джунглей.
289 935622
Блять вторая игра из книжки это дохуя сложно для меня, какой то турбокод который хуй проссышь
Автор тупо говорит добавляй это в код, потом это добавляй он то то делает, но я нихуя не пойму логику по которой он вообще добавляется, типа блять а как мне быть когда я сам буду скрипты писать? Как мне продумать что в этом скрипте писать а что в том? А как лучше?

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

Пиздец короче
image.png53 Кб, 794x388
290 935673
непонял...
291 935675
>>35673
_ready() вызываются в порядке от вложенных нод в сторону корневой. Поэтому в ready можно присваивать переменным ссылки на объекты гуя
Запись
@onready var a = $smth
Соответствует
var a

func _ready():
a = $dmth
292 935676
>>35675
Соответственно просто
var a = $smth не сработает потому что дети еще не загрузились
293 935678
>>35675
У меня сейчас нахуй голова лопнет

Я немогу просто засунуть в переменную ссылку на ноду потому что?
294 935679
>>35678
Потому что то она еще не загрузилась, ее ready не был вызван, объект не до конца сформирован.
295 935683
>>35622
Старайся и осиливай. Потом пригодится.
296 935697
>>35679
А онреади ждет пока нода сформируется и только потом присваивает?
297 935700
>>35697
Да. И когда дети этой ноды тоже станут готовыми.
298 935788
>>35015
Выглядит как-то печально. Дальше первой ps1 не особо ушли
299 935793
>>35788

> Выглядит как первой ps1


> печально


??
300 935835
>>35788
Это и был их план, пчел.
301 935913
Какие жанры вы делаете?
302 935914
>>35913
Рогалик
303 935927
>>35913
Физические головоломки.
304 935932
>>35913
Sandbox/rpg.
305 935933
Сейчас делаю игры по книжке где 4 игры
Мне стоит пока на этом сосредоточится или надо паралельно какую нибудь свою игру пилить?
Просто я думаю если игру паралельно пилить то там гуглить надо будет дохуя а это время, а у меня после работки его маловато
306 935934
>>35933
Ты это делаешь имея стабильный заработок, следовательно это твоё хобби, так что делай как тебе интереснее.
307 935935
>>35934
Ну вообще хочеться перекатится побыстрее на заработок с игор, ибо у меня дноработка 20к и умирающий новутбук, а родня подгоняет пойти на работу пооплачиваемей в колхоз блять за 40к (скорее 30к)

Ты бывал на коровьей ферме? Я бывал, и я не хочу туда
308 935936
>>35935
Тогда делай то, что принесёт деньги, а это гиперказуалки
309 935939
>>35927
На jolt?
310 935941
>>35936
Например?
311 935942
>>35935

>Ты бывал на коровьей ферме?


Я бывал, прикольный говняк кругом.

>заработок с игор


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

Либо, если не под мобилки, то возможно какие-нибудь яндекс-игры или вк-игры. Тут я не шарю.
312 935943
>>35939
Нет, зачем? Я пока с 3-ки не перехожу.
313 935961
>>35942
Ну в яндекс игоры и мечу

Правда я хз через сколько времени смогу нормально пилить игры а не сосать хуй с туториалами
314 935962
>>35961
Ебашь гиперказуалки. По многим из них есть туториалы. Берешь готовые ассеты и хуяк-хуяк и выложил. Со временем еще свои шаблоны наработаешь.
315 935966
>>35962
Ну там же вроде модерация ебет в рот, и калл не пропускают
316 936124
>>35935
эпоха игр типа флэппи берд осталась в истории,так считай что делаешь для души
317 936129
>>36124
Да нифига, регулярно очередная ноубрейн кликалка взлетает.
318 936131
>>36129
например,с оплатой или рекламой
319 936132
>>35942
Тоесть с гугол плея чтобы вывести надо счет за бугром открывать ехать? Мда блять
Наверно прийдется в отечественный рустор сувать...
320 936141
>>36132
Добро пожаловать в новую с 2022 реальность. Тебе в гугл-плее еще 25 баксов оплатить надо будет за девелоперский аккаунт. С российской картой это, увы, невозможно.
321 936245
>>35966
Наоборот. Только его и пропускают. С чем-то более сложным, чем три в ряд, заебёшься проходить модерацию, там всегда найдут, к чему прицепиться.

Удваиваю >>35962 . Ебашь по туторам, это самый рабочий вариант для ЯИ.
322 936282

>ThreadLoadStatus load_threaded_get_status ( String path, Array progress=[] )


>...


>An array variable can optionally be passed via progress, and will return a one-element array containing the percentage of completion of the threaded loading.


Сукааа в чью светлую голову пришла вообще эта идея? Нахуя? Почему нельзя было сделать как-то так:

>Array load_threaded_get_status ( String path, bool report_progress=false )


Чтобы функция возвращала две чиселки вместо одной - первая это статус, вторая прогресс.

Ёбаные сишники. Как же бесит эта их манера вместо int foo(int bar) делать void foo(int★ bar). Возвраты вам для чего Ритчи и Страуструпом даны?
Снимок.PNG14 Кб, 775x381
323 936305
годот 4.2, хочу выложить игру на яндекс калыч, но выдает эту ошибку. В итче знаю можно просто галочку поставить и все заработает, но тут так сделать нельзя, как можно пофиксить?
Игра браузерная
324 936306
>>36305
Смотри сюда -> >>33575
325 936307
>>35933
Либо пили свое, либо улучшай игры из книги, так ты гораздо быстрее познаешь все нюансы. Простое копирование - не твой путь.
Если соберешься делать под мобилку и ведроид, то помни, что есть не только гугло-стор но и всякие дополнительные площадки типа:
apkmirror.com
appbrain.com
taptap.io
developer.taptap.io
open.qoo-app.com
Там зачастую нет такой анальщины как в гугле с предрелизной проверкой.
Мимо пилю под игру и хз как найти 20 тестеровщиков для гугло-стора.

>>36141

> еще 25 баксов оплатить


С беларуского райфайзена все оплатилось отлично, так что проблема решаема дешевым путем.
326 936308
327 936309
>>36264 (Del)
што тама? у меня нету вк
328 936310
>>35913
Хочу сделать шутер, но получится ли у меня, хз.
329 936314
>>36245
А как вообще модерация проходит? Типа загрузил игру и какой то модер должен ее поиграть пару часов и потом как то на почту напишет что "хуйню сделал, переделывай давай"?
330 936436
Напомню что типизированный гдскрипт работает на 30-50% быстрее. Типизируйтесь.
331 936439
>>36436
Пишу исключительно на шарпе
332 936443
>>36439
Очень важная информация нет
333 936445
>>36443
Он ещё быстрее типизированного гдскрипта
334 936451
>>36439
Пишу исключительно на с++.
335 936469
Делойте игры.
336 936471
Пишу исключительно на бумаге.
337 936473
>>36469
Делоем.
1708001758835.png36 Кб, 896x377
# OP 338 936553
>>36436
Пост ушёл в шапку!
339 936598
>>36553
Найс. Добавь еще про sharedbuffer в 4.3, а то часто спрашивают. Если шапку вообще кто-то читает.
340 936647
>>36436
Все подряд типизировать или есть какие-то особенно важные моменты?
341 936655
Как прервать анимацию вызванную из _physics_process?
Вот у меня персонаж, у него играет анимация idle, тут к нему подходит другой персонаж которому надо уебать и проиграть с этим анимацию attack. Анимация, конечно, проигрывается, за доли секунды, поэтому создаётся впечатление что постоянно играется idle.
Вот и как прервать idle на время проигрывания attack?
Загуглив нашёл только один тред на Редите где чел вышел из положения вместо _physics_process использовав _ready, но это не мой случай, ибо c _ready ничего не будет играть вообще.
342 936660
>>36647
Можешь все подряд, если не лень. Если лень - самый интенсивные места/циклы.
343 936678
>>36655
Контекста маловато. Это ты с AnimatedSprite2D бодаешься или с AnimationTree? Скинул бы хоть гифку/видос как это выглядит
FirstLessonProject.png671 Кб, 3202x2436
344 936717
>>36678
Вот так как-то
345 936737
>>36598
Шапку никто не читает. Я месяц проводил эксперимент, добавив в шапку кое-что в самом начале. Никто не прокомментировал в треде.
346 936738
>>36647

> Все подряд типизировать


>>36660

> Можешь все подряд



Это не сложно, добавить двоеточие к знаку равенства в большинстве случаев не вызовет ругани компилятора. В редких случаях нужно будет указать тип вручную.
347 936752
>>36314
Ты только что крейзигеймс, лол
Нет, у них там воооот такенный свод правил, и модер должен убедиться, что в игре они нигде не нарушаются ни на буковку.

>>36647
Я всё подряд типизирую, мне не сложно.
Вообще, нетипизированные данные - это клёвая фича, но нужна она буквально в двух случаях.
1. Когда делаешь универсальную функцию, принимающую на вход какие-то данные. Функция их как-то интерпретирует, приводит к типу и выдаёт однозначный результат. Например, func play_sound(sound), где sound может быть ресурсом наследником AudioStream или именем файла.
2. Словари. Хотя в четвёрке стало гораздо удобнее использовать кастомные классы в большинстве случаев, когда в тройке я бы заюзал словарь. По сути сейчас словари нужны только для хранения больших гибких структур, типа сохраняемых данных.
348 936766
>>36752

>Ты только что крейзигеймс, лол


Поясни. Я как раз туда собирался свою поделку отправлять, даже вкладка открытая висит.
349 936767
Аноны, я может перегрелся уже, но что-то не понимаю.
Если скрипт принадлежит данной сцене и я в нем ищу ноду, то как может быть нулл?
350 936768
>>36767
Я не знаю. Поставь брейкпоинты и посмотри что в рантайме находится. Можешь еще во вкладке remote в дереве нод посмотреть во время запуска.
351 936770
>>36767
А если get_node() используешь, что выдаёт? Может ты по пьяни "C", "o" или "e" не в той раскладке написал?
352 936772
>>36768

>remote в дереве нод посмотреть во время запуска.


Спасибо антош.
Там искомая Нода2Д не появляется, странно.
image.png10 Кб, 687x58
353 936774
>>36717
Ну, тут конечно ситуация тяжкая, раз уж ты в процессе каждую анимацию проигрываешь. Можешь либо переписать всё под стейт-машину, но это почти весь код перелопатить придётся, либо добавить проверку текущей анимации и ее прогресса в строчку с is_on_floor(). Привести к виду чего-то типа пикрила. Конечно, работать будет только при условии, что у тебя анимация "attack" не поставлена на луп.
1708051623356.jpg397 Кб, 1080x1696
354 936776
>>36436
Протипировался, быстрее работать не стало
355 936779
>>36772
Удаление папки .godot помогло. Немного заебало такое.
356 936809
>>35913
стелс
357 936813
>>36752
А че там за правила?
Можно например кровавый клон дум первого залить? Или там совсем на малышей все расчитано?
358 936817
>>36774

>ситуация тяжкая


А как можно сделать лучше?

>стейт-машину


Это что такое?

Попробовал твоё условие, всё равно не работает, зацикливание не стоит.
359 936826
>>36817
Стей машина это типа механизм изменения состояний
Final state machine

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

А текущее состояние будет указано в определенной переменной, тоесть одновременно можно только одно состояние
360 936832
>>36813

>А че там за правила?


Да блять, ну что ты как маленький?
https://yandex.ru/dev/games/doc/ru/concepts/criteria
С таким подходом ты модерацию не пройдёшь.

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

>Можно например кровавый клон дум первого залить? Или там совсем на малышей все расчитано?


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

>>36766
На крейзи, если твоя игра им "не подходит", они просто отказывают без указания причин. Причины указывают только если "подходит", но какие-то правила нарушает.
Какие критерии "подходимости"? А пошёл ты на хуй, вот какие.
361 936836
>>36832

>крейзи


Ты меня замотивировал туда отправиться. Сейчас открою вкладку, которая уже недели 2 висит, и заполню эти унылые формы. Отпишусь возьмут ли.
362 936838
>>36832
Мда, поднимаем отечественный гейдев

А если этот самый, вконтакте плей какой то, где атомик херт, че там по модерации и аудитории?
363 936839
>>36832
По сути сторы хотят чтобы:
твоя игра не вредила их бизнесу (не подставляла под порнографию, политику итд)
в частности им не нужна хорошая игра как игра, но тот же ЯИ требует хотя бы набивать контентом. Им же надо чтобы игрок зависал на платформе и ему было интересно, чтобы скармлимать ему рекламу.
То есть им не нужна игра на 5 минут, им надо игра на полчаса хотя бы.
И они не хотят технических косяков. Это пункты про картинку пола, отключение звука на альт табе, отключение долгого клика на айфонах, вот это все.
Так что принцип довольно простой.
Им не нужна хорошая игра как хорошая игра. Им нужна качественно сделанная, наполненная контентом на какое-то продолжительное время, пусть и примитивная казуальная игра.
364 936840
>>36832
Короче говоря, нужно быть нормисом, чтобы сделать нормисную игру и нормисы-модеры её заапрувят. В общем, не для двачеров сервис, мда, штош.
365 936861
>>33698
твою залупу тоже нужно подождать иначе ждать cum будет только залупа:
await zalupa(a)
await zalupa(b)
await zalupa(c)
366 936870
>>34451
ебаш свой собственный 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]
367 936872
>>36870
P.S. Вроде еще нужно tool и class_name на скрипт. Смотри доку по текст эффектах. можно сделать эффектов на каждый чих для каждого цвета
368 936876
Как у годо дела,если надо сервак прикрутить?
370 936883
>>36876
Отлично, есть healess игровой сервер (который может запускать ту же игру, только без графона - физон, игровую логику), его поднимали во всяких облачных хостингах, есть RPC (дистанционный вызов функций) в 4-ке это аттрибут @rpc, в 3-ке надо было вызывать rpc("имя функции"). Пользовался в 1 игре и 2х утилитах (коннект мобильного клиента и пк).
Ну если что попроще там есть http запросы и вебсокеты, если с самописным серваком соединяться.
371 936893
>>36836
>>36832
Крч с крейзигеймс сразу же обломался, потому что в sharedbuffer оно как и яндекс не умеет. Даже до модерации не дошел.
372 936896
>>36893

> sharedbuffer


Несколько тредов назад постили аддон, который как-то решает эту проблему, я сразу не схоронил, а теперь ссылку найти не могу. А может он оказался нерабочий и его удалили из ассетлиба.
373 936898
>>36896
Да у меня все равно игра мультитредовая, если ей шаред буффер вырубить то она работать перестанет. Так что крейзигеймс в пролете, не получат они мою драгоценную 10/10 готи игру.
374 936899
>>36898
Хаха! Так им и надо, ретроградам! Это ж надо ж, не могут две строчки в конфиг сервера прописать!
375 936901
377 936905
>>36901

>This allows you to force the exported game to run on a single thread


У меня мультитредовая игра. Я в коде, сам, треды использую. Чтобы треды работали в вебе им нужен SharedArrayBuffer, если я его выключу (когда дадут возможность), то у игры жопа код отвалится.

Но не критично на самом деле. Игра свое уже показала, когда-то давно я ее под итч делал, сейчас просто хотел дополнительно раскидать.
378 936907
>>36905
Обьясни нубику че за треды и нахуй нужны?
379 936919
>>36907
Ну вот ты открыл несколько тредов в отдельных вкладках и читаешь один, а в сосежних мигает значок, что новые посты появились, ты переключаешься в соседнюю вкладку и читаешь посты там, и пока ты читаешь в одной вкладке ты не можешь читать другие, но при появлении новых постов они опять мигают и ты опять переключаешься в другую вкладку.

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

В одном треде крутится основная игра, а в других тредах подгружаются соседние локации, и когда подгрузились, мигают процессору семафором "эй, я сделял" и проц хватает данные и предоставляет основному треду.
image.png19 Кб, 430x219
380 936950
>>36774
>>36817

А вот теперь работает. Не понимаю в чём разница.
381 936951
Сколько места занимает готовая простая игра?
382 936954
>>36951
100 литров
383 936955
>>36954
Остроумно
384 936983
>>36951
Мои на 30-60мб.
image.png152 Кб, 895x504
385 936992
Давайте всем трендом соберемся и запилим НАШИМОНЫ для яндекса или вк с аццким донатом. Мне 65% выручки за идею, остальное между собой поделите
386 936996
Делойте игры.
387 937005
>>36996
Итс революшн,Джонни!
388 937017
>>36905

>когда-то давно я ее под итч делал, сейчас просто хотел дополнительно раскидать.


Не повторяй моих ошибок. Игра под итч и игра под ЯИ - это две очень разные игры.

>Я в коде, сам, треды использую


А поделись, если не секрет: для чего? Просто мне вот до сих пор не встречалось ситуаций, когда бы это было действительно нужно. Единственный раз понадобилось для загрузки файлов, но для этого у годота есть готовый объект, который сам внутри себя мультитредит как надо. А операции с нодами в любом случае надо в основном потоке делать.
389 937019
>>37017
Для оптимизации тугого участка кода, там много массивов с кучей информации об истории ходов и оно хорошо параллелилось. Сейчас я уже понял как сделать однопоточно и еще быстрее, но лезть в старый код, в старый проект - и лень и стремно.

Может однажды слоупоки вроде ЯИ и крейзигеймс смогут в SharedArrayBuffer, тогда и им выложу.
390 937024
>>36992
Шутки шутками, но ящитаю покемоны-стайл или тамагочи-стайл - всегда актуально. Тот же "мой говорящий том" и его клоны до сих пор в топе гуглплея.
391 937037
Годаны, чего я не понимаю?
@tool скрипт. Делаю add_child(node). В дереве сцены, ессно, она не появилась, но визуально видна.
Таких нод у меня много, целая генерация. Я в редакторе их нагенерировал, проверил, что всё ок, и теперь хочу, чтобы они отобразились в дереве и сохранились в сцене, чтобы больше не генерировать. Применяю к ним node.set_owner(self). И нихуя не происходит.
Что я мог упустить?
392 937038
>>37037
Там вроде не self а что то про editor current scene, погугли
393 937049
Как делать звуковую составляющию игры, если вообще ничего не понимаешь в этом? Я про общую композицию, атмосферу, правила они же наверно есть? и прочее. Вообщем реквест годных материалов по прости господи саунд дизайну или как это называется, желательно на русском

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

Ну и какой подход лучше, делать звуки одновременно с другими задачами, или сделать все, а потом в конце плотно сесть за музыку и сделать сразу для все игры.
394 937058
>>36817

> >стейт-машину


> Это что такое?


Это такая вещь, с которой обязаны начинаться настоящие курсы геймдева.
(как мы выяснили пару тредов назад)
https://ru.wikipedia.org/wiki/Состояние_(шаблон_проектирования)
https://gameprogrammingpatterns.com/state.html
1708155149158.jpg16 Кб, 445x459
395 937059
>>36992

> всем трендом соберемся и запилим НАШИМОНЫ


Покеходы-наоборот с толщемонами.

Нихуя они не соберутся, проверено. Полна доска одиночек, не умеющих в командную работу.
396 937066
>>37024
Актуально-то актуально, но не значит, что хорошо, жанр так рано или поздно вымрет из-за эксплуатирования ровно тех же идей в каждой игре.

>>37059
Да и хуй с ними. Я - индюк-ебиночка тоже и мне норм.
397 937081
>>37066

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


Это как утверждать что котики-собачки вымрут из-за того что живут в каждой второй квартире.
398 937085
>>37081
Кривая аналогия подобна котенку с дверцей.
Нет, это как сказать, что спиннеры и попыты уже не покупают, потому что их купили все желающие.
399 937128
>>37085
Спиннеры и попыты это мимолетный хайп, а котики вечное.
400 937168
>>37085
Ну так-то ты прав и их купили все желающие, потому их не покупают.

>>37081
Решил посоревноваться со мной в кривых аналогиях? Ну держись.
Нет, то что я сказал, это как утверждать, что динозавры вымерли потому что питались одним и тем же мясом и одними и теми же папоротниками.
401 937301
>>37038
Поковырялся в доках, пришёл к рабочему решению: EditorScript.new().get_scene()
аригато, семпай
В итоге всё равно отказался от этого решения, потому что тормоза вызывает генерация кучи нойзтекстур, а не это вот всё. Но на пути к этому пониманию твой совет очень помог.
402 937510
Игры сами себя не сделают.
image.png107 Кб, 541x732
403 937524
405 937577
>>37566
Отсутствует, потому что я не использую анимацию.
1111.png162 Кб, 1155x675
406 937600
Че за хуйня, как сделать нормальную тень? годот 4, в настройках проекта все менял
407 937650
>>37600
на качество тени влияют настройки источника света. Непонятно какой источник у тебя
408 937664
>>37600
В тройке в настройках проекта были опции для разрешения теней. Вот они на это влияли. В 4 хз.
409 937668
>>37600
Попробую объяснить своими словами (это может быть не так, как реализовано реально в коде, но так, как воспринимается со стороны игродела)
Вся сцена помещается в Bounding Box, и на этот объем натягивается текстура для тени размером указанным в Project Settings directional shadow size.
Соответственно, проблему можно решить:
1) Увеличив размер текстуры тени (за счет видеопамяти)
2) Уменьшив дальность в Directional Light, тем самым уменьшив 3д объем, при сохранившемся разрешении текстуры тени.
Ну и играйся с остальными настройками, например blend splits сглаживает края.
А так да, тени в годоте всегда сложно настраивать. Дальше возможно придется погружаться в запечение (для неподвижных объектов).
410 937671
>>37668
Порядок пик перепутал. пик2 - 2), пик3 - 1).
411 937672
>>37668
Плюс, насколько я понимаю, настройка Splits сделана для того, чтобы можно было сделать и тени для больших объектов (типа стен), и небольших (типа мяча рядом с камерой игрока).
412 937694
>>37668
Сохранил себе
413 937700
>>37694
Там очень много подводных, все сразу не вспоминть, и такие моменты что тебе важнее, четкая тень или стабильная (которая не дрожит между кадрами), и что тебе важнее, тень на горизонтальном полу или вертикальных стенах, довольно сильно зависит от того большие или мелкие предметы.
многое описано в доках
https://docs.godotengine.org/en/stable/tutorials/3d/lights_and_shadows.html
а в мобилках это все выкидывается нафик и рисуется просто декаль кружока, такие дела
414 937741
>>37668

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


А если в игре мечты предполагается динамическая смена дня и ночи? Запечение не покатит.
415 937746
>>37700
>>37694
Так, годаны, погодите.
Обесните мне в чём я неправ: Ящитаю, в 2024 нет смысла ебаться с тенями/зеркалами. Задача движка сегодня - предоставить видеокарте с рейтрейсингом, где в сцене источники света и дальше она сама строит тени и отражения.
Соответственно, задача девелопа теней сводится к простому алгоритму:
1. Берём в руки си++ и пишем свой проприетарный модуль-адаптер к ртх видюхи (либо нанимаем скиллового челика)
2. Детектируем ртх у игрока.
3. Если ртх не найден, сообщаем игроку, что пусть довольствуется дефолтными говнотенями.
Всё.

А вы пытаетесь какие-то тени идеальные выводить. Смысла в этом ноль. Эпоха сменилась. Алё.
416 937747
>>37741
Собственно на этом месте я пока и бросил делать дин. смену дня и ночи в опенворлде. Скила пока не хватает, изкоробочными решениями не обойтись.
Одна из проблем как раз упомянутые горизонтальные/вертикальные поверхности. Допустим я настроил параметры bias и прочее как мне нравится в сцене, а потом поменял угол солнца, и только тени снова пошли полосами, а значит эти параметры надо тоже менять динамически для объектов, может быть даже для каждого часа времени.
А еще, емнип в 3-ке, если просто крутить directional light, то шэдоумапа пересчитывается. Поэтому каждый кадр это делать тяжеловато становится для фпс. Возможно там надо делать что-то с интерполяцией, посчитав тень для двух углов солнца. Но вот на такое скила у меня не хватает.
417 937749
>>37747
Не дрочи на графон. В игре главное геймплей. Что толку от твоих теней, если в игре скучно?
418 937750
>>37749
Не угадал. Важен И геймплей, И графон, и много чего еще.
419 937755
>>37746

>Ящитаю, в 2024


Лет через 10 это будет актуально. Прогресс, когда он зависит от железа, двигается довольно медленно.
420 937757
>>37747
>>37700
>>37668
https://twitter.com/Paw_Rescuers/status/1757359069273141310

Меня вот эти интересуют. У них древний телефон и глес2, но при этом вполне себе графон на 60 фпс, динамичное освещение, смена дня и ночи, вся хуйня. Они обещали запостить как они этого добились, но так ничего и не запостили, только хайпанули. Пидоры.
421 937758
>>37757
Магия мультитрединга.
422 937760
>>37757
Тень попадает в кашу из травы - так что там никакая четкость не нужна. В отличии от скрина выше, где идеально ровная гладкая стена.
1611044308178.png500 Кб, 981x851
423 937761
424 937762
>>37757

>древний телефон


8 ядерный флагман, хех. Чуть чуть быстрее моего Xiaomi того же года, а у меня все летает. Так что не очень показательно, не днищефон.
425 937764
>>37762
У меня на телефоне в 2 раза мощнее динамичное освещение дает результаты в 2 раза хуже, как я ни пытался. Тоже на тройке.
426 937767
>>37764
У меня видос мыльный в этом месте так что не могу сказать что там происходит.
Может дело в том что показан маленький кусочек мира? Ну то есть попробуй применить совет выше и просто ограничь directional light max range
God rays и дождь там просто 2д (брызги прямо на дереве спавнятся, не за ним), но с пересчетом проекции.
427 937773
>>37761
что-то слишком заумно написано, многа букаф, матиматика какая-то, но картинки прикольные, промотал всю статью
428 937777
>>37773
программисты-не-нужны, ты что ли?
16595197807300.png1,9 Мб, 1093x1376
429 937812
Как в годот 4 шейдере получить степень затенения?
430 937823
>>37812
Я тут порылся похоже такой возможности вообще нету
431 937825
>>37812
>>37823
Маской.
432 937826
>>37823
>>37812
Маской альфаканала. Как и в любом другом шейдере.
433 937833
>>37825
>>37826
Можно пример для spatial?
434 937837
>>37825
>>37826
Вот я хочу сделать резкое стилизованное затемнение шейдерной травы для plane. Т.е что бы спрайт травы не частично затемнялся от тени, а целиком создавая резкий переход. Насколько я понимаю мне надо получить в точке с травой на plane с шейдером количество тени, и покрасить этой тенью весь спрайт травы. Но я что то нихуя не пойму где тут получить это тенивое значение. Нашёл только какие то обсуждения годовой давности на забугорном форуме но там пишут, что без ковыряния в исходниках такой возможности нету. https://www.reddit.com/r/godot/comments/11ma6if/is_there_any_way_to_access_the_directional_shadow/
435 937842
Как еще можно оптимизировать 3д омнилайты? Тени выключены, запечение не подходит, настройки проекта снижены, слои выставлены.
436 937843
>>37842
Была мысль прикрепить к ним VisibilityEnabler, но подозреваю они и так скрываться должны когда находятся вне видимости.
1619398466717.jpg11 Кб, 300x168
437 937849
>>37842
Какой рендер? Подозреваю мобильный? В любом случае, твоя цель - минимизировать кол-во пар свет-материал. То есть:
ограничить радиус света, чтобы свет светил на меньшее кол-во объектов, (соответственно возможно имеет смысл разбить большие объекты на мелкие тайлы, но тут не 100% уверен).
ограничить чтобы на один объект светило как можно меньше источников, в идеале только 1. В каких-то режимах рендера, каждый свет это отдельный проход, поэтому на мобилке вообще хардкод лимит 8.
Уменьшить кол-во материалов в объекте, а то бывает даже в лоуполи нагородят десятки материалов, когда достаточно одного-двух. По возможности не связываться с полупрозрачностью, особенно многослойной (стакан на фоне бутылок на фоне окна). Обычная прозрачность (есть/нет), вроде, норм, поэтому иногда заменяют тени или прозрачность на дизеринг (в геншине видел).
Если ты делаешь траву как выше, копай в сторону Multimesh Instance. Или вообще попробуй для начала готовый аддон https://github.com/HungryProton/scatter там есть готовый пример.
438 937850
>>37837

>Насколько я понимаю мне надо получить в точке с травой на plane с шейдером количество тени, и покрасить этой тенью весь спрайт травы.


Думаю, это можно получить или рисуя в текстуру и проверяя результат, или пуская рейкасты, на проверку между листом и источником света, для конкретного листка. Изнутри шейдера не могу придумать, как это может работать хорошо (если только в вершинном это сначала как то определить)
439 937853
>>37849
Хорошие советы, спасибо. Поделаю их.
Сейчас пытаюсь нагородить альтернативу с помощью HDR в тройке, оставив только 1 реальный омнилайт, остальные заменив объектами с эмиссией.
440 937858
>>37853
HDR вроде отжирает долю перформанса, и его нет в GLES2. Ну и с эмиссией там будет такой момент, что аура свечения у emission будет одинаковая и индивидуально настроить тут не придумали, см. >>875941 →
1679937146173.png650 Кб, 486x942
441 937859
>>37853
Еще из экстремальных приемов фары из гта5. То ли 3д спрайты, то ли как то с буфером глубины разбираться.
442 937861
>>37858

>HDR вроде отжирает долю перформанса


Да, сразу на треть упало, но по моим тестам это пока лучше чем омнилайты. Тут еще плюс в том, что глоу-объектов я могу навалить сколько угодно, и фпс будет почти одинаковый что при 1, что при 300 объектов. А каждый дополнительный омнилайт больно кусает за фпс. Ты прикинь какие красивые уровни можно запилить, имея 300 небольших глоу объектов? Да я ща Blackreach из скайрима!

>Если менять Power в emission, меняется цвет свечения, но радиус остается тем же.


Пикрилы - только energy поменял, с 16 до 2. Радиус уменьшился. Думаю у тебя была проблема в настройках WorldEnvironment -> Glow -> Levels. Я все 7 включил.
443 937862
>>37861
Видимо проглядел эту настройку. Ну в любом случае подозрительно, надо посмотреть как будет в динамике скакать между ними.
444 937863
>>37861
А не знает ли кто-нибудь способа скрыть меш, оставив глоу от нее?
445 937872
>>37761

>Однако, через время мы осознали, что взяли слишком жирный кусок и поняли, что нам стало тяжело и неинтересно. Мы увязли в этом проекте, и он стал напоминать вторую работу, просить очень много времени и приносить минимум веселья. Поэтому мы решили не продолжать. Вместо этого мы стали делать другую игру,


Лол. Сделали самую маленькую (пусть даже и сложную) часть, а как дошло до всей остальной игры - забили. Ай да разрабы.
446 937873
>>37872
Я до туда вообще не дочитал...
Впрочем, тут в разделе 99% так поступает.
447 937922
>>31045 (OP)
Подскажите как провода сделать, я могу же сделать кабеля ЛЭП и чтоб таскать их болванчиком по сианции в 3D?
448 937923
>>37922
В 2д есть лайн2д. В 3д видел аналогичные плагины.
449 937927
>>37923
Не могу найти эти плагины
450 937929
>>37927
Может это ноды?
451 937930
>>37927
https://github.com/RedefineGamedev/Line3D
https://github.com/ApocalypticPhosphorus/Godot-3D-Line-Renderer

Не знаю правда работают ли они в годот 4. А вот тут люди шейдерами делают: https://github.com/godotengine/godot-proposals/issues/6151
452 937931
>>37922
Сейчас подумал что можно сделать с помощью скелетон3д. Если надо по станции таскать, то вероятно тебе нужна еще и физика, а не просто графика. Чел тут похожее делает - https://www.youtube.com/watch?v=0AR7RqQ_QzU
453 937934
>>37930
>>37931
Спасибо
454 937938
Обнаружил что в ноды скрипты можно _встраивать_, без создания отдельного файла-скрипта. Как удобно для создания маленьких костылей.
455 937941
>>37938
звучит, как игрушка дьявола, лучше изначально не трогать
456 937943
>>37941
Ну я разок, от одного раза хуже не будет.
457 937945
>>37938
А еще можно унаследоваться от майнлупа и подсунуть этот скрипт майнлупу (дефереддом подсовывать). И будет у тебя майнлуп со своими дополнительными методами.
Только в четвёрке с допиленными до ума статиками это уже не нужно.
458 937946
Парни, я как всегда забрёл в пучину деталей, хотя даже движок ещё не скачал и меня волнует совершенно левый вопрос, но я жить не могу споукойно, пока не докопаюсь до сути. Короче, узнал тут про draw call'ы, и что типа если текстурки находятся на разных "слоях", типа на 3 слоях 2 текстуры: 1 2 1, то будет 3 дк, а не 2. Как это решается, если нужно расположить вот так вот слоями и с наложением?
460 937948
>>37947
при чём тут движкосрач, даже в доке годота есть кусок на эту тему, но я не понял написанного, там типа предлагается размещать как-то последовательно текстуры, тогда можно будет рендерить как 1 1 2, но момент с наложением я не понял
461 937950
>>37947
А я тоже не понял почему репорт, обычный технический вопрос. С другой стороны, его вопрос я тоже не понял, лол.
463 937961
>>37938
На практике бывает - хочу скопировать кусок кода из прошлого проекта. Ну в общем копаться, листать в блокноте tscn которые бывают мегабайтные, с немного съехавшим форматированием - такое себе. Поиск по файлам тоже дольше. Один раз искал в какой папке положил - вот скрипты одной системы, (контроллер персонажа к примеру), вот другой, а нужных нет. Оказалось тоже в сцене был.
464 937963
>>37951
По описанию звучит так, что движок при батчинге занимается этим сам, и тебе ничего переставлять не нужно. Или ты про то, как это отключить? Есть проходы (shader next pass), есть Material Overlay.
Но они и нужны когда тебе надо сначала что-то нарисовать, а потом либо постобработать, либо поверх полупрозрачный эффект накинуть (типа силового поля). А в таких случаях это должно быть гарантировано после. Нет никакого смысла покрывать один материал другим непрозрачным - тогда первый вообще не был нужен.
Переупорядочивание относится только к непрозрачным объектам, скорее всего, а благодаря буферу глубины, неважно в каком порядке они рисуются.
465 937966
>>37963
да я в целом про оптимизацию, типа как это происходит и зачем об этом пишут, если это делается сорт оф на автомате
466 937968
>>37966
Чтобы на словах объяснить, как работает движок, и что именно включает эта опция.
467 937969
>>37968
Пон, бюлагодарю.
468 938013
Для сервака придется учить си шарп,типа 1 язык и для клиента и сервера?
469 938021
>>38013
любой серверный язык программирования, но вроде в годоте можно делать локалку, типа один игрок сервер, другие клиенты, в таком случае и гдскрипт будет работать наверно
470 938023
>>38013
Все на гдскрипте хуячится.
471 938033
Годаны, посоветуйте годной инфы по ИИ.
Игра - по типу Катана Зеро. Двумерная вид сбоку, у врагов есть огнестрел. Пытаюсь понять, какие алгоритмы существуют, чтобы в подобных играх выстраивать пути, но все материалы по 2д фокусируются на виде сверху.
472 938068
>>38033

>все материалы по 2д фокусируются на виде сверху



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

Беглый поиск конкретно для годо приводит, например, к такому видосу - чел рассказывает про инструменты в самом движке и как это работает (на инглише офк, кто тебе на русском чето объяснять будет)
https://www.youtube.com/watch?v=LKyGdiHzIk8
473 938070
Аноны, я новичок в годоте, можете подсказать? Есть state machine игрока, там список действий и анимации к ним. Допустим, я хочу, чтобы игрок мог бить во время прыжка, но первый кадр атаки вызывается в прыжке, а остальные уже при приземлении. Как это исправить? Сорян за тупой вопрос, просто не понимаю
474 938073
>>38070
Покажи код
475 938074
>>38068

> (на инглише офк, кто тебе на русском чето объяснять будет)


Яндекс браузер со встроенной нейроозвучкой видосов.
476 938075
>>38070

> Сорян за тупой вопрос, просто не понимаю


Вопрос не тупой и описан в статье о стейтмащинах (выше по треду).
Суть в том, что для движения и для стрельбы нужны две стейт-машины.
Нельзя мешать в кучу то, что должно быть одновременно.
Поэтому ты заводишь вторую стейтмашину для стрельбы, вырезаешь из первой всё, что связано со стрельбой и настраиваешь свою логику так, чтобы стейт-машина ходьбы управлялась WASD, а стейт-машина стрельбы управлялась ЛКМ.

Самое интересное начнётся с анимациями. Потому что в анимациях нужно как-то замиксовать несколько стейтов из разных стейт-машин. Как правило это решается через ограничения по скелету.
477 938076
>>38075
Окей, спасибо, теперь понял.

>Как правило это решается через ограничения по скелету.


А если скелета нет?
478 938079
>>38076

> А если скелета нет?


Тогда подразумевается, двадэ на спрайтщитах? Тогда нужно делать комбинированный узел персонажа из двух и более спрайтов, каждый из которых контролируется своей стейт-машиной.
Например, одна часть - туловище с ногами, контролируется ФСМ движения, вторая - руки и голова, контролируется ФСМ стрельбы.
479 938080
>>38079
Я не он, но у меня например 3д с простейшей не-скелетной анимацией, и пока я их проигрываю последовательно, "прыгнуть", "покрутиться". Сделано на AnimationPlayer, где я тупо меняю rotation_y и origin_y. Если бы мне нужно было их замиксовать, как бы тогда эта проблема решалась?
480 938083
>>38074
Зонд майора не нужен, этоь сервис отдельно выдрали как расширение
481 938086
>>38083
Для мозилы есть? У меня мозила - основной звездолёт. Приходится я.хоромог для переводов держать.
482 938088
>>38086
У меня работает фаерфокс + виолентманки + версия клаудфлары https://github.com/ilyhalight/voice-over-translation
483 938093
>>37943

a few hours later...

Анонсы, я встроил ноду без отдельного файла-скрипта, брат умер, комп стал сверхновой, где найти деньги на новый комп и пересадку сгоревшей кожи?
484 938097
>>38068

>на инглише офк, кто тебе на русском чето объяснять будет


Спасибо за заботу, братюнь, как-нибудь пойму.
В целом видос кое-что прояснил. По крайней мере, указал направление, куда копать.
485 938119
>>38088
Спасибо! Добра тебе и успехов! Братишка!
486 938120
>>38033
Вот тебе еще пища для ума
path finding in platform game
https://godotengine.org/asset-library/asset/968
https://github.com/smix8/Godot_3D_Navigation_Jump_Links

Я так понимаю идея в том что навигация - это граф, соответственно можно делать все то же самое что обычно. Возможно пометив (даже автоматически) точки где спрыгивать-запрыгивать.
image.png276 Кб, 2665x1289
487 938176
Вот вам тоже пища для ума.
488 938178
>>38176
А теперь тож самое, только чтоб все это дело ещё заранее перед тестами прогонялось один раз.
489 938180
>>38176
59мс на 10кк атомарных операций не такая уж и разница
490 938185
>>38178
Нет ты. Я это вообще с реддита принес.

Есть другое, более подробное: https://www.beep.blog/2024-02-14-gdscript-typing/
491 938188
>>38120

>ссыль №1


О! А я ведь искал этот аддон и не нашёл. А оказывается, он просто для тройки был. Жаль. Ну хоть исходники почитаю.

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

Осталось блочные комментари добавить для полного счастья. Ну типа --[[ такого --]] или / такого /. Или, для соблюдения стиля, как-нибудь |# вот так #|
492 938190
>>38188

>блочные комментари


Я """ использую.
493 938256
>>38188

> Осталось блочные комментари добавить для полного счастья.


Выделяешь блок. Нажимаешь Ctl+K
494 938258
>>38188

>сценарии для всяких комплексных процедур, которые так и хочется разбить на части и выполнять не то что в цикле, а по чуть-чуть в _процессе.


Звучит как корутины. В оф доках не нашел, но как понимаю их можно делать на yield

>for f in arr:


>[Callable]


Могут быть накладные расходы, надо тестить.
495 938265
Вопрос по логике генерации персонажей.

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

Пока придумал такую схему, я просто добавляю к массиву ещё x1 до вида y:[x1,x2,x1] да шанс 77% но смысл я думаю понятен
496 938268
>>38265
Для такого точно есть и готовые решения и туториалы.
В целом это грамотнее делать словарем, т.е. { x1: 15, x2: 75 }
image.png15 Кб, 302x475
497 938275
Понимает кто-нибудь как работает raw формат цветов в годоте? Вот тут я бы ожидал что цвет будет желтым, но на практике он белый. В документации ничего найти не получилось.
498 938278
>>38275
Похоже на баг. RAW явно отражает 0 ... 255 в 0 ... 1,0.
Т.е. поменяй на 1, 1, 0, 1.
Либо это для поддержки HDR сделано, но в любом случае интерфейс неудачный.
499 938279
>>38268
Для гскрипта я не нашел решений хотя особо и не искал, плюс хочется сделать +- самому, чтобы понять принцип работы и нормально встроить в уже готовый json с массивами.

Количество в словаре изначально неизвестно, поэтому вместо % я думаю лучше использовать коэффициент, условно 1
Допустим словарь {x1: 1, x2: 3}. Я беру и рассчитываю массив для генерации, используюя значения из словаря, получится [x1,x2,x2,x2] и рандомлю одно значение из массива. Вполне себе работает. Но если я захочу сделать значение 0,5 или 3,5 то как тогда?
500 938281
>>38279
Видел такой вариант (сам им буду пользоваться) - складываешь все веса (1+2+2+2+0.5+3.5), делаешь рандом от этого (11), и в цикле проверяешь. roll < 1? roll < 1+2? roll < 1+2+2?
501 938282
>>38279
Догадался до очевидного решения взять тогда коэффициент по стандарту не за 1, а за 100. Какие подводные кроме огромного конечного массива для генерации, насколько тяжело будет компу условно с 10000 элементами в массиве?
502 938283
>>38278
Для HDR, да. Raw можно поднимать выше 1, это работает как запланировано, чем выше значение тем заметней HDR эффект. Я просто не могу понять как в raw-формате указать конкретный цвет при условии значений выше единички. Я могу конечно руками подобрать, на глаз, но это такое себе.
503 938285
>>38283
Ну попробуй выставить нужный цвет мышкой (получится какой-то 0.96, 0, 0.77), а потом умножить на коэффициент, прямо в окошке инспектора напиши *100
504 938286
>>38281
Что то не понял, как это работает
505 938287
>>38256
Это другое. Блочными же можно закомментить даже часть строки.
К тому же 4.2 расставляет эти # не в самом начале строки, как это делала тройка, а после табов. И пробел не ставит. Некрасиво.
1628439847167.png123 Кб, 1575x864
506 938289
>>38286
Некогда особо расписывать. Ну у тебя рандом число может быть float 0..11.0 (сумма всех твоих весов). Значит оно указывает на какой-то диапазон. Диапазон считаешь от нуля. Если не принадлежит первому диапазону, то искать в следующих, если принадлежит, вернуть предмет. Цикл может накапливать сумму весов, не обязательно каждый раз всю пересчитывать, просто прибавлять вес текущего проверяемого предмета.
507 938291
>>38289
Теперь понял, неплохой способ, спасибо
508 938367
Есть куча спрайтов. Все разного размера. От крохотных (например, 51х51) до довольно больших (что-нибудь типа 257х368). Хранить их отдельными картинками не комильфо, лучше одним атласом, говорят, это уменьшает количество дравколлов. Ок, собрал все в один файл, он получился даже не слишком гигантский.
Дальше надо придумать, как их размещать. Ну, очевидный тайлмап? Увы нет, тайлмапа хочет плитки одинакового размера, а это привести к одинаковому размеру нереально. Спрайтами используя регионы? Тогда придётся создать дохуя сцен под каждый предмет, чтобы каждый раз не настраивать регион и оффсет.
Я в замешательстве. Годаны, посоветуйте.
509 938370
>>38367
Я ее особо в этом шарю, но как вариант можно объединить спрайты только одного размера, и спокойно использовать тайлмап. Тоесть будет не один атлас как сейчас, а условно 10 или сколько у тебя там разных размеров.
510 938376
>>38367

> тайлмапа хочет плитки одинакового размера


Может использовать несколько плиток на один большой тайл?
511 938421
Петруха вышел из анабиоза!
https://www.youtube.com/watch?v=aq2Y6yrxfG4
512 938426
Аноны, направьте в нужное русло. Хочу сделать зелье хп, игрок их может подбирать/покупать. Зелья должны где-то храниться и запоминаться. Я нихуя не понимаю, подскажите статейку или гайд, по схожей теме мейби
513 938433
>>38426
А вот собственно, на канале из видоса постом выше, погляди старые видосы, он там и за подбираемые предметы поясняет в том числе. Делай скидку на трёшку, подхватывай суть и делай на четвёрке. А если ты на трёшке еще сидишь, так вообще легко будет.
514 938434
>>38433
Окей, чекну
515 938442
>>38426

> направьте в нужное русло


> Хочу сделать %предмет_нейм% игрок их может подбирать/покупать.


> должны где-то храниться и запоминаться


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

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

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

Воот как-то так.
515 938442
>>38426

> направьте в нужное русло


> Хочу сделать %предмет_нейм% игрок их может подбирать/покупать.


> должны где-то храниться и запоминаться


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

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

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

Воот как-то так.
516 938456
>>38442
Огромное спасибо, анон.
517 938463
>>38442
Сделаешь мне игру? Хочу чтобы эльфы набегали.
518 938473
>>38463
Зарплату 20к в месяц плати.
# OP 519 938480
Ой, блять, а у нас тут бамплимит! А что вы молчите? Предлагайте контент для переката!
521 938484
>>38483

>2


Бицуха больше чем у половины ИТТ
1708697149284.webp73 Кб, 1000x1000
# OP 522 938485
?
image.png254 Кб, 493x421
523 938488
524 938490
>>38488
Это законно ваще?
1708698444429.gif1,8 Мб, 400x225
ПЕРЕКАТ # OP 525 938494
526 942126
print('Привет')
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее