Этого треда уже нет.
Это копия, сохраненная 5 ноября 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
ОП-пикча521 Кб, 2000x2034
Godot #21.03 # OP 734420 В конец треда | Веб
Добро пожаловать в тред любви, взаимопомощи, лобызаний и цветения!

Краткий гайд по вкату в движок:
1. Читать документацию.
2. Качать примеры.
3. ПРОФИТ!

Ньюсач
https://godotengine.org/news/

Ссылки
Скачать движок: https://godotengine.org/download/ или http://store.steampowered.com/app/404790/Godot_Engine/
Теперь прямо онлайн - можно и с дивана: https://godotengine.org/online/godot.tools.html
FAQ: https://docs.godotengine.org/ru/latest/about/faq.html
Документация: https://docs.godotengine.org/ru/latest/ https://docs.godotengine.org/en/stable/
Примеры качаются прямо в движке через свой магазин в отдельной вкладке AssetLib. Там есть всё - от платформера до чата.
Игры, созданные глобальными кириллами: https://steamcommunity.com/app/404790/discussions/0/412448792354265655/
Изумительный Годот: https://github.com/Calinou/awesome-godot - подборка дополнений, модулей и минишоукейс от одного из авторов.
Аддон для диалоговой системы: https://github.com/coppolaemilio/dialogic

Для любителей пощекотать конпеляцию
Бинды LUA: https://github.com/perbone/luascript
Бинды JS: https://github.com/GodotExplorer/ECMAScript

Годнота от анона
- Для приверженцев опенсорца существует возможность распространять проекты в незапакованном формате. Просто скачай темплейт с оф.сайта и положи экзешник/эльфешник в папку с проектом, этого достаточно. Имя файлу можно задать любое. Дополнительно можешь вшить свою иконку в экзешник. После этого, запустившийся файл темплейта обнаружит рядом с собой файл project.godot и начнет грузить проект из него и из файлов, лежащих в распакованном виде в той же директории. Для запущенного таким образом проекта папка res:// становится доступна для записи (если это не ограничено правами доступа в системе).
- В версии 3.2 появилась возможность прикреплять pck к бинарнику. Бриллиант для любителей однофайлового продукта!
- Редактор персонажей на основе makehuman: https://github.com/Lexpartizan/Go_MakeHuman_dot
- Тест-бенчмарк:
- - Веб-версия - https://govdot.herokuapp.com
- - Вишмастер для винды - https://govdot.herokuapp.com/4Anon.rar

Предыдущий: >>719977 (OP)

Архивный: https://arhivach.net/thread/641529/
image.png30 Кб, 1290x684
2 734425
>>34420 (OP)
И первый платиновый вопрос треда.
Когда я добавляю объект в сцену, то он появляется в нулевой отметки xy. И, когда я пытаюсь его перетащить, то либо цепляю другие объекты, либо куски моего объекта, например только спрайт или только коллижншейп. Как мне удобно и нормально перетаскивать сразу весь объект не цепляя при этом другие вокруг?
3 734427
>>34420 (OP)
Ньюсач слабый, я надеялся на топ выборку как в блоке "годнота".
1616263914519.jpg41 Кб, 918x719
4 734428
>>34420 (OP)

> В версии 3.2 появилась возможность прикреплять pck


не появилась, а вернулась - 2.х умел
5 734436
Есть что на тему неевклидовых пространств?
6 734437
>>34435 (Del)
Спасибо!
7 734440
>>34438 (Del)
Спасибо.
8 734457
Продолжаем платиновые вопросы.
Сделал я animationPlayer, запихнул туда анимацию ходьбы в разные стороны, настроил скорость и прочие параметры. Запустил - отлично работает, скорость настроена.
Затем сделал animationTree, там blendSpace2D, запихнул туда анимацию для удобства. А эта хуевина проигрывает скорость анимации по своим стандартным параметрам, не учитывая настройки скорости в animationPlayer. Как фиксить?
9 734459
>>34457
Алсо, в инете тоже не вижу решения пиздец нахуй элементарная же вещь. Если решения нет, то как реализовать тогда в коде смену направлений от градусов?
10 734463
>>34457
Уточню, мне нужна покадровая настройка, так как некоторые кадры у меня проигрываются с разной скоростью
11 734557
Привет годаны, у меня опять вопрос. Скачал пример игры, написанной на С# скрипта в примере все работает отлично, но когда я пытаюсь повторить у меня получаются проблемы с нажатием клавишь, например не работает только нажатие клавиши или сигнал на опускание клавиши, пример - прыжок, нажимаю пробел и он работает через раз, нажемаю бежать и пробел и он срабатывает только через некоторое время. Та же беда с мышью, она вообще не работает, ни правый ни левый клик. Я назначал клавиши через внутренние методы Шарпа(принудительное нажатие клавишь и прямое нажатие указанных клавишь) и нет я не забыл назначить клавиши в своём редакторе, все указал, но они работают через раз.
Я прочитал посты из предыдущего треда о подобной проблеме и нет с кодом все нормально он почти одинаковый немного переработанный, возможно опять, что в движке не нажал. Насчёт контролов я не совсем понял, что там перекрывает?
И да я заметил в некоторых примерах управления персонажей задают годов скриптом, а процедурные вещи, например уровни или объекты пишут на шарпе.
12 734564
>>34557
Напомни, зачем тебе вообще шарп? Почему нельзя реализовать силами движка то, что ты хочешь?
13 734595
>>34564
Он мне понятен и прятен. Я правда пытался освоить гд скрипт, но постоянный контроль отступов и пробелов вымораживают
>>34570 (Del)
Спасибо, попробую
>>34571 (Del)
Понял, но пока это не возможно. Пишу на работе, дома до конца месяца проблемы с инетом, только офлайн.

На самом деле даже того, что я уже достиг в этом движке значительно перекрывает все то что я делал раньше, надеюсь хотя бы эту игру довести до запланированного конца и вправду душевный двиг, надо было изначально на годот вкатываться столько времени потерял.
14 734664
>>34557
У меня через kinematicbody2d, IsActionJustPressed() и MoveAndCollide() все норм на 3.2.4 RC5 так-что это ты наговнакодил скорее всего.
15 734727
>>34557
Есть серия туториалов на ютубе по связке годот+шарп, автор сильно похож на инфоцыгана, но как вариант https://www.youtube.com/watch?v=ra-BJ-fJ6Qo
16 734737
>>34664
Возможно. Попробую.
>>34727
Спасибо, я его смотрел.
AaF7I726N-8.jpg71 Кб, 960x720
17 735092
Появляется ошибка после срабатывания queue_free()
Invalid get index 'position' (on base: 'Nil').
при попытке вычислить свою position на следующей итерации. Разве queue_free() не удаляет весь узел? Почему после queue_free() Годот пытается вызвать позицию удаленного узла?
18 735095
>>35094 (Del)
Все равно не понятно что не так
https://pastebin.com/EKNYa40L
На 33 строчку ругается
19 735096
>>35095
Или он на closest_enemy.position ругается?
Но там же стоит body != null.
Не понимаю, миленькие.
20 735098
>>35097 (Del)
Согласен. Спасибо
XOXO
21 735351
Решил проблему с несрабатыванием прыжка, нужно было в редакторе поднять коллайдер коллизий у персонажа (если я правильно назвал) выше, у меня он был наполовину опущен в плоскость пола.
Начала работать мышь, но по прежнему игрок или берет предмет, но не кидает его, или не берет предмет, но может пнуть его. Думаю проблема в состоянии персонажа, когда срабатывает булевое условие в руках или на земле плюс подозреваю что опять что то неправильно в редакторе настроил для персонажа.
22 735480
>>34420 (OP)
Так, ну AnimationTree меня нахуй послало с тонкой настройкой анимации. И тогда вопрос: Как мне сделать так, что бы в топ даун игре с четырьмя направлениями враг смотрел в сторону героя?
У меня есть четыре анимации ходьбы в четыре стороны соответственно. Но передвижение свободное, то есть, спрайт врага должен меняться от угла по направлению гг
23 735483
>>35480
алсо, пробовал (direction.global_position.x - global_position.x) > (direction.global_position.y - global_position.y), но персонажа чет ебобить начинает в разные стороны
24 735496
>>35480
Сравнивать позицию врага с позицией персонажа и менять анимацию? Помоему самый очевидный вариант.
25 735504
>>35496
Спасибо, а теперь код в студию
26 735541
>>35523 (Del)

>abs


Точно... Спасибо, анон
27 735565
>>35504
За полкосаря напишу
28 735790
>>35351
Решил проблему с броском и поднием предметов. Короче все дело в райкасте, у меня в сцене он был направлен в землю, а не в направлении взгляда модели, как и думал накосячил в редакторе, а не в коде. Кстати зря я на шарп гнал, он корректно работает.
Сейчас планируют разобраться с поворотом модели, пока по клавишам и добавить анимации, в будущем планируют поворот модели с помощью мыши.
29 735872
Нахуя в годо писать на шарпе? Это специальная олимпиада?
30 735883
>>35881 (Del)
Можно и на дуде звук жопой сыграть, только зачем если есть рот? По отдельности рот, жопа и дуда отлично справляются со своими задачами. Так же как годо и шарп, но вот совмещать - это специальная олимпиада.
31 735932
>>35872
Шапку читал?
32 735946
Мой некроноут 2009 года потянет разработку 2D-игр?
33 735949
>>35948 (Del)
Ну я уже, в демку поиграл, запускалась минут 5, проект создался за несколько минут. В принципе ничего не лагает и всё работает.
Вкатываюсь через вот этого челика https://www.youtube.com/watch?v=Mc13Z2gboEk , всё правильно делаю?
34 735958
>>35883
Какая охуенная аналогия. Ну тогда скажи же нам какие у GDs есть функциональные преимущества перед C#?
ExrR33JXIAAOI8J.png63 Кб, 839x222
35 736006
36 736366
>>36170 (Del)
Возвращайся в свой движкосрачь и используйте что хочешь, нечего здесь срач разводить.
37 736429
Привет, годаны! Как вы тут? С осени не заходил, так как игори не пилю нынче. Что нового? Трёшка всё продолжает вариться в RC, я смотрю.
Кто-нибудь из треда зарелизил игру мечты?
# OP 38 736434
>>36429

> Как вы тут?


Картоху сажаем на даче. Вот заглянул в тред перед сном. А тут срутся. Зарепортил всех.
39 737032
>>34420 (OP)
Как мне получить доступ к последнему кадру анимации?
Типа код такой по смыслу:

если происходит последний кадр анимаци, то делается что-то
40 737038
>>37036 (Del)
понял, спасибо!
41 737052
Попробовал Godot. GScript медленный, поэтому пробовать его не стал. Попробовал godot-nim, он работает, но без лайв кодинга и документации и туториалов почти нет. gdnim не получилось запустить. Какие другие языки программирования попробовать, желательно с лайв кодингом? C/C++ знаю, но несколько страшно их из-за нестабильности использовать. Rust сложнее C/C++ во многих случаях и компилится часами. Java мне не очень нравится синтаксисом. C# зачем в Godot, eсли есть Unity!? Nim был бы киллер-фичей Godot по сравнению с Unity.
42 737072
>>37052
Действительно, нахуй они шарп имплементировали, а не на никому неизвестном говне? Бля, да надо было Lisp или D хуячить, а может бреинфак? С такими киллер-фичами прям завтра в мейнстрим вырвемся.
43 737075
>>37052
Не выёбывайся и изучи лайв кодинг на гдскрипте. Потом как постигнешь объектную модель движка, сможешь с лёгкостью хоть на ним, хоть на раст перекатиться. Как раз поддержку этого твоего ним к тому времени допилят.
44 737089
>>37088 (Del)

> Какой жанр игры?


У меня есть большие сомнения насчёт реальности его игры. Ящитаю это позавчерашний залетух-движкосрачер от бана откис и теперь зашёл более тонко срач устраивать.
45 737116
>>37088 (Del)

>Попробуй https://github.com/JustinRyanH/godot-zig


>шучу


В Zig компилятор на Zig для лайв кодинга ещё не сделали.
46 737120
>>37088 (Del)
Жанр игры клон Sims.
47 737231
>>34420 (OP)
Гей-ендевур выходит на кикстартер.
https://www.youtube.com/watch?v=yIJrfvTv8XI
Поддержим, годаны? Что ж мы, кодерки-плагинцы штоле? Нееет, я вижу, среди вас фэпеэсных нет! Поддержим!
48 737232
>>37231

> Поддержим! Скопипастим и в продакшон набьём.


Быстрофикс.
49 737342
>>37341 (Del)

> var s = a + b \


> + c + d

50 737362
Всем годотерам привет. Вкатился в движок пару месяцев назад, пытаюсь сделать что-то простенькое, но есть вопрос по мультиплееру, я не понимаю как его реализовать. Попробовал через веб сокеты, серверную часть написал на python, и пытаюсь от Годо подключиться. Вроде через .connect_to_url() подключение проходит (появляется сообщение о подключении на сервере), но при этом данные не отправляются ни с сервера, ни из подключенного устройства.
51 737363
>>37362
Кстати, когда пишу код клиента на том же python, то сервер с ним взаимодействует нормально. Может ли быть проблема в том, что клиент должен быть написан на том же языке, что и сервер?
52 737396
>>37363

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


Нет, не может. Клиент-серверная технология и создавалась для того чтобы не ограничивать клиент и сервер в выборе языков. Внимательнее разбирайся. Неплохо бы код твой глянуть.
53 737418
>>37400 (Del)
>>37403 (Del)
Спасибо тебе, анон.
Я, идиот, пытался вытащить ответ из сервера, не прослушивая подключение.
1617794478720.png114 Кб, 190x266
54 737708
55 737845
>>34420 (OP)
Мне нужно сделать действие, когда наступает определенный кадр анимации. Но код почему-то не срабатывает. Делаю через curren_animation_positionю. Что не так?
56 737850
>>37845
Проще всего в саму анимацию запихнуть трек вызова метода.
Но если хочешь именно кодом, то скорее всего переменная никогда не достигает значения ровно 0.6. Тогла тебе поможет апроксимация к коэффициенту точности:
var phi = 0.55 # naprimer
if abs(current - 0.6) < phi: print("tvoia kiska v zone puska")
57 737906
>>37850

>abs


А это зачем добавлять?
58 737914
>>37850
А еще call method track ведет себя странно и показывает не все мои скрипты, странно...
59 737918
>>37914
ну функции вернее
60 737919
>>37914
>>37918
А лол, перезагрузка помогла
image.png16 Кб, 417x661
61 737992
>>34420 (OP)
Сап годач.
Есть одна проблемка. Предположим у меня есть враг с анимацией атаки в три кадра в четыре разные стороны. Атакаует он в сторону игрока. Но, если игрок начинает кружить вокруг врага, то враг естественно запускает анимацию атаки по новой в каждую сторону. И так его можно закрутить не доводя атаку врага до конца. И мне нужно, чтобы при изменении позиции игрока менялась анимация но с того кадра, который был у предыдущей анимации. Например два кадра в одну, а в другую сторону атака уже с тертьего кадра. Проблема в том, что я не врубаюсь как мне правильно запихнуть переменную, которая сохраняет текущий фрейм, чтобы она фиксировала позицию до изменения, а потом сбрасывалась, а еще какой именно командой запустить анимацию с определенного кадра
62 737995
>>37992
Просто сделай атаку в развороте. Вариант слева-направо и второй вариант наоборот. Соответственно, если враг разворачивается в атаке, у него стейтмашина переключает анимацию в разворот (с блендингом) и в дальнейшем стало быть спрайт уже развернут в новое положение. И не надо никакие фреймы запоминать. Искури матчасть по блендспейсам.
63 738007
>>37995
Я не пользуюсь стейтмашиной, потому что она не дает тонко настроить скорость анимации для разных фреймов, как это делает animationplayer (как же это тупо пиздец). Так что я делаю через код все.
64 738011
>>38007

> не дает тонко настроить скорость анимации для разных фреймов


Там есть ноды для управления скоростью. Я ж грю, матчасть воскури.
image.png3 Кб, 913x30
65 738026
>>38011
ну давай, покажи, как я могу настроить playback speed в animationtree
image.png2 Мб, 799x1280
66 738109
Вопрос на миллиард. Где взять фоновую ненавязчивую музыку для игоря? С эффектами разобрался, а с музыкой хз. Могу указать автора взятой музыки, но доход с продаж лол хочу грести себе, ни с кем не делясь. Значит нужна музыка с максимально пермиссивной лицензией, позволяющей продавать-перепродавать и всю хуйню.
67 738114
>>38109
очевидный musopen.
68 738115
>>38109
Напиши сам.
69 738122
70 738190
Вот все ресурсы вшиваются в exe, а наоборот как сделать, чтобы они были отдельно?
71 738201
>>38190
Это общий вопрос? Потому что чтобы в экспорте годот-игры "вшить" ресурсы (методом ражпега, то есть приписыванием в конец) - это ещё поебаться надо. И движок опенсорсный, а это значит, там в экспорте не только шиндовое ехе.

Чтобы ресурсы были отдельно - описано в оп-посте:
>>34420 (OP)

> Для приверженцев опенсорца существует возможность распространять проекты в незапакованном формате. Просто скачай темплейт с оф.сайта и положи экзешник/эльфешник в папку с проектом, этого достаточно. Имя файлу можно задать любое. Дополнительно можешь вшить свою иконку в экзешник. После этого, запустившийся файл темплейта обнаружит рядом с собой файл project.godot и начнет грузить проект из него и из файлов, лежащих в распакованном виде в той же директории. Для запущенного таким образом проекта папка res:// становится доступна для записи (если это не ограничено правами доступа в системе).

058d7202bce10f7a70a05a2cfd12c24d365e7703r1-1600-900v2uhq.jpg85 Кб, 1600x900
72 738225
>>38201
Понятненько
73 738246
>>38190
В godot ресурсы не "вшиваются в exe," а упаковываются в .pck и кладутся рядом с экзешником при экспорте, поэтому делать ничего не нужно.

Емнип ты даже можешь сделать так, чтобы ресурсы не паковались, но это уже нужно доки читать.
изображение.png647 Кб, 1024x512
74 738769
ЭЫХ поскорее бы компуть шейдеры хотя бы на уровне C++ реализовали.
А то там RenderingDevice голый и полумёртвый лежит не работает.
# OP 75 738823
>>38225
Зделойти Наначи в стиле Годот. Я вам за это пол треда отдам.
76 738844
Начал в годот вкатываться с этого видосика
Чел оче круто за все поясняет
https://www.youtube.com/watch?v=yRHN_WEulLc
Есть еще подобное с упором на архитектуру?
77 738862
>>38844

> Есть еще подобное с упором на архитектуру?


Может даже и нет. Потому что известные на слуху каналы, типа KidsCanCode, GDQuest, GameEndeavour у них без упора на архитектуру, как я заметил.
78 738863
>>38862
Это сарказм? Или все таки троллинг тупостью?
79 738881
>>38863
У них более комплексный подход, КМК.
T0d7Cv.gif39 Кб, 450x360
80 739149
Как законнектить сигнал к узлу, которого пока нет?
У меня две сцены: типа лобби и арена.
В лобби ты выбираешь бойца, на арене он дерется другими бойцами. Имя победителя сохраняется в синглтоне, в процессе скрипта арены боец с именем победителя коннектится к функции с change_scene.
На второй или третий запуск сцены арены появляется ошибка

>Attempt to call function 'disconnect' in base 'null instance' on a null instance.

81 739150
>>39149
в _ready() сделать connect я не могу, потому что узла еще нет.

func _process(_delta):
if Global.winners_name != "":
ySort.get_node(Global.winners_name).connect("winner", self, "_on_winner_defined")

func _on_winner_defined(_name):
Global.winners_name = ""
ySort.get_node(Global.winners_name).disconnect("winner", self, "_on_winner_defined")
get_tree().change_scene(first_scene)
82 739151
>>39150
E 0:00:03.166 emit_signal: Error calling method from signal 'no_bodies': 'Node2D(Arena.gd)::_on_no_bodies': Method not found..
<Исходный код C++>core/object.cpp:1260 @ emit_signal()
<Трассировка стека>BodyDetector.gd:12 @ _process()
83 739152
>>39151
E 0:00:08.596 get_node: Node not found: .
<Ошибка C++> Condition "!node" is true. Returned: __null
<Исходный код C++>scene/main/node.cpp:1381 @ get_node()
<Трассировка стека>Arena.gd:42 @ _on_winner_defined()
Hero.gd:54 @ _physics_process()
84 739154
И как в Годо продолжить до точки останова? Он ее почему-то игнорирует.
85 739155
>>39150
У тебя ошибка в disconnect.
Потому что ты сначала обнуляешь имя.
Потом по пустому имени ищешь ноду, а это всегда вернет null
Потом у null вызыаешь disconnect.
Переставь первые две сточки в on winner defined
86 739164
>>39155
Йоооооу.
87 739166
>>39149

> Как законнектить сигнал к узлу, которого пока нет?


> У меня две сцены: типа лобби и арена.


Коннекти сигналы в динамическом узле.
Допустим узел арена динамически создаётся. Вот в нём и коннектись. При создании арены все сигналы законнектятся, при уничтожении расконнектятся.
88 739167
>>39150
И не нужны будут вот эти пляски с бубном.
89 739168
>>39150
А ещё можно вот так.

> var registrator = ySort # Vasche!


> var sender = registrator.get_node(Global.winners_name)


> var receiver = registrator.get_node(Global.utils)


> if sender and receiver: receiver.connect("winner", receiver, "_on_winner_defined", [sender])


Ну що? Порвало шаблон?

Сендер в скобачках ещё и прилетит в колбэк аргументом (по ссылке, разумеется), благодаря чему, если сендеров несколько, ресивер, выполняя колбэк будет иметь доступ к конкретному сендеру.
90 739169
>>39168

>Ну що? Порвало шаблон?


Надо обдумоть

Всем вам благодарности
91 739171
>>39168
А как это называется?
92 739190
>>39171
Обсервер.
Ивент дизайн.
93 739201
>>39149
Почему бы не сделать сцену-родителя, которая будет держать лобби и арену, управлять их переходами и хранить общие для них данные (то же имя победителя)?
94 739208
>>39201
Да ну, эт придется диз-док писать, проектировать приложение, блок-схемы там всякие рисовать, что откуда выходит и куда заходит. Нет времени! Надо игоры делать!
2021-04-21 22-51-16.mp47,1 Мб, mp4,
1280x720, 0:22
95 739560
Анончики, поясните за прозрачность в годоте. Хочу сделать стекла, они они очень сильно дропают кадры. Еще видны артефакты в виде ребер. Можно ли это как то оптимизировать\исправить?
В материале в флагах выставил tranparent и установил альфу в альбедо.
96 739564
>>39560
Бро, моё мнение таково: надо делать игру, а не кинцо. У тебя заморочки уровня "почему кинцо не фотореалистичное?". Без обид, бро, но у тебя там геймплей будет вообще? Или игроку будет предложено на полупрозрачные стёкла смотреть ходить?

Ждём, когда Хуан рейтрейсинг завезёт.
97 739565
>>39564
Блять, я про прозрачность спросил и как сделать так, чтобы она не выдавала 20 кадров на 1060, а не про реализацию интересного геймплея в годоте.
Как же вы заебали со своей необходимостью делать только аркадную 2д парашу на этом движке. Дайте поэксперементировать с графикой и поклепать демо-сцены.
Без обид, бро, сорвался.
Screenshot20210422-005008.png182 Кб, 1032x1149
98 739567
>>39560
У Годо могут быть беды с прозрачностью. Или это бага. Если норм владеешь английским, попробуй зарепортить на гитхабе, приложив зипку проекта.

Пикрил отсюда: https://docs.godotengine.org/en/stable/tutorials/optimization/optimizing_3d_performance.html

Еще вариант - попробуй использовать alpha scissors.
99 739568
>>39560
Вдогонку: я предполагаю, что стекла у тебя сделаны отдельными объектами. Если же это часть меша - не помешает проверть в первую очередь, будет ли фреймрейт дропаться так же сильно, если сделаешь стекла как тупо плоскости + отдельный материал(ы) с собственными текстурами.
100 739662
>>34420 (OP)
Сап, годаны. Хочу попробовать годот. Вчера скачал билд под винду, скачал Third-Person Shooter Demo, запустил. Оно начало кушать 90% видюхи (2060), это из-за отсутствия всинка? И начало лагать при запуске прожектайлов. Это проблемы с графоном или питону настолько тяжело аллоцировать объекты? Или это просто кривая демка? Подскажите, а то как-то мотивации поубавилось к изучению.
101 739666
>>39662
Делаем ставки, через сколько скриншот этого поста появится в движкосрач-треде.
102 739668
>>39666
Я прошу прощения, не срача ради. Просто уже кучу всего перепробовал, немного подустал от монструозности старших братьев, а писать всё с нуля на каком-нибудь Haxe, конечно, интересно, но очень долго.
103 739669
>>39668
Я тебя не виню, тут просто один до ужаса предсказуемый шизик на этом треде паразитирует, вот я и вангую.
104 739781
>>39778 (Del)
Зависит от прямоты рук. Убить фреймрейт ты на любом движке можешь, расценивай >>39750 (Del) как иронию.

>>39727 (Del)

>ноль в программировании


Тогда будет трудно, как и везде. Без кода ты игру - полноценную игру - не напишешь. Синтаксис у gdscript несложный доки написаны хорошо понятно (на английском, по крайней мере, вроде на русский переведены, но я не чииал) -- освоение языка и особенностей движка не должно составить таких уж больших проблем.

А вообще, не верь на слово и посмотри сам где лично тебе работать приятнее: попробуй создать схожие проекты-прототипы на всех трех движках и сделай выводы самостоятельно. Если потом вернешься и рассксжешь что как - плюс тебе в карму.
105 739812
>>39781
Спасибо за комментарий! Вчера ночью решил идти от самого легкого, и посмотреть кто создавал уже похожие проекты на этом движке. Может плохо искал, но найти аналог того что я ищу, так и не смог. Кроме первого пика в 2d
По задумке мне нужно 3d поле, на котором будут анимированные 2d персонажи.

Странно что мои 2 поста на которых ты ответил удалили, хотя я не пытался развести срач, а просто задать интересующий меня вопрос.
106 739824
>>39812

>По задумке мне нужно 3d поле, на котором будут анимированные 2d персонажи.


Почему не отредерить 3д поле в 2д картинку и просто подставить раз персонажи 2д уже?
107 739830
>>39824
Можно и так. Моё решение руководствовалось работой спрайтов из дума, и мыслями как можно сделать в игре тени мячика, персонажей, и тд.
108 739831
>>39830

>руководствовалось работой спрайтов из дума


*3d фон, 2d персонажи
109 739840
>>39830
Гугли, как делать биллборд в годоте, хуле.
110 739843
>>39840
Но имеет ли это смысл, если в игре статичная камера? Мне кажется я тут обосрался.
111 739868

>>739727


Аркадный теннис без программирования я б сделал так - нарисовал пару 2d path кривых, одна для вертикального профиля полета и 1 для закрутки мяча. И затюнить для разных видов ударов. Сила удара будет влиять на масштаб кривых. Минимум кодинга понадобится для проверки столкновений и переноса точки откуда начинается кривая.
Для мультяшных игроков проще взять 3д модельки и кинуть им toon shader
112 739885
>>39868

>нарисовал пару 2d path кривых, одна для вертикального профиля полета и 1 для закрутки мяча. И затюнить для разных видов ударов. Сила удара будет влиять на масштаб кривых.


Ничего не понял. Но идея интересная.

>проще взять 3д модельки


Но не проще сделать. С 3d я не особо, а 2d спрайты осилю.
1619292323424.webm794 Кб, webm,
1920x1080, 0:12
113 739886
>>39885
Вот так сделал
114 739893
>>39886
Ооо, спасибо за наглядность. Завтра попытаюсь повторить.
image.png19 Кб, 251x172
115 739896
>>34420 (OP)
Почему не отображаются коллижн шейпы у тайлмапы? Работают при этом корректно. У всех остальных объектов отображаются.
116 739898
Блять, у меня возникла ебанутая проблема. Почему-то при столкновении collision shape героя с collision shape тайлмапы, у меня сдвигаются на пиксель-два спрайты других объектов. При чем в зависимости от какой стороны столкновение (справа, сдева, внизу, сверху - это топдаун) двигаются разные спрайты. Раньше такого не было. Я вообще не врубаюсь что происходит
117 739900
Если мне нужен поцфайндинг по клеточкам, там есть какие-то встроенные функции для этого, или проще астар с нуля написать? Я знаю, что есть Navigation2D, но это для произвольных прогулок по навмешу, как я понял.
118 739901
>>39898
Хотя не, двигаются не только спрайты, а вообще все объекты. И не зависимо с тем, с чем я сталкиваюсь. Пиздец
119 739910
>>39898
Может быть ты забыл сделать форму коллайдера уникальной и отредактировав скажем игроку отредактировал всем у кого стоит она же
120 739911
>>39910
Не, там двигаются даже те объекты, к оторых нет формы. Пробовал играться с формами самого игрока. Выяснил, что сдвиг более виден, когда форма более округлая. Пытался загуглить, но нашел лишь отдаленно похожие проблемы
16105993828733.jpg21 Кб, 578x490
121 739912
>>39910
>>39898
>>39911
Еще заметил, что если сталкивается округлая форма с округлой, то норм. В принципе, я мог бы всем сделать округлые формы, но я не могу сделать круглые формы тайлмапе
122 739915
>>39911
Ничего не понятно из твоего описания. Камера у тебя двигается что ли? Запиши видео или выложи проект.
123 739941
Вот допустим у меня есть BitmapFont который я хочу применить ко всем наследникам Control на сцене, чтобы для каждого не создавать скрипт с add_font_override. Как этого добиться?
1619344648331.png7 Кб, 258x181
124 739942
>>39941
Шрифт или тема, назначенная любому контролу, распространяется и на все дерево контролов под ним. На пике шрифт ноды control будет распространяться и на label
234231542342343.mp41,3 Мб, mp4,
1280x720, 0:18
125 739944
>>39915
Обратите внимание, как дергаются вещи. Уточню, я не просто зажимаю кнопку движения, а часто ее жму, чтобы было более видно подергивание. Если просто зажать, то это произойдет два раза - при столкновении и когда я отпущу кнопку движения
126 739945
>>39942
Не уверен что это работает когда заменяешь шрифт в рантайме, с помощью функции add_font_override(). У меня по крайней мере не получилось, если что в _ready() засовывал.
127 739948
>>39945
А, все, разобрался. Нахуй рантайм, BitmapFont-объект можно в .tres сохранить с помощью ResourceSaver и потом просто как нормальный шрифт вставить в редакторе.
1619349490668.webm772 Кб, webm,
1920x1080, 0:12
128 739953
>>39944
Я не 100% уверен, но возможно это из за того, что у тебя объекты стоят не в целых пиксельных координатах.
Вот например на этом видео стенки слева стоят по snap, т.е. 100, 200, 300, а справа стоят как попало, 599.056, 398.112, и при движении камеры левые двигаются в ногу, а правые не в ногу.
Если это оно, то надо или расставить объекты с включенным snap в редакторе, или погуглить как делается сабпиксельная камера, чет там через вьюпорты и скейлинг (2д мало занимаюсь так что не помню, но где то читал)
129 739960
>>39953
Бля, действительно помогло! Спасибо большое, анон за это специфичное знание, чаю
130 739967
^
131 739977
>>39960
>>39953
Бля не, помогло, но не до конца. Если игрок сталкивается сразу с двумя рядом стоящими формами, то объекты все равно смещаются.
Надо будет пробовать делать сабпиксельную камеру
132 739981
>>39977
А каким кодом ты персонажа двигаешь?
133 739988
>>39981
Супер простым. Это пока просто болванка, чтобы тестить.
Алсо, у меня почему-то не все объекты встают в пиксельную сетку... Начал гуглить, нашел похожие случаи, но пока не пофиксил. Проблема судя по всему распространенная ну и говно как
же у меня горит
134 740001
>>39988
Так, позицию удалось настроить с помощью smart snap, но проблема с "jittering"-ом не решена
135 740004
Лол
136 740014
Замоделил поле по туториалу, и возник ещё вопрос. Мне нужно будет кроме игры в теннис создать vn вставки, для чего я установил аддон Rakugo VN. Проблем особых не возникнет?
137 740015
>>40014
Когда его щупал последний раз, он сильно глючил и сыпал ошибками. Могу завтра глянуть что там как
138 740023
>>40015
Окей
139 740052
>>40014

> Мне нужно будет кроме игры в теннис создать vn вставки, для чего я установил аддон Rakugo VN


Там ещё в прошлом треде презентовали аддон Dialogic который весьма полноценно реализует диалоги в ВН-стиле (иконка персонажа с вариантами эмоций, текстовое поле с кнопкой скипа, отдельные кнопки вариантов при вопросе, эффекты, стили, шрифты, всё фкаропке), без всего остального ВН-функционала (типа кучи ренпаевских кнопок внизу, сохранений, загрузок, отматываний-проматываний). Если твои "VN вставки" - это по факту диалоги, то может быть лучше его задействовать?
image.png17 Кб, 575x165
140 740152
>>40052

>Dialogic


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

>Если твои "VN вставки" - это по факту диалоги, то может быть лучше его задействовать?


По сути нет. VN-сцены будут лакомкой, а теннис как мини-игра.
141 740326
Есть некроноут с Хрюшей. Версия 3.2.3 - все норм работает, новая 3.3 помирает при компиляции шейдеров на этапе запуска редактора. Кто-то еще пробовал запускать на некро железе/ОС новую версию?
142 740351
Господи, как-же я ненавижу делать UI, вся эта верстка, состояния, позиции. Боже, блять, мой.
143 740352
>>40351
А представь себя на месте пользователя и вспомнишь как это удобно)
144 740357
>>40352
Никогда не имел дело с фронтендом, но если это хоть немного похоже на программирование UI здесь, то теперь мне понятно почему фронт все ненавидят.
145 740363
>>40351
Контейнеры делают 60% работы. VboxContainer, HBoxContainer, MarginContainer, CenterContainer, GridContainer, ScrollContainer твои друзья

https://youtube.com/watch?v=YL8apqN6IJM
https://youtube.com/watch?v=lwTPlnW1qhA
146 740384
bump
# OP 147 740434
>>40326
У меня крошилась 3.0.9. Решения так и не нашёл. Как 3.1. вышла этот кошмар закончился.
# OP 148 740435
>>40357
Программирование UI здесь - это смесь Delphi и веб-вёрстки (от веба тут отступы (margin)
149 740438
>>40363
Да дело даже не в том как их раставить, а в том что потом логику к ним писать - полный пиздец.
150 740439
>>40438

> логику к ним писать - полный пиздец


В смысле? В чём конкретно пиздец? У меня проблем не вызывает. Просто вызываешь обработчики событий (сигналов) как везде.
151 740440
>>40438
Кстати, наверно у меня не возникает проблем опять же из-за опыта кодинга оконных приложений (фронтенда по современному). Сразу могу дать совет, который работал ещё в нулевых с различными IDE: Обработчик сигнала не должен содержать в себе сложного длинного кода. Обработчик сигнала должен вызывать метод из игровой логики.

Простой пример. Есть пункт "сохранить" в меню, а есть клавиша F5 на клавиатуре. У пункта меню (кнопки) обработчик сигнала "нажато", у кнопки F5 привязано действие в меню действий. Которое обрабатывается колбэком _input, в обоих случаях тебе нужно сослаться на один общий метод сохранения игры (Например, save_game в каком-нибудь Global). Не будешь же ты два раза копипастить логику сохранений?
И вот в обработчике кнопки ты пишешь

> func on_save_game_pressed(): Global.save_game()


а в кейсе F5, в инпуте, ты пишешь

> func _input(e):


> if Input.is_action_pressed("quick_save"): Global.save_game("quick.save")


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

То есть, как видишь, обработчик сигнала элемента интерфейса записан в одну строку, ты пишешь его один раз и больше туда не лезешь. Если вдруг у тебя возник соблазн добавить вторую строку - значит ты ду ит вронг. Поразмысли над архитектурой проекта ещё раз. Добавь аргумент в вызываемый метод из игровой логики.
152 740446
>>40438
Обобщай, делай свои контролы.
Например если у тебя однотипные кнопки, например хотбар абилок или инвентарь, нет нужды писать обработчик доя каждой кнопки, можно передавать номер кнопки параметром в сигнал button.connect("pressed", self, "on_pressed", [btn_name])
Многоуровневые меню и навигация по экранам кстати неплохо описываются конечным автоматом (fsm)
153 740447
>>40440
У меня не то чтобы есть проблемы его сделать. Просто его надо дико заранее планировать перед реализацией и все должно иметь очень-очень четкую структуру иначе баги полезут изо всех щелей, приходится 10 раз все перепроверять.
Ну и тут еще перфекционизм не помогает, все эти обновления интерфейса хочется максимально оптимизировать, потому что они происходят при малейшем движении, но тогда код становится менее читаемым.
За лайфхак с общими методами спасибо, хоть я и так уже это делаю.
Бамп 154 740633
В общем, я долгое время хотел создать RPG про роботов, пингвинов, чертей, обувь, шляпы и мяту, и сегодня пожалуй не начну этого делать. В этом треде буду отписываться о результатах. Сразу скажу, что я нихрена не умею, кроме как созывать анончиков собраться вместе и запилить мне игру, поэтому не буду учиться большинству необходимых вещей с нуля. В качестве языка для разработки выбрал ГДСкрипт + Сишарп. Посмотрим, как у меня выйдет собрать вас, анончиков, в команду.
155 740667
>>40633
ТЗ есть? Какой бюджет?
156 740675
>>40671 (Del)
Понятно. Старею, с копипастой общаться начал
157 740912
>>40675
Бывает. Не переживай старик!
158 740949
В гд скрипте можно юзать свичи?
159 740959
>>40953 (Del)
охренеть
160 741077
Что лучше - GDScript или C#? Из всех языков лучше всего знаю плюсы, на C# немного кодил, GDScript пробовал, когда первый раз годот палочкой тыкал.
161 741135
Что будет быстрее вектор или раст?
Официальная точка зрения # OP 162 741226
>>41077
Если знаешь си - лучше си.
Это правило работает во всех сферах айти.
163 741230
>>41077
gdscript поначалу (после решетки) непривычен, но довольно удобен, да и заточен под движок; плюс все примеры и большинство вопросов-ответов гуглится на нем. Решетку прикрутили не так давно, поэтому думать и адаптироваться придется больше. Я бы посоветовал для всякой мелочевки (нажатия кнопок, обработка ввода, триггеры на сцене) использовать gdscript, а если потребуется класс с большой и сложной логикой - взять решетку.

>>41226
С# - это не си, ало.
164 741238
Поддерживаю!
165 741272
>>41230
>>41236 (Del)
На двух языках я в принципе не хочу кодить. Нужно что-то одно выбрать.
2021-05-06 13-58-11.webm1,5 Мб, webm,
720x720, 0:31
166 741289
Эх, блин, нашел танчики, которые делал еще на версии 2.1.4. Коллизия снарядов как-то через жопу работала, почему-то при попадании в угол кирпича они его не ломали, так и не нашел тогда, почему.
167 741291
>>41289

> не нашел тогда, почему


Коллиженшейпы какие были?

> делал еще на версии 2.1.4.


На трёшке видимо пришлось бы много переделывать.
Снимок.PNG27 Кб, 780x549
168 741292
>>41291
Два квадрата, почему-то.
169 741293
>>41292
Видимо в тот момент у тебя задумка была насчёт второго квадрата.
170 741396
Ну чё, есть кто колупал SteamAPI в годоте?
У меня чёт не прикручивается лидерборд, гугл выдаёт 6 ссылок по теме, да и те копии 2,5 тредов на гитхабе.
171 741426
сначала в блендере делаются моделки,те вид.
а годот управляет модельками,так?
172 741438
>>41426
Так. Ты при импорте модели получаешь ту же структуру, как в блендере. То есть, если у тебя модель домика деревянного с отдельно замоделированными и заанимированными курьими ножками, то у тебя и в годоте будет импортирована сцена с отдельными мешами домика, ножек, крыши, окон. И анимации блендера сконвертируются в анимационный плеер годота.
>>41396
Сорян, не подскажу по данному вопросу.
173 741442
>>35946
Если поддерживает нужный opengl то да, у меня вот не завелся на древнем ноуте, хотя древний unity заводится
174 741443
>>35946
>>41442
И тем более летает GameMaker: Studio 1, но увы он уже не поддерживается да и велосипедить на нем заебало, слишком мало там всего из коробки.
175 741446
>>40351
Ад был когда я решил писать свой UI с нуля, как сделал и все заработало, выгорел нахуй.
176 741499
>>41396
Если что, просто забыл дописать в _process строчку
Steam.run_callbacks()
Тогда Steam.uploadLeaderboardScore зафурычил
177 741736
Есть где-нибудь актуальный гайд - как сделать гиганский ландшафт в несколько км? Ну то есть опенворлд
178 741937
>>41746 (Del)
А швы между мелкими как зашивать? А редактировать все это как?
изображение.png7 Кб, 1062x382
179 741988
>>41940 (Del)

>>переносишь редактированные пиксели из правого края левой карты высот в левый край правой


Будут слишком резкие перепады высот. К примеру если на левом чанке крайняя вершина на 100 высоте, а на правом так получилось на глазок что крайняя вершина на 40 высоте - то их никак нормально не состыковать... Ну можно сгладить - искажая при этом половину чанка из-за чего все тоже попортится. Пикча.
Тут даже дело не в том как состыковать - я надеялся что есть что-то нормальное чтобы вообще таких проблем не было (как в других движках) - оказалось что нет

И в блендере нельзя нормально оценить как на этом ландшафте будет стоять декор. А ведь ландшафт подстраивается под декор - тут ямка, тут площадка под дом, там насыпь, там дорога, там русло реки и т.д.

Или всю локацию вообще в блендере собирать?
Официальный ответ Службы Поддержки # OP 180 742018
>>41736

> как сделать гиганский ландшафт в несколько км?


Путём фултаймовой работы команды 20-50 профессионалов. Самый короткий гайд, но это правда. Пройди через все стадии принятия неизбежного и прими это: опенворлд в соло (да на чистом, быстро перегорающем энтузиазме) не запилишь. Ты давай смотри на вещи реально. В соло ты можешь сделать несколько камерных сцен и телепортировать персонажа игрока между ними по мере продвижения сюжета. Сюжета. Хоспаде, пишу об играх, как о кинце. Геймплей не забудь тоже. Игра должна играться. Ходить по пустому опенворлду - это не игра. А в соло у тебя будет пустой опенворлд. Прими. Это. Ах да, чанки, чанки будут у тебя быстро и технично грузиться. Пустые чанки пустого террейна.
181 742038
>>42032 (Del)
Мои слова три года назад. А с тех пор уже 6 полгодиков утекло.
182 742056
>>42032 (Del)
Про процедурные генераторы кто-то сказал (а я запомнил): "хоть карта и бесконечна, строящий ее алгоритм вполне себе конечный, а потому легко распознается человеком через небольшое время". Глянь тот же майнкрафт: если ты видел биом равнин один раз -- ты, считай, видел все его вариации; от того, что генератор выдаст тебе десять-сто-тысячу этих "различных" равнин, интереснее игра не станет.

Очевидно, помимо генератора местности еще понадобятся ассеты -- модельки, текстуры, шаблонные структуры для генератора (см. постройки в майне), готовые неписи, шаблоны скриптов/событий на локациях и прочее, прочее, прочее. А это огромные времязатраты, если делать качественно.
183 742061
>>42056
Ну. Если посмотреть на всякие фракталы, то иногда простые правила могут давать довольно сложные результаты. Тот же набор мандельброта. Если настроить процедурность для ассетов и отсеять все неинтересное нейросеточками, то можно чет и сделать имхо.
184 742078
>>42018

>Путём фултаймовой работы команды 20-50 профессионалов.


Террейн в 1км можно в одиночку сделать и многие делают.

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

>>42018

>ними по мере продвижения сюжета. Сюжета


Есть много разных жанров. Не будь ограничен. Есть игры, в которых нет никакого сюжета. Даже есть игры с минимальным геймплеем. Есть игры просто на исследование местности.
185 742079
>>42018

>Путём фултаймовой работы команды 20-50 профессионало


Вон The First Tree делал один разработчик

>>Созданием игры занимался Дэвид Вейл, будучи не имея какого либо опыта программирования и разработки видео-игр



Так и весь вопрос - как сделать такой же ландшафт как там. Ведь его там делала не команда в 50 профи. А всео лишь один человек.
186 742093
>>42061

>процедурность для ассетов


>>42062 (Del)

>Генерируй


Чтобы генерировать - нужно написать, проверить и исправить код. Процедурность ассетов - это не модельки из воздуха, а результат работы. Возможно, даже большей работы, чем создание тех же условных моделек в блендере. Да, легко можно написать генератор, который будет выдавать 10^n уникальных однообразных моделек, а толку? Ты потратишь меньше времени на создание пяти (десяти) в редакторе, а результат будет тот же.

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

>>42078

>Террейн в 1км можно в одиночку сделать и многие делают.


Террейн - да. А локацию? Непустой уровень, на котором есть чем заняться десять-пятнадцать часов?

>инструменты для террейна


Что ты имеешь в виду? Какие инструменты тебе нужны?

>Есть много разных жанров. Не будь ограничен


Я походу ограниченный человек. Я предпочитаю игры, которые предлагают игроку какие-то занятия, дают возможность интересно провести время. Да, захватывающий сюжет необязателен. Да, геймплей может быть минимален. Но игру на исследование однообразной рандомной местности без сюжета и геймплея я бы дропнул менее чем за час, потому что удовольствия никакого.
187 742096
Вдогонку: мне кажется, неправильно поставлен сам вопрос. Оригинальный "как сделать гиганский ландшафт в несколько км?" предполагает, что опу нечем развлечь игрока кроме рандома уровня.

Правильнее было бы или ставить общий вопрос "как мне разнообразить геймплей [вот такого прототипа моей игры] рандомом?", или частный "какие есть способы генерации/отрисовки под нужды [моей игры с такими-то условиями]?", и рассматривать террейн и рандом как средство достижения каких-л. целей или как возможное решение конуретных проблем при разработке.
188 742097
>>42096
*генерации/отрисовки террейна, разумеется
189 742112
>>42096

>Оригинальный


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

>>42093

>Что ты имеешь в виду? Какие инструменты тебе нужны?


Инструменты которые позволяют визуально редактировать весь ландшафт, чтобы я сразу видел результат с учетом не только ландшафта, травы, деревьев, но и со всем декором.
Вариант делать ландшафт где-то в другом месте (блендер, вурдмашина и т.д.), и резать на карты высот - фигня, потому что я не могу там учесть окружающий декор
....
Короче, я думал что в годоте есть такие же инструменты визуального редактирования ландшафта как во всех остальных движках. Но нет.
190 742152
>>42123 (Del)
Чел, мне просто нужен был редактор ландшафта. Мне насрать как оно там называется, но этого нет.

Поэтому вывод один - для моей игры годот не подошел, поэтому я уже взял другой движок, где все это есть
191 742162
>>42152
Интереса ради, не холивара для -- какой движок?
192 742217
>>42079

> The First Tree


У. А я гадал, какое из копипастных безыдейных говен вбросят на вентилятор. Вбросили это. Ясно.

> как сделать такой же ландшафт как там


В первом попавшемся генераторе ландшафтов из гугла.

Покормил.
193 742220
Это будет в 3x сложнее, чем я думал. Уже возникли трудности с созданием персонажа, и его управлением. Но нет ухо без добра! Сделать эффект 2d спрайта смотрящего онли в камеру получилось за пару секунд. Если кому нужно будет https://www.youtube.com/watch?v=N0Laa7XLeS4&ab_channel=Garbaj
image.png55 Кб, 539x579
194 742268
>>42220
Он научился ходить, и не перелезать за сетку. Держу в курсе.

Подскажите, как переназначить передвижение на WASD?
195 742274
>>42162

>Интереса ради, не холивара для -- какой движок?


чтобы не агридь мода - такие инструменты есть минимум в ue/unity/unigine. Странно что в годоте их нет

На самом деле в самом редакторе годота вообще нет никакого редактора ландшафта и даже такого понятия - я использовал модуль Height Terrain от стороннего разработчика, но:
- автор им больше не занимается (последние апдейты в январе) и он сам говорил.
- модуль недоделан, нет например вот этой работы с чанками - то есть например возможности рисовать на стыке двух чанков. В других движках рисовать можно сразу на всех чанках. Тут же предлагается каждый чанк рисовать отдельно, а потом руками пытаться зарисовать все дыры на стыке

>>42217

>В первом попавшемся генераторе ландшафтов из гугла.


Только в годоте нет ничего чтобы этот ландшафт показать. Надо самому велосипедить.
196 742276
>>42275 (Del)

>карту 16 на 16


хм, не знал про мапскейл - сейчас еще раз проверю
197 742304
>>42271 (Del)
Благодарю, теперь управлять персонажем куда приятнее.

Хотел с утра добавить ему рывок, для разнообразия передвижения, нашёл гайд, но пока для меня это очень трудная задача. Ничего не понял что пацан показал в видио, и по этому сегодня постараюсь сделать черновое меню. Если хватит сил, разберусь как добавить в начало vn сцену, сменяясь после на сам геймплей.
198 742339
>>42275 (Del)
Ох ебать! Я кончил.
199 742457
будет ли в 4 версии революция?
200 742461
>>42457
Через год после выхода.
201 742467
>>42461
долго...
202 742477
Реально ли прикрутить бекенд(джава напр)?
203 742479
>>42478 (Del)
spring+websoket для игры на godote
204 742480
>>42479
те есть ли там место прописать код для сокетов и прицепить объекты
205 742482
>>37403 (Del)
Нужны сокеты(когда 2 приложения слушают друг друга,а не вебсокет(который завязан на жс))
это для уточнения
206 742529
>>42268
Небольшой совет по коду. Помимо is_action_pressed есть get_action_strength, возвращающая значение от 0 до 1, где 0 не нажато, 1 нажато. Таким образом, ты можешь всего двумя строчками получить свой инпут:

> dir.x = ( get_action_strength(right) - get_action_strength(left) ) 3


> dir.z = ( get_action_strength(down) - get_action_strength(up) ) 3


Обрати внимание, минус где надо появится автоматически.
207 742531
>>42529

> * 3


Абу, заебал, удоли вакабамарк! Ублять! Там значок умножения. Или введи тег кода. Хватит уже мучать анонов!
image.png2,1 Мб, 1942x1218
208 742543
>>42529
Благодарю за совет, но из меня так себе так что абсолютно весь код для меня как дремучий лес. Двач ещё знаки умножения сожрал, из за чего я даже понять не могу как эти две строчки моими заменить. Но меня такое управление устраивает, хотя бы как-то дает представление что за что отвечает. Почти целый день делал меню, так и не смог осилить эти гребенные контейнеры. На бумаге нарисовать задумку легко, а вот понять логику программы уже трудно. Ну ладно, оставлю это на завтра, а пока часик помучаюсь с рывком для персонажа.
2021-05-12 00-50-54.mp410 Мб, mp4,
1280x720, 0:22
209 742549
210 742550
>>42549
Круто!
211 742551
>>42550
Спасибо!
212 742552
>>42549
Весь свет запеченый?
213 742553
>>42549
SSAO не хватать, очень сильно бросается в глаза отсутствие затенения в углах
214 742558
>>42543

> так и не смог осилить эти гребенные контейнеры


Да чего там осиливать-то?
<- Как-то так как на пикче.

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


Вот так:

> dir.x = ( get_action_strength(right) - get_action_strength(left) ) ж 3


> dir.z = ( get_action_strength(down) - get_action_strength(up) ) ж 3

1620775616579.png1,1 Мб, 1942x1218
215 742559
>>42558

> <- Как-то так как на пикче.


Блять!
216 742562
>>42559
Вижу порнуху.
217 742563
image.png1,3 Мб, 1270x885
218 742592
>>42553
Версия с САСАО
>>42552
Не знаю запекает ли его GIProbe. Игрался с BakeLightmap, но он всегда дает неадекватный результат.
219 742594
>>42593 (Del)
А вот в 3.3 как раз не игрался, кстати! Надо поковыряться с ним
траблы ао.png1,5 Мб, 1270x885
220 742597
>>42592
Вот в этих отмеченных маркером местах должно быть затемнение.
221 742598
>>42595 (Del)

> Нужно ли делать пул для audio 3d нод?


Не нужно, звук пуллируется аудиосервером на уровне аудиошин (bus). Просто размещай аудиоплеер чайлдом в ассете и управляй им из инстансов. Например, сам ассет врага пусть решает, воспроизводить ему звук или нет. В тридэ там ЕМНИП даже настройка дальности искаропки есть.

> Может кто проверял и знает


Я проверял. Основные проблемы там, когда ты на фоне играющего ogg запускаешь много сэмплов wav начинается кряхтение в колонках. Я пытался забороть, но хуй забил на игору вообще, поэтому решения не знаю. И кстати, это кряхтение ещё на версии 3.0.6 было, так что может и оптимизировали уже.
222 742599
lol
223 742603
>>42597

ебать дебил
224 742604
>>42603
Эмм... Щас короче ты аргументированно возражаешь, почему это я дебил, иначе я пишу репорт господину модератору.
225 742605
>>42604

Там свет потому-что
1620836762444.png70 Кб, 562x213
226 742606
>>42605
Просто гугли матчасть.
И да, извинись.
227 742609
>>42606

> пачиму прямо под источником света не тимно а?а?

1620837450438.png189 Кб, 600x400
228 742611
>>42608 (Del)

> Ирл никакого АО не существует


Да ты штоо???
>>42609
Ты автор? Покажи с другого ракурса, что это источник света, а не блик. А если не автор, так не пизди. Я там вижу только блик с засветкой (мы же о поверхности над заложенной дверью говорим, да?) а у отраженного света тоже полутень будет. Везде будет.
229 742613
>>42612 (Del)
Глаза разуй, там есть тени на первой и затенение на второй, в довесок к теням. Вот это затенение в узких местах и углах - и есть АО. Отражает распространение света в реальном мире.
230 742616
у кого есть уже рабочий проэкт?
231 742620
>>42619 (Del)
что можно поиграть в игру
232 742637
Игроделы, поясните, почему вы выбрали годот для своих игр? Интересует лично ваше субъективное мнение, почему он, а не любой другой. Ну только не говорите мне про бесплатность. Они сейчас все в том или ином виде бесплатные.
233 742643
>>42637
Ты открой анрил, потом юнити, а в конце годот и сам всё поймёшь.
234 742644
>>42637
Я пробовал юнити и он мне не нра, а годот пробовал и он мне нра.
235 742647
>>42644
чем именно?
236 742650
>>42643
Открыл только в обратном порядке ну и из анриала и не захотелось выходить впринцапе, хотя и юнити неплох, а годот мне повесил компьютер намертво когда запустил тест игры хотя комп не зависал уже лет 5.
237 742651
>>42647
Юнити какой-то всратый, а годот ок норм.
238 742652
>>42643
анрил мне вообще не понравился
у юнети чувствуется, что они тупо больше, как компания и продукт стабильный
годот я помню запускал вроде вторую версию и у меня были проблемы с установкой, импортом примеров и т.д. работала только стим версия и то через раз
239 742655
>>42652

> работала только стим версия и то через раз


Сейчас уже 3.3 версия вышла, очень стабильная и лично мне нравится.
240 742659
годот больше для 3д?
241 742660
>>42658 (Del)

>опенсорс


Зачем конкретно тебе это? Без негатива спрашиваю. Ты правишь сорсы?
image.png79 Кб, 825x853
242 742661
>>42558
>>42559

>Да чего там осиливать-то?


Сама логика мне не очень понятна. В школе кое-как меня научили кодить на html. На ремпае было легко брать кусочки кода, и тупо вставлять в свой проект. А где нужно побольше знаний тут же ступор, и не понимания что от меня хотят. За скрин ниже мне уже пиздец стыдно.

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

>>42562
Да.
243 742662
>>42661

>и пойду дальше


следующая остановка - гей-шлюха на бонге, задумайся, сына
244 742664
>>42660
Нет, и что? Может когда-то пригодится, может нет. Факт что возможность есть
245 742666
>>42637
Нативный OpenGL.
246 742668
>>42665 (Del)

>Это странно.


Нет, странно не пользоваться чем-то только потому что там нет функций, которыми ты не пользуешься и не будешь никогда пользоваться. Вот это действительно странно.
247 742671
>>42669 (Del)
гк в основном
248 742675
>>42663 (Del)
Благодарю, теперь работает!
>>42662
Ахах, нет. Я отрисую сцены и соберу онли вн через ремпай.
249 742676
>>42672 (Del)

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


годо не тянет, хочешь сказать?
250 742678
>>42677 (Del)
чел, в гк если и есть "тысячи объектов", то они супер-простые и их явно не тысячи, а максимум сотни и они все супер-простые и если годотя не тянет сотню простых объектов с физоном, то ШТОШ МДАУШ
251 742974
Для андроида возможна разработка?
252 743104
>>42637
У юнити очень сложный неинтуитивный интерфейс. Сраная студия вешает мне комп. Запуск отладки очень долгий. Очень много весит.
изображение.png12 Кб, 1278x126
253 743106
>>43104

>много весит


как и годот)
254 743158
>>43106
А чем годот справа отличается, почему он столько весит?
255 743161
>>43158
Скомпилен на дебаге?
256 743175
>>43161
да, наверное так. точнее сказать сейчас не могу, ибо винда неделю назад переустановилась и MSVC в данный момент отсутствует
257 743237
>>43003 (Del)
с танцами и бубном?
258 743253
>>34420 (OP)
Пойду сюда что ль побомблю. Ёбаный ты нахуй, какого ж хуя до сих пор нельзя НОРМАЛЬНО сделать интеграцию с гуглоплеем. Ёбаный же стыд PGSGP уже давно мёртв, разработчикам плагина на него похуй и на 3.3 обновы не видать (кроме костыля, который, сука, без пердолинга, один хуй не работает). Надеюсь, блять, в ёбаной четвёртой версии вся хуйня будет работать нормально
259 743254
>>42637
Я кроме петухона нихуя не знаю, потому и выбрал годо вместо изучения шарпов (ведь я тупой)
260 743284
>>43161
Ты хочешь сказать, что юнити компилят в дебаг моде?
261 743285
>>43253
добро пожаловать в опен сорс
262 743303
>>43284
Я предполагаю, что годо на пикрил справа скомпилен на дебаге, а слева - на релизе, откуда и разница в объеме файлов
263 743305
>>43303
слева официальный бинарник, да. а справа конпеляция, только уже хз, как оно было собрано) но скорее всего в дебаге, да
264 743351
>>43285
Да хули там, понятное дело, что опенсорс, я вот только и могу по этой причине беспомощно бугуртеть
265 743352
>>43285
Ну, я тем не менее пропозал запилил. У кого тоже болит - можете пойти залайкать это говно
щитхаб.ком/godotengine/godot-proposals/issues/2724
266 743353
Пытаюсь заспавнить случайное количество кнопок-сцен, чтобы они были всегда по середине, но почему-то получается, как на первой картинке. Если в "Удаленный" вручную выставить для HboxContainer margin_right в ноль, тогда все как надо, как на второй картинке. В коде почему-то эти команды не воспринимаются. Для HboxContainer стоит параметр grow_direction - horizontal - Both.

>func _ready():


>>var hbox = $Control/CenterContainer/HBoxContainer


>>var r = 3


>>for _i in range(r):


>>>var f = fighter.instance()


>>>f.set_custom_minimum_size(Vector2(77, 87))


>>>hbox.add_child(f)



>>hbox.set_margin(MARGIN_BOTTOM, 0)


>>hbox.set_margin(MARGIN_LEFT, 0)


>>hbox.set_margin(MARGIN_RIGHT, 0)


>>hbox.set_margin(MARGIN_TOP, 0)

267 743355
>>43353
хотя в print(hbox.margin_right) пишет, что устанавливается
268 743356
>>43355
и если задавать в _процессе, то работает хмммммм
269 743357
>>43356
в реади и через

>hbox.set_deferred("margin_right", 0)


не получается хммммммммммммм
Официальный ответ Галактической Администрации # OP 270 743489
>>42637
Он удобный.
271 743490
>>43357
Нужен принудительный апдейт канвы.
272 743493
>>43490
Это как? Разве я не принудительно?
1621195670915.png13 Кб, 351x295
273 743496
>>43493
Нэт.
274 743497
>>43494 (Del)

> его через FindNode не находят


Безумие.
Если у тебя автолоад синглтон, тебе не нужно никакое финдноде. У тебя твоё имя сразу регистрируется в редакторе глобально. И ты просто пишешь

> MightyAutoLoad.MightyMethod()

275 743502
>>43496
а вот это?

>hbox.set_margin(MARGIN_RIGHT, 0)

276 743605
Есть ли способ сымитировать нажатие кнопки на паузе? В "Удаленный" ставлю кнопке Pressed, но сигнал не эмитится. В обычном режиме эмитится.
277 743698
>>43605
Снимай с паузы кнопку. На то пауза и нужна, чтоб даже сигналы не излучались.
>>43502
hbox.update()
278 743784
>>43698

>Снимай с паузы кнопку


Не знаю, поменял в pause_mod на process, stop, все равно кнопка не нажимается не знаю.

>hbox.update()


Не, че-то не помогает. Ну буду через процесс что уж.
279 743906
Антуан-платформеропогромист, ты жив?
280 744074
Как в 3д можно заставить перса поворачиваться в сторону курсора и двигаться в этом направлении?
888.jpg156 Кб, 1399x916
281 744115
>>44081 (Del)
Спасибо. Я нашёл что искал.
Прошу сразу простить мою наглость, но вы сможете перевести это на С#?
Мне не понятно откуда он взял строка 35/36 project_ray_origin()....
и строка 10/11 gett_world().direct_space_satate/space_state.intersect_ray
282 744134
А есть ли способ из CollisionPolygon2D создать область, например, белого цвета?
283 744137
Не могу найти ни одного туториала по гранд стратегиям
284 744175
Подскажите, какие есть наработки по balancing active ragdoll? Если такого нет, то с чего начать?
Хочу сделать симулятор с реалистичной ходьбой.
285 744177
>>44134

> extends CollisionPolygon2D


> func _draw():


> > draw_circle(bla, bla, bla)

286 744186
>>44184 (Del)
Оооооооооааа
палец вверх
287 744220
288 744374
>>44341 (Del)
Нее... Я ещё минимум до июля буду занят. Ваще не до джемов.
мимо автор игор, постов, охуительных историй, беспонтовых начинаний
image.png46 Кб, 792x599
289 744419
А может кто объяснить, как разделить сигнал/почему так происходит?
Есть сигнал для KinematicBody, срабатывающий по mouse_entered(). Есть 11 мешей (скопированных из одного, в котором как раз дочерний KinematicBody и CollisionShape). По нажатию кнопки я получаю стену срабатываний (предположительно, по количеству мешей), хотя жму один раз всего над мешем с установленным аутлайном, если это пикрил _input(event). При этом func _on_KinematicBody_mouse_entered(): показывается, что срабатывает всего один раз.
290 744420
>>44341 (Del)
Ага, сейчас подготовимся, а они через сутки выкатят тему "LGBTQ+ representation BLM ACAB".
291 744422
>>44421 (Del)
Или игра, где ты Абрам Ганнибал и пиздишь жену.
292 744424
>>44419
ээээ_прессед по-моему не один раз срабатывает, а пока не отпустишь. is_just_pressed один раз срабатывает.
293 744425
>>44419
а _mouse_entered() срабатывает, когда в область курсор наводишь, без нажатия кнопки
294 744441
>>44419

> почему так происходит?


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

> как разделить сигнал


Есть два стула:
1. Сделать canvas_item "непрозрачным", там есть свойство в инспекторе ищи, accept_event().
2. Обрабатывать события в _unhandled_input и первый кто обработал устанавливает флаг SceneTree.set_input_as_handled(), тобой, в коде, вручную, при соблюдении твоих условий, и если он посылает, то _unhandled_input больше не вызывается для этого события нигде
295 744449
>>44441
>>44435 (Del)
>>44424
>>44425
Спасибо. Подумаю над этим.
image.png2 Кб, 268x180
296 744492
Вопрос из разряда архитектурно-частных.
Дошёл до генерации игрового поля на старте уровня.
https://docs.godotengine.org/en/stable/getting_started/step_by_step/instancing.html
Если я инстанцирую повторяющиеся меши, это же снизит нагрузку и увеличит скорость работы сцены?
Дополнительный вопрос. Скрипты же и сигналы тоже в инстанцирование попадают нормально?
297 744497
>>44492
Дополнительный вопрос. Видел неоднократно, когда на даже небольшую ноду создают отдельную сцену. В чём смысл?
298 744498
>>44492

>Дополнительный вопрос


Дык ты попробуй. Сингалы надо коннектить в скрипте. Скрпиты инстанцируются нормально.
>>44497
Чтоб реюзабельно было.
299 744510
>>44498
Другой вопрос. А генерация. Это что, для тайловой карты 10 на 10 надо цикл в сотню, что ли, загонять? Или у движка есть какие-то инструменты для такого?
300 744520
>>44510
Не понял вопроса. Какие инструменты тебе конкретно нужны?
301 744526
>>44520
Ну я имею в виду, что для заполнения гексагонального поля 10 на 10 клеток, мне надо будет сделать цикл х от 1 до 10 с вложенным в него циклом у от 1 до 10. Либо считать, исходя из квадрата числа (карта квадратная-то). Двойные-тройные и т.д. циклы это же плохо и медленно в общем случае? Есть ли инструмент оптимизации этого процесса? Иначе придётся ждать инстанцирование 6400 раз для того же поля 80 на 80 (у меня это занимает уже секунд 5 против моментального запуска карты 20 на 20), что уже не выглядит так просто как 10 на 10.
302 744527
>>44526
Начинай учить многопоточность. В один поток ты такое не затащишь. Вообще, сам подумай, кто в 2к21 будет делать игру без многопоточности?
303 744528
>>44526
Хотел тебе гридмап посоветовать (увидел, что ты гексы в тридэ делаешь), но оказалось, что у гридмапа гексагональной сетки нет, в отличие от двадэшного тайлмапа. Даже не знаю, что теперь и предложить. Получается, что ты правильно велосипедишь велосипед.
1621791332245.png184 Кб, 1646x922
304 744529
>>44528
>>44526
Вот например вариант. Если у тебя не предполагается карта высот, но хочется красиво наклонять камеру вокруг мапы, то можно сделать отрисованную через вьюпорттекстуру на тридэспрайте двадэшную тайлмапу.

Но скорость её заполнения всё равно смотреть надо, и я уверен, в один поток всё равно будет медленно, поэтому >>44527
305 744532
>>44527
Ну в общем и целом для пошаговой игры я в этом вижу, скорее,
плюс. Не надо усложнять логикой управления многопоточности.
Просто вот такие телодвижения, когда у меня простые модель шестиугольника, сваянные на коленке в блендере, а оно на пекарне конца 20 г.в. грузит по 5 секунд, вызывают подозрения, что когда это будет заполненная карта, то это уже будет ощутимо. Хотя, может, занимаюсь преждевременной оптимизацией. Хз. Пока пилю как есть, хотя бы до уровня mvp. А то так вообще никогда ничего не закончить.
>>44528

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


Я в гридмап почти неделю проебался, чтобы понят, что он даже с велосипедами не подходит. Точнее можно, но велосипед становится ещё сложнее.
306 744533
>>44529

>можно сделать отрисованную через вьюпорттекстуру на тридэспрайте двадэшную тайлмапу.


Я этот же совет видел на форуме годота раза два.
Но что-то мне показалось сложнее, чем в чистом 3д, когда дошёл до взаимодействия с тайлами. Уж и не помню, что в итоге мне не понравилось. С получением координат, что ли, была беда какая-то.
В итоге, https://www.redblobgames.com/grids/hexagons/ + 3д взял за основу.
307 744537
>>44532
>>44533
Тогда вот тебе ответ на твой вопрос. Если тебе нужно заполнить одним циклом некое двумерное поле, определи для поля фиксированную ширину (количество столбцов, C). И тогда:
X = i mod C (остаток от деления)
Y = i div C (деление нацело)
Лол, посмотрел сейчас твой скрин с кодом, а у тебя так и делается. Только каким-то переусложнённым черезжопным образом. Тебе нужно вдовесок к вышеуказанным вычислениям выбрать сдвиг наполовину для каждой, скажем, нечётной строки. И вуаля, готово. Но это по отрисовке. Для заполнения тебе сдвиги уже не нужны. У тебя есть одномерный массив со всеми тайлами и ты получаешь координаты каждого тайла через эти нехитрые вычисления икса и игрека.

Могу геометрический смысл наглядно нарисовать в пейнте, если не уловил.
308 744538
309 744540
>>44536 (Del)
Блин, увидел. Спасибо. Это да, большой факап, перекочевавший из первого кода без цикла.
310 744541
>>44536 (Del)
А слона-то я и не заметил...
>>44537-кун
311 744546
>>44537

> Только каким-то переусложнённым черезжопным образом.


Ровно таким же, если сократить те же i в выражении. Это колдовство осталось из криво созданных изначально моделей и подгонки на глаз, отчего вариант i mod mapSize выдавал не те координаты, что я ожидал.

Короче, пробежаться надо по коду завтра незамыленным глазом в поисках глупостей.
1621794088783.jpg16 Кб, 400x388
312 744547
>>44546
Утро вечера мудренее!
313 744691
>>44177
>>44179 (Del)
Спасибо пацаны
rUSc7i.gif1 Мб, 2400x1350
314 744694
Вот и тему объявили. Змейку им запузырить, что ли?
315 744695
>>44694
писюн))
316 744697
>>44696 (Del)
У меня была охуенная идея игры - менеджер дачи, где нужно играть за бабку и заставлять всю семью как можно больше вкалывать в огороде за лето и как можно дольше не давать им превратить дачу в место отдыха.
317 744699
>>44697
Спасибо, спиздил
318 744701
>>44699
Раз спиздил, так воплощай.
319 744703
>>44697
а рост где
320 744705
>>44674 (Del)
Не хуже Геншина.
321 744708
>>44703
Рост помидоров и огурцов.
322 744709
>>44697
а еще возможность вырастить овощи до чересчур больших размеров и количества. А еще красить домик в неприлично-яркие цвета и клеить много слоев обоев.
323 744710
>>44709
Типа как Крыжовник Чехова вы ж читали все
324 744727
>>44710
Надо перечитать. Совсем забыл уже. Только Вишнёвый сад и Бабы всё ещё поммню.
325 744730
Вот построил я CollisisonPolygon2D, хочу в его середину поместить надпись. Как найти середину? Я нашел как найти центр масс, но точки у меня не однородно расположены, надпись съезжает далеко от центра.
326 744735
>>44731 (Del)
Йоооооооо
327 744898
>>44697
Кинь полную пасту.
328 745023
Вот я хочу, перемещать камеру по экрану, но GUI оставался на месте. Поместил интерфейс в узел CanvasLayer, который специально для этого, но теперь я не могу кликать сквозь этот CanvasLayer. А как?
329 745024
>>45023

> но GUI оставался на месте


но хочу, чтобы GUI оставался на месте
330 745136
А можно ли как-то при инстанцировании задавать значение своего кастомного аргумента, чтобы потом в скрипте этой инстанцированной ноды можно было использовать это значение? Пробовал с export var и с созданием функции внутри скрипта инстанцирумой ноды или меша. Не получилось. Говорит, что нет такого метода в мешинстанс, например.
331 745149
>>45145 (Del)
>>45136
А вот объясните, когда надо взывать методы мешинстанса, а когда ноды? и что лучше использовать в общем случае? ноды?
332 745150
>>45136

> А можно ли как-то при инстанцировании задавать значение своего кастомного аргумента


В гдскрипте на данный момент нет приватных переменных, то есть, создавая инстанс, ты можешь получить доступ к любой его переменной. Итак. У нас есть bullet.tscn, в которой есть переменная speed = 0.

> var bullets = load("bullet.tscn")


> var current_bullet = bullets.instance()


Инстанс создался и у него выполнилась функция _init()

> current_bullet.speed = 1500


Нужная переменная в инстансе поменяла значение.

> world.add_child(current_bullet)


Вот теперь у инстанса выполнились _enter_tree, _ready и начали раз в кадр вызываться _process/.../
333 745151
>>45150
Ага, так и делал. И как я увидел, я делал для мешинстанса. И так, похоже, делать не надо.
334 745153
>>45151

> И так, похоже, делать не надо.


Мешинстанс причём тут?
Код показывай, чо ты там нахуевертил? Так надо делать и так делали 30 лет до годота и так будут делать 330 лет после годота. Это классика ООП.
335 745171
>>45165 (Del)
Ну допустим, есть гипотетическая структура Node - MeshInstance - MeshInstance2.
Причём первый - родительский для второго, а второй показывается при том же клике мышью на первый. Вод здесь всю эту ситуацию логично обрабатывать методами, вызываемыми у родительского мешинстанса, или у ноды?
изображение.png57 Кб, 892x1253
336 745186
>>45150

>нет приватных переменных


обмазывал ли кто-нибудь годот подобными модулями?
337 745187
Пацаны, я не понимаю. Вот у меня есть сигнлтон, в нем раз в секунду меняется флаг

>extends Node2D


>var flag = false


>func _process(delta):


>>...


>>flag = !flag


В другом скрипте я пытаюсь вызвать сеттер, когда меняется флаг. В логе он меняется.

>extends Control


>var a = global.flag setget setter


>func setter():


>>print("Yay")


Почему сеттер не срабатывает? Он же меняется в извне и в другом классе.
338 745188
>>45187

>extends Node2D


extends Node на самом деле, ну да ладно
339 745190
u
340 745193
>>45191 (Del)

>var variable = value setget setterfunc, getterfunc


Нет
341 745194
>>45193
А, то есть да, стоит у меня там валью
342 745247
Как кошерно работать с глобальными переменными, где хранятся всякие уникальные состояния?
Из мыслей - отдельная нода, где все переменные выгнаны типа
export(bool) bar unitSelected
Или можно как-то красивей?
343 745248
var unitSelected
Быстрофикс.
344 745254
>>45194
Ну так

> func setter(value):


Же.
345 745255
>>45253 (Del)
Эээээээх.
А как можно реагировать на изменение переменной в синглтоне?
346 745256
>>45253 (Del)

> вряд ли можно


Можно.
347 745257
>>45255
только через _процесс?
348 745258
>>45254
Не срабатывает.
349 745259
>>45247

> как-то красивей?


В стиле годоскрипта.
GlobalData.set_my_parameter_as(new_value)
где
set_my_parameter_as - это функция, опционально чей-то сеттер.
350 745260
>>45258
Скрины отладчика показывай.
351 745261
>>45255

> А как можно реагировать на изменение переменной в синглтоне?


Сигналы. Сигналы родимые. Они же события в ентерпрайз-кодинге. Изучи их. Пойми их. И пользуйся их силой.
В синглтоне:

> signal my_new_state(new_state)


...

> emit_signal("my_new_state", moya_peremennaya)


В левой ноде:

> Singleton.connect("my_new_state", self, "singleton_state_callback")


> func singleton_state_callback(new_state):


> > print("nakanetcta ya vizhu, chto v singletone peremennaya stala", new_state)

1622201952254.jpg139 Кб, 800x800
352 745263
>>45262 (Del)
Брооо!
353 745265
>>45260
>>45256
А в отладчике нет ничего
354 745266
>>45262 (Del)
>>45261
Хорошо, но сетгет почему-то не работает, согласны?
355 745267
>>45262 (Del)

>Кошерно вообще не иметь глобальных переменных.


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

>global.connect


>Singleton.connect


Вот до этого я бы никогда не додумался без вас пацаны
357 745332
>>34420 (OP)
Я ебанат и скачал движок в стиме. Теперь он обновляется сам-по-себе и без обновлений не хочет запускаться. Есть проверенный способ отвязать его от стима?
358 745336
Вопрос по использованию поиска пути https://docs.godotengine.org/en/stable/classes/class_astar2d.html
Чтобы получить весь путь от точки 1,1 до точки 5,5 через get_id_path, я должен соединить точки черезх connect_points, причём все 25 точек со всеми 24, кроме той, что соединяю?
>>45332
А чем не вариант забрать прокт, снести стимовскую версию, скачать на https://godotengine.org/download/windows и использовать его для своего проекта?
359 745344
>>45340 (Del)
Да, я уже к этому пришёл, только что.
Потому что, в противном случае, получается телепортация из 42 в 48 для примера пикрил.
360 745400
>>45336

>снести


А, логично, я додик, спасибо
361 745401
>>43253-кун репортинг ин

Короче, оставил им фича-реквест, позже накатал тикет в PGSGP и решил забить хуй на тот функционал что хотел. Выпустил так :с
https://lowbudgethomebrew.itch.io/go-froggit-godot

Первый опыт, разъебите меня
362 745464
>>45401
У тебя в игре нет полоски, показывающей насколько сильно будет прыгать (а в "Как играть" полоска есть). И да, шрифт размазанный какой-то.
363 745579
>>42637
1) Тяга к опенсоурсу.
2) Году в 12 игрался с юнити. но юнити начал обрастать и тяжелеть, что пиздец. Особенно стало, когда понадобилась студия - до того хорошо жил во встроенном иде с моно.
3) Есть приличное 3д
40 Не такой брошенный во времени, как огре3д и урхо3д.
364 745712
>>45687 (Del)
Да, типичный автоматический ландшафтный материал. На ютубах полно примеров для UE.
365 745836
>>45412 (Del)
Он всё-равно работает через очко
366 745837
>>45413 (Del)
Промежуточный допрыг? Я думаю, речь идёт про бонус неуязвимости, который даётся на каждом новом старте. Надо бы описать их, да.
>>45464
>>45472 (Del)

Спасибо за фидбек, анонасы! Пофикшу в скором времени
367 745912
Блять, пол часа сидел искал баг и оказалось что match по какой-то причине не мог сравнить нормально два int-а. Переписал на if-elif и все магически заработало. Какого хуя Хуан?
368 745940
>>45915 (Del)
Извиняй, но я уже все пофиксил и ломать обратно не хочется.
369 745964
>>45912
А там точно два инта? Я так объёбывался.
370 745965
>>45943 (Del)
if settings[option] == 0:
pass
elif settings[option] == 1:
pass
elif settings[option] == 2:
pass

Да вот такая обычная конструкция, не знаю на что тут смотреть. В settings[option] валялся интегер от 0 до 2, что я перепроверил консолькой еще.
Но по какой-то причине тригерились не 0, 1, 2 ветки, а местный дефолт, то есть _: , причем это происходило не всегда. Не знаю уж баг это или нет, но после переписи - все стало нормально.

Вот на что стоит действительно написать issue, так это на AudioStreamPlayer2D. Мой .ogg стрим (не знаю проблема ли это только .ogg или .wav тоже) зацикливается, даже если в самом годоте галочку убрать с Loop у стрима. Приходится через код отрубать и это 100% баг, причем он и в прошлом релизе был.
371 745966
>>45964
Если годот по какой-то причине не решил их во флоат где-то сконвертить и потом округлить до целого числа при выводе в консольку - да. Но тогда бы и if нормально не работал, я так думаю.
eyjej.jpg87 Кб, 757x748
372 745973
>>44115
Парни ну помогите, Я тот который переделывал гд-скрипт разворота 3д объекта на C#
Я почти допёр, как сделать управление, топдайн шутера в 3д, единственно мне не хватает малости, чтобы поворот модели следовала за курсором мыши, а так модель крутится волчком влево и вправо при движении мыши по Х и по У
373 745980
>>45965
А, блять. Не только у стрима есть параметр loop оказывается. У самого файла в меню импорта тоже есть параметр loop и он зачем-то по умолчанию включен, интересное открытие.
374 745986
>>45860 (Del)
Я вот прям щас занимаюсь описанием бонусов, будут в апдейте :)
375 746328
>>45412 (Del)
Только в окне выбора проекта тикает, к сожалению
376 746329
>>45401
Ты охуел?
377 746343
Глобал шлет сигнал раз в секунду. Хочу, чтобы узел брал значение, сравнивал с предыдущем и показывал изменение, то есть их разность, и рисовать стрелочку. Узел у меня создается каждый раз новый и как только он создается, value у меня всегда равно нулю, почему-то. А в следующие секунды все показывается нормально. Значение new_value мне присылает родительский узел, он тоже это делает раз в секунду по сигналу от глобала.

>var new_value : int


>var value : int = new_value



>func _ready():


>>value = new_value


>>hide_arrow()


>>global.connect("flag_changed", self, "every_second")



>func every_second():


>>if value > new_value:


>>>arrow_down()


>>>num.set_text(str(abs(new_value - value)))


>>if value < new_value:


>>>arrow_up()


>>>print(new_value, " ", value)


>>>num.set_text(str(abs(new_value - value)))


>>if value == new_value:


>>>hide_arrow()


>>value = new_value

378 746344
>>46343
А еще я вот так пробовал, не помогло

>func _ready():


>>...


>>global.connect("flag_changed", self, "ass")



>func ass():


>>call_deferred("every_second")



>func every_second():


>>...

379 746349
>>46344
Ладно, я в реади проверил, там тоже нули
380 746350
>>46349
Ладно, я разобрался, ребята
# OP 381 746403
>>46344
>>46343
Пастебин поддерживает разметку ГДскрипта. Это так, к слову.
382 746415
Есть у меня мыслишка. Неделю уже развиваю или около того. Сделать опенсорсный репозиторий с мини-играми в виде готовых сцен годота. Все мини-игры должны обладать унифицированными интерфейсами для последующего встраивания в более крупные проекты.
Что я хочу собрать?
Змейки, тривряды, тетрисы, пятнашки, пакманы, взломы замков, механических, электронных, свои авторские пазлы, и многое-многое другое. Для заполнения ими игровых миров анона. Берёшь сцену из репа, встраиваешь в свою игору, юзая стандартизированный АПИ.
Как вам идея? Кто хотел бы поучаствовать?
АПИ должен включать в себя функции отображения мини-игры, скрытия, опционального запоминания состояния, позволяющие организовать включение и выключение виртуальных устройств с мини-играми в "макро"-игре, при скрытии осуществляется возврат значения (через сигнал), позволяющий организовать собственно взлом доступа куда-либо через мини-игру, или получения чего-либо, или продвижения по квесту.
383 746418
>>46415
Поздравляю, ты украл мою идею, где персонаж должен ходит по комнатам и решать рандомные случайно выпадающие миниигры. Сука, а я даже анимацию персонажу не могу настроить.
384 746475
>>46448 (Del)

> пиши АПИ


Предлагаю продумать АПИ вместе, чтобы всем было удобно и чтобы обойти подводные камни, которые не увидишь в одиночку.
>>46418
Сорян. Зато ты теперь можешь не писать кучу миниигор, а подсоединить нашу (пока ещё не существующую) базу миниигор прамо в свой проект и сконцентрировать усилия на стиле.
385 746519
Я импортировал JSON файл в синглтон, присвоил его словарю dict1. В другом скрипте создал еще словарь dict2 = singlton.dict1. Беру из dict2 данные, обновляю их и сохраняю в dict2 новые данные. Но оказывается обновляются и данные в синглтоне. Так и должно быть? И dict2 = Dictionary.new() не работает, функции нет в Dictionary. Короче, чтобы хранить начальные неизменные данные, надо в синглтоне еще один dict3 создать и распаковывать в него? Или можно во втором скрипте все-таки сделать независимый словарь?
386 746523
>>46519
duplicate()
387 746617
>>46523
duplicate(true), без deep=true все равно будут референсы, а не копии
388 746651
Как лучше закладывать поведение ИИ в игру, и где его обрабатывать для пошаговой игры? Есть идея гонять принятие решений в многопотоке, пока игрок ходит свой ход, чтобы потом ИИ имел заданный набор шаблонов для поведения к своему ходу. Из идей только в синглтоне крутить в цикле принятие решений.
389 746707
>>46695 (Del)
Ну я тоже ориентируюсь на utility ai, но вот если конечная цель не так легко достижима и состоит, по сути, из набора более мелких целей, то всё равно придётся перебрать, какая же из целей лучше здесь и сейчас.
390 746758
Как получить доступ к ключу в словаре? Мне надо в цикле сравнить, равно ли название первого ключа названию ключа в подподсловаре, например, второго ключа.

>for entry in data:


>>for i in data[entry]["relations"]:


>>>for entry1 in data:


>>>>if entry != entry1:


>>>>>for j in data[entry1]["relations"]:


>>>>>>if entry == data[entry1]["relations"].key() - вот тут не получается

391 746759
>>46758

>>>>>>if entry == data[entry1]["relations"][j].key()

392 746763
>>46760 (Del)
>>46761 (Del)
У меня есть провинции.

>{


>"Province1" : {


>>"name":"Ass",


>>"pops" : "3500",


>>"relations" : {


>>>Province2:FRIENDLY,


>>>Province3:BAD


>>>}


>>},


>"Province2" : {


>...



Хочу, чтоб каждая сравнивала свое отношение к другой провинции и отношение другой к себе. Если у обиех плохое, то ВОЙНА.
393 746771
>>46769 (Del)
ййооооо вау спасибо
394 746876
395 746949
Привет. Есть нода2д на которой лежит layout на котором лежит контрол. Как взять глобальные координаты мира под контролом? Походу лайаут создал ещё один вьюпорт. И я совсем не понимаю как с одного вьюпорта влезть в другой.
396 746953
>>46952 (Del)
У меня возвращает какие то левые координаты относительно экрана. А мне надо относительно world2d.
Естественно камера сместилась в ворлд 2д.
Безымянный.png76 Кб, 888x712
397 747113
>>47040 (Del)
Вот. Нода Effect должна начать спамить монетки, которые через слой канваса должны получить глобал позишн в мире лейбла score и полететь туда.
398 747171
ОП в треде.
Перекачу ближе к вечеру.
Про оп-пикчу анона помню, поставлю. Предлагайте дополнения в шапку. Позже перечитаю и скомпоную.
Всем цемки! Обнял! Убегаю! На связи!
ПЕРЕКАТ # OP 399 747203
Тред утонул или удален.
Это копия, сохраненная 5 ноября 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски