Godot #49 # OP 949247 В конец треда | Веб
Добро пожаловать в тред любви, взаимопомощи и христова воскресенья!
Шапка: https://hipolink.me/godothread
Предыдущий: >>946416 (OP)
Архивный: >>942134 (OP)
2 949250
Перекатываюсь с тупым вопросом.
Аноны, в Disco Elysium и PoE от обсидиан, да и во многих других играх, используют в качества задника просто огромную пикчу разрезанную на куски. Как мне это реализовать в годо? Я гуглил, но нихуя не нашёл.
3 949252
Какая страшная Гондесса. Вряд ли в тред с таким страшным пиком будут заходить.
4 949253
>>49250
Погугли cubemap, вдруг что дельное нагуглится?
5 949254
>>49250
Всмысле реализовать? Это буквально тупо добавить спрайт в сцену. О какой реализации идет речь.
6 949257
>>49250
Руками. Берешь и режешь и вставляет спрайтами как тебе нужно, чтобы y-sort их учитывал. Довольно много муторной ручной и скучной работы. Поэтому теперь я предпочитаю 3д.
image.png332 Кб, 921x732
7 949258
8 949262
>>49259 (Del)
Чего рвонькаешь? В чем проблема? Я сейчас пихнул в сцену спрайт размером 24000x16000, фпс (без всинка) был 3200, стал 3150. Ты чет видишь проблемы там, где их нет. И хамишь еще, хоть я и не тот анон, которому ты отвечаешь.
9 949268
>>49266 (Del)
Режут пикчу чтобы y-sort работал >>49257

Я делал игру с под 400 y-sortнутых и вручную нарезанных спрайтов на видимый экран, плюс шейдеры-партикли и прочее. Не испытывал особых проблем производительности. Еще и на мобилки ее выкатил, представляешь.

>если не понимаешь, о чём речь.


Ну расскажи нам, о великий сенсей, как делать нормальные игры с помощью 2д спрайтов. Пока ты тут только воняешь.
10 949274
>>49266 (Del)

> иначе бы никто не ебался и не резал пикчу на сотни частей.


Чел, сейчас не 90-е.
11 949278
>>49270 (Del)
Уже побежал деанониться ради какой-то чмони на аиб, которая даже аргументы привести не в состоянии, только апеллирует к своему, якобы, знанию, которое старательно скрывает.
12 949281
Как двигать персонажа? В Disco Elysium и PoE от обсидиан, да и во многих других играх, используются персонажи, которые передвигаются. Но очевидно что если постоянно двигать персонажей, то о производительности никакой долбоеб не расскажет. Как мне это реализовать в годо? Я гуглил, но нихуя не нашёл.
13 949284
>>49250
В годоте не сильно шарю, перекатился с юньки, но это по логике никак не должно напрягать.
На экране отрисовывается фиксированное кол-во текстуры, остальное в памяти сидит ничего не нагружает и потребляет от силы пару мегабайт.
Теоретически если делать картинки 100000х100000 не разрезая тогда могут быть проблемы.
У меня сцены с десятками миллионов полигонов держали спокойно 150+ фпс.
14 949285
>>49284

>С юньки


ХАха годот тебя еще выебет, жди.
15 949286
>>49285
Да поебать, делаю для души.
16 949287
>>49286
коли с юньки катился, на сишарпе щас работаешь?
Видео-05-05-2024-112246.webm30,8 Мб, webm,
1280x642, 1:48
17 949288
>>49247 (OP)
О, мою шебемку закрепили, тогда вот новая.

Сейчас раскидываю торговцев по карте, и буду парится с диалоговыми окнами. Затем всякие мелкие активности для первой локи сделаю
18 949289
>>49287
На гдскрипте.
19 949290
>>49289
а, ну тогда беру свои слова назад. Так годот тебе возможно даже понравиться, хотя рофлянки кидать один хуй будет
20 949291
>>49280 (Del)
Ты тут утверждаешь что ничего не работает, все не так, и производительность должна падать. При этом не то что пруфов, а аргументов не приводишь. Интересно, как же тогда другие игры реализуют подобное? Магией? Заметь, ты даже предположений не строишь. И о чем с тобой разговаривать? Ты пустой просто.
21 949296
Токсичность не разводим.
Если отвечать на вопрос, то встроенного механизма, наверное, нет
Задача сводится к назрезанию картинки автоматически (например tool script) и стримингом. И то и другое пишется довольно просто или берется аддон (zone loading, какой нибудь sprite cropper) либо картинка нарезается imagemagic, кускам даются названия по соответствующему тайлу x, y. В общем все автоматизируется или делается в полуавтоматическом режиме.
22 949299
>>49297 (Del)
Вот и сгрыни обратно в свой загон блевик, сиди там дальше про пропуки рассказывай.
23 949304
И снова нубский вопрос
Есть плеерконтроллер

func interacted_objects_input_event(viewport, event, shape_idx, interationObjects):
if Input.is_action_just_pressed("left_click") and (player.current_state == "Idle" or player.current_state == "Move"):
player.is_going_to_interact = true
player.interactible_object = interationObjects.get_child(shape_idx)
player.click_position = player.get_global_mouse_position()
get_tree().call_group("Player","change_to","Move")

func _input(event):
if Input.is_action_just_pressed("left_click") and (player.current_state == "Idle" or player.current_state == "Move"):
player.is_going_to_interact = false
player.click_position = player.get_global_mouse_position()
get_tree().call_group("Player","change_to","Move")

if Input.is_action_just_pressed("left_click") and (player.current_state == "Dialogue"):
dialogue_manager.get_next_line()

_input для всего подряд, interacted_objects_input_event для клика по активному объекту, сейчас при интеракте срабатывает диалог

проблема в том, что при клике по активному объекуту при нахождении в диалогое срабатывают оба инпута, первый заканчивает диалог, диалогменеджер переводит персонажа в Idle, а второй уже думает что персонаж снова хочет взаимодействовать, то есть диалог прекращается и сразу начинается новый

какой бестпрактис это починить?
24 949305
>>49297 (Del)
Да-да, я тебя услышал, ты зашел потролить своей тупостью. Пиздуй.
25 949310
>>49304
Документация вроде как говорит, что два инпута не могут одновременно обрабатываться, но может дело в том, что _input в контроллере, а _on_input_event, который вызывает interacted_objects_input_event в ноде с активными объектами
26 949311
>>49310

>два инпута не могут одновременно обрабатываться


всмысле один импут два раза
27 949318
>>49304
Имхо, бестпраксис это не смешивать два подхода, пока это возможно. Ты или используешь ооп input_event(viewport, shape_idx), или возню с get_global_mouse_position() и action_pressed("left_click").
28 949325
Два дня трахался с рутмоушеном, но персонаж все равно скользит, особенно заметно на медленных анимациях - вперед+лево/право и назад+лево/право. Плюс какое-то непонятное дергание в моменте когда последний кадр анимации должен переходить в первый кадр в цикле. Думал что дело в однотипности первого/последнего кадров, но нет, их удаление не решает проблему.

Намоделил пару стульев на примере своих кухонных, между раундами затраха с рутмоушеном. Еще сотня моделей впереди.
29 949329
>>49325
А персонажа сам моделил? Попка сочная, но глаза надо исправлять!
30 949333
>>49318
Ну вот я сделал два коллижена - коллижен локации и коллижен объекта, но они пересекаются же и все равно по клику по объекту два _on_input_event происходит.
31 949334
>>49329
Та нет, взял со скетчфаба, но уже думаю следовало брать лоу-польную, больно уж долго ждать ре-импорта при малейших изменениях.
32 949341
Бля, анон который посоветовал мне в прошлом треде плагин CSG to Mesh - спасибо, это просто 10 из 10 воркфлоу, я теперь половину моделек сразу в годоте херачу.
33 949352
>>49325

> трахался с рутмоушеном, но персонаж все равно скользит


Ты что-то делаешь неправильно. Либо из контроллера не вырезаны фрагменты обычного моушена и добавляются к рутмоушену. Либо неправильно настроены масштабы. Абстрактные юниты расстояния в анимации должны быть пиксель в пиксель равны абстрактным юнитам расстояния в движке.
34 949353
>>49341
Пожалуйста! Для этого мы здесь.
35 949354
>>49325
Проверь а от какой кости рутмоушн считается. Там были какие то нюансы, от таза или еще откуда.
36 949357
>>49354
Бля, точно!
>>49325
Анон, анимации с миксамо отсчитываются от бедра, а годот считает от стоп, если я правильно понял. Там есть какой-то плагин к блендеру, который ретаргетит рут. Я видел это в каком-то из уроков по рутмоушенд для годота. Щас поищу.
0026-0768.mp46,4 Мб, mp4,
1024x768, 0:24
37 949359
>>49325

>Плюс какое-то непонятное дергание в моменте когда последний кадр анимации должен переходить в первый кадр в цикле.



Разобрался, проблема старая
https://github.com/godotengine/godot/issues/65513
В текущей версии завезли алочку "Trim" в разделе импорта анимаций, теперь гладко. Не идеально, но приемлемо.

>>49352

>Ты что-то делаешь неправильно.


>>49354

> Там были какие то нюансы, от таза или еще откуда.



Я беру анимации с Mixamo, но он не генерит root-кость для рутмоушена. Корневую кость генерирую аддоном для блендера godot mixamo converter, но этот аддон берет движение от кости таза, что приводит к излишним движениям. Видимо все таки видимо процесс не автоматизировать и придется ограничивать движение корня в каждой анимации дополнительно вручную.
38 949360
>>49359

> аддоном для блендера godot mixamo converter, но этот аддон берет движение от кости таза


О том и речь, там аддон надо правильно настроить, наверное.
Вот тут я смотрел
https://www.youtube.com/watch?v=EmQBLxxPV3E
39 949361
>>49359
Нихуя не приемлемо. Тебе надо рут выставить от грунта, от стопы ноги. Сам подумай. Это сродни инверсной кинематике. Тебе надо рутмоушеном полностью смоделировать зацепление с грунтом. Для этого рут-кость должна быть на нулевом расстоянии от грунта, а при боковых анимациях еще и в точке пересечения между грунтом и радиусом поворота.
Screenshot9.png161 Кб, 890x539
40 949368
>>49360
Какая-то фигня. Инициализировал персонажа, нажал создание корневой кости, он мне ее в метре от персонажа над полом воткнул.

>>49361

>Нихуя не приемлемо.


Речь была про дергание из-за кривой склейки конца и начала в зацикленной анимации. А рутмоушен придется фиксить.
41 949377
Ля чо нашёл https://www.youtube.com/watch?v=eF5J5wXjS2Y
Персонажи за минуты. Без ебли. Без скилла. Бесплатно! Без СМС. Но скорее всего с регистрацией.
42 949380
>>49377
Cascadeur еще глянь, Майк на своем канале тоже его показывал.
43 949381
>>49380
Двачую каскадер. Он недавно стал платным, но если был установлен бесплатный, там дарят ключик на два года.
Миксамо конечно хорошо, но со временем понимаешь что там особо постпроцессинга не делали. Так что первый кадр РАЗНЫХ мувсетов вовсе не обязан совпадать.
44 949382
>>49381
Миксамо какой-то заброшенный. Адоб его купил и забил нахуй.
45 949397
>>49380

> Cascadeur еще глянь


Нихуясе какая годнота!
>>49381

> Он недавно стал платным


Фу, говно.
image.png235 Кб, 571x645
46 949402
>>49397
>>49381

>Он недавно стал платным


Это значит что его крякнут и он снова станет бесплатным. И если проверить рутрекер, то так и есть.
47 949407
>>49402
Да-да, а потом, когда ты заработаешь свой первый миллион на стиме, тебя вызовут в суд и отожмут всё заработанное, ещё и должен останешься.
48 949409
>>49407

> кок-пок, нидакажут!


Да конечно, не докажут. Этот софт генерирует анимации, прогоняя твой ключевые фреймы через физический движок. Кто знает, что ещё там стеганографией запрятано?

> кудах-тах, да ты хотя бы рубль заработай, о миллионе он говорит


Да, с мыслью о зарабатывании рубля рубль и заработаешь. Вот так мотивация и работает.
49 949410
>>49407
>>49409
Будем честны, 98% не то что рубль не заработают, но и игру не релизнут. Тем более в стиме. Тем более с санкциями.
1714937564252.jpg8 Кб, 200x191
50 949412
>>49410
Да.
51 949413
Собираюсь заказать для своей игры графон пиксельный. Какой договор заключать, чтобы потом не обнаружить своих персонажей на итч ио? Был у кого опыт?
52 949422
>>49413
посади художника на цепь, и больше не спускай
53 949426
>>49413
Это тебе в /law/
54 949435
Бля, из-за всей этой ai-шной хуйни трясусь, что скоро не только художников, аниматоров, сценаристов, но и разработчиков/геймдизайнеров полностью заменят иишкой. Ебанной механическое пианино наяву. Хоть одну бы игру выпустить успеть, до наступления дивного нового мира...
55 949440
>>49435
Все трясутся и ты трясись. Там уже ии-сгенерированные игры проскакивали: https://www.youtube.com/watch?v=-ZSVkjukC1U
image.png648 Кб, 1123x1280
56 949452
Давайте, делайте игры пока вас AI не сожрал. Раз раз и сделал, раз раз.
image.png1 Кб, 195x56
57 949481
Ура, релизнулся.
Сейчас буду простыню советов накатывать.
58 949490
Первое с чем столкнулся и от чего пригорело, локализация. Переводить нужно абсолютно все и везде, реклама, промо, ингейм калтент, каждый пердеж, даже тот который по факту перевести нельзя, у меня к примеру было сокращение "lvl" до которого доебались, если на ру и ен еще можно локализовать, то как это будет на других языках только носителю известно, так что анон забудь про любые сокращение, либо пишешь слова полностью, либо по возможности вообще не используешь.

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

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

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

Да и все наверное. Это все доебы которые были ко мне, только были они в разных моментах. Чет хуйни насрал бесполезной, думал пополезней будет.

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

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

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

Чтоб оффнуть скроллбары окна, если такой же тупой как и я, открой index.html через блокнот и в самом верху документа в body{} вставь эту строку "overflow: hidden;". Спасибо анону из прошлого треда за этот совет.

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

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

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

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

Да и все наверное. Это все доебы которые были ко мне, только были они в разных моментах. Чет хуйни насрал бесполезной, думал пополезней будет.

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

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

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

Чтоб оффнуть скроллбары окна, если такой же тупой как и я, открой index.html через блокнот и в самом верху документа в body{} вставь эту строку "overflow: hidden;". Спасибо анону из прошлого треда за этот совет.

В целом, документация яндекса полная хуйня и шляпа, пункты описывают только общую картину, поэтому ты считай по минному полю идешь на ощупь, а узнаешь о том что наступил на мину от чмодера.
59 949496
>>49490
Про деньги интересно. Сколько уже налутал?
60 949497
>>49435
Ну вот например будут ИИ, которые просто выплевывают готовые экзешники по промпту, а будут такие, которые сгенерируют тебе проект для движка, в котором ты сам сможешь что-то исправить ручками под свои хотелки. Во втором случае тебе все еще понадобятся навыки разработчика/геймдизайнера.
61 949501
>>49435
Да не трясись. ИИ это кал, не более чем продвинутый гугл. Пока все паникуют, просто учись с помощью него и повышай свой скилл как программиста\художника\разработчика\дисигнера.

Наоборот короче вкидывай как всё это даванет всех, пускай зумеры идут учиться на кого угодно, но не в айтишечку. Только вот ДНО работы ИИ точно даванет, но не профессии богемы.
62 949504
>>49496
Какие деньги, сегодня утром только одобрили. Стату через неделю минимум кину, а с большей вероятностью через две.
63 949507
>>49504
А там не показывают чтоле сразу сколько игра заработала? Там ведь буквально аналог адсенса. Возможно тогда яндекс объябывает и без того нищих разработчиков на рубли.
17130303216060.mp4955 Кб, mp4,
1280x720, 0:04
64 949510
>>49501

>богемы


Проорал с тебя, богема ебаная. За ИИ будущее во всём, запомни.
0070-1871.mp415,3 Мб, mp4,
1024x768, 1:00
65 949513
>>49359
Окей, разобрался, нужно было использовать get_root_motion_rotation_accumulator, иначе вращение ноды не учитывается. Я так до конца и не понял, зачем мне перемножать обратный от этого кватернион на кватернион моего CharacterBody. Потом разберусь, пока работает достаточно хорошо, блендить анимации более качественно буду на модельке ГГ, сейчас Годетта просто для тестов.

Можно начинать накидывать пустые коридоры и комнаты с простыми текстурами (а-ля пол в прикриле). Между делом буду кодить взаимодействие с предметами.

Если есть аннон с нейронкой, нагенерь портреты годетты - нормальный, уставший и ахегао. Для отражения запаса ХЗ в интерфейсе как было на демке с пепегой.
66 949514
>>49510
ИИ ничего кроме как извинятся бесконечно не умеет. Просто возможно ты слабый, раз решения от ИИ воспринимаешь как что-то невероятное.

Зачастую ИИ не может решить банальные задачи с уровнями папок.
image.png4 Кб, 326x181
67 949519
>>49507
Показывает, только я к тому что откуда игроки будут если игра 3 часа как релизнута и находится в очке списка "новое", тут ждать надо, пока что только 1 чел поиграл и с него я получил пикрил.
68 949523
>>49519
Ну норм, прикинь, у тебя не было этой половины копейки, а теперь появилась. Заебись же.
69 949525
>>49481
Маладца, поздравляю.

>>49490
Про локализацию дам совет из вебдева. Там тоже влом локализировать, поэтому удобно взять эмоджи-пак или шрифт и использовать их вместо текста. Например домашняя страничка - домик. Всякие звездочки, денежки, стрелочки, ноты, деревья. Все это без перевода.

https://icons.getbootstrap.com - эти можно по-отдельности в свг-формате скачивать. В третьей игре так делаю.
70 949527
>>49519
я выключил стики у умирающей четыре месяца игры, пусть мимокроки только за запуск и проигрыш получали в лицо фуллскрин рекламу
image3 Кб, 452x111
71 949528
>>49527
отлипло
72 949529
>>49528
а годот игры все таки можно засовывать в яндекс игры?
73 949538
>>49529
я мимокрок, не из годюнити тредов

в чатах говорят можно
74 949539
>>49538
мимокрок, пишет в чате по годоту, не работая в годоте
1000iq
75 949540
>>49529
Всегда можно было.
image617 Кб, 616x831
76 949541
>>49539
торчало при скролле, не мог пройти мимо и не поныть про доходы
77 949624
лана блять, изучу етот ваш годот
вытиран с гамаком, юнити и обоими фазерами за плечами
78 949626
>>49541
Подумал что это капча и уже собирался искать велосипеды.
79 949630
>>49247 (OP)
Приём, запрашиваю взаимопомощь!
Есть скрипт, прикреплённый к Node2D в _ready которого я задаю self.rotation_degrees и self.scale например. Таких нод у меня несколько, и мне надо задать им рандомные значения размера и поворота. Я подумал, что хорошей затеей будет создать не привязанный ни к чему скрипт, который будет мне эти рандомные значения возвращать. Я объявил его
var myscript = ("res:/hui/riddler.gd")
Годот видит скрипт, видит функцию в нем, а пользоваться не дает, говорит
Parser Error: Cannot call non-static function "riddler()" on the class "res://hui/riddler.gd" directly. Make an instance instead.
Ошибка не гуглится, и я так понимаю, что моя затея не работает на уровне концепта, а с ангельским у меня, помогите пзязь :С
80 949631
>>49630
тебе нужен инстанс на сцене (пустой нод2д например) с этим привязанным скриптом
иначе ты пытаешься поюзать нестатический метод, а это харам

я если что вот этот анон >>49624, только приступаю к изучению
81 949633
>>49630
Я бы сделал ноду-компонент, которая ротирует своего родителя по реди.

- ParentNode
-- Rotator

И крепил бы ее ко всем, кого надо проворачивать.
82 949634
>>49630
Синглтон делай.
83 949637
>>49624
А зачем тебе годот?
image.png32 Кб, 1200x1200
84 949638
Этот синий чел мне уже как брат.
image.png2 Кб, 232x108
85 949639
Ну все, 8 рублс получено, можно и удалять игру.
86 949644
>>49637
Я ебанутый захотелось чего-то нового в жизни
87 949645
>>49633
У меня там и так 3 ноды вложены друг в друга для каждого такого элемента, я пытаюсь сохранить рассудок порядок какой-никакой и скрипты хоть немного сократить. А логика с ротатором у меня плюс-минус такая и реализована.

>>49631 >>49634
Т.е. проблема именно в том, что этот скрипт у меня не привязан никуда и так нельзя делать просто потому что?
88 949648
>>49630

>Я объявил его


>var myscript = ("res:/hui/riddler.gd")


Хуйню сделал.
Если уж тебе так хочется сделать ни к чему не прикреплённый скрипт-библиотеку, то тут два варианта:
а) extends Node и объявить его как синглтон;
б) extends Object, прописать ему class_name, а все функции, которые планируешь вызывать извне, сделать static. Обращаться к нему, соответственно, по класснейму.
89 949649
>>49648
Короче синглтоном сделал. Тебе и всем небезразличным - спасибо за помощь.
А вообще это нормальная практика - иметь на сцене пустую ноду, чтобы в нее складывать скрипты для однотипных элементов?
image.png86 Кб, 333x498
90 949650
>>49649
Да. Не все ноды обязаны что-то делать/считать, для организации они тоже хороши. Например посмотри на === ЭТО ===

Отсюда: https://www.reddit.com/r/godot/comments/1clw6jt/concept_for_dark_souls_3_as_a_top_down_rpg/
91 949651
>>49650
Воу... Осознал.
92 949729
Ля чо нашёл сегодня https://godotengine.org/asset-library/asset/2938
Глобальные сигналы без шины (под капотом шина есть, и это сам майнлуп).
В комплекте поставки есть две ноды: источник и приёмник.
Ты раскидываешь источники где надо, переименовываешь их как удобно, и эти имена становятся именами сигналов, которые регистрируются под капотом.
Приёмникам назначаешь в инспекторе имя сигнала который он будет ловить. Это единственный минус - стринг в инспекторе.
Коннектишь встроенный прокси-сигнал приёмника. На источнике вызываешь встроенную прокси-функцию эмит.
Ну и всё.
93 949736
>>49729
Надо учить программирование, а не как только чужие ассеты пиздить

https://en.wikipedia.org/wiki/Publish–subscribe_pattern
https://hasithas.medium.com/introduction-to-message-brokers-c4177d2a9fe3
.png13 Кб, 512x413
94 949737
Зачем этот автобус везет анальную пробку?
95 949738
>>49737
Я вижу два челика смотрящих на указатель
0604-7746.mp432,7 Мб, mp4,
1024x768, 1:59
96 949763
Воткнул тестовые стены размером с однушку. Высота потолков - 2.7 метра, высота модельки Годетты - 1.6 метра. Для игры, видимо, площадь слишком маленькая, придется делать комнаты нереалистично раза в полторы больше, иначе персонажу особо не развернуться, тем более во время боевки.
97 949787
>>49763
Лол, да, масштабы типичного хруща не располагают к такой камере.
98 949788
>>49763

> видимо, площадь слишком маленькая


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

И ещё вопрос по камере. Как у тебя она реализована? А то вижу некоторую дёрганность при переключениях видов. Есть несколько соображений по этому вопросу, но сначала надо знать как именно у тебя щас, чтобы не советовать то, что у тебя уже есть.
Как бы делал я:
1. Камера одна в корне дерева.
2. У камеры есть таргеты, Т1 к которому она следует и Т2 на который смотрит.
3. Камера принимает сигнал смены Т1 и время, за которое должна переместиться к новому Т1 (не сводя взгляда с Т2).
4. На сцене есть Т1-точки, есть area3d - зоны отслеживающие перса. Если перс вошёл - эмит смены таргета на привязанный к зоне. На выход чекается свой счётчик у перса (об этом далее).
5. Так же в некоторых сценах могут быть салазки на основе Path3D по которым таргет Т1 камеры может ездить за персом.
6. Перс всегда Т2 (ну кроме катсцен пожалуй). У перса есть свой таргет Т1 за спиной, перс входя в ту или иную зону увеличивает счётчик зон, выходя уменьшает (как в примере с лестницами ранее в треде). Если счётчик обнулился, перс сам эмитит сигнал смены таргета на свой Т1.
7. Ну и разумеется, если есть глубокие смертельные ямы, то у них на входе тоже расставляются зоны, хватающие камеру и посылающие персу гейм-овер.
Как-то так.
99 949790
>>49788
А ещё можно вещать камеру на босса и заставлять игрока сражаться с боссом от лица босса же. В резиках я такого не упомню, но в олдовых экшонах на дендях-сегах такое встречалось.
100 949863
>>49763

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


Добро пожаловать в основы геймдизайна
101 949886
>>49763
сделай годдету карликом
image.png1,6 Мб, 1159x689
102 949889
>>49886
Годачую. Чиби.
image.png123 Кб, 567x727
103 949890
0372-1479.mp48,7 Мб, mp4,
1024x768, 0:36
104 949906
>>49788

>Как у тебя она реализована?



Примерно как у тебя описано.
1. Каждая комната - Area3D со своей камерой.
2. Area3D регистрирует столкновение с игроком и делает свою камеру активной.
3. Камера нацеливается на игрока (функция LookAt) с задержкой, чтобы движение камеры было плавным.
4. Камера следует за игроком в пределах CollisionShape3D родительского Area3D, сохраняя максимально возможную дистанцию (в случае квартиры, макс. дистанция следования установлена в 100, поэтому камера стоит на месте, в случае улицы, макс. дистанция установлена в 3, поэтому она следует за игроком, пока не достигнет границ CollisionShape3D).
5. Камера прикреплена к потолку CollisionShape3D родительского Area3D.

Каждая такая Area3D имеет свою собственную камеру, это позволяет настраивать каждую камеру отдельно. В моем случае FOV наружней камеры - 37, FOV камер квартиры - 60.

Данную Area3D я обозвал CameraRoomConstraint, описанная тобой рельса тоже понадобится, но буду реализовывать по мере необходимости.

>вижу некоторую дёрганность при переключениях видов.



Это из-за плавного следования за игроком, камера тратит немного времени чтобы нацелится на Годетту при переходе в новую комнату. Сейчас поменял так, чтобы нацеливание камеры в момент перехода в новую комнату было мгновенным.

> С одной стороны, всё заебись.



Базовый референсом был SH1-4. Сейчас посмотрел отрывок с помещением которое мне помнится чрезвычайно маленьким, но оно на самом деле довольно большое (в сравнении с моим)

https://youtu.be/1DS9KI7FUPo?t=1026

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

>>49886
>>49889
>>49890
Согласен поменять только на Slut-Godette в стиле Shadman.
0372-1479.mp48,7 Мб, mp4,
1024x768, 0:36
104 949906
>>49788

>Как у тебя она реализована?



Примерно как у тебя описано.
1. Каждая комната - Area3D со своей камерой.
2. Area3D регистрирует столкновение с игроком и делает свою камеру активной.
3. Камера нацеливается на игрока (функция LookAt) с задержкой, чтобы движение камеры было плавным.
4. Камера следует за игроком в пределах CollisionShape3D родительского Area3D, сохраняя максимально возможную дистанцию (в случае квартиры, макс. дистанция следования установлена в 100, поэтому камера стоит на месте, в случае улицы, макс. дистанция установлена в 3, поэтому она следует за игроком, пока не достигнет границ CollisionShape3D).
5. Камера прикреплена к потолку CollisionShape3D родительского Area3D.

Каждая такая Area3D имеет свою собственную камеру, это позволяет настраивать каждую камеру отдельно. В моем случае FOV наружней камеры - 37, FOV камер квартиры - 60.

Данную Area3D я обозвал CameraRoomConstraint, описанная тобой рельса тоже понадобится, но буду реализовывать по мере необходимости.

>вижу некоторую дёрганность при переключениях видов.



Это из-за плавного следования за игроком, камера тратит немного времени чтобы нацелится на Годетту при переходе в новую комнату. Сейчас поменял так, чтобы нацеливание камеры в момент перехода в новую комнату было мгновенным.

> С одной стороны, всё заебись.



Базовый референсом был SH1-4. Сейчас посмотрел отрывок с помещением которое мне помнится чрезвычайно маленьким, но оно на самом деле довольно большое (в сравнении с моим)

https://youtu.be/1DS9KI7FUPo?t=1026

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

>>49886
>>49889
>>49890
Согласен поменять только на Slut-Godette в стиле Shadman.
105 949910
>>49906
давай не чиби, а шортстак, вот это охуенно
106 949922
>>49910

>шортстак


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

>>49790

> боссом от лица босса же


Вообще, интересная задумка. Может даже дать в процессе игры намеки, на то что ГГ-галлюцинирующий злодей.
107 949929
>>49906

> Согласен поменять только на Slut-Godette в стиле Shadman.


Хуясе! Наш слоняра! Одобряю!

> Сейчас поменял так, чтобы нацеливание камеры в момент перехода в новую комнату было мгновенным.


Если уж оставлять вариант с переключениями камер, то надо перед переключением новую камеру нацелить на игрока. Тогда не должно трясти.
108 949944
>>49929

>Тогда не должно трясти.


Не вижу тряски.
Но переход из комнаты в комнату будет точно переключением.
109 949953
>>49247 (OP)
>>49325
>>49513
>>49763
>>49906
Охуенно, анончик, люблю сайлент хилл и резик
Сам хочу когда-нибудь сделать сайлент хилл
image.png30 Кб, 810x366
110 949958
Делайте игры
111 949988
>>49944

> Не вижу тряски.


Нет, конечно, нет. Там на видосе не тряска, а как бы это выразиться, подворот. Одна камера направлена на север, вторая на запад, при переключении камере нужно несколько кадров, чтобы повернуться на север, и это заметно.
Если бы камера была одна, а переключались бы только гнёзда, к которым она липнет, то она бы более плавно двигалась, ящитаю. Алсо FOV и любые другие параметры у камеры тоже можно менять на лету, в том числе анимировать. Как-то видел как тот же FOV подстраивают при ускорении. Знаменитый эффект.
112 949993
Анончики, сейчас наметился делать открываемую дверь (в 2д) и задумался. Как вообще делают взаимодействие с интерактивными объектами? Я пока вижу так - есть набор объектов - записки, двери, предметы и оружие у которых есть индивидуальные скрипты (дверь открылась, оружие поднялось итд) а у персонажа игрока только Area2D в которой можно активировать предмет. Так что ли?
113 949994
>>49993
Интерактивный предмет предоставляет арею, а перс игрока предоставляет рейкаст в точку куда смотрит игрок. Если рейкаст ловит предмет в зоне предмета, только в этом случае появляется приглашение нажать кнопку Е.
114 949995
>>49993
Ах, в двадэ.
В двадэ ареи у предметов, а ярлычок с буквой Е на персе игрока. Рейкаст уже не нужен (в зависимости от гемплея конечно, может и потребуется).
Перс входит в зону - приглашение появляется. Выходит - исчезает.
115 949998
Как ето понимать? Экспортировал и запустил официальный пример изометрии https://godotengine.org/asset-library/asset/2718 на ноутбучной невидии. Ебаное окошечко 1152х648 с плитками - кулер на видеокарте пидорасит как турбину у самолета.
116 950003
>>49998
Там на каждой свече 4 партикл генератора
117 950006
>>49906
>>49763
Попробуй заценить данный плагин. Говорят, что годнота. Тебе, возможно, с ним проще будет.
https://phantom-camera.dev/
118 950020
>>49993
Area2D может зарегистрировать только выход или вход. Один раз.
А тебе надо что бы оно проверяло находится ли объект сейчас в зоне, или нет.
Сделай переменную меняющуюся при выходе и входе
119 950021
>>50006
Как человек не игравший в сайленты никакие, у меня вопрос, там камера так же поуебщиному просто телепортируется? Без затемнения, без плавного перемещения? У меня от такого голова кружится
120 950025
>>49998

> Как ето понимать?


Как движок для состоятельных парней. Элитный движок.
121 950026
>>50021
Если с затемнением переключать - получится смута. Но мне не выдавали денег из кубышки, чтобы я смуту делал!
Если делать с пролётом, то у зумеров голова кружится.

Тупик. Патовая ситуация.
122 950030
>>50026
будешь в тупую телепортировать??
123 950031
>>50021
От затемнения раз в пять секунд у игрочка все мозги вытекут на десятой минуте. Во всех японских играх времен PS1-2 так. Сайлент, резик, динокризис, ДМЦ.
124 950035
>>50031
И не только в японских. Принц Персии, как пример, там тоже. Хотя реже, чем у японцев. Старый юбисофт мог умеренно применять перемещение камеры. Места где камера лочилась в углу было 3,5 за всю игру.
125 950036
>>50035
Ну да, соул ривер опять же.
126 950037
>>50036
Да если повспоминать их много найдётся.
127 950054
>>50021

>ез затемнения, без плавного перемещения?


Слишком медленно. Если там противник - он тебя уже захуярит, пока ты там плавно затеняешь/перемещаешь камеру.
128 950056
>>50054
Дело сложное! Думоем! Как бы нам сделать-то так, пакрасате?
129 950057
>>49993
У меня так.
Объект - ареа. Персонаж шлёт сигнал. Зашёл в арею - приконнектился; вышел из неё - дисконнектнулся. Есть мгновенно срабатывающие, которые вместо коннекта просто активируются при заходе. Ярлычок рисуют сами интерактивные объекты.
1709249379174312.jpg233 Кб, 944x944
130 950061
>>49284
а чаму перекотился?
чемь юнька не понравилась?
131 950064
>>50061
Монобехи тяжолые.
132 950075
>>50064

>Монобехи тяжолые


Плохому танцору.....
image.png558 Кб, 1024x768
133 950092
>>50056

>Дело сложное! Думоем! Как бы нам сделать-то так, пакрасате?


А что если просто повесить камеру за спину? Как в первом СХ.
134 950093
>>50092
Как в любой нормальной игре, ты хотел сказать. Эти камеры из-за угла и тогда, в дремучие года, были неиграбельным сблевом, а сейчас за это палками надо пиздить.
135 950096
>>50092
Afaik, она там не заспинная, она как у меня здесь >>49513
То бишь имеет границы и дистанцию, на которой начинается следование за персонажам, что на больших площадях помещает ее заспину.
136 950097
>>50093
Надо делать камеру как у гениального маэстро Миядзаки в солсах. Чтоб камера во время боссфайта застревала у босса под крылом, или в колоннах-стенах-камнях, чтоб игрок ничего не видел и огребал, бешенно матерясь. Вот это хардкор! Да что вы понимаете в настоящем хардкоре!
137 950102
>>49490
Классная простыня. Пояснишь за сигналы?
138 950106
>>50102

> Пояснишь за сигналы?


Что конкретно за сигналы пояснить?
139 950107
>>49994
>>49995
>>50020
>>50057
Спасибо, анончики! А где можно почитать про организацию этой связи между игроком и объектом? Если логику объекта я написать смогу, то как работает этот "коннект" я недопетриваю.
140 950108
>>50107
да просто сделай переменную, которая тру когда ты вошел и фолз когда вышел
если ты за оптимизацией, то сделай инт который равен 1 когда вошел и ноль когда вышел, когда входишь в другую ззону он будет равен 2 например
141 950110
>>50107

> как работает этот "коннект" я недопетриваю


Это называется. Подписка на событие.
Смотри. Вот ты подписался на тред. И в углу у тебя панелька, которая показывает 3 непрочитанных постов. Увидев эту надпись ты открываешь тред и читаешь эти новые посты.

Здесь всё ясно?

Так же и с сигналами. Есть нода1, в которой объявлен сигнал. Есть нода2, которая видит ноду2 (знает о её существовании). Нода1 подписывается на сигнал, то есть коннектит к сигналу некоторый код, который будет исполняться при испускании сигнала (окошко с непрочитанными постами). Нода2, когда у неё происходят вычисления, о которых она должна просигналить (новые посты), испускает сигнал. При этом ей неважно, получил-ли кто-либо тот сигнал, сделала emit() и дальше пошла.
142 950111
>>50110

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


Объяснятель, блять. Извините. Бистрофикс.
143 950119
>>50096
Ну так, что если симулировать такую камеру, чтобы она, с одной стороны, была достаточно "тяжелой" и инертной, а, с другой, была именно заспинная/заплечная, не фиксированная.
144 950121
>>50119
Тяжесть камеры зависит от геймплея. Если там ураганный экшон, то ни о какой инертности говорить не приходится.
145 950125
>>50107

>Если логику объекта я написать смогу, то как работает этот "коннект" я недопетриваю.


Да там всё просто.

1. В скрипте персонажа где-нибудь в шапке объявляешь сигнал:
signal activate_areas(sender)
Можно без аргументов, просто полезно будет знать, кто активирует нашу арею, чисто расширяемости для.

2. Там, где обрабатываешь инпуты, вызываешь сигнал:
activate_areas.emit(self)
Всё, перс будет слать этот сигнал, вне зависимости, подписан ли на него кто-либо.

3. Теперь в арее (лучше это делать в её собственной сцене) присоединяешь из редактора даблкликом сигнал body_entered к её же скрипту, функция создастся автоматически:
func _on_body_entered(body):
if body.has_signal("activate_areas"):
body.activate_areas.connect(activate_me)


3+. То же самое с body_exited, присоединяешь из редактора даблкликом:
func _on_body_exited(body):
if body.has_signal("activate_areas"):
body.activate_areas.disconnect(activate_me)


4. Ну и тут же в арее описываешь ответную функцию, к которой собсно будешь присоединять:
func activate_me(sender):
print(sender, " activated me!")


Как только принт принтит когда надо и что надо, это успех, можно переходить к описанию того, что данная арея вообще делает.

В принципе, можно было бы сделать так, чтобы персонаж запоминал в массив все ареи, в которые зашёл, а потом по команде циклом вызывал бы в каждой из них нужную функцию. Никто тебя не наругает, если ты сделаешь так. Но сигналами - чище, красивее и универсальнее.
145 950125
>>50107

>Если логику объекта я написать смогу, то как работает этот "коннект" я недопетриваю.


Да там всё просто.

1. В скрипте персонажа где-нибудь в шапке объявляешь сигнал:
signal activate_areas(sender)
Можно без аргументов, просто полезно будет знать, кто активирует нашу арею, чисто расширяемости для.

2. Там, где обрабатываешь инпуты, вызываешь сигнал:
activate_areas.emit(self)
Всё, перс будет слать этот сигнал, вне зависимости, подписан ли на него кто-либо.

3. Теперь в арее (лучше это делать в её собственной сцене) присоединяешь из редактора даблкликом сигнал body_entered к её же скрипту, функция создастся автоматически:
func _on_body_entered(body):
if body.has_signal("activate_areas"):
body.activate_areas.connect(activate_me)


3+. То же самое с body_exited, присоединяешь из редактора даблкликом:
func _on_body_exited(body):
if body.has_signal("activate_areas"):
body.activate_areas.disconnect(activate_me)


4. Ну и тут же в арее описываешь ответную функцию, к которой собсно будешь присоединять:
func activate_me(sender):
print(sender, " activated me!")


Как только принт принтит когда надо и что надо, это успех, можно переходить к описанию того, что данная арея вообще делает.

В принципе, можно было бы сделать так, чтобы персонаж запоминал в массив все ареи, в которые зашёл, а потом по команде циклом вызывал бы в каждой из них нужную функцию. Никто тебя не наругает, если ты сделаешь так. Но сигналами - чище, красивее и универсальнее.
146 950128
>>50108
>>50110
>>50125
Огромное спасибо! Сохраню и обмозгую, поэкспериментирую обязательно.
147 950134
>>50125
Я не согласен. Здесь кастомный сигнал не нужен.

> if body.has_signal("activate_areas"):


> body.activate_areas.connect(activate_me)


У тебя уже есть body. Ты уже о нём знаешь. Зачем ты сам перед собой притворяешься, что ты о нём не знаешь? Приведи body к известному тебе типу и вызови известный тебе метод:

> if body is MyPlayer: #в четверке после такого ифа срабатывает тайпкаст и включаются подсказки


> body.add_to_interaction_callback_pool(activate_me)


...

> body.remove_from_interaction_callback_pool(activate_me)



А в плеере, соответственно, при жмяке на кнопку интеракции

> for callable in interaction_callback_pool: callable.call()



Разве нет? Разве так не удобнее?

Только вот в обоих случаях все интерактивные сундуки откроются разом. Хоть кастомсигналом, хоть пулом колбэков. А если они все меню открывают?

В случае с пулом я могу не вызывать все циклом, а посмотреть, сколько элементов в пуле? Вызвать крайний, например. Сигнал тупо вызовет все разом без возможности контроля.
Ну и в общем-то, почти как ты ниже написал

> В принципе, можно было бы сделать так, чтобы персонаж запоминал в массив все ареи, в которые зашёл, а потом по команде циклом вызывал бы в каждой из них нужную функцию.


Чище, красивее и универсальнее, когда интерактивные объекты сами добавляют себя в пул персонажу, сами себя удаляют. А игрок, когда жмёт кнопку, у персонажа происходят тайпкасты: для подтипа "мгновенное действие без меню" - выполнить метод "activate_me" разом у всех в цикле. Для элементов "действие с меню" вызвать activate_me у последнего из добавленных, или у первого из добавленных. В зависимости от правил игры. Вызывать меню по очереди, или отбросить все остальные. Вывести меню выбора на экран из пересекающихся интерактивных объектов. Твой кастомный сигнал ничего из этого обеспечить не сможет.
148 950137
Нейросетки охуенны для мозгового штурма. Закидываешь ей описание своей игры, описываешь проблему, запрашиваешь десяток решений и что-нибудь да даст тебе идею. Нагенерил вчера себе сюжет в паре с нейронкой. В соло такое бы за месяц не написал.
149 950169
>>50106
Можно пример гипотетический, где тебя сигналы говном кормили (или не гипотетический, я в треде совсем новый, мб для всех кроме меня очевидно, что за продукт ты делал)?
150 950186
>>50169
Меня сигналы говном не кормили.
Я знаю, где их использовать, например ГУЙ: он висит в отдельном слое, в отдельной ветке дерева сцены, ничего не знает о происходящем в игре, а просто обрабатывает сигналы типа изменить_хитпоинты_на(10) или типа показать_меню(инвентарь)
И я знаю, где их не использовать, например, пуля: Она врезалась в коллизию. У неё есть информация об объекте коллизии. Нет смысла посылать сигнал в сферический вакуум о том что "пуля_нанесла_урон(пуля, тело). Достаточно прямо сообщить этому объекту "я наношу тебе баллистический урон на 10 хитпоинтов" и удалиться. Если коллизией была стена, она обработает сообщение одним образом, если живность, то обработает другим образом.

> что за продукт ты делал


О, тут можешь не переживать, я безыгорник диванный.
151 950202
>>50134

>Приведи body к известному тебе типу и вызови известный тебе метод


Категорически нет. Потому что duck typing.
Со всем остальным согласен, ты всё по делу написал. Вот только анон, который изначально вопрос спрашивал, ему будет полезно освоить сигналы, научиться их применять. И самое главное - вот те проблемы, которые ты описал, будет хорошо, если он сам на них наткнётся и научится решать.
152 950213
>>50092
Ну и примеры у тебя, в первом СХ камера переключалась на фиксированную в самый неподходящий момент.
153 950215
>>50202

> Категорически нет. Потому что duck typing.


Вот здесь поподробнее. Что ты имеешь ввиду?
(Про утиную типизацию объяснять не надо. Надо объяснить почему она категорически нет в данном примере).
image.png31 Кб, 608x474
154 950218
Анончики, поясните пожалуйста! Вот есть класс NodeTree, а в нём помимо прочего Camera. Почему тот объект, который я создаю в InitNodeTree и добавляю в CreateGameBranch - диспозится при первой же возможности и недоступна в SetCameraZoom, а если раскомментить 35ую строчку и получить в переменную Camera ту же самую камеру, то она уже норм и в SetCameraZoom она нормально используется? worldView - SubViewport и тоже поле NodeTree
155 950236
>>50218
Анонче объясни, а зачем ты гет и сет поставил? Я у ютуберов видел, но чет не выкупил нахуй оно надо...
156 950238
>>50236
Я и сам не до конца понимаю, по идее в этом конкретном случае разницы большой нет, но это более хорошая практика
157 950239
>>50236
Компилятор шарпа автоматически генерирует полный вид. Таким образом ты вроде как для себе просто переменную объявил, а по факту у тебя свойство, которому ты в дальнейшем можешь права навесить.
158 950240
>>50239
погоди ка, я типо объявляю ее как переменную, и могу спокойно творить с ней че вздумается???
щас проверю
159 950241
>>50218

> поясните пожалуйста


Предполагаю, что сетскрипт дропает предыдущий объект и назначает новый. Чтобы проверить это предположение, поменяй местами строчки 33 и 34. Если заработает - значит так оно и есть.
160 950242
>>50241
Не сработало
161 950243
>>50240
А чё тебе может вздуматься-то с таким низким уровнем знаний по шарпу?
Напиши

> public Camera2D Camera { get; private set; }


И посмотри на реакцию.

Или вот ещё вариант, напиши

> Camera2D Camera => wordView.GetNode<Camera2D>("Camera");

162 950244
>>50242
А что именно произошло? Что-то изменилось?
163 950245
>>50244
Тоже ошибка с доступом к диспозанному объекту, но уже на попытке добавить дитя. Наверно ты прав и сетскрипт пересоздаёт объект.
164 950246
>>50218
Никогда в жизни не видел чтобы так делали. Зачем, если ты можешь просто спавнить сцену, в которой уже есть камера со скриптом?
165 950247
>>50218
Я не уверен, что здесь нужно применять сетскрипт. Я настаиваю на том, что именно он тебе всё ломает. У тебя в Camera.cs есть имя класса. В 26 строке напиши Camera = new MyCameraCS(); Затем закомменти 34ю строчку. Проверь.
166 950248
>>50243
я другой анон
я просто не выкупил про гетеры и сетеры и хуй забил.
167 950249
>>50248
В МСДН на самом деле очень грамотно всё объяснено. Рекомендую причаститься.
https://learn.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/using-properties
image.png47 Кб, 262x942
168 950250
>>50246
Мне показалось, что проще создавать всю сцену из кода, уже не помню почему я так решил.
>>50247
Блин, спасибо! Как я сам не сообразил, что раз у меня классы наследуются от базовых типов, то я могу не назначать скрипты, а просто создавать сходу нужные мне объекты!
169 950251
>>50250
Пожалуйста. Ебош! Ждём релиза!
170 950258
>>50215
Ты проверяешь, утка ли это. А надо проверить только умеет ли она крякать. Ну то есть, опять же, ничего криминального, но для гдскрипта это плохая практика. Потому что, как только ты захочешь сделать манок для уток, уткооборотня и гадкого утёнка, тебе придётся в куче мест разгребать ошибки и уточнения из-за
if node is Duck:
а всё было бы проще, если бы там изначально было
if node.has_method("quack")

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

> if node.quack is Callable: node.quack()

17152359852150 (1).png36 Кб, 608x474
172 950266
>>50249
спасибо, намного лучше объяснено чем где либо, чет все равно не выкупаю нахера их ставят так как анон выше. Может ты знаешь?
173 950268
>>50266
Об этом я с самого начала написал. Перефразирую: их ставят, чтобы сразу стояло свойство, на будущее, на потом, для красоты кода и т.п. А компилятор шарпа автоматически преобразует эту запись в полную запись, где есть переменная и она подставляется в гет и в сет. Не знаю, какое у тебя ИДЕ, но у меня в мс-коде ,например, можно нажать на лампочку и самостоятельно преобразовать такую сокращенную запись свойства в полную:

> Camera2D _camera;


> public Camera2D Camera { get { return _camera; } set { if (_camera != value) _camera = value; } }

174 950270
>>50268
ааа, пон спс броу. Я блять наконец то понял что они делают.
175 950271
>>50258
Только производительность поиска метода скорее всего ниже, чем проверка типа, особенно типизированная, а не по названию.
176 950272
>>50266
Свойства нужны чтобы вызовы функций выглядели как переменные. Или, по другому, чтобы при присваивании переменной можно было накинуть доп. код обработки.
177 950277
Предметы теперь можно подбирать. Вроде как избавился почти от всех скриптов на шарпе, остался только контроль камеры на гдскрип переписать. Пора кодить экипировку, тот же фонарик нужно экипировать и включать/выключать.
178 950279
>>50277
Ящитаю, надо от игрока как-то скрыть момент исчезновения предметов со сцены. Ну и над менюшкой поработать. Выглядит перегружено, курсор скачет во все стороны, иконка перса зачем-то выбирается. В СХ такая штоле была? Не стоит копировать 1в1. Стоит переделать поудобнее.

Ну а в целом малаца, канешн.
179 950280
>>50277
Показалось, или на первых кадрах от персонажа тень на пол не попала?
180 950283
>>50279

> В СХ такая штоле была? Не стоит копировать 1в1



Да, буквально копия. Со временем как-нибудь освежу образ, а каркас пущай и так будет.
Ну а если ничего своего не придумаю, просто реворкну СХ1.

>>50280
Просто загораживает собой.
181 950284
>>50283
Какова причина использования устаревшего геймдизайна меню?
182 950285
>>50284
Такая же, как использование устаревших камер по углам. Утизм.
183 950288
>>50284
Синдром утенка. Воплощаю фантазии дитеских лет на взрослую голову.
184 950289
>>50283

> просто реворкну СХ1


Путь вникуда. Путь на дно стима.
185 950290
>>50289

>Путь вникуда.



Я никуда и не иду.
186 950291
>>50285
>>50288
Кстати тоже сейчас этим занимаюсь. Детская ностальгия она такая. Но стараюсь адаптировать под современные реалии.
1715259223920.png21 Кб, 446x452
187 950293
>>50291

> адаптировать под современные реалии


Minesweeper наоборот с толщетопологией.
188 950305
Увеличил дверные проемы и размеры комнат. В реальности двери метровой толщины едва ли ставят, но на экране гипертрофированные размеры смотрятся намного лучше и управляется свободнее, по таким комнатам можно и шоркаться в поисках лута и монстров бить.

>>49247 (OP)
У кого-нибудь есть фул рисунка Годетты из основного поста? Думаю использовать ее вместо классического СХ1 индикатора здоровья - в интерфейсе это будет кусок бумаги с карандашным портретом, с тем большим количеством пятен, дыр и жженных следов, чем меньше хп у ГГ.
189 950315
>>50305
Это и есть фулл. Я брал его отсюда: https://www.reddit.com/r/godot/comments/rvdvf6/another_godette_fan_art_i_made_free_for_any/

Автор разрешает использовать для любых целей.
190 950319
>>50315

>Автор разрешает использовать для любых целей.



Балдеж. Пасиба, анон.
191 950362
>>50271
Если ты выполняешь эту проверку так часто, что страдает производительность, то ты определённо делаешь что-то не так.

>>50265

>Надеюсь в будущем от этого избавятся


Это невозможно на уровне концепции. Максимум - как в луа, чтобы конструкция node.quack не вываливалась с ошибкой, если у node отсутствует поле quack, и тогда можно было бы делать
if node.quack and node.quack is Callable
Но это просто синтаксический сахар для той же самой строковой проверки. И с этим сахаром таковая проверка будет вызываться вообще всегда, а не только в явных местах, что как раз сильно замедляет весь язык.
С другой стороны, у луа есть JIT, а у гдскрипта нету, и кто из них медленнее - тот ещё вопрос.

И вообще. Гдскрипт - интерпретируемый язык с динамической типизацией. Его сильное место - быстрота разработки. И как раз утиная типизация - один из важнейших срезов, доступный исключительно благодаря этой самой динамичности.
С другой стороны, производительность - слабое место языка, ровно по той же причине.
Возможность статической типизации - это лапки ежа, пришитые к гдскриптовому ужу с целью ускорить не столько производительность, сколько разработку. Больше ошибок будет поймано на этапе спеллчека, меньше времени будет потрачено на их отлов в рантайме. Но это всё не должно идти в ущерб главному преимуществу, которое гдскрипт несёт в себе, то есть скорости разработки.
Ну а если кто-то хочет прямо упороться в производительность, тому уже улыбается Бьёрн Страуструп. В плюсах и типизация строгая, и скорострельность такая, что гдскрипту и не снилась. И каких-нибудь юнитов для РТС лично я на гдскрипте даже не пытался бы писать. Но если на уровне максимум одновременно игрок, пять врагов и десять пуль, то какой смысл пришивать к ужу ещё одну лапу?

Сорян, чёта меня понесло на философию. Половина седьмого утра, а я ещё не ложился.

>>50283

>видрил


Ъуъ сюка аж Ямаока в голове заиграл.
192 950363
>>50362

> Это невозможно на уровне концепции. Максимум - как в луа, чтобы конструкция node.quack не вываливалась с ошибкой, если у node отсутствует поле quack, и тогда можно было бы делать


> if node.quack and node.quack is Callable


Null is Callable?
Сначала пойди поспи, а потом ответь на этот вопрос на свежую голову.

> Это невозможно на уровне концепции.


Возможно. Концепция в том, что у класса запрашивается метод и если метода нет, необязательно вываливать экзепшн, можно и нуль возвращать. Что и показано в моём посте.

О скоростях я вообще ничего не говорил, только об удобстве. О скоростях ты сам додумал, сам приписал мне, сам блестяще опроверг.
flat.png48 Кб, 1392x748
193 950402
>>50305
Накидал план этажа. Все гипертрофировано и пустота снизу-слева, под лифт. Так 3-5 этажей на демку.
194 950408
>>50402
Ты тот анон, который типа молчаливые холмы пилит?
А что за прога, подскажи, пожалуйста. А то в draw.io не супер удобно урвони для 2d игры проектировать
Screenshot18.png474 Кб, 1599x899
195 950412
>>50408
Да, тот анон.
А прога, это Blender, потом экструдирую по краям и получаю стены. Накрываю плейном, и получаю потолок. По уровню удобства сравнивать не с чем.
196 950415
>>50412
Поизучай аддон архимеш. Вдруг понравится?
Preggo Game Jam 2 (DEBUG) 2024-05-10 16-24-16.mp48,5 Мб, mp4,
1152x648, 0:18
197 950428
Как сделать так, чтобы шар отскакивал от стены? Эта залупа постоянно в ней застревает, будто коллизия не срабатывает вообще.
изображение.png55 Кб, 551x345
198 950429
>>50428
Пытался реализовать это через bounce()
image.png19 Кб, 555x156
199 950436
>>50429
У меня сделано так. Работает надежно. Но это тройка, если что. Дирекшн в следующем фрейме пересчитывается в велосити, велосити в мув_энд_слайд
200 950438
>>50436
Да у меня так же. Только еще фильтр стоит, чтобы отскок был только от стен. Проверял через print(). Работает исправно, т.е. коллизии детектятся исправно.
201 950442
>>50415
Нихера се. Это оно так нехриново время сэкономит.
202 950450
>>50442
Блендер сам по себе годнота, а ещё куча аддонов годнейших. И всё это бесплатно, т.е. даром. Ваще охуеть!
203 950456
>>50415
Потыкал. Впечатления смешанные.

Плюсы:
- Очень удобно задавать размеры стенам.
- Наглядная планировка
- Заготовки дверей

Минусы:
- На дверях начинает тормозить
- Раз крашнулось (не смертельно)
- Нельзя объединять комнаты
- Непонятно, как текстурить

Есть плюсы и минусы. Можно попробовать использовать только для построения стен, остальное реализовать булевыми. Если не смогу решить как работать с ним конкретно, откажусь, я слишком по долгу затыкаюсь в таких раздумьях, прям беда.
204 950464
Поясните пожалуйста за шум, я же правильно понимаю, что годотовский FastNoiseLite по сути есть это https://github.com/Auburn/FastNoiseLite ?
205 950466
>>50456
А еще есть аддон CAD Sketcher который реализует параметрическое моделирование. А еще есть геоноды.
206 950472
>>50466
Попробую геоноды, они должны работать быстрее любого аддона. Проблема любых Blender-аддонов - они написаны на Python и очень медленные в геометрии.
207 950474
Есть ли в редакторе хоткей на скрыть/показать ноду? В настройках не найду.
208 950476
>>50474
Visible вроде, не?
209 950482
>>50474
https://godotengine.org/asset-library/asset/2645

Удивительно что оно не изкоробки.
210 950496
Я тут задался вопросом. Годот умеет импортировать svg но импортирует как растр, как текстуру, при этом он может читать xml которым является svg и при этом у него есть холст с примитивами, на котором можно было бы отрисовать svg в его натуральном представлении. Может этим кто уже занимался? Может уже есть аддон?

Из максимально похожего на мои хотелки нашлось только вот это
https://www.reddit.com/r/godot/comments/xshtqc/i_got_svgs_rendering_at_runtime_in_godot/
но там чувак пообещал аддон и всё.
211 950529
>>50125
Вчера только нашел время попробовать этот метод, заработало без каких либо проблем. Я так понимаю с такой системой можно сделать вообще вче интерактивные объекты от предметов до записок?
212 950533
>>50529
Именно так.
sage 213 950547
>>50496
у svg нет "натурального представления". это вектор, ты его скейлишь как угодно, dpi/ppi важно когда тебе нужно нарисовать с конкретной плотностью на оконечном девайсе.

некоторые заморачиваются с отрисовкой под разрешение пользователя (под мобилками такое бывает) - но во первых это может быть долго, а во вторых смысла ноль - если нужны всякие эффектики их часто проще в фотожопе шлепнуть чем с шейдерами корячится.
Screenshot19.png207 Кб, 1168x771
214 950549
>>50456
Теперь непонятно как текстурить, если стены поделены на отдельные объекты с модификатором Solidify - то есть, для каждой стороны свою развертку не сделать.
Видимо аддоны, упрощающие разработку стен в Blender не очень подходят для импорта в Godot, просто потмому что добавляют промежуточные шаги с преобразованием в обычный меш.
215 950552
>>50547
Я это и имел ввиду. Контрол имеет размеры например 400 на 300 - отрисовывается свг в этом масштабе. Контрол увеличился до 2000 на 1500 - свг перерисовался в новом масштабе.

>>50549
Копируешь результат в отдельную коллекцию, применяешь на копии все модификаторы, разворачиваешь, текстуришь, экспортируешь. Если вдруг понадобится переделать, оригинал в соседней коллекции лежит. Но вообще да, как-то неудобно выходит. Кажется я где-то видел модификатор-развёртку, но не помню, где.
216 950554
>>50552

>Но вообще да, как-то неудобно выходит. Кажется я где-то видел модификатор-развёртку, но не помню, где.



Вернулся к предыдущему плану - плоскостями накидал план, а затем экструдировал модификатором Solidify. Все дополнительные дырки под окна сделаю через булевый модификатор. Тут модификаторы тоже нужно применять, но шагов ощутимо меньше чем с доп. аддонами.
217 950556
>>50554
Да пожалуй, возьму на вооружение твой метод.
sage 218 950558
>>50552

> Контрол имеет размеры например 400 на 300 - отрисовывается свг в этом масштабе. Контрол увеличился до 2000 на 1500 - свг перерисовался в новом масштабе.


так это смысла чаще всего не имеет, рендери сразу в максимально-нужном и скалируй вниз, это бесплатно. Хотя если только у тебя там ажурный SVG где надо толщину линий выдерживать независимо от расширения - тогда наверно имеет смысл перерисовывать
219 950560
>>50554
Булевый это зло, насколько я помню
220 950561
>>50560
Зло.
Геометрию корраптит моментально. Но! Если у тебя куб, и булём вырезается второй куб, то ты вполне можешь пофиксить косяки буля.
image.png352 Кб, 690x362
221 950599
Игры то делойте
222 950602
>>50554
Не думал делать прямо в движке CSG или каким нибудь аналогом крокотайла
223 950604
>>50363

>О скоростях ты сам додумал, сам приписал мне, сам блестяще опроверг.


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

А вот шас с тобой:

>Null is Callable?


Если ты не знал, сначала проверяется левая часть and'а, и если она ложная, то правая просто отбрасывается без проверки. Поэтому подобные конструкции совершенно легитимно записывать в одну строку:
if foo and foo is int and foo == 1:
И ты никогда не словишь тут краш. Ну, по крайней мере, в гдскрипте.

>Концепция в том, что у класса запрашивается метод и если метода нет


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

>>50529
Предполагаешь верно. Хорошо, что ты освоил сигналы. Это один из базовых паттернов взаимодействия между нодами в Годоте, он тебе неоднократно пригодится. Особенно удобно использовать для всяких систем, находящихся в дереве далеко друг от друга, например, соединять перса с хп-баром.
Теперь учти предупреждение анона >>50134. Представь, что НПЦ стоит аккурат перед дверью, их ареи пересекаются. Сигнал в такой ситуации вызовет одновременно и открытие двери, и начало диалога. В принципе, можно просто не ставить интерактивные объекты слишком близко. Решишь эту задачу тогда, когда прокачаешь скиллы. Просто затравка на будущее, потому что сейчас тебе наверняка есть чем заняться более важным, чем переписывание работающего кода.
224 950605
>>50602

>крокотайла


Вчера кстати новый блокбенч вышел. С НОЖОМ.
225 950608
>>50604
Задача тупая какая-то. Если вызывать дверь и разговор рейкастом, то сработает только ближний к игроку рейкаст. Сигналы вообще не причем.
226 950612
MoveToward с Vector3 не работает что ли?
Все вписал, ошибок не выдает, но ничего не двигает
227 950613
>>50608
Не, смотри, у тебя рейкаст пуляет в точку, куда ты мышкой смотришь. И он детектирует тела, а не ареи. И когда он что-то находит, он даёт команду показать тебе на экране "пресс Х ту экшон". Помнишь знаменитые мемы из скайримофолача, когда на экране постоянно переключаются надписи "попить-взять-попить-взять" на унитазе, в котором лежат патроны? И челик елозит-елозит мышкой и в конце концов выбирает "попить". Вот чтобы избежать таких мемов на ютубе по твоей игре, ты должен всё обнаруженное пихать в массив, и выводить списком на экране с возможностью выбрать действие из списка. Большинство современных игор делает так.

>>50604

> А как ты запросишь метод? Строкой.


Да, вот тут-то я не подумал настолько далеко. Ведь в конечном итоге где-то должна взяться строка. Но справедливости ради, она возьмётся уже в сишных потрохах движка, не в гдскрипте, и возьмётся скорее всего хэш по индексу, или как-то так. В любом случае будет быстрее, наверняка.
228 950628
>>49247 (OP)
Хочу как в анреале визуал скрипты на всё, без кодинга, это реально? В шапке ответа не нашёл.
229 950636
анончик, помоги
пытаюсь приделать базовый сигнал с параметрами к динамически создаваемой ноде
_option_node.connect("pressed", _on_answer_selected.bind("next_id",answers["next"]))
но в рантайме ошибка
E 0:00:04:0969 emit_signalp: Error calling from signal 'pressed' to callable: 'CanvasLayer(UI.gd)::_on_answer_selected': Method expected 1 arguments, but called with 2.
<C++ Source> core/object/object.cpp:1140 @ emit_signalp()
в принципе почему понятно, вижу решение проблемы как в гуе натыкать доппараметр базовому сигналу, а как мне заставить это работать в моем случае?
230 950642
>>50613

>она возьмётся уже в сишных потрохах движка


Дык has_method и подобные - это тоже обращение к сишным потрохам движка.

>хэш по индексу, или как-то так


Ты только что StringName https://docs.godotengine.org/en/stable/classes/class_stringname.html

>>50608
Речь шла про 2д. Там для взаимодействия используются не рейкасты и направление взглядв, а ареи и пересечение персонажа с ними.

>>50636
Ты неправильно используешь bind. Ему не нужно писать имя биндимого аргумента, только значение.
231 950643
>>50642

> Ты неправильно используешь bind. Ему не нужно писать имя биндимого аргумента, только значение.


Спасибо, и правда.
232 950654
>>50628

> без кодинга


> визуал скрипты на всё


Реально.

> как в анреале


Нет. Архитектура такова, что визуалскрипты причиняют БОЛЬ. Поэтому их выпилили в 4 версии. Но они поставляются как отдельный аддон.

> В шапке ответа не нашёл.


Недочёт. Исправим. ОП! Эй, ОП!? Сделой!
233 950675
>>50604
>Сигнал в такой ситуации вызовет одновременно и открытие двери, и начало диалога. В принципе, можно просто не ставить интерактивные объекты слишком близко. Решишь эту задачу тогда, когда прокачаешь скиллы.

Да, я думал об этом моменте, но его как раз легко обойти тобой же озвученным способом. Я звезд с неба не хватаю и просто потихоньку сижу и разбираюсь. Сейчас вон вообще думаю как бы все упорядочить с анимациями и обойтись без машины состояний. Чтобы без заморочек так сказать.
234 950677
>>50675

> обойтись без машины состояний. Чтобы без заморочек так сказать.


Машина состояний - это и есть без заморочек. Учи её. И реализуй. Спасибо скажешь.
235 950679
>>50675
Есть три общепризнанных подхода к стейтмашинам в годоте:
1. На нодах (поддержка редактором в дереве сцены, просто добавляешь стейты как ноды к своей сцене)
2. На ресурсах (поддержка редактором в инспекторе, просто добавляешь стейты как ресурсы в одной ноде, но уже нужно скриптом задать экспорты)
3. На простых объектах (RefCounted, без поддержки редактором, чисто в коде)

Тебе какой больше импонирует?
236 950683
Есть сцена с gui (2d + 3d), есть main сцена в которой gui_viewport_container.
Две проблемы при выводе:
- Дублируются 3d объекты в камере (т.е. рисует из сцены с gui камеры (правильно, она ортогональная), и рисуется на main сцене в камере (перспектива), то что было в gui по координатам.
- При растягивании окна как я понял gui_viewport просто растягивается, а не рендерится в том же разрешении что и root.viewport из-за чего все в лесинках.

Как решить? Что-то не могу загуглить.
237 950685
>>50683
Скрин работающего дерева сцены (при запуске проекта, remote) - в студию!
238 950686
>>50685
По первому я не могу понять как разделить на слои.
239 950687
>>50686
Что такое 3d_canvas?
240 950688
>>50677
>>50679
Не знаю даже, какой эмпонирует. Но уговорили. Поизучаю, посмотрю. Просто сейчас я вроде как все сделал, но это может враз поменяться и при добавлении новых анимаций все полетит.
241 950689
>>50687
Вычеркиваем (почитал описание, оно там не нужно)
242 950690
>>50689
Upd: записываем обратно, без него не рендерится одновременно 3D (патрон) и 2D (очки)
1715523751617.png12 Кб, 251x322
243 950691
>>50686
Ты помнишь фильм "кин-дза-дза"?
Извини, что издалека начинаю, но это не шутки, хотя сейчас будет похоже будто я рофлю.

Ты помнишь там цветовую дифференциацию штанов?
Так вот. В годоте именно она родимая. И ты у себя в проекте, судя по скринам её нарушаешь. Карочи. Во главе дерева стоят белые ноды. Только от белых нод могут происходить цветные. Цветные ноды нельзя смешивать. У тебя в корне сцены стоит красная, потом белые, потом вложены зелёные и синие вперемешку.

Переделывай архитектуру, по цветам. Пик самхау релейтед. Удачи!
244 950693
>>50691
Давай попробуем не смешивать ноды в примере
уменя не получилось

С первой проблемой разобрался. Есть оказывается волшебная галочка, чтобы посмотреть импортируемый меш и на нем можно выбрать instance layer. Закинул GUIню на второй слой.
245 950697
Со второй проблемой уже на пол пути к решению. Собственно мне нужна была функция связи смены размеров окна и манипулированием с настройками subviewport.
Если еще сегодня напишу чтобы красиво патроны перезаряжались, то вообще будет здорово.
Всем невидимых лучей добра из раздела 3D.
246 950701
>>50654

>визуалскрипты причиняют БОЛЬ


Почему это???
247 950704
>>50701
Ограничивают, пухнут на 10 экранов, ужасно скалируются, трудно поддерживать. ГДСкрипт хорошая альтернатива - простой как два пальца, за день изучается от и до, не ебет мозги, позволяет сфокусироваться на делание игр вместо возни с языком.
248 950705
>>50679
4. Вообще без этого всего, на матчах.
Самый лёгкий в освоении вариант, так как для него достаточно азов программирования. А потом уже, поняв принцип работы, осознать, как это можно разбить на ноды/ресурсы/объекты.
Preggo Game Jam 2 (DEBUG) 2024-05-12 19-40-15.mp43,9 Мб, mp4,
1152x648, 0:07
249 950720
Я сдаюсь, нахуй. Это говно просто отказывается работать. Я ничего не переписывал, ничего не переизобретал. Я просто использовал встроенный в Годот функционал, но оно просто отказывается работать.
1715534128228.jpg100 Кб, 700x907
250 950725
>>50705

> на матчах


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

Поэтому матчам-свитчам-ифам не положен отдельный пункт, а положены только мемы.
251 950727
>>50697
Ты к нам по моей ссылке пришёл?
>>334729-кун из юбилейного
252 950731
>>50705
>>50720
Пока кстати изучаю это вариант. И возник вопрос, стоит ли, делать отдельные состояния для:
Ходьбы
Карабкания
Прыжка
Падения

Или их можно ужать до:
Ходьба (включая прыжок, падение, инерцию при этих состояниях)
Карабкание
253 950732
>>50731
Вот тут решение
https://www.youtube.com/watch?v=E9h9VnbPGuw
Не обязательно тот аддон ставить, главное принцип уяснить: стейтмашин может быть несколько, как параллельных, так и последовательных.
254 950739
>>50732
Спасибо, гляну.

>>50675
И еще к сигналам вдогонку. Как я могу со стороны игрока проверить произошел ли коннект? Есть простое решение, или надо так же посылать сигнал со стороны интерактивного объекта?
255 950755
>>50739

> Есть простое решение


Коннект возвращает код результата операции.
Записывай его себе

> var err = player.on_foo_bar.connect()

show.png2 Кб, 256x50
256 950768
>>50731
Шевели своей собственной мозга. Пробуй. На практике понимай, какие стейты тебе нужны, а какие нет.
И не пользуйся аддонами. Стейт-машина - базовый паттерн, который встречается в геймдеве повсеместно. Крайне необходимо освоить его, чтобы двигаться дальше. Уметь написать, уметь применить.
Приходи, когда столкнёшься с проблемами, которые не сможешь решить методом проб и ошибок. Никто твою игру за тебя не сделает, но указать путь по проторенной дорожке мимо граблей - укажем. И положим несколько тренировочных, с мягкой рукоятью.
257 950770
Долго голову ломал, как будет лучше всего хранить информацию об отдельных блоках в 3D сетке, если геймплей позволяет добавлять и удалять блоки в произвольном порядке и месте. ВНЕЗАПНО, как минимум в рамках GDScript лучшее решение (учитывая удобство, скорость, возможности) это:

>var data: Dictionary


>data[Vector3i(x, y, z)] = ...


>data.erase(Vector3i(x, y, z))


Ещё интереснее, самые эффективные проверки:

>if Vector3i(x, y, z) in data: ...


>if Vector3i(x, y, z) not in data: ...


Использование y.has(x) и not (x in y) медленнее.

>>914070 →

>Помощь с проектом нужна?


Спасибо, но я пока хочу сам всё делать.

>отрефакторить или допилить твой код


Так это же самое интересное в геймдеве.

>>914221 →

>верёвка крюка-кошки натягивается не по физике.


Что ты имеешь в виду, конкретно? У этой веревки высокая эластичность, т.е. способна растягиваться, оказывая сопротивление тем больше, чем сильнее растянута. Растяжение зависит от расстояния между игроком и последней точкой крепления (она может наматываться на объекты) с учётом длины верёвки. Соответственно, когда верёвка дёргает игрока, он взлетает немного выше необходимого и верёвка перестает оказывать воздействие, игрока тянет гравитация и он снова растягивает верёвку, и т.д.

Нереалистичное условие - игрок способен очень медленно двигаться, находясь в воздухе, без этой особенности в играх уже непривычно становится. Поскольку базовая скорость очень высокая, игрок может нереалистично быстро раскачиваться; если совсем не трогать WASD, раскачивание выглядит достаточно естественным. Пробовал блокировать воздействие WASD, но лично мне это не нравится.

>Или может есть способ на лету менять игроку тип тела с чарактер на ригид?


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

>тело переключается на ригид с джойнтами


Джойнтам в Godot Physics 3D стабильности и функционала не хватает, в Godot Jolt тоже какие-то проблемы (по крайней мере полгода назад были).

Да, меня тут не было больше полгода.
257 950770
Долго голову ломал, как будет лучше всего хранить информацию об отдельных блоках в 3D сетке, если геймплей позволяет добавлять и удалять блоки в произвольном порядке и месте. ВНЕЗАПНО, как минимум в рамках GDScript лучшее решение (учитывая удобство, скорость, возможности) это:

>var data: Dictionary


>data[Vector3i(x, y, z)] = ...


>data.erase(Vector3i(x, y, z))


Ещё интереснее, самые эффективные проверки:

>if Vector3i(x, y, z) in data: ...


>if Vector3i(x, y, z) not in data: ...


Использование y.has(x) и not (x in y) медленнее.

>>914070 →

>Помощь с проектом нужна?


Спасибо, но я пока хочу сам всё делать.

>отрефакторить или допилить твой код


Так это же самое интересное в геймдеве.

>>914221 →

>верёвка крюка-кошки натягивается не по физике.


Что ты имеешь в виду, конкретно? У этой веревки высокая эластичность, т.е. способна растягиваться, оказывая сопротивление тем больше, чем сильнее растянута. Растяжение зависит от расстояния между игроком и последней точкой крепления (она может наматываться на объекты) с учётом длины верёвки. Соответственно, когда верёвка дёргает игрока, он взлетает немного выше необходимого и верёвка перестает оказывать воздействие, игрока тянет гравитация и он снова растягивает верёвку, и т.д.

Нереалистичное условие - игрок способен очень медленно двигаться, находясь в воздухе, без этой особенности в играх уже непривычно становится. Поскольку базовая скорость очень высокая, игрок может нереалистично быстро раскачиваться; если совсем не трогать WASD, раскачивание выглядит достаточно естественным. Пробовал блокировать воздействие WASD, но лично мне это не нравится.

>Или может есть способ на лету менять игроку тип тела с чарактер на ригид?


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

>тело переключается на ригид с джойнтами


Джойнтам в Godot Physics 3D стабильности и функционала не хватает, в Godot Jolt тоже какие-то проблемы (по крайней мере полгода назад были).

Да, меня тут не было больше полгода.
258 950775
>>50770
О, я помню тебя и твою бабу-раскоряку.
259 950777
>>49994

>Интерактивный предмет предоставляет арею


Не обязательно создавать лишнюю Area, если твой интерактивный предмет уже имеет физическое тело. Главное проверять, с чем именно пересекается луч. Изначально неосязаемым, конечно, нужна Area.

Т.е. RigidBody мячу и StaticBody двери не нужны Area для взаимодействия по кнопке, а для выключателя света на стене потребуется своя отдельная Area.

>>50020

>Area2D может зарегистрировать только выход или вход. Один раз.


Нет, можно в любой момент запросить списки всех пересекающихся тел и зон. Списки обновляются с задержкой, но существуют постоянно:
https://docs.godotengine.org/en/stable/classes/class_area2d.html#class-area2d-method-get-overlapping-areas
260 950785
>>50675

>как бы все упорядочить с анимациями


Просто используй встроенное решение.
https://docs.godotengine.org/en/stable/tutorials/animation/animation_tree.html#state-machine-travel
Ничего лучше тут не придумать.

>>50731

>стоит ли делать отдельные состояния


Разные анимации - разные состояния.
261 950786
Сап. Хелпаните пишу игру Идле жанр где ауто кликер, не пойму базу firebase realtime или обычую использовать?
262 950787
>>50777
Практически никогда для взаимодействия не используется та же коллизия, что и для физики, и вот почему:
1. Физическая коллизия обычно значительно меньше
2. В физические объекты нельзя войти, на то они и физические
Рейкасты - не сюда. Это в 3д взаимодействие зависит от направления взгляда (и то, только если игра от первого лица); в 2д же оно зависит просто от положения персонажа в пространстве. Иначе будешь постоянно сталкиваться с кривой коллизией взаимодействия. Хочешь совершить действие, но не можешь, потому что персонаж или смотрит не в ту сторону, или стоит на один пиксель выше, или ещё какая-нибудь невидимая дребедень.

>запросить списки всех пересекающихся тел и зон


В контексте обсуждаемой задачи, как ты предполагаешь использовать эту информацию?
263 950819
Сап, двощ. Кто-нибудь шарит почему Road to Vostok так жёстко пропукивает, даже когда камера не движется никуда?
264 950820
ВЫШЕЛ! ВЫШЕЛ! ВЫШЕЛ!

Второй урок по годоту от весельчака с фальшивой улыбкой
https://youtu.be/e1zJS31tr88
265 950822
>>50820
Ппц поверхностно. А на него так надрачивали в комментариях. Он же тупо пересказывает официальную документацию.
266 950823
>>50822
Так когда он вместе с командой, сидел на зарплате у юнитеков, тоже тупо пересказывал документацию.
267 950824
>>50822
Я и по юнити от него курс на втором же ролике дропнул.
268 950829
>>50822
Это гайды для ньюфагов, пчел. Хз каких секретных знаний ты там ожидал.
269 950859
https://itch.io/game-assets/tag-shaders
https://itch.io/game-assets/tag-godot/tag-shaders

Ебануться, оказывается люди свои шейдеры на итч выкладывают.
270 950874
https://godotengine.org/asset-library/asset/2130
Файловая система внизу, как в юните! Бесценно для перекатунов.
271 950878
>>50820
Реквест не перевод, а русский курс
272 950880
>>50878
Никто не берётся.
273 950904
time += delta

Что произойдет если через охуилиард лет тайм достигнет какого-либо максимального значения? В годоте вообще есть максимум для флоата?
274 950911
>>50829
Двачаю.
Особенно учитывая, что у него опыт в годо - максимум полгода.

>>50904

>максимум для флоата


Ты плохо представляешь себе, что такое флоат.
https://docs.godotengine.org/en/stable/classes/class_float.html
и там по ссылкам на википедию пройдись ещё.
1715617753379.jpg76 Кб, 1643x920
275 950918
>>50904

> Что произойдет если через охуилиард лет тайм достигнет какого-либо максимального значения? В годоте вообще есть максимум для флоата?


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

Кстати, сделай игру по этому сюжету.
276 950923
>>50904
Да ладно ты сделай сначала игру с сюжетом или геймплеем с сессией на 5 суток, куда там о годах думать.
277 950925

>You should often see significantly better frame rates when using shadows. This happens automatically.


https://godotengine.org/article/dev-snapshot-godot-3-6-beta-5/

Нойс. Плюс куча других оптимизонов.
278 950929
>>50925
Надо брать, потом посмотрю есть ли прирост в вебе 3д.
279 950957
Созрел очередной вопрос
У меня есть сохраненный сценой настроенный Label
И я хочу его динамически подгружать
Я делаю что-то типа такого

var tooltip = preload("res://Scenes/UI/tooltip_label.tscn")

func _ready():
self.add_child(tooltip.instantiate())
tooltip.hide()

но получаю ошибку, потому что tooltip остается PackedScene, а не Label,и метода hide() у него нет, а если я объявляю tooltip принудительно как Label, то его не получается подгрузить из файла.
Я понимаю, что что-то делаю не так, но пути решения пока не вижу.
image.png77 Кб, 618x390
280 950959
>>50957
Вжух
281 950960
>>50959
Мне кажется чатжпт тут врет, он же написал то же самое что у меня.
282 950961
>>50957
Ты неправильно понимаешь смысл PackedScene.instantiate. Эта функция не превратит ресурс в ноду. Она возвращает ноду. Так что тебе надо сделать
var my_var = tooltip.instantiate()
и дальше уже обращаться с этим как с Label'ом - добавлять в дерево, скрывать, показывать и прочая.

Вообще, не уверен, что возможно конструкцией вида foo.bar() изменить тип foo, ведь bar это поле класса foo...
283 950962
>>50960
Он нет. Смотри, у тебя в переменной tooltip сидит прелоад(сцена), то есть сидит PackedScene. Ты ее инстацируешь, добавляешь в дерево. А потом, не меняя переменной, дергаешь .hide(). То есть ты пытаешься дергать .hide внутри PackedScene, а тебе надо дергать в уже инстанцированной сцене. Посмотри внимательно - код разный, переменные разные.
284 950963
>>50962
>>50961
Спасибо, заработало с отдельной переменной, разницу понял
.png40 Кб, 748x494
285 950968
Забавно, что телеграммный дает другое решение но тоже правильное.
Теперь хоть с людьми не разговаривай вообще.
286 950970
>>50968
Я обычно так же пишу.
var ball это игровой объект
var ball_tscn это (пред)загруженная сцена.
ball = ball_tscn.instance()

Алсо есть еще один способ немного пахнущий
Ты можешь добавить ноду в конкретное место в дереве.
Например $UI/Tooltips.add_child(your_instance)
Тогда тебе не нужна отдельная переменная и ты можешь писать
$Ui/Tooltips.get_child(0).hide.
Или даже $Tooltips.hide() если устраивает скрыть все.
287 950971
>>50968
Бротан, не пропадай.
Через недельку там новый жтп 4о в публичном доступе окажется
288 950995
>>50963

> разницу понял


Если хочешь чтобы твой код заработал, делай так:

> var tooltip = preload("res://Scenes/UI/tooltip_label.tscn")



> func _ready():


> tooltip = tooltip.instantiate()


> self.add_child(tooltip)


> tooltip.hide()



Вот так тоже заработает.
289 951004
А вот вопрос на который чатжпт не справляется
Хочу сделать обычный квестовый курсор - который меняет вид и появляется подсказка о том, куда наведен предмет
Поменять курсор несложно и собственно сделал тултип который рисуется за ним, но он рисуется при передвижении с задержкой и некрасиво, нужно сделать как-то еще.
Пока план иметь сцену с курсором и подсказкой и при необходимости настраивать ее и как-то делать из нее например png и засовывать уже картинку в системный курсор.
Это нормальная идея или лучше как-то еще?
.png46 Кб, 773x669
290 951005
Собственно ответ жпт
291 951006
>>51004
Типичная проблема X - Y
Ты надумал себе, что в играх к системному курсору лепят внутриигровые тултипы, и бросился и скать решение. А на самом деле в играх системный курсор вовсе скрывают и заменяют своим спрайтом.
292 951007
>>51006
Но тогда будет задержка с позиционированием же.
293 951008
>>51007
Гарантируешь?
294 951011
>>51008
Может я неправильно понимаю что ты имеешь в виду под "заменяют своим спрайтом"
Я вижу два пути
Первый - заменить курсор на свою картинку
Второй - водить свою картинку вслед за курсором в _physics_process или _process
И во втором случае я наблюдаю задержку при движении, да, как например на видео
https://youtu.be/JrQ1-Ea6_KM?t=221
295 951013
>>51011
Да ты прав, скорее всего делать самому будет слишком геморно.
296 951014
>>51013
Я чувствую троллинг...
297 951018
>>51014
Не не, все верно. Инпут лаг будет, либо на вводе, либо на выводе через двойной-тройной буфер, так что да 2-3 кадра задержки наивным способом, какие то способы борьбы с этим описаны, но сходу не придумаю как это сделать только для курсора.
298 951019
Например отсюда, можно включить "exclusive fullscreen" и отключить vsync (но обязательно тогда лимитировать fps самому через set_target_fps и GSync)
https://github.com/godotengine/godot/issues/75830
И тогда задержка будет 0-1 кадр.
299 951027
>>51004
https://docs.godotengine.org/en/stable/tutorials/inputs/custom_mouse_cursor.html
Вот решение без задержки.

Заменяешь глобально два шейпа, допустим стрелку и руку. Дальше варианты:
а) Интерактивные объекты - наследники Control, и у них задано свойство mouse_default_cursor_shape = 2. Даже кодить не надо.
б) Интерактивные объекты - наследники CollisionObject2D, тогда у них есть сигналы mouse_entered и mouse_exited, по которым ты можешь менять шейп мыши (это дешевле, чем каждый раз задавать всё изображение). Но на этом пути я вижу впереди потенциальную конструкцию из костылей и велосипедов.
300 951029
>>51027
С картинками понятно, я столкнулся с проблемой как сделать красиво перемещаемый текст вместе с курсором.
Как принято в квестах https://youtu.be/N1_6KBOj85s?t=715
301 951047
>>51029
Лейбл прицепи к позиции курсора + сдвиг.
302 951049
>>51047
инпутлаг
303 951050
>>51049
Сорян, это не ты ли в начале треда троллил про невозможность нарезать спрайты и запихнуть их в y-sort как в Диско Элизиуме?
304 951051
>>51050
нет
305 951052
>>51050
Так он прав про инпутлаг. Читни issue выше. Он может до 5 кадров доходить.
306 951054
>>51052
Ты сам же решение и предложил >>51019. Я в своих играх всинк отключаю всегда. Самая бесполезная технология во всей индустрии.

Кайф когда в настройках игры еще слайдер максимального фпс дают.
307 951057
>>51054
Тиринг не мешает? Я так понимаю что там бывают приколы с 59.94Hz в каком то стандарте телевидения, что может приводить к расхождению через какое то время.
308 951060
>>51057
Тиринг проблема редкая и микросекундная. Всинк проблема постоянная. Тот, кто придумал лечить тиринг всинком явно любитель лечить прыщи сдиранием кожи.
1671337881627.jpg114 Кб, 1280x720
309 951062
>>51060
Нет, чел, тиринг это не редкая проблема. У меня на 40" телеке по крайней мере он всегда заметен. Может ты просто не в курсе что это.
310 951063
>>51062
Я замечательно в курсе что это, наблюдаю возню с тирингом и Xorg'ом уже лет 20. Я тебе не говорю что тиринг не проблема. Я говорю что всинк проблема хуже.
311 951064
>>51007

> задержка с позиционированием же


Да, есть задержка между системным курсором и графическим фреймом. Если на экран выводить одновременно системный курсор и графический. Так ты спрячь системный курсор-то. Игроки ничего не заметят.
>>51029

> Как принято в квестах


Выведи с помощью хаков системный курсор поверх депонии и охуеешь от задержки, так что, депония на годоте написана?
image.png5,4 Мб, 2560x2160
312 951084
Делойте игры. Раз-раз, начал и закончил.
313 951088
>>51084
Ну мам, я вчера сделал.
314 951101
Подскажите вот что. Есть 3д игра. В ней 2д элемент, текст, который надо двигать. Моя проблема в том, что текст двигается по пиксельной сетке. То есть крошечными прыжками. На мониторах с высоким разрешением это не заметно, но на моем 720p ноуте по глазам бьет. Можно ли заставить 2д элемент двигаться более плавно, сабпиксельно? Все снапы в настройках выключил.
315 951115
>>51101
А двигаешь ты его по float координатам? Ну скажем x += 0.01
Еще в настройках шрифта есть хинтинг и антиалиасинг, фиг знает как он влияет.
316 951116
>>51115

>Ну скажем x += 0.01


Именно так и двигаю.

>в настройках шрифта есть хинтинг и антиалиасинг


Все потыкал. На самом деле я сейчас понял что зависит это от стретч мода, и на хуевом мониторе как у меня это никак не объехать. Либо по пиксельной сетке прыгать (по реальной мониторовской), либо все будет сжиматься-мылиться-шакалиться, что для текста критично. Ну ладно.
317 951117
>>51116
Может тогда есть смысл сделать через вьюпорты, а не стретч мод
318 951123
Теперь всю эту срань мебелировать и текстурировать. А потом еще 4 этажа так же. Пора топать на скетчфаб искать мебель, а что не найду, делать самому. Как же это будет долго и нудно.
319 951127
>>51123

> Пора топать на скетчфаб искать мебель


Тормози! Стой! У меня есть для тебя шикарное предложение! Есть такая программа Sweet Home 3D - там в комплекте огромный пак мебели. Лицензия то ли ЦЦ то ли опенсорц. А у них на сайте ещё ссылки на другие библиотеки мебели.
320 951128
>>51127
Интересно, нужно посмотреть. Но возможно придется доработать до какого-то пост-совкового вида.
321 951132
>>51128
А... ну... как бы да. Если нужно очередное ВСЖ, с совковой мебелью, набившее всем оскомину, то да, это не подойдёт, там мебель современная. Икеевская.
322 951134
>>51123
Могу скинуть пак с аттрибуцией. Или список ссылок.
323 951139
>>51132

Работаю с чем знаком. Рисовать евроремонты которых в жввую никогда не видел займет еще больше времени.

>>51134
С чем?
324 951142
>>51139
Аттрибуция это когда ты обязан указать авторов ассетов в своем продукте.
325 951143
>>51139

> в жввую никогда не видел


Я вживую никогда не видел интерьеры космических кораблей-городов из будущего, но это мне не мешает. А даже наоборот.
326 951148
>>51142
Шли, хотя не факт что использую, это еще +1 софт учить, пусть и просто но время/силы/настрой жрет.

>>51143
Делать незнакомое это время и усилия, я еще и больше кодер чем дизайнер, что увеличит затраты раз в пять.
327 951157
>>51148
https://pastebin.com/WBj6w2tT
Пока часть переписал, бывают еще кухонные пропсы, магнитофоны импортные.
Лицензии старался отбирать CC-Attribution.
А то есть https://sketchfab.com/Valger но там только смотреть.
328 951165
>>51157
Агонь. Пасиба, анон.
image.png3 Кб, 256x50
329 951169
Используйте lerp
330 951171
>>51128

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



Придумал смотреть фотографии квартир на авито, бесчисленные фотографии квартир на стыке эпох. То что надо.
331 951193
>>51171
Если чисто для прототипирования, там прямо в ассетлибе уже есть паки с мебелью лоуполи. Совковый вид придашь им позже. Сначала прототип сделой, чтоб всё игралось.

Я серьёзно.

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

https://godotengine.org/asset-library/asset/2622
https://godotengine.org/asset-library/asset/2125
https://godotengine.org/asset-library/asset/2122
332 951197
>>51193
Двачую, сначала блокинг надо, иначе во что играть непонятно.
333 951219
>>51193
Это все хорошо если построен рабочий процесс. У меня сейчас с импортом практически каждой модели сплошной the art of zoo. Каждый раз думаешь что разобрался, делаешь в следующий раз по отработанной схеме и снова какая-то дич.
Как же годот этим надоел.
334 951224
>>51219
У годота с этим вообще проблемы нет.
Конечно, у тебя будет проблема зоопарка, потому что ты качаешь модели созданные разными художниками в разном софте по разному пайплайну
Если бы ты делал их все сам, то они и были бы однообразными.
335 951225
>>51219
Чувак, ты не слушаешь, что тебе пишут. Какой в пизду импорт? Не грузи контент, пока у тебя игры нет. Нахуй тебе этот холодильник, блять? Сделай куб потолще и куб потоньше и оттачивай алгоритмы открытия дверцы на кубах, оттачивай хранение элементов в контейнере, оттачивай перемещение элементов в инвентарь.

Еще раз: Нахуй. Тебе. Сейчас. Импорт. Контента?
336 951226
>>51225
Не, он все правильно делает, надо сразу делать с контентом, чтобы был look and feel. Накидает моделек 20 и уже можно их двигать. Это немного дольше, день потратит, зато блокинг уже будет делать сразу в приближенном к атмосфере реузльтату.
337 951227
>>51224

> У годота с этим вообще проблемы нет.


На трёшке сидишь небось?
В четвёрке есть проблемы с импортом, о чем рассказал Петя Сканер в недавнем видосе. Проблемы впрочем фиксятся самописным скриптом. подробности там: https://www.youtube.com/watch?v=R0PDD7qIHbM
338 951229
>>51226

> нет! яскозал! buzz word! чисто по ощущениям быстрее! диванчую!

339 951230

>ваш блокинг не блокинг мой блокинг блокинг


https://www.youtube.com/watch?v=1SnMfyV5hXM
340 951231
>>51227
Какая именно проблема? Я в 4-ку закидывал gltf и все работает. Я же сам этот список моделек и скинул, потому что расставлял их по сцене. Может ты галочки в импорте не те выставил?
image.png324 Кб, 930x988
341 951238
https://godotengine.org/article/dev-snapshot-godot-3-6-beta-5/

Я правильно понимаю, что в Годот 3.6 теперь будут автолоды и 3Д батчинг, а в 4.3 - нет?
342 951243
>>51238
Как я понял из своих тестов это не вполне 3д батчинг. Это слепление мешей в одну большую меш, буквально, и там много ограничений. Нужны одинаковые материалы, слои, светотеневые настройки. Никто из слепляемых мешей не должен двигаться по-отдельности. Для 4 хватает аналогичных плагинов.

Про автолод хз.
343 951245
>>51238
Лоды и автолоды давно в 4-ке есть.

Меш мерджинг - это соединение всех мешей в один, прикрутили API функцию для этого, наверное, больше года назад, а вручную всегда можно было сделать, если знать, что делаешь. Суть в том, чтобы много мелких статичных мешей сделать одним целым. Для Vulkan эта фича не особо нужна.
344 951247
>>50787

>1. Физическая коллизия обычно значительно меньше


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

>2. В физические объекты нельзя войти, на то они и физические


Так ты и не должен ходить сквозь дверь, например, пока не нажмёшь кнопку открытия двери. Смысл делать дверь интерактивной, если она без физики?

>Рейкасты - не сюда. Это в 3д взаимодействие зависит от направления взгляда (и то, только если игра от первого лица); в 2д же оно зависит просто от положения персонажа в пространстве.


Возьмём Terraria: чтобы открыть дверь, нужно навести мышкой на неё и нажать кнопку. Но, если не ошибаюсь, сделать это можно только если между персонажем и дверью нет препятствий, т.е. кроме положения мышки ещё делается рейкаст.

В 3D играх тем более: ты не хочешь, чтобы игрок мог случайно активировать что-то за спиной, он должен обязательно прицеливаться на конкретный объект.

>>запросить списки всех пересекающихся тел и зон


>В контексте обсуждаемой задачи, как ты предполагаешь использовать эту информацию?


Простейший пример:

>if event.is_action_pressed("interact"):


>_ for area in _interaction_area.get_overlapping_areas():


>_ _ if area.has_method("interact"):


>_ _ _ area.interact(self)


>_ _ _ break


Или так:

>if event.is_action_pressed("interact"):


>_ for area in _interaction_area.get_overlapping_areas():


>_ _ if area is InteractionTrigger:


>_ _ _ area.interact(self)


>_ _ _ break

345 951248
Что будет, если я возьму платные ассеты на итч.ио и просто перерисую их почти пиксель в пиксель, но в другой палитре? Для коммерческого проекта? Как эти дятлы докажут, что я что-то спиздил? И вообще, будет ли кому-то не похуй?
346 951249
>>51243
>>51245
Понял, спасибо за объяснения. Все равно не понимаю зачем добавлять новый функционал в устаревшую ветку софта, которую неизбежно забросят в будущем, но ладно.
347 951250
>>51248

>Как эти дятлы докажут, что я что-то спиздил?


Тебе сюда: https://2ch.hk/law/ (М)
348 951251
>>51249

>зачем добавлять новый функционал в устаревшую ветку софта


На то есть несколько причин:
1. Рендерер 4 переписывали с нуля, поэтому OpenGL (compatibility) недоделанный, старых фич не хватает.
2. GLES2 в 4 нет, только GLES3.
3. Vulkan не у всех работает, особенно на мобилках.
4. В целом движок стал более требовательным, особенно это было заметно до релиза 4.0/4.1.
5. Внесли кучу изменений в GDScript, язык сцен, API движка и ещё много куда, конвертировать проект сложно, будет куча косяков, даже если получится.

Итого: новая версия движка не подходит тем, у кого слишком старый компьютер или телефон, и создаёт большие трудности с переносом большого проекта предыдущей версии. Часть уже вышедших игр отказались от перехода из-за этих проблем.

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

Народный движок же, для всех и каждого.
349 951256
>>51249

>в устаревшую ветку софта, которую неизбежно забросят


Не шути так.
350 951262
>>51249

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


Слышь, ты вот это не это. Я как раз на ней проект пилю, и оче жду фичи 3.6. Цикл разработки средних игр даже у компаний, а не только в соло, запросто доходит до 3-4 лет. Устраивать переход на новую мажорную версию посреди этого цикла - такая себе затея.
351 951264
>>51243

>там много ограничений. Нужны одинаковые материалы, слои, светотеневые настройки.


Не увидел ничего "ненастоящего". Это самый обычный, настоящий, статический батчинг.
352 951268
>>51054

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


>>51060

>Тиринг проблема редкая и микросекундная. Всинк проблема постоянная.


>>51063

>Я тебе не говорю что тиринг не проблема. Я говорю что всинк проблема хуже.


Почему ты так считаешь? Где пруфы?

V-sync не добавляет задержки выше одного кадра. Видеокарта просто ждёт следующего обновления дисплейных мозгов, чтобы актуальные данные не смешивались с неактуальными.

Я v-sync отключаю только когда видеокарта не справляется, ставлю ограничение на 30 кадров.
353 951275
>>51060
Тем более, что всинк тиринг нихуя не лечит.
354 951276
Сап, аноны, хочу вкатиться в разработку игр, побаловаться слегка.
Но вначале думаю вспомнить/подтянуть матан, этого хватит или есть что-то лучше? https://www.youtube.com/playlist?list=PLImQaTpSAdsArRFFj8bIfqMk2X7Vlf3XF

И какую версию годота сейчас лучше использовать 3 или 4? Вроде и та и та обновляется...
355 951277
>>51276
Начинай делать игру и изучай отдельные нужные тебе темы, пока запал не пропал.
356 951280
>>51276

>вкатиться в разработку игр, побаловаться слегка.


>Но вначале думаю вспомнить/подтянуть матан


Матан тебе сейчас вообще не нужен. Изучай язык GDScript, основные концепции Godot и т.д.
https://docs.godotengine.org/en/stable/getting_started/introduction/index.html
По матану лучше всего читать в доках:
https://docs.godotengine.org/en/stable/tutorials/math/index.html
Делаешь что-то, не получается -> ищешь в интернете, изучаешь соответствующие темы, решаешь задачу. Абстрактный матан в геймдеве не нужен.

>версию годота


Бери актуальную стабильную 4.2.2 (x64 без C#).
https://godotengine.org/download/
Godot 3 остался ради поддержки старичков.
357 951281
>>51123
Я бы на твоём месте CSG кубов накидал бы.
https://docs.godotengine.org/en/stable/tutorials/3d/csg_tools.html

Порядок работы такой:
1. Создаёшь сцену table.tscn;
2. Накидываешь примерно стол из CSG кубов;
3. Расставляешь это по своей унылой локации;
4. Тестируешь...
5. Когда всё хорошо, заменяешь CSG на меши ВНУТРИ этой самой сцены table.tscn - они магическим образом встают на свои места как надо. Или не встают.
6. Тестируешь...
7. ???
8. У тебя восхитительная игра и ты молодец.
358 951282
>>51280

>старичков


Вот сейчас обидно было.
359 951286
>>51280
Спасибо, анон!
360 951287
>>51282
Тебе приятнее "олдфаг"? old fag = старый педик
И вообще, речь шла о старых проектах.
image.jpeg533 Кб, 1200x675
361 951290
>>51226

>надо сразу делать с контентом, чтобы был look and feel. Накидает моделек 20 и уже можно их двигать.


Надеюсь, что ты так хитро ньюфага троллишь...

>зато блокинг уже будет делать


>блокинг


Значение знаешь?
https://book.leveldesignbook.com/process/blockout

Вкратце про графику в ААА игорах с примерами:
https://youtu.be/NedDxIGQVs0
В инди эта стадия тебе тем более необходима.

Готовыми ассетами только ассетфлипы лепят.
17138137887470.jpg141 Кб, 768x768
362 951293
>>51281
У меня по мелким проектам уже выработалась стратегия. Сначала я полностью делаю небольшой кусочек, чтобы отработать скелет рабочего процесса - импорт, структура каталогов, освещение, текстурирование, базовые сущности, взаимодействие с объектам, перемещение. Так же будет и в этот раз. Сейчас я сделаю плюс-минус законченную квартиру ГГ с базовыми взаимодействиями, а потом пойду накидывать описанную тобой базу на остальные этажи.
363 951294
>>51287
Сейчас принято говорить "скуфы"
364 951302
>>51293
А игру-то ты хоть выпустил? Стратег бля
Screenshot23.png426 Кб, 599x567
365 951305
>>51219
Разобрался с ебучим холодильником.
Оказалось что glTF формат поддерживает только ORM материалы, то есть материалы, в которых Occlusion, Roughness и Metallic текстуры объединены в одном изображении путем их сохранения в Red, Green и Blue каналы соответственно, при этом автоматическое объединение этого дела в одну текстуру в момент конвертации blend-файла в glTF не предусмотрели. Ну а так как я скачивал FBX модель с текстурами выше по отдельности, то получалась мешанина из поста выше.
Пада-пиду-пу, хрррр тьфу.
366 951307
>>51305
Ну тут двоякая ситуация. Когда скачиваешь со скетчфаба, там есть glb/gltf, но они автоконвертированы самим сайтом. А вот то что идет первым файлом, там часто fbx который выложил автор, а иногда там бывает не только fbx, а и исходник или что то другое вроде obj.
Это к тому, что иногда, наоборот, gltf оказывается порченым сайтом, а модель автора можно как то самому допилить. А бывает как в этом случае, исходник глючит, а gltf нормальный. Тут не угадаешь, увы.
367 951308
>>51290
Нет, я абсолютно серьезно. Ты что, серьезно видишь в верхней пикче нижнюю? Я например нет. Наверное на такое способен только сеньор левелдизайнер с опытом от 5 лет. Как я уже сказал, импортировать десяток моделей - недолго, тратишь день и у тебя уже есть пропсы для блокинга, которые дают именно представление общей картины.
Честно скажу, что я кубами как то пробовал, ну и получилась игра про кубы, в кубостиле. А там, где делал хрущи сразу, получились няшные квартирки.
368 951309
>>51290
Опять же понятно почему так делают в студиях. Там разделение труда, левел дизигнер расставляет, потом заменяет на то, что ему моделит моделлер. Он не может этим управлять, ему сказали сделать левел к сроку и он делает, и повлиять на моделлера он тоже не может, у того свои сроки. У нас соло индюков такой проблемы нет. есть другие
369 951311
>>51309
Так-то половина игр из поста на который ты отвечаешь - индюки.

>>51308

>Ты что, серьезно видишь в верхней пикче нижнюю? Я например нет.


Это типичная проблема рисовак, смотрю на пустой холст и вижу ничего, пока у другого там воздушные замки. Проходит с практикой.
image.png777 Кб, 1280x720
370 951314
https://godotengine.org/article/progress-report-web-export-in-4-3/

TLDR: Новый фуллтайм разработчик веб-экспорт подтягивает. Шаредбуффер теперь не нужен, в однотредовом веб-экспорте улучшат звук для слабых девайсов. Следующий шаг - сжимание шакалов размеров билда.
371 951315
>>49247 (OP)
Анончик, тупой вопрос задам. На годоте возможно сделать мморпг, на 500-1000 челов? Просмотрел, и чет похожих игр не увидел. На юнити, точно знаю, что можно.
372 951316
>>51315
Неа. Не выйдет. Посмотрел сам
373 951317
>>51315
>>51316
Ты бы клон флаппи берд для начала сделал. На любом движке. Тогда не пришлось бы тупые вопрос задавать.
374 951319
>>51247
Чел, ты...

>1.


>2.


Тут ты жопой прочитал исходное утверждение и хуй знает с чем вообще споришь.

>Возьмём Terraria


Не возьмём. Подобное управление для 2д - большая редкость. Посмотри лучше на более типичный пример - Hollow Knight.

>В 3D играх тем более:


Про 3д мы не говорим. Вообще. Совсем. Забудь про 3д. Лучше используй этот участок памяти для того, чтобы помнить контекст разговора хотя бы на 2-3 предложения назад.

>Простейший пример


Нихуясе, ты предлагаешь инпутами дёргать все интерактивные объекты в сцене и пытаться понять, в каких из них есть персонаж? Вообще-то все нормальные люди делают наоборот: персонаж запоминает, куда он зашёл или вышел, и по инпуту тыркает те ареи, внутри которых сейчас находится.
376 951327
>>51315
Да, на годоте точно можно сделать. Это опен сорс движок на с++, поэтому можно написать максимально оптимизированный сервер. Если твой вопрос "можно ли просто натаскать моделек и написать говноскриптов" то конечно нет.
Насчет того, что ты написал, есть большие сомнения. В больших ммо, обычно игроков 100 только позволяют на боевых картах. Иначе потом все лагает. А во многих еще меньше, в районе 32. 500 может быть запускают в какую нибудь городскую сейф локацию, где мало событий пересылается. Ну и да, кекнул с твоего оптимизма, где ты столько игроков зазывать будешь. Не во всех коммерческих то столько приходит одновременно.
377 951328
>>51314
Хорошо, но мы уже научились в 3-ке прикручивать js-плеер аудио, так что пока посидим.
378 951329
>>51311
Два момента. Во первых, может быть ему действительно неважно как его игра выглядит, если у него аркадка, где все равно какие скины стен потом натянуть. Во вторых, может быть он тоже наслушался советов касающихся студий, и зачем то применил к себе. Знаешь, это как с git flow, кто то просто по привычке с большой работы перетаскивает в личный проект, начинает открывать новые ветки, мержить их.
379 951351
>>51314
Не совсем так. Аудио там только пиар, который будет экспериментальным в 4.3, а допиливать будут в 4.4
380 951361
Какие подводные двигать не чарактер3д, а его колижн-форму?
381 951364
>>51327
Пасиб за инфу. Я в 5 утра зачем то под пивом в тред зашел и чет написал. Меня попросили посмотреть инфу, для создания оверлея/игры для твича. Вот и "Онлайн" такой со старта. В итоге решили на годоте спратиков накидать на поле и все. Переизобретаем stream squad
382 951371
>>51361

>двигать не чарактер3д, а его колижн-форму


Проблема XY. Зачем тебе это делать?

>Какие подводные


1. Само движение коллизии не доставляет особых проблем, но если у тебя сотни коллизий и ты их все хочешь как-то передвинуть за один кадр, это может перегрузить процессор и вызовет "тормоза".
2. Если новая коллизия находится ВНУТРИ какого-то физического объекта, может произойти следующее:
2.1. Если это ригидбоди и он настроен регистрировать столкновения от кинематиков, то он попытается сам выбраться и улетит прочь со скоростью звука.
2.2. Если это статикбоди или любое игнорирующее кинематики тело, тогда при следующеем применении move_and_slide() кинематик резко выскочит из него.
3. В худшем случае можно застрять так, что часть коллиженшейпов с одной стороны, а часть с другой, и ты никак не можешь сдвинуть ни то, ни другое.
4. Если ты что-то с ногами делаешь и у тебя тонкий пол, игрок может провалиться в бездну, но это-то в играх легко фиксится телепортом при Y < min_height.
5. Любые застревания будут заметны для игрока невооружённым глазом и влиять на геймплей.
примерка пилотки.png396 Кб, 758x664
383 951373
>>51364

> в 5 утра


> под пивом


Хотел поискать мем подходящий, чтобы выразить своё фи бухающему с утра пивному алкашу, а тут нагуглилось вот такое. Не могу не поделиться. Как же велик и могуч русский язык!
384 951379
>>51371
Спасибо. В точности проблема XY. Но это простой как пробка объект, он один и двигается по заранее известной траектории. Думаю ни один из этих камней не вылезет. Надеюсь. Ну, просто лень рефакторить код для учета одного-единственного случая.

Потестил немного - в моих условиях ведет себя ок. Оставлю.
385 951381
>>51308

>Ты что, серьезно видишь в верхней пикче нижнюю? Я например нет. Наверное на такое способен только сеньор левелдизайнер с опытом от 5 лет.


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

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

>Как я уже сказал, импортировать десяток моделей - недолго, тратишь день и у тебя уже есть пропсы для блокинга, которые дают именно представление общей картины.


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

>Честно скажу, что я кубами как то пробовал, ну и получилась игра про кубы, в кубостиле. А там, где делал хрущи сразу, получились няшные квартирки.


Симулятор ходьбы делал? Берём ситуацию: игрок в негативном отзыве написал, что в игре слишком уж далеко добираться до магазина. И он не один такой, многие игроки из ЦА жалуются на это. Что делать?
- переставишь магазин? Он встроен в модель дома.
- сожмёшь модель дома? Будет выглядеть тупо.
- переделаешь модель дома? Так ты ж не умеешь.
- увеличишь скорость игрока? Будет выглядеть тупо.
- дашь игроку велосипед? Это много работы и может значительно повлиять на другие механики игры.

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

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

>>51309

>левел дизигнер расставляет, потом заменяет на то, что ему моделит моделлер. Он не может этим управлять,


>повлиять на моделлера он тоже не может


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

Сначала левел-дизайнер делает уровень из кубов, определяя точные размеры, расстояние, количество ассетов и т.д. Затем моделлеры берут эти данные от левел-дизайнера и делают модели, примерно как столяр делает мебель по заказу дизайнера.

Т.е. не левел-дизайн зависит от моделей, а модели зависят от левел-дизайна. Это ключевое отличие настоящих, качественных игр от ассет-флипов.

>>51329

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


Что значит "как игра выглядит"? Если берешь чужие модели, то она будет выглядеть как ассет-флип из бесплатных моделек. Ты ж их "импортировал", а не разрабатывал вручную с нуля. И почему считаешь, что геймплей важен только "аркадкам"? Симуляторы ходьбы должны иметь адекватный дизайн уровней, а не абстрактный набор домиков из интернета.

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

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

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

>начинает открывать новые ветки, мержить их


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

Пример:
- Версия игры в релизе: 1.2.
- Работаешь над версией 1.3, в которой добавляешь новую крутую механику, но она пока что сырая и не работает как ты планировал изначально.
- ВНЕЗАПНО игроки докладывают о критическом баге в версии 1.2, который разносит им файловую систему.
- Берёшь ветку 1.2, вносишь правки, релизишь 1.2.1 с багфиксом, но без недоработанной фичи из 1.3.
- Спокойно возвращаешься к работе над веткой 1.3.
385 951381
>>51308

>Ты что, серьезно видишь в верхней пикче нижнюю? Я например нет. Наверное на такое способен только сеньор левелдизайнер с опытом от 5 лет.


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

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

>Как я уже сказал, импортировать десяток моделей - недолго, тратишь день и у тебя уже есть пропсы для блокинга, которые дают именно представление общей картины.


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

>Честно скажу, что я кубами как то пробовал, ну и получилась игра про кубы, в кубостиле. А там, где делал хрущи сразу, получились няшные квартирки.


Симулятор ходьбы делал? Берём ситуацию: игрок в негативном отзыве написал, что в игре слишком уж далеко добираться до магазина. И он не один такой, многие игроки из ЦА жалуются на это. Что делать?
- переставишь магазин? Он встроен в модель дома.
- сожмёшь модель дома? Будет выглядеть тупо.
- переделаешь модель дома? Так ты ж не умеешь.
- увеличишь скорость игрока? Будет выглядеть тупо.
- дашь игроку велосипед? Это много работы и может значительно повлиять на другие механики игры.

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

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

>>51309

>левел дизигнер расставляет, потом заменяет на то, что ему моделит моделлер. Он не может этим управлять,


>повлиять на моделлера он тоже не может


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

Сначала левел-дизайнер делает уровень из кубов, определяя точные размеры, расстояние, количество ассетов и т.д. Затем моделлеры берут эти данные от левел-дизайнера и делают модели, примерно как столяр делает мебель по заказу дизайнера.

Т.е. не левел-дизайн зависит от моделей, а модели зависят от левел-дизайна. Это ключевое отличие настоящих, качественных игр от ассет-флипов.

>>51329

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


Что значит "как игра выглядит"? Если берешь чужие модели, то она будет выглядеть как ассет-флип из бесплатных моделек. Ты ж их "импортировал", а не разрабатывал вручную с нуля. И почему считаешь, что геймплей важен только "аркадкам"? Симуляторы ходьбы должны иметь адекватный дизайн уровней, а не абстрактный набор домиков из интернета.

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

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

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

>начинает открывать новые ветки, мержить их


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

Пример:
- Версия игры в релизе: 1.2.
- Работаешь над версией 1.3, в которой добавляешь новую крутую механику, но она пока что сырая и не работает как ты планировал изначально.
- ВНЕЗАПНО игроки докладывают о критическом баге в версии 1.2, который разносит им файловую систему.
- Берёшь ветку 1.2, вносишь правки, релизишь 1.2.1 с багфиксом, но без недоработанной фичи из 1.3.
- Спокойно возвращаешься к работе над веткой 1.3.
386 951384
>>51381
Просто БАЗА! Ни добавить, ни убавить.
мимо
387 951389
>>51381
Показывай свою игру.
388 951391
>>51384
Шиза.
17157731276951.jpg12 Кб, 144x411
389 951392
>>51305

>Оказалось что glTF формат поддерживает только ORM материалы,


>скачивал FBX модель с текстурами выше по отдельности, то получалась мешанина из поста выше.


Ты уверен, что проблема только в этом?

Я на твоём скриншоте вижу потерянные грани из-за backface culling. Проверь, что у тебя в текущем материале включён backface culling, поскольку материалы из Блендера по умолчанию рендерят все грани без разбора. Куллинг задних граней нужен, чтобы рендерер не перегружался лишним мусором, но в кривых моделях некоторые грани могут быть вывернуты наизнанку. Проверить грани можно, открыв в Блендере и выбрав Viewport Overlay -> Face Orientation. Убедись, что все видимые снаружи грани синие, а не красные - красным нужно вывернуть нормали (в режиме редактирования геометрии: shift + N для автоматического, alt + N для ручного выбора).
https://docs.blender.org/manual/en/latest/editors/3dview/display/overlays.html#geometry
390 951393
>>51392
Надо прозрачность проверить, вроде скетчфаб в gltf ее включает везде не к месту.
391 951394
>>51373
Кто то бывшим пишет, а я начинаю щитпостить на борде.
1715863690947.gif150 Кб, 446x452
392 951396
>>51389
Но сегодня не субшота. Ну да ладно. Держи!
393 951397
>>51396
Да, сразу видно пользу советов.
394 951401
>>51396
Ты зачем мной представляешься?

>>51397
>>51389

>СПЕРВА ДОБЕЙСЯ!!1


Я просто пересказываю своими словами то, что и так всем должно быть известно. У меня нет пока готовой игры, только прототипы, но они в основном в 3D. Я не стремлюсь максимально быстро выблевать в Яндекс.Игры какой-то ассет-флип, понимаешь?

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

> Ты зачем мной представляешься?


Потому что твоему оппоненту похуй, он жирнющий тролль, а ты его кормишь.
396 951404
>>51401
Всем должно быть известно, что есть случаи для которых подходит самосвал, а для которых подходит Ламборгини. Если ты делаешь спинномозговую аркаду - вопросов нет, тебе надо больше двигать блоки. А если анон делает атмосферный хоррор, то профит от расстановки шкафа есть, а от двиганья белых кубов нет. А ментальные усилия на это одинаковые, кроме первоначального вклада времени на импорт.
>>51403
Не тролль.
397 951409
>>51319

>>Terraria


>Подобное управление для 2д - большая редкость.


>более типичный пример - Hollow Knight.


В 2D с видом сбоку я чаще играл в разные клоны Terraria, чем в метроидвании. Если честно, только недавно начал пробовать метроидвании, т.к. не люблю жанр платформеров. Террария, как по мне - идеальный платформер, ведь на её базе возможно реализовать что угодно, и другие 2D платформеры после неё особо не нужны.

>>В 3D играх тем более:


>Про 3д мы не говорим. Вообще. Совсем.


Интерактивность объектов не зависит от 2D/3D, если мы говорим об организации скриптов игры.

>ты предлагаешь инпутами дёргать все интерактивные объекты в сцене и пытаться понять, в каких из них есть персонаж? Вообще-то все нормальные люди делают наоборот: персонаж запоминает, куда он зашёл или вышел, и по инпуту тыркает те ареи, внутри которых сейчас находится.


С чего ты это взял? Зачем что-то запоминать?

На персонаже висит Area2D с круглой коллизией, назовём её InteractionRadius и настроим её на регистрацию коллизий с определённым слоем, который назовём Interactives. На интерактивных объектах висят Area2D, назовём их InteractiveTrigger и поместим их в слой Interactives, отключив им мониторинг, потому что сами они ничего делать не будут. В интерактивных объектах нет никакого кода, кроме одной функции interact(with_whom) и связанных с ней действий, весь код исполняется только со стороны игрока внутри его _unhandled_input(). Код игрока, при нажатии кнопки взаимодействия, спрашивает у InteractionRadius, какие InteractiveTrigger находятся в зоне досягаемости? И если какие-то доступны, а скорее всего только одна, у неё исполняется метод interact(), который делает то, для чего создан этот предмет (дверь открывается, выключатель на стене включает источник света, автоматическая турель включает боевой режим, и т.д.). Никакие сигналы тут не нужны и тем более не нужно по всем объектам в мире бегать, мы же получаем только список ближайших.

Если тебе нужно показать подсказку "нажмите E, чтобы взаимодействовать", тогда ты можешь в _physics_process игрока один раз спрашивать InteractionRadius.has_overlapping_areas(), это не будет затратной операцией, потому что всего один запрос к одной ноде, у тебя на движение A/D наверняка уходит больше времени, чем на это. Поскольку InteractionRadius настроена воспринимать только определённый слой, в котором существуют только InteractiveTrigger, её работа не должна существенно влиять на физический движок.
397 951409
>>51319

>>Terraria


>Подобное управление для 2д - большая редкость.


>более типичный пример - Hollow Knight.


В 2D с видом сбоку я чаще играл в разные клоны Terraria, чем в метроидвании. Если честно, только недавно начал пробовать метроидвании, т.к. не люблю жанр платформеров. Террария, как по мне - идеальный платформер, ведь на её базе возможно реализовать что угодно, и другие 2D платформеры после неё особо не нужны.

>>В 3D играх тем более:


>Про 3д мы не говорим. Вообще. Совсем.


Интерактивность объектов не зависит от 2D/3D, если мы говорим об организации скриптов игры.

>ты предлагаешь инпутами дёргать все интерактивные объекты в сцене и пытаться понять, в каких из них есть персонаж? Вообще-то все нормальные люди делают наоборот: персонаж запоминает, куда он зашёл или вышел, и по инпуту тыркает те ареи, внутри которых сейчас находится.


С чего ты это взял? Зачем что-то запоминать?

На персонаже висит Area2D с круглой коллизией, назовём её InteractionRadius и настроим её на регистрацию коллизий с определённым слоем, который назовём Interactives. На интерактивных объектах висят Area2D, назовём их InteractiveTrigger и поместим их в слой Interactives, отключив им мониторинг, потому что сами они ничего делать не будут. В интерактивных объектах нет никакого кода, кроме одной функции interact(with_whom) и связанных с ней действий, весь код исполняется только со стороны игрока внутри его _unhandled_input(). Код игрока, при нажатии кнопки взаимодействия, спрашивает у InteractionRadius, какие InteractiveTrigger находятся в зоне досягаемости? И если какие-то доступны, а скорее всего только одна, у неё исполняется метод interact(), который делает то, для чего создан этот предмет (дверь открывается, выключатель на стене включает источник света, автоматическая турель включает боевой режим, и т.д.). Никакие сигналы тут не нужны и тем более не нужно по всем объектам в мире бегать, мы же получаем только список ближайших.

Если тебе нужно показать подсказку "нажмите E, чтобы взаимодействовать", тогда ты можешь в _physics_process игрока один раз спрашивать InteractionRadius.has_overlapping_areas(), это не будет затратной операцией, потому что всего один запрос к одной ноде, у тебя на движение A/D наверняка уходит больше времени, чем на это. Поскольку InteractionRadius настроена воспринимать только определённый слой, в котором существуют только InteractiveTrigger, её работа не должна существенно влиять на физический движок.
398 951411
Кто в курсе, на яндекс играх сложно модерацию пройти?
399 951414
>>51409
Впрочем, ладно, можно сигналы входа/выхода использовать, в некоторых ситуациях это проще, например, если объект должен включать контурную подсветку, пока рядом находится игрок - этим должна управлять InteractiveTrigger.

Просто у меня постоянно проблемы с этим: либо сигнал входа не срабатывает, либо сигнал выхода не срабатывает, какая-то ошибка в логике движка.

Может быть, в 4.3 наконец-то пофиксят эти баги.
400 951415
>>51404

> Не тролль.


Нет ты.
401 951416
>>51414

>этим должна управлять InteractiveTrigger.


...ааа, не-не, в 3D этим должен рейкаст управлять, иначе все объекты возле игрока светиться будут.

Походу, универсального решения нет.
402 951417
>>51411
Да. В прошлом-позапрошлом треде анон страдал неделями. Можешь сходить почитать.
403 951418
Как набрать бета-тестеров? На днях на реддите видел такой подход. Чел постит видос, ловит среди комментаторов самых заинтересованных, и отправляет им в личку линк на приватный проект на итч.ио. Делал так кто-нибудь из местных? Выхлоп по фидбеку есть?
404 951421
>>51404

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


Тащем-то да, тут не поспоришь.

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


Ты всё ещё не понял сути блокинга в левел-дизайне.

Разберём жанр хоррора. Хороший хоррор должен чётко отмерять время, которое нагнетает у игрока ощущение страха перед чем-то опасным. Если хоррор слишком затягивает с этим, то игроку становится скучно бродить по коридорам. Если же хоррор на каждом шагу скриммеры в лицо суёт, то игрок привыкает и перестаёт бояться. Должен быть баланс, и он зависит от того, как устроены локации и что в них игрок делает, а это, опять же, зависит от геометрии уровней, а не от текстуры кирпича на стенах и не от деталей полки в модельке холодильника.

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

Но это если ты хочешь хороший хоррор сделать, а не очередной "инди-хоррор" из бесплатных моделек зомби и обосранных коридоров с мусором.

>усилия на это одинаковые


Ты просто не видишь подводных камней.

Правильный блокинг позволяет избежать переделывания ассетов в будущем. Ты заранее отменяешь участки, расставляешь триггеры событий и т.д. В дальнейшем ты это всё менять не будешь, не будешь переставлять по карте холодильники, двери и мобов. Если же ты берёшь готовые модели и пытаешься из них что-то слепить, ты можешь обнаружить, что модели к чему-то не подходят, что ты не можешь сделать из них то, что тебе хочется, и т.д. Тебе придётся править модели, искать или делать новые. В общем, без блокинга ты можешь застрять на переделывании уже готовых моделей под конкретные ситуации, что может быть даже сложнее, чем делать с нуля.
404 951421
>>51404

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


Тащем-то да, тут не поспоришь.

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


Ты всё ещё не понял сути блокинга в левел-дизайне.

Разберём жанр хоррора. Хороший хоррор должен чётко отмерять время, которое нагнетает у игрока ощущение страха перед чем-то опасным. Если хоррор слишком затягивает с этим, то игроку становится скучно бродить по коридорам. Если же хоррор на каждом шагу скриммеры в лицо суёт, то игрок привыкает и перестаёт бояться. Должен быть баланс, и он зависит от того, как устроены локации и что в них игрок делает, а это, опять же, зависит от геометрии уровней, а не от текстуры кирпича на стенах и не от деталей полки в модельке холодильника.

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

Но это если ты хочешь хороший хоррор сделать, а не очередной "инди-хоррор" из бесплатных моделек зомби и обосранных коридоров с мусором.

>усилия на это одинаковые


Ты просто не видишь подводных камней.

Правильный блокинг позволяет избежать переделывания ассетов в будущем. Ты заранее отменяешь участки, расставляешь триггеры событий и т.д. В дальнейшем ты это всё менять не будешь, не будешь переставлять по карте холодильники, двери и мобов. Если же ты берёшь готовые модели и пытаешься из них что-то слепить, ты можешь обнаружить, что модели к чему-то не подходят, что ты не можешь сделать из них то, что тебе хочется, и т.д. Тебе придётся править модели, искать или делать новые. В общем, без блокинга ты можешь застрять на переделывании уже готовых моделей под конкретные ситуации, что может быть даже сложнее, чем делать с нуля.
1715867941333.png47 Кб, 1554x844
405 951423
>>51416
Универсального решения нет. Есть классическое. О нём я написал ещё в прошлом треде.
1. У игрока рейкаст на максимальную длину интеракций игрока, например 10 юнит-метров, на которые он может крикнуть "стой кто идёт!"
2. У интерактивных предметов область (Area) внутри которой игроку разрешено интерактировать.
3. Игрок интерактирует только с тем, на что смотрит мышкой.
4. Сообщение об интеракции выводится если игрок пересекается с зоной предмета.

> if raycast.is_colliding() and raycast,collider is Area3D and self in raycast,collider.get_overlapping_bodies(): UI.show...



Вот я вам даже пикчу нарисовал. Поймите уже наконец!
406 951428
>>51417
Оке
мимо.jpg37 Кб, 800x840
407 951429
>>51423

>У интерактивных предметов область (Area) внутри которой игроку разрешено интерактировать.


>self in raycast.collider.get_overlapping_bodies():


Зачем, если у тебя и так рейкаст кидается?
408 951430
>>51423
>>51429
А, стоп, кажись понял, т.е. если у предмета можно взаимодействовать только с одной стороны... Но в таком случае пусть луч останавливается в т.ч. препятствиями, а не только Area3D объектов.
409 951434
>>51418

>Как набрать бета-тестеров?


Есть куча способов. Вопрос в том, какие именно тестировщики нужны, готов ли выложить игру на публику раньше или хочешь NDA, бюджет и т.д.

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

Есть профессиональные тестировщики за деньги, по кусочкам игру разберут и все баги найдут. Но им, как я понимаю, нужно чёткое ТЗ, что тебе тестировать.

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

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

Реддит - помойка типа Пикабу, только глобальная. Там очень не любят спам и самопиар, а в геймдев сабреддитах такие же как ты геймдевы сидят. На новом аккаунте легко попасть в шедоубан.
410 951440
>>51430
>>51429
Ща погодь, я сам уже запутался. Всё не так.Щас накидаю тестовую сцену.
411 951443
>>51434
Я соло, масштаб маленький, сам понимаешь. Никакие NDA не нужны. Мне просто нужен десяток-два ранних и подробных отзывов, чтобы понять в том ли я направлении иду и, если что, скорректировать направление. Все друзья-знакомые уже использованы и заебаны.
412 951445
>>51440
>>51430
>>51429
Ну вот, смотрите сюды. Нужно три скрипта. На игрока, разумеется, скрипт-рейкаст. На интерактивный объект короткий скрипт-геттер. И на арею скрипт, который чекает вход-выход.

Всё ясно из кода, ящитаю:
1715874888254.png3 Кб, 235x160
413 951446
>>51445
И в результате имеем:
414 951450
>>51445
И ещё один момент. Если мы посмотрим на > Сцена.png то может сложиться ошибочное мнение, что область должна быть вложенной в интерактивный объект, но нет, если мы внимательно посмотрим на скрипт > Area.gd.png то мы увидим, что объект задаётся в инспекторе, и область может быть накинута на любой объект как внешний компонент, или контроллер. Таким образом, для двигающихся объектов можно вкладывать её внутрь, а для выключателей каких-нибудь, просто разместить в нужном месте.
Пикрелейтед.
Поменял положение ареи в сцене - код работает как работал. Арея осталась перед игроком, а объект улетел. Но пока игрок не вышел из ареи, ссылка на улетевший объект висит в массиве.

Это можно использовать как геймплей.
415 951452
>>51421
Ну ты когда сделаешь игру по таким принципам, тогда приноси и покажешь ее, а я пока буду ставить шкафы там где хочу ставить шкафы, а не придумывать что же именно должно быть на месте белого кубика посередине комнаты. А потом сравним результаты.
416 951453
>>51423
Можно сделать менеджер взаимодействий. Тогда не будет проблемы, кто должен обрабатывать взаимодействие, игрок или предмет. А еще, в теории более расширяемая система, например можно добавить нескольких персонажей.
417 951454
>>51453
Код в предыдущих постах - это уже готовый менеджер. (Если точнее, ты просто ебанул в код экспортную переменную и у тебя уже менеджер, он уже манагерит данные, которые ты ему в инспекторе подсунешь). А вот как это выглядит с лейблом на экране. Первые две пикчи - игрок в зоне действия только "шкафчика", вторые две пикчи - игрок в зоне действия и "шкафчика" и "унитаза".
0095-0914.mp47,1 Мб, mp4,
1024x768, 0:27
418 951473
>>51392

>Я на твоём скриншоте вижу потерянные грани


>>51393

>Надо прозрачность проверить



Да, это был косяк прозрачности. В текстуре холодильника, дырки под решетки нарисованы альфа каналом. Если в настройках материала выставить Alpha Hashed в Blend Mode то движок сделает прозрачным не только участки меша с альфой но и весь меш между камерой и участком с альфой - то бишь стенку холодильника между решеткой и камерой.
Удалось вылечить назначив полигонам с решеткой отдельный материал, то есть весь холодильник имеет свой материал с Blend Mode - Opaque, а 4-ем полигонам с решеткой назначена копия этого материала но с Blend Mode - Alpha Hashed.

Подробно это дерьмо нигде не описано поэтому опять пришлось всрать уйму времени на метод научного тыка.
419 951476
>>51473
При импорте есть пункт меню импортировать материалы отдельными .material файлами, они сохранятся отдельно и можно их менять свободно.
Еще вариант, вроде бы gltf текстовый файл наподобие json, и там где то можно тупо в текстовом редакторе (только тяжеловесном, не блокноте) или скриптом менять. Наверное. Вроде бы получалось пару лет назад.
420 951478
>>51473

> 0095-0914.mp4


Ля кокая! Скоро поиграем!
421 951482
>>51476

>сохранятся отдельно и можно их менять свободно


>в текстовом редакторе (только тяжеловесном, не блокноте) или скриптом менят



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

>>51478

>Ля кокая! Скоро поиграем!



Ой не скоро, если так и буду спотыкаться.
422 951484
>>51482
Формат gltf описан в интернете. Поля ORM и Стандарт материала описаны в документации. 2 и 2 сопоставить уже должен ты сам. Как бы это очевидно что дело или в прозрачности или в куллинге. Документация никак не сможет угадать, какую модельку и откуда ты скачаешь. А перечислять все соответствия - бред. Это превратит документацию просто в кашу из перечислений полей, которую никто не сможет прочитать. Впрочем, тебе никто не мешает отправить пулл реквест в документацию, если ты считаешь, что можешь сформулировать что-то лучше.
5llikl.png257 Кб, 426x454
423 951488
424 951490
>>51488
Могу нахуй послать.
1715884513547.mp4388 Кб, mp4,
1152x648, 0:07
425 951491
Девочьки, не ссорьтесь!
Игры делойте, ну.
426 951497
>>51445
>>51454
>>51491
Так зачем арея-то, если луч есть? Зачееем?

>>51450

>Поменял положение ареи в сцене - код работает как работал. Арея осталась перед игроком, а объект улетел. Но пока игрок не вышел из ареи, ссылка на улетевший объект висит в массиве.


ЗАААЧЕЕЕМ???

Я понимаю, если это какой-то гениальной задумкой геймдизайнера обосновано, но ты скрестил ужа с ежом и сам объяснить не можешь, зачем это сделал.
427 951498
>>51490
Можешь, а делать что-нибудь умеешь?
428 951501
>>51497

> и сам объяснить не можешь, зачем это сделал


Объект наносит урон N в секунду, если находишься поблизости. или объект - мина с таймером, которая активируется, когда ты приблизился, и нужно успеть деактивировать.
Вариантов куча. Если ты не можешь ничего придумать - не меряй всех по себе.
429 951502
>>51473

>дырки под решетки нарисованы альфа


Так лучше не делать, альфа дорого стоит щас.
Лучше отсыпать полигончиков, они дешевле.

>Подробно это дерьмо нигде не описано поэтому опять пришлось всрать уйму времени на метод научного тыка.


https://docs.godotengine.org/en/stable/classes/class_basematerial3d.html#enum-basematerial3d-transparency

>>51482

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


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

>>51478

>Скоро поиграем!


В симулятор ходьбы по бесплатным моделькам ты и сам можешь поиграть прямо в своём Godot.

Геймплей-то в чём? По холодильникам шариться?

Так-то он молодец, конечно, старается, камера вон какая прикольная, из-за угла следит, с зумом. Но игры в этом пока что нет и холодильник погоды не делает.
430 951503
>>51497

> гениальной задумкой геймдизайнера обосновано


Рад знакомству. Рад знакомству. Да, это я.
431 951504
>>51502

> Геймплей-то в чём? По холодильникам шариться?


Я ему предложил геймплей в прошлом треде, он проигнорировал. Ну, штош. Посмотрим, что он сам придумает.
432 951505
>>51501

>Объект наносит урон N в секунду


>или объект - мина с таймером


Всё это целесообразнее сделать отдельной сценой, которая вешается на другие - по необходимости.

Вот у тебя есть сцена ball.tscn, ты можешь взять её в руки и бросить куда-то, она отскакивать умеет.

Есть сцена hot.tscn, она наносит урон по области.

Есть сцена time_bomb.tscn, она взрывается.

Итого, ты можешь сделать:
- безопасный мячик для практики бросков;
- горячий мячик, обжигающий руки;
- прыгающую бомбу с таймером;
- обжигающую прыгающую бомбу с таймером.

Добавь сюда glue.tscn и получишь ещё 4 варианта.

Добавь сюда smoking.tscn - будет ещё 8 вариантов.
433 951506
>>51502

>https://docs.godotengine.org/en/stable/classes/class_basematerial3d.html#enum-basematerial3d-transparency



> В документации всё описано подробно,



Закрывая глаза на то что ты линкуешь не описание материала а API материала, ну как покажи мне скриншотом строчку с русским переводом где говориться что Alpha Hashed приведет к прозрачности участка объекта без прозрачности.
434 951507
>>51505

>time_bomb.tscn, она взрывается.


Даже не так, лучше так:
- ball.tscn - прыгает
- - bomb.tscn - способна взорваться
- - - timer.tscn - активирует предка по таймеру
- - - collision.tscn - активирует по столкновению
- - - if_wet.tscn - активирует в воде
И т.д.

Композицией можно много чего сделать...
435 951508
>>51506
Зачем?
436 951509
>>51507

> collision.tscn - активирует по столкновению


Ну и. Вот я и реализовал выше колижн тсцн. Чё доебался?
437 951512
>>51506

>Alpha Hashed приведет к прозрачности участка объекта без прозрачности.


Что ты имеешь в виду?

>The material will cut off all values below a spatially-deterministic threshold, the rest will remain opaque. This is faster to render than alpha blending, but slower than opaque rendering. This also supports casting shadows. Alpha hashing is suited for hair rendering.



>русским переводом


Твоя проблема, что прогуливал школу.

>Материал отсекает все значения ниже пространственно определяемого порога, остальные остаются непрозрачными. Это быстрее, чем альфа-смешивание, но медленнее, чем непрозрачный рендеринг. Это также поддерживает отбрасывание теней. Альфа-хэширование подходит для рендеринга волос.

438 951516
>>51305
Нашёл я твой лолодильник, любопытно поковырять, но сраная файлопомойка требует регистрацию...
https://sketchfab.com/models/6b2862c241754f5d81690e8664e41091/embed

Вот раньше были времена - все файлы качали без смс и регистрации, и сайты летали, не было никаких калудфаеров, не было гуглокапчи, не было 403 и 451 на каждом втором сайте, всех везде пускали и печеньками угощали без ограничений, а сейчас зумеры интернет зохватили и изуродовали, скоро вообще никуда зайти без пароля нельзя будет, а пароль по паспорту, а паспорт по анализу ДНК, а анализ ДНК через анальный зонд...
439 951524
Я устал делать игры.
image.png160 Кб, 897x673
440 951532
>>51524
Тебе мотивации не хватает?
441 951537
>>51532
Мотивации хватает, батарейка энергии села. Поделал бы с ней игры.
442 951540
В трёшке был рейкастшейп для арей. В четвёрке как будто бы нету, ну по крайней мере я не нашёл. Есть какие-то особые рейкасты для лестниц. В общем, шейп в виде цилиндра толщиной 0,01 аналогичен рейкастшейпу. На прилагаемом видео мы видим одновременно рейкаст и арею с тонкоцилиндршейпом. Рейкаст получает только один объект, арея получает массив оверлаппед бодей. Что лучше? Вам решать. Если для геймплея нужно за один проход сгрести в инвентарь всё на что смотрит перс (Legend of Zelda), то нужно получать массив, если же достаточно ухватить один ближайший (Skyrim), то рейкаста достаточно.
443 951548
>>51524
Поделай круды у кабана, батарейка сядет за один день.
444 951550
>>51540

>рейкастшейп


>В четвёрке я не нашёл.


>особые рейкасты для лестниц


Его просто переименовали для ясности.
https://docs.godotengine.org/en/3.6/classes/class_rayshape.html
https://docs.godotengine.org/en/stable/classes/class_separationrayshape3d.html
С кинематиками и ригидами работает хорошо, но на счёт использования в Area3D не знаю, не пробовал.

>цилиндра толщиной 0,01 аналогичен


По производительности хуже, т.к. больше проверок.

>сгрести в инвентарь всё на что смотрит перс


Для этого лучше сферический шейп, наверное.
445 951551
>>51550

>лучше сферический


Кстати, никого не смущает отсутствие конического шейпа? По-моему, можно найти много ситуаций, когда конус подходит лучше цилиндра и сферы, например, для поля зрения мобов. Или конус слишком сложен математически для того, чтобы быть примитивом? Конический меш-то мы можем легко сделать из цилиндра CSG, а вот цилиндрический шейп в конус не превращается.
446 951561
>>51550

> По производительности хуже, т.к. больше проверок.


Вот здесь поподробнее, плиз. Насколько хуже? И собственно, хуже чем что? Чем цилиндр толщиной 0.02? Или хуже чем рейкаст? Или хуже чем капсуль толщиной 0.01?
1715943117282.png319 Кб, 1087x467
447 951563
>>51551

> Кстати, никого не смущает отсутствие конического шейпа?


Не смущает. Мы что, жуки-плавунцы? Нешто мы Хуана подведём? Подождём релиза. Правильно, мужики? Здесь донатных нет. Надо будет - вручную конвекс-полигон по точкам построим. И далее по тексту.
448 951566
>>51561

>поподробнее


RTFM
https://docs.godotengine.org/en/stable/classes/class_cylindershape3d.html

>Performance: CylinderShape3D is fast to check collisions against, but it is slower than CapsuleShape3D, BoxShape3D, and SphereShape3D.


Алсо, внезапно:

>Note: There are several known bugs with cylinder collision shapes. Using CapsuleShape3D or BoxShape3D instead is recommended.


По другим шейпам:

>Performance: CapsuleShape3D is fast to check collisions against. It is faster than CylinderShape3D, but slower than SphereShape3D and BoxShape3D.


>Performance: BoxShape3D is fast to check collisions against. It is faster than CapsuleShape3D and CylinderShape3D, but slower than SphereShape3D.


>Performance: SphereShape3D is fast to check collisions against. It is faster than BoxShape3D, CapsuleShape3D, and CylinderShape3D.


Ну, про сферу и без документации очевидно, сфера - это только проверка на расстояние и больше ничего.
449 951567
>>51566
Спасибо.
Заменил цилиндр на капсулу.
image.png299 Кб, 932x723
450 951574
>>51551
>>51563
Можно проще. Создаем меш, идем в Mesh -> Create Static Body, получаем колижн шейп любой формы.

А если еще CSG to Mesh использовать ...
451 951578
>>51574

> получаем колижн шейп любой формы


Да чот хуйня получается, жук-плавунец. Ты к нам змеёй не прокрадёшься!

Сделал бы Хуан цилиндр с двумя радиусами - вот и конус готов.
452 951579
>>51574

>колижн шейп любой формы


У тебя вот это получилось на скриншоте:
https://docs.godotengine.org/en/stable/classes/class_concavepolygonshape3d.html
Там проблем много разных.

>CSG to Mesh


CSG создаёт очень кривую сетку, с которой ничего не сделаешь, а для коллизий и подавно лучше не юзать.

CSG хорош, когда тебе нужно прикинуть размеры, прототип слепить на скорую руку. Потом всё равно с нуля придётся переделывать... или через ремеш:
https://docs.blender.org/manual/en/latest/modeling/modifiers/generate/remesh.html
453 951580
>>51578
Впрочем, ладно. Со второго раза получается вполне себе конус, но лишних вершин всё равно больше, чем у вручную нарисованного.
454 951581
>>51579
Нууу? Ты же согласен со мной, чем меньше вершин, тем быстрее проверка шейпа на коллизию? И конечно же только конвекс, потому что конкейв считается по другой, ещё более тяжёлой формуле.
455 951587
>>51581
С тобой я и не спорил. В обсуждении минимум трое.
456 951591
>>51587
Меня забыли! Как минимум четверо.
Godette lemon.gif170 Кб, 921x732
457 951595
>>49258
Пофиксил.
458 951601
>>49252
Очень красивая. Эпикантус = аниме.
460 951612
>>51603
Ну в блендере запеки, фигли.
461 951616
>>51612
Придется собирать всю сцену в блендере что на выходе даст огромный glTF.
Подумаю.
462 951619
>>51616
Хм, может быть можно там запечь только лайтмап в текстуры. Не пробовал.
А ты в веб делаешь что ли? Но зачем тогда было брать 4й. Не понимаю, сколько раз еще про это надо написать в треде.
463 951622
>>51619
Пока игра делается там уже пятый выйдет.
464 951624
>>51622

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


> а игры-то нет, игра-то только делается


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


А ты уверен, что ты делаешь игру, а не рендер простой? Так если ты делаешь рендер, зачем тебе игровой движок?
>>51616

> Придется собирать всю сцену в блендере что на выходе даст огромный glTF.


А зачем тебе GLTF? Сразу в пикчу рендерь свой рендер, да и всё.
465 951625
>>51624

>А ты уверен


Я не он. Просто говорю очевидную вещь, пока игра делается успеет еще несколько версий выйти. Тут вот 4.3 за углом, в нем с вебом уже получше.
466 951626
>>51625
Ты не Он. Никто из нас не может быть Им, а только старается приблизиться к Нему своей жизнью на Дваче.
467 951640
>>51409
М-да, бро. Думал-думал, как тебе ответить, в итоге забил. Не как что-то плохое, но с моей точки зрения у тебя какое-то инопланетное мышление. Я так-то не претендую на абсолютную истину, конечно, просто вещи, которые для меня очевидны и естественны, для тебя абракадабра и алаказам, и наоборот.
Штош.
468 951663
>>51640
Мы все с разных планет, а жаль. Если бы не это, могли бы объединиться и запилить всем тредом одну игру мою, хехе.
469 951671
>>49247 (OP)
У меня очень тупой вопрос возник. Как в режиме 3д управлять камерой? Я хочу приблизить камеру к модельке, кручу колесико и оно приближает немного, а потом начинает работать только на отдаление. Или движение камеры по осям до ужаса медленное.
470 951689
>>51671
Выделив нужный объект нажми клавишу F чтобы на нем сфокусировать камеру. Если все равно мало, зажми правую кнопку мыши и управляй полетом на клавиши WASD.
471 951695
>>51671

>приближает немного, а потом начинает работать только на отдаление


View -> Settings... -> View Z-Near: ставь число поменьше (0.01).

>Как в режиме 3д управлять камерой?


F: сфокусироваться на выбранной в сцене ноде.
Колёсико крутить: зум к точке/от точки фокуса.
Колёсико зажать+движение мыши: вращение вокруг точки фокуса.
Колёсико зажать+shift+движение мыши: движение камеры по осям.
Колёсико зажать+ctrl+движение мыши: зум, но быстрее колёсика.
ПКМ+движение мыши: разворот камеры вокруг самой себя.
ПКМ+QWEASD: полёт от лица камеры (Q/E - вниз/вверх, shift - бег).
ПКМ+колёсико крутить: изменить скорость движения по QWEASD.
472 951703
>>51640
В геймдеве, как и в программировании вообще, одну задачу обычно можно решить большим множеством способов. При этом редко бывают идеальные решения, подходящие всем сразу, всегда приходится чем-то жертвовать по ситуации. Но когда изучаешь какую-то новую фичу, учишься пользоваться ей определённым образом, привыкаешь... В итоге становится сложно воспринимать альтернативы. С этим связана проблема чтения чужого кода: язык один, команды понятны, но структура программы может сильно отличаться от привычной, поэтому сложно понять, что она делает. В Godot язык сцен (.tscn) - это декларативный язык программирования (описывает только что нужно получить, но не объясняет как), хоть и не похож на привычные языки. Так что проблемы с пониманием чужой организации сцен логичны.
473 951709
>>51703

> язык сцен (.tscn) - это декларативный язык программирования


Это формат сериализации. Я не спорю, если что, просто уточнил. Сериализация везде декларативна.
9EzaTcnT9PWOM-dR.mp41,8 Мб, mp4,
1280x720, 0:19
474 951751
Всем делать игры.
475 951753
>>51751
База!
не-заставляй-меня.mp42,3 Мб, mp4,
1280x720, 0:07
476 951755
>>51751

>Всем делать игры

477 951756
>>51755
Для общего блага!
478 951757
>>51703

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


Ты мне щас дал +1 аргумент в споре с "комментарии не нужны, пишите самодокументирующийся код" фанатиками. Схоронил.
1716033958888.gif4,1 Мб, 400x200
479 951771
>>51755
Как же я ору от этого видоса в контексте /гд/! Давай ещё!
480 951793
Как можно заставить ноду, лежащую выше по дереву, обрабатывать инпут раньше нод, лежащих ниже? То есть:

- Нода1
- Нода2
- Нода3

Мне нужно чтобы нода1 получала инпут первой. Есть CanvasLayer, но как я понял он для смены очереди _отрисовки_, а обработка ввода остается старой.
481 951804
>>51793
Дополню - это контрол-ноды. Кнопки.
482 951814
>>51793
Переделал структуру, проблема не актуальна. Видимо хуйню хотел.
483 951818
>>51814

> Видимо хуйню хотел.


Тем не менее, в движке можно и такое замутить. Но молодец, что переделал.
484 951832
А вот и импорт паплайн от Пети Сканера: https://www.youtube.com/watch?v=DDxfIpIiEA8
Для трёшки тут >>51322
>>51231

> Какая именно проблема? Я в 4-ку закидывал gltf и все работает.


Посмотри видос, и поймешь, о какой проблеме речь.
485 951842
>>51832
Мне не интересно выяснять что там у него в видосе. Пиши конкретно.
486 951847
>>51842
Я малость косноязычен, и не могу это описать. Там окошко кароч. И при изменении файла реимпорт не происходит. Хотя странно, почему не происходит? Видимо он тоже нужные галочки не выставил в панели импорта, которую показывал в своём видосе. Ну да ладно, главное что у тебя всё работает. И карочи, там много памяти потребляется. И при реимпорте материалы вложены в меши. И вот для всего этого он написал скрипт, но скрипт - моё почтение! Вытаскивает материалы из мешей, сохраняет в файлы и не дублирует, и линкует файловые материалы к мешам при реимпорте. Автоматически. Как это сделать галочками? Я бы поглядел.
487 951861
Кто-нибудь может собрать Godot под windows arm64?
1692193042811.png9 Кб, 1021x68
488 951863
>>51861
Не понятно, это нужен пк на arm?
0261-2423.mp420,3 Мб, mp4,
1024x768, 1:12
489 951864
Поклеил обои, положил линолеум. Базовому классу Interactable добавил возможность выбора из нескольких опций (взаимодействие с холодильником - Interactable без опций, выключатель - Interactable с опциями). Постепенно выстраивается понимание, как наиболее гладко организовать рабочий процесс на связке Blender -> Godot.
490 951865
>>51864
В ботинках да по хрущевым хоромам. Ужас-кошмар.
491 951873
>>51818

>Тем не менее, в движке можно и такое замутить.


А как?
492 951878
>>51863
Можно заебашить кросскомпиляцию из-под линуха. Но чёт мне кажется, без большого опыта в различных сексуальных девиациях такое не провернуть.
493 951880
>>51873
А, уже переделал снова. Снова неактуально. Сорян, анон! Не напрягайся с объяснениями.
494 951892
>>51864
А почему у тебя игра по английски?
Сначала же по русски была?

И еще тебе совет по камере. Тут недавно на стопгейме вспоминали принц Персии: пески времени, и я как вспомнил, какая же охуенная там камера была! Она в основном за персом летает, но альтернативные точки есть всегда в каждой локации, и их можно включить кнопкой Q а в некоторых ситуациях камера сама встаёт в альтернативную точку. И еще с забавным воздушным звуком камера от стен отскакивает, когда её крутишь.

Посмотри лецплеи, а лучше сам поиграй, может почерпнёшь пару идей. (Я охуел от того, что ПП1 сегодня выглядит вполне играбельно, как неплохое лоуполи-инди со дна стима!)
495 951895
>>51892

>А почему у тебя игра по английски?


>Сначала же по русски была?



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

>недавно на стопгейме вспоминали принц Персии: пески времени



Моя любимая игра в серии. Невероятно сказочная атмосфера. Нужно будет действительно переиграть.
Наверно стоит переиграть все любимые игры и почерпнуть из них что меня задело в свое время больше всего.
496 951903
>>51895

>буду делать на английском чтобы выложить на реддит


База. Поделись постом потом, чтобы вручную тебя не ловить.

>>51892
Помню как меня в ПП1 впечатлил откат времени. Поэтому оно стало ключевой фичей моей игры.
1716116480867.png162 Кб, 365x441
# OP 497 951908
Открыт стол заказов контента на перекат. Оставляйте заявки.
498 951912
>>51908
Бери -> >>51751
image98 Кб, 850x850
499 951915
>>51908

>Оставляйте заявки

1716119905562.png185 Кб, 355x393
ПЕРЕКАТ # OP 500 951926
Перекат, мальчики!

>>951925 (OP)
>>951925 (OP)
>>951925 (OP)
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

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

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