Godot #46 # OP 938493 В конец треда | Веб
Добро пожаловать в тред любви, взаимопомощи и кучи спрайтов разного размера!
Шапка: https://hipolink.me/godothread
Предыдущий: >>931045 (OP)
Архивный: >>926070 (OP)
2 938502
>>38493 (OP)
Сап годотеры, собрался с духом и решил вкатиться
Ппроблема в том что работаю на планшете в 3й версии годота.
И я тупо не перевариваю, гд скрипт, хотел установить c# но во первых компилятор визуал код под андроид нужен, я устанавливал пиратку, но она неработает. И во вторых сам редактор при выборе внешнего редактора почему то не видит, мой внешний компилятор. Вообще возможно на мобильном андроиде обманываться c#?
3 938504
>>38502
Не обманывай себя, для полноценного девелопа нужна перканя. Если ты совсем нищий, возьми старый пень на авито. Рублей за 12.
4 938514
>>38504
Значит нет. Ладно буду работать в скрипте.
У меня есть пекарня, просто на дно работе в обеденное время пила всякое, вот купил мощный планшет и решил вместо работы на консоли или пердолинга в xamarin.android попробовать пилить на нормальном движке, тем более несколько лет назад я уже пробовал годо.
1708702931195.png160 Кб, 438x400
5 938518
>>38514

> мощный планшет

image.png206 Кб, 260x400
6 938523
>>38502
Ты чет взял и превратил один из самых легких и беспроблемных движков в какой-то бег с препятствиями. И планшет, и андроид, и сисярп, и пиратская вижуал студия. А чтобы под андроид релиз собрать тебе еще андроид сдк и джава понадобится. Да у тебя талант к веселой жизни.

Двач, я ем суп с ножа.тхт
7 938526
>>38502
Я тоже на андроиде играюсь с годотом, но с gdscript. И почему у тебя 3 версия, если 4.2 уже есть?
image.png974 Кб, 1831x984
8 938556
The VisualShader redesign has been merged
9 938557
>>38556
https://github.com/godotengine/godot/pull/87360

Плюс глоу/блум завезли в рендерер совместимости. Четверка все вкуснее и вкуснее, перейду на нее в один прекрасный день.
10 938584
>>938258 →

>но как понимаю их можно делать на yield


Некрасиво, неудобно, негибко.

Приведу пример, который я уже частично реализовал.
Вот у меня загрузчик. Он показывает лоадскрин с полосой прогресса, а сам в это время делает дело. Загрузчик один, но способен выполнять разные задачи:
а) Начинать новую игру, загружая произвольный уровень
б) Переходить с уровня на уровень
в) Загружать сейв
Работает он (в общих чертах, опуская подробности) так:
var scenario: Array[Callable]
var stage: int
func _process(delta):
var time = Time.get_ticks_msec()
while Time.get_ticks_msec() - time < VREMYA:
scenario[stage].call()

И для новой игры, допустим, сценарий такой:
[load_level, instantiate_level, update_level_data, add_player]
Для смены уровня такой:
[save_player, unload_level, load_level, instantiate_level, update_level_data, restore_player]
А для загрузки сейва какой-то такой:
[load_save_file, unload_level, load_level, instantiate_level, add_player, update_data_from_save]

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

>накладные расходы


Да ну надо ж понимать, это инструмент для своих задач. Но вообще, учитывая, что callable это по сути указатель на функцию, а массив это по сути указатель на область данных, то я вообще хз, где тут могут быть какие-то расходы. Больше расход просто от факта переключения контекста.
10 938584
>>938258 →

>но как понимаю их можно делать на yield


Некрасиво, неудобно, негибко.

Приведу пример, который я уже частично реализовал.
Вот у меня загрузчик. Он показывает лоадскрин с полосой прогресса, а сам в это время делает дело. Загрузчик один, но способен выполнять разные задачи:
а) Начинать новую игру, загружая произвольный уровень
б) Переходить с уровня на уровень
в) Загружать сейв
Работает он (в общих чертах, опуская подробности) так:
var scenario: Array[Callable]
var stage: int
func _process(delta):
var time = Time.get_ticks_msec()
while Time.get_ticks_msec() - time < VREMYA:
scenario[stage].call()

И для новой игры, допустим, сценарий такой:
[load_level, instantiate_level, update_level_data, add_player]
Для смены уровня такой:
[save_player, unload_level, load_level, instantiate_level, update_level_data, restore_player]
А для загрузки сейва какой-то такой:
[load_save_file, unload_level, load_level, instantiate_level, add_player, update_data_from_save]

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

>накладные расходы


Да ну надо ж понимать, это инструмент для своих задач. Но вообще, учитывая, что callable это по сути указатель на функцию, а массив это по сути указатель на область данных, то я вообще хз, где тут могут быть какие-то расходы. Больше расход просто от факта переключения контекста.
11 938596
>>38584
Забавная штука. Полагаю, там у тебя в while ещё stage+=1 стоит?
12 938599
>>38596
И соответственно после инкремента стоит проверка на выход за границу массива, которая символизирует конец загрузки.
13 938611
>>38584
Хз, не вижу причин тут городить такое вместо просто вызова функций.
14 938612
>>38611
А ты внимательнее посмотри. У него загрузчик хитро балансирует нагрузку, не прибегая к многопоточности. Если цепочка вызовов затянулась дольше, чем VREMYA, то цикл останавливается и возобновляется в следующем фрейме. Предложи вариант, как ты это сделаешь ещё элегантнее?
15 938615
>>38612
load_level работает дольше кадра. Твои действия? Где ты там приостановление увидел? Я хз. Тут происходит какой то троллинг?
16 938617
Вкоптился в этот ИТТ тред.
Всем чмоки в етом чятике.

мимотвайнодебил
17 938619
>>38615

> Где ты там приостановление увидел?


Ох блять... Ну почему даунинг-крюгеры такие? И ведь сам таким был. Аж вспоминать стыдно.
Ты сам себя затроллил своим невежеством. Матчасть учи.
18 938621
>>38619
Да судя по ответу ты им и остался.
1620576391069.png231 Кб, 1320x1080
19 938623
Ну че годаны, новость прошла незамеченой, а ведь на нашей улице праздник

https://www.rawrlab.com/godot_nintendo_switch_free_port.html
1575734400293.png1,8 Мб, 1305x1080
20 938624
21 938626
>>38623
Это всё конечно круто, но не для нас и не для таких как мы.
22 938627
>>38626
Кто хочет, ищет возможности, кто не хочет - найдет миллион оправданий.
Это для меня и таких как я. Уже продумываю как к своей игре добавить управление свища.
23 938630
>>38627

> ищет возможности унижаться под белым флагом на олимпиаде


Ищи.
24 938631
>>38627
Если бы я нашёл у себя свищ, то пошёл бы в больницу.
25 938632
>>38631
Да тебя надо в "Аншлаг" срочно брать!
26 938633
>>38632
Спасибо-спасибо. 00)))0
27 938652
>>38596

>Полагаю


Типа того. И там ещё много-много другого скрыто за

>(в общих чертах, опуская подробности)


В частности, сценарная функция должна возвращать интовый код ошибки. Если код == ERR_FILE_EOF, то stage += 1; если код == OK, то просто продолжаем молотить цикл; если код == ERR_BUSY, то прерываем цикл, ждём следующий фрейм; во всех остальных случаях совсем прекращаем загрузку и пишем код ошибки; для красоты оборачиваем его функцией error_code, чтобы не циферьку писало, а текстовое описание.
И да, проверка прогресса и перерисовка полоски осуществляется отдельно, вне цикла.

>>38615

>load_level работает дольше кадра. Твои действия?


https://docs.godotengine.org/en/stable/tutorials/io/background_loading.html
Жаль, выпилили однопоточный вариант ресурслоадера, который работал как раз по схеме, описанной мной выше, с циклом и проверкой времени выполнения. Точнее, эту схему я познал из обучающей статьи по ресурслоадеру из 3.5:
https://docs.godotengine.org/en/3.5/tutorials/io/background_loading.html

>>38611

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


Всё зависит от масштаба. Для три вряд на ЯИ нет никаких причин что-то городить. Для road to vostok без городьбы не обойтись.
У меня вот комплексные тяжёлые уровни, которым после загрузки ещё и ресурсы апдейтить надо. У кого-то вообще процедурная генерация. В прошлой игре уровни были простые, я не городил, просто показывал статичный экран с названием уровня, он висел секунду, пока левел грузился, было норм.
image.png15 Кб, 730x137
28 938655
>>38623

>free


Не фри. Это именно то, что нытики не поняли, когда W4Games выкатили свои версии портов. Нужны девелоперские ключи-лицензии от Сони/МС/Нинтендо. В W4Games ты бы это делал через прокси-Хуана, а тут ты сам должен Нинтенде забашлять бабла за девелоперские ключи.
29 938656
>>38655
То есть, по сути, у этого порта такая ниша: если ты УЖЕ оплатил все нинтенде, и не хочешь платить второй раз W4Games - тебе это подойдет.
30 938657
>>38655
Чел, ты... Открой доки любого другого движка - там все начинается с реги в нинтендо. Ты какой то сверх наивный. Речь и идет о бесплатности порта, ты бы еще удивился что на айфон надо в эппле платно регаться.
31 938658
>>38656
Речь идет о бесплатности порта, а не бесплатности издания на свитч.
Для любителей свободы уже 5 лет есть версия для джейлбрейка https://github.com/fhidalgosola/godot-switch
32 938665
>>38657
Нет, это ты недооцениваешь уровень наивности среднего желающего портануть свой 2д пиксель-арт платформер. Хватало нытиков, ожидавших что раз движок свободный, то им не придется платить никому и ничего. И которым пришлось долго объяснять что именно включено в цену портов от W4Games.

>ты бы еще удивился что на айфон надо в эппле платно регаться.


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

Поэтому всегда надо уточнять, что именно фри, а что нет.
33 938672
>>38665
По уму инфа про платные и сложные для резидента реги должна быть в шапке ньюфаго треда. А не всякие ссылки на несуществующие треды давно заброшенных игр.
34 938675
>>38672
Ну да. Но шапку все равно никто не читает.

>сложные для резидента реги


Для резидента они сейчас все сложные, так и живем теперь. Мне предыдущую работу вообще через крипту пришлось доделывать.
image.png6 Кб, 310x96
35 938701
Подождите, а что, в 2д нет визуальных слоев как в 3д?
36 938708
>>38701
В 3-м нет для 2д, только в 4-ке добавили.
Но, собственно, куча способов сделать нужное и без них.
37 938720
>>38708
Как трудно жить было. Может подскажешь тогда? Я хочу сверху всего наложить текстуру-фильтр, которая должна накладываться на все спрайты кроме одного. При этом я не могу изменить порядок спрайтов. Нашел способ через light2d и light mask, а еще что-нибудь есть?
38 938723
>>38720
Помести этот один в другом слое.
39 938727
>>38493 (OP)
Короче челы подскажите, хочу перекатиться с юнити на годот. Делаю игру 2Д рпг, есть карта с тайлами, всякие интерфейсы персонажей, сражение примитивное, и заебался что в юньке слишком геморно это делать.
На годоте будет проще реализовать вот это вот всё? Мне никаких заморочек не нужно, буквально примитив как на том же ренпи или почти любом движке для новелл. А на юньке такое ощущение что есть 100500 функций которые мне тупо не нужны и мешают.
40 938729
>>38727

> На годоте будет проще реализовать вот это вот всё?


Тонкий вопрос. У тебя с движком, как это нынче говорится, должна химия возникнуть. Если возникнет - будет легко и быстро.
41 938772
Советов дай мудрых, анон. Делаю жрпг, застрял на странице создания персонажа. Сделал автозагруз параметров, хочу на кнопки минус и плюс повесить прибавку\убытие параметра, убытие и прибытие свободных очков.
Понимаю, как сделать это для каждого параметра
func minimum_par():
if Global.Power > 25:
Global.Power -= 1
Global.FreePoints += 1
Но как сделать так, чтобы вставлять напрямую в функцию Power, Intellegent, Magic? То есть одна функция для всех вместо кучи функций на каждой кнопке?
42 938774
>>38727
Да. Тоже делаю 2д рпг, можешь скинуть телегу, я тебе выкачу список туторов от самого низа до тонких мелочей.
43 938777
>>38772
Нипонел, так шоле хочешь?

func wtf(x):
if x == 'Power':
...
elif x == 'Magicr':
...

мимо нуб
44 938778
>>38777
Да, только без гигантского ветвления
Можно как нибудь?
45 938779
>>38778
ну думаю так еще короче можно:
func wtf(x):
Global.x > 25:
Global.x-= 1
Global.FreePoints += 1
46 938782
Кто-нибудь разобрался как можно собрать, экспортировать и запустить сервер для проекта одной кнопкой, чтобы можно было запустить в браузере мобильного устройства в локальной сети? Как вы вообще дебажите веб версии своих игр под мобилки?
47 938785
>>38782
https://play.google.com/store/apps/details?id=org.godotengine.editor.v4&hl=ru

Можешь просто скинуть проект на мобилу и запустить через мобильный эдитор
48 938787
>>38785
он веб версию запустит или андроид?
49 938800
>>38779
Глобал обжект оче всратый паттерн

var stamina : int :
get:
return _stamina
set(value):
_stamina = int(value)

player.IncreaseStat(value, statType)
switch(statType)
case "stamina":
stamina+=value
break;

statchanged.emit(statType, value)
50 938815
>>38779
Я тоже думал, что так сработает, но нет.

>>38800
Блин, а можешь теперь, пожалуйста, объяснить, как это работает?)
Берется стамина, что-то куда-то дает сигнал, сложна)
51 938817
>>38772

> Но как сделать так, чтобы вставлять напрямую в функцию Power, Intellegent, Magic?


Индексами.
Все свои параметры занеси в энум.

> enum Stats { Power, Intellegent, Magic }


Индексы энума должны точно соответствовать порядку хранения параметров в базе данных (твой Global например). Далее навесь на все кнопки вызов сигнала с параметром:

> buttonMagic.pressed.connect(my_pressed_callback, [Stats.Magic])


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

> func my_pressed_callback(stat_idx: Stats):


> > Global.StatsDataArray[stat_idx] += 1

52 938818
>>38815
Оке

Заводишь переменную внутреннюю, допустим _stamina, вот это дело не трогаешь больше

Заводишь внешнюю, stamina с геттером и сеттером
И так для всех статов, вдруг логика какая будет в сеттере

Делаешь функцию увеличения стата, где параметрами является тип чего увеличиваешь и насколько, внутрь кладешь свитч с типами статов, где уже присваиваешь суешь или добавляешь во внешнюю stamina нужное значение

Опционально эмитишь сигнал changed либо в сеттере, либо после свича, если где-то должно отслеживаться изменение статов, допустим для пересчёта макс за или чего-то такого
53 938819
>>38815

> Блин, а можешь теперь, пожалуйста, объяснить, как это работает?)


Рекомендую рассмотреть мой вариант >>38817 он проще и без свитчей-матчей.
54 938821
>>38817
БРАТАН СПАСИБО ТЕБЕ ОГРОМНОЕ!

>>38818
Тебе тоже больщущее спасибо, хоть выберу способ полегче, но все равно твое объяснение точно поможет мне в другом месте.
55 938822
>>38821

> БРАТАН СПАСИБО ТЕБЕ ОГРОМНОЕ!


Обращайтес.
И ещё, раз у тебя есть глобальный объект, то и вышеуказанный энум объявляй в нём. Чтобы видели его все, кому надо.
56 938823
>>38822
Так и сделал!
57 938825
>>38817
Я не вопрошавший, но спасибо большое. Ты сейчас мне показал, как я могу сделать лучше функции апдейта стат персонажей(но в другом двиге).

У меня там $npcs[id].statname, я как-то совсем забыл,что могу написать $npcs[id]['statname'].
Плотно держу в курсе: 58 938829
>>38825
Ну, так-то по сути мой совет - это классика из нулевых, я тогда жил в глухой деревне без интернетов, душа просила кодинга, а из средств кодинга я нашёл на мамкиной пекарне только мс офис и пилил программы в ворде/экселе (как эта ваша деревотян). Там прямо формочку можно сделать с кнопками и текстбоксами, которую можно вызвать из документа. И вот эти кнопочки на формах VBA были искаропки с индексами. И первое что приходило в голову как использовать те индексы, это навесить на все кнопки из какой-либо группы на один обработчик.
Много лет спустя, когда я перешел сначала на дельфи, потом на шарп, оказалось, что так же можно сделать и там, правда индексов искаропки уже не было, но прикрутить их несложно.
59 938832
>>38772
Звучит как обычный ООП
Ну либо динамический, раз у нас питоноподобность.
60 938852
>>38832
Звучит как синдром Даунинг-Крюгера. Без обид, я тоже в молодости пилил ООП-тетрис, в котором каждый блок - это класс, а каждая фигура это класс из экземпляров класса-блока, а игровое поле - это класс из экземпляров-экземпляров, а потом я охуел, хуле ничего не работает?
61 938855
>>38852
Конечно, какие могут быть обиды на нюфань, которые не знают как пишется Даннинг? А потом эмулируют ООП через массив с enum
62 938858
>>38855
Ты всё таки обиделся. Не обижайся.
63 938862
>>38858
Я же сказал, на нюфань не обижаюсь.
64 938877
>>38821
Ну и славно, успехов тебе, анон
65 938933
Бляяя, нахуя я смотрел этот туториал https://youtu.be/rdUgf6r7w2Q?si=bLyGJiZu9S1_viLD
Если можно было сделать все через _get_drag_data, _can_drop_data и _drop_data.... Че блять, многодневную работу переписывать?
66 938936
>>38933

> Че блять, многодневную работу переписывать?


Сохрони в отдельном архиве, на случай если понадобится. Это опыт. Ты его получил.
67 938952
Сап гдач, перекатился с шарпов на гдскрипт 4 и в толк не возьму, а где перегрузка? Хуй перегрузишь метод, конструктор и прочее.... В документации ничего подобного, а городить, методы с дохуиллионами параметров по умолчанию с последующей их проверкой тот ещё раковник
68 938957
>>38952
Ну да, параметры по умолчанию. Может тебе проще объект в параметр передавать, или словарь?
69 938979
@tool
Вот у меня нода2Д (точнее, Marker2D). Я хочу, чтобы она выполняла кое-какое действие (для начала хотя бы принт в консоль) каждый раз, когда я её в редакторе мышкой передвигаю. Как это сделать?
func _draw(): print("не работает")
Пробовал присоединять сигналы draw и item_rect_changed - тоже не сработало. Пробовал также выставлять set_notify_transform(true) - не помогло.
Как?
70 938981
>>38979
В _process сравнивать с предыдущим положением?

>set_notify_transform


Вроде как надо определить функцию _notification чтобы их ловить

Ну тут какая то инфа есть
https://www.reddit.com/r/godot/comments/9y74r6/how_to_detect_when_node2d_is_moveddragged_in_the/
Сам не пробовал.
71 938982
>>38979

>каждый раз, когда я её в редакторе мышкой передвигаю


А что если добавить в нее контрол-ноду с сигналом on mouse pressed, и печатать по этому сигналу? Хз сработает ли в с tool.
72 938986
>>38982
Вроде бы нет, там надо что-то с EditorPlugin как по ссылке делать и forward_canvas_gui_input
73 939003
>>38829
Подумол и понял, что объединять нет смысла потому что то от чего хочу избпвиться вернётся неминуемо.
74 939015
годотеры а для годоти есть какой нибудь ии плагин который по текстовому описанию будет за меня писать код, что то исправлять, проверять, менять и тд?
ну или не плагин а где то отдельно на сайте
есть что то бесплатное и с открытым доступом?

посмотрел отрывок с презентации гугловского гемини с ваганеткой, терайном и тд...пиздец.
75 939020
>>38979
Сцену перезагрузил?
1708947103006.png7 Кб, 474x132
76 939029
Годаны, похоже хуяндех прикрыл лавочку, обсуждавшуюся нами в прошлом треде. Не работает.
77 939035
>>39029
Да, у меня тоже.
Там в схеме, похоже, участвуют какие-то 2 прокси (Алсо это значит, что какой то васян может собирать инфу какие видосы ты смотришь).
Может быть они упали, может быть им нужен впн. Хз.
78 939036
>>39035
В общем, как ни прискорбно, придётся держать маркет.браузер под рукой для инглиша.
79 939039
>>39015
Попробуй просто чатгопоту. Не знаю дообучили ли ее уже до годота 4, для годота 3 в принципе пишет. Гемини не щупал, не знаю как там.
80 939040
Да как вы этими чатами пользуетесь? Они же платные все с регистрацией по кредитке??
81 939044
>>39029
хз, олткрыл сейчас рандомное видео и всё работает, скинь своё, которое у тебя не пашет
82 939045
>>39040
Нет, полно бесплатных.
83 939046
>>39044
Дело не в видео а в прокси наверняка.
https://www.youtube.com/watch?v=jcglXNpf6-0
image.png19 Кб, 465x275
84 939049
>>39046
ну да, наверно, у меня моментально заработало
85 939052
>>39040
ГПТ 3.5 бесплатный, гугловский гемини/бард тоже. Не-рфшный прокси только нужен. Другими я не пользовался.
Screenshot2024-02-26-16-05-37-483com.microsoft.bing.jpg421 Кб, 1080x2400
86 939055
>>39040
Copilot от майков бесплатный
87 939056
>>39049
С проксями ебаться ещё. Буду по старинке смотреть. В яндухе. Идея конечно была неплоха, но увы.
88 939058
>>39056
Ты как не в 2к24 живешь.
89 939060
>>39056
Ну а так ебаться с виртуалками и песочницами где его запускать.
90 939061
>>39058
Я как бы в курсе, где я живу, но всё равно, если есть возможность не ебаться предпочитаю не ебаться. Но в уме держу, что есть вот такая и вот эдакая возможность.
91 939063
>>39055
Он напрямую в редакторе годота работает, или только вскод?
92 939069
>>39029

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


для отсутсвующих, и ленивых чтобы перечитывать, вы о чем вообще?
93 939081
>>39069
лень объяснять.
94 939084
>>39069
Насколько помню они переводят англоязычные туториалы с ютуба с помощью яндекс-браузера.
95 939085
>>39063
Есть какие то аддоны, но скорее всего они устарели и вот они возможно обращаются к API нейронок, а это вроде платно, в отличии от чатов.
Наверное можно самому как то наколхозить.
96 939086
>>39084

>переводят англоязычные туториалы с ютуба с помощью яндекс-браузера


Нахуя для встроенного переводчика в ябравузер ебаться в проксями, виртуалками и песочницами о чем анон выше упоминает
97 939093
>>39086
Возможно мы никогда не узнаем ответ на этот загадочный вопрос, анон. Но игры нам это делает не помешает, верно?
98 939101
>>39086
Типа яндекс зашквар, скам-браузер, распространявшийся с bloatware. Поэтому до сих пор у олдов пригорает с одного его названия.
99 939108
>>39101
Не поэтому. А потому что зачем нужен лишний зонд фсб с доступом ко всему диску, если от браузера нужна только функция перевода конкретного видео?
2a60d83216ce90b92b4a55adb286ddd3.png230 Кб, 600x536
100 939112
>>38514
Зачем ты купил планшет, если мог купить ноутбук?
101 939117
>>39108

> зонд фсб


ФСБ зондирует на уровне провайдера, алё.
image.png40 Кб, 1015x666
102 939122
Сап, годачеры. Внимание, вопрос. Как мне в Godot-е в 2d игре запилить лестницу по типу пикрл?
Я использую просто спрайт персонажа, никакой скелетки. Сверху - понятно, персонаж будет "падать" (звучит, как плохое решение), а подъем? Нашел решение с помощью tween (но пока ничего не понял, т.к. слышу об этом впервые) https://gamedev.stackexchange.com/questions/183919/how-should-i-implement-stair-climbing
Какие еще есть варианты?

Просто сделать наклонную поверхность - не подойдет, будет коряво смотреться
103 939126
>>39122

> Какие еще есть варианты?


Ебани персонажу под ноги на джойнт невидимое кинематикбоди с шейпом в виде крестовины, и при обнаружении лестницы крути в направлении инпута. Базарю, натурал экспириенс будет!
104 939134
>>39122

>Просто сделать наклонную поверхность - не подойдет, будет коряво смотреться


В старых играх, если внимательно на них посмотреть, физическое представление лестниц часто было именно наклонной поверхностью. А "лестницы" были визуальной моделькой. Рекомендую учиться у дидов.
105 939140
>>39122
Там используется Raycast, допустим, в сторону, один на уровне стопы, второй на уровне коленки (сразу над ступенькой), соотетственно если игрок идет в сторону, если он уперся в стену, то оба рейкаста попадут в стену, а если он стоит перед ступенькой, то верхний покажет пусто, и значит можно перемещать игрока на ступеньку. дальше у них там еще какие то условия, например еще raycast вверх, чтобы не подниматься на ступеньку, если ты уперся в потолок

Ну а перемещение можешь делать любым способом.

В ответе чел добавляет еще один Raycast, сверху вниз, чтобы определить точку на ступеньке в которую пойдем.
Tween просто предназначен для плавного движения, сглаживания. yield ставит выполнение функции на паузу, пока анимация tween не закончится.
Первая анимация поднимает его вертикально на месте, до высоты ступеньки (и еще на -2 пикселя выше). Вторая анимация уже двигает его горизонтально, до точки куда изначально рейкаст пересекся с полом ступеньки.
Можешь хоть просто x++ делать. Или нарисовать Path2D и по нему проводить. Или сделать анимацию, но тогда надо чтобы ступеньки на уровне потом ей соответствовали.
106 939180
Чего сидите, игры делойте.
107 939181
>>39180
Я уже лег.
108 939183
>>39181
Встань и иди к мечте.
109 939198
>>39183
Я уже встал. Уже иду. Обнял. На созвоне.
110 939199
Для пули вообще нет смысла делать прожектайл. Она слишком быстро летит. Гораздо эффективнее, чтобы в момент выстрела оружие строило баллистическую траекторию в сторону выстрела и каждый следующий кадр из точки траектории, в которой пуля должна быть строятся рейкасты по всем предыдущим точкам, и проверяется, что пуля прострелила за это время. И кроме того, если в логику заложено что пуля может пробивать некоторые объекты меняя скорость и энергию, то от точки прострела строится новая траектория и в том же кадре пересчитываются рейкасты.
76953419p0.png6,9 Мб, 3840x2160
111 939224
Хочу сделать стилизованную траву с однородной покраской покраской. Для этого сделал вторую камеру сверху что бы получать карту цвета с тенями. Но как сделать что бы на второй камере объекты кроме земли были невидимы но отбрасывали тень?
112 939255
>>39224
Сделать второй камере отдельный Environment с отключенными тенями.
113 939257
>>39199
как пистолет в первом думе. выстрелил в противника и он мгновенно получает урон, независимо от расстояния
114 939258
>>39257
Хорошо, спасибо, так и сделаю. Главное не волнуйся, не нервничай, положи нож.
115 939268
>>39255
Наоборот для второй камеры нужны только тени и plane на которую эти тени отбрасывают невидимые объекты (но невидимые они только для второй камеры)
image.png9 Кб, 372x248
116 939271
>>39258
положу тебе в печень
117 939272
>>39271
Полиция! Убивают!
1635241837254.png23 Кб, 328x216
118 939299
>>39224
Емнип, продублировать объекты, сделать их shadow only. По возможности (смотря какой эффект делаешь) при этом у основного объекта убрать тень. Тогда получится, отрисовка всех объектов без тени + отрисовка всех теней без объектов, плюс какой-то небольшой оверхед на дубликаты нод + оверхед на вьюпорт. В общем, если сделаешь, можешь поделиться замерами производительности.
119 939314
>>39199
Можно рассчитать. Пуля из калаша/м16 летит ~1000м/сек.
При 30 фпс это ~30м/кадр, при 60 фпс ~15м/кадр
Так что надо понять, есть ли на карте зона длиной больше 15-30м.
Для сравнения 5м это парковочное место (легковушка + место для выезда). Итого 3-6 машин в длину
Для примера возьмем CS dust2, для нее легко нашелся пик с измерениями, и в ней хороший микс коротких/средних дистанций
100 юнитов = 100 дюймов = 2,54м (+-на игровые условности типа огромных дверей)

Видим несколько коридоров 2000-3000 юнитов = 50-75м, это больше 15-30м, физическая не-хитскан пуля летела бы 2-5 кадров.

Это если не брать большие дистанции, в играх с открытой местностью, может быть и 300-500-800м, конечно там перекрывают леса и здания, но вот например на пик2 в таркове посередине дороги 400м стоит. А еще пуля в воздухе замедляется, на которких расстояних неважно, на 500м уже процентов на 30

Это, конечно, если упарываться в реализм. А если упарываться в фан, то это может быть в обе стороны. Не только в сторону хитскана, но и наоборот, в сторону медленно летящих ракет, от которых можно увернуться.
120 939316
>>39314
Разумеется речь про снайперские игры на открытой местности, где сидишь в подлеске со слонобойкой, измеряешь ветер, закладываешь поправку в оптику, прицеливаешься, выходит цель из бункера, задерживаешь дыхание. БАХ!

Мимо.

По твоей позиции летят какахи.
121 939359
Вы ходьбу по лестнице доделайте сначала, а то уже попенворлды со снайперами тут обсуждаете)))
1620839947654.mp41,5 Мб, mp4,
854x480, 0:16
122 939361
>>39359
Жесть чел прям в модули фигачит. Вроде логика несложная,
https://www.reddit.com/r/godot/comments/124fapg/implemented_motion_warping_into_my_animation/
https://github.com/EIRTeam/godot/blob/swansong/modules/game/animation_system/epas_animation.cpp
Это чтобы быстрее работал цикл трансформаций всех костей, что ли?
1709062998007.png80 Кб, 329x375
123 939363
>>39361
Панцушот!

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

Ой, блять, я случайно секрет успеха Скайрима спалил. Срочно удолите пост!
image.png1,8 Мб, 1920x1440
124 939364
Сначала рабочий прототип с дефолтыми ассетами и icon.png, потом все остальное. Только так и никак иначе.
125 939365
>>39364

> рабочий прототип с дефолтыми ассетами


Там кстати есть челик, Kenney, нахуячил горы ассетов на любой случай. Опенсорц! Двадэ и тридэ! Налетай, годаны!
126 939366
>>39364
По опыту геймджемов, еще надо сразу audiobus и базовые звуки прикрутить.
image.png1,4 Мб, 1465x750
127 939367
>>39365
Даже это лишнее. Тру путь он вот.
128 939369
>>39367

> Тру путь в максимально быстрые сроки проебать мотивацию.


Тру стори. Жиза.
129 939370
>>39365
Да не только он. Он просто давно это начал делать. Еще есть: Zsky2000, KayKit, Keith @ FertileSoil, quaternius, Everything Library (тут вообще попахивает templeOs)
https://itch.io/game-assets/free/tag-low-poly
https://zsky2000.itch.io/
https://davidoreilly.itch.io/
130 939371
>>39369
Сочувствую, раз тебе для проеба мотивации нужно так мало.
131 939373
>>39371
Спасибо, братишка!
132 939381
>>39122
Но зачем, а главное нахуя?
Но ок, вот что я предлагаю.
1. Физически лестница - это наклонная поверхность. Тушка-капсула движется по ней.
2. Нюанс - процедурная анимация. На ступеньках маркеры, и персонаж должен наступать только на них. Это никак не влияет на движение тушки, только на анимацию ног.
В принципе, на скелетах в четвёрке это реально сделать. Но лично я не вижу смысла. Куча возни, куча потенциальных мест для бага, а заметно всё равно не будет.
133 939382
>>39381
А, забыл про

>Я использую просто спрайт персонажа, никакой скелетки.


Ну тогда просто синхронизировать анимацию со ступеньками, чтобы кадр с шагом приходился обязательно на ступень.
134 939383
>>39381

>Физически лестница - это наклонная поверхность.


Разве персонаж не будет тогда часто висеть в воздухе?
image.png295 Кб, 786x1000
135 939389
Делойте игры, хватит спать.
136 939391
>>39383
Как нарисуешь, так и будет.

Годаны, подскажите одну вещь. Я пытаюсь отловить инпут через _unhandled_input (потому что хочу его захандлить другой нодой). Но по пути кто-то третий его хандлит. Как понять, кто именно?
И вообще. Может ли вообще нода без какой-либо поверхности получать мышиные события через унхандлед? Или их гарантированно сожрёт окружение?
137 939393
>>39391
В дебаггере есть вкладка misc, в ней показывается на кого ты кликнул. Получать может, да - проверил на пустой Node, это та, что белая, без ничего.
138 939394
А что страшного произойдёт, если я буду коннектить уже законнекченные сигналы, не проверяя is_connected? Ну то есть, да, ошибку показывает. Но ведь эта проверка уже есть в движке. Так ли необходимо дублировать её в скрипте?
aonlajnigry.netuploadsposts2014071404988363drakensangonline2.jpg143 Кб, 900x506
139 939399
Игра с видом сверху по типу диаблы в 3d, как реализовать большую бесшевную карту и что бы не пососать по производительности? Я так понимаю мне терейн нужен и как то его делить, И объекты выгружать загружать в зависимости от дальности камеры? Как это вообще делать?
140 939400
>>39399
Например так.
https://github.com/Yogoda/ZoneLoadingSystem
Или самом разбить на квадратные чанки.
Террейн можно делать плагинами
Но придется повозиться в таком случае со стыками, как рисовать один большой террейн. Хотя может новые плагины в 4-ке уже умеют, не смотрел.
142 939404
>>39401
Это >>39401 то самое дружелюбное комюнити годот?
143 939405
>>39363

Я тебя услышал, добавляю мыльно-пиксельные нескучные панцушоты в своё поделие.
1709113052721.webm714 Кб, webm,
640x360, 0:08
144 939433
>>39404
А ты точно не движкосрачер, выкатившийся из своего загона движкосрачерского?
145 939463
>>39404
А что тебя не устроило собственно? Тебе дружелюбно подсказали термин. Дружелюбно != написать игру за тебя.
146 939477
>>39404
>>39463
Я не годотер местный, но поддержу: никто не подвязывался писать готовое решение, дали направление, куда копать, если что-то ещё неясно -- надо конкретизировать вопрос и просить подробнее обьяснить, но если решил на указанный вектор, говорить "это самое дружелюбное коммьюнити годот?", то может не стоит заходить к злым годотерам, которые тебя бедного обижают? Или ты мазохист?
И ещё раз: я не годотер, а интересующийся, потому им предъвлять за мой пост не надо.
147 939491
Часики-то тикают.
148 939504
>>39491
Режь зелёный провод.
149 939515
https://www.youtube.com/watch?v=b5oCdz9J0js
Почему жирухи? Разве годот не лайтовый движок?
150 939519
>>39515

> Почему жирухи?


Потому что пицца-доставка, кока-кола, картошка-фри и крылышки.

> Разве годот не лайтовый движок?


Годот?
151 939521
>>39515
Почему что? Любые люди могут взять бесплатный опенсорс движок и провести геймджем?
152 939525
>>39521
Так-то это официальный комьюнити менеджер годота на зарплате.
153 939527
>>39525
А, понял, официальный канал. Да, помню ее обсуждали, что у нее скилл выбивать гранты и донаты. Ну вроде пока с этим все хорошо.
154 939551
Сап, аутист с планшетом на связи.

>>38504

>для полноценного девелопа нужна перканя


Несколько лет назад работал в нём, хочу в мобильное 2д на нём. Юнька меня сильно беспокоит в последнее время, да и 2д там какое-то хреновое.
>>38518
Самасунг Галаху? Не?
>>38523

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


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

>>38526
И почему у тебя 3 версия, если 4.2 уже есть
Она легче, меньше потребляет ресурсов, там есть все технологии которые мне нужны для 2д, сцены легко и быстро билдятся и я сразу вижу как игра будет выглядеть на планшете.
4.2 его я установил первым в надежде что там будет искоробки поддержка шарпа, но так как такого не оказалось, да и билдилось всё подолгу, решил попробовать старую версию.

Не ну и чего тутор со скрипом и матом, тыкая в милиписечные конки я почти выполнил, единственно не совсем понял какой нод отвечает за отображение кнопок на эране планшета, вроде это должен быть UI узел, судя по другим примерам, но его я не обнаружил.
155 939556
>>39551
Ясно.
156 939585
Ну и чего у меня blend-файлы не импортит нихуя? Точнее подхватывает вброшенный файл, но в дереве он отображается с красным крестиком, на сцену не закидывается, и редактор снова и снова пытается его импортнуть в проект, но безуспешно.

Всё настроил по гайдам: указал галочку импорта blend-файла в настройках проекта, и указал папку блендера в настройках самого редактора. Пробовал буквально хотя бы куб закинуть, но не хочет нормально импортить и всё. ВТФ?
157 939593
>>39585

> и указал папку блендера


Насколько я помню, там надо указывать приложение блендера, а не папку.
image.png25 Кб, 1056x413
158 939596
>>39593
Нет. Именно путь к директории нужен. К тому же Годот сам его нашёл. При попытке указать именно exe-шник, в настройке всё равно остаётся только путь к директории блендера.
159 939597
>>39596
Мдауш, перепутал, сорян. Ну, у меня всё работает. Может версия блендера не подходит? Может файл испорчен? Может диск с ошибками?
160 939598
>>39585
Не может быть связано с версией блендера? В другом треде каком то видел упоминание
1709231238905.png19 Кб, 556x248
161 939601
Ставьте блендер через scoop и у вас будут все версии с момента первой установки (или с момента последней очистки вручную, потому что автоматически он старые версии не чистит).

Канешн, места будет жрать много, зато на вот такой случай вы будете приятно удивлены тем, что ничего дополнительно качать не надо.
162 939605
>>39598
И джижок и блендер самые свежие. Блендер сам работает как надо. Пытался буквально создать новый файл с одним кубом. Его тоже не может экспортнуть.
163 939606
>>39605
Там белым по синему написано блендер 3 патч.

> и блендер самые свежие


Самый свежий блендер 4.
164 939610
>>39606
Блять. Заработало. Спасибо!
image.png632 Кб, 980x646
165 939619
Делойте
166 939620
>>39619
Делаю, к сожалению. Но ничего, потом с новым опытом вернусь на годот, это однозначно.
167 939621
Господа, проблема. Я делаю дефолтный yield(get_tree().create_timer(0.15), "timeout") для таймаута. Пока таймаут идет, есть шанс что тело, с которым функция работала, уже уничтожилось. Тогда код упадет с previously freed instance.

И сейчас я понимаю что подобных мест в моем коде много. Как быть?
168 939622
>>39620
Используй паттерн MVP (Model-View-Presener) и тогда сможешь легко переносить свою модель игры с движка на движок. Главное, чтобы модель ничего не знала о движке. Дивжок (презентер) чтобы ничего не знал о модели. И только вью будет специальным адаптером, знающим обо всех и движок будет знать о нём.
169 939623
>>39621
Как бы хотелось взять и обернуть все такие места в один большой try:catch
170 939624
>>39621

> Как быть?


Думать над архитектурой. Вот эти одноразовые таймеры - это игрушка дьявола. Они нужны только для узкоспецифичных задач. А ты их напихал повсюду. Избавляйся от них.
Что тебе нужно? 15 миллисекунд подождать? Накинь в класс переменную и аккумулируй в неё дельту, пока 0.15 не накапает.
171 939625
>>39624
Натыкал короче if not is_instance_valid: abort, return

Быстрее чем архитектуру перебирать. Нет, не завалюсь. Но в следующем проекте учту.
172 939627
>>39625

> Но в следующем проекте учту.


Смотри мне там! Приду - проверю!
грозит пальцем
173 939628
>>39627
Ок, шэф! Как удобно быть анонимом, пообещал и забыл.
174 939629
>>39621
is_instance_valid()
175 939632
>>39370
Во еще смешное нашел https://creatus.itch.io/
176 939640
>>39632
Арт напоминает те спамные рекламы фейковых мобильных дрочилень, аля спаси принцессу над котлом.
177 939654
Хуле вы все тут такие умные нахуй? Я чувствую себя тупым!
178 939655
>>39654
чувствуй себя недозаточенным
179 939658
>>39654
Я тоже тупой. Вместе будем держаться.
180 939659
>>39654
Я чувствую незакрытый гештальт: как будто бы существует способ научить геймдеву даже таких анонов, которые чувствуют себя тупыми, но способ этот найти не могу.
181 939668
>>39659
Если тебе интересно, то больше всего проблем у меня сейчас с интерфейсом и звуками. Че как рисовать, делать ума не приложу. А ведь еще с кодом разбираться надо. Ну и пиздец. Залетел в геймдев с двух ног без нихуя.
182 939671
>>39658
>>39655
Гоу в юнити, там это не баг, а фича, будем вместе усираться и орать друг на друга.
100022190p0master1200.jpg906 Кб, 1200x915
183 939674
Кто компелировал движок, объясните эту хуйню, должен ли я делать # Build export templates часть? Что она вообще даёт? (Вот оффицальный гайд по компиляции):

# Build editor binary
scons p=windows target=editor module_mono_enabled=yes
# Build export templates
scons p=windows target=template_debug module_mono_enabled=yes
scons p=windows target=template_release module_mono_enabled=yes

# Generate glue sources
bin/godot.windows.editor.x86_64.mono --headless --generate-mono-glue modules/mono/glue
# Build .NET assemblies
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=windows
image.png1,5 Мб, 1280x720
184 939676
Всё ещё живой.
Dev snapshot: Godot 4.3 dev 4
https://godotengine.org/article/dev-snapshot-godot-4-3-dev-4/
185 939677
>>39668
Какие туториалы смотрел? Что из просмотренного пытался повторить? Что из повторённого не получилось?
186 939680
>>39674

> Что она вообще даёт?


Она даёт темплейты экспорта.

> должен ли я делать # Build export templates часть?


Если твой билд ничем не отличается от релизов, то не должен. Но тогда непонятно, зачем ты конпелируешь? Значит, твой билд чем-то отличается. Вот ты собрал редактор, что-то поделал в нём, а потом начинаешь экспортировать проект. Но темплейты-то ты где возьмёшь? Если движок подтянет официальные темплейты, в них не будет твоих фич, которые ты вконпелировал в редактор. Таким образом, конпелируя свой билд, ты должен конпелировать и темплейты под него.
187 939685
>>39680
Ок, с релизом понятно, сейчас уже собирается. Но вот это для чего тогда? scons p=windows target=template_debug module_mono_enabled=yes
188 939686
>>39685

> p=windows


Для венды.

> target=template_debug


Для дебаг темплейта под венду.

> module_mono_enabled=yes


Для дебаг темплейта с включённым шарпом под венду.
189 939687
>>39686

>Для дебаг темплейта под венду.


Так что за дебаг темплейт? Игру же в редакторе проверить можно
1706492361811.webp12 Кб, 1081x659
190 939688
>>39685
При экспорте есть галочка, делать релиз или дебаг версию. Видимо, это для тех, кто хочет отладить именно билд игры, а не запущенную из под редактора версию, мало ли какая то разница может всплыть, если редактор не все чистит при инициализации
191 939690
>>39687
Темплейт с отладочными символами для сторонних отладчиков.
123.png318 Кб, 1539x899
192 939695
Ну вот скомпелировал темплейт релиз, а как этот exe добавить? Импорт фром файл не работает
193 939696
194 939697
>>39677
Я не нашел туториалов по отрисовке ui, только о том как настроить узлы с готовыми ассетами. Про создание звуков даже не гуглил, такого нет кмк.
195 939699
>>39695

Где то по этим путям есть папка с шаблонами экспорта, она называется по названию версии годота.
Да вроде если ты начнешь делать экспорт, тебе напишут какой путь до них.
https://docs.godotengine.org/en/stable/tutorials/export/exporting_projects.html
1592012361485.png2 Кб, 445x36
196 939700
>>39699
P.s. у 3-го папка templates, в 4-ке export_templates
197 939704
>>39671
Я лучше нахуй пойду, чем к юнити прикоснусь после уебанских изменений жадных пидоров.
198 939708
>>39699
>>39700
Короче разобрался, эти exe надо в костум темплейт запихивать где настройки компиляции для конкретного проекта, если по путям распихать нихуя работать не будет. Естественно про это нигде не написано и никто про это не говорит, пердолинг конечно пиздец.
1709301132606.png14 Кб, 525x134
199 939714
>>39708

> про это нигде не написано и никто про это не говорит


Там в окне настройки экспорта всё прекрасно написано. Как Хуан мог предвидеть, что ты не умеешь в... ой, ладно. Разобрались и ладушки! Удачной тебе сборки.
200 939715
>>39704
Не ходи нахуй, оставайся у нас! Хоть мы и будем посылать тебя периодически, но ты держись и не уходи. И тогда сделаешь свою игру!
201 939719
>>39715
Я и так делаю свою игру, нахуй вы мне сдались?
Я кстати не годотер, а интересующийся из другого треда.
И я собираюсь в определённый момент получать бабло с этого, как пойму что мне не стыдно постить свои поделия, потому юнити даже не рассматриваю.
202 939720
>>39708

> если по путям распихать нихуя работать не будет.


Будет конечно, так и делал, была папка 3.x.dev Или как то так.
image.png1,3 Мб, 1280x722
203 939722
литерали я
204 939727
>>39722
У меня литералли в плане есть: на паузе до выхода 4.3 . Там есть метод чтобы на навмеше можно было случайную точку находить
205 939739
>>39719

>в определённый момент получать бабло с этого


Ты резидент? Готовься прокачивать хитрожопость и/или связи, чтобы санкции обходить.
206 939742
Так, я тут немного запутался. Допустим я хочу веб билд в я.игры, и в идеале чтобы он работал на iOS (поскольку не хочу делать нативный билд и связываться с аккаунтом разработчика эппл)
Но я читал, что в крайних версиях iOS (12+? 14+?) депрекейтит OpenGL. Что это означает?
Значит, на iOS Godot 3 (GLES2/3) вообще не заработает, и будет просто черный экран? Как будет работать 4.3? Я сейчас прочитал что там вообще что-то в 4.3.dev3 не заработало и надо проверить свежайшую 4.3.dev4 https://github.com/godotengine/godot/issues/88964
Там предлагается какая нибудь прослойка в MetalANGLE или что то подобное? Или там WebGL 2.0?
Дело в браузере Сафари? Ситуация может как то улучишиться, вроде бы эппл сейчас в ЕС и, возможно РФ подводят к установке сторонних браузеров?
Здесь вообще указано https://docs.godotengine.org/en/latest/tutorials/export/exporting_for_web.html
Что "Godot 4's HTML5 exports currently cannot run on macOS and iOS due to upstream bugs with SharedArrayBuffer and WebGL 2.0", ну насколько мы поняли SharedArrayBuffers уже исправлены, а про проблемы WebGL 2.0 я еще не нарыл.
Кто-то тестил со свежего айфона? Например на итче или ЯИ, игру на какой нибудь версии 3.5.х или 4.3.х?
Какие вообще варианты? Сделать игру на 3 и забить на iOS в вебе? Делать на 4-ке, но заработает ли? В принципе я читал что на я.играх процент игроков с мобилок может быть и низким.
207 939753
>>39742
Эпл вообще для богатых. И для богатых пользователей и для богатых разрабов. Если у тебя нет денег на эпл, чтобы лично девелопить на живом железе, то ты там не желателен, тебя не звали, тебе не рады, уйди оттуда и не приходи, пока не станешь богат.
208 939756
Когда Хуан сделает нам нанит, люмен и ваще?
209 939760
>>39756
Когда ты игру сделаешь? И ваще.
210 939768
>>39756
та погоди ты, дай лестницу в платформере доделаю
image.png942 Кб, 870x1269
211 939779
Каждого из вас так
212 939780
Может ли узел принимать сигналы от нескольких кнопок одним методом?
Делаю меню выбора персонажей, хочу чтобы сигнал pressed() от кнопки передавал в корневой нод или сразу в кнопку Play - как лучше? название этой кнопки.
Вот типа есть 2 кнопки: SelectSlavik с надписью SLAVIK, и SelectBatya с надписью BATYA. При нажатии на любую из кнопок она посылает pressed(self.text) (либо кастомный сигнал, если с помощью pressed нельзя ничего передавать, ещё не разобрался), а в принимающем скрипте стоит одна функция
func _on_YOBA_button_pressed(characterName):
// selected_character = characterName # соответственно SLAVIK либо BATYA

которая ловит текст кнопки и сохраняет его, чтобы при нажатии кнопки Play началась игра выбранным персонажем
213 939781
Вот бы кто мне рисовал спрайты и тайлмапы за бесплатно, а я бы просто код пердолил, я многого прошу что-ли?
214 939783
>>39781
Ты только что нейросеть.
215 939784
>>39780

>Может ли узел принимать сигналы от нескольких кнопок одним методом?


Конечно. В твой дальнейший текст не вчитывался, ты главное соедини сигналы правильно.
216 939785
>>39780
$SelectSlavik.connect("pressed", self, "onPressed", [$SelectSlavik])
$SelectBatya.connect("pressed", self, "onPressed", [$SelectBatya])

func onPressed(button):
print(button.text)

Не помню как в4-ке коннект пишется.
Вроде, $SelectSlavik.pressed.connect( и так далее
217 939786
>>39785
Сигнал в четвёрке превратился в объект первого класса! Не знаю, что это значит, но пишется так:

> Slavique,pressed.connect(self, on_pressed, [Slavique]

218 939793
>>39783
ху-е-та. Нейронка не умеет в 2д пиксель арт, а сидеть перерисовывать за ней еще геморней чем самому рисовать. Хотя.. Запалю годноту анонам, для асеприте, платную конечно, но тот кто сможет ее себе позволить нихуя не пожалеет, pixellab.ai кличат, эх были бы у меня лишние деньги и возможность оплачивать..
219 939797
>>39793

>pixellab.ai


Посмотрел их. Впечатляет. Особенно фича с consistent style. И в анимацию умеет. Но все равно анимирование занимает по 20 минут, а это, по моему мнению, слишком много для такого унылого занятия. Подожду когда анимацию сделают в 1 кнопку, а пока продолжу свое простенькое 3д.
220 939806
>>39779
лольнул
221 939811
>>39793

> pixellab.ai


Годно.
Но я так понимаю она только генерирует пиксельарт на основе уже имеющегося стиля + описание?
Есть ли что-то подобное или может какой пайплайн, чтобы генерировать пиксель-арт(фоны\элементы интерьера и персонажей) по одному только описанию?
Все никак не могу найти 2д художника для мобилки, поэтому думаю перекатиться в пиксельную графику и нейронки.
222 939835
>>39811
>Все никак не могу найти 2д художника для мобилки, поэтому думаю перекатиться в пиксельную графику и нейронки.
Так попробуй сначала просто нейронки для 2д, не пиксель.
223 939847
>>39739
Готовлюсь.
6afd800574ed78bad42facd11db623a2.jpg106 Кб, 1432x552
224 939872
Читаю что у годот проблемы с большими играми. Вот например я буду делать игру с видом сверху как в диабло но со стилизованной графикой. Но большой мир и бесшовная карта, я пососу и если да то почему?
225 939873
>>39872
Что-нибудь раньше делал из игр? На любом движке.
226 939875
>>39872

> у годот проблемы с большими играми


Проблемы с большими играми не у движка, а у Кирилла, блять, сколько можно вам повторять? Напридумываете себе, что можно скайрим в одно ебало сделать, а потом жалуетесь, что движок виноват.
227 939878
Как же меня спасает метадата на объектах. Вместо создания отдельной переменной и пихания ее внутрь, просто цепляешь мету, используешь, выкидываешь. 10 из 10 фича.
228 939880
>>39872
При виде сверху - нет, я уже писал, бери аддон Zone loading, или сделай свои квадратные чанки, при виде сверху нет тех проблем что есть у игр типа геншина или гта, где ты можешь залезть на вершину горы и тебе надо видеть вообще все, и гору и несколько городов с разными домиками и разные локации с лавой, водой и так далее. У тебя только то, что есть в кадре плюс минус.
Второй твой бро это Multimesh Instance тоже как вариант через плагин Scatter. Потому что на уровнях часто много повторяющихся вещей, типа поручней-столбиков.
Третий бро это пулы объектов, для пулек и всего такого.
Еще желательно сделать загрузку многопоточной и включить прекомпиляцию шейдеров.
В принципе за неделю-две можешь сделать прототип, скачав прям готовых моделек которые в этом треде даже кидали, и узнать подходит или нет.
Так что вряд ли большой мир внесет какие-то дополнительные проблемы против просто одной 3д сцены (производительность которой ты тоже можешь оценить на всяких демках)
Собрать что ли самому вомпирсурвайлайк по быстрому...
229 939892
Как в 3д сделать самое дешевое зеркало? Реализм не нужен, но нужны отражения.
230 939893
>>39892
Рендерить дублирующую модельку. Так еще в каком то допе к халфе было
231 939895
>>39893
А мир вокруг модельки как?
232 939897
>>39893
Забавно, в киберпанке с точностью наоборот, движок отражает всё, кроме персонажа.
233 939900
>>39895
Так же: дубликат мира в котором ходит отражённая моделька
235 939904
>>39900
>>39902
Ага, спасибо.
236 939935
Время делать игры.
237 939954
>>39935
Время пересматривать записи стримов старых игор!
238 939955
>>39954
Это могли бы быть стримы твоей игры, но ты спал.
239 939956
>>39955
Нет ты!
240 939968
>>39793

>Нейронка не умеет в 2д пиксель арт


Все еще лучше умеет чем неумеющий васян
241 939970
>>39968
Тоже сначала упоролся, но увы это практически не получится использовать. Ну только если у тебя не что-то вроде казуалки где эти картинки просто как фишки будут двигаться.
242 939971
>>39968
А еще, есть такая проблема, которая становится понятна после очень долгого использования далле. Это видно по твоим крайним пикам - нейронка попадает в некий пузырь стиля, и поэтому результат будет слишком узнаваться, потому что и другие игроделы будут пользоваться ей же. Ну это не считая мелочи, что надо сначала как то привести это к пиксельной сетке (тут такую штуку кинули, но я пока не пробовал https://github.com/Astropulse/pixeldetector )
15428884775042.jpg132 Кб, 915x1024
243 939977
А как тут прозрачную воду с отражениями сделать?
244 939978
>>39977
*В годот
245 939979
>>39811
Она и так и так генерит. Можешь и голое описание совать, можешь и референсы скармливать.
246 939987
>>39977
Скачай любой из десятков шейдеров и посмотри как там сделано
248 940202
Я не пони, чем quadmesh отличается от planemesh?
249 940212
>>40202
Свойствами в инспекторе.
250 940226
>>40202
Забавная история, в общем "так исторически сложилось", с точки зрения программирования, Quad определяется как 4 точки по углам, а Plane как точка в пространстве и угол. Причем про Plane в 3-ке долго висело предупреждение что он deprecated из за глюков, но выяснилось что это не глюки, а математика так работает, и надо просто его сабдивить на большее кол-во кусочков. В общем в результате по опросам так и не смогли определиться какой из них нужнее, квады для частиц и постпроцесса по умолчанию поперек экрана, а плейны горизонтально для самодельных террейнов.
https://github.com/godotengine/godot-proposals/issues/4516
251 940237
>>40226
Фига подробности. Вроде понял. Плейн значит сабдивайдим на под-плейны, в результате получаем террейн, а квад он квад и есть. И если нужно простое ровное полотно, то используем квад.
image.png61 Кб, 589x398
252 940267
253 940269
>>40267
Это потому, что многие паттерны пришли совсем из другой индустрии - корпоративные, тяжелые приложения и сайты, и решают другие задачи, в частности взаимозаменяемость работников.
Паттерны - это не магия, это просто повторяющаяся закономерность в коде, которой дали имя. А использовать или не использовать надо смотреть индивидуально. В частности с точки зрения оверхеда, на который в корпоратах покласть, клиенты подождут.
Об архитектуре надо думать, в любой игре больше чем на недельный геймджем. Когда думаешь, как расположить ноды в сцене, разделить ли визуал и коллайдеры на отдельные ветки, как сделать всплывающие окошки, как сделать сцену, чтобы ее можно было переиспользовать на другом уровне или кастомизировать врага, будешь ли использовать сцену или json - вот уже и архитектура.
254 940282
>>39811
Поигрался, прикольно, но пока нет.
Продолжу дальше пилить логику проекта и прототип доделывать, визуал потом. Думаю это верный путь.
255 940288
>>40282

>Продолжу дальше пилить логику проекта и прототип доделывать, визуал потом


База, основа
256 940289
>>40269
То, что ты перечислил, приходит с опытом и делается практически автоматом. Думаю чел на скрине говорит про вот эти бесконечные переписывания кусков кода, чтобы удовлетворить своего внутреннего архитектора-окрщика, хотя в целом и так ок, и переписывания можно было избежать добавив десятку ифов. Этим заниматься можно долго и масштабно, а игра тем временем не делается.

Плюс как заметили в том треде, корпоративные сайты и приложения поддерживаются долго, их постоянно надо дорабатывать и актуализировать. Игры это "релизнул и забыл".
257 940317
>>40289

>Игры это "релизнул и забыл".


Зависит от игры, планов на расширение/дополнения, сингл/мульти направленности особенно.
Например, делаю игру с несколькими механиками и уровнями, если заходит, захочу добавить новые главы, новые механики, чтобы их просто добавлять без переписывания всего.
Играю в одну ммо которая тянет уже больше 15 лет. И там постоянно у них боль и страдание, очередная обнова привела к - крашам от звука нового пета, крашам от выхода в меню, тормозам если выйти в другую локацию, народ бугуртит и массово отказывается от подписок. Конечно мои игры 15 лет не проживут, но и одноразовыми делать не хочется.
258 940320
>>40317

>захочу добавить новые главы


Если популярность имеется, то почему бы тогда не сделать вторую часть игры? Кэша больше, видимость выше. К примеру есть франшиза, Swords and Sandals, автор - соло-идюк, последние версии как раз на годоте пилит.

>в одну ммо которая тянет уже больше 15 лет


Во что гоняешь?
259 940394
А что это такое интересное у камеры появилось?
Compositor это я так понял задел на будущее на эффекты типа планарных отражений https://github.com/godotengine/godot-proposals/issues/7916
А по аттрибутам, там теперь (авто)выдержка + на выбор DOF или фокусное расстояние. Это вынесли из WorldEnvironment что ли?
260 940396
В прошлом треде про тени и динамическое время дня писал, что стоит делить меши на несколько мелких, а сейчас нашел еще такй вариант: Calinou: If you have objects appearing/disappearing in the shadow based on camera movement, it sounds like you have large unsubdivided meshes. Try increasing Pancake Size in the DirectionalLight3D's properties.
261 940397
И да, я снова вернулся к игре мечты с открытым миром и динамическим временем суток. В этот раз попробую на 4-ке.
262 940402
>>40396
А у меня не время дня и ночи, а обычный омнилайт у персонажа в руках, но я уже заебался.
image.png287 Кб, 614x422
263 940404
Все серьезно
264 940414
>>40402
Ну кстати не уливлюсь если омнилайт настроить сложнее чем дирекшонал
265 940420
>>40267
Пиздец нахуй блять. Каким же надо говноделом быть для такого. Я вот открываю те части проекта, которые писал месяц назад, и
а) легко их читаю и понимаю, как этим пользоваться,
б) не хочу ничего поменять, всё уже хорошо выстроено,
в) оно прекрасно расширяется под нужды растущего проекта,
И вдобавок
г) я могу скопипастить части из прошлых проектов с минимальными изменениями.
И это охуенно ускоряет разработку. Просто, блять, СРАЗУ писать хорошо. Приучиться не делать говна изначально - и разработка попрёт реально быстро. И дизигн паттерны как раз для этого и нужны.

А вот если открыть мой сааамый первый проект, то там говно - движущая сила. И именно поэтому наступил момент, когда я не смог его дальше писать, потому что оно было непонятное, не расширяемое и просто кривое.
1709585448608.png108 Кб, 466x460
266 940421
267 940422
>>40420

>СРАЗУ писать хорошо


И главное - без задней мысли, просто и сразу.
268 940424
>>40422
Не бугурти, а учи паттерны.
269 940425
>>40420
А покажи плиз образцы своего кода. Насладиться красотой.
270 940427
Кароч. Палю способ, который тут для себя обнаружил, теперь буду всегда применять, он клёвый и расширяемый.

Как делать настройки.
1. Создаём класс, описывающий опцию. В нём должны быть поля: type, default, value, description. Опционально (очень желательно) в сеттерах проверять типы default и value через typeof. Опционально описываем _init(dict: Dictionary), чтобы легко создавать экземпляры из словарей.
2. Также внутри этого класса есть сигнал value_changed(new_value), который вызывается прямо в сеттере value. Вот в нём-то вся мякотка.
3. Сами экземпляры класса храним в словаре. Опционально описываем функции-интерфейсы get_option и set_option, чтобы работать со строгой типизацией.
4. При описании ноды, на которую влияет та или иная настройка, делаем так: в _реади чекаем опции и коннектим сигнал value_changed к себе в функцию, где соответственно обрабатываем.

Таким образом, не нужно перегружать настроечный скрипт - в нём ТОЛЬКО настройки. А всё их действие описывается там, где ему и место. И можно наделать неограниченное количество нод, на которых влияет та или иная опция. И вообще, такой скрипт без напряга пишется за часочек, а использовать можно где угодно.
Бонусом. Описывать сами настройки в каком-нибудь json-е или csv, и тогда скрипт будет вообще элементарно переносимый из проекта в проект.
271 940428
>>40427
Ты изобрёл датабиндинг. Поздравляю.
272 940429
>>40428
Не изобрёл, а спиздил.
Ну всё равно удобно же. И разработку ускоряет.
273 940437
>>40420

>не хочу ничего поменять, всё уже хорошо выстроено


Пиздишь, антош.
Если тебе ничего не хочется переписать - тебе просто похуй на то что ты написал.
274 940487
>>40437
Есть еще вариант: он за это время никак не развился.
Но мы, безыгорники, можем цепляться к нему как угодно, он-то знает, что у него игры есть, а у тебя нету.
275 940507
>>40487
Вообщет он не писал что у него есть игры. Он писал что у него есть проекты.
276 940508
А у меня есть игры. И вы делайте. Хороший код, плохой код, похуй, никто ваш код не увидит. Делайте.
1709637825091.gif12 Кб, 220x129
277 940510
>>40508
Не могу делать игры на текущем релизе. Надо подождать 4.3.
Стикер512x512
278 940513
>>40508
а вдруг взломают мой хит и увидят все
1709639625371.png27 Кб, 411x252
279 940517
>>40513

> и увидят все


Что именно увидят-то? Вот такое?
280 940533
>>40267
YandereDev одобряет.
281 940556
>>40487

> он за это время никак не развился.


Все так.
Я пока тоже безыгорный, но у меня есть реально работающие проекты использующие мой код. И из этого опыта могу сказать, что процесс улучшения бесконечен. Конечно, это не отменяет того, что сразу надо страться делать как минимум "нормально".
image.png299 Кб, 1099x489
282 940636
Время делать игры.
283 940644
>>40533
Switch'ей просто добавь и норм будет.

>>40517
У меня например код может посмотреть любой мимокрок. Правда я смотрел код других людей и большинства он говной воняет, там вообще никакой структуры нет.
284 940647
>>40513
Ну, можешь каким нибудь upx,ом зажать, если без стороннего пакеджа.
285 940648
>>40513
Пиши код максимально говнисто, чтобы прям ничего не было понятно. Пили огромные картинки, чтобы заебывало их просматривать. Музло тоже делай такое чтобы не возможно было слушать, скрип там или еще чего добавляй. И норм.
image.png19 Кб, 499x165
286 940671
Как получить свойство объекта по строке? Первая строка ок, выдают значение, 2 и 3 выдают Null.
287 940672
>>40671
get("translation").x по идее
288 940673
>>40672
Этот вариант работает. Но x/y/z у меня тоже строки. То есть, я бы хотел получить именно финальное значение по строке.
289 940674
>>40673
Либо циклом через парсинг, либо см. Исходники AnimationPlayer, он так умеет
Может быть есть какой то готовый метод, я не искал
290 940675
>>40674
Ок, спасибо. Уже нашел другой способ решить свою проблему, без получения свойств, но на будущее надо будет разобраться.
292 940698
>>40675

> а будущее надо будет разобраться


У трёшки нет будущего. Переходи на четвёрку.
293 940700
>>40698
А чего там? Как там аналогичное делается?
294 940701
>>40698
Не накаркай. Мне еще на нем игру мечты релизить.
295 940702
>>40700
Так же как в трёшке (с несколько другими именами, например origin вместо translation). Так же как тебе предлагали выше: >>40672

>>40673

> Но x/y/z у меня тоже строки.


Хоть строки, хоть, були. Функция get() возвращает тебе значение свойства. Если значением является объект со свойствами-строками, ты должен вызвать у него функцию get(). Парсинг путей вида "super.sub.sub.property" в движок не закладывался.

> То есть, я бы хотел получить именно финальное значение по строке.


То есть, тебе надо самому велосипедить свою рекурсивную функцию получения свойства вложенных объектов по строке-пути.
1709744291543.png53 Кб, 403x448
296 940703
>>40701
Чур-чур-чур! Свят-свят-свят! Тьфу-тьфу-тьфу! Тук-тук-тук!
297 940717
>>40703
Условно смешно.
298 940720
>>40702
И кроме того, трансформ в экосистеме годота не является объектом, является базовым типом, и не содержит функции get() которая есть только у объектов.

Поэтому, если писать рекурсивную функцию, в неё придётся заложить длиннющий паттернматчинг для всех базовых составных типов, типа трансформов и векторов. К объектам применять гет, к типам применять вложенные матчи.
299 940733
>>40720
Вот примерно так. Только придётся расписать ещё кучу паттернов в матчи. Ради мнимого удобства.

...

Лишь бы игры не делать.
optimisation.jfif53 Кб, 1200x750
Экспорт на Android 300 940734
Сап, /GD/ач. Сделал прототип 3д игрульки для мобилок на движке четвёртой версии, экспорт наладил по инструкции с официальных доков, установил jdk, sdk и всё-всё-всё что там было написано. Движок без ошибок произвёл апк-файл, который я установил на своём стареньком говнодроиде сяоми и на новеньком дорогом андроиде друга. На старом игра едва грузится на 3д сцене, на новом всё улетает в максимальный фпс. На старом телефоне даже не отрисовываются 3д объекты (только элементы 2д), на новом всё работает как задумано. Меня смущают лаги и я хочу выяснить как можно сократить их количество, потому задам несколько вопросов опытным Годотерам:

1) Много ли съедают fps ноды Area3d, которые подключены к скрипту через сигналы "area/body entered/exited"? Если да, то что можно с ними сделать кроме удаления и упрощения ИИ?

2) Много ли съедают fps ноды типа CSG?

3) Много ли съедают fps сигналы от кнопок типа "sex_button_just_pressed()"? Если да, то как перестроить управление? Есть ли смысл все кнопки засовывать в функцию _input(event) или это не даёт никакого результата?

4) Может ли экспорт повлиять на fps на разных android устройствах? Я пробовал устанавливать sdk под более старые смартфоны (lollipop 4.1), но результата это не дало.

5) Много ли жрут fps операции с Vector3 и обращением к нему? Есть ли какие-то способы его немного оптимизировать?

6) Есть ли смысл создавать отдельные ноды (белые) для крупных участков кода вроде логики передвижения в 3д пространстве или всё можно хранить в одном скрипте и просто обращаться к функциям внутри единого скрипта без потери производительности?

7) Таймеры — годнота? Что можно использовать для периодичного запуска функций с проверками без таймеров (я слышал, что они ненадёжные и могут сильно влиять на фпс, ведь они просчитывают постоянно сколько прошло времени и проверяют достигли ли они конца)?

7) Какие есть другие способы повышения производительности кроме растаскивания всех операций по разным функциям, которые находятся вне _process(delta) и _physics_process(delta) без постоянного обращения не необходимых в каждый момент времени проверок?
optimisation.jfif53 Кб, 1200x750
Экспорт на Android 300 940734
Сап, /GD/ач. Сделал прототип 3д игрульки для мобилок на движке четвёртой версии, экспорт наладил по инструкции с официальных доков, установил jdk, sdk и всё-всё-всё что там было написано. Движок без ошибок произвёл апк-файл, который я установил на своём стареньком говнодроиде сяоми и на новеньком дорогом андроиде друга. На старом игра едва грузится на 3д сцене, на новом всё улетает в максимальный фпс. На старом телефоне даже не отрисовываются 3д объекты (только элементы 2д), на новом всё работает как задумано. Меня смущают лаги и я хочу выяснить как можно сократить их количество, потому задам несколько вопросов опытным Годотерам:

1) Много ли съедают fps ноды Area3d, которые подключены к скрипту через сигналы "area/body entered/exited"? Если да, то что можно с ними сделать кроме удаления и упрощения ИИ?

2) Много ли съедают fps ноды типа CSG?

3) Много ли съедают fps сигналы от кнопок типа "sex_button_just_pressed()"? Если да, то как перестроить управление? Есть ли смысл все кнопки засовывать в функцию _input(event) или это не даёт никакого результата?

4) Может ли экспорт повлиять на fps на разных android устройствах? Я пробовал устанавливать sdk под более старые смартфоны (lollipop 4.1), но результата это не дало.

5) Много ли жрут fps операции с Vector3 и обращением к нему? Есть ли какие-то способы его немного оптимизировать?

6) Есть ли смысл создавать отдельные ноды (белые) для крупных участков кода вроде логики передвижения в 3д пространстве или всё можно хранить в одном скрипте и просто обращаться к функциям внутри единого скрипта без потери производительности?

7) Таймеры — годнота? Что можно использовать для периодичного запуска функций с проверками без таймеров (я слышал, что они ненадёжные и могут сильно влиять на фпс, ведь они просчитывают постоянно сколько прошло времени и проверяют достигли ли они конца)?

7) Какие есть другие способы повышения производительности кроме растаскивания всех операций по разным функциям, которые находятся вне _process(delta) и _physics_process(delta) без постоянного обращения не необходимых в каждый момент времени проверок?
301 940737
>>40733
Ты крут.

>#wipe samewords


Кек
302 940745
>>40737
Да, детка, я такой. По ссылке в описании можешь сделать донат.
303 940750
>>40734
Сорян, по андроиду ничего не смогу ответить.
304 940753
>>40734
P.S. На моём старом андроиде логика 3д мира работает, я могу взаимодействовать с ним, скрипты работают, но сами объекты не показываются, плюс я использую две камеры — от первого и от третьего лица, которые переключаются через .set_current(), где я сначала отключаю одну камеру, затем включаю другую.
305 940758
>>40750
Но по оптимизации есть что-нибудь? Пост касается не только андроидов, но и в целом затрату ресурсов от разных функций и нод годота

Спасибо за ответ
306 940765
>>39779
Я думаю у людей нет идеи для игры, которую они хотели бы реализовать. У меня тоже всегда было желание сидеть в движке копаться, но пока не придумал сам себе игру, не мог ни с чего начать. Сейчас вот сижу, пилю потихоничку, вот уже месяц как, и даже не планирую заканчивать, каждый день только больше solution'ов придумываю
307 940777
Опытные ремесленники, скиньте годные гойды гайды по созданию инвентаря и сохранений. Посмотрел на ютабчике пару роликов, там духота сплошная, которую мой мозг в ближайшее время не хочет и не может осилить. Вот чтоб максимально простенько было, а там уже разберусь.
308 940785
>>40734
Со старыми андроидами все неоднозначно. Там цирк с конями, разброд и шатание от чипа к чипу.

Мои наблюдения таковы. Снижай разрешение - часто дает наибольший прирост фпс. Динамический свет не используй. Меши - чем проще, тем лучше. CSG - нахуй. Гридмап - нахуй. Пройдись по настройкам проекта, выключи лишнее, снизь качество. GLES2 на старых андроидах шустрее и стабильнее чем GLES3.
309 940786
>>40758

> Но по оптимизации есть что-нибудь?


Есть. CSG медленноват, как говорят.
310 940788
>>40785
Спасибо за ответ!!!

>GLES2 и GLES3


А можно ли через какую-то функцию менять рендер? Допустим, сделал я настройки графики, а чтобы применить надо было бы перезапускать игру. Такое возможно?
311 940789
>>40786

>CSG медленноват


Принял на вооружение. Спасибо
validate-me-mad-max.gif5,4 Мб, 640x426
313 940798
>>40793
Вау, спасибо огроменнейшее! Я запомню тебя
314 940801
>>40786
>>40789
Емнип CSG медленноват при динамическом изменении (подвинули куб в цилиндре и пересчитались все грани). При просто рендере, примелимо.
315 940802
>>40801
При изначальном создании тоже, увы.

>Creating CSG nodes has a significant CPU cost compared to creating a MeshInstance3D with a PrimitiveMesh.



И "запечь" их, вроде, никак нельзя.
316 940804
>>40788
Имхо на андроиде это делается несколько по другому, ты делаешь две разных APK с глес2 и глес3, а потом когда выкладываешь в гуглплей, указываешь каким мобильникам какие давать скачивать. Но, я теоретизирую. не говоря о том, что APK официально уже ВСЕ, и надо собирать ABB И где ты узнаешь список мобильников тоже вопрос. А еще там можно блеклистить слабые модели, чтобы им вообще не давать скачать игру, так даже геншин делает.
317 940806
>>40802
Запечь их можно простым аддоном который конвертит их в .obj.
Ну насчет изначального создания, это можно скрыть загрузкой уровня, остается спавн, его тоже можно заспавнить и просто передвигать в нужное место. Наверное.
318 940809
Я читал что если делаете настройки, то называть их стоит не low/mid/high, а quality/performance. Так игроку менее неприятно от своего нищебродства.
319 940811
>>40809
Помню ГТА 5 проходил на "нормальных". Ну это минимальные так у них назывались. Без отражений и теней.
320 940814
>>40809
ultra high
super high
very high
1558630261228.mp45,1 Мб, mp4,
1536x864, 0:38
321 940815
>>40802
На мобилке, может и медленно, не пробовал.
На пека довольно шустро
322 940837
>>40809
Представитель Sweet Baby Inc, залогинься.
323 940894
>>38493 (OP)
Покажите видос как реализовать rope в 3 D, на примере каната или верёвки
1669765346195.png129 Кб, 688x955
324 940895
>>40894
Смотри.
325 940899
>>40895
Спасибо
170982071763866583.jpg1,5 Мб, 3273x2048
326 940901
>>40895
А где? Почему у меня пусто?
327 940924
>>40901
Потому что 3.5.3. Для неё уже не делают новых аддонов.
328 940947
>>40924
В 3 ветке небыло rope? Как они тогда канаты рисовали?
329 941011
Двач-помогач, закидываю в проект как 2д скрипт пнг файл, графон пиксельный, иду персонажем мимо, ДРОЖИТ СУКА.
Что делать?
1619134403842.png10 Кб, 953x85
330 941017
>>41011

>закидываю пнг файл


Посмотри что ты его поставил в целочисленных координатах x, y.
Поставь в проекте галочку gpu pixel snap (в 4 по другому называется)
Дальше кури мануал https://docs.godotengine.org/en/stable/tutorials/rendering/jitter_stutter.html
331 941018
>>41011
Сложно сказать, господин анонс. Зависит от версии движка и от стиля, который ты хочешь. Тру™ пиксель игра делается через stretch mode viewport, низкое нативное разрешение (желательно соответствовать х2, х4 от нативного разрешения) и советы анона выше. Это советы для тройки.

Фейковая пиксель игра, когда пиксели не строго по внутри-игровой пиксельной сетке, - через мод 2д, на разрешение уже похуй.
image.png15 Кб, 427x247
332 941019
>>41018

>низкое нативное разрешение (желательно соответствовать х2, х4 от нативного разрешения)


Отвлекся и коряво написал. Низкое нативное разрешение, и тест разрешение х2 выше нативного.
333 941032
>>40947

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


Как босс!
334 941048
Здравствуйте. У меня на сцене есть узел Area2D, внутри которого 4 прямоугольные коллизии.
Как сделать спаун врагов внутри этих коллизий, чтобы избежать ручного набора координат? Типа если передвину/поменяю размер, не менять код.
335 941054
>>41048
Я бы брал центр ареа2д, добавлял к нему рандомные отступы по х и у, потом бы проверял находится ли эта потенциальная спавн-точка внутри коллизий. Если нет - повторить генерацию точки.
1579162551321.png83 Кб, 839x569
336 941056
>>41054
Если у него прямоугольные неповернутые коллизии, то x = от левой до правой, y = от верхней до нижней гарантрованно внутри коллизии.
337 941063
>>41056
Правильный подход. А у меня в похожем случае вообще полигон2д был, и я не придумал ничего лучше чем перебирать примерные значения. Ну и норм работало.
338 941064
>>41063
С полигонами сложнее, можно попробовать их триангулировать и потом генерить внутри одного из треугольников (может быть можно даже по формуле), но вот вроде как не любой произвольный полигон триангулируется. (Искал как то либу для отрисовки генеренных SVG, а там прямым текстом пишут что она может зависнуть, такая то печаль).
А если брать рандом, то при неудачной форме может долго искать подходящую точку, хотя скорее всего это несуществуенно. Но вдруг не уложится за кадр.
339 941077
Аноны, какой командой заставить Area2D заставить срабатывать один раз? Я вроде что-то помню, но не могу высрать. Сорри, за банальный вопрос.
340 941080
>>41077
Мож отдельной переменной для проверки серануть?
341 941082
>>41077
Типа в _ready поместить? Первое что пришло в голову, если я тебя правильно понял
342 941092
>>41082
Не, area у меня в отдельной функции. Игрок в неё входит, она срабатывает и должна выключиться.
343 941094
>>41092
Сигнал body_entered надо обрабатывать.
344 941102
>>41077
Делаеш ей disabled или queue free
image.png60 Кб, 422x464
345 941130
Делайте игры
346 941134
Анонче, хелп.
В сцене хочу озвучить звук шагов, однако столкнулся с проблемой, что при
if Input.is_action_pressed("down"):
звук проигрывается только раз, причем после отжатия кнопки, а при
if Input.is_action_just_pressed("down"):
Вообще не проигрывается.
Цель вижу в том, что нажимается кнопка, идет звук шагов. Отпускаю, должен стихнуть.
Мне отдельно звук покурить или что?
347 941137
>>41134
Проверь свойства повтора на файле в импорте, и на самом плеере. По крайней мере в тройке с этим хаос был.

>if Input.is_action_pressed("down"):


>проигрывается после отжатия кнопки


Рассмотри такую возможность. Твое условие работает постоянно, пока ты держишь кнопку, и следовательно постоянно у тебя делается audioplayer.start(). То есть аудиоплеер проигрывает первую миллисекунду, потом ты его снова стартуешь, и он снова проигрывает первую миллисекунду, и так по кругу. Как результат ты слышишь ничего. А когда кнопку ты наконец отпускаешь, у плеера появляется возможность проиграть весь файл, потому что ты ему мозг стартом не ебешь.
348 941138
>>41137

> повтора на файле в импорте, и на самом плеере. По крайней мере в тройке с этим хаос был.


Блин, он мне не дает залупить файл, говорит этот файл был импортирован, поэтому не может быть редактирован. Втф?
>Твое условие работает постоянно.
Да, соррян, ступил.
image.png10 Кб, 231x297
349 941139
>>41138
Выбери файл в панели filesystem, потом таб import. Там будет опция на луп.

Картинка из гугла.
350 941140
>>41139
И реимпорт внизу нажать не забудь.
351 941143
>>41139
Я же говорю, он просто не дает это сделать, выдает:
"этотресурс был импортирован, поэтому он не редактируем, измените его настройки в панели импорта, а затем реимпортируйте"
Я прожимаю все настройки, реимпортирую, но это просто не работает
352 941146
>>41143
Это странно. Можешь сделать скрин окошка как выше?
353 941149
Сделайте за меня игру, я устал и спать хочу.
354 941150
>>41149
Делай игру во сне, что такого. У меня часто озарения бывали и я записывал
355 941157
>>41150
Озарений хватает, сил/времени реализовать их не хватает.
356 941158
Субшота тред же мёртв? А сюда не принято кидать скриншотовидосы своих годокириллоподелок? Или все стесняются?
# OP 357 941167
>>41158
Кидай. Я не против.
358 941174
>>41158
Кидай. Я за.
image.png7 Кб, 485x42
359 941182
Почему во всяких гайдах, в той же книге, направление игрока записывают в переменную velocity? Почему не direction условный, velocity это же скорость.
360 941184
>>41182
В 4-ке velocity это не переменная, а уже поле физикс чарактер боди. Ну вообще да, логичней сначала селать dir и потом умножить на скорость.
361 941195
Перешел с Unity на Godot. Делаю шутер. Как далеко я смогу зайти, не знаю. Веду дневник разработки, чтобы видеть свой прогресс https://t.me/neonhawk_dev
362 941196
Перешел с Unity на Godot. Делаю шутер. Как далеко я смогу зайти, не знаю. Веду дневник разработки, чтобы видеть свой прогресс https://t.me/neonhawk_dev
363 941198
сраная капча, два раз отправил
364 941200
>>41184

>поле физикс чарактер боди


Шта за поле? Не понял
365 941201
>>41200
ну встроенное свойство, которое уже используется внутри физ движка для движения.
А не объявленная тобой переменная var velocity.
https://docs.godotengine.org/en/stable/classes/class_characterbody3d.html#class-characterbody3d-property-velocity
366 941203
>>41195

>1. Проект переведён на физический движок Jolt.


И чо как? В веб он умеет? В андроид? Какие подводные заметил?
367 941204
>>41203
Проект делаю для пк, поэтому про веб и андроид сказать не могу. Перешёл на Jolt, потому что когда делал контроллер персонажа, его трясло.
368 941205
>>41204
Персонаж-двачер. Но да. В 4 дефолтный физон сырой.
369 941223
>>41158
Кидай. Я бы тоже кидал, если бы моё не было оффтопом.
370 941230
>>41223
Это ты там мобильную дрочильню на другом движке пилишь?
371 941232
>>41182
А нахуя? Перемещать по вектору - это тупо сложение. А из скорости и направления это ж надо тригонометрию считать.
Ну понадобится тебе угол направления - сделаешь Vector2.angle(). Но он обычно не нужен.
372 941239
>>41182

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


velocity - это direction умноженная на speed
373 941241
>>41230
У меня не годот прост.
374 941309
>>41241
Тогда, просим-просим в новый свежий субшота-тред! >>941307 (OP)
1682219503711.jpg15 Кб, 320x180
376 941336
>>41322
Это только первый шаг, на одном рейкасте, а дальше придется уже и A-star прикручивать чтобы найти путь звука огибающего углы.
377 941343
В определенных чатах разработчиков веб игр говорят, что годот для веба не очень. Размер билда большой, загрузка, перформанс. А я хочу именно в веб, стоит ли оставаться в godot?
378 941344
>>41343
Средний. Для того кол-ва фич, что есть, очень даже. Я использую 3-ю версию для лоуполи 3д. В противном случае мне бы пришлось ковыряться в threejs довольно низкоуровнево. Перформанс, надо срезать многие фичи, многое упрощать и оптимизировать. Для 2д, ну наверное можно взять что то чисто js. А так, возьми и попробуй, сделать прототип и померять нетрудно. В конце концов потом прототип перенести на тот же threejs. Как минимум у тебя остается удобный редактор.
379 941346
>>41343
Хз, все свои игры выложил и под веб тоже. По стилям совсем разное. Пиксели, 2д, 3д. Никаких проблем. Я чет думаю ты читаешь каких-то ноудевов, которым лишь бы причину найти ничего не делать.
380 941347
>>41343
А у тебя есть айфон? А то у меня тут вопросы неразрешенные >>39742
image.png5 Кб, 403x103
381 941366
Сап, годач.
Есть у меня global скрипт, а в нем заяц, в зайце — утка, в утке — яйцо некий словарь items = {} с другими словарями внутри. И вот в одном из скриптов я делаю так:
var item = global_list_of_items.items[item_name]
item["i_amount"] = 33


Только вот при изменении item["i_amount"] меняется значение ключа "i_amount" в исходном словаре items = {} - становится равно 33

Просто duplicate не сработал:
var items_copy = global_list_of_items.items.duplicate()
var item = items_copy[item_name]
item["i_amount"] = 33


А вот duplicate для каждого ключа по отдельности сработал:
var copy_items = {}
var original_items = global_list_of_items.items
for key in original_items.keys():
copy_items[key] = original_items[key].duplicate()
var item = new_items[item_name]
item["i_amount"] = 33


Но получается какая-то хрень, т.к. мне много где надо будет обращаться к списку предметов. В принципе я могу эту функцию засунуть в глобальный скрипт с предметами, чтобы сократить запись:
func duplicate_items():
var copy_items = {}
for key in items.keys():
copy_items[key] = items[key].duplicate()
return(copy_items)

В других скриптаз будет:
var copy_items = global_list_of_items.duplicate_items()
var item = copy_items[item_name]


Либо сделать сеттер в глобальном скрипте, который бы менял значение словаря items на исходное при любом изменении, хммм
image.png5 Кб, 403x103
381 941366
Сап, годач.
Есть у меня global скрипт, а в нем заяц, в зайце — утка, в утке — яйцо некий словарь items = {} с другими словарями внутри. И вот в одном из скриптов я делаю так:
var item = global_list_of_items.items[item_name]
item["i_amount"] = 33


Только вот при изменении item["i_amount"] меняется значение ключа "i_amount" в исходном словаре items = {} - становится равно 33

Просто duplicate не сработал:
var items_copy = global_list_of_items.items.duplicate()
var item = items_copy[item_name]
item["i_amount"] = 33


А вот duplicate для каждого ключа по отдельности сработал:
var copy_items = {}
var original_items = global_list_of_items.items
for key in original_items.keys():
copy_items[key] = original_items[key].duplicate()
var item = new_items[item_name]
item["i_amount"] = 33


Но получается какая-то хрень, т.к. мне много где надо будет обращаться к списку предметов. В принципе я могу эту функцию засунуть в глобальный скрипт с предметами, чтобы сократить запись:
func duplicate_items():
var copy_items = {}
for key in items.keys():
copy_items[key] = items[key].duplicate()
return(copy_items)

В других скриптаз будет:
var copy_items = global_list_of_items.duplicate_items()
var item = copy_items[item_name]


Либо сделать сеттер в глобальном скрипте, который бы менял значение словаря items на исходное при любом изменении, хммм
382 941367
>>41366
Я ниххуя не понял? Что у тебя происходит? Что тебе нужно?
1656093978867.png26 Кб, 1011x149
383 941368
>>41366
А ты пробовал документацию прочитать?
384 941369
>>41367
Ну видимо чувак в словари добавляет внутриигровые предметы и по мере прогресса добавляет в словарь новые.
385 941370
>>41369
Но из его поста выходит, что у него int 33 передаётся из словаря по ссылке. Нонсенс.
>>41366

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


> var item = global_list_of_items.items[item_name]


> item["i_amount"] = 33



> Только вот при изменении item["i_amount"] меняется значение ключа "i_amount" в исходном словаре items = {} - становится равно 33

386 941372
>>41370
А не, туплю. Он словарь извлекает.
387 941373
>>41370
Словари и массивы (и, вроде бы, теперь Callable) в гдскрипте передаются по ссылке а не по значению. А если понадобиться передать 33 по ссылке, то можно обернуть его в массив или объект
388 941391
>>41372
this
>>41368
Спасибо, попробую.

>документацию прочитать?


Это духота, поэтому я редко вспоминаю об этом
389 941400
Поделюсь своей историей. В прошлом треде обсуждали публикацию на крейзигеймс. Так вот, я переписал кусок старого годот 3 проекта, избавился от тредов в своем коде, следовательно избавился от необходимости в sharedbufferarray, и опубликовался на крейзигеймс. Анон, с которым я разговаривал в прошлом треде, говорил что они отказывают молча - без объяснения причин. Мне причины написали. Я их исправил, отправил снова, со второго раза меня опубликовали. Потом мне написали еще раз, с анализом взаимодействия юзеров с моей игрой, и с советами как игру улучшить. Их я тоже реализовал.

По итогам могу сказать что хоть для популярности крейзигеймс 3/5, но для качества игры - 5/5. Их команда мочераторов дала мне именно тот фидбек, которого я не мог добиться от обычных юзеров. Тогда как юзеры, в ответ на мои вопросы, выдавливали "эээ пук кек ну вот тут чет непонятно, ну хуй знает", то эти мочухи все четко сформулировали и навалили советов как исправить.

У меня все.
390 941409
>>41400
О чем игра то?
391 941415
>>41400
Тогда встаёт вопрос, как добиться такого же внимания от чмодераторов, чтобы также помогали, а не игнорили, как других?
392 941417
>>41415
Хуй их знает. Моя игра не супер-популярна по меркам крейзигеймс, но внимание мочухов я получил. Ничего особенного не делал. Игра висела на рассмотрении дня 3, потом ответ "исправьте a, b, c". Через пару месяцев отправлю им еще одну старую свою игру, отпишусь по результатам.

Еще они предлагают рекламу встроить в саму игру через их апи. Я отказался. Без встроенной рекламы ты получаешь процент от той рекламы, которая у них на страницах показывается. За пару дней мне пара евро набежала. Вывод через палку.
393 941419
>>41417
Обрати внимание на такой аддон
https://godotengine.org/asset-library/asset/2153
Правда там идет один большой js на все платформы. По уму надо взять другую их js-core репу и там собрать отдельно под каждый стор.
394 941421
>>41419

>Absolute Games


Падажжи, это те которые аг.ру? Хрена эти деды перепрофилировались.

Спасибо. Просто не хочется рекламу в игру пихать. По крайней мере не в эти две, они для души. Для них я ставлю pay what you want когда платформа позволяет, либо отдаю бесплатно. Рекламу может потом, для бездушной мобильной дрочильни.
395 941422
Гайс, а как развернуть по "х" РигидБади2д?
Попробовал через scale.x , но если работает физика, скейл сбрасывается и объект смотрит в ту же сторону.

Хочу просто рагдолл тело спавнить после смерти нпс
396 941430
>>41400

> следовательно избавился от необходимости в sharedbufferarray,


А в чем проблема? Говдод не может в sb что ли?
397 941431
>>41430
Платформа, крейзигеймс, не предоставляет cors/sharedbuffer.
398 941432
>>41422
ЕМНИП scale.x=-1 у физических тел не работает потому что это будет nonuniform scale. там надо сами коллайдеры подвигать. Ну если у тебя простой вариант ты можешь просто спавнить один из вариантов, левый или правый.
399 941433
>>41431
Ебать поехавшие. Воркеры даже на мобилках есть, а они sb не пускают.
400 941436
>>41432
Ну да, я там как-то сложно не делал. Спасибо
401 941437
>>41433
Да лан, яндекс вон тоже не умеет.
402 941439
>>41437
Дауж, хуевая жизнь с такими издателями.
Так понимаю это всё из-за того что утечки между играми возможны, потому что один и тот же домен?
403 941441
>>41400

>Анон, с которым я разговаривал в прошлом треде, говорил что они отказывают молча - без объяснения причин.


Как я читал где-то в тележных чатиках: они отказывают молча, если им игра "не подходит". Хуй знает, какие там критерии подхожести, но у меня вот так вышло, причём даже другой билд залить и снова отправить на рассмотрение нельзя.
Очень рад за тебя, анонче. Завидую, но по-товарищески. Не хочешь ли теперь на ЯИ сунуться? Пройдя одну мочерацию, с другими должно быть полегче. Говорят, с разных платформ разная статистика, кому-то с яндекса даже больше капает.
404 941444
>>41439
Я понимаю так. SharedBuffer имеет много подводных камней безопасности, от спектра/мелтдауна, до утечек. Поэтому его включают вместе с CORS: same-origin, который изолирует каждый процесс и для сервера, и для клиента. Изоляция на клиенте затрудняет работу скриптам с третьего домена на странице с игрой. А именно через эти скрипты обычно и показывается реклама. И не все рекламодатели успели научиться это решать. Так что банально проблема в бабле.
405 941445
>>41309
Нет, тем более, большая часть изменений у меня в логике игры, а не визуально заметные. Вот, я сегодня изменил логику хранения ассетов неписей, чтобы мог их наборы масштабировать, прикрутил фичу к взаимодействию с неписями, пофиксил пару багов и сделал ещё ассеты, некототорые ассеты переделал.
Что я тут мог бы показать кроме кода? Ассеты, но там ничего интересного.
406 941447
Делайте игры с освещением.
407 941449
>>41447
А ты понимаешь, что второй скриншот выглядит ХУЖЕ первого, несмотря на тени? Потому что "затемнить дохуя, пережечь и влепить лампочки" не равно "выстроить освещение сцены"
408 941465
>>41444
Ебать. А ведь это серьёзней чем я думал. Т.е. sb полностью блокируют нахуй любую рекламу и решить это практически невозможно, если не использовать рекламу которая будет встраиваться в домен, что звучит невозможно нахуй. А там ещё всякие говновсплывающие окна а авторизацией не работают. Охуеть просто.

Ебаные аутисты и пидорасы опять откатили прогресс в прошлое. Как же заебало.
409 941466
Здравствуйте, у меня есть сцены объектов с параметрами(пример Вася), есть сцены с кнопочками, которые должны улучшать эти параметры.
Как связать одно с другим? Мне не хочется вручную прописывать миллион одинаковых сигналов для каждого объекта, а как сделать более лаконично и по умному я не знаю.
410 941469
>>41466
Не совсем понятно, как и где у тебя планируют располагаться кнопочки, но можешь сделать один сигнал, а в нем передавать разные параметры в зависимости от кнопочки
411 941470
>>41469
кнопки будут распоагаться в отдельном скроллбаре, и какой что нужно прописать в сигнале, чтобы к конкретному экзмепляру другой сцены передать данные?
412 941475
>>41466

> а как сделать более лаконично и по умному


Через экспорты.
У объекта "вася" в скрипте ты должен сделать
@export var GUIButton
И привязать к ней все сигналы один раз. Далее, сколько бы ты вась не поставил на сцену, вручную или скриптом, ты должен загрузить в GUIButton валидный экземпляр. В редакторе ты через инспектор выберешь существующую ноду. Если надо кодом, то

> var v = load("vasya").instantiate()


> var g = load("gui").instantiate()


> GUI.add_child(g)


> v.GUIButton = g


> Mobs.add_child(v)


Ну, как-то так. НО! Без чёткого понимания архитектуры твоего проекта, давать советы бессмысленно, уверен, ты нихуя не понел из моего поста.
413 941507
>>41444
Спасибо анон что пояснил, а я даже не думал о таком, вся синхронизация через SAB была. Ебать вот это открытие-то нахуй. Чем дольше вникаю тем глубже кроличья нора. Нужно обязательно модифицировать код и добавить варианты работы и синхроанизации каких-то данных между потоками.
Жозенько конечно, хорошо что наткнулся на это, иначе бы обосрался и пришлось в продакшене пытаться переписывать свой движок.

В целом идея такая - иметь несколько воркеров, синхронихировать время через RAF, синхронизировать данные через postmessage с transferable объектами. Будут полностью независимые потоки, но с передачей данных между потоками. Впринципе должно работать. Но синхронизация такая слишком сложная. Но у меня работать будет. Вероятно годот и хуан с этим не справится никак вообще, слишком сложно.
414 941509
>>41507

> годот и хуан с этим не справится никак вообще


Вообще-то справляется. Речь о том, что не справляются хостеры игор, не справляются с многопоточными играми.

> у меня работать будет


Скажешь "гоп" как выскочишь.
415 941512
>>41509

> Вообще-то справляется.


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

> Речь о том, что не справляются хостеры игор, не справляются с многопоточными играми.


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

> Скажешь "гоп" как выскочишь.


Оно уже работает через наивный подход, но наивный не самый производительный и красивый. Дальше попишу немношк, покумекаю как сделать лучше и красивее.
416 941544
Вот вы спать пошли, а часики-то тикают.
417 941549
>>41544
А ты батарейку на ночь вытаскивай
image.png2 Мб, 1656x1071
418 941655
>>41549
Как же работать без батареек?
419 941656
>>41655
На дизельном топливе, керосине, бензине, электричестве от картошки, фотосинтезе, ветряках. Че как маленький.
420 941673
Расскажу я вам одну историю про робота. Этот робот жил под землёй и рыл себе туннели. А работал он от солнечного света. Чтобы работать ему надо было, чтобы по оптоволокну через фотоприёмники свет попадал прямо ему в ядро. У него было выращено на поверхность множество оптоволокон, но вот беда, ночью солнце заходит и света нет. И тогда робот придумал замечательную идею. Пока наверху день, робот накапливал энергию солнца в специальных молекулах, которые образовывали связи, бомбардируясь фотонами. По потребностям робота он генерировал себе три вида молекул: СВЕТ, ТЕПЛО и КРУЧЕНИЕ.
Когда молекулы заработали, робот перестал зависеть от дневного света, смог оторваться от ранее выращенных волокон и углубился дальше в лес, затем по руслу реки, к небольшому городу N, где и спрятался под большим автомобильным мостом.
image.png372 Кб, 480x360
421 941674
>>41673
Так выпьем же за теорию торсионного поля!
1674995417456.png33 Кб, 1124x234
422 941689
423 941690
>>41673
Украл для сюжета своей игры, ждите меня миллиардером.
424 941694
https://github.com/godotengine/godot/issues/35606
Господа анонсы делающие пиксельарт игры, как вы боретесь с тряской линкрелейтед? Впринципи в ексклюзив фуллскрин она практически незаметна, но это на фуллхд монике, как будет на 2к и 4к хуй его поймешь. За оконный режим вообще молчу, там тряска на уровне шиза из движкосрача, укачать может. Пиксель перфект я не преследую, нахуй не нужон, за пиксельснап трансформа знаю, но эта хуйня может вызвать только приступ эпилепсии.
Настройки проекта если нужны: размер вьюпорта 480х270, мод канвас айтем, скейл мод целочисленый, юзаю четверку. Из за чего собсно происходит эта тряска я понимаю, но не понимаю нахуя это было сделано так криво.
Вообще на текущей стадии проекта меня это волновать не должно, но сука, не могу успокоиться зная о такой проблеме.
425 941695
>>41694
Тут много моментов. Проблема в основном вылезает когда у тебя внутригровые пиксели располагаются не по пикксельной сетке. Отчасти это чинится фиксированным разрешением и запретом его менять. Второй момент - плавная субпиксельная камера (x:22.222, y:33.3333), заставляющая весь вьюпорт съезжать с пиксельной сетки. Можешь использовать вью мод 2д вместо вьюпорта. Можешь скалировать спрайты на побольше, тогда проблема менее заметна. Можешь двигать камеру только по целочисленным значениям. Еще такое видел, но не тестил: https://godotshaders.com/shader/sub-pixel-accurate-pixel-sprite-filtering/

После двух своих тру-пиксель-перфект игр перешел на лоуполи 3д и рад пиздец. И моделить проще, и использовать.
426 941696
427 941697
>>41695
Есть еще вариант сабпиксельной камеры через шейдер.
https://www.youtube.com/watch?v=zxVQsi9wnw8
https://github.com/RPicster/Godot-Collected-Thingies/tree/master/Godot-Tutorial-SmoothCamera
428 941698
>>41695

>Можешь использовать вью мод 2д вместо вьюпорта


В четвёрке это и есть канвас айтем. А вот за шейдер спасибо, сейчас потесчу.

>После двух своих тру-пиксель-перфект игр перешел на лоуполи 3д и рад пиздец.


Да я если честно уже пожалел что в 2д полез, столько мозгоебли что проще в 3д уйти и начать моделировать.
>>41696

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


Это слышу звон, да не знаю где он, называется. Ссылка на документацию отношение к проблеме вообще никакого не имеет.
>>41697
Это не то, да и в четверке не работает.
429 941699
>>41698
А, я то пиксель на 3-й делаю. Как раз потому что он там доведен до ума. Конечно нету вкусных тайлмапов, ну чтож.
430 941701
>>41699
Я щас мельком тройку потестил, тряска тоже есть, но только у спрайта на котором камера висит, надо будет попозже сделать полную копию сцен из 4 и посмотреть как оно, мб все таки придется пожертвовать фичами 4 и сесть на 3.
431 941702
>>41698

>пожалел что в 2д полез


2д оно такое, да. Это все тот ебучий миф, что типа пиксель арт - просто. Типа навалил пикселей и поехал. Хуй там. Самый сложный стиль и для рисования и для работы с. При этом в годоте с ним еще норм работается, в отличии от некоторых других движков.
432 941737
>>41701

> у спрайта на котором камера висит


Там еще разные факторы есть, например у камеры есть свое сглаживание, у физического движения тоже.
434 941770
Годот это единственный движок на котором я смог сделать хоть что-то, хоть какой-то кусок говна, но выпустил.
На фейзере я в ахуе как люди что-то делают, там даже редактора нет, просто в голове отыгрываешь и на каждый пук ищешь костыли, фиксы, хуиксы. Остальные маленькие движки для веба тоже супер перегружены какой-то парашей которая лично меня отпугивает
435 941771
>>41770
Маладца. После первой релизнутой поделки ты стал опытней, дальше легче. Куда выложил?
436 941772
>>41747
Странная штука. Во первых, нужон ли там GDExtension? Во-вторых, нет поддержки мобилок в рантайме.
437 941775
Блять, просто мистическая хуита творится! Делаю игру четко по гайду, как вдруг кто-то наслал проклятие!

Пик 1: по замыслу жизни кончаются, эмитится died(), вызывается рестарт из автолоадера, меняющий сцену. Но все зависает в момент эмита died. Пути к сценам прописаны правильно, ошибок нет. Если привязать рестарт к любому другому сигналу, будь тот таймер или кнопка, то все работает!

И самый сюр в том, что died тоже работает и не виснет, но только если он прямо не вызывает рестарт!
Костыль с пика 2 работает. А если через таймер отсрочить рестарт в коде самого on_player_died, то опять зависон. Но в чем разница? КАК ЭТО ПОНЯТЬ???
438 941781
>>41776 (Del)
>>41777 (Del)
Пиздуй в тред для движкосрача, додик. Специальный загон для тебя.
439 941787
>>41775
died один раз эмитится или начинает спамить?
440 941789
>>41775

>все зависает


Прозреваю циклические вызовы. Типа, ты эмитишь died, он вызывает смену уровня, а смена уровня снова вызывает функцию. эмитящую died. Например, перепроверяет хп.
Поставь брейкпоинт и чекай.
441 941797
>>41770
Вообще-то в Фейзере есть редактор https://phasereditor2d.com/
Но Годот, наверное, проще.
4e4abe18145c51e9396fecbccef578d554301eadb02748cf584a45e1fbccad4b.gif3,8 Мб, 498x373
442 941808
>>41770

> На фейзере я в ахуе как люди что-то делают


Программировать надо, да? Не то что годот, тут даже программировать не нужно!
1710410828585.png24 Кб, 542x194
443 941810
>>41747
Чот рано еще.
444 941819
>>41810
Заметил что 4-ка с первого раза вообще плагины плохо подхватывает, надо хотя бы редактор перезапускать.
445 941822
>>41819
Да там какой-то лютый пиздец наступил с проектом. Зря я в существующий проект его подключил. Хорошо, что проект был двачетредный помогательный, и его в целом не жалко.
446 941824
>>41775
Скорее всего никакой мистики не будет, если ты нарисуешь схемку-диаграмму что в каком порядке вызывается.
У меня в начале знакомства тоже была похожая история. Так там дело оказалось в том, что я передвигал игрока в точку спавна, но был кадр, в котором срабатывал process, когда игрок все еще находился внутри триггера.
Наверное по простому это можно решить, внутри restart() вызвав какую нибудь disablegame() которая отключает все триггеры или реакции на них.
image.png89 Кб, 926x398
447 941861
Кайф. Четверка все вкусней и вкусней.
448 941863
>>41747
визуальное программирование всегда казалось мне какой-то нубтрапой, иллюзией простоты
449 941864
Ещё раз, какой аналог объектов из стандартных языков программирования в годот? Как мне сделать условный массив собственных объектов, а не из какого-то вида встроенных нод?
450 941865
>>41864
точнее в gdscript*
Я нашёл что можно сделать autoload ноду со скриптом с собственными параметрами, но это явно нестандартный путь. Делать пустую ноду со скриптом и привязывать её в сцене? Или ещё как-то?
452 941869
А можно как-нибудь проксировать экспорт-переменные ноды? Есть нода-компонент, допустим спавнер. Я в ней указываю (через экспорт-переменные) каких юнитов, с каким промежутком и куда спавнить. Потом я цепляю ноду-спавнер к нужным сценам-постройкам. Потом постройки ставлю на сцену-карту.

НО на сцене-карте мне недоступны экспорт-переменные ноды-спавнера. Они же внутри постройки сидят. Я конечно могу кликнуть по сцене-постройке, включить "редактируемые дети", и добраться до ноды-спавнера. Но это все дерево в кашу превращает. Хотелось бы, типа, указать "вот эту ноду подтягивай наверх и показывай как свою родную".
453 941871
>>41869
Тебе нужно ноду не по дереву адресовать? Используй группы
https://docs.godotengine.org/en/stable/tutorials/scripting/groups.html
454 941880
>>41864
Ты, видимо про это
https://docs.godotengine.org/en/stable/tutorials/best_practices/node_alternatives.html
В общем, кроме Node2D/3D, а также просто Node (которая не имеет позиции и прочего, но может быть добавлена в дерево)
Существует базовый просто Object, также для некоторых случаев подходит Resource.

Кроме того, ты можешь объявлять свои классы. Есть два способа
Первый, это любой скрипт (который наследуется через extend от чего то), ему можно задать class_name
https://docs.godotengine.org/en/stable/contributing/development/core_and_modules/inheritance_class_tree.html

Второй способ, это в любом месте завести вложенный класс
https://docs.godotengine.org/en/stable/contributing/development/core_and_modules/inheritance_class_tree.html

Так что ты можешь делать массив не из условных, а из вполне себе своих объектов.
455 941898
Подскажите а годот умеет так?

https://www.youtube.com/watch?v=eBEMFcUjGno

Мне надо подобное реализовать
456 941906
>>41869
Казалось, что видел такой аддон, но что-то не нашел сейчас.

Но вроде бы руками сделать несложно.

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

Второй, сейчас узнал что есть такая штука как inspector plugins.
https://docs.godotengine.org/en/3.2/tutorials/plugins/editor/inspector_plugins.html
Есть какой то аддон на тему, Extendable Inspector возможно он упростит создание
Хотя, я его час поковырял, и не получилось быстро сделать то что ты хочешь.
Это надо еще копать. Но технически это возможно, потому что редактор годота это просто сцены из контролов. Просто надо разобраться как там категории добавлять, undo redo.
457 941908
>>41898
Из коробки такого нет. Сам такую хотел сделать, пока руки не дошли, где-то был гайд, там что то с рейкастами. Кажется этот https://www.youtube.com/watch?v=KlfFnchkDwQ
458 941909
>>41908
Т.е. общая идея что ты обнаруживаешь угол, на котором поворачивает веревка, и в этой точке его прилепляешь. Между этой и предыдущей точкой провешиваешь его немного, чтобы он свисал. От новой точки тянешь дальше.
459 941930
>>41880
Спасибо огромное, это именно та сторона, куда мне надо было искать <3

Появилась ещё одна проблема, попытался сделать сохранение данных через ResourceSaver вроде описанного тут https://gdscript.com/solutions/how-to-save-and-load-godot-game-data/, при этом сохраняется объект Resource с массивом объектов внутри. Но при сохранении элементы массива не сохраняются. Если вместо объектов в массиве будут стандартные переменные - всё сохраняет. У этого есть решение, чтобы при этом оставить сохранение как ресурса?

Нашёл в теории сохранять построчно https://forum.godotengine.org/t/read-and-save-arrays-solved/17852 , либо, возможно, JSON, но это выглядит будто бы не так удобно и более громоздко
460 941936
>>41930
Смотря что у тебя в массиве, посмотри в эту сторону

ResourceSaver.save(savepath, resource, ResourceSaver.FLAG_BUNDLE_RESOURCES)

If you don't use the flag "FLAG_BUNDLE_RESOURCES" the resources inside the array are instead saved as references to the resource class, this means that when loading the resources back they will just load the default resource with no aditional data.

Но может у тебя что то другое. Я не пробовал.
461 941937
>>41906
Спасибо, анон. Пока я решил в сцене-карте, в каждое здание, вручную добавлять ноду-спавнер. Тогда она доступна прямо на карте и позволяет выбирать все, что нужно. Геморно, но не так кашево как включать редактирование детей.

А ты принес хорошую штуку. Потыкаю ее.
image.png770 Кб, 1280x720
462 941938
463 941941
>>41938
Когда там релиз уже?
1710539379676.png20 Кб, 701x353
464 941942
>>41936
В массиве вот подобные объекты, чисто для примера пока что

С флагом вместо моего объекта с массивом возвращается объект типа Resource, я чето устал пока что завтра посмотрю
465 941943
>>41938
Полистал список изменений, вроде ничего важного (кроме того интерактивного аудио с странным редактором).
Хотя пару серьезных багов исправили, например BoneAttachment, неполное запекание LightMap, или вот такой суровый https://github.com/godotengine/godot/pull/88946
Виндо дефендер почему то сагрился на свежий файл.
466 941945
Что-то не могу найти упоминания, в 4 GL Compatibility render в материалах не работает карта высот? Которая height, которая еще бывает называется Disaplcement.
image.png317 Кб, 465x316
467 941946
И все же непонятно как в самопиаре зацепить не-геймдевовскую аудиторию.
468 941952
В следующем тренде покажу свой будущий хит ТРЕПЕЩИТЕ
469 941953
>>41946
Притворись тяночкой
470 941954
>>41953
Я и так
471 941955
>>41942
Всё решил

- поменял extends Object на Resource (было логично, как только комп вчера выключил, сразу об этом подумал)
- забыл поставить для переменной oparam "@extends"

ух
472 941985
Хм, я правильно понел, что экземпляр вложенной сцены (в текущую) не создать без (повторной) загрузки всей текущей сцены? Что-то типа $Child.instantiate() не получится, надо обязательно загружать файл сцены и потом уже экземплярить вложенную через get_node.
Не хуярит ли это по производительности?
inb4 хуярь нужную подсцену отдельным файлом
473 941989
>>41985
Ты можешь duplicate, если я верно тебя понял.
image.png12 Кб, 560x132
474 941990
>>41989
Да, то что надо. Спасиба :3
image.png312 Кб, 1357x577
475 941993
476 941994
>>41993
Из твиттера Хуана.
image.png124 Кб, 615x442
477 942019
Сижу рисую домики для локации, 1 закончен на 80%, два других на 70% и 40%, и еще 2 останется нарисовать с нуля. Дальше буду рисовать водную растительность в виде камышей и прочей другой хрени.
А ты чем занят анон? Делись.
478 942021
>>42019
Будет симулятор рыбалки?

А я дизайню сумоиста в подгузниках.
479 942023
>>42019
Пишу диздок игры миллиардолетия надеюсь хватит медскиллза написанное реализовать на практике
480 942026
>>42021

>Будет симулятор рыбалки?


Не, из ближайшего похожего стардювали, но до этого ближайшего как от москвы до камчатки пешком. А так это домики будущей деревни рыбаков.

>А я дизайню сумоиста в подгузниках.


Показывай
>>42023
Я если честно хуй забил на диздок, сначала тож хотел сесть написать, но хуй к носу прикинул, в тетрадку накидал мысли и идеи да и пошел рисовать.
image.png82 Кб, 711x1245
481 942028
Делайте
482 942029
>>42019
Пишу взрывы: как они распространяются, как рейкастят и дамажат, если луч не встретил препятствий. Ещё надо будет какие-то партикли им нарисовать, наверное.
483 942034
>>42029
А зачем они рейкастят? Не легче ли им кастить сферу, например?
484 942039
>>42034
Точно, четвёрка же!
485 942045
>>41954
Тут-то какой смысл притворяться тянучкой, тут ни у кого на них не стоит. Стоит только на игори и годот.
486 942069
>>42029
Во, молодец. Давай там, удачи тебе. Верим, ждём.
487 942077
А вы знали что если в фильтре, в древе нод, отфильтровать по любому имени, то в 3д редакторе не получится кликнуть ни на что, что не входит в список отфильтрованных нод? Я вот только сейчас обратил внимание. Удобно.
488 942078
>>42077
Бриллиант!
Это в какой версии?
489 942079
>>42078
В тройке точно есть.
490 942090
В голове идея была веселой, а реализовал - чет нихуя не весело. Ебаный геймдев.
491 942091
>>42090
Так может ты хуево реализовал
492 942092
>>42091
Нет ты
# OP 493 942109
>>42092
Нет я!

Давайте, готовьте арт на перекат.
494 942118
>>42109
Бери, лучше не найдешь, базарю -> >>42028
1710767613133.webp80 Кб, 1280x720
Dev snapshot: Godot 4.3 dev 5 # OP 496 942129
4.3 dev 5 is following quickly behind 4.3 dev 4 since we want to get something into your hands before we head over to the Game Developers Conference next week. Please test out this development release and give us lots of feedback, so that we can enter the beta phase shortly after we return!

Importantly, you will notice the development pace slow a little bit as many of the core developers are away for the week and taking a much needed vacation the following week.
1710767659252.webp82 Кб, 1280x720
Release candidates: Godot 4.1.4 RC 2 4.2.2 RC 2 # OP 497 942130
Many core team members are heading to the Game Developers Conference next week (see our past announcement, and the line-up of games we’ll be showcasing), and preparing for this event in parallel to working on the upcoming Godot 4.3 release has kept us really busy!

So maintenance releases for 4.1 and 4.2 users fell through the cracks temporarily, but we’re getting back on track with a new set of release candidates for both 4.1.4 and 4.2.2.
1710767702614.webp76 Кб, 960x540
Introducing our GDC Line-up # OP 498 942131
Like we announced a while ago, the team is preparing to head over to the US for this year’s GDC! In case you have not heard about the conference before, you can read more about it here: gdconf.com

We will have a booth on the expo floor, and would love to welcome you there! You can play games (more about those below), chat with our sponsors, meet contributors to the engine and ask your burning questions to the Foundation members staffing the place. There might even be pins to snatch up 👀
# OP 499 942133
перекатывайте уже!
ПЕРЕКАТ # OP 500 942135
501 943001
>>39727
>>39722
Видимо, мне не стоит спрашивать, что это и зачем, чтобы не бросить всё к хуям в самом начале.
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

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

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