Godot #57 # OP 981386 В конец треда | Веб
Добро пожаловать в тред любви и взаимопомощи, спрайтов, тайлмапов и вертикальной сортировки!
Шапка: https://hipolink.me/godothread
Предыдущий: >>977039 (OP)
Архивный: >>973473 (OP)
gif1.gif2,5 Мб, 426x240
2 981390
Аноны, кто-нибудь участвует в шоуриле? Я так и не понял, до какого числа там голосование и кто может голосовать.

Алсо, в воскресенье скорее всего релиз на итче
Мимо отписывался пару раз про разработку небольшого хоррора
3 981397
>>1386 (OP)
При экспорте проекта куда-то теряется json файлы. Пробовал и добавлять в фильтры экспорта *.json, и не добавлять. Результат один. Что я не так делаю?
expselected.jpg22 Кб, 453x576
4 981402
>>1397
Покажи хоть скриншот пикрил окна.
Не гадать же, где ты мог очепятаться?

Раньше 100% экспортировалось, я проверял.

>>1390

>кто-нибудь участвует в шоуриле


Так для этого игра нужна, или что-то полезное.
5 981406
>>980513 →

>Сделай змейку лучше.


ВНЕЗАПНО, это сложнее, чем я думал.
1 - двигаются друг за другом, но съезжают.
2 - двигаются строго по маршруту, но отстают.
Алсо непонятно, что делать с (само)коллизиями...

>>980551 →

>Благодарю за идею


А у тебя змейка получилась?
image.png15 Кб, 400x238
6 981413
>>1402
Вот так. Вторую строчку, если что, я пустой тоже пытался оставлять. Результат такой же.
7 981432
>>1406
Отличный член, двачерский респект тебе.
8 981435
>>1432
Любая змея похожа на сбежавший от кого-то член.
9 981487
>>1406

> Алсо непонятно, что делать с (само)коллизиями...


Настроить слои.
10 981490
>>1487
Не всё так просто.

Area3D может только регистрировать вхождение. Это подходит для хитбоксов/зоны влияния, но плохо для передвижения. С хитбоксами проблемы нет.

Если сделать каждый сегмент RigidBody3D, они будут мешаться друг другу, "спотыкаться" об окружающие объекты. Уже пробовал такое. Jolt тут не помогает.

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

StaticBody3D может подойти, но его придётся часто "телепортировать" и это может вызывать проблемы окружающих физических объектов, которые должны останавливаться/отталкиваться от StaticBody3D.

Впрочем, сначала нужно в сцену её поместить. Без физического окружения физику не протестируешь.
video.mp4269 Кб, mp4,
480x720, 0:10
11 981492
Иду делать игры
12 981496
>>1492

>Иду делать игры


Символичное движение по кругу в вакууме...
Sabaton running circles3,1 Мб, mp4,
854x480, 0:21
13 981500
>>1492
А где примо виктория? Нуб штоле?
14 981502
>>1500
Сделай, будет талисманом годотреда. А у меня своя музыка в голове
15 981525
А помните, я делал сапёра на годоте и выкладывал скрины в тред?
Так вот, я недавно на примере сапёра убедился, что я тупой. У меня ступор мозговины.
Есть бесплатный сапёр в интернете и там автор сделал двухкнопочное управление. Не нужно ни среднюю кнопку мыши нажимать, ни две одновременно. Ключевой геймплей состоит из двух действий. Старые сапёры разносят эти два действия по трём кнопкам. И я разносил тоже. Специально закодил обработку одновременного нажатия двух кнопок. И ни разу в голове не щёлкнуло, что в этом месте можно оптимизировать.

Вот так-то.
Вот и делай теперь игры после таких обескураживающих фактов.
16 981534
>>1525
А мой ступор мозговины заключается в непонимании сапера. Такие дела.
image.png437 Кб, 736x981
17 981535
>>1490
а можыт змею сделать цельной колбаской и просто по чут чут скейлить модельку по одной оси...
18 981537
>>1525
Для этого и нужны гейм-дизайнеры и дизайнеры интерфейсов
19 981546
>>1534

> непонимании сапера


О, если ты его поймёшь, это такой кайф для тебя будет. Другие игры тупо не нужны. Там охуенной глубины геймплей и зашкаливающая реиграбельность. При двухкнопочном управлении! Гениально!
обложка2.png661 Кб, 630x500
20 981551
Ну что, анончики, вот мы и релизнулись. Для первого проекта получилось вполне хорошо, на мой взгляд. Буду благодарен вам за фидбек.

https://fatum-game.itch.io/noesis
image.png37 Кб, 370x224
21 981552
>>1551
Хуякс, кто-то игру сделал. Поздравляю. Я пока не играл, но пару мыслей напишу

>LCM


Если это левая-мышь-кнопка, то принятая аббревиатура LMB.

Еще можете под линукс-макось собрать. В годоте это делается парой кликов, а 20-30% прирос загрузок даст.

Если аккаунт на реддите есть, то там полно сабреддитов которые будут вам рады. Начиная от r/godot и r/indiegames и до чего-нибудь нишевого про хорроры.
22 981554
>>1552

>Если это левая-мышь-кнопка, то принятая аббревиатура LMB.


Спасибо, на странице исправил.

>Еще можете под линукс-макось собрать. В годоте это делается парой кликов, а 20-30% прирос загрузок даст.


Проблема в том, что я протестировать не смогу, придётся надеется, что всё работает.
23 981555
>>1525

>два действия по трём кнопкам.


Чё?

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


Чёёё?

ЛКМ - открыть клетку (мина взрывается).
ПКМ - воткнуть/снять флажок (не взрывается).
Клетку с флажком открыть нельзя.
Если можно поставить "?", тогда:
ПКМ - флажок/"?"/пусто/флажок/"?"/... - цикл

Где там что-то ещё? Что ещё ты там выдумал?

>>1534

>непонимании сапера


Там всё очень просто: каждый номер обозначает количество заложенных мин на соседних клетках (теоретический максимум 8, минимум 0). Разные соседние клетки суммируют одни и те же мины, что помогает обнаружить точное положение этих мин.

Если у тебя такая ситуация (поле 3x3):
_ _ _
1 2 2
? ? ?
Тогда первый ? - пустой, на других - мины:
_ _ _
1 2 2
_ ✓✓
Ставишь флажки ✓ на все потенциальные мины.

Общий алгоритм игры:
1. Начинать проще всего с любого угла.
2. Помечаешь все очевидные мины флагами.
3. Открываешь все очевидно пустые клетки.
4. Повторяешь 2-3, пока есть очевидное.
5. В редких случаях приходится угадывать.
Играешь, пока не откроешь все пустые клетки.

Начинай с самого маленького уровня сложности.

спидранил сапёра на уроках через проектор
23 981555
>>1525

>два действия по трём кнопкам.


Чё?

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


Чёёё?

ЛКМ - открыть клетку (мина взрывается).
ПКМ - воткнуть/снять флажок (не взрывается).
Клетку с флажком открыть нельзя.
Если можно поставить "?", тогда:
ПКМ - флажок/"?"/пусто/флажок/"?"/... - цикл

Где там что-то ещё? Что ещё ты там выдумал?

>>1534

>непонимании сапера


Там всё очень просто: каждый номер обозначает количество заложенных мин на соседних клетках (теоретический максимум 8, минимум 0). Разные соседние клетки суммируют одни и те же мины, что помогает обнаружить точное положение этих мин.

Если у тебя такая ситуация (поле 3x3):
_ _ _
1 2 2
? ? ?
Тогда первый ? - пустой, на других - мины:
_ _ _
1 2 2
_ ✓✓
Ставишь флажки ✓ на все потенциальные мины.

Общий алгоритм игры:
1. Начинать проще всего с любого угла.
2. Помечаешь все очевидные мины флагами.
3. Открываешь все очевидно пустые клетки.
4. Повторяешь 2-3, пока есть очевидное.
5. В редких случаях приходится угадывать.
Играешь, пока не откроешь все пустые клетки.

Начинай с самого маленького уровня сложности.

спидранил сапёра на уроках через проектор
24 981557
>>1555

> Что ещё ты там выдумал?


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

Очевидно же, что двойное нажатие кнопок (или третья кнопка) не нужно. Гениальное решение - просто перенести сонар на ЛКМ.

> Помечаешь все очевидные мины флагами


> спидранил сапёра


Так ты риально не знал про сонар?
25 981559
>>1557

>сонар, прощупывающий соседние клетки


Так это же чит-код вроде бы был, нет?

>просто перенести сонар на ЛКМ


А зачем он нужен-то, если ломает игру?
Смысл сапёра - разминка для мозгов.
Если ты видишь мины, то это читерство.
26 981560
>>1559

> Так это же чит-код вроде бы был, нет?


Нет.

> ломает игру?


Это и есть игра. Сонар не видит мины. Если ты неправильно выставил флаги - при включении сонара они взорвутся с гейм-овером.
27 981563
>>1551

>вот мы и релизнулись


Неплохо. Сколько времени ушло?
28 981566
>>1563

>Сколько времени ушло?


Полгода, но это с учётом того, что нас двое и мы оба работаем 5/2. Времени на игру оставалось не так уж и много. Плюс я с нуля изучал годот.
1730033977498.png18 Кб, 492x311
29 981575
>>1559

> Смысл сапёра - разминка для мозгов.


Вот например ситуация, где логически ничего не выяснишь. Только на удачу тыкать.
30 981577
>>1575
есть саперы без удачи, тыкай куда хочешь, гарантированно будет пустая клетка
31 981584
В блендере можно сделать плагин, который позволит загружать неизвестные форматы моделей и анимаций. Блендер предоставляет функции позволяющие загружать слои данных для вершин xyz, uvw, весов для костей скелета и так далее, и потом обьеденять это в меш. С анимациями и свистоперделками. Можно ли в годоте так делать?

Например я хочу сделать на годоте просмотрщик для ресурсов из разных игр. Открывать модели и проигрывать анимации.
32 981586
>>1584
Конечно.
33 981587
>>1584
Чтобы не быть голословным, например: импортер из HL1
https://github.com/DataPlusProgram/Godot-GoldSrc-MDL-Importer
34 981590
https://github.com/godotengine/godot/pull/78312

Завезли поддержку маркдауна в скриптах. Теперь записи-тудушки удобней делать.
35 981591
>>1587
Спасибо. Буду посмотреть. Жаль нельзя загружать файлы откуда угодно, а только из папки проекта.
36 981598
>>1591
Открывать файлы можно (FileAccess. DirAccess с любым путем, не только res:// или user://), создавать модели в рантайме тоже можно (с помощью SurfaceTool, возможно GLTFDocument)
image.png1,4 Мб, 1024x742
37 981599
>>1551
Падажжи бля, меня профессор Харис ебнул? Или что случилось под конец? Я провалился? Титры мне показали, но осталось ощущение что в игре присутствует другой финал.

А вообще годно.
image.png372 Кб, 1846x1026
38 981616
>>1587
лол, увидел твой пост, ради интереса загуглил дум импортер и он тоже существует

https://github.com/DataPlusProgram/GodotWadImporter
39 981619
>>1599

>Падажжи бля, меня профессор Харис ебнул?


Ебнули по голове гг другие сотрудники.

>Или что случилось под конец?


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

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


Нет, финал только один.

>А вообще годно.


Спасибо, анончик.
40 981715
Блять, пиздец аноны. Создал пост с игрой в ветке /r/godot, начал набирать лайки и меня забанили нахуй. Охуенный сайт. Пиздец. Я ебал реддит в рот.

Если кому-то не впадлу, то можете создать пост с игрой? Хз, когда мой аккаунт разбанят. Можете просто написать, мол, челы сделали игру, вебм прикрепить и ссылку указать. Чёт даже обидно стало

https://fatum-game.itch.io/noesis
41 981716
>>1715
а в чем причина бана?
42 981717
>>1716
Никто не написал причину. Просто ошибка We had a server error.... Чекнул аккаунт в режиме инкогнито, а его приостановили, пост в ветке тоже пропал.
43 981718
>>1716
Может из-за того, что новый аккаунт. Но бля, как я иначе должен карму собирать, пиздец. Я даже забыл про неё
44 981720
>>1717
Если написать причину, почему тебя забанили, то здесь меня тоже забанят. Не раскисай, держись. Быть добру.
45 981726
>>1718

>Может из-за того, что новый аккаунт


Именно так. Есть различные статьи с советами по набору кармы.
https://dtf.ru/indie/1857195-prodvizhenie-igry-v-steam-i-vishlisty-reddit
https://dtf.ru/gamedev/1080281-chto-sdelat-chtoby-reddit-uznal-pro-vashu-igru

Была ещё годная статья на DTF с конкретными инструкциями как быстро надрочить карму, но я её не нагуглил. Может сам найдёшь.
46 981736
>>1715
Ночью закину. Забанили скорее всего автоматом, да, реддит легко заабьюзить ботами, поэтому он параноит по новым аккаунтам.

Отпишусь ИТТ со ссылкой потом.
47 981751
>>1715

>Создал пост с игрой в ветке /r/godot


А смысол?

>Можете просто написать, мол, челы сделали


А смысол???

Твоя целевая аудитория - разработчики на Godot?

>>1726
Смысл так заморачиваться? Если игра нужная, то банальный поиск по тегам на itch.io должен дать экспоненциальный рост со временем. Большинство жалобных постов "мою игру никто даже не смотрит" смотришь - а игра там реально никому не нужная. На нужных играх постоянно нытики "ну когда апдееейт", когда автор 3 года ничего не постил и не был онлайн.
48 981759
>>1751
Это ты пару тредов назад рассказывал как в тайне ото всех пилишь-перепиливаешь и снова перепиливаешь 10 из 10 шедевр, который слету, с первой попытки, возьмет игровой мир штормом и разорвет все чарты?

>экспоненциальный


Кек
49 981760
>>1759
Не, у меня нет такого шедевра...

Я мучаюсь выбором. Что придумаю - нинужно. Как разрабатывать игру, если нет нужных идей? Легко выдумывать какую-то никому не нужную фигню...

А если даже что-то нужно, это уже давно сделали.
51 981762
>>1760
Не сомневаюсь, ты придумаешь, сделаешь и взлетишь экспоненциально. А мы пока так пошуршим.
image.png284 Кб, 600x500
52 981770
>>1761
Большое спасибо, анончик.
53 981771
>>1726

>Именно так. Есть различные статьи с советами по набору кармы.


Я конечно сам виноват, ну и эта система с кармой полный кринж.
>>1751

>А смысол?


Поделиться игрой с сообществом Godotа, может кто поиграет или покажет другим людям.
54 981819
>>1771

>система с кармой полный кринж


Так это ж БАЗА многих классических форумов.

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

Основной минус системы кармы: сообщество часто превращается в circle jerk, когда олдфаги наяривают друг другу карму на одно и то же мнение, а любые новые/нестандартные мнения отлетают в минуса.

Так что хоть и не без минусов, но смысл есть.

>Поделиться игрой с сообществом Godot


Кто твоя целевая аудитория? Сообщество Godot?

Вот здесь готовы играть в индюшатину:
https://reddit.com/r/indiegames
Вот здесь играют в бесплатное по запросу:
https://reddit.com/r/playmygame/
Вот здесь ждут релизнутые инди хорроры:
https://reddit.com/r/HorrorGaming/
Ну и дальше можно поискать, где твоя ЦА.

А пост в r/Godot - всё равно, что на гитхаб.
55 981824
>>1819
Ты пропустил третье, а пожалуй даже первое назначение - затруднить ботам жизнь. На реддите помимо кармы куча ограничений направленных на борьбу с. Не то чтобы это работало.

>https://reddit.com/r/indiegames


Забросил:
https://www.reddit.com/r/indiegames/comments/1geutko

>https://reddit.com/r/playmygame/


Выглядит слишком дохло, поленился

>https://reddit.com/r/HorrorGaming/


Видосы нельзя, забросил ссылкой:
https://www.reddit.com/r/HorrorGaming/comments/1geuwpb

Давайте теперь всем тредом наблюдать что даст наибольший выхлоп.

>>1715
Принеси через пару дней аналитику с итча.
56 981828
Вопрос без подтекстов.
В чем отличие форка Редот от оригинала?
57 981830
>>1828
В отставании по фичам, в другом логотипе и в отсутствии разработчиков. Ответ без подвоха.
image.png27 Кб, 1098x407
58 981831
>>1824

>Принеси через пару дней аналитику с итча.


Да с реддита уже 72 человека перешло. Я считаю, вполне неплохо
59 981832
>>1824
Спасибо ещё раз, анон. Выручил
60 981834
>>1819

>Кто твоя целевая аудитория? Сообщество Godot?


Нет, но они могут перейти на страницу игры, скачать и тем самым поднять игру на itch.io. Во-вторых, они могут кинуть её друзьям, в конфы и т.д., сарафанное радио никто не отменял. Я конечно полный ноль в маркетинге, но сообщество Godot не стоит игнорировать.
16006400274420.jpg105 Кб, 1080x886
61 981838
Вопрос про диалоги с развилками нет, игра не визуальная новелла
Я правильно понимаю, что общий принцип таков - мы делаем скрипт "базу" со словарями вида:

диалог_1 : {
вопрос_1 : "Ты пидор?"
ответы_1 : {
ответ_1_a : { текст : "А может ты пидр, епта?", след_вопрос : "вопрос_2", сигнал : нет}
ответ_1_б : { текст : "Только не бейте, лучше обоссыте", след_вопрос : "вопрос_3", сигнал : нет}
}
вопрос_2 : "Ты че, ахуел?"
ответы_2 : {
ответ_2_a : { текст : "Да, пошел нахуй", след_вопрос : "нет", сигнал : атака}
ответ_2_б : { текст : "Врешь, не возьмешь!", след_вопрос : "нет", сигнал : побег}
}
вопрос_3 : "Хуй будешь?"
ответы_3 : {
ответ_3_a : { текст : "Да", след_вопрос : "нет", сигнал : сосать_хуй}
ответ_3_б : { текст : "Нет", след_вопрос : "нет", сигнал : смерть}
}

}

Где игроку сначала отображается вопрос_1, и два варианта ответа: ответ_1_а и ответ_1_б. После выбора мы смотрим в параметры ответа и либо идем к следующему этапу диалога, либо завершаем его с каким-то эффектом (упрощенный пример)
Верно?
62 981862
>>1838
Есть несколько готовых фреймворков:
https://github.com/dialogic-godot
https://github.com/rakugoteam
+ масса новичков/заброшенных.
Если хочешь JSON, то лучше бери это:
https://hjson.github.io/ - удобнее для записи.
Можно писать историю с помощью Twine:
https://twinery.org/ и конвертировать в JSON:
https://github.com/lazerwalker/twison
Ну или написать свой велосипед на GraphEdit.
Есть ещё масса других способов, фреймворков...

>Верно?


Одного верного решения нет, делай как нравится.
63 981877
>>1838
У каждой фразы есть уникальный идентификатор. Все идентификаторы выстраиваются в разветвлённые деревья диалогов. Диалоговый менеджер на лету пересобирает деревья диалогов под меняющуюся ситуацию.

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

Хм. Думаю, за 500$ в месяц я смогу тебе написать такую систему месяца через четыре.
64 981881
>>1877

>Думаю, за 500$ в месяц я смогу тебе написать такую систему месяца через четыре.


Зачем так жирнить?

>айди через айди на айди и айди погоняет


Можно делать текстовые айди:
WHEN_PLAYER_ENTERS_THREAD: "здарова, ньюфаг"
Тогда и перевод на другие языки будет проще.

>пересобирает


>под меняющуюся ситуацию


Я думаю, большинству игр это не нужно.

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

Почему? Потому что развилки ведут к
https://ru.wikipedia.org/wiki/Комбинаторный_взрыв
А способ избежать этого - отказ от чёткого сюжета.
65 981886
>>1881

> Зачем так жирнить?


Скучно.
Ну не игры же делать?
Я весь день бетон таскал вёдрами. Хочу отдохнуть.
66 981887
>>1862
Спасибо за инфу, изучу
67 981888
>>1886
Плывун цементировал? Хорошая идея для игры-кликера.
68 981890
>>1824
>>1819
Ну, по итогам бОльший выхлоп и трафик дал r/Godot. Думаю решающим оказалось чувство общности-братства и желание поддержать товарища-годотера, тогда как в r/indiegames никакого сообщества по сути нет.
69 981891
>>1888
лол
70 981892
>>1888

> Плывун цементировал?


>>1891

> лол


Ну ведь семён же, очевидный.
Сам о каком то-плывуне фантазируешь и сам же лоллируешь.
71 981895
>>1892
Сходи проветрись, может колодце тред заметишь.
72 981896
>>1892
Учи мемесы чтобы не быть батхертом
image.jpg171 Кб, 1024x1024
73 981901
>>1890

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


...или желание посмотреть, что возможно сделать в 3D на игровом движке, который многие используют только для 2D и/или на очень базовом уровне.
74 981909
Там это, редот хакнули
75 982026
>>1909
Чел на 3 вскрыл мутную тему, так что тут без юриста и не разберешься.
С одной стороны, он хочет чтобы копирайт его репозитория (MIT) указали в форке. То есть, он добавил в начало LICENSE.md строчку "контрибуторы Блэйзиума". И вроде как по правилам Гитхаба, на котором все это действо происходит, контрибуторы соглашаются с лицензией форка, откуда берут пулл реквест: https://docs.github.com/en/site-policy/github-terms/github-terms-of-service#6-contributions-under-repository-license
С другой, в самих то файлах исходников он отказывается делать реплейс-замену, и там говорится только про копирайт Godot Foundation, а поскольку тот же гитхаб, пока репу не отвяжешь, считает ее форком основной репы, то для разработчиков редота-то этот PR выглядит как просто дифф файлов оригинального Годота с оригинальным копирайтом, и вроде как ничто и не намекает что они обязаны вписывать контибуторов Ьлейзиума.
TL;DR: копирайт на код PR всегда у автора этого PR, иногда бывает Contributor Agreement где автор PR может отказаться от прав, дефолтные правила Гитхаба говорят что контрибуторы отсылают под лицензией репы, но тут неоднозначно, какая лицензия, поскольку в репе написано одно, а в файлах - другое.
76 982031
>>1890

>в r/indiegames никакого сообщества по сути нет


Мне кажется, твоя игра/видео просто не цепляет.

Буквально только что наткнулся на пост:
https://reddit.com/r/indiegames/comments/1fqvx70/
1500+ лайков, 50+ комментариев

В чём секрет? Нужно делать фановый геймплей, а не бродилку по 3D ассетам с клеймом "хоррора".

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

Ничего не говорю про игру, ты молодец, но мнение относительно маркетинга у тебя, имхо, странное.
77 982037
>>2031
Посмотрел твой пост, а там говнище QTE. Почитал коменты - там и пишут что это говнище QTE которое надоедает после первых пару раз. Очередной пост который привлекает лайки мигающими бессмысленными картинками. Хз насколько он конвертируется в продажи, но хомячков конечно хватает.
78 982041
>>1909

>редот хакнули


Какое отношение эти школоло срачи имеют к Godot?

>stolen my PR


Не украли, а скопировали. Разницу понимать надо.

Украли == у тебя нет больше твоей вещи.
Копировали == оригинал остался у тебя.
Вот пиратство - это нелегальное копирование.

С лицензией смешно, там же везде MIT лицензия.

>>2026

>в файлах исходников делать реплейс-замену


Мне кажется, это нужно только если ты изменил их.
Если ничего не изменил, зачем менять заголовок?
Каков твой копирайченный вклад? Имя форка?
79 982049
>>2041

>С лицензией смешно, там же везде MIT лицензия.


MIT лицензия требует указывать авторство.
Блджад, это вообще практически единственное, что она требует. Пользуйся как хочешь, но укажи авторство. Как говориться, you had one job. Как можно было не выполнить единственное условие и не указать авторство?
Лицензии вообще все равно на то, какой именно был вклад. Она бездушная. В ней нет ничего про оценивание - ну мол это всего одна строчка, не так много же. Ну вот например тот чел перекрасил кнопочку в этом ПР. Имеет он право перекрасить кнопочку? Имеет. Он изменил код в файле main/main.cpp. Имеют ли право в редоте взять его код, но не указать авторство? (То, что он называет воровством). Тут вопрос неясный. Когда в редоте берут ПР из годота, коллизии не возникает, потому что они ссылаются на авторство контрибуторов годота и добавляют свою строчку. Когда авторы редота берут из блейзиума, получается коллизия, скажем так множественного наследования, потому что они должны указать и авторов годота, и себя (редота), и блейзиума, что они делать отказываются, ссылаясь на то, что в самом файле (main/main.cpp) копирайта блейзинума не вписано, там есть только копирайты оригинала годота. То есть я думаю что в редоте заблуждаются и нарушают правила гитхаба, отвечая (на скриншоте) что файлы репозитория существуют отдельно от репозитория и не покрываются лицензией репозитория. Но тут реально юрист нужен чтобы разобраться.
Тут вообще и у самого годота старая проблема, ведь в нем есть файлы с другими лицензиями, не МИТ, например Апач, которые требуют указывать авторство либ, а Хуан утверждает что достаточно написать МИТ Годот, что имхо не достаточно.
80 982073
>>2049

>другими лицензиями, не МИТ


Об этом тут написано, вкратце - есть готовый файлик:
https://docs.godotengine.org/en/stable/about/complying_with_licenses.html#third-party-licenses

>нарушают правила гитхаба


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

Наверняка использовал "stolen" для кликбейта, мол:

>украли коды - теперь не можем без них работать(((



Только это всё к нам отношения не имеет, если мы пользуемся исходным Godot, а не его форком.
81 982079
>>2073

>Об этом тут написано, вкратце - есть готовый файлик:


Ага, есть, только об этом должно быть написано не в конце странички неразборчиво, а в начале капсом. А в доках к 3-ке там еще меньше.

>смотреть нужно, что там скопировали, откуда и как


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

>Наверняка использовал "stolen" для кликбейта, мол:


>украли коды - теперь не можем без них работать(((


Ты видимо скрин не читал. Там все видно кто что сказал.

>Только это всё к нам отношения не имеет, если мы пользуемся исходным Godot, а не его форком.


Откуда тебе знать, чем пользуется каждый посетитель треда. А кроме того, есть и новички, которые могут пока не знать и по чьему то совету выбрать другой форк.
82 982080
>>2073

>мы пользуемся исходным Godot, а не его форком.


Если кто-то и пользовался редотом, то после взлома весь редот выглядит загаженным. Хуй знает насколько глубоко под них подкопали. Встроят бекдор как недавно в XZ Utils и все идеи украдут!
83 982084
>>2080
Это тот фееричный случай, когда админ отлаживал ядро линукса, потому что у него комп стал загружаться на несколько миллисекунд дольше?
84 982085
>>2084
Почти - ssh коннектился дольше.

Но ладно, оставить шутки, все равно хакать нечего. Редот так и не осилил ничего релизнуть, все логотипы меняют.
85 982086
>>2079

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


По чьему совету? А главное, зачем?

>>2080

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


Рассуждая логически, Redot изначально "загажен".

>>2085

>Редот так и не осилил ничего релизнуть


Они уже ДЖВЕ сборки сделали: redot-engine/releases
image.png783 Кб, 554x828
86 982087
>>2086
Откуда я знаю, по чьему? Ютуб какой нибудь посмотрят, а там столько роликов на эту тему клепают даже на русском.
Я вот по маскоту форк выбираю. У Блазии все украшения в виде логотипа, и даже вырез под пупок - интересно, что у нее еще такой формы?
image.png237 Кб, 1025x750
87 982089
>>2087
Я выбираю по качеству жопы.
88 982110
>>2087
Что за Блазия то?
89 982120
>>2026
Ну и задротство, хоспаде. Лучше бы игры делали
90 982121
>>2110
Форк форка, над которым работает один шиз. Следующий шаг - форкнуть форк форка и поставить на него тульпу.
# OP 91 982136
Там годоньер выкатил подробный видос про трансформы.
https://www.youtube.com/watch?v=UwHIgAAGB0s
Смотрим вместе.
92 982149
А теперь давайте немного по интерфейсам посмотрим
https://www.youtube.com/watch?v=5Hog6a0EYa0
DX2nilYW4AAGCp4.jpg25 Кб, 416x473
93 982198
Есть тут понимающее в ООП?
Объясните мне, что такое отношение реализации/внедрения/Implementation?
Прочел кучу инфы в интернете, пообщался с чатгпт, но так и не понял, нахуя это нужно, если есть наследование. Судя по описаниям - это 1 в 1 вещи. Просто называются разными заумными словами
94 982200
>>2198
Реализация - то, как что-то делается (сравнительно с интерфейсом, который, грубо говоря, описывает что делается)
Реализация скорее полагается на инкапсуляцию (которой в гдскрипте вообщем то и нет, если только себе на память помечать _названия)
А учитывая утиную типизацию, то получается больше похоже на PIMPL. То есть, можно использовать разные реализации, даже если наследования в прямом смысле нет. Например, можно вызывать if obj.has_method("fire") obj.fire(), даже если obj не является наследником какого-то базового класса FireAble, а просто содержит такую функцию. И переключаться между реализациями, меняя ссылку на другой объект.
95 982209
>>2200

> Реализация скорее полагается на инкапсуляцию (которой в гдскрипте вообщем то и нет


Инкапсуляция (in-capsule) - это не сокрытие!
Инкапсуляция не в синтаксисе, инкапсуляция в твоём коде.
Инкапсуляция (in-capsule повторюсь) - это когда модуль независим от остальных частей кода, весь его функционал не выходит за рамки "капсулы", модуля.
96 982211
>>2209
Как скажешь (хотя капсула, и переводится как оболочка).
97 982212
>>2211

> Как скажешь


Скажу и не раз
https://www.youtube.com/watch?v=yNUJ3vAeyJQ
98 982215
>>2212
У собесиков своя атмосфера, им просто зазубривать слова надо, вне зависимости от значения.
99 982216
Я устал, сделайте игру за меня ...
100 982217
>>2216
Нет! Не заставляй меня!
101 982218
>>2217
И ты меня не заставляй!
102 982219
>>2198

>реализации/implementation


В каком контексте? Реализация (имплементация) - осуществление задуманного. В контексте ООП это может означать реализацию абстрактного класса.

Пример из классов Godot:
https://docs.godotengine.org/en/stable/classes/class_basebutton.html
Это базовая кнопка. Её нельзя использовать как есть, потому что у неё нет поведения. Но из неё можно создать собственную кнопку, реализовав методы:

>void _pressed() virtual


>void _toggled(toggled_on: bool) virtual


В них описывается поведение твоей новой кнопки.

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

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

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

>Can't make instance of abstract class BlaBla! Implement method Say(text: String) before calling BlaBla.new().


В GDScript понятия абстрактных методов пока нет:
https://github.com/godotengine/godot-proposals/issues/989
Там см. примеры, как это можно обойти (assert).

Ещё слово "реализация" может использоваться как противопоставление "интерфейса" класса. Здесь интерфейс - это список публичных полей и методов. Например, is_hovered() у кнопки - это интерфейс, а реализация спрятана где-то в исходниках на C++.

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

Допустим, есть такой интерфейс:

>func pull_data()


Мы обнаружили, что pull_data() выполняется ровно 5 секунд, и использовали это знание в своём коде:

>pull_data()


>time += 5


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

Пример смешной, а ситуация страшная - из-за таких ошибок в программах космические корабли теряли.

>внедрения/injection


Это вообще отдельная тема. Допустим, тебе нужна определённая зависимость, но ты не знаешь пока конкретные детали. Пускай пользователь сам определяет эти детали! Ты объявляешь:

>@export var platform: VehiclePlatform


А дальше пользователь сам укажет, какая ему платформа нужна: на колёсиках, на гусеницах, на механических ногах, на воздушной подушке... Тут единственное условие - совпадение интерфейса:

>platform.move(direction)


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

Примеры DI из Godot: любые физические объекты, зависимые от вложенных в них форм коллизии; контейнеры и вложенные в них Control-ноды, без которых смысла в контейнерах нет (зависимость).

Могу ошибаться, поскольку я самоучка.
102 982219
>>2198

>реализации/implementation


В каком контексте? Реализация (имплементация) - осуществление задуманного. В контексте ООП это может означать реализацию абстрактного класса.

Пример из классов Godot:
https://docs.godotengine.org/en/stable/classes/class_basebutton.html
Это базовая кнопка. Её нельзя использовать как есть, потому что у неё нет поведения. Но из неё можно создать собственную кнопку, реализовав методы:

>void _pressed() virtual


>void _toggled(toggled_on: bool) virtual


В них описывается поведение твоей новой кнопки.

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

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

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

>Can't make instance of abstract class BlaBla! Implement method Say(text: String) before calling BlaBla.new().


В GDScript понятия абстрактных методов пока нет:
https://github.com/godotengine/godot-proposals/issues/989
Там см. примеры, как это можно обойти (assert).

Ещё слово "реализация" может использоваться как противопоставление "интерфейса" класса. Здесь интерфейс - это список публичных полей и методов. Например, is_hovered() у кнопки - это интерфейс, а реализация спрятана где-то в исходниках на C++.

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

Допустим, есть такой интерфейс:

>func pull_data()


Мы обнаружили, что pull_data() выполняется ровно 5 секунд, и использовали это знание в своём коде:

>pull_data()


>time += 5


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

Пример смешной, а ситуация страшная - из-за таких ошибок в программах космические корабли теряли.

>внедрения/injection


Это вообще отдельная тема. Допустим, тебе нужна определённая зависимость, но ты не знаешь пока конкретные детали. Пускай пользователь сам определяет эти детали! Ты объявляешь:

>@export var platform: VehiclePlatform


А дальше пользователь сам укажет, какая ему платформа нужна: на колёсиках, на гусеницах, на механических ногах, на воздушной подушке... Тут единственное условие - совпадение интерфейса:

>platform.move(direction)


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

Примеры DI из Godot: любые физические объекты, зависимые от вложенных в них форм коллизии; контейнеры и вложенные в них Control-ноды, без которых смысла в контейнерах нет (зависимость).

Могу ошибаться, поскольку я самоучка.
103 982220
>>2219

>>void _pressed() virtual


>у неё нет поведения


Поправка - там, вроде, есть базовое поведение:

>Abstract methods are declared without an implementation and must be overridden in derived classes, while virtual methods provide a default implementation that can be optionally overridden. Essentially, abstract methods enforce that derived classes provide their own implementation, whereas virtual methods allow derived classes to either use the default behavior or provide their own.


(DuckDuckGo)
two assets.png12 Кб, 180x470
104 982222
Этот не шарит: >>2087

>Я вот по маскоту форк выбираю


Этот шарит: >>2089

>Я выбираю по качеству жопы



Годетта похорошела за лето...
Быстро накидал, доделывать?

>>2216

>Я устал


Отдохни, разомни жопу.
105 982224
>>2222
Хотел написать что ты просто из зависти к Блазии пририсовал вечно плоской годетке жопу, но потом заметил квадрипл, так что ты прав.
106 982225
>>2222
База. Годетта, как и годот, становятся старше и отращивают фичи жопы.
image546 Кб, 850x850
107 982226
>>2222

>Быстро накидал, доделывать?

108 982231
image.png420 Кб, 540x318
109 982232
>>2231
Делаю а
110 982242
>>2219
>>2220
Интересно. Спасибо за развернутый ответ
532982-grand-theft-auto-iii-screenshot.jpg91 Кб, 800x600
111 982275
>>2231
Секрет создания ААА графики - топовое железо.
На 750 можно ААА только уровня GTA 3 сделать.
112 982281
>>2275
У меня есть топовое железо. Где мне получить ААА графику?
30703ed1b1454cdf94ca0d044156900b.jpg26 Кб, 600x450
113 982285
>>2281

>Где мне получить ААА графику?


В редакторе графики, например, Blender:
1. Скульптишь хайполи из сферы.
2. Запекаешь нормали в лоупольку...
Потом импортируешь лоупольку в Godot.

В 2D проще, для пикрила железо не нужно.
Ух ебал бы и ебал в эту сладенькую попочку чтоб кишка аж у неё выпала.jpg495 Кб, 768x1920
114 982342
image1,2 Мб, 1600x2585
115 982343
>>2342
Кайф! Не забудь в сеть выложить.
Яндекс.png55 Кб, 450x666
116 982386
>>2342
Это Stable Diffusion? Или что-то другое? У меня ещё не получалось преобразовать скетч/набросок так, чтоб рандомных галлюцинаций/косяков не было.

Опиши хоть в общих чертах порядок действий. Вот слышал про ControlNet, ты его обучал на Годетте?

>>2343

>в сеть выложить


В какую сеть? Он уже "выложил в сеть" - Яндекс на картинки Годетты давно выдаёт треды в /gd/, лол.

Алсо, это кто-то другой. Я только свой кривой скетч выложил, а какой-то анон прогнал через img2img...

А что с обновлениями Godot? 3 октября вышла dev3. Думал, через недельку будет dev4. Но уже ноябрь...
Снимок.PNG100 Кб, 1104x575
117 982387
Кто нибудь пользовался External Web Audio на годот 3.5.2?

Я никогда плагинами не пользовался и не особо понимаю как его использовать.

В интернете пишут что нужно функцию запускать через плагин запускать, но как загрузить звук, какую функцию запустить и тп непонятно. В интернете разная инфа.

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

Или вы может как-то иначе фиксили звук для браузерных площадок
118 982394
>>2386

>Это Stable Diffusion?


Да

>ControlNet


Да

>ты его обучал на Годетте?


Нет

Убрал твои явные косяки, аля цветовых клякс и сформировал промт примитивный
1girl, cute, blush, black skin, tan
lips, thick thighs
green eyes, big eyes
hair bun, triple bun, blue hair, gradient hair
(blue polo shirt:1.1), white panties, black kneehighs, blue shoes, white socks
open mouth, tongue, surprised
solo, back, from behind, full body, grabbing, ass grab

Вкл кастом стили на аутистикс миксе
Вкл контролнет tile_colorfix Control Weight 0.5 Ending Control Step 0.5, tile_resample Control Weight 0.75 Ending Control Step 0.75. Везде Control Mode "My prompt is more important"
Нажал кнопку генерировать 4 картинки, отфотобашил сделав франкинштейна из этих сгенериных артов. Ушло 5 минут.

Год назад я ровно тоже самое делал, пики
119 982398
>>2387
Ползуюсь, но там надо править исходники чтобы заработало и файлы аудио отдельно хранить (грубо говоря там будет в папке music.mp3. и его надо прямо в папку экспорта копировать, а звуки из проекта не используются, так что для отладки придется что то придумать).
В этом форке что то дорабатывал чел https://github.com/MEnesCakar/godot_web_external_audio_motor
А, еще надо аудиолибу скачивать, в примере там howler.js.
Если что непонятно, после выхов смогу подсказать.
ух какая попочка возбуждает дырочку бы еще увидеть и пальчики её себе в уретру засунуть.jpg1,6 Мб, 3072x2304
120 982406
121 982412
>>2394

>Год назад я ровно тоже самое делал


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

>white panties


Думал, это галлюцинация. Там не трусы, а "tan lines". Светло-серой линией просто границы обозначил.

Ты эту методику для игр используешь? Что-то уже получилось? Было бы круто, если бы можно было стабильно (в одном стиле) обрабатывать такие примитивные скетчи для 2D игры... На 2 GB GPU в реальном времени. Этакий Godot от мира GenAI...

Удалил стену нытья. Снова удалил стену нытья.
У меня теперь опять экзистенциальный кризис...
122 982414
>>2406
Здравствуй, длинный Ух.
123 982425
>>2398
Смари, я вот скачал его https://github.com/goldfire/howler.js , получается условно этот архив нужно будет закинуть в уже экспортируемую папку?
Потом я так же в этой директории создаю папку со звуками.
А дальше как? Типа где я должен указать директорию к звуковому файлу?

Блин кароч я вообще тилтанул сегодня и спился. Буду рад если подробно ответишь как вообще это все работает и в каких прогах что писать, в будущем.
Я сам тоже пока буду курить это
124 982439
>>2387

>годот 3.5.2


2 месяца назад вышел Godot 3.6, попробуй...

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


Это проблема хромиума, гугл что-то опять сломал:
https://github.com/godotengine/godot/issues/47453

>через мобильник играть в браузере


Лол, браузерные игры через мобильник -

>это просто жопа


Сплошной садомазохизм, вредный для телефона.
125 982441
>>2412

>Там на оригинальной картинке у неё всё полностью синее, потому что она робот/андроид.


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

>Думал, это галлюцинация. Там не трусы, а "tan lines". Светло-серой линией просто границы обозначил.


Даж об этом не подумал лол, хотя такое можно спокойно сгенерить было бы

>Ты эту методику для игр используешь? Что-то уже получилось? Было бы круто, если бы можно было стабильно (в одном стиле) обрабатывать такие примитивные скетчи для 2D игры...


Да, релизнуть хочу через месяц, я порнодел
Плюс анимации захуярил, сча пересобираю сцену тупо по 2д, потому что спайн взяли за 40к деревянных, надо румы пересобрать.
Можно любой сложности делать арты под игру ток через нейронку, главное уметь в фотобаш, что приходит с опытом
Поделюсь с тредом видяшками
Так и так мы будем релизиться и поститься везде, в гд думаю создать тред и порассказывать про игру и нюансы, релиз то будет классический 0.1 под патреон
Алсо с анонами общаюсь даже в дсе, все потихоньку пилят чета свое, обсуждаем темы, делимся советами
>>2414
Кумерам добро, плотную кидаю попочку
126 982442
>>2441

>анимации


Это ведь один сплошной меш деформируется?
Зачем нужен Spine, если 2D меши есть и в Godot?

>порнодел


В смысле порно-геймплея или порно-картинок?
Во втором случае конкурентов намного больше.
image.png753 Кб, 1280x697
127 982446
>>2442

>Это ведь один сплошной меш деформируется?


Там все разделено на слои по красоте

>Зачем нужен Spine, если 2D меши есть и в Godot?


Тебе надо пробнуть то и то и ты охуешь насколько все остальные проги по 2д анимации хуета. Мало того что спайн удобный, быстрее делается риг, анимация, дак еще и есть разные фичи, плюс полноценная синхронизация с движком, в отличии от другой костальной хуйни.
В смысле порно-геймплея или порно-картинок?
Игра, игра.
Конкуренции нигде нет, кумеры все схавают, ты им покажи сисиписи с сюжетом, они уже будут урурукать
128 982450
>>2441
>>2446
Проблем с законом не боишься?
129 982452
>>2441
Воистину, кто хочет - ищет возможности.
>>2450
А ты ищешь причины.
130 982453
>>2450
Дык трактор же
131 982456
>>2452
Так я делаю! Но пока в стол...
>>2453
Эх, вот бы и у нас ослабили эту часть законодательства...
132 982462
>>2453
Это в каких таких странах разрешено изготовление и распространение порнографии? Ты уверен, что хорошо изучил местное законодательство?

Напомню, Ельцин присоединился к международной "Конвенции о пресечении обращения порнографических изданий и торговли ими" в 1996 году как раз в стремлении подражать западному миру, после чего соответствующую статью и ввели в УК РФ.
133 982471
>>2462
Интересный вопрос, кстати. А кто тогда все эти порно игры в стиме делает? Или они как Неуловимый Джо все пока какого-нибудь конкретного порноразраба не захотят за жопу взять?
134 982472
>>2471
я посмотрел в википедии статью "порнография в Европе", явно запрещена порнография только в Исландии и Болгарии, а также бУССР и бБССР, в России и Великобритании запрещена только "нелегальная порнография", но нет определения легальности

не знаю, насколько можно доверять Википедии
Ниче, нормалёк, справимся.webm12,4 Мб, webm,
1920x1080, 0:22
135 982473
>>2456

>Эх, вот бы и у нас ослабили эту часть законодательства...


Да вряд ли анонче, все наоборот еще больше закручивается и ет печалит. Пердолинг лютый приходится испытывать, куда не шагнуть везде препятствия и ограничения.
Ну ниче, нормалек. Прорвемся. Не зря ж я вон сколько борду капчую. И я, и аноны мои... Прорвемся!
>>2462
Можешь и сам найти списки этих стран.
Правила в отношении этого много где строго не соблюдаются, даже если оно есть.
Или ты считаешь что неважно куда трактор заведешь, все равно надо трястись?
Лучше игры делай
136 982474
>>2441
Выглядит потрясно. Надеюсь у тебя всё получится. Обязательно после релиза тред запили.

И главное не забывай про сюжет. Рисовка и анимации крутые, однако сюжет, ситуации, персонажи тоже очень важны.
137 982481
>>2474

>сюжет, ситуации, персонажи


Прямо таки главное. Все повторяют друг за другом. На самом деле надо прекратить пиздеть и просто включать голову хоть иногда. Что ему надо? Чтобы игра продалась тиражом. Что для этого нужно? Чтобы игроков чем-то заманить, и желательно удержать. Чем игроков можно заманить и возможно удержать? Существует более чем один способ. В казино нет ни сюжета ни персонажей, но вот люди там безвылазно просиживают пока не растратятся в ноль. Много вещей есть чем людей можно развлечь. В порнухе нет сюжета, но это не мешает ее беспрецедентной популярности. Вот ты ебешь женщину, весь сюжет в том что вставляешь пипиську в ее письку. Все. Это не Война и Мир. Не Анна Каренина. Это и есть вся история успеха. Достаточно это хорошо передать. И остальное приложится.
138 982500
>>2441
охуенно, привстал реально
139 982513
>>2481

>Это и есть вся история успеха


Для этого есть порнография и хентай. От игры ты ждёшь большего.
140 982518
>>2513
Перестаньте ожидать что-то от чего-то - и ваши ожидания не будут обмануты.
141 982563
>>2518
База. Ожидаю провал своей игры.
142 982601
>>2563
Тоже ожидаю провала твоей игры. Вместе мы сила, бро 💪
143 982604
Зайду побомбить насчет 3д и годота.

Побомбил.

Делать уровни в тренчбруме или блендере это пиздец. Просто ебаный пиздец. После анрила хотелось простой и небольшой движок где можно сделать простую игрульку типа дефрага из ку3. но с геометрией сложнее, чем три куба. И что вы думаете? Нихуя нормально не сделать. Даже встроенный в движок кубогенератор делает суперхуевую геометрию для прототипирования, которая выжирает весь цпу. Это пиздец. Походу придется обратно на анрил идти.
144 982608
>>2604
Качай скилл. Есть куча способов быстро и просто прототипировать (sprytile для блендера), но это не отменяет того, что надо набивать руку чтобы это стало рутиной
Кроме того, очень просто писать свои тул скрипты. Я показывал как делать редактор уровня на CSGPolygon3D Про нагрузку цпу - так ты конвертируй csg в меши перед запуском, хоть готовыми ассетами. Все это делается очень легко.
145 982611
>>2604
Хз, я тупо на csg делаю, потом, когда доволен результатом, конверчу в обычные меши и генерирую им коллизии.
146 982613
>>2611
Да не обращай внимания, это просто движкосрачер.
.png467 Кб, 2556x1360
147 982617
>>2613
Ты дурачок или куда? Я сижу и ебусь с 3д. Годот я выбрал и пилил на нем 2д игрушки чтобы привыкнуть к движку и в нем освоиться, понимать что можно делать и что нельзя. Все для того, чтобы наконец запилить "игру мечты", но она в 3д. Дохожу и до 3д и... хуй за щеку. Так что ты можешь сходить нахуй с своими заявлениями, вот честно.
148 982622
>>2617
Я хз что у тебя там за проблемы, я несколько простых 3д игр сделал и все нормально было.
149 982626
>>2604

>Делать уровни в тренчбруме или блендере это пиздец.


Чем тебя Тренчбрум обидел?
150 982628
А что, поведение в дебаг-версии и в релиз-версии игры различается? У меня баг при открытии сундука, при запуске по ф5 он ронял игру - все ок, ожидаемо. Потом я собрал релиз-экзешник, баг на месте, но игру он уже не роняет - просто сундук не открывается, ошибка идет в лог, а игрок играет дальше.
151 982636
>>2425
Короче.
Рассказывать сейчас некогда. В ассете есть проект с примером, но он не полный.
Вот что должно быть в папке экспорта, кроме созданного годотом. Папки со звуками, например mp3. В коде они указаны в словаре. Для проигрывания указывается только имя звука, .mp3 подставляется автоматически (в .js либе), и путь к папке тоже. То есть "beam" будет играть "Sounds/FX/beam.mp3"
Я пробовал поменять на ogg, но что от он в браузерах глючил, так что я все перевел на mp3

Библиотека howler.min.js минифицированная. howler.spatial.min.js, это библиотека для пространственного 2д звука. От нее можно избавиться, но надо ее загрузку убрать в коде. В TestePlugin.gd указано откуда грузятся либы, соответствернно там я поменял путь с addons/Web.../ на просто корень, потому что в экспорте они у меня в корне

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

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

Для тестов надо запускать все через сервер. например python -m http.server из папки экспорта. Запуск через годот веб версии не подхватывает папки, а запуск игры в винде ничего не играет, конечно, потому что там js либа. Потом как нибудь хочу добавить прослойку, чтобы на пека игрались звуки по обычному, чтобы тестировать удобнее было.

https://anonymfile.com/VpVQZ/web-externaladdondemo.zip
152 982638
>>2628
И что? Если у тебя баг, любое дальнейшее поведение непредсказуемо.
153 982640
>>2622

> несколько простых 3д игр


>>2626
Если бы вы в глаза не ебались и попробовали сделать игру с геометрией сложнее чем q2dm1 то жутко удивились бы насколько все хуево с 3д пайплайном годота. Ну тип давайте даже обратный пример: где крупные 3д игры с приличной графикой, ассетами, сложной геометрией на годоте? А нет их. А почему их нет? Может, причины есть какие, м?
154 982645
>>2640

>сделать игру с геометрией сложнее чем q2dm1


Нахуя сложнее то? Даже в современном кАААле персонажи бегают по примитивам, все замаскировано анимациями
иф куб ниже куб2: падать_на_жопа()
155 982646
>>2640
Хули ты мне ААА пихаешь, я спросил чем лично тебя обидел Тренчбрум для твоих инди задач? Ты же простую игру хотел сделать.
156 982647
>>2640
Так я и делал игры со сложной геометрией. Все легко делалось. Че с тобой не так то?
157 982661
>>2640

>Где? А нет их. А почему их нет?


А потому что я тебе в глаза нассал:
https://store.steampowered.com/app/1963610/Road_to_Vostok/
https://store.steampowered.com/app/2956040/PVKK_Planetenverteidigungskanonenkommandant/
https://store.steampowered.com/app/3052500/ColdRidge
https://store.steampowered.com/app/1733110/Of_Life_and_Land/
https://store.steampowered.com/app/2645830/Stunt_Xpress/
https://store.steampowered.com/app/2835350/No_Gasoline/
https://store.steampowered.com/app/2211170/Unrailed_2_Back_on_Track
https://store.steampowered.com/app/2217530/Engine_Roar

Давай, расскажи как у тебя графон и геометрия СЛОЖНЕЕ чем по ссылкам, и как ты в одно свое утиное ебло делаешь ААААаа шыдеверы, и как тебе яйца инструменты мешают и в штаны срут.
# OP 158 982675
Ахуенно попустили графодрочера ИТТ. Маи пездюки! Малаца. Батя одобряет.
159 982791
>>2640
Sandfire геометрия сложнее q2dm1?
https://www.youtube.com/watch?v=0SfWxYyqqpw

Human Diaspora приличный графон?
https://www.youtube.com/watch?v=yd1_18c1e7s
41027326.jpg110 Кб, 700x483
Лайфхак 160 982823
Думаете, что контроллер персонажа должен быть в скрипте CharacterBody, или его потомком по дереву сцены? А вот и не необязательно! И не нужно.

В общем, видел такую идею дерева:

>Actor: CharacterBody


> - Controller: Node


И чтобы Controller мог быть ИИ или вводом игрока.
Типа, подключать-отключать ноды туда-сюда:

>Actor1


> - Brain # управляется ИИ


>Actor2


> - Player # управляется игроком


Да, так можно сделать. Но зачем?

Сегодня я думал, как двигать камеру между двумя такими персонажами. Подумал, что камеру можно отсоединить ото всех персонажей: просто двигать к персонажу с какой-то скоростью. А потом подумал, почему бы не сделать "ввода игрока" наследником камеры? Камерой-то игрок управляет. И персонаж управляется, только если камера возле него уже. Поэтому получается такое дерево:

>Player: Camera


>Actor1


>Actor2


Тогда ИИ можно никуда не удалять и ноды по сцене перекидывать никуда не нужно. Только собрать в "игроке" массив-список доступных героев:

>@export var actors: Array[Actor]


И выбирать одного из них.
161 982827
>>2791

>Sandfire


Автор забросил игру шоли?
image.png154 Кб, 990x760
162 982834
>>2827
Да, делает пошаговую миниигру пока.
1730809679661.png33 Кб, 529x250
163 982848
>>2823
Если тебе удобнее делай так.
Вообще делать надо так, как удобно, а не так, как советуют на двачах мутные типы, еванеглисты то одной, то другой аббревиатуры. Мне удобно ваще закинуть скрипт в корень дерева и дирижировать оттуда.
164 982871
>>2848

>удобно ваще закинуть скрипт в корень


Можешь нормально объяснить - чем удобнее?

Root нода недоступна из редактора.
Подменой скрипта ты лишаешься @export.
get_tree() - это глобальный доступ, т.е. опасный.

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

>Вообще делать надо так, как удобно


Никто не спорит, это просто один из способов.
165 982890
Мини-план по левел-дизайну для соло инди 3D игр.

1. КОНЦЕПТ.

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

1.2. Набросать на бумаге или в 2D редакторе уровень в формате плана сверху или сбоку, как удобнее. Это позволяет быстрее прикинуть масштаб и пропорции, возможные развилки, углы, мосты и тому подобное. Придумайте условные обозначения и следуйте им, особенно когда у вас много одинаковых объектов. 2D набросок очень легко исправить и при этом он достаточно хорошо передаёт суть будущего уровня.

2. ГРЕЙБОКС (механический прототип).

2.1. Используйте CSG фигуры с натянутой сетчатой трипланарной текстурой для грубого наброска в 3D. Игнорируйте детали. Если вам нужна машина - вам достаточно растянуть один куб. Здание - куб. Любое заграждение - куб. Но иногда нужны цилиндры, как, например, для круглой площади, фонтана. Также игнорируйте мелкие отклонения в величинах, дрочь циферок сейчас ничего не даст, только замедлит. Однако, ориентируйтесь на сетку и обязательно сохраняйте повторяющиеся объекты как сцены.

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

3. ВАЙТБОКС (графический прототип).

3.1. Когда грейбокс доказал общий дизайн уровня, переходим к постепенной детализации моделей. Нет необходимости трогать 3D редактор, для многого хватит и CSG форм, но куда меньшего размера. Тут серые кубы и цилиндры начинают напоминать реальные объекты, пусть и без текстур. У машины появляются колёса, например, а у здания - окна.

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

4. ГРАФИКА.

4.1. Экспортируете вайтбокс-модели в GLTF и потом импортируете их, например, в Blender. Лучше всего делать это по отдельности, особенно если модели повторяются несколько раз в разных местах. Они пригодятся как эталон по масштабу/пропорциям.

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

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

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

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

И Godot в это удивительно хорошо вписывается.

>>2604

>уровни в тренчбруме или блендере это


Тренчбрум не трогал, но с блендером всё нормально.

>но с геометрией сложнее, чем три куба.


Прототип уровня всегда редуцируется до кубов...

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


Может, ты слишком высокое число подразделений выбираешь? Или делаешь булевы операции, которых возможно было избежать? В любом случае, если ты понимаешь, как работают булевы операции в 3D, ты сможешь использовать CSG для сложных сцен. Для прототипа уровня (грейбокса) этого достаточно.

Простой пример, как избежать лишних тормозов:

>Scene: Node3D # это корень сцены, обычная нода


>_ Floor: CSGBox # это глобальный пол сцены


>_ Walls: Node3D # просто группа для удобства


>_ _ Wall1: CSGBox # уникальная стена


>_ _ Wall2: CSGBox # отдельная уникальная стена


>_ _ _ Doorway: CSGBox # дырка прохода в стене


>_ _ _ Door: Node3D # вложенная сцена двери


>_ WeaponBox: Area3D # вложенная сцена


>_ JumpPad: Area3D # вложенная сцена


Так у тебя разные коробки не будут "склеиваться".

>>2608

>конвертируй csg в меши перед запуском


>>2611

>конверчу в обычные меши


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

>>2617
У меня есть несколько замечаний по скриншоту.

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

2. Глобальные события - тебе действительно так необходимо, например, глобальное "TO_PAUSE"? Ты можешь просто отобразить меню паузы, которое автоматически остановит всё то, что должно быть остановлено во время паузы. Никаким игровым объектам не нужно ждать/знать про паузу. То же касается всех остальных событий на скриншоте.

3. Конечный автомат меню с помощью стороннего аддона - зачем он тебе? Эти состояния игры и меню не настолько сложны, чтоб тебе нужны были все эти лишние телодвижения, ноды конечного автомата. Встроенный в AnimationTree конечный автомат тут справился бы не хуже, но любой конечный автомат в конкретной ситуации только усложняет работу. Ты реализовал решение отсутствующей проблемы. Не забывай, что ты можешь делать просто:

>signal exit_to_main_menu()


>exit_to_main_menu.emit()


И подключить всё через вкладку Node -> Signals, которая находится справа от Inspector. Или код:

>exit_to_main_menu.connect(_on_exit_to_main_menu)


Это главный механизм работы Godot и не нужно изобретать велосипеды на его замену. Соглашусь только, что имя "Signal" вместо "Event" запутывает.

Метод bind() вызывать без аргументов не нужно. Он необходим, когда тебе нужно забиндить какие-то дополнительные аргументы, которых нет в сигнале.

4. Вьюпорт - для чего он там? Делал пиксель-арт с UI в высоком разрешении? Если нет, то он избыточен. Корневой вьюпорт имеет все те же настройки и 2D рендерится нормально без лишних вьюпортов.

5. Менюшки без CanvasLayer - в Godot лучше каждое отдельное меню помещать в свой CanvasLayer или, как минимум, весь UI - это CanvasLayer. Тогда он не будет зависеть от Camera2D и его можно будет легче сортировать, не меняя порядка нод в дереве сцены.

В общем и целом складывается впечатление, что ты пытаешься натянуть пайплайн из Unreal на Godot, что приводит к таким костылям и сложностям. Тебе необходимо сначала разобраться в инструменте, а потом только решать, нужны ли все эти костыли. И в частности, простую 2D игрушку в Godot можно и нужно делать снизу вверх, а не с каких-то меню.

Алсо, тебе стоило сразу начать заниматься 3D. Вот я изначально вкатился в 3D и 2D игнорировал. Всё в порядке, особых проблем нет. Да, это не какой-то дорогущий движок, где всё сделано за тебя, однако необходимые базовые инструменты вполне хороши и даже позволяют многое подстраивать под себя.
165 982890
Мини-план по левел-дизайну для соло инди 3D игр.

1. КОНЦЕПТ.

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

1.2. Набросать на бумаге или в 2D редакторе уровень в формате плана сверху или сбоку, как удобнее. Это позволяет быстрее прикинуть масштаб и пропорции, возможные развилки, углы, мосты и тому подобное. Придумайте условные обозначения и следуйте им, особенно когда у вас много одинаковых объектов. 2D набросок очень легко исправить и при этом он достаточно хорошо передаёт суть будущего уровня.

2. ГРЕЙБОКС (механический прототип).

2.1. Используйте CSG фигуры с натянутой сетчатой трипланарной текстурой для грубого наброска в 3D. Игнорируйте детали. Если вам нужна машина - вам достаточно растянуть один куб. Здание - куб. Любое заграждение - куб. Но иногда нужны цилиндры, как, например, для круглой площади, фонтана. Также игнорируйте мелкие отклонения в величинах, дрочь циферок сейчас ничего не даст, только замедлит. Однако, ориентируйтесь на сетку и обязательно сохраняйте повторяющиеся объекты как сцены.

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

3. ВАЙТБОКС (графический прототип).

3.1. Когда грейбокс доказал общий дизайн уровня, переходим к постепенной детализации моделей. Нет необходимости трогать 3D редактор, для многого хватит и CSG форм, но куда меньшего размера. Тут серые кубы и цилиндры начинают напоминать реальные объекты, пусть и без текстур. У машины появляются колёса, например, а у здания - окна.

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

4. ГРАФИКА.

4.1. Экспортируете вайтбокс-модели в GLTF и потом импортируете их, например, в Blender. Лучше всего делать это по отдельности, особенно если модели повторяются несколько раз в разных местах. Они пригодятся как эталон по масштабу/пропорциям.

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

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

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

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

И Godot в это удивительно хорошо вписывается.

>>2604

>уровни в тренчбруме или блендере это


Тренчбрум не трогал, но с блендером всё нормально.

>но с геометрией сложнее, чем три куба.


Прототип уровня всегда редуцируется до кубов...

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


Может, ты слишком высокое число подразделений выбираешь? Или делаешь булевы операции, которых возможно было избежать? В любом случае, если ты понимаешь, как работают булевы операции в 3D, ты сможешь использовать CSG для сложных сцен. Для прототипа уровня (грейбокса) этого достаточно.

Простой пример, как избежать лишних тормозов:

>Scene: Node3D # это корень сцены, обычная нода


>_ Floor: CSGBox # это глобальный пол сцены


>_ Walls: Node3D # просто группа для удобства


>_ _ Wall1: CSGBox # уникальная стена


>_ _ Wall2: CSGBox # отдельная уникальная стена


>_ _ _ Doorway: CSGBox # дырка прохода в стене


>_ _ _ Door: Node3D # вложенная сцена двери


>_ WeaponBox: Area3D # вложенная сцена


>_ JumpPad: Area3D # вложенная сцена


Так у тебя разные коробки не будут "склеиваться".

>>2608

>конвертируй csg в меши перед запуском


>>2611

>конверчу в обычные меши


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

>>2617
У меня есть несколько замечаний по скриншоту.

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

2. Глобальные события - тебе действительно так необходимо, например, глобальное "TO_PAUSE"? Ты можешь просто отобразить меню паузы, которое автоматически остановит всё то, что должно быть остановлено во время паузы. Никаким игровым объектам не нужно ждать/знать про паузу. То же касается всех остальных событий на скриншоте.

3. Конечный автомат меню с помощью стороннего аддона - зачем он тебе? Эти состояния игры и меню не настолько сложны, чтоб тебе нужны были все эти лишние телодвижения, ноды конечного автомата. Встроенный в AnimationTree конечный автомат тут справился бы не хуже, но любой конечный автомат в конкретной ситуации только усложняет работу. Ты реализовал решение отсутствующей проблемы. Не забывай, что ты можешь делать просто:

>signal exit_to_main_menu()


>exit_to_main_menu.emit()


И подключить всё через вкладку Node -> Signals, которая находится справа от Inspector. Или код:

>exit_to_main_menu.connect(_on_exit_to_main_menu)


Это главный механизм работы Godot и не нужно изобретать велосипеды на его замену. Соглашусь только, что имя "Signal" вместо "Event" запутывает.

Метод bind() вызывать без аргументов не нужно. Он необходим, когда тебе нужно забиндить какие-то дополнительные аргументы, которых нет в сигнале.

4. Вьюпорт - для чего он там? Делал пиксель-арт с UI в высоком разрешении? Если нет, то он избыточен. Корневой вьюпорт имеет все те же настройки и 2D рендерится нормально без лишних вьюпортов.

5. Менюшки без CanvasLayer - в Godot лучше каждое отдельное меню помещать в свой CanvasLayer или, как минимум, весь UI - это CanvasLayer. Тогда он не будет зависеть от Camera2D и его можно будет легче сортировать, не меняя порядка нод в дереве сцены.

В общем и целом складывается впечатление, что ты пытаешься натянуть пайплайн из Unreal на Godot, что приводит к таким костылям и сложностям. Тебе необходимо сначала разобраться в инструменте, а потом только решать, нужны ли все эти костыли. И в частности, простую 2D игрушку в Godot можно и нужно делать снизу вверх, а не с каких-то меню.

Алсо, тебе стоило сразу начать заниматься 3D. Вот я изначально вкатился в 3D и 2D игнорировал. Всё в порядке, особых проблем нет. Да, это не какой-то дорогущий движок, где всё сделано за тебя, однако необходимые базовые инструменты вполне хороши и даже позволяют многое подстраивать под себя.
166 982895
>>2890

>Однако, ориентируйтесь на сетку и обязательно сохраняйте повторяющиеся объекты как сцены.


Я хочу спросить, а разве базу уровня обычно не делают в каком Блендере, Тренчбруме, а не ебут кубы прямо на сцене в движке годота? Мне в свое время так сказали.
167 982907
>>2895
Я не он, но думаю что быстро ебануть пару гигакубов для теста базовых механик это быстрее, чем открывать блендер и заморачиваться на данном этапе
168 982910
>>2895
Это всё вкусовщина. В тренчбруме работают те, кто с тренчбрумом в годот пришёл.
169 982945
>>2895
В блендере у тебя редактор 3д, но нет геймплея. Но там удобно делать детальные модельки. Поэтому логично делать блокинг прототип в самом годоте, двигать платформы, стены, кубы, чтобы тестировать динамику геймплея, а потом уже заменять их на модельки из блендера.
Это явно итеративный процесс, потому что посмотрев, как выглядит результат, ты захочешь снова что-то подвигать.
170 982960
>>2895
Кубы для сцен в Godot специально для этого.

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

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

С уровнями в играх почти всё то же самое, только вместо откалывания кусочков снаружи ты чаще выдалбливаешь внутренности, делая ходы, дороги, туннели, комнаты, площади и т.п. Поэтому тут очень пригождаются булевы операции с фигурами:
https://ru.wikipedia.org/wiki/Конструктивная_сплошная_геометрия
Вместо точного моделирования горы с туннелем, ты можешь просто кинуть маленький куб на большой, растянуть маленький и дать ему "вычитание". Этого достаточно для базовой идеи "игроки идут через прямой туннель, потому что не могут обойти гору". Далее ты можешь кинуть NPC на выходе и будет "в конце которого игроков ожидает засада бандитов".

Конечно же, в Blender и других 3D редакторах есть булевы операции и они могут быть даже точнее, чем CSG-ноды Godot. Но как раз тут проявляется разница игрового уровня и рисунка/скульптуры: если рисунок можно просто оценить взглядом, игровой уровень проявляет свои преимущества и недостатки лишь в непосредственном игровом процессе. Визуально ты можешь сказать, что уровень красив, но на практике можешь обнаружить, что через туннель идти долго и скучно и засада в конце туннеля слишком очевидна. Получается, нужно как-то это переделать, например, сделать туннель изогнутым или разветвлённым.

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

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

Поэтому начинать нужно всегда с "кубов" и лучше заниматься этим как можно ближе к движку, на котором у тебя готовы основные механики. Игроки, пытаясь заняться геймдевом, сами до этого редко догадываются, т.к. видят лишь финальную графику.
170 982960
>>2895
Кубы для сцен в Godot специально для этого.

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

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

С уровнями в играх почти всё то же самое, только вместо откалывания кусочков снаружи ты чаще выдалбливаешь внутренности, делая ходы, дороги, туннели, комнаты, площади и т.п. Поэтому тут очень пригождаются булевы операции с фигурами:
https://ru.wikipedia.org/wiki/Конструктивная_сплошная_геометрия
Вместо точного моделирования горы с туннелем, ты можешь просто кинуть маленький куб на большой, растянуть маленький и дать ему "вычитание". Этого достаточно для базовой идеи "игроки идут через прямой туннель, потому что не могут обойти гору". Далее ты можешь кинуть NPC на выходе и будет "в конце которого игроков ожидает засада бандитов".

Конечно же, в Blender и других 3D редакторах есть булевы операции и они могут быть даже точнее, чем CSG-ноды Godot. Но как раз тут проявляется разница игрового уровня и рисунка/скульптуры: если рисунок можно просто оценить взглядом, игровой уровень проявляет свои преимущества и недостатки лишь в непосредственном игровом процессе. Визуально ты можешь сказать, что уровень красив, но на практике можешь обнаружить, что через туннель идти долго и скучно и засада в конце туннеля слишком очевидна. Получается, нужно как-то это переделать, например, сделать туннель изогнутым или разветвлённым.

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

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

Поэтому начинать нужно всегда с "кубов" и лучше заниматься этим как можно ближе к движку, на котором у тебя готовы основные механики. Игроки, пытаясь заняться геймдевом, сами до этого редко догадываются, т.к. видят лишь финальную графику.
171 982998
>>2823
Двадэ?
У меня вот так. Поскольку камера всего одна, то она находится отдельной нодой прям в корне дерева. Она умная и умеет следить за определённой нодой в физикс_процессе; через сигналы ей можно указать эту ноду. Таким образом можно, например, временно перефокусироваться с персонажа на какую-нибудь точку интереса. Кроме того, такой подход избавляет от проблем резкой (и непредсказуемой) смены кадра, когда надо переключиться на другой объект.
Контроллер игрока и AI-контроллер таки да, вешаются внутрь персонажа. Это, помимо прочего, позволяет легко протестить врага ещё до написания мозгов для него. А ещё рождает неожиданные механики, я так целый режим сделал. А ещё можно через сигналы давать контроллеру обратную связь: изменения ХП и всяких других параметров.
IMG20241107034231.jpg293 Кб, 1080x2018
172 983007
Лол, седня узнал что некрофилы портировали годот 2 на псп
https://github.com/technicaljicama/godot-psp

А щас они пилят fusion engine на основе годота 1 для шиндовс 95 и симбиан

А ваши юнити так могут???
173 983012
>>3007
Самое занятное когда школьники, не имеющие ни ноута ни компа, реально делают игры на годоте запуская редактор на своем телефоне, на крошечном тачскрине. Некоторые еще 3д умудряются впихивать, делая модели тоже на телефоне.
image.png1 Мб, 3308x1436
174 983014
Вообще это все конечно оказалось несколько сложнее, у меня в голове концепция выглядела очень ясно и просто - что может быть проще чем морской бой ну и плюс каждая клеточка корабля это не просто клеточка, а модуль со своей способностью. И также мне казалось что будучи мега-наносеком айтишным продуктовым дизайнером я легко левой ногой нарисую классный интерфейс, который легко адаптирую и под десктоп и под мобилу, но в итоге я колбасился с ним так долго как ни с чем наверное не колбасился. Просто посмотрите какое количество итераций одного-единственного окошка мне потребовалось, например, и тут на картинке где-то 20% от их общего количества, которое я пробовал.

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

Также иногда возникает ощущение что возможно я переусложняю механики и это будет не так интересно как мне хочется, но это будет понятно по фидбеку игроков и если что буду упрощать, урезать системы комманд поинтов, кулдауна и т.д.
175 983015
>>3014
блин не тот тред :/
176 983018
>>3014
Кстати, может кто-то из годот-господ хочет поработать?

https://2ch.hk/gd/res/915340.html (М)
177 983043
>>2998

>Двадэ?


3D. Но я уже думаю забить, ибо потребуется сделать стопицот разных персонажей, у всех свои анимации. Главное, зачем? Кто будет в это играть кроме меня? Замотивируйте меня... Хочется что-нибудь делать.

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


Хммм... Мне просто не нравится, что придётся его перекидывать по дереву. Кажется, что "экономия на спичках", но стоит учитывать остальные события (одни снаряды способны съесть всё время кадра).

Кстати, стоило мне заняться этой идеей, как вдруг наткнулся на уже существующую игру от "наших":
https://store.steampowered.com/app/2051620/
Наверняка и другие подобные игры были. Но читать негативные отзывы про "тупых ботов, сливающихся противнику раньше тебя" очень обидно, как будто ты читаешь про свою собственную игру... В то же время понимаю, что "тупые боты" могут быть ради баланса.
178 983124
>>3043

>Мне просто не нравится, что придётся его перекидывать по дереву.


Альтернативный вариант: контроллер висит в корне дерева и общается с персонажем посредством сигналов. Может, так даже лучше, можно отслеживать вообще все пользовательские инпуты, а также события типа сворачивания окна.
Перекидывать это не ресурсоёмко, но бывает геморно.
179 983149
>>3043

>сделать стопицот разных персонажей, у всех свои анимации


Может с чего попроще начнешь? А то ты в соло уровень ААА игры собрался брать
180 983227
>>3124

>общается с персонажем посредством сигналов


Что? Смысол сигналов знаешь?

Код персонажа:

>крути_педали(куда?)


>прыгай_реще()


>стреляй_уже(куда?)


Код КОНТРОЛЛЕРА персонажа:

>func _physics_process():


>_ пёс.крути_педали(Input.чётамнажато())


>_ if Input.прыгнул: пёс.прыгай_реще()


Знать состояние персонажа контроллеру не нужно.
Вот ИИ-мозгам важно знать, что там с персонажем.

>>3149

>уровень ААА игры собрался брать


Делать всё из лоуполек - это не ААА.
Но я уже совсем мотивацию растерял...
181 983279
>>3227

>мотивация


Я сделал упор на выпуск максимально раннего и сырого билда, аля ранний доступ, чтобы получать мотивацию от игроков, 1 хорошего отзыва уже хватит чтобы забустить мотивацию делать дальше
но 1 плохой похоронит проект
182 983281
>>3279

>но 1 плохой похоронит проект


Ну фсе, пизда тебе. Хотя не, лень
game-editor-debug.mp42,1 Мб, mp4,
1280x720, 0:21
183 983318
Вы спите, а там 4.4 dev 4 вышел с интерактивным внутриигорвым редактором и убершейдерами.
184 983332
>>3318

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


А зачем он нужен?
185 983333
>>3318
Ну наконец-то. Долго этого ждали, сложа руки.
Теперь можем не делать игры в стиле юнити.
186 983337
>>3318

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


Это такая шутка?
187 983340
>>3332
Я хз, сходи посмотри.

>>3337
Пчел, там кликают на step, а не на play.
188 983341
>>3337
Где ты там пропуки нашёл? Там автор видео быстро и много раз нажимает кнопку "шаг вперёд", которая делает ровно то, что и должна - один шаг вперёд и остановку. Если бы ты делал игры, знал бы, что это.

В юнити тоже есть такая функция.
189 983342
>>3318
это все еще игра в другом процессе, и близко не play mode. просто добавили паузу и возможность клика по игровым объектам в игре. грязный хак.
190 983343
>>3342

>игра в другом процессе


Так и должно быть. Как ты будешь тестировать игру, если у тебя "play mode" отличается от того, что будет в реальной игре? Т.е. тебе нужно запускать игру как реальную игру, если ты хочешь что-то тестировать.

>грязный хак


Ты знаешь, что Unity вынуждена делать под капотом, чтобы вернуть объекты в чистое состояние и чем это потенциально грозит? Не знаешь, если не заплатил миллионы за доступ к исходникам юнити.

Здесь ты получаешь 100% чистое состояние игры в изолированном процессе, а не какую-то имитацию.
191 983347
>>3343
фишка play mode в том, что пы просто запускаешь цикл обновления внутри редактора, и редактор, сцена и т.д. просто обновляется последними данными в реальном времени.
гонять json по сокетам (или как они там показывают состояние в редакторе) годот умел и до этого.
192 983351
>>3347
то есть, к примеру, я не вижу обновления на сцене в реальном времени, со всеми гизмо и т.д.
это не так эффективно для отладки как play mode.
193 983357
>>3347
Такое и не нужно. Это ломает состояние объектов в редакторе, ведет к утечкам и крашам и порче сцен.
194 983360
>>3347

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


Для этого в Godot используются @tool-скрипты:
https://docs.godotengine.org/en/stable/tutorials/plugins/running_code_in_the_editor.html

Если не ошибаюсь (я не проверял), в редакторе тебе может быть недоступна симуляция физики и Input, но всё остальное можешь менять как пожелаешь.

Например, если в игре у тебя поворот пушки зависит от параметров, таких как направление и дистанция выстрела, ты можешь быстро проверить это, вообще не запуская игру, просто меняя @export-параметр на панели инспектора своего @tool-скрипта. Игры нет, однако, твоя моделька пушки работает как в игре.

>>3357

>Это ломает состояние объектов в редакторе


Ну, ты ведь используешь @tool иногда. В Unity все привыкли к огромному костылю под капотом, что автоматически пытается вернуть всё в исходное состояние. Godot предоставляет тебе куда больше свободы и гибкости в этом плане, как я понимаю.
195 983362
>>3357
сцена просто сериаилузется в память, а в конце загружается, как если бы ты загрузил сцену из файла. это ни к чему не ведет.

это самая полезная функция play mode. я когда делал игры на unity, у меня все время были открыты окно сцены и игры рядом.
196 983363
>>3318
Нахуй идите со своими обновлениями. Они чет изменят, а мне потом код переписывать
197 983365
>>3362

>как если бы ты загрузил сцену из файла.


>это ни к чему не ведет.


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

В Godot, если ты изменяешь сцену, то даже если игра запущена, твои изменения не отменяются. Наоборот, чтобы изменения отразились В ИГРЕ, Godot требует сохранить их на диск (Ctrl+S). А если перезапустить процесс игры из редактора, всё сохраняется на диск.

Т.е. Godot интуитивно понятнее и удобнее.
198 983369
>>3362

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


В этом и проблема. Сериализуешь какой-то объект редактора или ссылку, а при десериализации его там нет, потому что по другому загрузилось.

>у меня все время были открыты окно сцены и игры рядом.


Ну так это и есть нормальное использование годота. Редактор и полноценно запущенная игра в своем процессе.
199 983371
>>3365

>это стало последней каплей



Какие мы нежные, так и видится зумерский поридж, не нюхавший в жизни реальной дичи. А жизнь, в том числе разработка и всякие айтишные приколюхи, она из такой дичи состоит, что иногда просто хуеешь с логики некоторых разработчиков и их кусков кода.
200 983380
>>3371

>не нюхавший в жизни реальной дичи


Почему движок обязан "вонять реальной дичью"?
Думаешь, на софте без багов UI/UX нельзя работать?
201 983388
>>1386 (OP)

В godot можно подключать C# dll ?

Актуально ли использовать solid принципы и шаблоны проектирования?
202 983389
>>3388
Да
Да
203 983391
>>3388
Всё можно, но ты сначала базовый туториал пройди.
https://docs.godotengine.org/en/stable/about/introduction.html
https://docs.godotengine.org/en/stable/getting_started/introduction/index.html
И дальше по навигации в меню слева.
204 983399
>>3391

> но ты сначала базовый туториал пройди


Да это ему не нужно. Ты разве не видишь, что это просто левый чел прискакал чтобы собрать статистику?
205 983401
>>3399

>просто левый чел прискакал


Может, это новичок? Оценивает возможности.

>чтобы собрать статистику


Статистику чего? Активных постеров в треде?
206 983407
>>3365
да ты просто не разобрался как работает play mode. это реально полезная фича, которая ускоряет разработку 10x.
запущенную сцену нужно менять, чтобы видеть изменения в реальном времени (например, перетащить префаб в запущенную сцену, переместить объекты во время игры), плюс сама запущенная сцена может создавать и удавать новые объекты, загружать другие сцены.
207 983408
если сохранить сцену во время игры, ты просто сохранишь какое-то игровое состояние в процессе игры. в этом нет смысла.
208 983411
>>3408
Чего несешь?
209 983412
>>3407
Да ты просто не разобрался как годот работает. Все это делается в редакторе, и тут же изменения происходят в окне игры. А вообще, количество жанров игр где это нужно, крайне мало, так что это чисто фича для нубасов и окрщиков. Только подумай - если ты подвинул что-то во время игры, это равно читу. Теперь то, как ты подошел к этому месту, как враги подошли, как они стреляют, какие теперь тайминги, оказывается недостоверной информацией - а ты вместо переигрывания уровня думаешь что он у тебя работает как прежде. И двигая так по чуть чуть ты не ускоряешь, а замедляешь разработку. Ускорить в х20 раз бы тебе помогло обдумать принцип, как расставлять, а не вручную постоянно дергать.
210 983416
>>3343

> Ты знаешь, что Unity вынуждена делать под капотом, чтобы вернуть объекты в чистое состояние и чем это потенциально грозит? Не знаешь, если не заплатил миллионы за доступ к исходникам юнити.


Что?
211 983423
>>3412
когда ты запускаешь игру, ты видишь только то, что рендерится камерой, и можешь делать то, что написал в своих скриптах. если тебе нужны какие-то инструменты для тестов, отладки, их нужно делать самому.
в старых играх часто была консоль разработчика, в ней можно было прописать читы, команды для спавна разных предметов, переключение уровней.
play mode это такая консоль разработчика с супер способностями, потому что позволяет делать все, что делаешь во время разработки, и во время игры тоже.
если надо бессмертие, просто выбираешь объект игрока и включаешь чекбокс активирующий бессмертие. если надо какой-то предмет, просто перетаскиваешь на сцену. можно легко рисовать линии, примитивы прямо на сцене, выводить текст. например, можно рисовать траекторию пуль на сцене.
люди не понимают какое МОГУЩЕСТВО это тебе дает, как разработчику. в теме на реддите какой-то дурачок даже жалуется на эту фичу в юнити.
212 983424
>>3423
Узнай уже про @tool script.
213 983425
>>3424
Это вообще другое, это чтобы фишки писать для редактора, ты предлагаешь по сути на тул скрипте написать запуск сцены с нуля.
214 983426
Создал обычный 2D проект с одной сценой, одним спрайтом и одним скриптом для управления.

Собрал в .exe, папка с исполняемым файлом весит 150 МБ. Почему так дохуя? Я перешел на Godot сегодня, потому что думал, что здесь объем будет меньше. Кто будет вообще качать играть в говно 2д игру которая в итоге буде занимать место как гта 5???
image.png20 Кб, 306x315
215 983428
>>3426

>150 МБ


>как гта 5

216 983430
>>3428
Это одна сцена и один спрайт. 2D-игра не должна весить 150 МБ.
Видимо, у тебя с иронией не очень.
image.png94 Кб, 657x786
217 983432
>>3430
Похоже, он подтягивает весь .NET за собой.
Но все равно, сам .exe тоже большой — 80 МБ.
218 983433
>>3425
Узнай уже про вкладку Remote в редакторе.
219 983434
>>3432
В 2024 это не большой.
220 983435
>>3432

Если с gdscript ом то меньше будет или нет?
221 983437
>>3435
Меньше.
222 983438
Не делаю игру потому что итч упал и лежит. Вот и не делаю.
image.png5 Кб, 363x94
223 983439
>>3426
3-я версия, GDScript, собранная без C# и 3D. Конечно 22 это не 6, как SDL3, но так и фич больше.
image.png20 Кб, 458x285
224 983441
>>3437
Всё равно много
225 983442
>>3441
Это занимает полрубля от стоимость SSD, чел... Если у тебя клиент не может позволить себе полрубля на железо, он и игру у тебя не купит
226 983447
>>3442

Может, и так, но я в первую очередь пишу игру для себя так, чтобы в мне нравилось.
227 983448
>>3441
Сделай лучше - сделай кастомизированный билд с выключенными фичами.

>>3447

>я пишу игру


Кого ты наебать пытаешься?
228 983449
>>3447>>3448

И где гарантия, что когда будет >= 100 сцен, размер исполняемого файла не вырастет на пару гигабайт? Оно и не странно, так как это не 2D, а 3D с видом сбоку или сверху. А что там еще есть по движкам, чисто для 2D и с нормальным языком программирования?
229 983450
>>3449
Лучше ты мне дай ГАРАНТИЮ, что мы тут на тебя не впустую время тратим, что ты не кот который яйца лижет, а человек который реально игру напишет.
image.png72 Кб, 709x752
230 983451
>>3449
Просто пиздец какой-то
231 983453
>>3449
Размер исполняемого файла в годоте не меняется. Меняется твой пак контента.
232 983454
>>3450

КТО УДАЛИЛ?

ВЫ ЧЁ ЕБАНУНТЫЕ
233 983455
>>3454
А не сори баг был
234 983456
>>3450

да
image.png65 Кб, 775x612
235 983457
>>3451
Я что так много прошу, Мне только нужна колизия, анимация, и небольшой размер исполняемого фала кросплатворменый. А потом удивляються почему на ютубе столько людей сами пишут игровые движки.
236 983458
Я вот думал, думал, почему я выбираю годот для 2д вместо самописного движка. И пришел к выводу, что это язык шейдеров. А если прикрутить кроссплатформенно шейдеры к SDL, то там уже получится в районе 10 Мб. А значит уже и экономии то особой нет.
237 983459
>>3456
Не убедил. Твоя гарантия обнулена.
238 983465
>>3458

Шейдеры для 2д игры? Но с другой стороны писать на SDL, ничего плохого не имею, но на чистых C писать даже с нейронками сейчас очень больно.

>>3459
ок
239 983468
>>3457

>размер исполняемого фала кросплатворменый


Тогда defold.
240 983471
>>3458
Ты для какой платформы делаешь игру, для микроконтроллеров?

SSD на пол-терабайта стоит, как выпить кофе с пирожным в ресторане.

Самый нищебродский телефон продаётся с 64 ГБ на борту. Не мегабайт, а в тысячу раз больше. Ты не в 1996 году, проснись.
241 983472
>>3468

Я жертва продуктов jetbrains, я не могу писать на языках которые не входят в их семейство.
242 983473
>>3471
Да успокояся блять! Больше ничего не остаётся кроме go dot нормального. Наверно на нём и буду продолжать.
243 983474
>>3473
Я вообще не фанат годота, просто мимо шёл и увидел шизика, решил вернуть в реальность. У тебя ещё много заблуждений из 90-ых осталось, наверное.
244 983475
>>3471
А зачем ты мне тогда отвечаешь? Я то пишу и для микроконтроллеров.
245 983476
>>3468
Ну вообше дефолт неплохо выглядит на стиме. Я может затвра даже попробую. Тем болие что C++ есть вместо lua
246 983477
>>3475
Ясно, ну не буду мешать.
image.png21 Кб, 714x155
247 983478
>>3476
Нет нельзя, хуйня полная!
248 983479
>>3465
Ну делать без шейдеров это боль. Самое базовое - например перекрашивать что-то, а еще веселее если анимировать параметры. Дальше, эффекты вроде заморозки, водного искажения, пламени, молний, облачности, растворения. Обводка. Постобработка, глитчи, виньетки, хрома аберрация, блюр, CRT. Ну типа это все можно сделать ручками по пикселям или заготовленными картинками, но шейдером же удобней.
249 983480
>>3423

>часто была консоль разработчика


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

>если надо бессмертие, просто выбираешь объект игрока и включаешь чекбокс активирующий бессмертие.


ОТКРЫЛ PLAYER.TSCN
НАЖАЛ ЧЕКБОКС БЕССМЕРТИЯ
НАЖАЛ CTRL+S
ИГРА СЧИТАЛА НОВЫЕ ПАРАМЕТРЫ
ТЫ БЕССМЕРТЕН

Или используй вкладку Remote.

>если надо какой-то предмет, просто перетаскиваешь на сцену.


ОТКРЫЛ WORLD_MAP.TSCN
НАЖАЛ ПЕРЕТАЩИЛ НА СЦЕНУ ITEM.TSCN
НАЖАЛ CTRL+S
ИГРА СЧИТАЛА НОВЫЕ ПАРАМЕТРЫ
У ТЕБЯ В ИГРЕ ПОЯВИЛСЯ ITEM.TSCN

Или добавляй предмет в инвентарь игрока.

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


Это делается в скриптах. Вкл/выкл через @export.
3D: https://docs.godotengine.org/en/stable/tutorials/3d/procedural_geometry/immediatemesh.html
2D: https://docs.godotengine.org/en/stable/tutorials/2d/custom_drawing_in_2d.html
250 983484
>>3479
в шейдерах нет души
251 983489
>>3484
Ее в компьютере вообще нет. Это набор транзисторов.
252 983492
>>3426

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


Так ты ж ничего не сделал. Даже 2D проект, если ты делаешь полноценную игру в хорошем разрешении, в конечном итоге может занимать гигабайты. Даже в пиксельартовом стиле. Пример: Starbound ≈3.2 ГБ, используя какой-то велосипед на C++ и SDL2.

>весит 150 МБ


https://docs.godotengine.org/en/stable/contributing/development/compiling/optimizing_for_size.html
Вкратце: можно выключить очень многое, что ты не собираешься использовать. Однако, до тех пор, пока ты не опубликуешь игру, иметь "всё в одном" удобно.

Плюс сжатие файлов NTFS сжимает EXE до ≈50%.

>>3447

>пишу игру для себя


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

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

>>3449

>когда будет >= 100 сцен, размер исполняемого файла не вырастет на пару гигабайт?


Все твои данные хранятся в PCK. Во время экспорта Godot не компилирует свой EXE, а только изменяет мета-данные внутри копии "шаблона экспорта", как, например, имя твоей компании, версию билда и т.п.

PCK, в свою очередь, подобен ZIP, но это кастомный формат Godot. Также можно экспортировать в ZIP и упаковать все данные PCK внутрь EXE как ресурс.

>>3457

>небольшой размер исполняемого


Конкретно зачем? На микроконтроллер прошивать?

Если тебе нужен движок для микроконтроллера, то посмотри в сторону инструментов, подходящих для выбранного микроконтроллера. Типа, что там для Arduino подходит или какой у тебя там контроллер.

>>3484

>нет души


>>3489

>Ее в компьютере


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

Что касается шейдеров - полезный инструмент, но разрабатывать сложно, особенно новичку. Лучше сфокусироваться на игровых механиках, отложив спецэффекты на потом, когда игра сформируется. Интересная игра будет интересна и без шейдеров.
252 983492
>>3426

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


Так ты ж ничего не сделал. Даже 2D проект, если ты делаешь полноценную игру в хорошем разрешении, в конечном итоге может занимать гигабайты. Даже в пиксельартовом стиле. Пример: Starbound ≈3.2 ГБ, используя какой-то велосипед на C++ и SDL2.

>весит 150 МБ


https://docs.godotengine.org/en/stable/contributing/development/compiling/optimizing_for_size.html
Вкратце: можно выключить очень многое, что ты не собираешься использовать. Однако, до тех пор, пока ты не опубликуешь игру, иметь "всё в одном" удобно.

Плюс сжатие файлов NTFS сжимает EXE до ≈50%.

>>3447

>пишу игру для себя


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

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

>>3449

>когда будет >= 100 сцен, размер исполняемого файла не вырастет на пару гигабайт?


Все твои данные хранятся в PCK. Во время экспорта Godot не компилирует свой EXE, а только изменяет мета-данные внутри копии "шаблона экспорта", как, например, имя твоей компании, версию билда и т.п.

PCK, в свою очередь, подобен ZIP, но это кастомный формат Godot. Также можно экспортировать в ZIP и упаковать все данные PCK внутрь EXE как ресурс.

>>3457

>небольшой размер исполняемого


Конкретно зачем? На микроконтроллер прошивать?

Если тебе нужен движок для микроконтроллера, то посмотри в сторону инструментов, подходящих для выбранного микроконтроллера. Типа, что там для Arduino подходит или какой у тебя там контроллер.

>>3484

>нет души


>>3489

>Ее в компьютере


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

Что касается шейдеров - полезный инструмент, но разрабатывать сложно, особенно новичку. Лучше сфокусироваться на игровых механиках, отложив спецэффекты на потом, когда игра сформируется. Интересная игра будет интересна и без шейдеров.
253 983504
>>3465
Годот конпелирует glsl шейдеры glslang'ом
254 983516
>>3492

>Вот древние люди просекли эту фишку и понеслось...


они были охотниками. их задачей было следить за поведением животных и находить уязвимости. сначала чтобы кушать, потом чтобы полностью подчинить одомашнив. так красиво все провернули, что попутно устроили шестое массовое вымирание биологических видов на планете. это относится и к собственному виду. одомашнивание чтобы утянуть из под носа ресурсы, и самих превратить в ресурс.
255 983538
Сап, годач.
Продолжаю пилить свой проектик. Столкнулся с проблемой при использовании Line2D.
Пик 1 - скрин из игры, где корректно прорисовывается путь, точки не искажаются и следуют за гексами
Пик 2 (мой) - если присмотреться, то видно что точки искажаются при изменении угла. Как такое фиксить?

Или такое исправляется только шейдером?
sample.gif7 Мб, 600x330
256 983539
>>3538
В смысле это текстурированная ломанная линия? Хз, попробуй рисовать только отрезки по одному, а не всю линию целиком. Вообще имхо тут проще как то рисовать "спрайты вдоль линии", а не линию. Шейдером, наверное, тоже можно. Годот 4?
Был еще ассет SmartShape2D, может это оверкилл, но там вроде равномерно все текстурируется.
257 983542
>>3538
Алсо, если у тебя прям гексы и только гексы и это их ребро, то вообще можно нарисовать несколько тайлов границы и все, никакими лайнами не пользоваться.
Ну типа как у тебя железная дорога сделана.
bandicam 2024-11-10 19-35-53-852.mp411,7 Мб, mp4,
1592x924, 0:12
258 983543
>>3539

>В смысле это текстурированная ломанная линия?


Ну вроде как да. Пытаюсь добиться результата, как на 1 пике

>Вообще имхо тут проще как то рисовать "спрайты вдоль линии", а не линию.


Идея, попробую завтра

>Годот 4?


Он самый

>>3542
Не, это не ребро. Как и жд пути. Они через центр гексов идут

На вебмке результат, которого хочу добиться
259 983550
У нас есть координаты (x, y, w, h). Viewport создается автоматически, но не в центре, а с координатами (0, 0, 100, 100), вместо ожидаемых (-50, -50, 100, 100).

При этом новые узлы имеют, например, координаты (-10, -10, 20, 20).

Как сделать так, чтобы Viewport был в центре?
260 983552
>>3550
Синяя рамка
261 983567
>>3543
Имхо это сделано вот такими тайлами (можно сделать второй слой тайлов, с прозрачностью, с нужными наборами пар точек)
262 983568
>>3550
Покажи скрин редактора, не понял.
image.png583 Кб, 1668x940
263 983570
>>3568
Синяя рамка, которая якобы считается игровой зоной

Сиреневая камера
264 983575
>>3570
Синяя рамка - это разрешение экрана проекта, которое в Project settings - window задается.
Так называемое design resolution, которое потом может отскалироваться.
Поскольку это экран, то и координаты в нем от 0 до ширины.

Насколько я знаю, опции перенести этот вьюпорт нет. Видимо это режим для новичков, когда игра одноэкранная или какой то пиксельный платформер, когда можно считать от левого угла без проблем. Тебе проще пользоваться только камерой, а синюю рамочку отключить в настройках гизмо.
265 983577
>>3575
>>3575
Этот Viewport и его размеры легко получить через наследуемый метод GetViewport().GetVisibleRect().Size.X

В одном из гайдов по случайной генерации предметов, автор использовал его координаты и размер, вместо того что бы через хнепонятно какую жопу искать камеру или спрайт поля, который может меняться, также как и камера, и без добавления поиска по коллекциям.
266 983581
>>3577
А я вот думаю, что все таки нет.
Этот тулскрипт отказывается менять вьюпорт и рамка остается старой.
Поэтому я считаю, что синяя рамка показывает разрешение окна из проекта, а уже главный вьюпорт получает свой размер как производное от этого. А не сам вьюпорт. Это мое пользовательское предположение, в исходники я не заглядывал.
DjZsaPlVsAAzGd.jpg94 Кб, 1200x682
267 983588
Что практичнее: ресайзить один колиженшейп для разных атак в комбухе или хуярить по отдельному колижену для каждой?
268 983607
>>3588
Я б отдельный делал. А ресайз использовал для всяких поверапов, прокачек и прочих модификаторов дальности.
image.png19 Кб, 706x108
269 983613
>>3588
А хер его знает. Это один из самых мистических вопросов.
По п.1 - ресайзить запрещено кстати, можно только менять экстенты/радиусы самих шейпов.
Вообще слышал мнение, что для такого лучше не пользоваться физикой, а делать свои проверки в визуальном, а не физическом тике.
Я бы лично всегда держал все коллижны и отключал ненужные. Но это стопудово подойдет только простым играм, а не тем, где сотни юнитов.
270 983659
>>3581
Если не ошибаюсь, тебе нужно 1 фрейм сделать паузу перед исполнением
Прям в реди в самом старте напиши там этот код что то вроде yield(get_tree(), "idle_frame")
Могу ошибаться, но там эта хуйня как-то ебануто работает
271 983660
>>3613
Тоже слышал что нельзя ресайзить, особенно нон-юниформ ресайз вреден. Но хуй знает, ресайжу как угодно половину своей физики - полет нормальной. С другой стороны, у меня примитивные капсулы/кубы.
272 983664

>leftTop


>rightBot


Попроще можно как-то эти координаты получить? А не так как я:

var viewport = GetViewport();
var camera2D = viewport.GetCamera2D();
var visibleRect = GetViewport().GetVisibleRect();

var leftTop = new Vector2(
camera2D.GlobalPosition.X - visibleRect.Size.X/2,
camera2D.GlobalPosition.Y - visibleRect.Size.Y/2
);

var rightBot = new Vector2(
camera2D.GlobalPosition.X + visibleRect.Size.X/2,
camera2D.GlobalPosition.Y + visibleRect.Size.Y/2
);
273 983666
>>3664
Зачем тебе эти координаты? Не стоит прибивать свой геймплей к разрешению экрана игрока.

>>3550

>чтобы Viewport был в центре


https://docs.godotengine.org/en/stable/classes/class_camera2d.html#enum-camera2d-anchormode

>ANCHOR_MODE_FIXED_TOP_LEFT


Либо вообще не юзать Camera2D.

>>3575

>Видимо это режим для новичков


1. Рамка вьюпорта имеет значение для UI (Control). Дизайнишь UI ты в рамках стандартного Viewport.
2. Ты не обязан использовать Camera2D. Это только вспомогательная нода для упрощения некоторых манипуляций с "камерой" в 2D. Обязательна только Camera3D, поскольку без неё рендерится только 2D.

>>3588

>для разных атак в комбухе


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

>>3613

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


Имхо, файтингам как раз нужны фиксированные обновления, чтобы игрок с 240 ФПС не мог играть быстрее против тех игроков, у кого только 60 ФПС.

И в целом это касается любого жанра. Не стоит привязывать управление к частоте кадров...
image.png76 Кб, 722x466
274 983667
>>3538

>проблемой при использовании Line2D


Line2D тут всё правильно отображает.

Если тебе нужны точки строго по гексагонам, то и отображай точки пути строго по гексагонам. Зачем излишне усложнять, если движение привязано к гексагонам? Лучше добавь обводку гексагонам - так игроки будут сразу знать, куда и как они могут идти. Гексагоны без обводки слишком сливаются.
275 983668
>>3666

>Зачем тебе эти координаты? Не стоит прибивать свой геймплей к разрешению экрана игрока.


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

>чтобы Viewport был в центре


>ANCHOR_MODE_FIXED_TOP_LEFT


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

>Либо вообще не юзать Camera2D.


Мне только в 2д надо.

Блять это же тривиальная задача, неужели все кто делает игры так углы вычисляют.
276 983669
>>3668
Похуй на ООП! наверно просто скрипт повешу на камеру и сделаю паблик переменные. В гейм деве как я понял хорошие практики нихуя не работают
277 983670
>>3668

>это не камера на него скрипты не повесишь


Ээээ, вроде можно и на root viewport вешать...

>спавнится по краям того что видит игрок


Конечно. Так в чём проблема?

>тривиальная задача


Конечно. Ты пробовал встроенное API?
https://docs.godotengine.org/en/stable/classes/class_camera2d.html#class-camera2d-method-get-screen-center-position

Просто непонятно, чего ты хочешь-то...

>>3669
Без внятного ТЗ - результат ХЗ. При чём тут ООП?

Должен предупредить, есть ещё СЛОИ, у которых может быть разная скорость относительно экрана, если ты хочешь параллакс на уровне. А у камеры дополнительно влияет на смещение zoom...
278 983671
>>3664
var p = camera2D.GlobalPosition;
var half = visibleRect.Size × 0.5f;
var leftTop = p - half;
var rightBot = p + half;
279 983672
>>3664
Вообще, почитай документацию внимательнее:
https://docs.godotengine.org/en/stable/classes/class_rect2.html#class-rect2-property-end
Там можно обойтись сложениями Vector2.

>>3671
Ты тоже почитай документацию...
280 983687
>>3667

>Line2D тут всё правильно отображает.


Он про растянутые/сплюснутые точки на нем.
281 983688
>>3664
Тебе разной документации накидали, но для начала тебе надо вот сюда заглянуть
https://docs.godotengine.org/en/stable/tutorials/rendering/multiple_resolutions.html
Например, что будет если твою игру запустить на 16:9, а что на квадратном мониторе? Получится разный геймплей, пототму что враг с края экрана летит разное время до центра.
282 983691
>>3667

>Лучше добавь обводку гексагонам - так игроки будут сразу знать, куда и как они могут идти. Гексагоны без обводки слишком сливаются



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

А та проблема, о которой ты говоришь как раз решается линией движения. Вот тут на вебмке показано >>3543
283 983692
>>3688
да пох

GetViewport().GetVisibleRect().Size

Меняется от размеров окна
(1152, 648)
(1152, 648)
(1152, 648)
(710, 648)

Главное что есть
GetCamera2D().GlobalPosition + Size/2
285 983728
>>3725
Это, в принципе, ко всему программированию относится.
Вот и думай головой.
komputer.png64 Кб, 900x506
286 983731
>>1386 (OP)
Кто-нибудь ИТТ уже использовал Kompute?
https://github.com/KomputeProject/kompute
Уже 4 года доступно, но ничего не слышно.
287 983732
СЕЙЧАС БУДЕТ ШИЗА!!

Заебала шизо нейронка и гайды в падло на youtube смотреть, помогите.

У меня было так

Player (CharacterBody2D)
├── Sprite2D
├── Camera2D
├── EnemySpawner
└── CollisionShape2D // хз зачем онм нен нужен был

Enemy (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D

Спросил у нейронки как детектить вхождение Enemy
Насоветовала хуеты ебаной, добавь Area2D и CollisionShape2D
Сразу не разобрался и перенес текуший CollisionShape2D в Area2D

код:
public override void _Ready()
{
GD.Print("PlayerArea2d OnReady");
BodyEntered += OnBodyEntered;
}
private void OnBodyEntered(Node2D body)
{
GD.Print(body.Name);
}

Мучался мучался, нихкя не работало. Потом случайно добавил еще один CollisionShape2D И оказалость что так правильно

Как в итоге оказалось что нужно было так

Player (CharacterBody2D)
├── Sprite2D
├── Camera2D
├── EnemySpawner
└── CollisionShape2D //Disabled
└───Area2D
└─CollisionShape2D

Enemy (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D
└───Area2D
└─CollisionShape2D

МНЕ ТОЛЬКО НАДО ЧТО БЫ Enemy НЕМНОГО ТОЛАЛи СЕБЯ И ВХОДИЛИ В ИГРОКА НАНОСЯ ЕМУ УРОН

На гадах на ютубе испольсуют Area2D вместо CharacterBody2D

А CharacterBody2D тогда для кого, только для игрока получается?

Почему кстатий в gd нет [code] Как в pr
287 983732
СЕЙЧАС БУДЕТ ШИЗА!!

Заебала шизо нейронка и гайды в падло на youtube смотреть, помогите.

У меня было так

Player (CharacterBody2D)
├── Sprite2D
├── Camera2D
├── EnemySpawner
└── CollisionShape2D // хз зачем онм нен нужен был

Enemy (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D

Спросил у нейронки как детектить вхождение Enemy
Насоветовала хуеты ебаной, добавь Area2D и CollisionShape2D
Сразу не разобрался и перенес текуший CollisionShape2D в Area2D

код:
public override void _Ready()
{
GD.Print("PlayerArea2d OnReady");
BodyEntered += OnBodyEntered;
}
private void OnBodyEntered(Node2D body)
{
GD.Print(body.Name);
}

Мучался мучался, нихкя не работало. Потом случайно добавил еще один CollisionShape2D И оказалость что так правильно

Как в итоге оказалось что нужно было так

Player (CharacterBody2D)
├── Sprite2D
├── Camera2D
├── EnemySpawner
└── CollisionShape2D //Disabled
└───Area2D
└─CollisionShape2D

Enemy (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D
└───Area2D
└─CollisionShape2D

МНЕ ТОЛЬКО НАДО ЧТО БЫ Enemy НЕМНОГО ТОЛАЛи СЕБЯ И ВХОДИЛИ В ИГРОКА НАНОСЯ ЕМУ УРОН

На гадах на ютубе испольсуют Area2D вместо CharacterBody2D

А CharacterBody2D тогда для кого, только для игрока получается?

Почему кстатий в gd нет [code] Как в pr
288 983733
>>3732
Там отступов не хватает
289 983734
>>1551

>noesis


А этот неплохо взлетел, если судить по комментам на итче.
290 983736
>>3732
СЕЙЧАС БУДЕТ ШИЗА!!

Заебала шизо нейронка и гайды в падло на youtube смотреть, помогите.

У меня было так

Player (CharacterBody2D)
├── Sprite2D
├── Camera2D
├── EnemySpawner
└── CollisionShape2D // хз зачем онм нен нужен был

Enemy (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D

Спросил у нейронки как детектить вхождение Enemy
Насоветовала хуеты ебаной, добавь Area2D и CollisionShape2D
Сразу не разобрался и перенес текуший CollisionShape2D в Area2D

код:
public override void _Ready()
{
....GD.Print("PlayerArea2d OnReady");
....BodyEntered += OnBodyEntered;
}
private void OnBodyEntered(Node2D body)
{
....GD.Print(body.Name);
}

Мучался мучался, нихкя не работало. Потом случайно добавил еще один CollisionShape2D И оказалость что так правильно

Как в итоге оказалось что нужно было так

Player (CharacterBody2D)
├── Sprite2D
├── Camera2D
├── EnemySpawner
└── CollisionShape2D //Disabled
....└───Area2D
........└─CollisionShape2D

Enemy (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D
└───Area2D
....└─CollisionShape2D

МНЕ ТОЛЬКО НАДО ЧТО БЫ Enemy НЕМНОГО ТОЛАЛи СЕБЯ И ВХОДИЛИ В ИГРОКА НАНОСЯ ЕМУ УРОН

На гадах на ютубе испольсуют Area2D вместо CharacterBody2D

А CharacterBody2D тогда для кого, только для игрока получается?

Почему кстатий в gd нет [code] Как в pr
290 983736
>>3732
СЕЙЧАС БУДЕТ ШИЗА!!

Заебала шизо нейронка и гайды в падло на youtube смотреть, помогите.

У меня было так

Player (CharacterBody2D)
├── Sprite2D
├── Camera2D
├── EnemySpawner
└── CollisionShape2D // хз зачем онм нен нужен был

Enemy (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D

Спросил у нейронки как детектить вхождение Enemy
Насоветовала хуеты ебаной, добавь Area2D и CollisionShape2D
Сразу не разобрался и перенес текуший CollisionShape2D в Area2D

код:
public override void _Ready()
{
....GD.Print("PlayerArea2d OnReady");
....BodyEntered += OnBodyEntered;
}
private void OnBodyEntered(Node2D body)
{
....GD.Print(body.Name);
}

Мучался мучался, нихкя не работало. Потом случайно добавил еще один CollisionShape2D И оказалость что так правильно

Как в итоге оказалось что нужно было так

Player (CharacterBody2D)
├── Sprite2D
├── Camera2D
├── EnemySpawner
└── CollisionShape2D //Disabled
....└───Area2D
........└─CollisionShape2D

Enemy (CharacterBody2D)
├── Sprite2D
└── CollisionShape2D
└───Area2D
....└─CollisionShape2D

МНЕ ТОЛЬКО НАДО ЧТО БЫ Enemy НЕМНОГО ТОЛАЛи СЕБЯ И ВХОДИЛИ В ИГРОКА НАНОСЯ ЕМУ УРОН

На гадах на ютубе испольсуют Area2D вместо CharacterBody2D

А CharacterBody2D тогда для кого, только для игрока получается?

Почему кстатий в gd нет [code] Как в pr
291 983738
>>3734
Взлетит то не плохо, но почему не в стиме?
292 983740
>>3736
Зачем используешь C#, если в базе путаешься?
GDScript удобнее + по нему больше обучающего.

Начинай с документации:
https://docs.godotengine.org/en/stable/tutorials/physics/physics_introduction.html
https://docs.godotengine.org/en/stable/tutorials/physics/using_character_body_2d.html
https://docs.godotengine.org/en/stable/tutorials/physics/using_area_2d.html

>CollisionShape2D зачем


Вкратце, без Shape физика/коллизии не работают.
Как следует из названия, эта года задаёт форму.

>добавь Area2D и CollisionShape2D


Нейронка в целом правильно посоветовала.
CharacterBody нужен для кинематической физики.
Area - это сенсор/триггер, а также зона влияния.

Shape должен находиться в ПОТОМКАХ тела/зоны:
CharacterBody # физическое тело персонажа
_ CollisionShape # принадлежит телу
_ Area # датчик урона персонажу
_ _ CollisionShape # принадлежит датчику

Флаг Disabled отключает форму коллизии.
Внимательно изучи collision_layer/_mask.
293 983742
>>3731
В годоте 4 есть compute shaders
например https://github.com/DevPoodle/compute-shader-plus
Но честно говоря учитывая условия, что сначала делал под ведроид, сейчас веб игры, то даже хз когда до них доберусь. Это для тяжелых пека с 4090 все же.
294 983746
>>3740

>Зачем используешь C#, если в базе путаешься?


jetbrains будет под GDScript ?

>Начинай с документации


Да какая документация и так всё знаем всё умеем.

>CharacterBody и Area


Можно было совместить, не понимаю тогда зачем CharacterBody или CollisionShape2D

Получается Area всегда главный узел? Как проверять вхождение Area в Area?

Если так подумать 2д говно я могу всё на Area написать, У которого границ нет. Но как правильно?

Зачем тогда CharacterBody2D?

>Shape должен находиться в ПОТОМКАХ тела/зоны:


>CharacterBody # физическое тело персонажа


>_ CollisionShape # принадлежит телу


>_ Area # датчик урона персонажу


>_ _ CollisionShape # принадлежит датчику



Последние не до конца понял по шизе, завтра по тестирую

Какой главный узел персонажа, объектов, мобов?
295 983749
>>3742

>compute shaders


Так это шейдеры, а там AI/ML через Vulkan.
Или это одно и то же? Я не разбираюсь в деталях...

>Это для тяжелых пека с 4090 все же.


На 750 Ti у меня LLMки 0.5b ~ 1.5b шустро работают.
Мне нужно API для совсем малюсеньких нейронок...

Как я, по-твоему, буду их шейдерами вычислять?
296 983750
>>3736
Если совсем на пальцах
Character body - это тело, контролируемое "джойстиком"
Rigid body - тело, контролируемое физическими векторами (как тяга у ракеты)
Static body - неподвижное тело
Все тела выше - физические объекты, упирающиеся друг в друга как в препятствия
Character body - он как запрограммированый лифт, как платформа, просто всех толкает либо упирается. Его физические тела не отталкивают. Более того, в 4-ке по дефолту и чарактер не толкает RIgid-ы. https://kidscancode.org/godot_recipes/4.x/physics/character_vs_rigid/index.html

Area - область-пустышка, детектор. Она не сталкивается и не отталкивает, но триггерится когда в область входит другое тело или другая area (для этого есть разные сигналы)

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

Остается вопрос, в какой момент толкать. В своей игре я детекчу через Area, которая немного шире объектов. Но есть и другие способы. Например, у Character есть метод get_slide_collision получить все столкновения полученные при его движении с помошью move_and_slide (за 1 физический тик?). У Rigid тоже есть свой метод, надо включить contact_monitor и max_contacts_report и получать get_colliding_bodies за предыдущий кадр. Ну и наконец, можно использовать какую-то другую логику, например просто на рассчетах расстояний, раидусов, нахождений в клетках поля и тд.
297 983751
>>3746

>edited



Зачем столько элементов?
Да я не на контролёрах программирую! Но всё равно это много.
Я хотел простую 2д игру.
298 983753
>>3749
Это тред по годоту. Или формулируй вопросы понятней. Типа, можно ли одновременно запустить лламу на компьюте/вулкане и годот на вулкане? Наверное. Хз как это работает. По моему суть всех этих технологий, в том, чтобы расценивать видяху тоже как просто устройство, где ты выделаешь память через malloc, выполняешь какой то код.
299 983754
>>3746

>jetbrains будет под GDScript?


1. Встроенный редактор достаточно хорош.
2. Да, есть поддержка в Rider + доп.плагин:
https://www.jetbrains.com/help/rider/Godot.html

>Да какая документация и так всё знаем


Тогда в чём вопрос, садись и делай сам...

>Можно было совместить


Тело движется как одно целое, но может включать отдельных форм столкновения (шейпы коллизий).

Позже поймёшь, почему так, а пока учись.

>Какой главный узел


Зависит от геймплея/механик игры.

Area тестирует пересечение зон; обычно для более реалистичной физики нужны специальные тела. Автоматическая симуляция - RigidBody, подвижные персонажи - CharacterBody, статичное - StaticBody.

Подобное разделение обязанностей встречается во всех физических движках. Есть ещё SoftBody, и ещё более специфичные виды тел, но это не так важно.

Конечно, далеко не всем играм нужна физика тел. Стратегиям, например, часто достаточно одних Area. Мобильная гиперказуалка типа три-в-ряд вообще не нуждается в определении коллизий, т.к. всё можно определить обращениями к объектам Rect2.
300 983755
>>3750

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

Моб
....Персонаж ударил событие
....Другой моб вошел в зону его оттолкнуло

Как будет лучше в плане производительности, писать через код или через возможности движка?
301 983756
>>3754

>Тогда в чём вопрос, садись и делай сам...


Просто ною
Ну я и так всё делаю сам. Тут мне не разу годных советов не поступало
302 983758
>>3755
Если у тебя один на один, то вообще не важно.
303 983759
>>3753

>Это тред по годоту


Это тред годотеров для годотеров, а не "по годоту".

>Или формулируй вопросы понятней.


Вопрос был чётко сформулирован:

>Кто-нибудь ИТТ уже использовал Kompute?


Ну, вот ты не использовал. Зачем тогда отвечать?

>По моему суть всех этих технологий


Я спрашиваю про machine learning из Godot. Это специфическое API, которое, по идее, должно абстрагировать тебя от этих compute shaders и особенностей всяких там видеокарт, коих тыщи.

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

Но я ищу не какой-то движок, а движок под Godot.
Чтобы комфортно из GDScript обращаться к нему.
304 983760
>>3754

>одних Area.


Как получить размеры?
Если спрайт 200x200 в основном прозрачный а CollisionShape2D 50x50 по пикселям (просто по тому что я так сделала, очертил границы).
305 983762
>>3755
Два вопроса:
У тебя в игре будут какие-то стены/препятствия?
Персонажи должны сталкиваться друг с другом?
Если "да" на любой - тебе нужен CharacterBody.

Дополнительно:
Вид "сбоку" и что-то должно падать и катиться?
Что-то должно правдоподобно отскакивать?
Если "да" на любой - тебе нужен RigidBody.

>лучше в плане производительности


Сколько юнитов ты планируешь?
<100: вообще без разницы.
250+: придётся попотеть.
1000+: лучше забей...

В числе "юнитов" также "пули", если их много.
306 983763
>>3760

>Как получить размеры?


>CollisionShape2D 50x50 по пикселям


Ты ж уже знаешь размер, чего ты хочешь?

А так, всё зависит от конкретного Shape2D.
https://docs.godotengine.org/en/stable/classes/class_shape2d.html
307 983764
>>3759

>Это тред годотеров для годотеров, а не "по годоту".


Неверно. Дальше твою шизу не читал.
308 983765
>>3763
Я то знаю, но не знаю что лучше в плане производительности. Писать ifы или надеяться что разработчики не далбоёбы и сделали лучше меня.
309 983766
>>3764
Это не я >>3765
310 983767
>>3725

>Don't chase your dreams...


>Finish whatever the fuck you started...


Дальше не смотрел. Очередная херня.

Во-первых, нахрена делать то, что тебе нахрен не упёрлось? Из-за таких советчиков Стим завален бессмысленными, никому не нужными играми.

Во-вторых, нахрена тянуть то, что ты уже осознал провальным и/или потерял всякий интерес? Так и получаются никому не нужные, провальные игры.

Блаблабла, "вы так больше научитесь" (чему?)...

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

Если у вас есть игра мечты, о которой вы всё своё свободное время думаете - ДЕЛАЙТЕ ЕЁ. Потому что никто кроме вас её сделать не сможет. А эти ваши платформеры и клоны дума никому не нужны.

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

Думайте своей головой, а не советами с ютуба.
311 983772
>>3767
Кнопки то переделал?
312 983776
>>3772
Переделал. Щас мультиплеер тестируем. Студия 100 воображаемых человек, все собрались, удивляются плавности мультиплеерных кнопок, хвалят. Во как.
313 983790
>>3738
Мейби потому что это игра на 10-15 минут?
6729527026.jpg547 Кб, 767x1000
314 983793
>>3767
Большинство туториалов на ютубе такие, в любой области. Пора бы понять цеховую структуру специалистов в англосаксонской культуре. Никто не будет делиться полезным опытом со своими потенциальными конкурентами, даже за большие деньги. Это тебе не СССР, где к каждому компьютеру шла подробная элементная схема.
315 983833
>>3790
Накинуть растягивателей времени типа длинных коридоров или фарма до часа.
Аноним 316 983854
Как же нейронка всё таки отупляет, мне всего лишь нужно было событие

this.AreaEntered += area =>
{
....Console.WriteLine(area.Name);
};
317 983891
>>3854
Чел, ты уже был тупым.
318 983917
>>3891

Попизди мне тут, я тут самый умный
319 983998
>>3891
Полегче, у нас тут дружеская атмосфера.
320 984002
Как прилипание мобов к персонажу исправить?
321 984006
>>4002
А как они у тебя "прилипли"? Физически, какие они по типу? Или ты их добавляешь дочерними к игроку?
322 984007
>>4006
Они просто бегут и иногда прилипают к игроку, а потом бегут рядом с ним, несмотря на разницу в скорости.
323 984009
>>4007
Всё разобрался
324 984046
>>3793

>специалистов в англосаксонской культуре


Свой бред держи при себе. На западе дохуя леваков которые жопу свою рвут для блага человечества. FOSS разработка цветет и пахнет. Но тебе сука надо чтобы самые прожженные капиталисты начали раздавать тебе все бесплатно. Иначе запад бяка а совок потерянная шангрила.
325 984069
>>4046

>FOSS разработка цветет и пахнет.


FOSS не то, чем кажется. А в других сферах, за пределами софта, всё ещё хуже. Музыка, рисование, даже боевые искусства. Профи на своих мастер-классах и курсах никогда не раскроют своих секретов. Они в лучшем случае расскажут 90% общедоступной правды и намешают 10% лжи, чтобы запутать конкурентов. В то время, как у простого советского учителя можно узнать это на частном уроке совершенно бесплатно. К сожалению, западные практики давно проникли в наш мир, такие "мастера" у нас инфоцыганами зовутся.
326 984093
>>4069

> у нас инфоцыганами зовутся


Уже нет.
Уже повесточка просочилась и к нам, и практика отмен просочилась, и цыгане триггернулись на термин и требуют отменить.
327 984097
>>4093
Соевый, ты? Всем нормальным людям похуй на повестку. А как цыгана не назови, он цыганом останется. В одном названии цыган уже вся суть
328 984099
>>4069

>FOSS не то, чем кажется


Конечно-конечно, никаких объяснений, так понимаю, не будет.

>намешают 10% лжи, чтобы запутать конкурентов


Вод ведь гнилой запад.

>простого советского учителя


святые люди

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

> Соевый, ты?


Не я, а депутаты-цыгане, которые подобных законопроектов наваяли.
330 984112
331 984127
>>4112

> Zelda 1, but it's hand drawn


Нинтенда всё равно поставит на бабки.
332 984282
Поплакать можно?
333 984283
>>4282

>Поплакать можно?


Поплакай. У нас весь тред на этом держится.

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

Осталось спроектировать синглплеерные кнопки.
334 984289
>>4283
Кодил в начале на похуй. Потом спустя какоето время надоело копи пастить одно и тоже. Применил все свои знания в области наследования и разбил на класы.

[Сharacter]
.+Move
.+FlipSprite
....[Enemy]
......+GetDirectionToPlayer
......+GetPlayer
........[Mob1]
........[Mob2]
........[Mob2]
....[Player]
......+GetDirectionFromControl

Пофиксил баг залипания костылями которыей хуй пойми как работают.

Потом заметил еще баг что мобы ходят очередью несмотря на то что колижен овальный и мобы статусом повыше расталкивают медленую мелочь.
Но в итоге сами собираються в очередь к игроку.
Начал копать в сторону нахождения пути.
Увидил элемент поиска пути в редакторе.
На элементе написано: "Внимание, может быть удалён в следуших версиях движка!".
Ну ладно, похуй я себе думал.
Сидел весь день.
Гады говёные старые, нихуя нормально не работает.
Глобальная позиция игрока у далбоёбов обновляется через таймеры.
Все пидорасы использут не тот метод для mova. Если использовать его то у меня опять будет баг.
Кроме того использут свои костыли что бы скользило.
С моим наследованием хуй знает как стакать.
На всех видео поиск пути по точкам у меня всегда прямая линия хоть даже если делаю полность всё по копи пасте.
Нейронка тоже тупит ничег дельного сказать не может.
Хоть бери и сам делай свой велосипед для поиска пути.

ВОт почему оно всеглда всё так? Хочется делать всё по красоте но никогда не получается.
334 984289
>>4283
Кодил в начале на похуй. Потом спустя какоето время надоело копи пастить одно и тоже. Применил все свои знания в области наследования и разбил на класы.

[Сharacter]
.+Move
.+FlipSprite
....[Enemy]
......+GetDirectionToPlayer
......+GetPlayer
........[Mob1]
........[Mob2]
........[Mob2]
....[Player]
......+GetDirectionFromControl

Пофиксил баг залипания костылями которыей хуй пойми как работают.

Потом заметил еще баг что мобы ходят очередью несмотря на то что колижен овальный и мобы статусом повыше расталкивают медленую мелочь.
Но в итоге сами собираються в очередь к игроку.
Начал копать в сторону нахождения пути.
Увидил элемент поиска пути в редакторе.
На элементе написано: "Внимание, может быть удалён в следуших версиях движка!".
Ну ладно, похуй я себе думал.
Сидел весь день.
Гады говёные старые, нихуя нормально не работает.
Глобальная позиция игрока у далбоёбов обновляется через таймеры.
Все пидорасы использут не тот метод для mova. Если использовать его то у меня опять будет баг.
Кроме того использут свои костыли что бы скользило.
С моим наследованием хуй знает как стакать.
На всех видео поиск пути по точкам у меня всегда прямая линия хоть даже если делаю полность всё по копи пасте.
Нейронка тоже тупит ничег дельного сказать не может.
Хоть бери и сам делай свой велосипед для поиска пути.

ВОт почему оно всеглда всё так? Хочется делать всё по красоте но никогда не получается.
335 984298
>>4289
Вообще, наследование для актёров (персонажей, монстров, юнитов) обычно не рекомендуется. Это затрудняет создание новых вариантов актёров.

>....[Enemy]


>......+GetDirectionToPlayer


>......+GetPlayer


Што? Почему у тебя Enemy отдает кому-то наружу направление на игрока и ссылку на игрока? Он же наоборот, должен получать извне эту информацию?

>....[Player]


>......+GetDirectionFromControl


Опять же, нет особого смысла в этом методе, когда можешь вызвать свой Move() из PhysicsProcess:
https://docs.godotengine.org/en/stable/classes/class_input.html#class-input-method-get-vector

>нахождения пути


>Внимание, может быть удалён


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

Что ты вообще делаешь, клон Vampire Survivors?
Много разных жанров в 2D, от жанра зависит код.

>велосипед для поиска пути


Поиска пути где? Ты хоть скриншот уровня дай.

Для простых уровней из клеток (со множеством туннелей, стенок, комнат, дверей) хорошо это:
https://docs.godotengine.org/en/stable/classes/class_astar2d.html
https://docs.godotengine.org/en/stable/classes/class_astargrid2d.html
А раз уж ты на C#, то в C# могут быть какие-то более продвинутые библиотеки поиска пути. Нет нужды изобретать свой велосипед в данной ситуации.

>ВОт почему оно всеглда всё так?


Потому что ты вместо последовательного изучения официальной документации берёшь попавшееся под руку видео 5-летней давности от Васяна, и пока не понимаешь, какие вопросы бесполезно задавать современным LLM (не поймут, ляпнут бред); вместо внимательного изучения вопроса и работы головой копипастишь код из интернета и жалуешься на него.

У тебя проблемы не с Godot, игрой или геймдевом.
У тебя систематические проблемы с обучением.

Я тоже через подобное проходил, много лет назад...
335 984298
>>4289
Вообще, наследование для актёров (персонажей, монстров, юнитов) обычно не рекомендуется. Это затрудняет создание новых вариантов актёров.

>....[Enemy]


>......+GetDirectionToPlayer


>......+GetPlayer


Што? Почему у тебя Enemy отдает кому-то наружу направление на игрока и ссылку на игрока? Он же наоборот, должен получать извне эту информацию?

>....[Player]


>......+GetDirectionFromControl


Опять же, нет особого смысла в этом методе, когда можешь вызвать свой Move() из PhysicsProcess:
https://docs.godotengine.org/en/stable/classes/class_input.html#class-input-method-get-vector

>нахождения пути


>Внимание, может быть удалён


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

Что ты вообще делаешь, клон Vampire Survivors?
Много разных жанров в 2D, от жанра зависит код.

>велосипед для поиска пути


Поиска пути где? Ты хоть скриншот уровня дай.

Для простых уровней из клеток (со множеством туннелей, стенок, комнат, дверей) хорошо это:
https://docs.godotengine.org/en/stable/classes/class_astar2d.html
https://docs.godotengine.org/en/stable/classes/class_astargrid2d.html
А раз уж ты на C#, то в C# могут быть какие-то более продвинутые библиотеки поиска пути. Нет нужды изобретать свой велосипед в данной ситуации.

>ВОт почему оно всеглда всё так?


Потому что ты вместо последовательного изучения официальной документации берёшь попавшееся под руку видео 5-летней давности от Васяна, и пока не понимаешь, какие вопросы бесполезно задавать современным LLM (не поймут, ляпнут бред); вместо внимательного изучения вопроса и работы головой копипастишь код из интернета и жалуешься на него.

У тебя проблемы не с Godot, игрой или геймдевом.
У тебя систематические проблемы с обучением.

Я тоже через подобное проходил, много лет назад...
336 984304
>>4298

>......+GetPlayer


Получить игрока из групы

>......+GetDirectionToPlayer


Получить направление в сторону игрока

>......+GetDirectionFromControl


>Опять же, нет особого смысла в этом методе, когда можешь вызвать свой Move() из PhysicsProcess:



Меня так учили разбивать на куски потом на кусочки потом на микробы.
И не удобно когда весь PhysicsProcess процес засран, особено если у них у всех почти одно и тоже

>Что ты используешь, NavigationAgent2D


NavigationRegion2D для карты
Для мобов
NavigationAgent2D
NavigationObstacle2D

>отказаться от физики


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

>Для простых уровней из клеток (со множеством туннелей, стенок, комнат, дверей) хорошо это:


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

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


Да говно документация, там почти нихкуя нет примеров для C# а то что есть тоже говно.
Документация это подсказка а не талмуд как жить по жизни.
Иди сиди изучай талмуд 10 лет а потом его снова перепишут и потом снова изучай.

>У тебя проблемы не с Godot, игрой или геймдевом.


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


>Я тоже через подобное проходил, много лет назад...



А сдесь прсото мать твою ебал.
Мне дваче еще никогда ни разу в жизни ничего полезного не советовал и не помога.
Хотя ладно вру, один раз было, в другой тематике и то случайно потому что я случайно наткнулся на пост.
336 984304
>>4298

>......+GetPlayer


Получить игрока из групы

>......+GetDirectionToPlayer


Получить направление в сторону игрока

>......+GetDirectionFromControl


>Опять же, нет особого смысла в этом методе, когда можешь вызвать свой Move() из PhysicsProcess:



Меня так учили разбивать на куски потом на кусочки потом на микробы.
И не удобно когда весь PhysicsProcess процес засран, особено если у них у всех почти одно и тоже

>Что ты используешь, NavigationAgent2D


NavigationRegion2D для карты
Для мобов
NavigationAgent2D
NavigationObstacle2D

>отказаться от физики


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

>Для простых уровней из клеток (со множеством туннелей, стенок, комнат, дверей) хорошо это:


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

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


Да говно документация, там почти нихкуя нет примеров для C# а то что есть тоже говно.
Документация это подсказка а не талмуд как жить по жизни.
Иди сиди изучай талмуд 10 лет а потом его снова перепишут и потом снова изучай.

>У тебя проблемы не с Godot, игрой или геймдевом.


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


>Я тоже через подобное проходил, много лет назад...



А сдесь прсото мать твою ебал.
Мне дваче еще никогда ни разу в жизни ничего полезного не советовал и не помога.
Хотя ладно вру, один раз было, в другой тематике и то случайно потому что я случайно наткнулся на пост.
337 984319
>>4304
Лол. Хрестоматийный Даунинг-Крюгер. Просто.
338 984328
>>4282
Нет, зачем? Разработка игр это весело и интересно, особенно на годоте.
image.png57 Кб, 216x233
339 984330
340 984336
>>4304

>Да говно документация, там почти нихкуя нет примеров для C#


А теперь вспомни, как тебе всем тредом говорили писать на гдскрипт. Но ты конечно проигнорировал, but then:

>Мне дваче еще никогда ни разу в жизни ничего полезного не советовал и не помога.

341 984339
>>2441
Тоже сейчас пилим порно дрочильню в 2D. Единственное пришлось пока на DragonBones остановиться для анимации для первого проекта и он пойдет.
342 984340
>>4304
Навигация в годоте вызывала много холиваров, потому что состоит из двух частей, которые не очень между собой координируются.
А именно, есть навигация (поиск пути), который не учитывает другие юниты; а есть collision avoidance - избегание других юнитов, которое не учитывает навигацию. В результате юниты могут выйти за пределы (в примере я не использую физику) А еще проблема в том, что поиск пути пытается его привести в точку, а избегание препятствий от нее уводит, так что он никогда не дойдет, нужно как то умно обрабатывать это условие.
В 4.3 добавили к NavigationObstacle параметр affect_navigation_mesh
То есть возможный воркфлоу - перезапекать навигейшн меш на лету, добавив юнитам обстаклы? Хз, надо попробовать
Еще подводный в том, что у агента радиус, то есть он может быть тлько круг/сфера, поэтому в какой то момент может понадобиться переключать на полигон обстакла и обратно.
343 984341
>>4336
Я на двачь захожу уже бухой в говнину. Иногда даже не помню что писал.
344 984342
>>4340
Можешь скинуть проэкт?
345 984348
>>4304
https://ru.wikipedia.org/wiki/Проблема_XY
Если хочешь, чтобы мы тебе помогли с игрой, опиши:
- какой жанр игры (РПГ, рогалик, шутер, шут-ем-ап);
- какой вид камеры у тебя (сбоку, сверху и другие);
- какие механики составляют фундамент игры.
Сейчас ты непонятно что пытаешься сделать.

>поиск пути очень важен в любой игре


Ошибаешься. Многим играм не нужен поиск пути.

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

>А если надо что бы босы толкали говно


Вот ты сначала продумай эту фичу в своей игре.
Повторюсь: в СВОЕЙ игре, а не в абстрактной.

>кода мобы должы уметь обходить друг друга


В AStar можно "выключать" узлы, но подумай:
- КОГДА юниты должны осознавать препятствие?
- что, если препятствие НЕВОЗМОЖНО обойти?
- что плохого в том, чтобы они ходили насквозь?
И другие вопросы в контексте конкретной игры.

>нет примеров для C#


API одинаковое для любого языка.

>Документация это подсказка


Правильно. А ты игнорируешь эти подсказки.

>Мне дваче еще никогда ни разу в жизни


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

>>4340

>Навигация в годоте


ИМХО, навигация в общем случае нерешаема.
Ну да, ты можешь написать супер-ИИ-навигатор...
Но для 99% игр это будет лютый оверкилл, так ведь?

Так что я даже не думаю о "навигации в Godot".
Нужно думать о навигации в конкретной игре.
345 984348
>>4304
https://ru.wikipedia.org/wiki/Проблема_XY
Если хочешь, чтобы мы тебе помогли с игрой, опиши:
- какой жанр игры (РПГ, рогалик, шутер, шут-ем-ап);
- какой вид камеры у тебя (сбоку, сверху и другие);
- какие механики составляют фундамент игры.
Сейчас ты непонятно что пытаешься сделать.

>поиск пути очень важен в любой игре


Ошибаешься. Многим играм не нужен поиск пути.

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

>А если надо что бы босы толкали говно


Вот ты сначала продумай эту фичу в своей игре.
Повторюсь: в СВОЕЙ игре, а не в абстрактной.

>кода мобы должы уметь обходить друг друга


В AStar можно "выключать" узлы, но подумай:
- КОГДА юниты должны осознавать препятствие?
- что, если препятствие НЕВОЗМОЖНО обойти?
- что плохого в том, чтобы они ходили насквозь?
И другие вопросы в контексте конкретной игры.

>нет примеров для C#


API одинаковое для любого языка.

>Документация это подсказка


Правильно. А ты игнорируешь эти подсказки.

>Мне дваче еще никогда ни разу в жизни


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

>>4340

>Навигация в годоте


ИМХО, навигация в общем случае нерешаема.
Ну да, ты можешь написать супер-ИИ-навигатор...
Но для 99% игр это будет лютый оверкилл, так ведь?

Так что я даже не думаю о "навигации в Godot".
Нужно думать о навигации в конкретной игре.
image.png88 Кб, 1144x836
346 984351
>>4348

Прям очень информативно.
347 984355
>>4340
Короче да эта хуйня в динамически создаваемых объектах не работает! Всем спасибо за внимание.
348 984356
>>4355
Навигация - это конечно хорошо, но надо и рейкасты кидать, а то у твоих мобов видимость ноль, идут по приборам.
349 984365
>>4351
Так-то вкладывание child-нод в parent-ноды - это база, фундамент всего движка. Как можно не догадаться о банальном выкладывании "дырки" (то, что тебе нужно обходить стороной) в "площадь" (то, где ты ходишь)?

Это проблема в обучении. Ты взялся за объективно сложную тему (навигация), толком не разбираясь в фундаментальных концепциях (что такое "ноды" и почему они вкладываются друг в друга). Если бы ты последовательно изучал движок, такие вещи были бы для тебя очевидными - понятными без слов.

>>4355

>не работает


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

Сразу предупреждаю, что "deprecated" ещё хуже, чем "experimental" и ты не должен таким пользоваться в новых проектах, тем более для обучения движку.

>>4356

>а то у твоих мобов видимость ноль


Совсем наоборот получается. Если ты используешь навигацию по AStar или navmesh как способ просто получить путь из А в Б, твои мобы заранее узнают правильный маршрут, даже если по логике игры не должны. Особенно глупо это будет выглядеть в игре, которая требует от игрока прятаться и ходить по "секретным" проходам: ведь мобы будут в 100% ситуаций сразу нацеливаться на игрока, вместо естественного поиска методом проб и ошибок.

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

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

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

Конечно, это всё - сложная тема для новичка. Благо большинство игр вообще не требуют навигации... Ну, либо обходятся простейшим AStar на сетке...
349 984365
>>4351
Так-то вкладывание child-нод в parent-ноды - это база, фундамент всего движка. Как можно не догадаться о банальном выкладывании "дырки" (то, что тебе нужно обходить стороной) в "площадь" (то, где ты ходишь)?

Это проблема в обучении. Ты взялся за объективно сложную тему (навигация), толком не разбираясь в фундаментальных концепциях (что такое "ноды" и почему они вкладываются друг в друга). Если бы ты последовательно изучал движок, такие вещи были бы для тебя очевидными - понятными без слов.

>>4355

>не работает


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

Сразу предупреждаю, что "deprecated" ещё хуже, чем "experimental" и ты не должен таким пользоваться в новых проектах, тем более для обучения движку.

>>4356

>а то у твоих мобов видимость ноль


Совсем наоборот получается. Если ты используешь навигацию по AStar или navmesh как способ просто получить путь из А в Б, твои мобы заранее узнают правильный маршрут, даже если по логике игры не должны. Особенно глупо это будет выглядеть в игре, которая требует от игрока прятаться и ходить по "секретным" проходам: ведь мобы будут в 100% ситуаций сразу нацеливаться на игрока, вместо естественного поиска методом проб и ошибок.

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

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

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

Конечно, это всё - сложная тема для новичка. Благо большинство игр вообще не требуют навигации... Ну, либо обходятся простейшим AStar на сетке...
350 984367
>>4348

>Многим играм не нужен поиск пути


Три в ряд? Сапер? Арканоид? Ну да, им не нужен, а чему-то посложнее уже нужен
351 984374
>>4367
Многим играм с врагами он не нужен, потому что у них есть - рейкасты, маршруты для патрулирования. Арена файты, вампир сурвайвалы где враги просто ломятся по прямой.
Ради смеха можно посмотреть, в каких релизнутых играх /gd есть пасфайндинг. Он даже в арчтавере не нужен, там судя по всему ломятся напрямую и скользят вдоль стен. Будет смешно если во всем гд он есть в каком нибудь халвере для анимации неигрового компаньона.
Не, хорошо конечно что его можно сделать, вот в моей игре мечты он играет большую роль в тактике, но вот в десятках игр что я делал много лет он реально не понадобился.
352 984375
>>4374
Короче, либо враги пролетают сквозь стены и это выглядит идиотски, либо стучаться в стену и тупят и это выглядит идиотски. В лучших традициях дагестан технолоджи и браузерок с я.игр.

дай угадаю, делал дерьмо на мобилки, чтобы поднять бабла?
353 984376
>>4367

>Три в ряд? Сапер? Арканоид?


>чему-то посложнее уже нужен


Stardew Valley:
- все NPC бродят по хардкоженным путям;
- если встать на пути, NPC проходят насквозь;
- если на пути объект - NPC его уничтожают;
- монстры в подземелье ходят взад-вперёд;
- мобильный порт: соплями приклеенный A★ (?).

>Крайне положительные (98% из 662,433)



Terraria:
- NPC ходят влево-вправо и редко прыгают;
- застревают в 99% случаев и не могут выйти;
- телепортируются, когда находятся за экраном;
- мобы используют ту же примитивную логику;
- мобы чаще летают ПОЗАДИ физической карты;
- у игрока вообще нет какого-либо поиска пути.

>Крайне положительные (97% из 1,071,055)



Вот две популярнейших игры без поиска пути.
Что ещё скажешь? Они не сложнее "три в ряд"?

Даже в серии GTA (3/VC/SA) пешеходы:
- едут по невидимым рельсам 99% времени;
- от "испуга" часто бегут в стену и застревают.
Машины там тоже тупо прут на таран 99% времени.
Т.е. в знаменитых ААА нет полноценной навигации.
353 984376
>>4367

>Три в ряд? Сапер? Арканоид?


>чему-то посложнее уже нужен


Stardew Valley:
- все NPC бродят по хардкоженным путям;
- если встать на пути, NPC проходят насквозь;
- если на пути объект - NPC его уничтожают;
- монстры в подземелье ходят взад-вперёд;
- мобильный порт: соплями приклеенный A★ (?).

>Крайне положительные (98% из 662,433)



Terraria:
- NPC ходят влево-вправо и редко прыгают;
- застревают в 99% случаев и не могут выйти;
- телепортируются, когда находятся за экраном;
- мобы используют ту же примитивную логику;
- мобы чаще летают ПОЗАДИ физической карты;
- у игрока вообще нет какого-либо поиска пути.

>Крайне положительные (97% из 1,071,055)



Вот две популярнейших игры без поиска пути.
Что ещё скажешь? Они не сложнее "три в ряд"?

Даже в серии GTA (3/VC/SA) пешеходы:
- едут по невидимым рельсам 99% времени;
- от "испуга" часто бегут в стену и застревают.
Машины там тоже тупо прут на таран 99% времени.
Т.е. в знаменитых ААА нет полноценной навигации.
354 984379
Кстати пока гуглил как кое-что ускорить, наткнулся на алгоритм Boids, про который давно забыл
https://www.youtube.com/watch?v=IO003UjrZEE
А у этого чувака boids на рейкастах и облетают препятствия на тайлмапе, что вполне может заменить навигацию.
https://www.youtube.com/watch?v=oFnIlNW_p10
180efc3227b70e92b88fd3e71826fbad.jpg29 Кб, 600x568
355 984390
>>4379

>boids на рейкастах


Главное, чтобы их было мало.
356 984392
>>4376
А зачем гта 3, уже на 5 давно равняться пора!
357 984396
>>4390
Ох уж эти проблемы шарповиков
358 984397
>>4392

>равняться


Ты хотя бы успех GTA SA повтори...

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

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

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

Кстати, в GTA 5 ИИ сильно деградировал, особенно у полицейских, по крайней мере, по отчётам игроков, и сравнивая в основном с GTA IV, где пытались всё реалистично сделать в т.ч. в плане ИИ у NPC. И по физике машин/регдол они тоже всё урезали. Так что равняться можно разве что в графическом плане.
359 984404
>>4397
Ещё вспомнилось, как мирные NPC в GTA 5 убегают от назойливого игрока. Если идти за пешеходом и сталкиваться с ним, он может напугаться и начать убегать... Вот только бежать он может только в двух направлениях и медленнее игрока. Если ты его вдруг обгоняешь - пешеход делает резкий разворот на 180°, убегая в противоположном направлении по той же дорожке... И так их можно крутить на одном месте бесконечно, пока случайно не упустишь из виду.

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

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

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

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

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

Кто-то тут свою GTA на Godot делал, как успехи?
360 984405
>>4404

>Кто-то тут свою GTA на Godot делал, как успехи?


Я пока только интерфейс делаю, хочу чтобы много онлайновых игроков учитывало...
image.png561 Кб, 1021x786
361 984407
https://github.com/Griiimon/Manymies
Бенч разных подходов
362 984411
>>4407

>1000+ enemies at 60fps


Сейчас 2024, а не 2005.
363 984413
>>4411
Сорян, ща поправлю:

>RTX Ultra 8k DLSS 3.0 ON

364 984414
>>4407
ОХУЕННО! СПАСИБО! ВПЕРВЫЕ НА ДВАЧЕ ПОМОГЛИ
image.png1,4 Мб, 1075x688
365 984415
godoter.webm4,4 Мб, webm,
1920x1080, 0:12
366 984417
367 984418
>>4404

>В GTA V машины оценивают препятствия простым рейкастом, из-за чего часто пытаются увернуться в неудачное время, виляя на соседнюю полосу и в результате создавая лишние ДТП с игроком. Игроки думали - это специально во вред игроку, но скорее всего, это лишь неудачная ошибка в логике NPC.


Давно не играл, но вроде в 3/VC так же было. Чуть заезжаешь на встречную полосу и нпс сворачивает как еблан будто я прям на таран иду
368 984420
>>4376

>все NPC бродят по хардкоженным путям;


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

>если на пути объект - NPC его уничтожают;


Только если объект никак нельзя обойти или он мешает событию

>монстры в подземелье ходят взад-вперёд;


Монстры, если увидят игрока, бегут за них. Скелеты или мумии, например. И они не сносят руду/ящики/т.д, а идут по пути к игроку

>Terraria


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

>Даже в серии GTA (3/VC/SA) пешеходы


Не играл в эти игры лет 15, но в других 3д играх тех лет нпс ищут путь, чтобы, как минимум, обойти игрока или подойти к нему.
navigation.gif2,4 Мб, 600x319
369 984422
>>4420

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


На годоте давно сделан пасфайндинг для платформера.
https://snoringcatgames.github.io/exampler/addons/squirrel_away/dist/index.html
https://github.com/SnoringCatGames/surfacer
image.png72 Кб, 1225x243
370 984423
>>4417
Утка здорового человека
371 984426
Очень часто думаю, что я самый неадекватный индивид этого треда, а потом случайно захожу в ТВГ-тред и понимаю, что я абсолютно нормальный человек по сравнению с общей температурой тематики.
372 984428
>>4355
Работает.
17680679360a25736d8913.jpg66 Кб, 1280x957
373 984440
Ебучая работа, учеба, домашние дела и т.д. и т.п.
Как вы находите время заниматься godot? Последний месяц максимум, что могу себе позволить - это 3/4 часа в воскресенье и 2-3 часа в течение рабочей недели.
В остальное время либо занимаюсь делами, либо сплю. Сеймы есть?
Просто хочу поныть. К концу ноября должно стать полегче
374 984441
>>4440
Времени хотя бы начать что-то делать нет. Успел только установить Годот. Работа, приготовить поесть, поесть, сделать домашние дела, чуть-чуть поиграть - всё, времени не остаётся, можно только заменить "поиграть" на "пытаться начать делать игру", но я вспоминаю, что никогда не пограммировал (sql не погроммирование, а wordle, написанный на пайтоне, не считается) и падаю в обморок. Читаю треды в /gd/ и мечтаю, рисую в голове механики игры.
375 984445
>>4339
А ты чекал спайн? В спайне риг, анимация просто какой-то лютый кайф. Автосоздание меша и т.д
Ускоряет очень люто, убирая лишний дроч с ригом.
Драгонбонес как-то еще более криво кстати работает с годот, более костыльный что ли, он вообще не поддерживается ласт года.
376 984450
>>4440
Какой у тебя распорядок дня, раз времени остаётся только поспать?
377 984452
>>4441

Готовь сразу на неделю, замораживай или раскладывай в банки или пластиковые ланчбоксы, ставь в холодильник с низкой температурой, не выше 5 градусов.
Поел — пустую тару обратно в холодильник, чтобы не воняло в раковине.
Раз в неделю выделяй один день на мытьё и приготовление еды на следующую неделю.
Как минимум два часа сэкономишь.
378 984453
>>4452
Ещё забыл сказать - ссы и сри в ведро, раз в неделю выноси.
image.png489 Кб, 524x554
379 984454
>>4441

>приготовить поесть, поесть, сделать домашние дела


Тянку заведи для этого
380 984455
>>4454
Тянка будет занимать еще больше твоего времени, т.к. им требуется общение
godoter.webm4,4 Мб, webm,
1920x1080, 0:12
381 984459
382 984460
>>4440
>>4441
Просто не работайте.
383 984464
>>4459
Короче
1) Нужно жить в США
2) Родиться в богатой семье
3) Быть богатым
4) Не иметь женщины
384 984467
>>4464
С последним пунктом я уже справился.
385 984468
>>4450
пн-пт
10:00 - подъем и сразу за работу
10:00 - 19:00 - Работа (из дома). Также где-то в этом промежутке завтракаю и небольшой перекус днем, т.к. на обед нет времени. Параллельно стажируюсь. Свободен только тогда. когда отхожу с утра посрать на 5 минут.
19:00 - 21:00 - выполняю задания по стажировке.
После делаю дела по дому, готовлю поесть, ужинаю.
Соответственно "освобождаюсь" часам к 23:00 в лучшем случае, когда уже мозг тупа не работает, глаза больше не могут смотреть в экран, запястья болят от туннельного синдрома, а поясница отваливается.
В таком состоянии заниматься godot просто не хочется.
А если стажировка затягивается, то закончить вообще могу только к часу ночи.
Потом сон и все
387 984473
>>4468
Ты что-то делаешь не так.
image.png109 Кб, 273x185
388 984474
>>4472
осуждаем такое
389 984475
>>4468
Ну давай отдадим час на посрать/пожрать/умыться. То есть ты беспрерывно работаешь 8 часов? Это же ебануться можно. Нахуй такая работа нужна?
390 984476
>>4473
А то!
>>4475
Да знаю, что хуйня. Поэтому меняю направление, так сказать. К началу 2025 уже собираюсь уволиться и должно быть полегче
391 984477
>>4476
Давай, анончик, выбирайся из этой кабалы, удачи. Игры сами себя не сделают.
Богиня прокрастинации.png9 Кб, 640x480
392 984479
>>4476

> собираюсь уволиться


Я так уволился в 2017ом, и нихуя не поменялось. Сижу, двачи скроллю. Желаю тебе не попасть в ловушку прокрастинации.
393 984491
>>4477
>>4479
Спасибо, аноны. И вам тоже удачи. Чем больше хороших игр, тем лучше!
394 984499
>>2871

> >удобно ваще закинуть скрипт в корень


> Можешь нормально объяснить - чем удобнее?


Идеальное место для шины сигналов, ИМХО. ИМХО!

> get_tree() - это глобальный доступ, т.е. опасный.


Поэтому глобально-опасные вещи должно делать само tree в своём инжектированном скрипте. И ты как кодер всегда знаешь, где у тебя собраны все самые опасные штуки. В твоей игре слишком много вызовов get_tree() ? - Пришло время задуматься об инжекте туда скрипта.

> Root нода недоступна из редактора.


Доступно как поле tree-объекта. Доступно как get_node("/root") но есть нюанс, рутноду можно переименовать. Зачем? Чтобы никто не догадался! И тогда он будет доступен как get_node("/_your_branded_root_node_name_")

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

Алсо, у scenetree есть колбэк, обрабатывающийся в начале каждого фрейма. Там тоже можно кое чего интересного сообразить.
https://docs.godotengine.org/ru/4.x/classes/class_mainloop.html#class-mainloop-private-method-process
https://docs.godotengine.org/ru/3.x/classes/class_mainloop.html#class-mainloop-method-idle

И ещё. Инжект скрипта в майнлуп - это первый шаг на пути к созданию своего майнлупа. Зачем? А вот хочу!
395 984502
Решил переписать external web audio под себя
Xr7mV9lisEk.jpg20 Кб, 200x200
396 984537
>>4417

>покупает огромный монитор


>работает в скукоженном окошке на 1/2 площади


Это типичное поведение или личное предпочтение?
397 984549
>>4499

>должно делать само tree


Как? Нет, конечно, я понимаю - при желании можно полностью всю игру в одном .gd файле разработать, движок это позволяет. Но зачем? Чем больше кода собирается в одном месте, тем сложнее становится переиспользовать его, вносить какие-то изменения. Поэтому разные люди придумали в разное время:
- процедуры/функции/методы;
- юниты/модули/библиотеки;
- структуры/объекты/классы.
И прочее подобное. Чтобы РАЗДЕЛЯТЬ независимые сущности по разным местам, чтоб упростить с ними взаимодействие. И Godot следует той же самой идее, предлагая ноды, ресурсы, сцены и всё остальное.

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

Чем плох глобальный доступ? Ты складываешь в единственном месте всё, что можно было поделить.
Чем плох "божественный объект"? Ты складываешь в единственный объект всё, что можно было поделить.
Чем плоха та же "шина сигналов"? Ты складываешь в объект этой "шины" всё, что можно было поделить.
И так далее, для любой свалки "всего".

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

>В твоей игре слишком много вызовов get_tree() ? - Пришло время задуматься об инжекте туда скрипта.


У меня нет обращений к get_tree() кроме того, что необходимо для паузы и выхода из игры - но они происходят из определённых мест, близко к корню дерева сцены. Ибо нет необходимости напрямую обращаться к объекту, который расположен ниже на десяток или даже больше слоёв абстракции. Это приблизительно как если пытаться сознательно манипулировать мышечными клетками кишок - организм вместо этого имеет десяток абстракций, избавляя тебя от полностью сознательных вызовов кишки.мышца[999].клетка[999999].сократить(сила).

Рассматривай дерево сцены как слои абстракции. Нормально обращаться к корню из ноды, которая является корнем main scene, но если ты пытаешься обращаться к корню сцены из "листьев", сидящих на длинной ветке в несколько нод - ты явно нарушаешь созданные тобой слои абстракции. Вместо попыток перенести код в корень, нужно понять причину, по которой ты пытаешься нарушить порядок слоёв.

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


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

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

>у scenetree есть колбэк


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

>созданию своего майнлупа. Зачем? А вот хочу!


Да ты можешь хоть свой движок на x86 ассемблере изобретать с нуля, если хочешь. Зачем это открыто навязывать тем, кто хочет сделать игру на Godot? Понятно, что возможность есть, об этом напрямую документация говорит. Но не понятно, зачем это использовать - и к чему это может привести...
397 984549
>>4499

>должно делать само tree


Как? Нет, конечно, я понимаю - при желании можно полностью всю игру в одном .gd файле разработать, движок это позволяет. Но зачем? Чем больше кода собирается в одном месте, тем сложнее становится переиспользовать его, вносить какие-то изменения. Поэтому разные люди придумали в разное время:
- процедуры/функции/методы;
- юниты/модули/библиотеки;
- структуры/объекты/классы.
И прочее подобное. Чтобы РАЗДЕЛЯТЬ независимые сущности по разным местам, чтоб упростить с ними взаимодействие. И Godot следует той же самой идее, предлагая ноды, ресурсы, сцены и всё остальное.

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

Чем плох глобальный доступ? Ты складываешь в единственном месте всё, что можно было поделить.
Чем плох "божественный объект"? Ты складываешь в единственный объект всё, что можно было поделить.
Чем плоха та же "шина сигналов"? Ты складываешь в объект этой "шины" всё, что можно было поделить.
И так далее, для любой свалки "всего".

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

>В твоей игре слишком много вызовов get_tree() ? - Пришло время задуматься об инжекте туда скрипта.


У меня нет обращений к get_tree() кроме того, что необходимо для паузы и выхода из игры - но они происходят из определённых мест, близко к корню дерева сцены. Ибо нет необходимости напрямую обращаться к объекту, который расположен ниже на десяток или даже больше слоёв абстракции. Это приблизительно как если пытаться сознательно манипулировать мышечными клетками кишок - организм вместо этого имеет десяток абстракций, избавляя тебя от полностью сознательных вызовов кишки.мышца[999].клетка[999999].сократить(сила).

Рассматривай дерево сцены как слои абстракции. Нормально обращаться к корню из ноды, которая является корнем main scene, но если ты пытаешься обращаться к корню сцены из "листьев", сидящих на длинной ветке в несколько нод - ты явно нарушаешь созданные тобой слои абстракции. Вместо попыток перенести код в корень, нужно понять причину, по которой ты пытаешься нарушить порядок слоёв.

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


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

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

>у scenetree есть колбэк


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

>созданию своего майнлупа. Зачем? А вот хочу!


Да ты можешь хоть свой движок на x86 ассемблере изобретать с нуля, если хочешь. Зачем это открыто навязывать тем, кто хочет сделать игру на Godot? Понятно, что возможность есть, об этом напрямую документация говорит. Но не понятно, зачем это использовать - и к чему это может привести...
398 984567
>>4537
Чё не так?
У него чистое окно кода, как будто на 24 дуймовом мониторе.
И еще по бокам доп окна редактора в большом размере.
Такие здоровые мониторы покупают не для того что бы потом огромный шрифт читать и вертеть головой на 360.
А вместо 3 - 4 обычных, которые к тому же крепить куда-то надо.
399 984572
>>4537
Дело в том, что сидя так близко, ничего по бокам видно и не будет - шея отвалиться башкой вертеть. А так он его может как телевизор использовать, сидя на диване издалека.
Я у себя еще вдохновляющий арт с локациями или пиксельартом на обои кручу - вот тут у него косяк, всего 3 картинки в цикле.
400 984577
>>4572
>>4567
Там двухметровый молодой пацан с отличным здоровьем, хорошей внешностью и бешеной трудоспособностью в своём собственном доме недалеко от центра города (см. первое видео) где-то в Вирджинии, США - его за 14-дюймовый монитор посади, всё равно будет работать. Пропитому скуфу который живёт в кладовке родительской хрущёвки ничего уже не поможет...
401 984580
Хватит тут гнилые отмазы городить. Берешь и делаешь, без задней мысли. Раз раз, раз раз. Приду - проверю.
402 984584
>>4580
Выкладывай фото, может ты тоже чед-качок из США и тебе всё легко даётся
GigaGodot.jpg110 Кб, 1566x2048
403 984599
>>4584

>Выкладывай фото


Я у тебя за спиной.
404 984600
Как думаете, гдскрипт потянет cycle accurate эмулятор процессора? Я скачал два проекта посмотреть, но интересно послушать мнения, угадывания.
405 984602
>>4600
Для конкретики - допустим, эмулятор NES/Famicom, на некропеку, на некроведро, в веб версию
406 984607
>>4600

>cycle accurate эмулятор


Ты бы хоть вот эту ссылку приложил:
https://retrocomputing.stackexchange.com/questions/1191
Что-то простое потянет, но зачем? троллейбус.jpg

>>4602

>эмулятор NES/Famicom


>Ricoh 2A03 @ 1.79 MHz


>Ricoh 2A07 @ 1.66 MHz


Условно, тебе нужно эмулировать как минимум 2 миллиона инструкций на процессоре, способном выполнять 3 миллиарда инструкций в секунду. Это означает, у тебя в запасе около 1000 инструкций. Я предполагаю, что интерпретатор GDScript в среднем затрачивает меньше 1000 инструкций, но результат зависит от того, что нужно сделать на GDScript для эмуляции одной инструкции целевого процессора. Дополнительно учитывай что у нас тут 64-битные переменные для всего, и код бегает по RAM...

Также, инструкция/цикл - не фиксированное число. Некоторые инструкции выполняются за цикл, другие требуют несколько циклов процессора. И разница в архитектурах (x86/ARM) очень большая, поэтому у мобильных процессоров всё сильно по-другому.

>некропеку


>некроведро


>в веб версию


Это всё слишком абстрактные понятия.

Мне кажется, в эмуляции самое сложное - раздобыть описание старого железа и разобраться в нём. Т.е. ты можешь написать proof of concept на GDScript, потом переписать на C/C++ для скорости. Главное тут - это понимать, что ты там вообще эмулировать собрался.

Или ты хочешь новый процессор придумать?
sage 407 984615

>>


984577

Сумашедший, пьняый, боты ?
Блять что это за objet прибежало?
408 984616
>>4607

>Ты бы хоть вот эту ссылку приложил:


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

> интерпретатор GDScript в среднем затрачивает меньше 1000 инструкций,


Да это здравый рассчет, скорее всего 1000 это очень мало времени.

>Это всё слишком абстрактные понятия.


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

>в эмуляции самое сложное - раздобыть описание старого железа и разобраться в нём


Это все есть навалом в принципе и на форумах и в репозиториях детально описано.

>Т.е. ты можешь написать proof of concept на GDScript, потом переписать на C/C++ для скорости


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

> но зачем?


Ну тут 2 направления можно сделать, либо объединенный эмуль, потому что сейчас на каждый ретрокомп десятки разных эмулей причем устаревших, часто Вин или Лин-онли и так далее. Второй вариант - IDE. В принципе я нашел 2 челиков которые что-то в таком направлении делают но у них зачаточное состояние. У одного не запустилось, у другого получилось 10 фпс на i7-12650H что значит 30-60 фпс на некропеке точно не будет.
409 984618
>>4616

>объединенный эмуль


Не изобретай велосипед, всё давно есть:
https://github.com/Swordfish90/Lemuroid
Работает за счёт множества разных эмулей.
Лично я во много разных игр с него поиграл.

>Второй вариант - IDE.


Зачем делать игры под NES на Godot?
Лучше проблемы с базовым Godot реши...

>требует пересборки движка


Можно же готовые .DLL/.SO закидывать.
Для Android, вроде, нужно билдить с Gradle.
410 984622
>>4618

>Не изобретай велосипед, всё давно ест


И где у него дестоп и веб версия?
И еще нюанс - GPL. Я конечно фанат Столмана, но для коммерческой разработки MIT/BSD уже привычнее

>Зачем делать игры под NES на Godot?


Потому что на годоте удобно делать тулзы и гуй, а в удобных инстроументах удобно делать продвинутые игры для старого железа. Опять же потому что существующие тузлы зачастую устарели, какой нибудь win32 мамонт который даже темную тему не поддерживает.
А еще можно сделать - тудумс - компилятор из гдскрипта. Есть же компиляторы для 2600 из бейсика под их "движок-конструктор".

>Можно же готовые .DLL/.SO закидывать


Хм, через GDExtension/GDNative, надо подумать. По идее Github Action будет все собирать.
411 984632
>>4622

>коммерческой разработки


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

>удобно делать тулзы и гуй


Подключи эмулятор к Godot, если очень надо.

>компилятор из гдскрипта


Скорее/лучше это будет транспилятор...
https://en.wikipedia.org/wiki/Source-to-source_compiler
412 984633
>>4632

>Ты упоролся, коммерческий эмулятор делать?


Ну вообще то я по работе делал несколько раз. Это вопрос прав, например можно его продать нужным людям. А можно просто собирать донаты к примеру. Не знаю че там у свича, но в ретро эмуляторах обычно саму эмуляцию (схемотехнику) давно никто не охраняет, ромы биоса охраняют но в целом всем тоже похуй, а еще есть варианты. внезапно, опенсорс биосов, вот эти ребята меня вообще впечатлили, переписать 8-16кб ассемблера с нуля по спекам. А свищ это современное, он вроде продается в наши дни.

>Подключи эмулятор к Godot, если очень надо.


Ну это скучно, да и контроля меньше. Например если отладчик делать.

>корее/лучше это будет транспилятор...


Смотря как делать, конечно, потому что часто я вижу что после конвертации в ассемблер/машкод еще делают piphole микрооптимизации, не как настоящая оптимизация когда может целый алгоритм переписать другими вещами, а просто шаблонные последовательности инструкций на более экономные.
413 984640
>>4404

>GTA V


>почаще наблюдайте за тем, что происходит в существующих играх



Вместо того чтобы пойти и посмотреть в исходники GTA5 https://archive.org/details/gta-v-source-code_202312, мы все должны запустить игру и наблюдать за тем чем занимаются нпк, делая заметки в блокнотик если заметим что-то странное.
414 984641
>>4640
и что я там увижу в твоих говноисходниках? гдскрипт?
415 984642
>>4641
Там исходные коды GTA5 которые давно украли и выложили в сеть. Их даже можно скомпилировать в рабочую игру. При чем тут вообще гдскрипт, и почему говноисходники?
416 984722
>>4640

>посмотреть в исходники GTA5


1. Это нелегально, ты преступник даже если просто посмотришь в эти исходники, ещё до компиляции. Естественно, о копировании можешь забыть...
2. В чужих исходниках всегда сложно разобраться.
3. Даже если разберёшься - геймдизайн по кодам прочитать нереально, его нужно ЧУВСТВОВАТЬ. Вот именно поэтому геймдизайнеры делают прототипы, самостоятельно играют в них и оценивают идеи в непосредственном опыте игры. Бестолку смотреть в исходные коды, если ты не играешь в саму игру.

>должны запустить игру и наблюдать


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

>делая заметки в блокнотик


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

>>4642

>почему говноисходники?


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

Т.е. не стоит брать GTA V как пример хорошего кода. Однако, геймдизайну у неё вполне можно поучиться - удовлетворить столько людей сразу нужно суметь. И несмотря на критику, они всё же учли ошибки GTA IV.
417 984723
>>4722
А какие есть примеры хорошего кода в играх, кроме игр Кармака? Рогалики еще навернеое пишут чисто.
1731875745041.png19 Кб, 710x630
418 984725
Годаны. Я тут перекатываю свой петпроект с трёшки на четвёрку, и слегка прихуел. Менюшки ещё хуже стали. Я в трёшке жаловался, что замороченно добавлять подменю, но они хотя бы отображались нормально. А тут они ещё и отображаются неправильно. Субменю второго уровня сбивается позиционирование. Кто-то работал с меню? Есть быстрые решения?
419 984726
>>4725
Пришлось костыли подставлять.

> modes.about_to_popup.connect(func(): modes.position.x = new_game.position.x + new_game.size.x)


Снова.
Ёбаная жизнь. Опенсорсная.
420 984727
>>4723

>кроме игр Кармака


Его код из исходников дума уже давно успели засрать в /gd
421 984730
>>4727

>Его код из исходников дума уже давно успели засрать в /gd


>>4727
Если бы Кармак, Рокстар, и прочие говноделы хоть иногда заглядывали бы в /gd, то научились бы как делать нормально, а не через жопу.
422 984731
>>4727
тренд с разъебом дума где-то остался?
image.png1,6 Мб, 1920x1080
423 984735
Что нужно покурить, чтобы сделать всплывающие подсказки как в крестах и прочих новых парадохотайлах? Может уже где-то есть реализации этого?
424 984760
>>4726
>>4725
Так что, кто-то ответит на мой ответ? Мне дальше идти по жизни с костылём или там есть какая-то настройка, очевидная для всех, кроме меня?
425 984767
>>4735
С такой детальной информацией, проще всего не полагаться на всякие попапы, а просто сделать отдельную сцену под это, и показывать/скрывать/двигать как обычную подсцену.
426 984768
>>4767
Я больше не про подробную инфу, а про всплывающее окно при наведении на некоторые ссылки в тексте где бы они ни были, которое тоже может порождать всплывающие окна. Плюс где-то хранить инфу о том, что нужно выводить для меча или орка
427 984778
>>4768
Всплывающие окна над всплывающими окнами - это вообще так себе идея. Лучше как в редакторе годота панель инспектора.
Ну а по твоему вопросу - готового не попадалось. Ты имеешь в виду какой-то аддон по типу инвентаря? В принципе это MVC или MVVC паттерн. У тебя где-то есть сами данные в игре, типа сколько урона у меча. Может быть json, может еще что-то. И надо сделать какое-то кастомное отображение этого. Вообще, тут два подхода может быть. Или каждый объект хранит свое описание и просто возвращает его фнукцией типа get_description_text(). Или наоборот какой-то конструктор собирает строчки и перебирая все объекты сам знает какую инфу о каких типах объектов писат, и берет уже только значения урона у объекта и т.д
Самый прямолинейный способ это какой нибудь шаблонизатор, когда строчки вида "This {objname} deals {dmg} damage" и потом применять к ним string.format или регексы.
428 984780
>>4731
Не было отдельного треда, помню, что это было в движкосраче, а вот когда - уже сложный вопрос
Снимок экрана в 2024-11-18 15-52-48.png237 Кб, 1473x775
429 984784
>>4778

>Всплывающие окна над всплывающими окнами - это вообще так себе идея.


Ты только что интерфейс двача
430 984785
>>4778
Ну не знаю как панель инспектора отработает мой желаемый сценарий
Я навожу курсок на лог, в котором
Витя бьёт вас и наносит 4 огненного урона
Я навожу курсор на Витя
Витя это орк, он снаряжен мечом, одеждой
Я навожу на орк
Орк - раса славящаяся своей силой и агрессией
Я навожу на раса
Все существа принадлежат той или иной расе. Она влияет на характеристики и особенности существ.
Я навожу на существа или существ
Существа - игровые объекты, имеющие возможность совершать действия и обладающие душой
Я навожу на объекты
Объекты это объекты, заебал
431 984789
>>4785

>Я навожу на орк


И промахнувшись все закрывается или открывается что-то другое, и все надо начинать сначала.
В любом случае, в чем вопрос? В годоте есть как встроенный механизм через _make_custom_tooltip так и свое можно накостылять через всякие mouse events
>>4784
Это кое-как работает только потому, что ты наводишь на самую первую или самую последнюю ссылку. Когда их несколько, или ссылки в середине поста, тогда и начинается веселье.
image.png5 Кб, 84x122
432 984794
Игры то делаете?
433 984830
>>4794
Не делаю.
У меня ебало вот такое.>>4760
434 984833
>>4789

>в чем вопрос?


На первую половину ответ видимо _make_custom_tooltip, но остаётся вопрос как сделать текст, у некоторых слов которого это окошко откроется.
image.png46 Кб, 907x318
435 984840
>>4833
В RichTextLabel есть какой-то функционал meta. С сигналом по наведению мыши или клику. Я им не пользовался и насколько он хорош не знаю.
https://stackoverflow.com/questions/77208994/is-there-a-way-to-detect-mouseover-over-specific-words-in-richtextlabel-or-any

Как вариант можно навасянить через FlowConatiner, разбивая части предложений на отдельные Label - и уже обрабатывать mouse entered над ней.

Вспомнил еще "замечательное" свойство Mouse over - его нечем сделать на мобилке, там нет мыши.
436 984851
>>4840

> В RichTextLabel есть какой-то функционал meta. С сигналом по наведению мыши или клику. Я им не пользовался и насколько он хорош не знаю.


В версии 3.0.6 он был хорош, я на его основе делал диалоговую систему с кликабельными ключевыми словами, и участвовал в ТВГ, и занял второе место, с конца.
437 984863
>>4445
Я ковырял разные варианты, сам за Spine, но пока на демку не выйдем, будем довольствоваться тем что есть из бесплатного. Доки подготовили, геймплей расписали, код написал, блять с художниками беда, хрен найдешь. Понятно что на энутзиазме мало кто хочет, но че поделать будем ковыряться. Я и так на проекте и код пишу и арты для девок генерю(генерил, научил как пользоваться SD в облаке, сейчас другие генерят, но вяло и медленно), вот уже DragonBones анимацию изучил, получается. Короче если художника и UIщика не найдем, пилить будем долго.
дженериккал.jpg1,7 Мб, 2560x1440
438 984869
>>4863
Пизда жиза анончик, тоже кодер и весь арт в стейбле сделал, плюс сам анимирую. Но честно говоря, спустя полтора года тыканья в арт, я теперь не боюсь и ручками сам что-то порисовать, сделать. Раньше думал, мол ай баля найму в будущем художников, будут допиливать арт. В итоге у меня есть графический планшет, рука поставлена и рисовать. В итоге смотрю туториалы рисовак чтоб закрывать нейрокосяки ручками. Никогда не думал что я стану чета рисовать и изучать рисование.

>SD в облаке


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

>DragonBones


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

>UIщика


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

>Пилить будем долго


Мы уже почти прошли через весь ад и выкакаем скоро 0.1(лол), пайплайн настроен, так что с кайфом все идет, всю попоболь прошли. Но даже чтоб 0.1 высрать надо какое-то ебанутое количество усилий потратить
439 984875
>>4869

>Никогда не думал что я стану чета рисовать и изучать рисование.


Та же фигня. Уже и рисовать начал и UI пробую с китайских дрочилен в pinterest стырить.

>SD


Что посоветуешь, есть смысл controlnet изучать? Говорят он лучше для контроля генерации.

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


Удачи анончик, чтоб все сраслось!
440 984878
>>4725

>Субменю второго уровня сбивается


ИМХО, хороший UI/UX требует избегать создания субменю второго уровня. Представь себя на месте пользователя - навёл мышь на одну кнопку, навёл на вторую кнопку, навёл на третью... А, нет, не навёл, а промахнулся, теперь нужно начинать всё сначала. Поэтому нужно избегать субменю в целом, тем более многоуровневых, даже если у тебя сложная утилита.

А в играх такие меню лучше вообще не делать.
441 984882
>>4878
Интересные соображения, но они не оправдывают баг.
442 984887
>>4882
Если это баг, то тебе проще открыть issue на гитхабе
443 984888
>>4785
Как уже сказали выше - это всё не очень удобно для пользователя, если у тебя окошки исчезают сами. Но ничего принципиально сложного в таком UI нет.

Тебе нужен RichTextLabel и теги [url=строка], либо специальный метод push_meta(), а потом смотри:
https://docs.godotengine.org/en/stable/classes/class_richtextlabel.html#class-richtextlabel-signal-meta-clicked

Ты можешь показывать сжатую информацию по meta_hover_started, скрывая по meta_hover_ended, и открывая подробное окошко по meta_clicked. Все эти события возвращают то, что ты [url=написал здесь], либо объект, который ты отправил push_meta(сюда).

Чтобы упростить себе жизнь, делаешь систему с универсальными методами наподобие таких:

>get_brief_information(what: String) -> String:


>get_full_description(what: String) -> String:


Которая сочиняет текст для RichTextLabel со всеми необходимыми тегами, включая [url=what]. Тогда обработчики meta_ можно сделать примерно так:

>func _on_meta_hover_started(meta):


>_ brief_info.popup(get_brief_information(meta))


>func _on_meta_hover_ended(_meta):


>_ brief_info.hide()


>func _on_meta_click(meta):


>_ var w := create_window(get_full_description(meta))


>_ get_parent().add_child(w) # или куда тебе надо


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

Ну а brief_info - всегда существующее окно, которое временно отображает короткую информацию. Может быть, создаёт окно с подробной информацией, если пользователь успел на него кликнуть?.. Много чего можно придумать, но нужно тестировать эти идеи.
444 984895
>>4887

>открыть issue на гитхабе


https://github.com/godotengine/godot/issues/73285

>>4882

>они не оправдывают баг


Я не оправдываю баг, баг есть баг.

Но ты что-то перемудрил в своём UI, если требуется субменю второго уровня. Это всегда неудобно. Ты б вместо жалоб на Godot лучше пересмотрел свой UI.

Алсо, могу предположить, что этот баг до сих пор не пофиксили, потому что никому в голову не приходит стакать попап меню дальше первого субменю. В том смысле, что это не критическая проблема для UI, тем более в контексте игрового движка.
445 984898
>>4875

>UI пробую


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

>controlnet изучать


А без этого невозможно будет добиться чего-то адекватного от нейронки. Да там и изучать нечего честно говоря. Я вообще методом тыка нашел более оптимальные варианты использования. Алсо, контролнет tile самый важный на самом деле, он дает возможность сохранить цвета, дык еще и пропорции лучше сохраняет. У нас пайплайн заключается в скетчинге и прогонке через контролнет тайл, а дальше убирание нейрокосяков, В итоге цвет можно контролировать и анатомию на этапе скетчинга.А еще стиль меняет, потому что этот стиль, чтобы не было джинириками, сам стиль намиксован только под 1.5, его не повторить на след моделях, только обучать лору если(в будущем так и сделаем), ну а скетчем на SDXL, сперва была пони, теперь на нуб переходим.

>Удачи анончик, чтоб все срослось!


Спасибо, у тебя тоже все получится.
Могу бесконечно об этом говорить честно говоря.
Пикрейлет литерили мем нарисуйте круг, а теперь сову
На пиках некоторые этапы пропущен, 3 и 4 пик чисто тесты
446 984907
Может пояснит мне кто, какое блять практическое предназначение у серых полос в фуллскрине. Это бля комбо какоето. В обычном фуллскрине из за этих блядских полос криво пиксельарт скейлится, в ексклюзивном с хуй пойми чего фпс лочится на 30 и пока не свернуть и развернуть игру, лок не пропадет. Сил уже сука нет. О локе в 30 фпс я и раньше писал итт, попытался отследить из за чего это происходит, не смог, гуглил, тоже нихуя. На серые полосы изначально было поебать, делал их черными, но в один момент заметил обрубленые вертикали пикселей в рандомных местах, во вьюпорт моде, блять.

И еще не в тему, но нахуя они в 4.3 тайлмапу кишки выпустили, я сначала даже не вкурил как на другой слой переключиться.
0S1zqg.png108 Кб, 768x640
447 984908
А почему вы Godot не используете вместо морально устаревших Spine, DragonBones, Blender? Топ тема же, подпилить напильником под себя и всё заработает.

>>4863

>сейчас другие генерят, но вяло и медленно


Лол, в чём смысл? Сам кнопку нажать не можешь?

>если художника не найдем, пилить будем долго


Лол x2, рисование - самое долгое и затратное.

>UIщика


>>4869

>одна из самых душных тем


>спиздил концепт интерфейса


Что вам двоим мешает юзать Control ноды Godot? Разработка ГУЯ - самое тривиальное в геймдеве. Абсолютно любая веб-макака справится за вечер.

>Но даже чтоб 0.1 высрать надо какое-то ебанутое количество усилий потратить


Лол x3, вот, просто посмотрите на эту Godot-игру:
https://coolnsfwgames.itch.io/pau-your-virtual-pet
Графониум - полный улёт, я б даже купил такое.
Геймплей - 99% кода в простейших мини-играх.
ГУЙ - ну тип нашлёпал кнопок, лол, чё вам надо?
Анимации 100% сделаны в Godot - ваще ништяк!
Коментов дохрена, народ просит обновлений.
Я лично подрочил и буду ждать обновлений.

Почему Ерохин может так, а вы жопу рвёте для 0.1? Серьёзно, потом будете писать плаксивую статью:

>Как смлить джва года жисни в расрампотку имгры с помосью мнямронок и абаслаца с ремлисом 0.0.1


Пока вы чистите вилкой нейроарт, Ероха релизит 1.0, собирая вокруг себя аудиторию из текущих тянучек, кунчиков и даже тех, кто ещё не определился...
0S1zqg.png108 Кб, 768x640
447 984908
А почему вы Godot не используете вместо морально устаревших Spine, DragonBones, Blender? Топ тема же, подпилить напильником под себя и всё заработает.

>>4863

>сейчас другие генерят, но вяло и медленно


Лол, в чём смысл? Сам кнопку нажать не можешь?

>если художника не найдем, пилить будем долго


Лол x2, рисование - самое долгое и затратное.

>UIщика


>>4869

>одна из самых душных тем


>спиздил концепт интерфейса


Что вам двоим мешает юзать Control ноды Godot? Разработка ГУЯ - самое тривиальное в геймдеве. Абсолютно любая веб-макака справится за вечер.

>Но даже чтоб 0.1 высрать надо какое-то ебанутое количество усилий потратить


Лол x3, вот, просто посмотрите на эту Godot-игру:
https://coolnsfwgames.itch.io/pau-your-virtual-pet
Графониум - полный улёт, я б даже купил такое.
Геймплей - 99% кода в простейших мини-играх.
ГУЙ - ну тип нашлёпал кнопок, лол, чё вам надо?
Анимации 100% сделаны в Godot - ваще ништяк!
Коментов дохрена, народ просит обновлений.
Я лично подрочил и буду ждать обновлений.

Почему Ерохин может так, а вы жопу рвёте для 0.1? Серьёзно, потом будете писать плаксивую статью:

>Как смлить джва года жисни в расрампотку имгры с помосью мнямронок и абаслаца с ремлисом 0.0.1


Пока вы чистите вилкой нейроарт, Ероха релизит 1.0, собирая вокруг себя аудиторию из текущих тянучек, кунчиков и даже тех, кто ещё не определился...
448 984911
>>4908
Перетолстил
449 984912
>>4908

>мешает юзать Control ноды Godot


Вопрос же не в тех. аспекте, а в визуальном

>https://coolnsfwgames.itch.io/pau-your-virtual-pet


Мне такое не нравится от слова совем.
Это не моя игра мечты, очевидно же.

>Графониум - полный улёт, я б даже купил такое.


Выглядит не дрочибельно вообще.

>ГУЙ - ну тип нашлёпал кнопок, лол, чё вам надо?


Все так, но не отменяет того, что у графон хуже игр 2000 года.

>Анимации 100% сделаны в Godot - ваще ништяк!


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

>Коментов дохрена, народ просит обновлений.


Да честно говоря на любой контент найдется спрос

>Я лично подрочил и буду ждать обновлений.


Вообще не дрочибельно.

>Ероха релизит


щито поделать, мы не ерохи, мы сидим на дващах тащемта
450 984913
>>4907

>нахуя они в 4.3 тайлмапу кишки выпустили


https://godotengine.org/releases/4.3/#highlights-new-tilemaplayer-node

>Layers have become more flexible


>Before this release, if you wanted to add layers to your TileMap, you had to add them in the inspector. We simplified this by creating a new TileMapLayer node to replace the old approach completely.


>Aside from being more intuitive to use, this is now more in line with Godot Engine's design philosophy in general.


>For your convenience, you can convert your existing TileMap nodes into TileMapLayer nodes with one click directly in the editor. The deprecated node type is still supported for the time being, if you prefer.



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


https://docs.godotengine.org/en/stable/tutorials/rendering/multiple_resolutions.html

>Games should use the Exclusive Fullscreen window mode, as opposed to Fullscreen which is designed to prevent Windows from automatically treating the window as if it was exclusive fullscreen.


>Fullscreen is meant to be used by GUI applications that want to use per-pixel transparency without a risk of having it disabled by the OS. It achieves this by leaving a 1-pixel line at the bottom of the screen. By contrast, Exclusive Fullscreen uses the actual screen size and allows Windows to reduce jitter and input lag for fullscreen games.


>When using integer scaling, this is particularly important as the 1-pixel height reduction from the Fullscreen mode can cause integer scaling to use a smaller scale factor than expected.



>фпс лочится на 30 и пока не свернуть и развернуть игру, лок не пропадет. Сил уже сука нет. О локе в 30 фпс я и раньше писал итт, попытался отследить из за чего это происходит, не смог, гуглил, тоже нихуя.


Попробуй переустановить драйверы для GPU.
451 984915
>>4912

>Это не моя игра мечты, очевидно же.


Ты ж порно-"slop" делаешь, о какой "мечте" речь?

>Там даже анимаций нет как таковой


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

>на любой контент найдется спрос


Тогда зачем так сильно париться ради 0.1 версии? Вываливаешь самосвал контента, на него слетается целевая аудитория и ты еженедельно подваливаешь дополнительный контент, сваливая всё добро в одну громадную кучу как настоящий творец искусства:
https://ru.wikipedia.org/wiki/Дерьмо_художника

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


>Выглядит не дрочибельно вообще.


>что графон хуже игр 2000 года.


>Вообще не дрочибельно.


>>4911

>Перетолстил


Хорош копингом заниматься, всё там дрочибельно, даже после фап-марафона можно додрочить на это, а лично мне почти 30 - представьте как школьники стачивают свой агрегат до мозолей на руках. Суть порнухи не в "качестве" арта, а в стимуляции мозга, поэтому быть гениальным художником или юзать костыли в виде 3D/нейросетей нет необходимости. Почитайте про супернормальные стимулы:
https://en.wikipedia.org/wiki/Supernormal_stimulus
Это фундамент всего арта и особенно порнухи. Если осознаете эту тему, прочувствуете на своём опыте - сможете рисовать сверхсексуальную порнуху в MS Paint, двигая мышку левой ногой, подвешенные к потолку за правую и надрачивая себя с двух рук.
452 984922
>>4840
>>4851
Спасибо, поизучаю!
453 984923
>>4888
И тебе спасибо!
454 984924
Поясните, годаны.
Допустим, я хочу создать не особо сложную городскую сцену, где есть ровный асфальт, а есть неровные газоны. И вот по поводу газонов чота я не понял, а как их сделать-то? Ну то есть, нужна какая-то нода вида "плоская решётка из геометрии", чтоб ей можно было на ходу поднимать-опускать полигончики. Вроде есть MeshInstance3D, в нём создать PlaneMesh или QuadMesh, а дальше-то что? Или это не то?

Важное уточнение. Хотелось бы обойтись БЕЗ аддонов/плагинов и всякого такого. А то с ними вечно какая-то хуйня.
455 984927
>>4924
Use this: https://docs.godotengine.org/en/latest/classes/class_surfacetool.html

Либо сделай готовый меш в блокбенче/блендере и экспортируй в годот.
456 984928
>>4924
Если только для визуала, можно сделать шейдер, который сдвигает вершины. Так можно вообще не то что газон, а целый мир нарисовать
https://www.youtube.com/watch?v=3U3pLKNqxBw
Но если ты по нему ходить хочешь, то проще поставить аддон террейна
457 984929
>>4915

>Ты ж порно-"slop" делаешь, о какой "мечте" речь?


У него даже нет патреона, о чем речь? Сколько заработал то?

>У него такие же анимации как у тебя (в сексе).


Нет. У него даже десятков слоев нет.

>но для версии 0.1


У него 1.0 версия

>Тут аудитория важнее


Сколько он заработал то? Где патреон его?

>Зачем так сильно париться


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

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


С чего ты взял что я так не буду делать?

>всё там дрочибельно


Нет

>аже после фап-марафона можно додрочить на это


Нет

>Почитайте про супернормальные стимулы


Вряд ли ты после прочтения стал дрочить на лоускил медскилзы.

>сможете рисовать сверхсексуальную порнуху


Покажи лучше свои работы

>орнуху в MS Paint, двигая мышку левой ногой


Неиронично такие есть, японцы любят медскилзить хорошо порнуху, но то что ты показал лютая недрочибельная хуйня.
mJwI3iEABP8.jpg42 Кб, 564x518
458 984931
>>4908

>Почему Ерохин может так, а вы жопу рвёте для 0.1?


Так это же ероха... у него наверняка есть ютуб канал и твиттер с миллионом подписчиков. А кто будет играть в игру начинающего ноунейм анона?
459 984960
>>4931
я уверен ероха и с игры из туториалов сделает хит на 100 миллионов долларов
460 984970
Аноны, кто знает как делать не стандартные ui элементы. Пример: допустим круглая кнопка или трапеция, то есть не квадрат. Что бы не тупо только графикой, а и нажатие распознается как не на квадрат, а чтобы оно распознавалось только по форме круглой( и др. форм) кнопки.
461 984971
>>4970
TextureButton / Textures / Click Mask
462 984973
А как можно вызвать нажатие всяких "ui_cancel", "ui_up" и тд через код? Типа персонаж заходит в зону, и в один раз выполняется всё что привязано к "ui_cancel"
463 984977
>>4927

>It can be used to construct a Mesh from a script


Не то. Надо из редактора.

>готовый меш в блокбенче/блендере


Тоже не подходит.
Надо состыковать газоны со всеми остальными окружающими объектами. А с таким подходом это вообще нереально. Разве что вообще всю сцену собирать в блендере. Вот к этому варианту я щас подхожу. Всё равно приходится каждую модельку через него прогонять, дабы очистить от всякого иерархического говна типа Sketchfab/model83ugu7r439j8uhw8f748ygb/MODEL/huyna/export/010001
464 984979
>>4973
функ твоя_хуйня():
залупа = круто

он_уи_кансел_прессед:
твоя хуйня()

он_ареа_ентеред:
твоя_хуйня()
465 984980
>>4895
Хорошо. Я... Пересмотрю свой UI. Сделаю как обычно. Как в миллионе других игр. Сделаю так, чтобы ничем не отличалось. Игрокам слишком сложно протянуть мышку по трём попапам. Трам-па-пам. Ясно.
467 984983
>>4981
Не реагирует
>>4979
У меня
функ в зону попало тело()
принт(тело попало)
<=и тут нужно вызвать ui_cancel, который удалит всё то, в чем он вызывается. Типа тыкнув пальцем по эскейпу всё нормально, а мне нужно чтобы код тыкнул пальцем по клавиатуре и удалил все объекты с этим сигналом.
468 984987
>>4983

> Не реагирует


Ой, сорян, думал это упрощёная версия обсуждаемого тремя тредами ранее:

> If you want to simulate _input, use parse_input_event instead.


https://docs.godotengine.org/ru/4.x/classes/class_input.html#class-input-method-parse-input-event

> var cancel_event = InputEventAction.new()


> cancel_event.action = "ui_cancel"


> cancel_event.pressed = true


> Input.parse_input_event(cancel_event)

469 984989
>>4987
Спасибо! Чет впринципе так и думал что нужно эвент экшн создать, но как дальше развить так и не понимал. Щас всё как надо работает.
А документация не открывается, видимо впн нужно ставить
470 984995
>>4989

>А документация не открывается, видимо впн нужно ставить


Сервер слабый, через раз грузит. Уже давно такая хуйня.
загружено.jpg57 Кб, 736x331
471 984996
>>4971
Вот спасибо. Как то я упустил этот момент c ClickMask.
Тогда вопрос вдогонку, как реализовать ui подобного плана, где кнопки треугольные и расставлены грань к грани.
472 984998
>>4996

> вопрос вдогонку, как реализовать ui подобного плана, где


В обратитесь в арт-студию. Всего за 100 косарей мы вам предложим UI/UX, и корпоративную айдентику.

Понял? Понял ссуть сраказма?
473 985007
>>4998
Пох на "Сарказм", мне интересно как технически подобное реализовать. Как нарисовать это к UI дизанерам
474 985009
>>4924

>неровные газоны


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

Как сделать из кода:
1. Берёшь простую плоскость:
https://docs.godotengine.org/en/stable/classes/class_planemesh.html
2. Увеличиваешь ей число subdivide_ чтобы у тебя получилась плотная сетка из квадратиков.
3. Конвертируешь в ArrayMesh, достаёшь данные:
https://docs.godotengine.org/en/stable/classes/class_arraymesh.html
4. Двигаешь вершины в коде как пожелаешь. Можно брать данные для сдвига из Noise.get_noise_2d():
https://docs.godotengine.org/en/stable/classes/class_fastnoiselite.html
5. Чтобы сгенерировать нормали автоматически:
- загружаешь в SurfaceTool.create_from...
- используешь generate_normals()
- возвращаешь commit()
6. Для генерации физики:
- грубо и быстро: Mesh.create_trimesh_shape()
- медленно, но оптимально для карты высот (нужно заполнять "вручную", принимает только высоты, но оптимизирована для подобных "неровных" карт):
https://docs.godotengine.org/en/stable/classes/class_heightmapshape3d.html

>>4977

>Надо из редактора.


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

>состыковать газоны со всеми остальными


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

В целом, сделать удачный ландшафт сложно, поэтому люди ищут готовое решение и просят у Godot сделать встроенный Terrain3D для подобного рода карт.
474 985009
>>4924

>неровные газоны


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

Как сделать из кода:
1. Берёшь простую плоскость:
https://docs.godotengine.org/en/stable/classes/class_planemesh.html
2. Увеличиваешь ей число subdivide_ чтобы у тебя получилась плотная сетка из квадратиков.
3. Конвертируешь в ArrayMesh, достаёшь данные:
https://docs.godotengine.org/en/stable/classes/class_arraymesh.html
4. Двигаешь вершины в коде как пожелаешь. Можно брать данные для сдвига из Noise.get_noise_2d():
https://docs.godotengine.org/en/stable/classes/class_fastnoiselite.html
5. Чтобы сгенерировать нормали автоматически:
- загружаешь в SurfaceTool.create_from...
- используешь generate_normals()
- возвращаешь commit()
6. Для генерации физики:
- грубо и быстро: Mesh.create_trimesh_shape()
- медленно, но оптимально для карты высот (нужно заполнять "вручную", принимает только высоты, но оптимизирована для подобных "неровных" карт):
https://docs.godotengine.org/en/stable/classes/class_heightmapshape3d.html

>>4977

>Надо из редактора.


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

>состыковать газоны со всеми остальными


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

В целом, сделать удачный ландшафт сложно, поэтому люди ищут готовое решение и просят у Godot сделать встроенный Terrain3D для подобного рода карт.
475 985012
>>4996
Можно рисовать много чего из кода:
https://docs.godotengine.org/en/stable/tutorials/2d/custom_drawing_in_2d.html
Но учитывай, что:
- слишком большое число операций может сильно замедлять рендеринг, т.к., видимо, нет растеризации (можно вручную растеризировать через SubViewport);
- вывод текста какой-то сложный, я не разобрался;
- многие эффекты лучше шейдерами делать.

Можешь объединить все свои треугольные кнопки в единственной ноде, потомке Control. Добавлять их и настраивать через инспектор или свои child-ноды. Некоторые типы меню лучше подходят к этому, как, например, радиальное (кнопки - секторы круга).

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

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

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

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

Не опускайся до изобретения "уникальных" колёс, если твоя цель - разработать полноценную игру.
476 985018
>>5012

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


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

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


Интерфейс будет честно спизжен с pinterestа, точнее взят за реф. Я цель ставлю сделать готовый продукт и не скатываться в разработку игру мечты и прочую ересь.
477 985030
>>5007
Так же как и в вебе. Берёшь таблицу и верстаешь ячейками. Где надо объединяешь.
478 985040
>>4983
Все ровно так же. Тебе надо вызывать не ui_cancel, а функцию, которую ты вызываешь и из ui_cancel, и из этого обработчика.
479 985044
>>4995
>>4989
Документация встроена в годот. Там есть сквозной поиск по функциям, нодам. Блин, правда нет ссылок на онлайн туториалы, а там часто полезные примеры. Недоработка.
Также есть такая кнопочка с лупой справа в инспекторе.
И переход по Ctrl+Click по названиям в редакторе скриптов.

Вообще говоря доки лежат в отдельной репе.
Ее можно скачать оффлайн (апдейтится по понедельникам)
Или поднять зеркало. Может кто то уже сделал.
https://github.com/godotengine/godot-docs
480 985049
>>5009

>шумом


Дак мне не шумом надо, а вручную - тут вершинку поднять, там опустить. Тут холмик нарисовать у забора, там канавку перед бордюром. И всё это так, чтобы видеть: где забор, а где бордюр.

Но крч я понял, что в самом годоте нет инструментов для такого редактирования. Ок.
GodotNode2Tile [e3lItaFOlow].mkv7,1 Мб, mp4,
1152x720, 2:39
481 985050
>>5049
Дело в том что ты хочешь террейн. Террейна в ядре годота не будет никогда, только аддонами. Были планы сделать официальный аддон который будет поддерживаться основной командой.

Сделать свой то не сложно
https://www.youtube.com/watch?v=AK951MB9kXM
Сначала делаешь такое гизмо, чтобы таскать отдельные вершины (такой я вроде даже видел). Потом захочешь "кисть" которая будет рисовать их горками. Потом захочешь хранить оптимальнее, то есть не в виде меша, в виде текстуры карты высоот heightmap. Потом захочешь лоды. И коллайдеры. И вуаля ты сделал еще один аддон террейна.

Вот например чувак делает аналог крокотайла.
https://github.com/QJPG/GodotNode2Tile
И там видно что он двигает отдельные вершины тайлов, а значит даже так можно собрать "ломаную" канаву.

Или вот например. https://www.reddit.com/r/godot/comments/17gclin/godot4_access_to_a_meshinstance3d_plane_to_edit/
482 985051
https://www.youtube.com/watch?v=dD65GIrJFMI
https://github.com/spimort/TerraBrush
Приятный террейн на сишарпе, надо будет пощупать
483 985067
>>5044

>зеркало


Лол, по "Godot docs mirror" гуглится это:
https://github.com/the-mirror-gdp/
Вот только эти предатели решили свалить:

>As of November 2024, we've made the extremely difficult decision to transition from Godot but we have exciting things in store. Check out our "Thank You & Technical Reflections" below.

484 985071
>>5067
Ничего себе, как же мы теперь без роблокса на годоте.
Обещали в следующем обращении сказать, чего же именно им в годоте не хватало.
2023 февраль.mp45,9 Мб, mp4,
800x600, 2:38
485 985076
>>5049

>в самом годоте нет инструментов для такого


Всё что надо - есть, и GDScript шустро работает.

>>5050

>Потом захочешь лоды.


ИМХО, самое сложное - бесшовные LODы.

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


Вообще не нужно, лучше сразу делать это:

>кисть которая будет рисовать


>в виде текстуры карты высот


Чтобы абстрагироваться от таскания вершин.

>коллайдеры


Это самое лёгкое в Godot...
486 985080
>>4987

> обсуждаемого тремя тредами ранее


А обсуждалось, кстати напомню, что при помощи такой генерации фейковых инпут-ивентов, можно реализовать шину событий поверх Input. Инпут-ивенты можно генерировать такие, которые реальным инпутом вообще не ввести, и к ним можно данные прицеплять, можно унаследоваться от InputEvent и скармливать инпуту полноценные объекты с состоянием.
487 985139
>>5050

>Террейна в ядре годота не будет никогда


Хуясе. При том, что террейны присутствуют в каждой второй 3д-игре, это очень странное решение для движка, который стремится занять нишу 3д.
Лан, пошёл я в блендер. А то в статичную карту впихивать велосипедные скрипты - такое. А все плагины для меня избыточны, да к тому же написаны на плюсах = лишняя заморочка по пересборке темплейта.
488 985142
>>5139
Ну да, если карта статичная, проще террейн в блендере. Да весь уровень проще в блендере. Всё что статично одной большой сценой и импортируй.
489 985144
>>5139

>да к тому же написаны на плюсах


Нет.
490 985157
>>5142

>Всё что статично одной большой сценой и импортируй


Это нормальный способ по производительности? Или лучше по кускам?
491 985159
>>5157
Все современные форматы импорта-экспорта поддерживают иерархию сцены. Таким образом даже импортированная целиком из блендера сцена у тебя внутри годота предстанет в виде иерархии (дерева нод). То есть, зная имена отдельных блендеровских объектов, ты можешь им отдельно что-то поменять и даже заанимировать.
492 985162
>>5159
Окей, спасибо.
493 985164
>>5157
Правильный способ для террейна - это специализированный аддон с лодами, основанный на heightmap, ну серьезно.

Если говорить про одним мешем или частями, то делить. Потому что освещение, тени лучше работают. Иначе будет ситуация, что движок будет рассчитывать освещение по всей, возможно сложной ломаной поверхности, даже для частей которые не видны.
494 985167
>>5164

>Если говорить про одним мешем или частями, то делить


Блять, а анон выше сказал, что одним мешем норм будет. Ты же про любые сцены говоришь, не только про террейн? Допустим у меня пара комнат из подземелья со статичными пропсами, как мне поступить?
495 985169
>>5167

> одним мешем норм будет


Одной сценой, а не одним мешем. Или о каком аноне речь?
496 985171
>>5167
Он имел в виду, что ты в блендере можешь использовать деление на объекты, и при импорте иерархия сцены сохранится.
498 985204
>>5203
tl;dr версия - типизируй свой код?
499 985208
Годаны, а кто-нибудь щупал луа, за последний год что-нибудь поменялось?
500 985231
>>5139

>очень странное решение


Тысячу раз обсуждали уже на GitHub... И здесь тоже.

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

Рассматриваем heigtmap terrain:
- Для чего чаще всего используют Godot? 2D игры.
- Нужен ли террейн большинству? Нет, не нужен.
- Можно ли использовать как аддон? Да, можно.
- Можно ли сделать универсальное решение, что подойдёт большинству нуждающихся, и при этом не раздует движок на сотню мегабайт, перегрузив код и ГУЙ сотней дополнительных фич? Нельзя.

Нет никакой ультимативной реализации террейна, который бы подошёл 100% нуждающихся игр без создания 100500 субрешений и раздувания движка. А реализация, покрывающая 5% игр с террейном будет каплей в море 2D игр и 3D игр без террейна.

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

>в статичную карту впихивать скрипты


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

>А все плагины для меня избыточны


В чём избыточность? Чего ты боишься?

>да к тому же написаны на плюсах


Есть варианты на GDScript, если нужно. C++ просто значительно быстрее и преимуществ от GDScript в конкретной задаче террейна как бы и нет. Но если террейн статичный, то этот код в билде не нужен.

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


Если там dll в папке - ничего пересобирать не надо. Пересборка потребуется только под web + мобилки. Опять же, только если код аддона зачем-то нужен в финальной версии игры - редактор террейна может выдавать статичный меш без какого-либо кода.
500 985231
>>5139

>очень странное решение


Тысячу раз обсуждали уже на GitHub... И здесь тоже.

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

Рассматриваем heigtmap terrain:
- Для чего чаще всего используют Godot? 2D игры.
- Нужен ли террейн большинству? Нет, не нужен.
- Можно ли использовать как аддон? Да, можно.
- Можно ли сделать универсальное решение, что подойдёт большинству нуждающихся, и при этом не раздует движок на сотню мегабайт, перегрузив код и ГУЙ сотней дополнительных фич? Нельзя.

Нет никакой ультимативной реализации террейна, который бы подошёл 100% нуждающихся игр без создания 100500 субрешений и раздувания движка. А реализация, покрывающая 5% игр с террейном будет каплей в море 2D игр и 3D игр без террейна.

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

>в статичную карту впихивать скрипты


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

>А все плагины для меня избыточны


В чём избыточность? Чего ты боишься?

>да к тому же написаны на плюсах


Есть варианты на GDScript, если нужно. C++ просто значительно быстрее и преимуществ от GDScript в конкретной задаче террейна как бы и нет. Но если террейн статичный, то этот код в билде не нужен.

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


Если там dll в папке - ничего пересобирать не надо. Пересборка потребуется только под web + мобилки. Опять же, только если код аддона зачем-то нужен в финальной версии игры - редактор террейна может выдавать статичный меш без какого-либо кода.
501 985232
>>5071

>как же мы теперь без роблокса на годоте


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

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

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

Теперь представь, что ты скачиваешь абсолютно бесплатную игру, в которой ты можешь играючи настраивать какие-то параметры, создавать новые локации, объекты, игровые механики, персонажей. Конечно, ты натыкаешься на ограничения - но ты проделал половину работы и делаешь экспорт - в форматах, понятных ванильному Godot. Теперь ты открываешь проект в Godot и погружаешься в "низкоуровневое" доделывание некоторых идей - совершенно без ограничений конструктора.

Разве это не было бы фантастическим дополнением к базовому Godot? Разве не привлекло бы больше новых разработчиков игр на базовый Godot?

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

Т.е. базовая идея гениальна, но исполнения нет.
# OP 502 985233
>>5231

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


Там кстате запилили блокскрипт. Он визуальнее визуального. Но пока что аддон в зачаточном состоянии.
https://godotengine.org/asset-library/asset/3095
https://www.youtube.com/watch?v=WlUN7Zz0Djg

Кстати, предлагайте арт на перекат. Позже перекачу.
1732186258662.png572 Кб, 811x720
ПЕРЕКАТ # OP 503 985262
Обновить тред
« /gd/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

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

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