Главная Юзердоски Каталог Трекер NSFW Настройки

Gamedev

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 511 147 89
Godot #33 Аноним # OP 19/01/23 Чтв 15:28:13 852131 1
1674131292681.png 1803Кб, 1600x1600
1600x1600
Добро пожаловать в тред любви, взаимопомощи и... в этом треде мы ждём игру про йобу от анона >>852118 →

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

Ссылки
Руководство по стилю: https://docs.godotengine.org/ru/stable/tutorials/scripting/gdscript/gdscript_styleguide.html
Документация: https://docs.godotengine.org/ru/latest/ https://docs.godotengine.org/en/stable/
Скачать движок: https://godotengine.org/download/ или http://store.steampowered.com/app/404790/Godot_Engine/
Новости движка: https://godotengine.org/news/
FAQ: https://docs.godotengine.org/ru/latest/about/faq.html
Примеры качаются прямо в движке через свой магазин в отдельной вкладке AssetLib. Там есть всё - от платформера до чата.
Играть в игродела онлайн без регистрации: https://editor.godotengine.org/releases/latest/ с дивана нельзя.
Игры, созданные глобальными кириллами: https://steamdb.info/tech/Engine/Godot/ https://steamcommunity.com/app/404790/discussions/0/412448792354265655/
Изумительный Годот: https://github.com/Calinou/awesome-godot https://github.com/godotengine/awesome-godot - подборка дополнений, модулей и минишоукейc.
Аддон для диалоговой системы: https://godotengine.org/asset-library/asset/833
Прекомпилер шейдеров: https://godotengine.org/asset-library/asset/977 С версии 3.5 больше не нужен.
Библиотека готовых шейдеров: https://godotshaders.com
Майндмаппинг проектов не отходя от кассы: https://godotengine.org/asset-library/asset/879
SmartShape для рисования 2D-террейнов без задней мысли: https://godotengine.org/asset-library/asset/715
Конвертор кваковских карт для ностальгирующих дидов: https://godotengine.org/asset-library/asset/446
Конвертер блендеровских моделей в формат сцен: https://docs.godotengine.org/en/stable/getting_started/workflow/assets/escn_exporter/index.html
Конвертер блендеровских файлов прямо в движок: https://github.com/V-Sekai/godot-blender Надо только в настройках проекта путь к blender.exe указать. Потом просто закидываешь .blend в папку и импортируется.
Туториал по шейдерам: https://github.com/Volkovina/GLES-2.0-2D-Fragment-Shader-Tutorial-Series-in-Godot-Beginner-to-Advanced ГЛЕС2, да, но ты сначала БАЗУ выучи, ёпт!

Для любителей пощекотать конпеляцию
Лучше кинуть ссылку на список всех языков: https://github.com/Vivraan/godot-lang-support

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

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

Архивный: >>833955 (OP)
Аноним 19/01/23 Чтв 15:56:39 852148 2
web.png 29Кб, 826x424
826x424
а эта опция для web экспорта где меняется?
Аноним 19/01/23 Чтв 17:10:05 852180 3
Сук, где настроить-то разрешения при импорте под Андроид?
В AndroidManifest прописываю, что нужно отключить, но всё затирается при экспорте.
В самом Годоте указываю только 2 нужных разрешения, но видимо из-за плагинов подключаются ещё 3 лишних. Как мне от них избавиться?
Аноним 19/01/23 Чтв 17:59:40 852196 4
>>852148
Могу ошибаться, но сейчас такой схемы нет, т.к. в шаблоне экспорта уже есть worker.js, то это вроде означает что она и есть многопоточная по умолчанию. А разделение версий тогда между threaded и threaded+dynamic linking
Аноним 19/01/23 Чтв 18:00:31 852197 5
>>852131 (OP)
ссылки на herokuapp.com из шапки надо убрать, ведь там закрыли фри хостинг.
Аноним 19/01/23 Чтв 18:05:56 852198 6
>>852131 (OP)
Настолько паршиво мне ещё никогда не было... Ещё одного провала я не выдержу! Пришло время окончательно перестать пытаться, снять розовые очки, и не обманывать себя.
Аноним 19/01/23 Чтв 18:12:55 852202 7
>>852198
А у меня наоборот сейчас все круто, очередную игру доделываю, и уже следующий протоип начал с художником пилить.
Аноним 19/01/23 Чтв 18:34:53 852208 8
>>852196
а экспорт веба теперь, что ругается, SharedArrayBuffer перевод в enabled у браузера не помогло

Error
The following features required to run Godot projects on the Web are missing:
Cross Origin Isolation - Check web server configuration (send correct headers)
SharedArrayBuffer - Check web server configuration (send correct headers)
Аноним 19/01/23 Чтв 18:58:52 852219 9
Аноним 19/01/23 Чтв 18:59:43 852220 10
>>852208
Насколько я знаю такой экспорт уже нельзя просто в браузере открыть, надо именно минимальный вебсервер запускать, и там должны быть флаги указаны. Вот такой сейчас сервак набросал. Открывать в браузере соответственно localhost:8003, порт можно поменять.
https://gist.github.com/realgdman/4e56a02c7ed05df035673ed9c16ff1c7
Аноним 19/01/23 Чтв 19:01:15 852222 11
>>852220
ну я тоже не просто в браузере, оно и раньше не открывалось
пробую через python -m http.server
потом уже в браузере захожу на localhost
Аноним 19/01/23 Чтв 19:01:58 852224 12
>>852220
а куда-нибудь выкладывал для теста vk/yandex/itch или еще?
Аноним 19/01/23 Чтв 19:03:41 852226 13
1553352894534.png 18Кб, 778x89
778x89
>>852222
-m http.server не хватит потому что надо возвращать два ответа в хедере, а еще и тип для .js. Просто вместо него запускай gist выше.
>>852224
На itch должно работать, раньше надо было просить админа включить эти хидеры, но сейчас там вроде просто галочку сам ставишь.
Аноним 19/01/23 Чтв 19:25:15 852239 14
>>852226
о, благодарю, сейчас для тестирования самое оно
надеюсь, что сервисах тоже потом все нормально запустится
Аноним 19/01/23 Чтв 19:27:36 852245 15
>>852202
Пойду в тихое место где моё тело не найдут прохожие
Аноним 19/01/23 Чтв 19:28:18 852246 16
>>852245
Что, даже без золотого стрима?
Аноним 19/01/23 Чтв 19:43:08 852253 17
>>852246
золотого стрима с золотым дождем
Аноним 21/01/23 Суб 00:27:47 852555 18
а как в четверке на мобилке получить сигнал об изменении ориентации?
раньше вроде было что-то типа connect("orientation_changed", _on_orientation_changed) у дисплея рута, сейчас не нахожу где такое узнать
Аноним 21/01/23 Суб 14:46:06 852645 19
>>852555
Сигнала такого вроде не было
Есть screen_get_orientation в VisualServer, надо проверять самому
Есть сигнал size_changed у Viewport, но я хз приходит ли он при смене ориентации.
Аноним 21/01/23 Суб 15:00:08 852649 20
Godot 4.0 beta 14
Аноним 21/01/23 Суб 15:00:16 852650 21
>>852645
> screen_get_orientation в VisualServer
эта штука просто возвращает то, что ты установишь через. Типа пишешь DisplayServer.screen_set_orientation(DisplayServer.SCREEN_SENSOR) и он тебе на мобилках всегда будет возвращать 6 для любого положения телефона
Аноним 21/01/23 Суб 15:00:41 852651 22
Аноним 21/01/23 Суб 15:01:15 852652 23
Аноним 21/01/23 Суб 15:10:33 852654 24
>>852652
спасибо, кэп, думал уже пощупал
Аноним 21/01/23 Суб 15:28:20 852665 25
>>852649
а попып так и не починили, сколько бэт назад я им уже скидывал код
Аноним 21/01/23 Суб 16:31:55 852688 26
А что при сворачивании и разворачивании приложения на андроид, он игру сбрасывает в первоначальное состояние как будто только запустил приложение?
Аноним 21/01/23 Суб 18:33:59 852711 27
>>852688
Это не от движка зависит, а от твоей игровой логики.
Аноним 21/01/23 Суб 18:50:48 852718 28
Уйдет еще много лет,чтобы 4ку приняли и смогли освоить,напилить гайдов и советов
Аноним 21/01/23 Суб 20:58:28 852735 29
>>852711
там просто тестовая кнопка, какая игровая логика
единственный вариант, что раскопал пока - это сохранять состояние игры постоянно
Аноним 21/01/23 Суб 22:59:42 852756 30
>>852735
Когда приложение скрывается с экрана - оно получает от системы сигнал (сообщение). Дальше сам.
Аноним 21/01/23 Суб 23:06:51 852758 31
image.png 9Кб, 857x110
857x110
image.png 71Кб, 829x501
829x501
Тот кто утверждал что у меня получится сделать игру, уебан! Мой персонаж не хотодит вниз, хотя я все настроил по гайду. С другими направлениями никаких проблем.
Аноним 21/01/23 Суб 23:21:50 852762 32
>>852688
Не, только что проверил, сам годот не сбрасывает.
Если у тебя сбрасывает, то это в самом андроиде из памяти приложение выкинуло.
Или память кончилась в телефоне (такое может быть если ты во время разработки на что-то другое переключаешься)
Либо грешат всякие настройки энергосбережения. Особенно xiaomi в начале таким отличилась, что даже мессенджеры выкидывала.
Можешь проверить на других играх из плейстора, выкидывает ли их при сворачивании.
ну или ты написал сам какую-то логику что она у тебя по screen_resize перезапускает сцену
Аноним 21/01/23 Суб 23:23:20 852764 33
>>852758
Но ведь у тебя в консоли должно быть красненьким написано сто раз, что dowm не существует.
Аноним 22/01/23 Вск 02:59:56 852796 34
>>852764
Ничего не писало. Сейчас все заработало.
Аноним 22/01/23 Вск 07:09:55 852802 35
test.png 9Кб, 468x115
468x115
>>852762
ну тут короче с одной стороны мне спать больше нужно, да..

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

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

это вот какое-то такое как на пике уведомление обработать или это сигнал какой?
Аноним 22/01/23 Вск 07:48:00 852804 36
>>852802
короче разобрался, чтобы он не выходил в настройках проекта в Приложение -> Конфигурация последнее поле Quit on Go Back убираем галочку, тогда не выходит при нажатии квадрата

для добавления собственного поведения прописываем:
func _notification(what):
if what == NOTIFICATION_WM_GO_BACK_REQUEST:
pass # собственное поведение

>>852762
еще раз спасибо
Аноним 22/01/23 Вск 08:49:25 852807 37
image.png 26Кб, 300x168
300x168
Exception java.lang.RuntimeException: Unable to get provider com.google.android.gms.ads.MobileAdsInitProvider: java.lang.IllegalStateException

пиздос как пофиксить, всю ночь проебал, а всего-то хотел рекламку в мобильную игрушку подключить через плагин этого чела:
github.com/DmitriiFeshchenko/godot-appodeal-editor-plugin
юзаю апподил без всяких адмобов, а все советы по фиксу про вписывание айди адмоба......
Аноним 22/01/23 Вск 12:01:41 852823 38
p01.jpg 6Кб, 720x1280
720x1280
p02.jpg 16Кб, 720x1280
720x1280
создаю android с произвольной ориентацией, начинаю вращать - смещается, причем клик по кнопке считывается из положенных экранных координат (красный прямоугольник)
подергал DisplayServer, viewport у рута, все вроде как положено, нигде никаких смещений
Аноним 22/01/23 Вск 12:13:53 852826 39
>>852758
> Тот кто утверждал что у меня получится сделать игру, уебан!
Я не уебан! Я - уеьан!
Аноним 22/01/23 Вск 13:35:09 852850 40
>>852823
Это какая версия движка/андроида? Никогда такого не встречал.
Аноним 22/01/23 Вск 13:58:45 852860 41
>>852850
не думаю, что это из-за устройства
версия движка 4 несколько последних бэт проверил - такое же поведение
проверил только что: телефон android 8, планшет android 10
экспорт в режиме gl_compatibility, ориентация Sensor
Аноним 22/01/23 Вск 14:16:02 852872 42
>>852860
> версия движка 4
С этого и надо было начинать.
> я - сорока-белобока, ведусь на всё новое, блестящее
Сам себе злобный буратина - лезешь в продакшон на нестабильной сырой версии движка. Бери трёшку и не выёбывайся.
Аноним 22/01/23 Вск 14:18:56 852873 43
>>852860
А, так ты бета тесты проводишь. Тогда пиши авторам issue на гитхабе, раз баг нашел.
Аноним 22/01/23 Вск 14:25:34 852875 44
>>852872
> Сам себе злобный буратина - лезешь в продакшон на нестабильной сырой версии движка.
в продакшене у нас пока еще тройка держится из последних сил

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

если у кого есть четверка еще - попробуйте, отпишитесь, что как
Аноним 22/01/23 Вск 14:57:25 852880 45
>>852875
Я вчера пробовал, нормально повернулось, beta14, в _ready DisplayServer.screen_set_orientation(DisplayServer.SCREEN_SENSOR), в настройках проекта тоже Orientation Sensor, андроид у меня нестандартный, 8 на LineageOs.
Аноним 22/01/23 Вск 15:42:36 852885 46
>>852880
ладно, возможно это еще от версий sdk/ndk зависит, будем копать, спасибо
Аноним 22/01/23 Вск 17:06:46 852915 47
>>852885
А пробовал по другому запускать? Ну там, наоборот начать в портретной, повернуть. Или сделать не Sensor, а указать явно Portrait или Landscape.
Вообще в моб играх редко делают смену L/P. Все же геймдизайн прибивают гвоздями к одному варианту. Если только вы какое то приложение делаете.
Аноним 22/01/23 Вск 17:12:18 852918 48
>>852860
Мое ИМХО прежнее - раньше 4.2 в прод тащить рано, слишком много фич порезали ради ускоренного выпуска.
Я только к 3d modificators stack привык...
Аноним 22/01/23 Вск 17:29:54 852921 49
реквестирую видео игры годот где платформер про волка и звуки хруканья
Аноним 22/01/23 Вск 17:34:39 852924 50
>>852921
В юнити треде спроси.
Аноним 22/01/23 Вск 18:24:04 852938 51
>>852918
> раньше 4.2 в прод тащить рано, слишком много фич порезали ради ускоренного выпуска
ну если что-то масштабное и крупное - да, пока не стоит в прод тащить или расчитывать, что выход не прямо со дня на день
для многих мобило-веб игр нам уже всего хватает в четверке и багов нет, поэтому такие новые уже будем на четверке
Аноним 23/01/23 Пнд 11:27:58 853074 52
Всем привет, я дед 35 лет.
Как с гит хаба что-то скачать? Качаю архив, там вроде файлы какие-то. Годот их не видит. Шо? Каво? Что происходит? Как это заставить работать?
Аноним 23/01/23 Пнд 11:45:23 853075 53
а вот есть допустим пара классов

class A:
var x = 5
func _init():
# большая логика

class B extends A:
func _ready():
x = 666 # ???

есть ли способ присвоить значение переменной базового класса, без использования функции _ready() и без использования _init() потому что придется выносить всю большую логику базового класса в отдельную функцию и дергать ее
Аноним 23/01/23 Пнд 11:47:35 853076 54
>>853074
Кинь ссылку, что качаешь и скажи, что хочешь получить в итоге
Типа на гите лежит чей-то проэкт и тебе его запустить нужно чи шо?
Аноним 23/01/23 Пнд 12:53:44 853088 55
Аноним 23/01/23 Пнд 13:36:34 853103 56
pic1.png 42Кб, 1008x613
1008x613
pic2.png 40Кб, 1021x627
1021x627
>>853088
1) скачиваешь этот zip с гита
2) в папку со своими поектами или еще куда-то засовываешь то, что в архиве называется "godot" - это папка с проектом
3) запускаешь двиг, жмешь кнопку "сканировать" и выбираешь эту папку "godot" пик1
4) все, оно добавилось в список проектов и просто запускаешь пик2
Аноним 23/01/23 Пнд 14:19:14 853112 57
>>853103
Кайф, спасибо, анончик
Аноним 23/01/23 Пнд 17:57:07 853178 58
>>853074
> Годот их не видит. Шо? Каво? Что происходит? Как это заставить работать?
> я дед 35 лет
Возраст не при чём. У нас тут в прошлых тредах деды за 50 успешно вкатывались, не задавая подобных вопросов.
Аноним 23/01/23 Пнд 20:45:17 853226 59
Аноним 25/01/23 Срд 22:39:55 853949 60
Вышла 15 бета
Аноним 25/01/23 Срд 23:37:45 853971 61
Аноним 28/01/23 Суб 11:14:35 854553 62
>>853949
15 - хорошо.
Бета - плохо.
Ждём релиз.
Аноним 28/01/23 Суб 12:03:05 854560 63
Аноним 28/01/23 Суб 18:32:54 854663 64
image.png 6Кб, 402x117
402x117
Да бля, сдохла видеокарта, пока лежал в больнице думал что ща вернусь домой и без игор как начну свое доделывать ух бля.

А оказалось пикрелейтед на встройке, пиздос.
Аноним 28/01/23 Суб 19:16:46 854676 65
>>854663
Да, тоже пробовал на некро неттопе запустить движок, там если gl 3.3 не поддерживается, то ни 3.5 ни 4 не запустит скорее всего
Попробуй накатить драйверы Mesa, на некоторых моделях помогает
Аноним 28/01/23 Суб 20:05:22 854690 66
>>854663
>>854676
Можно попробовать запустить с флагом godot.exe --video-driver GLES2
Аноним 28/01/23 Суб 21:34:46 854712 67
Выше постили ссылку на шаблон с JRPG, а есть такой же но с ARPG где боевка идет не в отдельной сцене и не является пошаговой?
Потому что для нуба такое воссоздать нереально по моему.
Аноним 28/01/23 Суб 21:53:10 854714 68
>>854676
>Из коробки адаптер поддерживает следующие API: DirectX версии 10.1 и OpenGL 3.3 (только на Linux или OS X, на Windows поддерживается лишь OpenGL 3.1)

Похуй короче. Буду играть в Pharaoh или еще какое говно из нулевых.
Аноним 28/01/23 Суб 22:03:03 854716 69
image.png 15Кб, 979x512
979x512
>>854714
так ты бы попробовал, там не сложно, я свой древний asus, который тоже только под виндой 2.1 gl видел качнул до 4.2 и все завелось
вон, сегодня как раз новый релиз сделали, это знак
отсюда скачиваешь, если проц поддерживает sse3, то mesa3d-22.3.4-release-mingw.7z
, если нет, то mesa3d-22.3.4-release-msvc.7z
распаковываешь в любое место, там запускаешь батник systemwidedeploy, сначала текст будет, нажмешь любую кнопку появится выбор как на пике, выбираешь 1 жмешь энтер, потом все можешь закрывать и перезагружаться, хотя у меня gpu-z даже без перезагрузки сразу видела результаты, так что это для верности
https://github.com/pal1000/mesa-dist-win/releases/tag/22.3.4
Аноним 29/01/23 Вск 00:08:36 854736 70
>>854716
Ну чет нихуя, деплойнулось норм, ребутнулся, ничего не изменилось.
Аноним 29/01/23 Вск 09:28:07 854771 71
>>854712
на канале Heart Beast есть плейлист с созданием арпг в годоте
Аноним 29/01/23 Вск 12:40:33 854788 72
1674985232909.png 64Кб, 988x267
988x267
>>854663
> пикрелейтед на встройке, пиздос
Чё у тебя тридцатки на новую печ не наберётся?
Аноним 29/01/23 Вск 13:38:20 854795 73
>>854788
А нахуй мне вставлять тридцатку в мать 2011 года? С ксеоном конечно оно вроде нормально будет, но я лучше сначала остальное грейдану (не скоро) и посижу на некстген встройке пока на 3060 собирать буду.
Аноним 29/01/23 Вск 13:49:14 854797 74
Подскажите как правильно перенести локацию. Вот я могу в моделирование лоуполи. Делал всякие сценки в майе, анимировал их. Либо отдельно предметы - сундуки, оружие, броню, персонажей.
Но вот теперь настало знакомство с годотом. И я вообще не понимаю каким образом мне засунуть туда саму карту.

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

Или плейн нужно вообще убирать и вместо него из куба делать террейн с нуля? Как делаете вы?
Аноним 29/01/23 Вск 14:42:40 854818 75
tree.png 128Кб, 787x606
787x606
>>854797
то, что ты делал - это строго говоря просто визуал, как именно ты его будешь применять зависит от жанра и поставленной задачи
если тебе сценку создать где перс бегает по какой-то условной земельке, которую ты нарисовал и стукался о деревья, которые ты нарисовал, то удобнее как и везде сформировать какой-то ассет(сцены в годоте), который ты как-то расставишь или что-то еще будешь с ним делать

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

так повторяешь со всеми своими модельками, об которые стукаться будешь, если они просто фон где-то, то можно просто модель в сцену перетащить и все
Аноним 29/01/23 Вск 14:51:46 854819 76
>>854818
То есть нет никакой разницы будет ли это плоскость или кубик
Аноним 29/01/23 Вск 15:09:21 854828 77
>>854797
Многое зависит от жанра и требуемой интерактивности.
Можно и просто сценой, если тебе надо например просто статичная комната на фоне.
Но лучше конечно, объекты по отдельности - ведь так потом можно будет добавить им взаимодейтсвие, дублировать, процедурно генерировать, и так далее.
>вручную его ещё раз поставить?
Не знаю как в майе, но из блендера когда импортирую сцену, там же вроде объекты и так разделены. Что-то можно автоматизировать из движка, например ты в 3д редакторе только отмечаешь места где будут объекты, а в движке уже их там спавнить.
>Или плейн нужно вообще убирать и вместо него из куба делать террейн с нуля?
В годоте есть ассет террейна, основанный на карте высот. Там или в движке горы рисуешь, или просто на 2д карте в 2д редакторе.
Если ты хочешь просто налепить свой меш, то лепи.
Как анон выше написал, это просто визуал, он не всегда совпадает с коллайдерами.
Плейн в общем ни для чего не нужен, пол в годоте можно за пару кликов добавить.
Аноним 29/01/23 Вск 15:14:14 854830 78
>>854819
> То есть нет никакой разницы будет ли это плоскость или кубик
все очень зависит от задачи и жанра, визуал делают уже после всего этого
путей работы много, может моделлер заранее в условном блендере сделать нужную форму для столкновений объекта в игре, может быть произведена генерация из модели в движке, может быть сделано через шейдер и динамически вычисляться...
Аноним 29/01/23 Вск 18:40:11 854904 79
Тут все в основном 3д делают?
Аноним 29/01/23 Вск 19:31:20 854928 80
Аноним 29/01/23 Вск 22:10:37 854998 81
>>854904
> Тут все в основном 3д делают?
у нас в компании 2d почти всё: мобилки, веб, немного есть 3d, но и там по большей части просто задники, лоу-поли модельки и тому подобное
чисто для себя тоже поровну тыкаюсь и в то и в другое
Аноним 30/01/23 Пнд 07:46:00 855046 82
>>854904
Пытался делать свою игру в 2d. Ничего не получилось...
Аноним 30/01/23 Пнд 08:05:05 855054 83
>>855046
Ты же собирался уйти в тихое место, тоже не получилось?
Аноним 30/01/23 Пнд 09:40:38 855061 84
А есть извращенцы, кто пользуется редактором под android?
Аноним 30/01/23 Пнд 09:45:48 855062 85
>>855054
Чувствую что перед этим должен выполнить обещание по захоронению
Аноним 31/01/23 Втр 22:23:04 855457 86
Хотел бы вкатиться,но все уже придумано...
Аноним 31/01/23 Втр 22:25:20 855458 87
>>855457
Сделай лучше что-то придуманное.
Аноним 31/01/23 Втр 23:12:53 855465 88
IMG202301250949[...].jpg 53Кб, 1080x1080
1080x1080
Зачем использовать сигналы, если я могу использовать сетгет?
Аноним 31/01/23 Втр 23:18:05 855466 89
>>855458
Невозможно,Так как у игроков свое понятие лучше.
В целом уже все варианты игр придуманы
Аноним 31/01/23 Втр 23:36:04 855469 90
>>855457
Тогда вкатывайся в разработку движка, там еще работы немеряно.
Аноним 01/02/23 Срд 09:02:33 855518 91
>>855466
Ага, а потом выходит геншин который неплохо едет на придуманных раньше ммо и гаче, и ему норм.
Аноним 01/02/23 Срд 11:46:03 855546 92
>>855518
Попробуй делать геншин в одно лицо
Аноним 01/02/23 Срд 12:43:58 855555 93
>>855457
> но все уже придумано
И что?
Глупейший аргумент.
Главное не то, что всё уже придумано, а то что некоторое из придуманного защищено патентом. Поэтому единственное, что тебя должно останавливать от воровства чужих идей - это патенты. Берёшь механики, которые не запатентованы, делаешь из них игру и продаёшь.
Аноним 01/02/23 Срд 12:44:54 855556 94
>>855465
> Зачем покупать хлеб, если я могу есть пирожные?
Так вижу.
Аноним 01/02/23 Срд 12:46:18 855558 95
>>855466
> у игроков свое понятие
У меня для тебя два простых правила:
1. Игрок не знает, чего он хочет.
2. Если тебе интересно играть в свою игру - на неё найдутся покупатели.
Аноним 01/02/23 Срд 13:09:24 855562 96
>>855546
Попробуй скрестить жанры/игры попроще, Геншин тут как пример.
Вон недавно вышел Дом Кипер, это древний motherload с кусочком ТД, людям зашло.
Аноним 01/02/23 Срд 16:29:42 855612 97
>>855546
Попробовал, прикольно выходит.
Аноним 01/02/23 Срд 16:55:02 855622 98
>>855457
Проблема когда ты не можешь сделать то, чего хочешь.. Когда даже все твои старания не достаточно для простенького результата.
Аноним 01/02/23 Срд 18:16:24 855653 99
>>855555
> делаешь из них игру и продаёшь
подход менеджера, а не творца
Аноним 01/02/23 Срд 21:49:08 855726 100
>>855465
А как ты будешь сетгет между нодами разными?
Аноним 01/02/23 Срд 22:28:45 855739 101
1675279725182.png 31Кб, 160x160
160x160
>>855653
> а не творца
К сожалению, в мире, в который нас занесло, победил капитализм. Вкалывают не роботы. Вкалывает человек. Сначала хлебушек, а затем высокое искусство. Я сам этого долго не мог принять. И ты это примешь.
Аноним 01/02/23 Срд 23:07:29 855753 102
>>855739
Творец должен быть голодным
Аноним 01/02/23 Срд 23:08:05 855754 103
>>855753
Долговую расписку покажи.
Аноним 01/02/23 Срд 23:31:29 855758 104
Начал разбираться с GDExtension. А там, поскольку теперь dll встраивается в редактор, не получается перекомпилировать ее пока редактор не закроешь. Облом, неудобно на с++ писать. Надеюсь поправят к 4.1
Аноним 02/02/23 Чтв 00:02:10 855776 105
>>855768
Смешанные чувства. Многое переделывают, апи успевают поменять прямо между бетами (хотя логично было бы заморозить фичи), много фич вырезают поскольку не успевают. С одной стороны хочется, с другой - ну вот как раньше считал что раньше 4.2 нельзя переползать, так и считаю.
Аноним 02/02/23 Чтв 00:52:02 855795 106
>>855779
Анон, не ведись, тебя тролль байтит на бан. Просто репорти его молча и все.
Аноним 02/02/23 Чтв 01:22:03 855799 107
>>855789
>пусть мы будем жить во лжи, но лучше мы будем жить в мире
а так не бывает, и отрицалово особенно от вечно врущих совков ничего в этой базе уже не меняет.

доказано совками ))
Аноним 02/02/23 Чтв 02:08:22 855804 108
>>855758
Еще почему-то в 4 теперь std::cout не пишет в консоль.

Конечно можно сделать
#include <godot_cpp/variant/utility_functions.hpp>
godot::UtilityFunctions::print("godot::UtilityFunctions::print called ", godot::itos(42));
Но придется логгированию обертку написать.
Аноним 02/02/23 Чтв 02:37:32 855813 109
Годаны, у меня платиновый вопрос, просто забыл где искать.
Вот у меня есть _physics_process в ноде и в детях. Есть какой-то гарантированный порядок их срабатывания? Типа как с _реади, сначала опрашиваются дети, потом родитель. В смысле, я могу быстренько накидать дерево и принтами проверить. Но вдруг это рандом, и у меня сейчас сработает так, а в более комплексных сценах иначе.
Я, конечно, могу просто из родительского _процесса вызывать соответствующие функции в детях, но это как-то не кошерно. Хочется по красоте.
Аноним 02/02/23 Чтв 03:39:15 855821 110
>>855813
Не знаю, а зачем тебе такое? Если есть явная зависимость, лучше из процесс одного вызвать, скажем, функцию чайлда. Алсо есть какое-то свойство ноды priority, оно точно должно гарантировать порядок.
Аноним 02/02/23 Чтв 06:02:36 855831 111
>>855821
Ну например, чтобы стейт-машина отрабатывала стейт в предсказуемое время относительно родителя-персонажа. Персонаж должен мув_энд_слайд в своём физикс_процессе желательно тогда, когда стейт ему посчитает велосити.

Можно и вызывать из родителя, да. Но я ж говорю: некошерно как-то ощущается.

>>855799 >>855789 >>855779 >>855768 >>855759
Блять, моча, подотри, у тебя политач протёк.
Аноним 02/02/23 Чтв 06:09:55 855832 112
>>855457
Все самые продаваемые инди-игры последних лет - давно придуманные механики, вынутые из забытья и немного отполированные. Взяв концепцию из какой-нибудь древней игрули 80-90х годов и просто повторив её с современным подходом, ты имеешь некислый шанс получить на выходе большой хит.
Аноним 02/02/23 Чтв 06:12:10 855833 113
>>855813
> Есть какой-то гарантированный порядок их срабатывания?
насколько я помню это вещь распараллеливается физическим движком, чтобы это было быстро, поэтому предсказать порядок ты не сможешь
под свои задачи у тебя есть слои физики или если вдруг по какой-то причине это критично (хотя на смещение абсолютно не важно в игре кто там первый двинулся в конкретно эту 1/60 секунды), то можешь, например, после вызова обработки физики родителя, просто вызывать my_physic() у детей и так далее по иерархии, но скорость пострадаает
или добро пожаловать в код движка, берешь библиотеку для вычисления детерминированной физики и корячиваешь в движок для своей специфичной задачи (как и почти в любом крупном движке)
Аноним 02/02/23 Чтв 08:32:32 855842 114
>>855833
>для своей специфичной задачи
Наоборот, задача вполне типичная. Банальная стейт-машина, где каждый стейт это нода, которая сама за себя отвечает, сама считает персу велосити, а ему остаётся только в конце физикса подвинуться мув_энд_слайдом. Я просто думал, что есть какая-то последовательность. А если там всё параллельно, то просто из перса надо стейты опрашивать и всё.
Аноним 02/02/23 Чтв 16:49:23 855953 115
>>855842
В том то и фишка, что если у тебя система считает персу велосити, то она уже не сама за себя отвечает. Тем более если порядок вдруг важен. Но для этого можно использовать process_priority.
Аноним 02/02/23 Чтв 20:47:38 856043 116
Godot 4.0 beta 17
Аноним 02/02/23 Чтв 22:55:48 856077 117
Аноним 03/02/23 Птн 00:17:34 856111 118
>>855953
process_priority влияет же только на _process, а на физикс не влияет.

>...то она уже не сама за себя отвечает
Ну не душни, а. Корова даёт молоко, но в целом сама ходит по лужку, щиплет травку и в молоко её перерабатывает. Нода даёт велосити, но в целом сама внутри себя всё считает. А если так рассуждать, как ты, и делать кучу не взаимосвязанных объектов, то получится уже не игра, а просто куча объектов.
У меня так работает. Есть персонаж, он же стейт-машина. Внутри него лежат ноды-стейты. Нода "ходить", нода "стоять", например. Каждый такт перс опрашивает свои стейты, выбирает самый подходящий, затем в нём вызывает основную функцию, и стейт самостоятельно считаети говорит, как нам персонажа двинуть. Так как к физическому движку лучше обращаться непосредственно из кинематика, то стейты просто меняют велосити, а двигается уже сам перс.
С нодами ходьбы и стояния перс не умеет, например, плавать. Добавив ноду плавания, мы автоматически обучим его этому действию, не надо никаких дополнительных телодвижений. Я делаю кучку разных нод и, по-разному комбинируя их, получаю набор персонажей с разными способностями. Это при том, что сами стейты имеют экспортнутые настройки и для разных персонажей могут отличаться.
Как-то так.
Аноним 03/02/23 Птн 00:56:25 856133 119
>>856111
кажется, что тут будет плодится очень много нод, почему не просто сделать нужные классы, а каждое уникальное существо - комбинация экземпляров
двигайся в ECS, коли на то пошли
Аноним 03/02/23 Птн 01:25:40 856146 120
>>856111
>process_priority влияет же только на _process, а на физикс не влияет.
Почему ты так решил? В тултипе написано другое.
Аноним 03/02/23 Птн 21:53:48 856856 121
Слышбте годотовые, у меня есть AudioStreamPlayer в проекте, и когда я сохраняюсь или по ф6 запускаю - мне годот срет в уши куском звука из аудиостримплеера. Это пофиксить как-то можно?
Если че я на 4 бета
Аноним 03/02/23 Птн 23:09:21 856891 122
>>856856
> Это пофиксить как-то можно?
Перейти на стабильную трёшку. В остальных случаях:
>>852873
> А, так ты бета тесты проводишь. Тогда пиши авторам issue на гитхабе, раз баг нашел.
Аноним 04/02/23 Суб 01:17:47 856933 123
>>856856
какая версия?
опиши точный порядок действий, если баг, но на выхах заведу
Аноним 04/02/23 Суб 15:05:42 857073 124
ERROR: Can't add child '@@3' to 'Viewport', already has a parent 'Viewport'.

Я добавляю динамически из кода TextureRect, играют роль как точки, в консоли выдаёт такие вот сообщения.

Нашёл в интернете, что добавлять надо так
> get_tree().get_root().add_child(bullet.instance())

Однако добавление get_tree().get_root() и instance() проблему не решает

Как можно сделать интсанс объекта в годо?
Можно ли каким-то иным и более простым способом динамически рисовать точки?


Касаемо последнего, идея была шейдерами, но в третьей версии они не поддерживают передачу массивов, я разумеется уже подумываю перекатываться на четвёрку, где это есть, будет, обещают.
Аноним 04/02/23 Суб 15:30:05 857082 125
>>857073
Разобрался, проблема была в постоянном добавлении одного и того же объекта
Аноним 04/02/23 Суб 15:42:25 857084 126
>>857073
>Можно ли каким-то иным и более простым способом динамически рисовать точки?
Можно рисовать пиксели в текстуре. https://godotengine.org/qa/3804/how-to-edit-an-image-pixels
Можно рисовать Line2D с концами в одной точке.
Можно рисовать в функции _draw. В частности draw_line в одной точке.
Можно попробовать TileMap с размером ячейки = 1 пиксель, они вроде довольно оптимизированы сейчас.
> шейдерами, но в третьей версии они не поддерживают передачу массивов
Насколько я знаю, это решалось через текстуру тоже. Т.е. ты передаешь текстуру, а на самом деле там любые данные.
Например в картах нормалей, там не цвета, а векторы.
Аноним 04/02/23 Суб 17:05:06 857105 127
>>856933
В бете17 не смог воспроизвести если с нуля проект создать. Но при импорте сцены, с которой работал в старой версии - звук есть при сохранении или запуске по ф6.
На всякий сделал проект с багом - по CTRL-S идет звук
https://gofile.io/d/gnCdiV
Аноним 04/02/23 Суб 17:14:41 857115 128
>>856933
>>857105
Попробовал в старых версиях - тоже не получилось воссоздать вот так вот на шару. Звук при сохранении есть только если открыта вкладка с нодой, где есть аудиостримплеер и анимацияНода
Аноним 04/02/23 Суб 17:31:15 857132 129
1675521075033.png 19Кб, 606x152
606x152
Сап, годач!
Вот такой я написал код.
Как видишь, у меня тут уёбищный костыль в виде переменной-аккумулятора, которая считает входящие ивенты. А всё почему? Потому что даже когда я запускаю по Ф5, в приложение почему-то прилетает один мауз-ивент и код срабатывает. ЧЯДНТ?
Аноним 04/02/23 Суб 17:35:31 857138 130
>>857132
очередь событий вообще наполняется постоянно всяким разным (как и везде собственно), ты лучше скажи, зачем тебе от ивента нужно что-то, кроме как поучения того, что какой-то нужный тебе ввод был
Аноним 04/02/23 Суб 18:06:36 857153 131
>>857132
Логично, MouseEventInput это вообще общая категория всех событий мыши, не только кликов, но и MouseMove, поэтому первым прилетает стартовая позиция мыши, чтобы отработали все onMouseEnter.
Аноним 04/02/23 Суб 19:08:54 857176 132
1675526929719.png 42Кб, 459x507
459x507
>>857153
Звучит легитимно. Значит костыль нужен.

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

Давайте лучше подумаем вот над чем: Когда скринсейвер отображается в окне предпросмотра, он при запуске получает командную строку с ключом /p 1639350, где число это по видимому хэндл directdraw поверхности в окне настроек. Это виндастайл, это классика, мне даже не надо открывать МСДН, чтобы это предположить. Так вот. Как бы из годота получить к ней доступ? чтобы вывести предпросмотр. Предполагаю, что никак, ибо годот это opengl приложение. Или есть варианты?
Аноним 04/02/23 Суб 19:30:14 857187 133
Ютаб выдал мне это, я приятно удивлён и годо мне нравится всё больше

Godot 4 Tutorial - VoxelGI For Beginners
https://www.youtube.com/watch?v=c6gRGahMFlA

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

> Насколько я знаю, это решалось через текстуру тоже. Т.е. ты передаешь текстуру, а на самом деле там любые данные

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

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

Идея очень интересная, однако мне тогда потребуется в два-три раза большее разрешение чем формат А4 - 2480 на 3504

И раз уж зашла речь про шейдеры и текстуру, то тоже вопрос. Координаты текстурные это дробные числа. Возможно ли тогда отображение точки с нецелыми координатами?
Ну а касаемо рисовки текстуры более высокого разрешения это надо проверять, потому что может и не надо делать никаких разрешений, достаточно просто сделать цветной квадрат и повесить на него шейдер
Аноним 04/02/23 Суб 19:33:40 857190 134
>>857176
Я непонимат. Скрин должен болтаться в буфере и к нему нужен доступ. Даст ли его венда мне неизвестно.
Аноним 04/02/23 Суб 19:50:43 857205 135
>>857187
Продолжил смотреть тот видос, так там ещё и отражения в реальном времени рисуются через этот VoxelGI, лучи похоже и правда как и шизикс потонут, получается, что Shadow Map победил, точнее его трёхмерная итерация, но что ещё интереснее, воксельный свет то можно было сделать и в конце 00х, сил процов того времени должно было хватать, так как там информации не так и много, но может я и заблуждаюсь на счёт скорости.
Выглядит как настоящее будущее, что ещё понравилось, что это не глобальный свет везде, а объект, внутри которого этот свет работает и эта область пространства разбивается, что даёт возможность делать аналог лод для света.
Аноним 04/02/23 Суб 20:40:22 857222 136
>>857190
> болтаться в буфере и к нему нужен доступ
Не совсем так, наоборот венда предоставляет проге-скринсейверу доступ к некоторому оконному объекту с хендлом по адресу, который передаётся в командной строке. А уже скринсейвер должен суметь вывести графон не в полный экран, а на этот объект (графический контекст). Обычно это называется встраиваемым приложением. В прошлом треде анон спрашивал, можно ли годот встроить во внешнее приложение. Не помню, что нему ответили, емнип, написали, что инахуйненужон.
Аноним 04/02/23 Суб 20:59:16 857225 137
>>857073
var huy = preload("res://govno.tscn")
var pizda = huy.instance()
add_child(pizda)
Аноним 04/02/23 Суб 21:02:40 857228 138
>>857190
Доступ к буферу у годо вроде есть, туда по крайней мере можно постить через OS.set_clipboard()
Аноним 04/02/23 Суб 21:11:56 857233 139
Объясните плиз как делать систему оружия. (Если что я в гд4 на шарпе)
Вот я сделал класс Gun:RigidBody3D.
В нем сделал пару виртуальных методов, проперти и все такое.
Сделал двух наследников Gun2:Gun и Gun3:Gun, по необходимости заоверрайдил всякое.
Так вот - как мне теперь у моего класса Player хранить текущее оружие?
Я сделал object CurrentWeapon и при надобности делаю (CurrentWeapon as Gun3).какаятопропертиилиметод
Так норм?
Аноним 04/02/23 Суб 21:45:24 857275 140
1675536324465.png 61Кб, 781x507
781x507
1675536324478.png 359Кб, 700x394
700x394
>>857222
Карочи, похуй. Работает и ладно.
Аноним 04/02/23 Суб 21:45:51 857276 141
>>857233
А чем не устраивает GDScript?

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

>>857275
Уважаемо
Аноним 04/02/23 Суб 22:02:09 857304 142
>>857233
> Так норм?
Сомневаюсь. Лучше сделай, чтобы куррентган имел все необходимые методы, позволяющие ему действовать как ган. Тогда тебе не придётся тайпокастить постоянно. Ты загрузил ган и точно знаешь, что у него есть методы фаер, рилод, екип анэкип, ит сетера. Андестуд? Неважно, пистолет это или винтовка, они эти методы общего класса реализуют по своему. И тогда, кстати, общий класс ты делаешь абстрактным, чтобы по запарке не создать где-нибудь его инстанс.
Аноним 05/02/23 Вск 06:38:44 857476 143
>>857176
> Предполагаю, что никак, ибо годот это opengl приложение. Или есть варианты?
ну начнем с того, что это скорее HWND прилетает тогда или HDC, что тоже не зависит чем ты там отрисовываешь
>>857222
> А уже скринсейвер должен суметь вывести графон не в полный экран, а на этот объект (графический контекст)
для работы со сторонними приложениями прав нужно побольше будет в разных операционках, да и годо - это больше игровой движок, не думаю, что его внешнего API хватит для таких целей, не спускаясь на уровень GDNative, написав свой плагин
Аноним 05/02/23 Вск 10:47:58 857490 144
>>857276
> А чем не устраивает GDScript?
Я дотнетдебиловый, так привычнее. Тем более начали апи приводить в нормальный шарповый вид с 15 бетки
>>857304
> Андестуд?
Понел, пасиба
Аноним 05/02/23 Вск 10:52:07 857491 145
Надо ждать годо 4.1
Аноним 05/02/23 Вск 11:40:17 857492 146
Аноним 05/02/23 Вск 12:08:47 857494 147
>>857492
Что бы допили нормально
Аноним 05/02/23 Вск 12:31:07 857498 148
>>857494
ну нам уже нормально, багов не ловим мешающих
Аноним 05/02/23 Вск 18:01:41 857593 149
>>857476
> прав нужно побольше будет
Чел... Это виндовые скринсейверы, АПИ которых не менялся с 95 года. Да и нет там никаких АПИ, тупо запуск с параметром. Какие права? Ты о чём ваще?
Аноним 05/02/23 Вск 19:28:35 857622 150
>>857498
Не верю. Я в редакторе постоянно ловлю что-то.
Аноним 05/02/23 Вск 19:53:15 857633 151
>>857622
сижу на вин64 версии, последнее ловил рандомные вылеты, когда строку редактируешь в бете 11-12 где-то там, ничего критичного нет, пилим для прода уже на нем
Аноним 05/02/23 Вск 19:54:50 857636 152
>>857633
Там не только вылеты бывают. А например слетающие названия нод, анимации в плеере, залипающие скрипты и т.д.
Аноним 05/02/23 Вск 21:07:32 857650 153
Как лучше сделать "выравнивание" разного оружия в камере?
Вот у меня есть голова - рука - подбираемое оружие (через код подбирается инстанцируется)
Модельки по длине и высоте разные, потому положение в камере разное, когда подбираю(и анимация айронсайтов тоже разная вся)
Как лучше сделать? У меня из вариантов пока только кодом ноду руки двигать в зависимости от пушки + для каждой отдельную анимацию айронсайтов
Аноним 05/02/23 Вск 21:27:33 857652 154
>>857650
Если ты про First person shooter, то в навороченом варианте там вообще сложно делается, отдельный вьюпорт со своими пропорциями.
Вот тут например чел делает шейдером
https://www.youtube.com/watch?v=NF-U5J92ivk
Вроде бы недавно кидали видос с объяснениями, но не получилось найти так что вот
https://godotforums.org/d/22576-fps-weapon-camera-fov/6
https://www.reddit.com/r/gamedev/comments/756ekj/how_do_first_person_shooters_handle_the_graphics/

Если же тебе просто побыстрее сделать, да просто ставь оружие там где оно красиво смотрится и все.
Аноним 05/02/23 Вск 22:38:52 857675 155
>>857636
> А например слетающие названия нод, анимации в плеере, залипающие скрипты и т.д.
ну хз, у нас несколько чел пользуются, с конкретно такими на win64 под десяткой не сталкивались, хотя скрипты большие пишем
Аноним 06/02/23 Пнд 15:46:00 857820 156
1549136473308.png 47Кб, 815x448
815x448
1656350060093.png 2Кб, 738x119
738x119
>>857675
Ну вот например сегодня вешаю текстуру и шейдер на Line2D. Сохраняю сцену - линия схопывается, пока сцену не переоткроешь. А после пары кликов таки крашнулся редактор.
Аноним 06/02/23 Пнд 21:50:01 857906 157
1559463295857.png 39Кб, 446x610
446x610
>>857820
А например полигон создает 26 дублированных вершин вместо 4. Не, в целом как то что-то работает, но пока бетка сырая.
Аноним 06/02/23 Пнд 23:27:06 857923 158
Что у Годота с гайками и туторами?
Аноним 07/02/23 Втр 00:05:26 857930 159
>>857923
На начальный-средний уровень всего хватает, обычно гуглится за пару минут, но на английском.
Аноним 07/02/23 Втр 00:23:47 857936 160
1601186184784.png 5Кб, 197x55
197x55
О. Вот этим теперь говорят платформы делать.
Аноним 07/02/23 Втр 16:17:26 858074 161
>>857936
Что они там опять навыдумывали? Платформы надо было делать комбинацией кинематик боди и ария со своей гравитацией.
Аноним 08/02/23 Срд 08:53:14 858307 162
Screenshot20230[...].png 159Кб, 1600x720
1600x720
Screenshot20230[...].png 18Кб, 1600x720
1600x720
Теперь можно кириллить на телефоне
Аноним 08/02/23 Срд 09:20:35 858310 163
>>858307
можно, только под андроид не напишешь из под андроида
Аноним 08/02/23 Срд 18:54:28 858438 164
image.png 783Кб, 1280x720
1280x720
ПОГЧААААМП
Аноним 08/02/23 Срд 20:12:28 858457 165
1675876347320.png 1Кб, 230x27
230x27
Да что с двачом, блять!? Бесит, сука!

Тем временем для годота запилили аналог юнити-хаба и эпик-лончера
https://github.com/eumario/godot-manager
Теперь можно удобно ИНСТАЛЛИРОВАТЬ разные версии годота, держать в одном месте свои проекты и запускать проекты с нужной версией движка, не боясь ненароком обновиться на проде.
Аноним 08/02/23 Срд 20:34:34 858460 166
>>858438
Итс революшн, Джонни...
Аноним 08/02/23 Срд 21:04:45 858469 167
>>858457
>аналог юнити-хаба и эпик-лончера
ручками лучше
Аноним 08/02/23 Срд 21:42:49 858484 168
wrawr.png 4Кб, 642x42
642x42
что-то он похудел
Аноним # OP 08/02/23 Срд 21:58:17 858496 169
>>858469
Кому как удобнее. Мне тоже ручками норм, но надо осветить все возможности, доступные нам.
Аноним 08/02/23 Срд 23:30:55 858564 170
Аноним 10/02/23 Птн 20:41:38 859010 171
image.png 337Кб, 1123x751
1123x751
Импортнул модель с анимациями, включил анимациям зацикливание, а они при запуске проигрываются один раз и все. Я так понял, что нужно отдельно анимации импортировать, чтобы они стали редактируемыми? А что годот меня тогда не предупреждает, что в первом случае редактирование было бесполезным?
Аноним 10/02/23 Птн 21:47:47 859029 172
>>859010
ЕМНИП если название анимации заканчивается на _loop то по умолчанию будет залуплено.
>Я так понял, что нужно отдельно анимации импортировать, чтобы они стали редактируемыми?
Не знаю как ты делаешь, я просто импортировал gltf и сохранял как tscn, соответственно потом все редактируемое.
Аноним 10/02/23 Птн 22:08:16 859038 173
Аноним 10/02/23 Птн 22:22:31 859047 174
>>859029
> ЕМНИП если название анимации заканчивается на _loop то по умолчанию будет залуплено.
Работает

>импортировал gltf и сохранял как tscn
Так и делал, но не редактируется. Перепроверил еще раз с новым объектом.
Аноним 10/02/23 Птн 23:01:04 859074 175
Напоминаю,пока не выйдет версия 4.1,вкат не имеет смысла
Аноним 10/02/23 Птн 23:02:16 859078 176
>>859074
напоминалкин объявился
Аноним 10/02/23 Птн 23:03:28 859079 177
>>859078
А лучше 4.4,тогда хорошо пофиксят и обкатают
Аноним 10/02/23 Птн 23:06:24 859085 178
>>859079
да тебе лучше просто на ютьюбе игры смотреть
Аноним 11/02/23 Суб 15:00:36 859637 179
1676116836143.png 37Кб, 704x355
704x355
Погонял релиз-кандидат. Вот что имею вам сообщить:
1. Сразу отключил новый модно-молодёжный многооконный режим (interface/editor/single_window_mode = true), ибо с ним интерфейс становится неотзывчивым, выбираешь цвет в колорпикере в инспекторе, затем щёлкаешь по окну редактора, ожидая, что элемент, который щёлкаешь сразу активируется, но нет, колорпикер у нас отдельное окно и первым кликом вне его он закрывается, вторым кликом ты наконец активируешь виджет в предыдущем окне. По сути с многооконным интерфейсом все клики становятся у пользователя двойными. Дрисня. Отключил. У меня нет нескольких мониторов, чтобы ощутить преимущества многооконности. Кроме того, Хуану следует научиться не блокировать оконные сообщения в окнах, пока они не в фокусе, чтобы пользователям не приходилось по два раза прокликивать.
2. Наканецта завезли лигатуры! Ставишь в настройках шрифт с лигатурами, например каскадию от майков, включаешь пункт в настройках (interface/editor/code_font_contextual_ligatures = enabled) и кайфуешь. Впрочем, в гдскрипте не так-то уж и много лигатур.
3. Шрифт по умолчанию для нод теперь многоязычный, меньше мозгоебли для новичков, они теперь сразу смогут писать на кнопках и ярлыках по русски.
4. История действий. Была ли она раньше?
5. Вулкан. Прекомпиляция шейдеров. Все дела. Наконец-то можно начать делать игоры.

А не возродить ли мне мой старый проект? В трёшке у меня с ним вышел затык как раз из-за того, что возможностей гл ес мне не хватало для моих задумок. Проверим.
Аноним 11/02/23 Суб 15:16:53 859654 180
Какой язык изучить,прежде водить для Годота?
Аноним 11/02/23 Суб 16:33:13 859734 181
Аноним 11/02/23 Суб 16:49:06 859751 182
>>859654
ГДскрипт и учи, епта. Ну или можешь с питона начать.
Аноним 11/02/23 Суб 19:30:49 859855 183
image.png 24Кб, 602x450
602x450
Есть сцена, у которой в методе _ready меняется цвет фона, и запускается анимация движения текстуры готода по стрелке вниз. Если я переключаюсь на эту сцену из другой сцены (get_tree().change_scene(...)) по сигналу нажатия кнопки, то все работает, как и ожидалось. Но если я переключаюсь в эту сцену из какой-то анимации (Call Method Track) или после ожидания завершения анимации (yield), то на мгновение текстура годота мелькает в своей дефолтной позиции. Почему так может быть, что ее анимация запускается на сразу?
Аноним 11/02/23 Суб 19:39:49 859861 184
>>859855
Хз, значит они встают в какую-то очередь (вместе со всем call_deferred) и начинают играться только следующего кадра. Не знаю что посоветовать. Попробуй не _ready, а _init или _enter_tree. Можешь еще скрыть видимость спрайта и включать с первым кадром анимации, или просто помещать куда-то за экран, но это костыли конечно.
Аноним 11/02/23 Суб 20:19:57 859873 185
>>859855
не очень понятно цвет какой ноды ты меняешь, когда этот фон красным зарисовываешь, если ты попиксельно заполняешь
если там какая-то заливка, то попробуй поменять фон на готовую текстуру
Аноним 11/02/23 Суб 20:31:29 859880 186
image.png 32Кб, 424x251
424x251
>>859861
Проверил еще два способа. Жду завершения анимации, устанавливаю флаг, проверяю его в _process(). Ну и просто переключаюсь из _process() при нажатии пробела. В обоих случаях мелькает, странно.
>>859873
>цвет какой ноды ты меняешь
Цвет ноды ColorRect (красный фон). Я его меняю в методе _ready() тоже для проверки. Подумал, вдруг может быть такое, что сцена отрисовывается до первого вызова _ready(). Тогда бы мелькнул красный цвет, а потом фон бы стал голубым. Но нет, фон всегда голубой.
Аноним 11/02/23 Суб 21:06:56 859903 187
>>859880
ну тогда может связано с тем, что delta шатается там в разные стороны, попробуй через physics запустить или ограничить вызовы
Аноним 11/02/23 Суб 21:41:37 859934 188
>>859637
Погонял ещё. Нет, работать пока что невозможно. Кучи фич просто нет. Например. Дублирование строки по Ctrl+D отсутствует. Как я раньше без этого жил? Теперь надо по старинке Shift+Home, Shift+End, Ctrl+C, Ctrl+V столько лишних пальцедвижений вместо одного. Пиздец.
Аноним 11/02/23 Суб 21:46:03 859935 189
>>859934
А, ладно, доёб снимается. Они зачем-то зделоли Ctrl+Shift+D наверное редактор кода конфликтует с панелями.
Аноним 11/02/23 Суб 23:35:46 859997 190
>>855465
>Зачем использовать сигналы, если я могу использовать сетгет?
Механизм сигналов нужен для уменьшения зацепления между разными игровыми сущностями и системами посредством инверсии управления и внедрения зависимостей.
https://ru.wikipedia.org/wiki/Зацепление_(программирование)
Аноним 12/02/23 Вск 00:04:06 860008 191
я только начал читать документацию, там присвоение переменных просто через вар и равно(часто вижу в треде через :=), функции без возвращаемого значения, что у вас (-> void) и т.д Это потом будут объяснять или просто дока кал?
Аноним 12/02/23 Вск 01:33:09 860054 192
>>860008
Объяснять в доках не будут особо, := и ->void особо не нужны.
Аноним 12/02/23 Вск 02:04:02 860077 193
>>860054
не, если просто один раз напишут, то норм, я и так это понимаю из других языков, просто заметил такой вот контраст в синтаксисе
Аноним 12/02/23 Вск 03:13:32 860099 194
>>860008
>Это потом будут объяснять
https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/static_typing.html

Кратко:
1. Изначально GDScript создавался как язык с динамической системой типов. То есть по умолчанию любая переменная может хранить любые данные, функции могут принимать любые данные и возвращать любые данные без каких-либо ограничений. У этого есть плюсы и минусы. Плюсы:
- проще научиться программировать, ибо не нужно держать в голове концепцию "тип данных";
- дети и инвалиды быстрее пишут код, нажимая меньше клавиш (которые они ищут глазами);
- быстрее вносятся правки в прототип, ибо для изменения поведения меняешь меньше кода.
Минусы:
- компьютер вынужден выделять больше памяти и выполнять проверки типа данных каждый раз, когда работает с этими универсальными переменными;
- код сложнее читать, потому что без типа не всегда понятно, что функция ожидает или отдаёт, и т.п.;
- баги могут скрываться в коде годами, пока не сойдутся звёзды на небе и весь проект обвалится;
- компьютер не может заранее проанализировать написанный человеком код и выявить банальнейшие ошибки вроде сложения строки с числом, а также не может дать контекстные подсказки, которые зачастую значительно ускоряют набор кода;
- взрослые программисты считают пользователя такого языка... ну, ты сам понимаешь.

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

3. GDScript предоставляет следующие возможности:
- явное указание типа:
var number: int = 0
var text: String = ""
var array: Array = []
var node: Node = Node.new()
- выведение типа из данных:
var number := 0
var text := ""
var array := []
var node := Node.new()
- указание типа возврата функций:
func nothing() -> void: pass
func return_hello() -> String: return "hello"
func sum(a: int, b: int) -> int: return a + b
- типизированные массивы PoolТипArray.
В Godot 4.0 будет больше возможностей.

>>860054
>:= и ->void особо не нужны.
Ловите говнокодера, пока он не наложил кучу кода!
Аноним 12/02/23 Вск 08:15:42 860155 195
>>860099
> В Godot 4.0 будет больше возможностей.
а что там кроме нескольких новых типов поменялось?
Аноним 12/02/23 Вск 10:24:54 860172 196
>>860008
> часто вижу в треде через :=
Это не оператор. Это два оператора идущие друг за другом без пробела. Двоеточие - оператор выведения типа, если следом за ним указать тип, то тип будет присвоен вручную, иначе - автоматически. Равенство - оператор присвоения значения (инициализатор в случае объявления переменной). То что они идут вместе - это отсылочка к паскалю. А мы в гд любим отсылочки.
Аноним 12/02/23 Вск 10:33:23 860176 197
Было1.png 14Кб, 225x437
225x437
Стало1.png 8Кб, 218x205
218x205
Было2.png 126Кб, 919x781
919x781
Стало2.png 145Кб, 893x688
893x688
>>860155
> а что там кроме нескольких новых типов поменялось?
Сетгетами в коде срать больше не нужно. Вот я вчера вечером конвертировал свой примитивный минипроектик. Вот скрины одного из модулей. Там где раньше было насрано сеттерами-геттерами (которые, к слову, никак не спрятаны и их можно было вызвать по ошибке из другого объекта) теперь остались только нужные функции. Сеттеры-геттеры ушли внутрь объявления переменных. Ты их один раз настроил, свернул и не трогаешь.
Аноним 12/02/23 Вск 10:35:34 860178 198
Аноним 12/02/23 Вск 11:18:44 860192 199
>>860176
И ещё в четвёрке неочевидное мне странное решение заменить высвобождаемый (disposable) класс File на референсный (RefCounted) FileAccess. Теперь высвобождением открытых файлов занимается сборщик мусора, а не я, и я не могу самостоятельно закрывать открытые файлы, когда нужно мне, а не движку. Очень странное решение. Поясните, кто шарит?
Аноним 12/02/23 Вск 11:30:20 860199 200
>>860099
спасибки, так и думал
Аноним 12/02/23 Вск 11:32:59 860201 201
В трёшке.png 14Кб, 894x128
894x128
В четвёрке.png 65Кб, 936x351
936x351
>>860192
В целом у меня сложилось впечатление, будто общение Хуана с эпиками не пошло годоту на пользу. Эпики, приманили Хуана донатом и надавали ему вредных советов, чтобы устранить конкурента, а он, судя по тому, что я вижу в четвёрке, развесил уши и внимает. Годот позиционировался как движок для лёгкого вката новичков, теперь же у него старые добрые одноаргументные функции напичканы кучей аргументов, в которых чёрт ногу сломит. Мне как старичку несложно разобраться, но ИМХО вкатывающихся новичков это всё отпугнёт.
Аноним 12/02/23 Вск 11:42:30 860204 202
>>860201
Усложнение это естественный путь развития
Аноним 12/02/23 Вск 12:03:17 860213 203
>>860192
по сути у тебя все осталось по-старому:
если освобождение ресурса файла идет внутри функции, то он итак освободит ее по окончанию это функции
если вдруг планируешь файл держать открытым, то создаешь внешнюю переменную, а отличие только в том, что потом для освобождения ей просто присобачиваешь nil, вместо вызова прямой функции
Аноним 12/02/23 Вск 12:34:14 860223 204
Было1.png 5Кб, 149x78
149x78
Стало1.png 21Кб, 386x192
386x192
Было2.png 7Кб, 204x173
204x173
Стало2.png 11Кб, 227x174
227x174
>>860204
>>860213
А ещё интеллисенс-подсказки превратились в говно. Выдают всё подряд кроме ожидаемого. Ожидаемое выводится внизу длинного списка ненужной хуйни. Например, раньше как, пишешь pri и в подсказке сразу print(), теперь в подсказке целая куча дебажных принтов, а простой принт внизу. Пишешь vec, в подсказке ожидаешь Vector2, Vector3, но нет, в подсказке сначала длинный список хуйни, содержащей в себе v, e, c, а потом уже идут нужные типы. Чтобы правильно вывести подсказку, нужно писать с большой буквы, а трёшка от этого отучила ранее, потому что там пишешь мелкобуквой и в подсказках выводился сразу искомый тип без учёта регистра, но с учётом положения букв.

Ждём фиксов.
Аноним 12/02/23 Вск 12:41:29 860227 205
>>860204
Не спорю, но усложнение должно быть грамотным. На поверхности движкового АПИ должен быть медленный, неоптимальный, но простой и "новичковый" слой методов и утилит, позволяющий быстро, легко и без задней мысли накидать работающий с тормозами и пропуками прототип. Именно это привлекало массы к продукту во все времена и именно так было в трёшке. Глубже этого новичкового слоя должен лежать менее абстрагированный "сложный" слой АПИ, для шарящих, позволяющий делать магию кодинга на низком уровне. И так было в трёшке. Теперь в четвёрке наметилась тенденция глубинный слой АПИ выпихивать наружу, пугая им новичков.
Аноним 12/02/23 Вск 15:02:38 860273 206
>>860099
Ну не стукай, нужны чтобы не обосраться в релизе, но в прототипе и так сойдет. Опять же ты сам сказал что фиксить/добавлять будет проще.

Есть такие же доки по 4+, а то там же придется переделывать все?
Аноним 12/02/23 Вск 15:42:47 860286 207
Внутриигровой р[...].mp4 6032Кб, 800x600, 00:02:38
800x600
Сделал вчера за пару часов сразу 4 инструмента редактирования ландшафта - это оказалось куда проще, чем я ожидал. Движкосрачеры создали ложное впечатление того, что ландшафт на основе карты высот - это что-то очень сложное.

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

По сути я делаю что-то вроде этого:
https://youtu.be/Z94nvgodQHs
Но основной геймплей игры предполагается совершенно иной (GTA × The Sims), поэтому инструменты и ограничения редактора мира должны это учитывать, чтобы играбельный мир можно было создавать в несколько кликов в редакторе или путём процедурной генерации в один клик. Т.е. процедурная генерация всё ещё будет, но её уровень можно будет выбирать, от полностью случайного мира до полностью созданного вручную. Также есть мысли как сделать визуальный редактор шаблонов генерации, чтобы ещё более тонко контролировать генерацию.

Модуль с готовым ландшафтом не предлагайте, я знаю о нём, но не хочу использовать. Причины долго перечислять.

WFC (он же model synthesis) недавно пробовал - под мою задачу в исходном виде не подходит, нужно что-то другое. Для тех, кто не в курсе - принцип генерации там похож на складывание пазлов, только фрагменты картинки не уникальны (как в обычных пазлах), а многократно повторяются в разных местах. Жаль, что это не объясняют сразу, я бы тогда сразу всё понял.

Сейчас основная сложность в том, что я не могу чётко представить себе то, что хочу от игры. А развивать игру снизу вверх без чёткой общей архитектуры не получается. Внутриигровой редактор, по идее, должен помочь создавать кусочки игры снизу вверх, с минимальным хардкодом, т.к. вместе с редактором образуется скелет игры, на который можно наращивать контент прямо внутри игры, через редактор. Соответственно будут отдельные редакторы для домов, машин и т.п., особой технической сложности в этом нет. На самом общем уровне я пытаюсь сделать программу-игрушку, а не обычную игру...
https://ru.wikipedia.org/wiki/Программа-игрушка

Думаете, слишком сложно? Только не надо мне напоминать, что я уже пятый год один и тот же прототип делаю. Этому проекту 15 лет уже, если считать с самой первой моей идеи, от которой всё пошло, но большую часть времени я вообще ничего не делал.
Аноним 12/02/23 Вск 15:53:51 860288 208
1676206431890.png 5Кб, 263x62
263x62
>>860099
> - типизированные массивы PoolТипArray.
> В Godot 4.0 будет больше возможностей.
Типизированные массивы подвезли. Пулы не типизированные массивы. Пулы ... это пулы.
Аноним 12/02/23 Вск 16:00:27 860290 209
>>860286
> Модуль с готовым ландшафтом не предлагайте, я знаю о нём, но не хочу использовать. Причины долго перечислять.
На самом деле недолго. Модуль террейна от зилана - это сферический конь в вакууме, не приспособленный к продакшону. У него нет внятного АПИ, чтобы интегрировать его в свою игру. Это вещь в себе, нужная чтобы показать, что вот мол есть террейн. И чо дальше? А дальше как к нему ни подступись - он статичен, у него своя инкапсулированная внутри система ЛОДов. У него собственная система шейдеров. Часть настроек вынесена в интерфейс, но в целом модуль неудобен.

Сильнее всего меня огорчило, когда я с ним работал, что каждый инстанс террейна выставляется в глобальных нулевых координатах и таким образом, делать чанки из него не представляется возможным. Ну и пошол он нахуй тогда.
Аноним 12/02/23 Вск 16:25:45 860296 210
1524081798930.png 716Кб, 1920x1080
1920x1080
>>860290
Глупости какие-то пишешь. Делал чанки из нескольких инстансов, никаких проблем не было. Не знаю что значит "статичен", я делал динамический террейн с копанием ям - берется текстура-карта высот, лочится, рисуется пикселями. Система шейдеров своя там не просто так, все объяснено в глубинах гитахаба. Чтения из текстуры дорогие, поэтому там все упаковано по каналам цвета. К лодам хз какие претензии, в движке на то время никаких лодов не было, у него есть, я бы такие не написал за разумное время.
Аноним 12/02/23 Вск 16:27:36 860298 211
1646976279106.png 530Кб, 1920x1080
1920x1080
Аноним 12/02/23 Вск 16:30:30 860299 212
>>860286
>Движкосрачеры создали ложное впечатление того, что ландшафт на основе карты высот - это что-то очень сложное.
Там разве вообще такое обсуждали где-то? Не припомню.
Аноним 12/02/23 Вск 16:46:36 860303 213
image.png 11Кб, 349x30
349x30
bruh...
Аноним 12/02/23 Вск 16:48:44 860304 214
>>860286
Забыл дописать, что я пока даже не знаю, буду ли я текстурировать ландшафт несколькими разными текстурами (земля, трава, песок, камни и т.п.), или я остановлюсь на "плоскозаливочном" стиле графики, в котором вместо текстур ландшафт можно красить цветами вершин. Мне не очень нравится плоская заливка всего и вся, но вместе с тем не нравятся артефакты от перекрывающих друг друга текстур в других играх с похожим ландшафтом. Кроме того, качественные текстуры рисовать сложно, а если я сделаю текстуры для ландшафта, то мне потребуется рисовать текстуры в том же стиле вообще для всего в игре. Если же выбрать плоскозаливочный стиль, можно будет обойтись более простыми текстурами в отдельных случаях, когда без них полигонов слишком много (вроде пуговиц на одежде и т.п., где нужна высокая детализация мелких объектов).

>>860299
>разве вообще такое обсуждали где-то?
Один из популярных аргументов против Godot: "если нет встроенного компонента ландшафта с дорогами, то движок бесполезен для ААА игорей".

>>860290
>сферический конь в вакууме
Не в этом проблема. Основная проблема: в отличие от основного движка, модуль непопулярен, и в случае, если автор его окончательно забросит, мне придётся самому копаться в его коде, искать альтернативу или делать всё самостоятельно с нуля. Если бы он официально поддерживался, такой проблемы бы не было, но есть и другие проблемы, например, как у GridMap.

>>860296
>там все упаковано по каналам цвета
Рассматривал этот вариант, но меня напрягает то, что больше 4 текстур таким образом не упаковать, а если необходимо больше, то придётся их каким-то образом сортировать и разбирать потом в шейдере. Или делать две текстуры на канал, опять же максимум 8 текстур.

>карта высот рисуется пикселями
Вот это я тоже много где видел, но не понимаю. Зачем передавать карту высот в шейдер через текстуру, если тебе в любом случае необходимо на процессоре построить меш с вершинами в определённых высотах и затем по этому мешу сгенерировать коллижн шейп для физического движка? Я знаю, что в теории существует более оптимальный алгоритм коллизий с картой высот, но для его реализации нужно погружаться во внутренности физического движка. Поэтому в нашем случае единственный вариант - сделать тримеш на основе карты высот. Зачем тогда рисовать карту высот и передавать её в шейдер, если шейдер получает уже готовый меш, и ему достаточно наложить на этот меш какую-нибудь текстуру, или просто залить его одним цветом? Тут даже стандартный шейдер справится. А меш менять на процессоре после генерации всех LODов больше не нужно, соответственно экономим время ЦПУ и ГПУ, да ещё и память.

Вот это ещё одна проблема. Создатели модулей пихают избыточный функционал, который не нужен конкретной игре, ты его отключить не можешь и вынужден каким-то образом костылировать решение вокруг него. Скорее всего, если будет официальная нода "ландшафт" от главных разработчиков движка, конечным пользователям всё равно придётся реализовывать свои собственные ландшафты по их конкретные задачи. Поэтому разработчики не торопятся добавлять эту ноду в движок.
Аноним 12/02/23 Вск 16:58:16 860308 215
>>860303
Топ за свои 3000 рублей с алика.
Аноним 12/02/23 Вск 17:01:25 860309 216
>>860304
>оптимальный алгоритм коллизий с картой высот
А, точно, в Godot он уже есть:
https://docs.godotengine.org/en/stable/classes/class_heightmapshape.html
Нужно только его специально заполнять, метода для автоматической генерации нет. Я же использую это:
https://docs.godotengine.org/en/stable/classes/class_mesh.html#class-mesh-method-create-trimesh-shape
Скорее по привычке, т.к. раньше генерировал более сложные формы, чем простую карту высот.

Но если я захочу натянуть карту высот на сферу, то мне, по идее, в любом случае придётся генерировать тримеш, поскольку вершины на сфере уже не располагаются по равномерной сетке. Нужно сначала проверить, стоит ли вообще делать сферический мир.
Аноним 12/02/23 Вск 17:05:26 860311 217
1572055247502.png 15Кб, 747x216
747x216
>>860304
>"если нет встроенного компонента ландшафта с дорогами, то движок бесполезен для ААА игорей".
Ну для ААА да, наверное бесполезен. Туда еще надо и систему трафика и пешеходов. Но Хуан официально же написал что и 4 еще не для ААА.
>напрягает то, что больше 4 текстур таким образом не упаковать, а если необходимо больше, то придётся их каким-то образом сортировать и разбирать потом в шейдере. Или делать две текстуры на канал, опять же максимум 8 текстур.
В том же ассете есть на 16 текстур, который впрочем не развивается. Но да, это уже становится похоже на паззл головоломку когда надо думать как что уложить вместе.
https://github.com/Zylann/godot_heightmap_plugin/issues/174
>Я знаю, что в теории существует более оптимальный алгоритм коллизий с картой высот,
Вовсе не в теории, а совсем даже на практике. В буллете это стандартный примитив, да и в годоте он пробрасывается на уровне ресурса, что в 3 что в 4.
Аноним 12/02/23 Вск 17:17:44 860317 218
>>860311
>Ну для ААА да, наверное бесполезен. Туда еще надо и систему трафика и пешеходов.
Это сарказм? Высказывания про необходимость встроенного ландшафта и дорог исходят от нубов, которые не имеют отношения к крупным студиям. Крупная студия скорее всего свой движок с нуля напишет под игру, чем будет использовать готовый.
Аноним 12/02/23 Вск 17:23:13 860320 219
>>860317
Тогда вообще не пойму, как тебя нубы могли запугать своими высказываниями.
Аноним 12/02/23 Вск 17:23:20 860322 220
https://pastebin.com/aQgNFEhi
Объясните плиз почему в первом варианте ошибка, а во втором всё ок.
В первом варианте после того как прожектайл делает КьюФри() - новый прожектайл такого же типа не создается
Я вроде понимаю почему, но точно не могу ООПешно объяснить..
Аноним 12/02/23 Вск 17:33:43 860324 221
>>860322
Ну так во втором ты каждый раз делаешь новый инстантинейт, а в первом один раз заполнил словарь, и после первого кьюфри объект невалиден по идее.
Аноним 12/02/23 Вск 17:48:13 860332 222
>>860322
Попробуй так:

public override void _Ready()
{
ProjectileTypes = new Dictionary<int, Projectile>()
{
{1, (Fireball)FireballScene},
{2, (Iceball)IceballScene}
};
CurrentProjectileId = 1;
Shoot();
}

public void Shoot()
{
Projectile projectileInstance = ProjectileTypes[CurrentProjectileId].Instantiate();
projectileInstance.DoSomething();
}

Либо так, в зависимости от твоей задачи:

public override void _Ready()
{
ProjectileTypes = new Dictionary<int, Projectile>()
{
{1, (Fireball)FireballScene.Instantiate()},
{2, (Iceball)IceballScene.Instantiate()}
};
CurrentProjectileId = 1;
Shoot();
}

public void Shoot()
{
Projectile projectileInstance = ProjectileTypes[CurrentProjectileId].Duplicate();
projectileInstance.DoSomething();
}

Но для стрельбы лучше не создавать новые объекты, которые после попадания уничтожаются, а иметь заранее созданный массив пуль, которые "вылетают" по мере необходимости и затем сохраняются, "возвращаясь" обратно в этот массив. Причина в том, что создание новых объектов занимает время на выделение памяти, и если ты создаешь все пули заранее, ты не будешь тратить время на выделение памяти во время стрельбы. Но тебе нужно чётко рассчитать количество пуль, одновременно возможных в мире, чтобы игрок не сталкивался с ситуацией, когда он не может выстрелить, пока предыдущие пули не долетели до цели.
Аноним 12/02/23 Вск 17:50:36 860334 223
>>860296
> Глупости какие-то пишешь.
Значит я ниасилил.
Аноним 12/02/23 Вск 17:51:01 860335 224
>>860332
Ну анон! Ну пастебин же!
Аноним 12/02/23 Вск 18:07:22 860343 225
Аноним 12/02/23 Вск 18:10:07 860344 226
>>860288
>Типизированные массивы подвезли.
Да, именно так.
>Пулы не типизированные массивы.
Это массивы. Хранящие определённый тип данных, т.е. они строго типизированные. Кстати, в 4.0 их переименовали в "packed array" и добавили функциональности:
https://docs.godotengine.org/en/latest/classes/class_packedbytearray.html
https://docs.godotengine.org/en/stable/classes/class_poolbytearray.html

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

>Есть такие же доки по 4+, а то там же придется переделывать все?
Когда обновят, должно будет быть здесь же:
https://docs.godotengine.org/en/latest/tutorials/scripting/gdscript/static_typing.html
Но до релиза 4.0 документация пока что не вся обновлена, в частности эта страница не описывает новый синтаксис типизированных массивов.
Аноним 12/02/23 Вск 21:41:46 860408 227
>>860332
> чётко рассчитать количество пуль, одновременно возможных в мире, чтобы игрок не сталкивался с ситуацией, когда он не может выстрелить, пока предыдущие пули не долетели до цели
Почему бы не сделать, чтобы пул пуль при достижении, скажем, 80%, заранее накидывал себе размер и понемногу, во время малой загрузки, подгружал новые инстансы. При этом, в конфиг бы сохранялся текущий размер пула, чтобы в следующий раз он сразу создавался этого размера. Такое себе автоматическое подстраивание под игрока. Если игрок много стреляет, у него пул пуль побольше.

Хех, пул пуль, как я выдал, а!
Аноним 13/02/23 Пнд 00:16:11 860464 228
>>860408
Просто просчитай пул с учетом скорости атаки/бонусов, зачем что-то на ходу делать дроча память?
Аноним 13/02/23 Пнд 07:41:15 860525 229
>>860408
> во время малой загрузки, подгружал новые инстансы
а ты это как чекать будешь, не создавая нагрузки гораздо больше, чем был бы просто пул пуль побольше?
Аноним 13/02/23 Пнд 19:37:48 860708 230
image.png 26Кб, 1012x650
1012x650
Продолжаю проверять анимацию при смене сцены. Даже на четвертом годоте запустил. Смена сцены происходит 5-ю способами:
1. Нажатие на Button
2. Проверка нажатия клавиши Пробел в _process()
3. Из анимации (Call Method Track)
4. После ожидания завершения анимации (yield)
5. Ожидание завершения анимации, установка флага, проверка флага в _process()
Только в первом случае (Button) все работает как надо, спрайт движется по голубой стрелке. В остальных случаях одно мгновение мелькает анимация RESET. Если же установлена анимация Autoplay, то мелькать будет она.

Может Хуану отправить?
Аноним 13/02/23 Пнд 20:20:23 860718 231
>>860708
да, оформляй и отправляй
Аноним 13/02/23 Пнд 20:46:13 860729 232
1599186186933.mp4 35729Кб, 1920x1080, 00:00:55
1920x1080
>>860708
Честно говоря я проверил все твои 5 способов в 3.5.1, вида 10, и не воспроизвелось. Ни разу не мигнула анимация RESET, она появилась бы в левом углу. Ну или ищи в чем разница, по сравнению с тем что ты описал.
Аноним 13/02/23 Пнд 21:11:08 860743 233
image.png 549Кб, 1200x900
1200x900
>>860729
У тебя у анимации move стоит Autoplay on Load. А у меня в корневой узел сцены добавлен скрипт, и из его метода _ready() запускается анимация. Это нужно, чтобы как в ботаникуле при загрузке сцены проигрывать разные анимации. Если ГГ пришел в сцену слева, то одна анимация, если ГГ пришел справа - другая.
Аноним 13/02/23 Пнд 21:51:25 860749 234
1644540733483.png 17Кб, 1172x153
1172x153
1626025106042.png 17Кб, 459x85
459x85
>>860743
Да, ты прав. Но что-то мне подсказывает, что исправлять это не будут. Если подумать, когда сцена загружается, объект должен находиться в каком-то положении. Или слева, или справа. При загрузке сцены, ДО того как сработает ready. Autoplay позволяет это обойти, потому что движок точно знает, какое будет положение. Но без него никак не получится с помощью change_scene. Если добавлять сцену как add_child- может быть, там можно успеть задать параметры между инстанцинацией и добавлением в дерево.
Поэтому предложений 2
1. Если хочется пользоваться change_scene. То сделать autoplay анимацию, где изначально объект не видимый. В анимации move на первом же кадре делать его видимым.
2. Пользоваться add_child вместо change_scene (ну то есть у тебя есть корневая сцена игры, а в ней сцены удаляешь и добавляешь сам). Вот сейчас проверил, если сделать так, то работает move и move2 без миганий, потому что до add_child движку указываешь какую анимацию autoload.
Соре за многабукв.
Аноним 13/02/23 Пнд 22:51:20 860761 235
>>860708
> Может Хуану отправить?
Советую сначала создать новый проект, ничего туда из старого не перетаскивать и полностью с нуля на новом проекте вопроизвести проблему. Этот проект потом ты отправишь Хуану как иллюстрацию проблемы...

... Если проблема воспроизведётся.

... Потому что обычно в таких случаях, на новом проекте проблема не повторяется. И в поисках ответа на вопрос "почему она не повторилась?" ты выясняешь, что это ты объебался, а не движок.
Аноним 13/02/23 Пнд 23:18:55 860767 236
>>860761
Воспроизводится.
Аноним 14/02/23 Втр 01:36:01 860797 237
>>860743
>в корневой узел сцены добавлен скрипт, и из его метода _ready() запускается анимация
Методы _ready() вызываются снизу вверх по иерархии, то есть от "листьев" дерева сцены к "корню". Пока все дочерние ноды не обработают свой _ready(), их общий предок не сможет ничего сделать. Соответственно, если твоя нода где-то в глубине дерева имеет анимацию, которую ты хочешь менять из корня, эта глубинная нода может успеть отрендерить кадр анимации до того, как запустится код в твоём корне.

Вывод - настраивать все ноды до того, как корневая нода попадёт в дерево сцены.

В остальном бага здесь нет, это ожидаемое поведение.
Просто ты плохо разбираешься в дереве сцены Godot.
Аноним 14/02/23 Втр 02:16:07 860805 238
>>860708 >>860743
Мне не удалось воспроизвести твою проблему. Мой код:
Корневая нода:
>func _ready() -> void:
>_ print(name + " ready")
>_ $AnimationPlayer.play("move")
>_ print("Scene1.tscn fully loaded")
>func _input(event: InputEvent) -> void:
>_ if event.is_action_released("ui_accept"):
>_ _ var _e := get_tree().change_scene("res://scene2.tscn")
Плеер анимаций:
>func _ready() -> void:
>_ print(name + " ready")
>_ print("%s: '%s'" % [name, current_animation])
>func _on_animation_started(anim_name: String) -> void:
>_ print("%s: '%s'" % [name, anim_name])
Аналогично настроил scene2, только там другая анимация.
Результат в консоли:
>AnimationPlayer ready
>AnimationPlayer: ''
>AnimationPlayer: 'RESET'
>Scene ready
>AnimationPlayer: 'move'
>Scene1.tscn fully loaded
Т.е. сначала загружается AnimationPlayer, выполняется его _ready, затем запускается его анимация RESET (только потому, что я нажал на ней autoplay on load, в противном случае она не запускается) и соответственно запускается обработчик события _on_animation_started, и только потом корневая нода выполняет _ready и меняет анимацию на "move".

ОДНАКО, на экране никаких артефактов я не вижу (Godot 3.5, GLES3, пробовал переключать рендеринг на многопоточный). У меня на экране сразу воспроизводится анимация "move", ни одного кадра RESET я не вижу. Я что-то неправильно понял?
Аноним 14/02/23 Втр 02:33:22 860808 239
>>860708
>4. После ожидания завершения анимации (yield)
Проверил, по-прежнему никаких артефактов:
>func _ready() -> void:
>_ print(name + " ready")
>_ $AnimationPlayer.play("move")
>_ print("Scene2.tscn fully loaded")
>_ print("---")
>_ yield($AnimationPlayer, "animation_finished")
>_ var _e := get_tree().change_scene("res://scene2.tscn")
Точно такой же код для сцены scene2.
Сцены меняются, анимации воспроизводятся, артефактов нет.

Можешь на видео записать, как у тебя мигает всё?
Аноним 14/02/23 Втр 16:24:27 860984 240
1600782138498.mp4 9818Кб, 1920x1080, 00:00:32
1920x1080
>>860797
Баг в том, что если указан autoplay, то это обходит иерархию сцены.
>>860808
Я же написал выше что воспроизводится.
Аноним 14/02/23 Втр 19:20:30 861073 241
>>860984
Хорошо, мне удалось воспроизвести у себя. Этот эффект становится виден только на низкой частоте кадров, а я у себя снял ограничение и было 2000+ кадров в секунду. Если поставить ограничение, то на 60 квс кадр изредка мелькает, на 30 квс чаще, а на 5 квс заметно каждый раз. Короче, нужно ставить ограничение частоты кадров, чтобы тщательно тестировать.

>если указан autoplay
Это не обязательно, если у тебя никакая анимация не задана на воспроизведение, то по умолчанию "воспроизводится" RESET. В кавычках, потому что события animation_started не триггерится, но значения из RESET задаются...

>это обходит иерархию сцены
Насколько я понял, рендерер рендерит всего один кадр со значениями по умолчанию, при этом до вызова обработчиков _process, _draw, _ready и даже VisualServer.pre_draw. Странное поведение, но это не похоже на баг. Если рендерер ничего не будет рендерить, то что должно отображаться на экране? Заливка одним цветом? Или предыдущая сцена, которая может быть уже выгружена из памяти? По идее, рендерер делает всё правильно, отображая картинку как можно скорее.

>>860749
>1. Если хочется пользоваться change_scene. То сделать autoplay анимацию, где изначально объект не видимый. В анимации move на первом же кадре делать его видимым.
Это не решает проблему. Вместо неправильного положения на экране, объект будет полностью отсутствовать на экране один первый кадр. Хорошо заметно на низкой частоте кадров.

>2. Пользоваться add_child вместо change_scene (ну то есть у тебя есть корневая сцена игры, а в ней сцены удаляешь и добавляешь сам). Вот сейчас проверил, если сделать так, то работает move и move2 без миганий, потому что до add_child движку указываешь какую анимацию autoload.
Вот это действительно решает проблему.

Я нашёл способ решения проблемы, который работает с get_tree().change_scene():
>func _enter_tree() -> void:
>_ print("[%s] enter_tree" % [name])
>_ $AnimationPlayer.autoplay = "move"

Событие _enter_tree срабатывает после _init, но перед всеми _ready:
>[Scene #1] init
>[Scene #1] enter_tree
>[Icon] ready
>[AnimationPlayer] ready
>[AnimationPlayer] ''
>[AnimationPlayer] 'move'
>[Scene #1] ready
>[AnimationPlayer] 'move'
>[Scene #1] fully loaded
>[Icon] draw
>[Scene #1] process frame #1

Единственный нюанс, который нужно учитывать, что _enter_tree срабатывает каждый раз, кода нода добавляется в дерево, а _init и _ready вызывается только один раз. Но в обработчике _init корневой ноды данный код написать нельзя, потому что get_node() в этот момент выдаёт null. Как вариант, можно создать флаг "_first_enter_tree" и проверять его, если необходимо извлекать корневую ноду из дерева и добавлять повторно (т.е. если сцена меняется из какого-то пула сцен в оперативной памяти, а не загружается каждый раз с диска с нуля). Ну, смотрите сами, как у вас там сцены загружаются и меняются.
Аноним 14/02/23 Втр 21:25:13 861109 242
>>852131 (OP)
Есть примеры реализаций кастомизации персонажей на Godot? Я видел что-то раньше, но там было ультра-лоуполи какое-то. И в виде платного плагина, а не игры. Я знаю основные принципы, которые универсальны для любых движков (шейпкеи, кости, сдвиг текстуры, подмена кусков модели, альбедо в материале), но хотелось посмотреть, до чего дошли другие пользователи Godot.

И как это потом оптимизировать для случая "много персонажей на экране"...
Аноним 14/02/23 Втр 21:49:39 861117 243
image.png 1Кб, 180x138
180x138
image.png 3Кб, 228x232
228x232
Чому ебаный рейкаст не коллайдится ни с чем? У рейкаста маска с нужными слоями стоит, у рутноды нпц - тоже нужная маска.
У тайлмапа нужный слой стоит - у нпц соответствующие слои в маске
Аноним 14/02/23 Втр 21:58:45 861119 244
>>861117
Ладно я еблан, были отключены галки collide with bodies/areas
Аноним 14/02/23 Втр 23:11:59 861137 245
>>861109
>видел что-то раньше
Кажется, вот это: https://youtu.be/KHLVfrV0pIs

Аффтар запросил 35$ за версию 0.5а, распланировал роадмап и фсё. Типичный ёрли аццесс...
Аноним 14/02/23 Втр 23:45:40 861145 246
Аноним # OP 15/02/23 Срд 13:57:40 861299 247
Аноним 15/02/23 Срд 14:45:08 861307 248
>>861119
Еще надо проверять что он вообще enabled, в какой то версии по умолчанию он был disabled.
Аноним 15/02/23 Срд 14:48:45 861308 249
1536154490183.gif 6012Кб, 640x360
640x360
Аноним 15/02/23 Срд 19:42:08 861356 250
Godot 4.0 RC 2 вышел
Аноним 16/02/23 Чтв 17:34:19 861547 251
Шалом всем в этом треде, мир вашему дому!
Решил вкатиться в годот с идеей 2д изометричной игры в духе лутер-шутера, и элементами ВН.

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

Владею ООП на среднем уровне, пайтоном, английским, могу в 3д модельки - но не хочу дрочиться с их оптимизацией для игры. Мне проще спрайтов нарендерить.

А теперь вопрос вопросов - есть ли какие-то гайды, с которыми мне стоит в первую очередь ознакомиться, с учётом того, что я хочу сделать?
Или ещё проще - с чего, собственно, лучше начать?
Аноним 16/02/23 Чтв 18:54:04 861574 252
>>861547
>2д изометричной игры в духе лутер-шутера
Как ты себе представляешь шутер в изометрии? Пошаговый, как диды играли во времена Fallout?
>происходит ВН составляющая
Изометрия ещё ладно, а ВН рисовать потянешь?
>могу в 3д модельки
Ясно, значит, прям как в Fallout и ему подобных.

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

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

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

Но в контексте Godot нужно понимать, что актуальную оптимизацию 3D (для сравнительно больших проектов) подвезли только в версии 4.0, которая уже вот-вот релизнется, но всё ещё нет.

>с чего, собственно, лучше начать?
https://docs.godotengine.org/en/stable/getting_started/introduction/index.html
И дальше все статьи из "GETTING STARTED".
После этого - статьи из "TUTORIALS".
Наконец, тебе часто понадобится "Godot API", но его удобнее читать прямо в движке (F1, кнопка в инспекторе или ctrl+клик в коде на название класса), чем на сайте... сам поймёшь, почему. Ты же уже скачал движок?

>есть ли какие-то гайды
>с учётом того, что я хочу сделать?
По Godot вообще не так много туториалов, а на твой конкретный запрос я ничего не видел. Ну, есть пара фреймворков для визуальных новелл. Есть пара фреймворков для RPG игр. Но если ты умелый программист, сделаешь всё под себя без каких-либо фреймворков, т.к. движок очень дружелюбный и всё необходимое тебе уже есть из коробки. Для изометрии смотри официальную документацию на TileMap, там легко переключиться с прямоугольной сетки на сетку для изометрических тайлов. Ну, тыжпрограммист, так что иди RTFM, а гайды "как сделоть игру жанра X" предназначены для детей и яждизайнеров, а по факту нужны для заработка того, кто эти туториалы записал.
Аноним 16/02/23 Чтв 20:02:19 861594 253
Внезапно RC версия запустилась,бэты не хотели работать из за графики
Аноним 16/02/23 Чтв 20:19:50 861597 254
tavern4.JPG 1142Кб, 2000x3000
2000x3000
>>861574
>Как ты себе представляешь шутер в изометрии? Пошаговый, как диды играли во времена Fallout?
Не, скорее просто шутер с видом сверху-сбоку. Полно их. Не пошаговый, реалтаймовый.
>ВН рисовать потянешь?
3д картинки как-нить вытяну.
>лучше начать со статичных уровней
Безусловно именно с этого и начну. Генератор это так, в теории.
Но даже до этого пока далеко, потому что у меня из базового туториала пули летят не в том направлении, если персонаж двигается.
>Делаешь лоуполи @ запекаешь нормали. Сложно?
Нет, не сложно. Сложно это анимировать, заставить сгибаться под правильными углами и правильно деформировать тела. Да и не хочу я просто ещё и в годоте с 3д возиться. Мне и до 3д изучать его до усрачки.
А как начнёшь в 3д - это всё, это бесконечная яма с выставлением света и так далее.
>актуальную оптимизацию 3D (для сравнительно больших проектов) подвезли только в версии 4.0, которая уже вот-вот релизнется
Тем более не хочу дезть туда первым.
>Ты же уже скачал движок?
Да, уже начал ковырять этот туториал пока: https://www.youtube.com/watch?v=HycyFNQfqI0
Я если тыкаю сам - быстрее обучаюсь.
>Но если ты умелый программист, сделаешь всё под себя без каких-либо фреймворков, т.к. движок очень дружелюбный и всё необходимое тебе уже есть из коробки.
Не то, чтобы я дохуя умелый, но класс от объекта отличаю и применять умею. Чего-то готового я не прошу, я хочу именно понять как оно всё работает и понять нюансы, чтобы начать делать что-то своё.

А так спасибо, попробую почитать туториальчики, может что-то прояснится. Пока я даже структуру того, как оно всё работает и взаимодействует слабо понимаю.
Аноним 16/02/23 Чтв 20:55:22 861608 255
>The Production team has been hard at work assessing the remaining PRs and issues in the 4.0 milestone, pushing non-critical or risky changes to the 4.1 milestone, or prioritizing what could actually still be done so close to the release
как и было предсказано ранее, до 4.1 будете жрать кал
Аноним 16/02/23 Чтв 21:03:57 861609 256
>>861608
>assessing the remaining PRs and issues

>до 4.1 будете жрать
Стабильность и багфиксы.

Спасибо Хуану за это! Самый стабильный движок.
Аноним 16/02/23 Чтв 21:21:11 861615 257
image.png 14Кб, 1158x308
1158x308
Объясните пожалуйста как в гд4 работать с AnimationTree. В туторах по тройке чет всё гладко прям, а по четверке туторов кроме доки со старыми скринами не нашел.
Почему у меня, например, main анимация (типа idle) не играется на постоянке, если я делаю к ней travel? Пишу если velocity.X == 0 {StateMachine.Travel("main")} - и стейт машина автоматом переходит в стейт turnright, когда игрок на месте стоит.
1) Как мне заставить спрайт постоянно быть в main, когда не двигается, а не перескакивать в другую ноду?
2)Я хочу залупить пути (main-turnX-X-turnX-main), но если соединяю и в обратное направление (а не в одно как сейчас), то в годот треде начинается сущий кошмар - вообщя непонятная мне хуйня происходит с переключение стейтов (расписывать даже смысла нет особо). ЧЯДНТ?
Аноним 16/02/23 Чтв 21:25:48 861618 258
>>861615
Зачем вы лезет щас в 4ку?
Аноним 16/02/23 Чтв 21:34:32 861620 259
image.png 16Кб, 1142x257
1142x257
>>861615
Разобрался перечитав ещё разhttps://docs.godotengine.org/en/latest/tutorials/animation/animation_tree.html
У пути есть параметр Advance и он был выставлен в Auto, соответственно автоматом по кругу автомат ходил. Выставил как надо и теперь всё ок (нахуй нужна енд нода пока не понял всё равно наверн для StateMachine.Stop();)
>>861618
Нраицца, в четвёрке вроде всё вполне работает что тыкал, ток дока не везде доделана
Аноним 16/02/23 Чтв 21:37:16 861621 260
>>861597
>изометрия
>сверху-сбоку
Это разные проекции. Изометрия - это, например, как в Project Zomboid. Собственно, какие ещё есть шутеры с изометрической проекцией? Я чаще топ-даун шутеры встречал, они проще и понятнее. В изометрии же обычно пошаговые, тактические, РПГ и т.п. Зомбоид в данном случае - исключение.

>3д картинки как-нить вытяну
Завидую. Тяжело было учиться?

>пули летят не в том направлении, если персонаж двигается.
Есть локальная система координат и глобальная. Глобальная не вращается и не смещается. Локальная движется и вращается вместе с нодой. У нод есть специальные методы для преобразования координат из локальной системы в глобальную. Также каждая нода автоматически двигает и вращает все свои дочерние ноды, это следствие того, что дочерние ноды размещаются в локальной системе координат ноды; есть метод для отключения этого наследования. В общем, тебе нужно размещать и направлять пули в глобальной системе координат, а ты их, видимо, либо к игроку крепишь, либо в системе игрока вычисляешь вектор направления. Читай API Node2D, там всё из названий методов понятно (сравни описания global_... и local_...).

>Да и не хочу я просто ещё и в годоте с 3д возиться.
Не так уж и сложно. Ну, не важно, просто знай, что при желании ты можешь рендерить 3D поверх 2D и наоборот, генерировать текстуры в реальном времени и так далее. У Godot отдельное API для 2D, но это не мешает смешивать графику в разных вариантах. Если вдруг захочешь, например, трёхмерную карту многоуровнего подземелья, что лучше всего будет выглядеть как 3D голограмма. Так что при планировании фич учитывай, что не ограничен 2D.

>ковырять этот туториал пока:
Ну вот там топ-даун, а не изометрия...

>Пока я даже структуру того, как оно всё работает и взаимодействует слабо понимаю.
Движок каждый кадр обходит все ноды в дереве, вызывая обработчики событий (здесь они называются "сигналами"), и в этих обработчиках работает твой код. Твой код меняет свойства нод или внутренних систем движка (здесь они называются "серверы"), и движок идёт по дереву дальше. Цикл повторяется, пока программа не завершится по требованию пользователя, твоей команде из кода или из-за критической ошибки. По умолчанию движок работает в один поток, поэтому его поведение предсказуемо и можно поверхностно изучить, натыкав print().
Аноним 16/02/23 Чтв 21:47:44 861624 261
>>861618
>Зачем вы лезет щас в 4ку?
RC - Release Candidate - Кандидат на Релиз -> версия находится на финальной стадии развития, проводятся проверки на баги и последние багфиксы. Скоро релиз.

>>861620
>У пути есть параметр Advance и он был выставлен в Auto
А ты этого не знал? В 3.х точно такие же параметры.
Аноним 16/02/23 Чтв 21:53:50 861626 262
>>861624
>А ты этого не знал? В 3.х точно такие же параметры.
Я первый раз использую, в туторах по тройке чёт особо не видел про это...
Аноним 16/02/23 Чтв 22:59:47 861640 263
FlbTsPjaUAA6NUW.jpg 66Кб, 996x996
996x996
Аноним 17/02/23 Птн 08:46:35 861781 264
image.png 177Кб, 1190x1233
1190x1233
0001-0892.mp4 1867Кб, 1920x1080, 00:00:14
1920x1080
>>861621
>Это разные проекции.
Да бог бы с ними.

>Завидую. Тяжело было учиться?
Ну если тебе что-то нравится делать, то нет, не тяжело. Никогда себя не заставлял. 3д с 18 года занимаюсь, но набегами. Раз в пол года по месяцу-два что-то делал. Начинал с даза, потом пересел на блендер.

>Читай API Node2D
Читаю. Не скажу, что понимаю, как с этим работать. На пике код, который спавнит эту пулю. Насколько я вижу, спавниться она должна по глобальным координатам. Так она и делает. И когда перс стоит, вроде всё в нужную сторону летит, но когда он движется - нет.
Ещё у туториала, насколько я вижу, устаревший код. Метод get_root() не выпадает в списке доступных, хоть и работает.

>По умолчанию движок работает в один поток, поэтому его поведение предсказуемо и можно поверхностно изучить, натыкав print()
Спасибо, натыкал. Полезно.
Но опять таки непонятно, как мне заспавнить пулю в мире, по координатам игрока и направить её в сторону положения мышки? Сейчас, насколько я вижу, пуля вылетает в зависимости от вращения тушки. А это не совсем то, что я хочу.
Аноним 17/02/23 Птн 09:22:56 861784 265
>>861781
Я понял, пуля коллайдится с игроком, надо просто спавнить её вне коллизии. Топаю дальше.
Аноним 17/02/23 Птн 20:46:42 861976 266
>>861781
Вектор направления движения так определяй:
>var motion := Vector2(
>Input.get_axis("left", "right"),
>Input.get_axis("up", "down")).normalized()
Это короче и учитывает стики геймпада, если когда-нибудь захочешь реализовать поддержку геймпада. Т.е. игрок сможет двигаться медленнее, если наклоняет стик не полностью, а только слегка.
https://docs.godotengine.org/en/stable/classes/class_input.html#class-input-method-get-axis

>>861784
>Я понял, пуля коллайдится с игроком, надо просто спавнить её вне коллизии.
Ты пулю сделал как RigidBody2D. Если ты делаешь классический топ-даун шутер, а не что-то вроде Angry Birds с видом сбоку, то, ИМХО, лучше использовать Area2D, после чего двигать пулю по прямой в её собственном скрипте, пока она не зарегистрирует пересечение с чем-либо. Таким образом можно будет снизить нагрузку, исключив лишнюю физическую симуляцию (которая здесь не нужна), и точнее контролировать, что происходит на экране.

У Area2D пули можно снять галочку с Monitorable и оставить галочку Monitoring, т.к. только пуля ждёт пересечения с чем-либо. Дальше тебе нужен будет обработчик сигнала body_entered в коде пули, в котором ты проверяешь, в кого/во что попала пуля, посылаешь ему, если нужно, сигнал "в тебя попала пуля" и самоуничтожаешь пулю... или меняешь ей направление, если хочешь сделать рикошеты, но для точного вычисления угла потребуется сначала сделать рейкаст от пули в направлении того, во что она врезалась, получить нормаль столкновения и уже от нормали сделать рикошет; но RigidBody2D в такой ситуации скорее всего начал бы вращаться, т.е. всё равно пришлось бы заняться математикой вручную.

Короче, RigidBody2D используй только когда тебе реально нужны какие-то объекты, которые реалистично друг от друга отскакивают с учётом массы и трения, или на которые реалистично действует гравитация (которой в топ-даун шутере всё равно нет).
Аноним 17/02/23 Птн 21:43:09 862009 267
>>861640
Это я прочитал там, да. Но слишком поздно
Аноним 18/02/23 Суб 00:17:07 862052 268
>>861976
> Input.get_axis
Хуясе! Когда они добавили эту важнейшую функцию? Я пропустил момент.
Аноним 18/02/23 Суб 00:19:22 862053 269
>>862052
Сам спросил, сам отвечаю. Добавили в 3.4. Вычисляется простым перещёлкиванием версии в доках.
Аноним 18/02/23 Суб 13:14:18 862127 270
>>852131 (OP)
Нужно ли ждать релиза 4 версии или для вкатыша это должно быть похуй и нужно только хай левел скил пацанам?
Аноним # OP 18/02/23 Суб 13:53:33 862139 271
Аноним 18/02/23 Суб 14:49:49 862145 272
>>862139
>>x или y?
>Да. # OP
ОП как всегда... Петросяна прикрепить не забудь в следующий раз, чтобы смешнее было.

>>862127
>Нужно ли ждать релиза 4 версии?
Ждать осталось немного, движок в стадии Release Candidate, что означает скорый выход в релиз. Ждать осталось максимум несколько недель.

Нужно ли? Вопрос сложный. Ты можешь уже сейчас пробовать что-то сделать на RC версии, она будет достаточно стабильна. Но большинство туториалов, примеров и т.д. пока что только для 3.x ветки, и даже официальная документация не полностью обновлена, так что о некоторых фичах можно узнать только из кода движка или обсуждения пулл реквестов на гитхабе. Однако, если ты начнёшь сейчас изучать 3.x, то в скором времени тебе придётся переходить на 4.0, запоминая отличия в API и GUI редактора. Так что если ты абсолютный новичок, никуда не торопишься и тебе есть чем заняться (рисовать спрайты или делать модели к будущим играм), я бы подождал выхода 4.0 с обновлением документации и туториалов, но если тебе очень хочется нырнуть в геймдев прямо сейчас, то можешь начать с 3.x, а потом когда-нибудь перейти на 4.x. Всё равно для первых нубских игр нововведения 4.0 тебя почти никак не касаются, там больше по 3D всё меняли.

>нужно только хай левел скил пацанам?
Версия 4.0 полностью заменяет ветку 3.x, новые фичи будут выходить только в ветке 4.x, а ветка 3.x будет получать только багфиксы. Поэтому рано или поздно все разработчики перекатятся на 4.x, как раньше перекатились с двойки на тройку. Сделано это так, потому что на ветке 3.x за эти годы выпущено много игр, которые всё ещё нужно поддерживать, но переводить на 4.0 будет слишком сложно, нерационально или недопустимо (как минимум брошена поддержка GLES2). Новые фичи этим играм не нужны, а вот багфиксы пригодятся. Поэтому новые игры будут делать только на 4.x, а игры в процессе разработки переводить с тройки на четвёрку, даже если основные нововведения четвёрки конкретной игры не касаются. Т.е. переход на новую версию растянут исключительно из необходимости поддерживать уже выпущенные игры. Godot заботится об играх, в отличие от глюкнити.

А ты что хочешь делать? 2D? 3D? Какой жанр?
Аноним 18/02/23 Суб 15:54:59 862163 273
>>862127
Нужно ждать 4.2, потому что 4 попросту сырая. Ну или в 3.5.1 вкатываться, хотя тут хз.
Аноним 18/02/23 Суб 16:41:55 862179 274
>>862163
>Нужно ждать 4.2, потому что 4 попросту сырая.
Да что уж там, лучше сразу 6.0 ждать, потому что в 5.0 будет новый графический API PolkanGL, но он слишком сырой пока, а вот в 6.0 допилят будущий графический API PuushkaX, вот тогда заживём, сцены из миллиардов треугольников будут ещё до нажатия на ярлык игры рендериться, а текстуры встроенная нейронка на чипе BIOS за отрицательное время генерировать ещё до сборки компонентов в целый системный блок. Нанотехнологии же. А пока версия 6.0 не вышла, придётся на 3.5 сидеть.
Аноним 18/02/23 Суб 17:13:47 862189 275
>>862145
Спасибо большое за развёрнутый ответ!
>А ты что хочешь делать? 2D? 3D? Какой жанр?
да я прост нуб, хочу всё попробовать, а годот, мне кажется, дружелюбной штукой на которой можно попробовать всё.
Аноним 19/02/23 Вск 01:46:38 862358 276
Потестил для шарпа пул объектов (пул кинематик боди) для пуль для шмапа/буллетхела.
Вывод:
Заморачиваться с пулом реально стоит если объектов в секунду как минимум 500 будет создаваться (и они все одновременно на экране будут).
1600 пуль на экране из пула дают где-то 100 фпс у меня, 1600 при instantiate - меньше 30
Аноним 19/02/23 Вск 01:48:33 862359 277
Бтв, есть хорошие туториалы по мешинстанц2д (именно 2д) и использованию серверов (всяких visual, physics etc)?

По серверам чёт находится, а по мешинстанц2д вообще пиздец, один толковый видос только видел и ничего почти в доке
Аноним 19/02/23 Вск 02:26:50 862367 278
Прошло 6 недель и я понял как в dialogic менять гребаный шрифт! Наконец я сделал это!
Аноним 19/02/23 Вск 02:46:25 862371 279
>>862189
>годот, мне кажется, дружелюбной штукой на которой можно попробовать всё.
Всё так.

>>862358
>кинематик боди для пуль
Зачем? Тебе нужно, чтобы пули скользили вдоль стен? Нет? Тогда используй Area, зачем тебе кинематики?

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

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

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

>>862359
>мешинстанц2д
>ничего почти в доке
Лол, а что тебе нужно-то?

>использованию серверов
Берёшь и используешь.
https://docs.godotengine.org/en/stable/tutorials/performance/using_servers.html

Если кратко, то ноды - это всего лишь удобные интерфейсы к серверам, позволяющие описать сцену декларативно в tscn файле. Ты можешь обращаться к серверам из кода без использования нод, облегчая дерево сцены. Все методы интуитивно понятны, главное хранить где-то RIDы, которые ты получаешь от сервера, ибо потеряешь RID - потеряешь доступ к объекту на сервере (что в общем и целом ведёт к утечкам памяти). Общая схема работы такова:
- запрашиваешь создание объекта;
- получаешь и сохраняешь RID;
- вносишь изменения по RID;
- радуешься/отдыхаешь.
Всё остальное сервер делает сам.

>>862367
>Прошло 6 недель и я понял
Ты мазохист или тебе просто не нужно было? Если бы мне нужно было, но не получалось, я бы намного раньше бросил и пошёл бы писать велосипед.
Аноним 19/02/23 Вск 09:12:06 862399 280
>>862371
>Ты мазохист или тебе просто не нужно было?
Я уже писал о том как мне трудно это даётся. Знаю что это бессмысленно, у меня не получится реализовать свою простую задумку...
Аноним # OP 19/02/23 Вск 10:22:03 862410 281
Всем вопрошающим отвечаю официально ИТТ: юзайте трёшку. Она быстра, отточена, в руке сидит как влитая. Бэкпортами в неё завезли самое нужное из четвёрки. Делайте свою игру мечты на трёшке прямо щас.
Аноним 19/02/23 Вск 11:24:56 862416 282
Ждём 4.1
Аноним 19/02/23 Вск 13:11:59 862454 283
1676801429587.png 317Кб, 750x471
750x471
>>862416
> Ждём
А часики-то тикают.
Аноним 19/02/23 Вск 14:17:49 862478 284
>>862371
>Всё так.
Но четверка становится менее дружелюбной при этом?
Аноним 19/02/23 Вск 15:26:47 862503 285
>>862478
Ну смотри, релиз кандидат 2 дичайше пролагиввает при запуске и при закрытии. Экспортированные проекты (примитивные из одной сцены) тоже дичайше пролагивают при открытии и закрытии, но во втором кандидате рандомно. Видно, над этим работают, но ещё не победили.

Насколько дружелюбное впечатление это оказывает на мимокрока - решай сам.
Аноним 19/02/23 Вск 15:52:23 862511 286
>>862503
>пролагивают при открытии
Это не лаг, это компиляция шейдеров.

>при закрытии
Не замечал проблем, что ты там делаешь?

Движок шейдеры на диск пишет, у тебя HDD?
Аноним 19/02/23 Вск 16:08:02 862516 287
>>862511
> это компиляция шейдеров
Если бы один раз, когда кэш создаётся, я бы не возражал. Но оно реально пролагивает постоянно.
> что ты там делаешь?
Фишка в том как раз таки, что ничего не делаю.
Аноним 19/02/23 Вск 16:08:23 862517 288
>>862511
> у тебя HDD?
Разумеется, нет.
Аноним 19/02/23 Вск 16:14:43 862519 289
>>862503
Вообще, Godot всегда тормозил на старте и особенно на открытии проекта. Но если раньше юзер сразу видел перед собой GUI, с которым невозможно взаимодействовать из-за тормозов, то сейчас просто чёрная заливка в окне, а после появления GUI он работает максимально плавно. Думаю, это очень правильно сделано, но всё же надпись вроде "подождите, идёт загрузка ресурсов/компиляция шейдеров" была бы лучше чёрного экрана.

Аналогично с проектами. Первый запуск требует компиляции множества шейдеров на диск, в процессе чего окно залито одним цветом. Но потом почти сразу 1500+ кадров в секунду на сцене с кубами. Со второго запуска, если не удалять с диска кэшированные шейдеры, игра запускается практически мгновенно.

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

На закрытии проблем нет вообще. Возможно, у тебя там какие-то проблемы с антивирусом или чем-то вроде того. На счёт рандомности не знаю, не замечал, но возможно что у тебя там какая-то автоочистка настроена и портит сохранённые шейдеры, вынуждая компилировать и сохранять их повторно. Или ты сам папки .godot в проектах чистишь (шейдеры теперь хранятся там).
Аноним 19/02/23 Вск 16:30:43 862526 290
>>862516
>Если бы один раз, когда кэш создаётся, я бы не возражал. Но оно реально пролагивает постоянно.
Опиши характеристики ПК, включая модель, возраст и основные показания SMART системного SSD и того, на котором у тебя Godot с проектами. Также проверь диспетчер задач, включив высокую скорость обновления и смотря на графики дисков, следи за скоростью отклика. Также открой дефрагментацию дисков и запусти её принудительно, это отправит сигнал TRIM и позволит SSD оптимизировать их работу, ускорив отклик и снизив износ при записи. Поскольку ты сам ничего толком не говоришь, я вангую, что у тебя SSD дешёвый, изношенный или неправильно обслуживается, поэтому Godot тормозит на каждой операции чтения/записи. Другие приложения могут работать нормально, т.к. реже читают/пишут или вообще не нуждаются в постоянной работе с файлами. Или ты просто привык, что у тебя комп тормозит...

>Фишка в том как раз таки, что ничего не делаю.
Вообще? Просто открыл проект и сразу закрыл?
Аноним 19/02/23 Вск 17:01:30 862535 291
1 - Встроенная [...].png 63Кб, 800x600
800x600
2 - Меню редакт[...].png 56Кб, 800x600
800x600
3 - Набросок GU[...].jpg 76Кб, 800x600
800x600
4.mp4 1630Кб, 800x600, 00:00:26
800x600
1. Набросал справочную систему. Грузит все страницы из одного JSON файла, они могут иметь иерархию любой вложенности. Пока что только в меню паузы и рядом с настройками из главного меню, но хочу ещё сделать контекстную справку, т.е. открывающую определённую страницу с разных кнопок в игре. На текст не обращайте внимания, писал чисто для теста. Зелёный заголовок получается, если пользователь нажал кнопку внизу страницы, эту метку можно снять. Я сначала хотел галочку слева от заголовка ставить, но дизайн Tree какой-то странный и контроля мало, я так и не смог добиться приятного расположения галочки и решил просто цветом отмечать, что даже лучше выглядит (заметнее).

2. Кнопки выбора редактора. Это одна сцена, связанная несколько раз со сценой меню с заменой надписей. Нет, это не TextureButton, т.к. он имеет неудобные ограничения, поэтому я сделал это кнопки на базе обычного Button и TextureRect. Планирую вставить туда гифки с короткой демонстрацией каждого редактора, которые будут запускаться при наведении курсора. Если кому-то интересно, могу подробнее описать, как сделать такую же кнопку, чтобы она приятно работала. Правда, теперь меня напрягает слишком сильная разница между разными меню, т.к. делать всё плиточным я не хочу, а простые кнопки для редакторов не будут достаточно наглядными.

3. Набросок редактора зданий, или, скорее, шаблонов для генерации зданий. Я подумываю над тем, чтобы сделать упрощённую версию Townscaper, только помимо внешней оболочки будет генерироваться интерьер, соответствующий выбранному типу комнаты. Базовая идея в том, чтобы указать планировку первого этажа, остальные этажи с минимальными отличиями повторяют первый. Можно расширить до редактирования каждого отдельного этажа индивидуально, но зачем?.. Суть планировки: вместо расстановки отдельных стен/кубов, пользователь отмечает предназначение клетки - спальня, кухня, прихожая, санузел, лестница и так далее - а игра самостоятельно расставляет все необходимые стены и декорации с опорой на мета-параметры здания, если они указаны. Это максимально избавляет от рутины, оставляя возможность сделать что-то оригинальное без написания тонны кода. Процедурная генерация в любом случае следует шаблонам, только в данном случае шаблон визуально настраивается, а не хардкодится в скриптах игры.

4. П Р О К Р А С Т И Н А Ц И Я
Аноним 19/02/23 Вск 17:05:06 862537 292
1676815506044.png 678Кб, 1400x392
1400x392
>>862519
> Вообще, Godot всегда тормозил на старте

Вообще-то, нет, вот прямо сейчас у меня тот же самый проект на трёшке 3.5.1 открывается без лагов.

> На закрытии проблем нет вообще. Возможно, у тебя там какие-то проблемы с антивирусом
Почему "антивирус" реагирует только на четвёрку?

>>862526
> Опиши характеристики ПК, включая модель, возраст и основные показания SMART системного SSD и того, на котором у тебя Godot с проектами.
Смарт ОК. Зиончег от анончега с Али, 8 ядер по два логических, оперативка 16 гигов ДДР4 в одноканале, ПЕЧ 1060, 6 Гб.

> Вообще? Просто открыл проект и сразу закрыл?
Да. Тупо по системной кнопке с крестом.

> открой дефрагментацию дисков и запусти её принудительно, это отправит сигнал TRIM и позволит SSD оптимизировать их работу, ускорив отклик и снизив износ при записи
Щас посмотрим.
Аноним 19/02/23 Вск 17:08:23 862538 293
1676815703484.png 3Кб, 669x20
669x20
>>862526
> Также открой дефрагментацию дисков и запусти её принудительно, это отправит сигнал TRIM и позволит SSD оптимизировать их работу
> что у тебя SSD дешёвый, изношенный или неправильно обслуживается, поэтому Godot тормози
Почему трёшка не тормозит?
Почему винда не тормозит?
Почему ничего не тормозит, кроме неоптимизированного релиз-кандидата?
Аноним 19/02/23 Вск 17:34:49 862554 294
>>862535
Малаца
Добавь простенькие движения ног, хоть процедурные, сразу презентабельность в 10 раз вырастет.
Аноним 19/02/23 Вск 18:52:41 862586 295
>>862537
>тот же самый проект на трёшке
Так ты портируешь что-то? Сильно сложное?

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

>Почему "антивирус"
Лол, откуда мне знать, это просто распространённое предположение, что какое-то стороннее ПО вмешивается в работу программы.

>Зиончег от анончега с Али, 8 ядер по два логических, оперативка 16 гигов ДДР4 в одноканале, ПЕЧ 1060, 6 Гб.
Не знаю, что у тебя там лагает, у меня всё плавно:
- Xeon E5450 (4 @3.0 GHz) с алиэкспресс,
- 8 GB DDR2 в 4 слотах (2 канала),
- ඞsus 750Ti 2GB OC,
- SSD Intel (SATA2).
Да, Godot 4.0 RC2 жирнее 3.5, но не критично.
С альфами проблем было куда больше.

Напиши им на гитхаб, что на твоём конкретном ПК жуткие лаги и вообще пользоваться невозможно, раз ты вынужден сидеть на 3.5. Приложи там логи, какие требуются, пусть разбираются. Если сидеть сложа руки и жаловаться на производительность, но не говорить об этом основным разработчикам, то высока вероятность, что производительность так и останется недостаточной, по крайней мере на твоём ПК.
Аноним 19/02/23 Вск 19:19:35 862607 296
Парочка странных вопросов:
Для 2d и 3d игр обязательно использовать разные контролеры KinematicBody и физический пол.
Как можно добавить разные эффекты на экран?
Аноним 19/02/23 Вск 19:38:55 862629 297
>>862607
>Для 2d и 3d игр обязательно использовать разные контролеры KinematicBody
Конечно, KinematicBody2D и KinematicBody3D никак друг с другом не связаны. Однако:
1. Ты можешь двигать KinematicBody2D без спрайта, а потом преносить его положение на KinematicBody3D:
Vector2(X; Y) -> Vector3(X; 0; Y)
2. Ты можешь написать абстрактный контроллер, который считывает нажатия кнопок и генерирует все необходимые векторы, а потом цеплять его либо на KinematicBody2D, либо на KinematicBody3D.

Только вот 3D персонажам обычно требуется намного больше всего учитывать во время движения, поэтому написать полностью универсальный контроллер хотя и возможно, но не имеет смысла. Смысл есть только если геймплей в твоей игре происходит в одной плоскости и ты хочешь реализовать два ракурса камеры - 2D и 3D, но в таком случае KinematicBody3D тебе вообще не нужен, потому что ты можешь просто переносить положение KinematicBody2D на MeshInstance3D.

>физический пол
Что? Ты про StaticBody? Зависит от игры и того, каким способом ты реализовал контроллер персонажа.

>Как можно добавить разные эффекты на экран?
Кратко: читай про шейдеры и частицы.

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

Некоторые спецэффекты универсальны для 2D и 3D, поскольку накладываются сразу на весь экран.
Аноним 19/02/23 Вск 20:03:03 862661 298
>>862629
Тогда я не буду делать универсальный KinematicBody. Меня бесит что после каждой неудачной попытки мне нужно начинать все с начало. Хотя можно скопировать файл со скриптом персонажа из одного места в другое, но со скриптом меню где нету привязок к кнопкам уже не выходит.
>Ты про StaticBody?
Я про обычные тайлы по которым ходит персонаж.
>Кратко: читай про шейдеры и частицы.
>В коде шейдеров можно рисовать самые разнообразные спецэффекты на разных поверхностях.
Попробую, хотя из скаченных аддонов шейдеры мне высунуть не удалось.
Аноним 19/02/23 Вск 20:26:48 862699 299
>>862661
>Меня бесит что после каждой неудачной попытки
Рассматривай это не как неудачи, а как ценный опыт.

>мне нужно начинать все с начало
Зачем? Ты так часто меняешь жанры, что у тебя вообще ничего реюзабельного не остаётся?

>со скриптом меню где нету привязок к кнопкам уже не выходит
Чего??? Ты точно не опечатался? Менюшки в Godot чрезвычайно легко переносить с одного проекта на другой, если правильно организовать все файлы.

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

>шейдеры мне высунуть не удалось
Обычно они либо в отдельных файлах (.tres), либо внутри файла сцены (.tscn). Во втором случае шейдер можно извлечь прямо из файла, открыв .tscn в блокноте и скопировав нужный кусок в редактор шейдеров Godot. Но удобнее это сделать в инспекторе Godot, там выбираешь нужный шейдер, вызываешь выпадающее меню и выбираешь, кажется, "save as", чтобы сохранить шейдер в отдельный файл.

Здесь можно найти бесплатные готовые шейдеры:
https://godotshaders.com/
Аноним 19/02/23 Вск 20:39:00 862716 300
1676828341330.png 79Кб, 716x375
716x375
1676828341343.png 36Кб, 378x600
378x600
>>862586
> сидеть сложа руки
Там и без меня сотни ишьюсов открыто. Надо подождать релиза.
> Так ты портируешь что-то? Сильно сложное?
Ничего такого. Пару дровколлов отрисовки на канве и севлоад настроек. Вангую, что тормозит сборщик мусора, после того, как после меня остались ссылки на открывавшийся файл. Вот, попрошу ознакомиться:
Аноним 19/02/23 Вск 20:46:42 862724 301
>>862716
О, сука!
Это издевательство какое-то!
Щас экспортировал проект в режиме отладки. Ну, думаю, там же консолечка, в консолечке будет написано, что не так. И что вы думаете? Ну вы догадались уже, да? Экспортированный в режиме дебага проект летает, как фотон! Сука!
Аноним 19/02/23 Вск 20:59:31 862735 302
>>862699
>Рассматривай это не как неудачи, а как ценный опыт.
Опыт ценен только тогда, когда благодаря ему ты продвинулся дальше.
>Зачем? Ты так часто меняешь жанры, что у тебя вообще ничего реюзабельного не остаётся?
Все кривое и связанно со скриптами. Пытаюсь выбрать для себя наилучший вариант, который я смогу в дальнейшем дорабатывать. Пришло понимание что пытаться каждый раз думать о новом старте худшая идея. Проще когда у тебя есть модульная система которая позволяет тебе использовать наработки из прошлой работы. Как в Assassin's Creed на базе одной игры делали другие.
>Чего??? Ты точно не опечатался? Менюшки в Godot чрезвычайно легко переносить с одного проекта на другой, если правильно организовать все файлы.
Положил меню в одну папку, теперь все работает. Виноват.
>Во втором случае шейдер можно извлечь прямо из файла, открыв .tscn в блокноте и скопировав нужный кусок в редактор шейдеров Godot. Но удобнее это сделать в инспекторе Godot, там выбираешь нужный шейдер, вызываешь выпадающее меню и выбираешь, кажется, "save as", чтобы сохранить шейдер в отдельный файл.
Эту схему я понял вчера на шрифтах. Мне не понятно куда мне его нужно вставить во вкладке Инспектора.
>в отдельных файлах (.tres)
Нашёл и добавил в свой проект. Осталось только понять как послойно ставить его выше диалогов и персонажа, или ниже выплывающего меню паузы.
Аноним 19/02/23 Вск 21:33:38 862783 303
>>862735
Тебе не хватает теоретических знаний. Типичная проблема самоучек. Рекомендую почитать/посмотреть базу по паттернам, по архитектурам, по программному дизайну. Ты охуеешь от того, что всё, о чем ты тут выше жаловался - давно решено.
Аноним 19/02/23 Вск 21:34:38 862785 304
>>862716
>тормозит сборщик мусора
Чему там тормозить, на GDScript-то?
>Note: In C#, reference-counted objects will not be freed instantly after they are no longer in use. Instead, garbage collection will run periodically and will free reference-counted objects that are no longer in use. This means that unused ones will linger on for a while before being removed.
Так что GDScript сразу всё очищает.

>после меня остались ссылки
Они не остаются, тебе не нужно присваивать null. Если ты объявил переменную внутри if и сохранил в неё ссылку на объект, то после if переменная больше не существует, ссылки нет и объект уничтожается.

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

"Смыв" файла, если что, фича ОС, а не движка; ОС не сразу пишет файлы на диск, а только когда заполнится буфер, файл будет закрыт или вызван flush(). Это сделано для ускорения работы всего компьютера.
Аноним 19/02/23 Вск 21:35:48 862788 305
Аноним 19/02/23 Вск 21:40:27 862794 306
>>862788
Я читал. Мне показалось странным твоё понимание "сборщика мусора" в GDScript. Так вот, его нет. RefCounted уничтожаются сразу после обнуления их счётчика ссылок, а обычные Object движок за тебя чистить не будет. Во всяком случае по моему опыту это так.
Аноним 19/02/23 Вск 21:43:52 862804 307
>>862785
Короче, опытным путём я установил, что притормаживание при закрытии окна происходит, если сразу закрывать только что открытое окно, и связано это с тем, что движок не успевает записать логи в файл (который в папке user://logs/ лежит по умолчанию). После притормаживания, файл лога остаётся пустой. Если чуток подождать - файл заполняется стандартными строками, которые мы обычно видим в окне вывода в редакторе.
> файл будет закрыт или вызван flush()
Вот кокрастоке подозреваю с этим где-то в недрах двигла проблемы и возникают.
Аноним 19/02/23 Вск 21:48:46 862816 308
>>862794
> Так вот, его нет. RefCounted уничтожаются
В кодинге не бывает такого, чтобы что-то делалоСЯ само. В компьютере обязательно есть "делатель", который делает, без "-ся". В случае со сборкой мусора путём подсчёта ссылок, сборщик мусора есть и именно сборщик мусора занимается высвобождением памяти, после того, как ссылок становится 0.

Вот тебе инфа https://ru.wikipedia.org/wiki/Сборка_мусора#Алгоритм_подсчёта_ссылок
Аноним 19/02/23 Вск 21:52:56 862830 309
>>862735
>Опыт ценен только тогда, когда благодаря ему ты продвинулся дальше.
Ну пока ты в интернете о своих неудачах жалуешься и больше ничего кроме жалоб не делаешь, да, бестолковый какой-то опыт. Это ведь ты?

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

>Положил меню в одну папку
Ага, это косяк абсолютных путей в tscn, не могу понять, что им мешает сделать относительные пути...

>куда мне его нужно вставить во вкладке Инспектора
Создаёшь ShaderMaterial для ноды, которая поддерживает материалы, а потом в этот материал вставляешь шейдер. Читай документацию, там всё это объяснено.

>послойно ставить его выше диалогов и персонажа, или ниже выплывающего меню паузы
Вот универсальный инструмент:
https://docs.godotengine.org/en/stable/classes/class_canvaslayer.html
Хотя есть другие способы сортировки.
Аноним 19/02/23 Вск 22:08:36 862848 310
>>862816
>сборщик мусора есть
Я имею в виду, что он максимально простой по сравнению со сложными сборщиками, которые накапливают в памяти несколько гигабайт мусора и потом роются в нём, пытаясь определить, что нужно, а что нет. Вот в C# вроде как именно такой сложный сборщик, из-за чего игры на Unity и других подобных движках с C# могут сжирать гигабайты памяти и потом натужно кряхтеть, высвобождая эти гигабайты в рандомные моменты времени.

Просто сравни обычное ведро с педалькой, в которое ты кинул мусор и забыл, отпустив педальку, с каким-нибудь Валли, который ездит по огромной свалке и сортирует мусорные кубы. По сравнению с Валли ведро с педалькой не назовёшь "сборщиком", это максимально простой механизм. В этой аналогии явный вызов метода .free() - это не бросить мусор в ведро, а с силой его пропихнуть и ещё палкой примять.
Аноним 20/02/23 Пнд 00:16:58 862988 311
демо.mp4 95Кб, 300x600, 00:00:10
300x600
>>862554
>Добавь простенькие движения ног, хоть процедурные, сразу презентабельность в 10 раз вырастет.
Та моделька временная, только чтобы примерно оценивать пропорции объектов. Считай это линейка, изображающая персонажа средней высоты.

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

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

Вот эта наиболее удачная в общем и целом. Но всё равно сомневаюсь, что удастся сделать как хочу, т.к. косяков полно и я не знаю, как их исправить. Хочется доделать, но каждый раз боюсь, что не получится ничего.
Аноним 20/02/23 Пнд 03:10:43 863098 312
>>862988
Есть вопрос. Какой алгоритм генерации меша используется?
Кстати (или нет), посмотри на Lego Worlds. Как тебе стилистика?
Аноним 20/02/23 Пнд 15:44:43 863265 313
lego-1.jpg 426Кб, 1920x1080
1920x1080
Катаюсь вместе [...].mp4 2637Кб, 800x600, 00:01:00
800x600
ai.png 263Кб, 460x613
460x613
>>863098
>Какой алгоритм генерации меша используется?
Алгоритм "метод проб и ошибок":
1. Делаешь меш ручками.
2. Оцениваешь: нравится?
3. Если нет, возврат к 1.
4. Конец алгоритма.
Я же вручную делаю меш, чтобы потом блендшейпами его подгонять из кода/GUI игры. Насколько я знаю, абсолютное большинство игр с кастомизацией персонажей используют блендшейпы на одной базовой модели. Обычно не дают вносить слишком сильные изменения, вроде сделать пузатого жирдяя или тощую спичку, но сделано это исключительно в целях игрового баланса, особенно в случае онлайн-игр с нон-таргет системой боя, как в шутерах, либо чтобы в анимациях не было провала рук в тело. В моём случае баланс не важен и анимации всё равно будут грубее, так что могу использовать этот способ на 200%.

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

>посмотри на Lego Worlds. Как тебе стилистика?
Ты про ландшафт или про персонажей?

Мне такое не нравится. В детстве много играл в реальное Лего, но Lego Worlds не зашло как-то (играл на этапе предварительного доступа, когда толком ничего не было, только базовые возможности). Ландшафт там можно менять по блокам, как настоящий конструктор, но визуально это просто ад какой-то, как будто ходишь по рассыпанным деталькам Лего голыми ногами. Персонажи точно повторяют человечков из реального Лего, но мне их стиль никогда не нравился: уродливые клешни, уродливые ноги, плоское тело с текстурой и кастрюля вместо головы. Реальный конструктор такой, чтобы можно было соединять части тел человечков со всеми остальными блоками в самых разных комбинациях, но в виртуальном мире делать таких уродцев нет никакой необходимости. Хотя... человечки из Лего лучше базовой формы из Роблокс (мне кажется, Роблокс нагло скопипастили Лего, но Роблокс выглядит как какой-то китайский ноунейм клон знаменитого бренда).

Сегодня немного поменял физику машины. Пытаюсь добиться чего-то вроде GTA IV в плане подвески на поворотах с примесью чего-то вроде GTA V в плане существенных заносов с потерей управления. Почему-то не получается сделать подвеску ещё мягче - она с какого-то значения начинает проваливаться под землю. Выяснил, что можно сделать занос, но управление какое-то не такое, совсем не похоже на GTA. Да, я по-прежнему использую стандартный VehicleBody, но движок RAGE 1/2 использует внутри Bullet Physics, так что по идее должно быть возможно смоделировать их управление. Или всё же не избежать написания своей физики с нуля?

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

Собственно, есть пара мыслей про ИИ. Из чего состоит мозг? Из нейронов. Что делает нейрон? Реагирует на раздражитель синапсов (if...) генерацией сигнала на аксоне (then...). Т.е. нейрон в самом абстрактном виде - это конструкция if-then, даже не if-then-else. Разница в том, что нейроны рождаются из хаоса, умирают и рождаются вновь, а в процессе жизни меняют своё условное выражение даже несколько раз в день за счёт гормонов, влияющих на состояние синаптических связей. Искусственные нейронные сети симулируют эти изменения модификацией весов связей, но единственный ли это способ, а главное, нужно ли делать именно так? Если нейрон не делает ничего особенного, кроме if-then, то и моделировать его можно через if-then. Разве что у биологического нейрона есть эффект краткосрочной памяти, т.е. они срабатывают с определённой частотой, а не по первому требованию.

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

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

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

Подозреваю, что вручную настраивать эту систему сложно, но тут мы вспоминаем, что if-then в этой системе не захардкожены и могут произвольно меняться. Т.е. в теории можно накидать базовых условий и затем запустить симуляцию, в результате которой условия будут меняться, дополняться и удаляться, пока не получится наиболее эффективное поведение. Вопрос в том, сколько времени займёт такая симуляция, будет ли она эффективна? Понятия не имею, но даже если это жутко неэффективно, возможность точного контроля и расшифровки такого мозга даёт преимущество перед "обычными" нейросетями, где тысячи параметров по отдельности не означают ровным счётом ничего, тогда как у моей модели условия и действия всегда конкретны... хотя, если представить себе процедурную генерацию условий, что получится в итоге? Тысячи флагов с числовыми ID, которые приводят систему к решению какой-то задачи, но при этом дать им какие-то осмысленные имена сложно. В общем, не знаю, но попробовать сделать такое нужно, т.к. хардкодить поведение вообще никакого желания нет. Главное, что мой метод подразумевает крайне высокую модульность и полную взаимозаменяемость любых модулей, т.е. легко можно заняться процедурной алхимией поведения.
Аноним 20/02/23 Пнд 20:54:28 863493 314
>>863265
Триангуляцию используешь? Или у тебя просто сетка квадратная, рассеченная на прямоугольники, и ты тягаешь Z координату?
Аноним 20/02/23 Пнд 21:07:15 863497 315
>>863493
Имею в виду террейн, не персонажей.
Аноним 20/02/23 Пнд 21:23:27 863504 316
image.png 15Кб, 600x520
600x520
>>863493 >>863497
Пока что использовал стандартный примитив в Godot, чтобы поскорее увидеть результат.
https://docs.godotengine.org/en/stable/classes/class_planemesh.html

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

Я раньше пробовал делать меши вручную из кода, я знаю, как это делать, но не знаю, как посчитать ARRAY_TANGENT, перепробовал разные варианты и всё время какая-то фигня получается. А без этих данных карта нормалей на такой меш не ложится, ей зачем-то нужен этот "тангент спейс". Как его автоматически сгенерировать я тоже не понял, хотя где-то в движке оно генерируется.
Аноним 20/02/23 Пнд 22:06:24 863520 317
image.png 31Кб, 893x677
893x677
>>862783
Нашел пару видео про годот, на выходных посмотрю.
>>862830
>Это ведь ты?
Сообщение радости что получилось поменять шрифт было моим. Когда есть успехи могу с радостью с ними поделиться.
>что им мешает сделать относительные пути...
Не понял.
>Вот универсальный инструмент:
Мне по документации ничего не понятно! Какой и куда писать код?
>Создаёшь ShaderMaterial для ноды
Хотел написать что я понимаю как создать ноду, но похоже опять все напутал.
Аноним 20/02/23 Пнд 22:55:48 863546 318
>>863520
> Нашел пару видео про годот
Я предположил (и продолжаю предполагать) что ты базовых основ кодинга не знаешь. Поэтому рекомендую смотреть видео не по годоту, а общеайтишное.
Аноним 20/02/23 Пнд 22:59:13 863548 319
>>863520
Понимаешь ли в чём дело. В годоте Хуан всё делает по общеизвестным паттернам. Иногда его заносит и он даёт весьма нестандартные названия тем или иным вещам, но в целом все подходы к построению АПИ движка мною угадываются. Я не сказать, чтобы крутой профи, но кой-чего знаю-умею. Поэтому все нюансы движка вижу насквозь. И поэтому от всей души повторно рекомендую тебе это >>862783 чтобы и ты видел, насколько в годоте всё просто.
Аноним 21/02/23 Втр 00:27:41 863590 320
image.png 622Кб, 1745x1017
1745x1017
image.png 40Кб, 545x563
545x563
image.png 24Кб, 1739x227
1739x227
image.png 239Кб, 1761x715
1761x715
>>863546
>>863548
>Поэтому рекомендую смотреть видео не по годоту, а общеайтишное.
Все видео для начинающих объясняют только простейший принцип как работает логика программирования. Есть черепашка, и мы пишем команды по которым она дойдёт до выхода. Это знание никак не помогает мне в знании годот, потому что не знаю язык на которым он говорит. Я пытаюсь разговаривать с ним на русском языке, но этот твердолобый желает говорить только на своей тарабарщине.
for x in range(width):
for y in range(height):
set_color(x, y, some_color)
Ничего из этого текста не понял, залез в словарик и нашёл там объяснение
>Для перебора диапазона, например массива или таблицы, используется цикл for. При переборе массива текущий элемент массива сохраняется в переменной цикла. При переборе словаря ключ сохраняется в переменной цикла.
Из него я тоже ничего не понял. Но погуглив я узнал что такое массив.
У меня нет денег на переводчика, который мог бы за меня поговорить с годотом. По этому я пытаюсь снова и снова сделать в нём хоть что ни будь своими силами.
>Рекомендую почитать/посмотреть базу по паттернам
На счёт ролика по паттернам, мне нравится как автор раскрыл в нём идею анимации ожидания. Хотелось бы в своей игре сделать такое же, но сам ролик толком не объясняет что куда писать. Только для новичка информация подана слишком бегло. Не понятно почему часть кода написана в extends FSM_State? Хотя по его же логике весь этот код должен быть написан в одном скрипте персонажа. Возможно анимация идёт как отдельный массив, на который после extends KinematicBody2D будет ссылаться.
Аноним 21/02/23 Втр 00:37:27 863593 321
giphy.mp4 227Кб, 480x270, 00:00:15
480x270
Аноним 21/02/23 Втр 02:32:09 863618 322
Есть какие-нибудь туториалы на тему создания более реалистичной машины на RigidBody с физическими колёсами? Не на инвалидных рейкастах (VehicleBody), а чтобы физические цилиндры крутились и контакт с поверхностью стабильный был.

Я не понимаю, почему так сложно-то, почему нельзя ПРОСТО связать два RigidBody друг с другом, почему нужно мучиться с какими-то там джойнтами? Если б они ещё работали хоть как-то, а то не работают.

Вот предлагают взять KinematicBody вместо RigidBody и всю физику вручную симулировать, а как я буду тело вращать? KinematicBody же не имеет методов для "приложения силы", т.е. его нельзя просто взять и повернуть. Там, наверное, очень сложные формулы для поворота в 3D вокруг произвольной точки пространства. Не хочу опять вспоминать, что такое матрицы...
Аноним 21/02/23 Втр 02:42:11 863622 323
>>863590
>Есть черепашка, и мы пишем команды по которым она дойдёт до выхода. Это знание никак не помогает мне в знании годот
Т.е. ты ленишься даже черепашку двигать...

>тарабарщине
>for x in range(width):
>for y in range(height):
>set_color(x, y, some_color)
Это та же самая черепашка:
>Для икс от 0 до ширины и для игрек от 0 до высоты выполнить процедуру с иксом, игреком и цветом.
Ты просто черепашку ленился двигать, вот и не понимаешь теперь тривиальных выражений.

>для новичка информация подана слишком бегло
Потому что новичку нужно черепашку двигать, а не анимации для персонажей. Иди черепашку двигай.
Аноним 21/02/23 Втр 03:12:35 863625 324
>>863618
Впрочем... Впрочем, хрен с ними, с машинами. VehicleBody едет и ладно. Слишком многого хочу за раз, так нельзя, нужно ограничивать хотелки.

Простите за флуд, бомбит просто от этих багов.
Аноним 21/02/23 Втр 04:15:46 863631 325
>>863590
https://gdquest.itch.io/learn-godot-gdscript

Проходишь это с начала и до конца. Да, нужно двигать черепашку, но тебе тут объясняют как это делать инструментами в годо, так что хавай базу.
Аноним 21/02/23 Втр 09:15:27 863644 326
image.png 21Кб, 989x385
989x385
image.png 36Кб, 471x451
471x451
>>863622
>Т.е. ты ленишься даже черепашку двигать...
Я черепаху в школе делал. Помню по заданию нам сказали написать код где черепаха в независимости от точки старта должна была прийти в одно и тоже место. Смог самостоятельно написать этот код без помощи своих одноклассников, но проверив мою работу учитель мне не поверил что её сделал я. В принципе это единственный пример когда у меня самостоятельно получилось написать код.
>и не понимаешь теперь тривиальных выражений.
В той программе было все на русском, тут же с кривым переводчиком бывает не всё понятно.
for x in range(width):
for y in range(height):
Для x в диапазоне (ширина):
Для y в диапазоне (высота):
Как я понимаю эти команды задают размер шейдера по ширине и высоте, правильно? Почему именно шейдера, взял эти строчки из руководства по шейдерам.
>>863631
В первый раз когда я запускал это руководство не мог понять, почему нам показывают эту часть кода, если все скрипты должны быть привязаны к какому либо объекту? Я пытаюсь это повторить в самом годот, но у меня не выходит. Ещё ошибку выдаёт.
Аноним 21/02/23 Втр 13:30:15 863707 327
>>863644
Я начинаю подумывать о том, что ты тут траллишь. В школе он видите ли код написал, а в годоте он видите ли не может, потому что годот видите ли на каком-то непонятном языке. Толсто. Вытекай в направлении пошаговых туториалов типа такого https://docs.godotengine.org/en/3.3/getting_started/step_by_step/your_first_game.html или в срачетред. Выбор за тобой.
Аноним 21/02/23 Втр 14:07:08 863721 328
image.png 35Кб, 1366x699
1366x699
image.png 94Кб, 755x718
755x718
>>863707
>В школе он видите ли код написал, а в годоте он видите ли не может
Я не буду объяснять что годот и кумир разные программы, мне не хватит сил доказывать тебе очевидное.
>Я начинаю подумывать о том, что ты тут траллишь
Если ты тот самый который месяц назад надумал себе, что я делаю игру ради госфинансирования... Не удивительно почему тебе удобно называть меня троллем.

До сих пор не понял как нарисовать круг если скрипты привязаны к определенной ноде.
Аноним 21/02/23 Втр 14:16:17 863722 329
>>863721
> если скрипты привязаны к определенной ноде.
А какая разница к чему привязаны скрипты? У тебя может быть одна нода - главный экран игры.
>как нарисовать круг
Шейдером
Спрайтом
Текстурой
Line2D
Path2D Curve
Ассетом
func _draw(): draw_circle_arc(..)
Аноним 21/02/23 Втр 14:27:52 863725 330
image.png 29Кб, 471x451
471x451
image.png 20Кб, 989x385
989x385
>>863722
Спрайтом легко добавить рисунок на сцену. Я про это говорю.
Аноним 21/02/23 Втр 14:36:03 863726 331
1622639229988.png 16Кб, 436x211
436x211
Аноним 21/02/23 Втр 14:49:32 863729 332
>>863726
Спасибо. теперь заработало!
Аноним 21/02/23 Втр 15:02:35 863735 333
yoba.jpg 29Кб, 512x512
512x512
>>863644
>Я пытаюсь это повторить в самом годот, но у меня не выходит. Ещё ошибку выдаёт.
У тебя абстрактного мышления вообще нет?

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

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

>Как я понимаю эти команды задают размер
Это циклы со счётчиком:
https://ru.wikipedia.org/wiki/Цикл_(программирование)
Если бы ты действительно двигал черепашку, то ты бы владел такими тривиальными концепциями. Это же просто повторение одного и того же действия N раз.

>>863707
>подумывать о том, что ты тут траллишь
На 99% уверен, что это инфантильный хикка без жизни за пределами компьютера, который остановился в развитии на уровне 10 лет и поэтому так себя ведёт. Скорее всего у него СДВГ, из-за которого он не способен сфокусироваться, бросает обучение, скачет с темы на тему и т.п. Детская упрямость и закостеневший характер не дают ему смириться и согласиться с тем, что он ошибается, и начать работать над собой. Тролль так реалистично не смог бы прикидываться им.

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

>>863722
>У тебя может быть одна нода
Можно вообще без нод обойтись, заменив SceneTree своей реализацией MainLoop, а дальше говнокодить в любом стиле без использования нод, но зачем? Это как в том меме с троллейбусом из буханки. Если бы у Godot не было редактора с нодами, то смысла в Godot вроде как и не было бы.
https://docs.godotengine.org/en/stable/classes/class_scenetree.html
https://docs.godotengine.org/en/stable/classes/class_mainloop.html

>>863729
>заработало
А что толку-то? Ты же как в той поговорке про рыбу и удочку. Тебе дают удочку, а ты кричишь как ребёнок, ломаешь удочку и плачешь, что жизнь слишком сложна, а удочкой нельзя поймать единорога в пруду. А если дают уже пойманную рыбу, писаешься от счастья, но ровно до того момента, как у тебя снова начнётся голод, потому что рыбу ловить ты до сих пор не умеешь, и через несколько постов ты снова жалуешься на жизнь...
Аноним 21/02/23 Втр 15:08:39 863740 334
>>863735
Думаешь, не надо было ему давать рыбу? Но я сторонник подхода - показывать другим как ловлю рыбу, чтобы они не думали что это что-то сложное или страшное.
Аноним 21/02/23 Втр 15:24:18 863752 335
>>863740
Ты ему показал просто решение, он вряд ли понял в чем его ошибка вообще была.
Я даже не уверен что у него там заработало, ошибка пропала, а круг он нарисовать смог? _draw еще вызвать нужно откуда-то.
Аноним 21/02/23 Втр 15:47:18 863769 336
>>863752
>круг он нарисовать смог?
У него же на скриншоте есть круг.

>_draw еще вызвать нужно откуда-то.
1. Первый вызов автоматический, когда рендерер в первый раз отображает ноду. Дальше код из _draw как-то там кэшируется и не выполняется.
2. Для повторного вызова нужно запросить update():
https://docs.godotengine.org/en/stable/classes/class_canvasitem.html#class-canvasitem-method-update

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

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

>Думаешь, не надо было
Я понятия не имею, что с ним делать. На системные ошибки в его обучении ему уже несколько раз указывали, он не хочет исправляться...
Аноним 21/02/23 Втр 16:13:41 863795 337
>>863735
> уверен, что это инфантильный хикка без жизни
Ну ХЗ, согласно закону По мы не сможем этого определить.
Аноним 21/02/23 Втр 19:47:34 863942 338
усрись.png 9Кб, 499x177
499x177
>>863752
>Я даже не уверен что у него там заработало, ошибка пропала, а круг он нарисовать смог? _draw еще вызвать нужно откуда-то.
Усрись! Когда мне нормально ответили что код можно писать в обычную ноду, и что без func _draw(): код не будет работать.
Аноним 21/02/23 Втр 19:59:24 863947 339
1676998763293.gif 498Кб, 399x300
399x300
>>863752
> _draw еще вызвать нужно откуда-то
Оттуда же, откуда вызываются _ready, _input и т.п.
Аноним 21/02/23 Втр 20:29:44 863974 340
image.png 3Кб, 731x577
731x577
>>863735
>У тебя абстрактного мышления вообще нет?
Есть
>Та программа по ссылке учит основным концепциям программирования, а не API движка.
Я смотрю видео ролики, и постепенно пытаюсь вникнуть в API.
>Та программа по ссылке учит основным концепциям программирования
По этому она бесполезна. Пытаясь наглядно повторить код в годот возникают разные ошибки. Это приложение является теорией, которая никак не помогает на практике.
>А ты не переводи код переводчиком литературных текстов и тогда всё будет понятно. А лучше начни учить английский, без него в айти и геймдеве тяжело.
Я не рвусь в геймдев! Мне нужно сделать пару проектов которые засели у меня в подсознаний! Начав изучать английский в программировании я не продвинусь. По быстрому научится английскому невозможно!
Программированию тоже! Но в скрипте можно делать пометки, и кидать уже готовое в другой проект.
>На 99% уверен
Думаешь переход на личности делает тебя очень умным? Я хикка, и моя жизнь за последний год стала полна слезами и нервными срывами. Доволен?
>не дают ему смириться и согласиться с тем, что он ошибается
Я с самого первого сообщения писал тут адекватно, задавал вопросы на которые сам не знал ответа. По твоему я отрицаю что у меня много ошибок?
>начать работать над собой
Мои попытки реализовать себя в создании игры не является работа над собой? Лучше бы пошёл бухать и по помойкам шастать!
>Только ты этого почему-то не понимаешь, и пытаешься писать код из совершенно другой программы в Godot
Это приложение написано как обучающие по годот! Его советуют в треде как обучающие по годот! Почему по твоей логике код из этого приложения должен обязательно противоречить коду годот?
>А что толку-то? Ты же как в той поговорке про рыбу и удочку.
Программирование не рыбалка! Если я захочу рыбу, у меня есть много возможностей заполучить её. От ловли её голыми руками, до попросить у соседей пару кусочков. Я владею своим телом без API, что делает мою жизнь лучше программирования.

>>863740
С кругом была сложность в недосказанности.
>>863769
>А он взял твой готовый код, скопировал его и всё. Он так никогда не научится программировать.
Мне и не нужно знать код на сто процентов! Мне будет достаточно реализации своих простых идей которые у знающего программиста заняли бы 30 минут. Вспоминаем идею про танчик.
Аноним 21/02/23 Втр 20:33:51 863976 341
>>863974
> Начав изучать английский в программировании я не продвинусь.
Продвинешься, кроме шуток.
Аноним 21/02/23 Втр 20:36:44 863978 342
>>863976
11 лет и дополнительные курсы говорят об обратном. Без языковой среды это бесполезно.
Аноним 21/02/23 Втр 21:33:36 864018 343
image.png 101Кб, 1436x778
1436x778
Кириллы, подскажите плиз где я проебався (с Z ордером?)???
Есть ColorRect, ParallaxBackground и KinematicBody со Sprite2D.
У меня не получается отобразить Parallax над ColorRect'ом, а спрайт игрока между слоёв параллакса. Скрины пропертей на пике.
В первую очередь хотелось бы параллакс пофиксить - даже если я слоям его Z ордер начну с 1 - хуй, колор рект все равно выше
Аноним 21/02/23 Втр 21:56:39 864063 344
image.png 8Кб, 276x138
276x138
>>864018
С первым я разобрался. КолорРект надо добавить в свой канваслейер и в пропертях задать ему слой меньше слоя бэкграунда.
Засунуть спрайт игрока между слоев не получилось через З индекс пока
Аноним 22/02/23 Срд 12:21:21 864383 345
Godot 4.0 RC 3
Аноним 22/02/23 Срд 20:25:50 864703 346
HeightMapShape.png 86Кб, 800x600
800x600
>>863504
>Я знаю, в идеале треугольники нужно разворачивать в зависимости от расположения вершин, чтобы не было характерных ступенек на резких перепадах высот.
Проверил, HeightMapShape не разворачивает треугольники, поэтому если начать разворачивать, остаётся только обычный тримеш, который будет в точности повторять визуальный меш (чтобы предметы в "текстуры" не проваливались). Жаль... Оставлять эти ступеньки не хочу, выглядят отвратительно в любом стиле графики, потому что они такие только на одной диагонали (на второй диагонали такой же край намного более гладкий/аккуратный, потому что треугольники ориентированы правильно).
Аноним 22/02/23 Срд 21:13:48 864723 347
>>864703
У меня вообще сомнения насчет хейтмапа как единственного инструмента. Поскольку он все равно не позволяет делать, скажем, туннели или пещеры, то там все равно должны быть декоративные холмики.
Аноним 22/02/23 Срд 22:02:44 864732 348
>>864723
Карта высот предназначена для игр, в которых не нужны туннели и пещеры. Т.е. большинство классических 3D игр, где только поверхность с условными оврагами, холмами и скалами. Преимущество в компактности хранения, относительной простоте генерации и гладкости поверхности.

Хм, ты натолкнул меня на мысль... Я думал, что могу добавить пещеры, просто проделав дырку и вставив в эту дырку ассет "вход в пещеру", а с внутренней стороны расположить несколько "пещерных" туннелей и комнат, которые подгружаются, если игрок входит внутрь. А вот что на счёт туннелей? Мосты я точно собираюсь сделать, а вот о туннелях ни разу не думал. По идее, туннели должны быть частью системы дорог, которая автоматически выравнивает ландшафт под собой, а для туннелей, получается, должна прокалывать дырки...

Ладно, мне бы простую систему дорог сделать. У меня на днях появилась гениальная идея сделать граф дорог по точкам (узлам), которые пользователь расставляет на ландшафте и соединяет линиями. Когда-то я возился в других движках, где есть компонент "дорога" - там было сложно настраивать положение дороги и т.п. А у себя я хочу сделать так, чтобы достаточно было кликнуть в двух местах и сразу получить оптимальный сегмент дороги со всеми стыками, без копания в настройках и дёргания рычагов. Т.е. чтобы реально всё в пару кликов возникало, и потом могло стыковаться с другими тайлами (объединяясь в один общий граф дорог за счёт слияния ближайших узлов).
Аноним 22/02/23 Срд 22:42:03 864744 349
>>864732
У дорог есть неприятная особенность, они точно не будут вдоль треугольников хейтмапа, а из-за прибиженности к поверхности, очень быстро начинается z-fighting. Особенно если с высоты птичьего полета.
Аноним 22/02/23 Срд 22:47:11 864747 350
1552146161556.png 380Кб, 640x480
640x480
>>864732
С некоторым видом скал тоже проблемы
Аноним 22/02/23 Срд 23:35:49 864762 351
>>863974
>Я смотрю видео ролики
Пустая трата времени. Большинство роликов:
>хххххрррр, всем здрасти-мордасти, вот я короче решил туториал записать, да, а ещё у моего соседа хомячок родил, вы не поверите, такая умора, ну перейдём к туториалу: открываем годот, создаём сцену, кстати, вот реклама на две минуты крема от простатита "мокрая сцена", ну, продолжим, дальше, хм, ну, вот так, допустим, тык, пык, пук, а потом ххххррррррррччпок, простите, что-то микрофон барахлит, ну вот как-то так, вооооот, дааааа, а ещё можно вот так, но я это объяснять не буду, короче дальше нужно ещё кое-что, ждите вторую часть, подписывайтесь, ставьте лайки, чмок в пупок, до скорого... (видео выложено два года назад и второй части так и не вышло, в комментариях на просьбы помочь с ошибками ни одного ответа, кое-кто из олдфагов говорит, что код в видео говно, но почему - не объясняет)
Пойми, "обучающие" ролики создаются не для того, чтобы тебя чему-то научить, а для того, чтобы автор получил прибыль с рекламы, кликов, подписок, мерча и т.п., или просто чтобы потешить эго автора. Реально полезные обучающие видео встречаются редко. Главное, что обучающие ролики записывают чаще всего те, кто сами толком не разбираются, потому что если бы разбирались, были бы заняты производством контента, а не созданием себе лишних конкурентов; при этом те, кто реально разбирается и хочет чему-то научить, чаще всего не умеет учить и не умеет записывать внятное видео. Поэтому обучение через видео - это своего рода мем с очень негативным смыслом. В теории, да, некоторые вещи (вроде 3D моделирования, рисования) лучше показать, чем описать словами, но на практике видео редко бывает полезным, особенно на тему программирования.

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

>Мне будет достаточно реализации своих простых идей
>Мне нужно сделать пару проектов которые засели у меня в подсознаний!
Какими бы твои цели ни были, ты не можешь просто сделать их, не овладев необходимыми знаниями и навыками. Геймдев - это сложно. Это играть в игры легко, а делать их очень сложно. И разработчики прикладывают массу усилий, чтобы в игры было легко играть... А ты хочешь играючи сделать свои "пару проектов", ничего не изучая и не вырабатывая навыки. Так у тебя не получится ничего, пока не создадут ИИ, делающий игры вместо человека по простому описанию на естественном языке (такого ещё несколько лет ждать, как минимум).

>Начав изучать английский в программировании я не продвинусь. По быстрому научится английскому невозможно!
Технический английский осваивается чтением руководств с помощью англо-русского словаря. Я так английский и выучил: сначала программирование через русскоязычные книги, потом кое-как английский по англоязычным руководствам к тому, что на русском не объясняют (или объясняют плохо). Сейчас могу читать на английском и даже кое-как объясняться в тексте (чтоб понимали, что я сказать хочу), хотя некоторые слова всё ещё смотрю в словарях. Я не учил английский специально, мне это никогда не нравилось и не хотелось, а в школе мне ставили "3" за пассивное присутствие на уроке. Так что не всё так плохо, как тебе кажется.

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

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

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

>Это приложение написано как обучающие по годот!
Оно обучает основам GDScript (если последовательно изучать, как задумано авторами), но не предназначено для буквальной копипасты. Копипаста в программировании вообще наносит больше всего вреда, особенно если ты копируешь что-то, не понимая, как оно работает, но даже понятный код после копирования может причинить вред. Этим ты вредишь в первую очередь сам себе, но новички обычно не осознают масштабы вреда. Если не бросишь свои начинания, спустя несколько лет до тебя дойдёт, как сильно ты заблуждался, но лучше бы ты понял это раньше.

Но в чём-то ты прав, Godot необходима встроенная обучающая система для абсолютных новичков, подобная обучающей системе Unity (что-то там со словом "микро" в названии, не помню уже), где ты последовательно играешь с готовыми ассетами внутри движка и таким образом обучаешься многим прикладным вещам конкретно в данном игровом движке. Возможно, что-то такое сделают после релиза 4.0, для тройки это сейчас делать уже бессмысленно, API сильно поменялось.

>Лучше бы пошёл бухать и по помойкам шастать!
>От ловли её голыми руками, до попросить у соседей пару кусочков.
Ага, то есть ИРЛ ты предпочитаешь жить прилично, а вот побираться по техническим форумам, выпрашивая кусочки тухлого говнокода, который ты скопипастишь - это совершенно нормально?

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

>Я владею своим телом без API, что делает мою жизнь лучше программирования
Если уж так рассматривать, то у человеческого тела тоже есть "API", но для сознания такие технические детали недоступны (как недоступен программе её собственный код... в большинстве случаев), и, в результате привыкания, управление своим телом нам кажется очень простым и естественным, хотя это совсем не так (робототехника это подтвердила, сложнее всего ходьба двумя ногами, мозг на это очень много вычислительных мощностей отводит, хотя мы этого вообще никак не ощущаем). Нервная система вообще состоит из множества костылей и неудачных решений, и если бы мы могли, давно бы переделали хотя бы некоторые самые неудачные компоненты, но из-за привыкания ты как-то особо и не замечаешь этих костылей.

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

И кстати, это хорошо объясняет, почему опытные специалисты плохи в обучении новичков - то, что для новичка тёмный лес, для специалиста так же легко и естественно, как управление своим телом. В том числе поэтому мало качественных обучающих материалов, чтобы и учили полезному, и объясняли доступно.
Аноним 23/02/23 Чтв 01:58:11 864810 352
>>864762
>ролики создаются не для того, чтобы тебя чему-то научить, а для того, чтобы автор получил прибыль с рекламы, кликов, подписок, мерча и т.п.
Анончик, тебе бы немножечко веры в человечество. А то ты сидишь в треде опенсурсного движка, но не веришь, что некоторым нравится просто делать добро и бросать его в воду. Какая может быть прибыль с рекламы, если видосы набирают в лучшем случае 1.5К просмотров? Ну да, есть пара каналов, где просмотров чуть побольше, но и они монетизируются скорее донатами, чем рекламой.
Чел, это Годот. Он не такой популярный, как Анрил или Юнити. У тех-то тоже не то чтобы огромные просмотры, потому что тема ну очень узко специализированная. А тут так вообще. Практически все, кто пилит видео-туторы по Годоту, делают это на чистом энтузиазме, ради социалайза, лайков и фор зе грейтер гуд.

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

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

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

А по остальному тексту у меня не бомбит, там база.
Аноним 23/02/23 Чтв 13:33:39 864916 353
1552586817198.jpg 198Кб, 1280x720
1280x720
>>864383
Чет все меньше всего на картинке остается, намек на уход в закат?
Аноним 23/02/23 Чтв 15:41:46 864989 354
godot-xr-progre[...].jpg 184Кб, 1280x720
1280x720
>>864916
Всё лучше пикрила.

Завидую, у меня могла бы быть лучше графика, но моя игра вряд ли когда-нибудь попадёт в новости движка...
Аноним 23/02/23 Чтв 16:51:26 865017 355
Анончики, как лучше всего реализовать такую фишку, может там уже какой встроенный механизм для этого есть, не сталкивался еще

суть такова, чтобы был внешний файл скрипта, только в нем нужно будет хранить не целый стандартный gd-скрипт, а как бы внутренность для вызываемой функции, т.е. в коде самой программы будет fn(): <сюда_загрузить_код_из_файла>
Аноним 23/02/23 Чтв 17:08:35 865029 356
https://docs.godotengine.org/en/3.3/tutorials/misc/state_design_pattern.html
1. Почему удалили из документации?
2. Ваше мнение о подходе из статьи?
3. Как бы вы его предложили улучшить?

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

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

Собственно, понятно, почему удалили из документации, подход очень сомнительный для проектов больше хеллоу ворлда и может оказать негативное влияние на восприятие движка ньюфагами.
Аноним 23/02/23 Чтв 17:21:56 865041 357
>>864018 >>864063
Я не понимаю, зачем ты смешиваешь Control и Node2D ноды в иерархии. Control предназначены только для составления интерфейсов, которые, обычно, всегда на экране и большую часть времени неподвижны. У них много настроек, но все они касаются исключительно построения интерфейсов и непригодны в большинстве 2D игр. Node2D, напротив, оптимизированы для отображения чего-то в условно бесконечном двухмерном пространстве, которое может двигаться, крутиться и масштабироваться независимо от состояния интерфейса. У этих нод нет настроек, связанных с интерфейсами, но зато нет и ограничений интерфейсных нод. Связывать их между собой возможно, но нежелательно: Node2D ноды как минимум не могут органично встраиваться в интерфейс, а Control ноды как минимум имеют много лишнего в своём коде. То, что их можно совмещать, лишь следствие их родства через CanvasItem.

В твоём случае вместо TextureRect следует использовать Sprite, а его размер относительно экрана настраивать вручную, если тебе это нужно.

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

Сейчас попробую сцену накидать у себя...
Аноним 23/02/23 Чтв 17:41:52 865053 358
>>865017
>внешний файл скрипта, только в нем нужно будет хранить не целый стандартный gd-скрипт, а как бы внутренность для вызываемой функции, т.е. в коде самой программы будет fn(): <сюда_загрузить_код_из_файла>
https://docs.godotengine.org/en/stable/classes/class_script.html
Сам не делал, пишу примерно, может не работать:
>var script: Script = load(file_path)
>if script:
>_ script.source_code = "extends Reference; func fn() -> void: %s" % [script.source_code] # оборачиваем полученный код заранее заготовленной обёрткой
>_ var err := script.reload() # в случае с GDScript здесь, по всей видимости, будет попытка сформировать байт-код для виртуальной машины, ошибка - синтаксическая проблема в исходном коде скрипта
>_ if err == OK:
>_ _ var object: Reference = script.new()
>_ _ object.fn()
Если так не получится, тогда считывай код как строку из текстового файла и добавляй в чистый Script. Также можешь повесить этот script на Reference:
>var object := Reference.new()
>object.set_script(script)
>object.fn()
Аноним 23/02/23 Чтв 18:00:28 865061 359
изображение2023[...].png 14Кб, 231x413
231x413
изображение2023[...].png 7Кб, 361x79
361x79
изображение2023[...].png 47Кб, 661x453
661x453
2023-02-23 19-3[...].mkv 974Кб, 1920x1080, 00:00:22
1920x1080
Короче, есть одна контрол нода, в ней два лейбла current ammo и max ammo. Так вот, если пытаюсь изменить текст на лейблах из любых нод через синглтон, то текст нормально меняется, но когда пытаюсь изменить текст через ноду заспавленого оружия, то нихрена не происходит + у оружия при спавне не срабатывает _ready(). ЧЯДНТ?
1 пик - дерево худа
2 пик - нажимаю пкм на игроке - все работает
3 пик - скрипт ui.gd из ready все вызывается

в скрипте оружия
[code]
func _ready():
print("gun ready") # не вызывается
mag_ammo = mag_size # в инспекторе все норм
G.ui.update_ammo(mag_ammo, mag_size) # не работает
[/code]
Аноним 23/02/23 Чтв 18:07:18 865063 360
изображение2023[...].png 50Кб, 661x857
661x857
изображение2023[...].png 40Кб, 601x646
601x646
Аноним 23/02/23 Чтв 18:23:26 865067 361
>>865053
спасибо за наводки
Аноним 23/02/23 Чтв 18:28:16 865072 362
>>865041
>Сейчас попробую сцену накидать у себя...
Попробовал.

>>864018
>ParallaxBackground
>спрайт игрока между слоёв параллакса
ParallaxBackground является потомком CanvasLayer. Механизм слоёв устроен так, что движок по порядку обходит все слои, а уже внутри слоя производится сортировка по Z-индексу.

Другими словами, используя ParallaxBackground, ты изолируешь часть сцены на отдельном "слое", в который нельзя пробраться изменением Z-индекса снаружи этого слоя (по умолчанию сцена находится в слое 0).

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

Так что я бы на твоём месте просто реализовал свой собственный параллакс из Node2D нод и спрайтов. Очевидно, что встроенный параллакс рассчитан на классическое применение, когда персонаж не может проникать между слоями фона, а у тебя игра, видимо, предполагает совершенно другое использование.
Аноним 23/02/23 Чтв 18:38:50 865078 363
>>865061
>у оружия при спавне не срабатывает _ready()
Откуда нам знать, как ты своё оружие спавнишь?

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

Пока у тебя ошибка где-то в функции спавна, разбираться в остальном коде бесполезно.
Аноним 23/02/23 Чтв 18:43:27 865081 364
Кодить конечно хорошее дело.
А вот с рисованием траблы
Аноним 23/02/23 Чтв 18:51:45 865088 365
>>865081
Приятный геймплей >> сложная графика.
Графика помогает с первоначальными продажами, пока отзывов на игру нет и люди оценивают потенциальное качество игры только по скриншотам, но если игра соберёт достаточно фанатов, то дальше в неё будут играть даже с примитивной графикой благодаря обзорам и рекомендациям. Если у тебя есть способ раскрутки без графики или твоя ЦА ценит игры больше за геймплей, чем за графику (и поэтому готова оценивать ноунейм игры с плохой графикой), то не парься о том, что не умеешь рисовать как какой-то 300к/сек художник.

Но, конечно, совсем уж плохая графика будет тянуть игру на дно, так что хотя бы постарайся не размещать вплотную друг к другу #FF0000 и #00FF00, лол.
Аноним 23/02/23 Чтв 18:54:30 865089 366
>>865088
Тут с просто вменяемыми картинками проблема...
Аноним 23/02/23 Чтв 19:00:54 865092 367
изображение2023[...].png 27Кб, 731x257
731x257
>>865078
так в том и суть, что если его не добавить в дерево сцены, то оно и не отобразится в игре, добавляется оно на сцену игрока, но рэди не вызывается
Аноним 23/02/23 Чтв 19:50:06 865108 368
>>865089
>вменяемыми картинками
2D или 3D? Реализм или мультик?

>>865092
>gun_key.scene
Сделай print() этой строки и потом открой соответствующий ей файл в редакторе. Проверь, какой именно скрипт связан с нодами. Может быть, у тебя там случайно скрипт неправильный сохранился (предыдущая версия и т.п.). Также попробуй перезапустить редактор через меню "Project > Reload...", обычно это исправляет редко встречающиеся ошибки редактора, когда он отображает не то, что есть на самом деле. У меня несколько раз было такое со скриптами, когда я переименовывал или перемещал несколько файлов.
Аноним 23/02/23 Чтв 20:16:01 865117 369
Аноним 23/02/23 Чтв 20:18:54 865119 370
>>865108
>Проверь, какой именно скрипт связан с нодами. Может быть, у тебя >там случайно скрипт неправильный сохранился (предыдущая версия >и т.п.).

Спасибо тебе, добрый человек, почему то на производных от класса ган у меня скрипт не менялся
Аноним 23/02/23 Чтв 21:14:29 865150 371
DragonTest (DEB[...].mp4 4364Кб, 1920x1064, 00:00:18
1920x1064
2023-02-2321-12[...].png 96Кб, 1040x830
1040x830
В чем проблема? Персонаж ходит лунной походкой иногда, хотя должен просто менять направление.
Аноним 23/02/23 Чтв 21:32:45 865162 372
>>865150
Предположу что в != anim_name
Аноним 23/02/23 Чтв 22:10:31 865190 373
>>865150
У тебя с логикой проблема. Ты при включении анимации проверяешь, не воспроизводится ли она уже, чтобы не сбрасывать её состояние. Одновременно с этим ты устанавливаешь направление спрайта влево/вправо. Но при движении влево и вправо у тебя одна и та же анимация с именем "run", поэтому происходит следующее:
1. Игрок не двигается, анимация steady.
2. Игрок двигается вправо, анимация run.
3. Игрок резко, без остановки начинает двигаться влево, что тоже анимация run, но эта анимация уже воспроизводится и твоя функция ничего не делает, в том числе не меняет положение спрайта.
4. Если игрок остановится и после остановки пойдёт налево, то будет последовательность run > steady > run, и твоя функция установит правильное направление спрайта.

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

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

По-хорошему, нужно использовать AnimationTree с его конечным автоматом, там есть функция travel(), которая автоматически следит за порядком анимаций, даже если их очень много.
Аноним 23/02/23 Чтв 22:14:09 865195 374
>>865190
>в конце строк зачем-то пробелы валяются
Я имел в виду табы. Они на скриншоте отмечены серой стрелочкой. Хотя не, редактор вроде удаляет все лишние табы в процессе сохранения скрипта, просто на скриншоте файл не сохранён. Ошибся.
Аноним 23/02/23 Чтв 22:19:31 865203 375
Аноним 23/02/23 Чтв 22:56:17 865255 376
>>865190
>>865203
>Но при движении влево и вправо у тебя одна и та же анимация
Спасибо, создал копию анимации и теперь запускаю её когда персонаж идет в другую сторону, больше лунной походки нет.
AnimationTree работает с DragonBones? Выглядит довольно заморочено, я честно говоря как запустить эти анимации еле разобрался с помощью ChatGPT, уроки от автора расширения просто ужасные, если ты новичок то вообще не понятно как привязать анимации к кнопкам хотя бы, хотя сейчас кажется все просто когда сделал, вообще я прохожу урок по созданию платформера и решил заодно разобраться как анимации из DargonBones запускать чтобы графон как у Vanillaware прикрутить, уже пожалел 10 раз.
Аноним 23/02/23 Чтв 23:01:03 865262 377
>>865150
не лучше ли сделать:
move_direction.x = Input.get_axis("left", "right")
if move_direction.x:
_play_move_animation(move_direction, "run")
else:
_play_move_animation(gravity, "steady")

сделать переменную для драгонбонса:
var scale_multiplier = 0.25
dragonbones.scale.x = sign(move_direction.x) * scale_multiplier

как минимум читабельнее будет и виднее где могут быть ошибки, мне кажется дело в if elif
Аноним 23/02/23 Чтв 23:16:58 865278 378
>>865255
>AnimationTree работает с DragonBones?
Понятия не имею, ты DragonBones через какой-то плагин подключил? Вообще, система анимации в Godot очень развита и может анимировать практически что угодно в движке, вроде бы любые доступные тебе обычным образом свойства можно менять с помощью анимаций. Есть скелетная анимация для 2D, не понимаю, зачем тебе пришлось подключать DragonBones.

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

>>865262
>if move_direction.x:
>_play_move_animation(move_direction, "run")
Без изменения кода внутри _play_move_animation() будет точно такое же поведение, потому что у тебя +1 резко меняется на -1 и происходит постоянный вызов "run" без переключения на "steady".

Input.get_axis() с клавиатуры будет выдавать 1, 0 или -1, но при быстром нажатии кнопок 0 может не появляться. На геймпаде другое дело, но, я думаю, на нём тоже можно резко стик перекинуть на другую сторону, проскочив 0.
Аноним 23/02/23 Чтв 23:24:32 865286 379
>>865278
>Без изменения кода внутри _play_move_animation() будет точно >такое же поведение, потому что у тебя +1 резко меняется на -1 и >происходит постоянный вызов "run" без переключения на "steady".

так скейл драгонбонса вообще нужно вынести из метода анимации либо в процесс, либо в отдельный метод, так чтобы он менялся только когда move_direction.x != 0

>Input.get_axis() с клавиатуры будет выдавать 1, 0 или -1
это все равно лучше, чем проверять ввод через if elif, как минимум запись короче и читабельнее
Аноним 23/02/23 Чтв 23:28:04 865288 380
1677184085553.jpg 12Кб, 252x240
252x240
>>865255
> еле разобрался с помощью ChatGPT
Аноним 23/02/23 Чтв 23:28:20 865289 381
image.png 97Кб, 375x355
375x355
image.png 26Кб, 254x657
254x657
>>865262
>не лучше ли сделать
возможно, могу на слово поверить, я если что на прошлой неделе godot скачал, до этого тыкался в гейм мейкер, но у меня от него жопа сгорела потому что я туда никакими костылями не смог прикрутить костную анимацию, а за спайн надо бабки платить только такой вариант.

>Лол, что? ChatGPT выдумывает лишнее, льёт много воды, в результате ответ может быть неправильным, но выглядеть как правильный.
Да пришлось сильно постараться, но он мне в итоге вроде как помог, а больше и некому было, потому что видимо это либо не интересная тема для годотеров и все пилят пиксельарт, либо по умолчанию считается что любой кто вкатывается 200iq мегамозг и сам разберется что там как, спойлер -нет.
Аноним 23/02/23 Чтв 23:33:32 865293 382
>>865288
>Понятия не имею, ты DragonBones через какой-то плагин подключил?
Отдельная сборка Godot сразу с ним есть, но документации нормальной нету, только несколько видосов от автора после которых не сильно то понятно что делать.
Аноним 23/02/23 Чтв 23:37:22 865294 383
image.png 286Кб, 487x488
487x488
>>865293 -> >>865278
Промахнулся, сори что засрал тред, всем спасибо, за помощь.
Аноним 23/02/23 Чтв 23:58:29 865301 384
>>865286
>это все равно лучше, чем проверять ввод через if elif, как минимум запись короче и читабельнее
Речь шла о том, что ты проблему не решил. Не важно, как считываются клавиши, проблема не в них.

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

>не интересная тема для годотеров
Ещё раз: встроенная система анимации хорошо работает для 2D, 3D и даже GUI, что-то внешнее особо не нужно. DragonBones может быть полезен для движков без собственного редактора анимаций, либо для движков с упрощённой анимацией. Аддон с поддержкой для Godot скорее всего для тех, кому по привычке удобнее DragonBones или необходимо портировать анимации, которые уже давно были сделаны в нём (при переводе существующей игры на другой движок).

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

Аналогичная ситуация с Tiled. Существует плагин для загрузки тайловых карт из Tiled в Godot. Но зачем? Да, разумеется, редактор Tiled имеет больше функций, но ты можешь делать достаточно сложные тайловые карты из Godot встроенными средствами (TileMap). Так что мне кажется, тут такая же ситуация: ты услышал, что существует плагин DragonBones для Godot, и сразу решил его использовать, не разобравшись, что можно обойтись встроенными средствами, которые хорошо объяснены в официальной документации и куче туториалов.
Аноним 24/02/23 Птн 02:37:20 865357 385
>>865301
>Существует плагин для загрузки тайловых карт из Tiled в Godot. Но зачем?
Потому что встроеный редактор ссанина полнейшая
Аноним 24/02/23 Птн 07:23:12 865382 386
буэ.jpg 61Кб, 1000x420
1000x420
Проблевался шейдером на PlaneMesh.

>>864744
>У дорог начинается z-fighting
Год назад я пытался располагать процедурные дороги на зайчаточной карте высот, и никаких артефактов не было. Тот раз я не смог создать пересечения дорог, расстроился и вернулся к генерации тайлами...
Аноним 24/02/23 Птн 15:11:53 865517 387
Хотел тут на движке прогу накидать, которая парсит всякую текстовую инфу с работы и выводит в удобный вид, только так как оказалось файлы в кодировке windows1251, а не utf-8. Есть какой-то быстрый вариант их считывать в таком виде, не залезая на уровень плюсов?
Аноним 24/02/23 Птн 16:35:33 865537 388
image.png 716Кб, 1280x720
1280x720
Release candidate: Godot 4.0 RC 4
Клепают уже через день.
Аноним 24/02/23 Птн 16:46:37 865544 389
>>865517
>считывать в таком виде
Как текст не получится, т.к. движок поддерживает только UTF-8 (что-то другое сегодня уже не нужно) и ты скорее всего получишь мусор вместо кириллицы. Ты можешь попробовать читать отдельные байты и переводить их в юникод вручную, ориентируясь по таблице символов:
https://en.wikipedia.org/wiki/Windows-1251
Либо найти/создать консольную утилиту, которая считывает заданный файл в cp1251 и возвращает UTF-8 строку, раз не хочешь забираться во внутренности движка.

Чтение отдельными байтами:
https://docs.godotengine.org/en/stable/classes/class_file.html#class-file-method-get-8

Строку можно конструировать из набора байтов, если ты в них вручную нужные UTF-8 значения запишешь. Либо попробуй декодировать из строки в URL-формате (кодировка через проценты, часто вижу в интернете кириллицу в таком формате, так что должно сработать):
https://docs.godotengine.org/en/stable/classes/class_string.html#class-string-method-http-unescape
https://en.wikipedia.org/wiki/URL_encoding

Запуск внешних программ:
https://docs.godotengine.org/en/stable/classes/class_os.html#class-os-method-execute
Позволяет получить результат, выводящийся запущенной программой в консоль.
Аноним 24/02/23 Птн 16:57:13 865549 390
>>865544
ну вот и думаю, что только вариант через get_file_as_bytes и там табличку накидать перевода, ладно, так и сделаю, видимо
Аноним 24/02/23 Птн 17:28:12 865585 391
>>865549
Я думаю, будет проще накидать скрипт на питоне или любом другом языке, который может работать через консоль и имеет встроенные средства для работы с разными кодировками. А потом вызывать этот скрипт через командную строку OS.execute().

Или тебе обязательно на GDScript нужно?
Аноним 24/02/23 Птн 18:26:04 865636 392
>>865537
Ждем 4.1
Или теперь по новому исчислению-5,6,7..
Аноним 24/02/23 Птн 19:39:17 865688 393
>>865585
вот уж питон еще тянуть...
да я графическое приложение для работы сделал вот, чтобы старые базы данные текстовые и параметрические всякие, которые хранились в упаси боже windows1251, вывести красиво с UI и работать удобно было бы

просто написал перевод файла при загрузке в utf-8 и работаю дальше в обычном режиме, сохранять не придется, но если понадобится, то тоже уже все готово, теперь можно к украшательству приступить
Аноним 24/02/23 Птн 20:13:49 865701 394
>>865688
>приложение для работы
>старые базы банных
>вывести красиво
>к украшательству приступить
Хорошая работа и базы данных интересные...
Аноним 24/02/23 Птн 20:33:52 865715 395
>>865382
Забыл написать: выяснил, что если загружать карту высот в шейдер как текстуру, то и разрешение текстуры, и количество подразделений меша весьма незначительно влияют на результат, по крайней мере внешне. Если у текстуры включена фильтрация, то ландшафт сглаживается и становится намного привлекательнее, чем если вручную дёргать отдельные вершины. То есть текстуры 64х64 пикселей более чем достаточно для того, что я пытался сделать, двигая вершины сетки 128х128 и получая некрасивые изломы. Кроме того, с текстурой появляется возможность легко менять масштаб по высоте, но какого-то интересного применения этому я пока не придумал. Только всё это многообразие возможных решений сбивает с толку, и я уже запутался, что я хочу сделать-то, лол...

Интересное обсуждение в тему процедурных миров:
https://www.reddit.com/r/gamedesign/comments/10e975b/
После чтения комментариев мне теперь хочется снова попробовать процедурную генерацию всей карты сразу, но с отображением через сглаженную карту высот, а не заготовленными заранее тайлами; особенно привлекла идея из одного комментария - моделировать течение воды, чтобы реки образовывались естественным путём (в общем-то это несложно, особенно для клеточного автомата, который у меня уже давно есть). Вообще-то я мог бы использовать один из старых генераторов, нужно только конвертировать данные в текстуру и получится визуализация без всего того сложного кода, из-за которого я забил на генерацию тайлами (там каждый тайл приходилось вертеть и выбирать в зависимости от соседей, это сложно и очень плохо масштабируется, а тайлов мне хотелось как можно больше).

Что ж, разработка игры снова откладывается))))
Аноним 24/02/23 Птн 20:37:48 865720 396
Хочу сделать менеджер сигналов (гд4 сисярп).
Что лучше - статический класс (ну типа синглтон) и стандартные шарповые ивенты
или
годотовский автолоад и его сигналы?

Сделал потестить на статическом классе, пока все ок, только отписываться не забывать надо. Или всё-таки автолоад?..
Аноним 24/02/23 Птн 20:46:04 865727 397
>>865720
>до-диез
Мне кажется, в этом треде большинство на GDScript программирует. Но могу предложить, что чем меньше лишних запросов к API движка, тем лучше?

Или mono встроено в exe-файл Godot?
Аноним 24/02/23 Птн 20:49:14 865728 398
>>865727
Если делать онлайн,то лучше шарп,2 зайца одним выстрелом
Аноним 24/02/23 Птн 21:07:21 865737 399
4551501513.jpg 113Кб, 930x930
930x930
2023-02-2421-06[...].png 62Кб, 1006x843
1006x843
>>865190
>По-хорошему, нужно использовать AnimationTree
Удалось запустить эту штуку с DragonBones, выглядит круто, отличный совет, осталось привязать к коду это дело.
Аноним 24/02/23 Птн 21:14:08 865741 400
Вопрос по пулу объектов (в данном случае пуль).
Если у меня несколько типов пуль (т.е. для каждого типа пуль свой класс от абстрактного) - пул должен быть общий или по пулу для каждого типа?
Если общий, то я не очень представляю пока как, если пул надо инстанцировать...
Аноним 24/02/23 Птн 21:16:57 865742 401
>>865701
что делать, в лохматых кто-то так решил, что будут так хранить данные
платят много и ладно
Аноним 24/02/23 Птн 21:54:47 865766 402
1677264885434.jpg 9Кб, 252x240
252x240
>>865293
Хули ты мне отвечаешь, ебанат малолетний, с чатгэпете общающийся? Иди нахуй и там кончись, опущ.
Аноним 24/02/23 Птн 23:05:47 865793 403
тест.mp4 10815Кб, 800x600, 00:02:00
800x600
a-chyo-tak-mozh[...].jpg 11Кб, 480x360
480x360
Все советуют какой-то тяжеловесный сторонний модуль компилировать, а про простейшее решение никто ничего не говорит, только пугают. Давно бы уже всё сделал, если бы знал раньше, что так можно было.
Аноним 24/02/23 Птн 23:43:34 865809 404
>>865793
Дрочую.
Так же и Зиланн как ты однажды сказал и запилил свой код. А потом отдал его людям.
Аноним 24/02/23 Птн 23:58:07 865815 405
>>865741
В первую очередь должен сказать: не занимайся преждевременной оптимизацией. От того, что ты выиграешь 1 мс на стрельбе, разработка игры дальше не продвинется. Поэтому сначала сделай самый простой вариант, с созданием и уничтожением пуль, и измерь производительность игры. Если она достаточна (стабильные 60 кадров в секунду), то занимайся другими, более важными для игры системами, а оптимизацию оставь на потом. Когда займёшься оптимизацией, тебе нужен будет этот простой вариант для сравнительных тестов, чтобы понимать, действительно ли твои оптимизации делают то, что ты от них ожидаешь, или это пустая трата времени. В контексте пуль серьёзная оптимизация требуется в буллетхеллах, где на экране тысячи снарядов и от игрока требуется быстрая реакция. А если у тебя какой-то неспешный симулятор охотника и в худшем случае на экране будет всего несколько пуль, вряд ли тебе нужна оптимизация, по крайней мере на ранних этапах разработки.

Отвечая на твой вопрос, если у тебя в пуле всё будет вперемешку, то ты будешь тратить время на поиск объекта нужного типа, что снизит эффективность пула (а то и вовсе сделает его хуже простого решения - нужно проверять, сравнивать). Тебе даже не нужно иметь один общий пул на все пули одного типа, можно заранее создать пули для всего, что может стрелять, ровно в том количестве, которое этот объект способен выстрелить, и расположить внутри этого стреляющего объекта (всё равно в памяти ООП объекты разбросаны хаотично, а в массиве хранятся только ссылки на эти объекты; можно оптимизировать расположение данных в памяти, но это отдельная тема). Если у игрока всего 30 пуль в магазине, тебе нет смысла иметь больше 30 пуль в связанном с ним пуле, а искать 30 свободных пуль в общем пуле из 1000 пуль одного типа для всех возможных юнитов в игре будет, возможно, так же неэффективно, как создавать пули по мере стрельбы, если не хуже. Ты же, похоже, хочешь не просто 1000 пуль на всех, а 1000 пуль разных типов на всех, т.е. ещё больше проверок (нужного ли типа и доступна ли для стрельбы).

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

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

Также не забывай, что твоя система должна быть достаточно надёжной, ведь если кратковременные тормоза можно перетерпеть, то баги и глюки могут вообще сломать игровой процесс и наверняка испортят игроку впечатление от игры, тогда как тормоза многие привыкли терпеть. Так что лучше пожертвовать производительностью, чем вероятностью случайно начать стрелять чем-то неподходящим или вовсе выпасть на рабочий стол из-за какого-нибудь деления на ноль.
Аноним 25/02/23 Суб 12:08:08 865915 406
>>865815
Понел. Ну я делаю а ля буллетхелл, потестил оптимизацию без пула и с ним - фпс на большом количестве в разы отличается в итоге.
Сделаю тогда по пулу на каждый тип, их всё равно не так много
Аноним 25/02/23 Суб 12:08:29 865916 407
RC5
Аноним 25/02/23 Суб 12:21:31 865921 408
>>865916
Да емае, я даже не успеваю некоторые запустить, как пора заменять.
Аноним 25/02/23 Суб 12:22:15 865922 409
1548243687071.png 1066Кб, 1280x720
1280x720
>>865916
Ну хорошо в этот раз хотя бы каких то вампирчиксурвайвалов поставили, на игру похоже.
Аноним 25/02/23 Суб 12:23:37 865923 410
>>865922
Правда в ней спрайты не очень пиксель перфект получились, ну так это так и должно быть наверное, раз раз и в продакшн.
Аноним 25/02/23 Суб 12:28:51 865926 411
>>865921
Просто жди финалку
Аноним 25/02/23 Суб 12:46:54 865931 412
Аноним 25/02/23 Суб 17:51:58 866017 413
image.png 217Кб, 963x724
963x724
image.png 125Кб, 969x737
969x737
>>864762
>Пустая трата времени. Большинство роликов:
https://www.youtube.com/watch?v=VeCrE-ge8xM&list=PLda3VoSoc_TSBBOBYwcmlamF1UrjVtccZ&ab_channel=BornCG
>чтобы автор получил прибыль с рекламы, кликов, подписок, мерча и т.п., или просто чтобы потешить эго автора
Годот слишком маленький по сравнению с другими движками, и нормально заработать на создании туториалов у человека вряд ли выйдет! Единственные кто будут делать туториалы это искренние энтузиасты.
>скачешь с темы на тему и пропускаешь важное
Я скачу с темы на тему по причине выбора более легкой реализации. Мне в другом треде сказали что в годот легко создать кликер, как оказалось нужную мне механику кликов по врагам сделать хрен получиться. Пытался на renpy с советами знакомого программиста реализовать тоже самое. Но даже его написанный код не смог заработать! Ты говоришь что я прыгаюсь с темы на тему, но срок у каждого прыжка несколько месяцев.
>Технический английский осваивается чтением руководств с помощью англо-русского словаря. Я так английский и выучил: сначала программирование через русскоязычные книги, потом кое-как английский по англоязычным руководствам к тому, что на русском не объясняют (или объясняют плохо). Сейчас могу читать на английском и даже кое-как объясняться в тексте (чтоб понимали, что я сказать хочу), хотя некоторые слова всё ещё смотрю в словарях. Я не учил английский специально, мне это никогда не нравилось и не хотелось, а в школе мне ставили "3" за пассивное присутствие на уроке. Так что не всё так плохо, как тебе кажется.
По личному опыту, смотря на людей со схожей проблемой, могу сказать только одно... Есть люди которые неспособны учиться иностранным языкам. У тебя не было взгляда со стороны, где пол класса читал книгу по слогам, в шестнадцати летнем возрасте. Проще поверить в такое если у человека есть справка с аутизмом, или по лицу виден синдром дауна. В иных случаях почему-то принято считать человека способного хоть завтра в космос полететь!
>Базовое программирование осваивается не дольше месяца.
Как я уже и сказал, это чисто твой опыт. Который ты стараешься проецировать на всех.
>Я тоже хикка и испытываю депрессивные эпизоды уже много лет, частые мысли о суициде и т.д. Это не оправдывает твоё поведение. Часть твоих проблем ты мог бы решить, если бы прислушивался к тому, что тебе говорят, осознавал и не повторял свои ошибки.
Я не переходил на личности, и не пытался никого задеть.
>и не повторял свои ошибки
Для тебя мои ошибки что я признавая что не могу сделать игру за день, не сделал готовую игру за день.
>Конечно, отрицаешь, раз тебе указывают на ошибку, а ты начинаешь психовать и ругаться, а потом снова делаешь эту ошибку, как будто назло нам.
Психовать начал только в случае где анон тему разговора перевёл с темы движка и игр, на свои странные выдумки. Что никого не слушаю... Я бросил попытки сделать кликер, и место этого сделал обычного 2d персонажа, который перемещается на wasd. Вместо простой по геймплею игры похожую на флешку, будет короткая игра в стиле undertale.
>Ага, то есть ИРЛ ты предпочитаешь жить прилично, а вот побираться по техническим форумам, выпрашивая кусочки тухлого говнокода, который ты скопипастишь - это совершенно нормально?
Сколько ещё раз мне писать что с начало я пытался найти ответ в гугл, после у друга программиста, после в самую последнею очередь тут. Сколько ещё раз мне об этом повторить? Рыбу легче достать чем код, который позволит сделать танчик стреляющий по вражеским спрайтам.
>Нет, не является. Ты же повторяешь свои ошибки, которые наверняка повторял в других сферах: пытаешься с наскока сделать то, на что у других людей уходят годы последовательного обучения и практики
Я не делаю сложную игру с красивой графикой, неожиданным сюжетом, и сложным геймплеем. Все моё воображение и задумки остались на мизерной планке ребенка которого с рождения ничего не ставят. По мне раз ты уже несколько раз утверждаешь того, что я не разу не говорил, ты решаешь тем самым меня потроллить. Для наглядного примера я нашёл критический обзор на игру от школьника на rpgm. Посмотри на пики и пойми, выше этого я прыгнуть и не надеюсь.

Некоторые моменты я опустил, достало писать то о чём уже было сказано. И философские мысли о сложности человеческого организма тоже затрагивать нихочу. Инженеру трудно создать робоногу, вместо простого создания полноценного человека через зачатие.
Аноним 25/02/23 Суб 18:11:31 866022 414
>>866017
Что за механ такой который не заработал?
Аноним 25/02/23 Суб 20:31:58 866043 415
генератор домик[...].mp4 2464Кб, 800x600, 00:00:45
800x600
Накидал свою задумку - работает.

Что б вы понимали, в чём разница. В прошлом (те серые коробки с дырками) я пытался генерировать стены, внешние и внутренние, работая непосредственно с блоками (мешами), помещая их в GridMap с размером ячейки 4x4x4, итого дом мог бы быть описан так (вид сверху, один этаж):
2 1 2
1 0 1
2 1 2
Алгоритм должен был бы выбрать и разместить необходимые блоки на месте чисел в зависимости от их соседей: угловые двойки должны стать стенами-уголками, а прямые соседи нуля должны стать сплошными стенами или стенами с окнами и дверями.

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

Сейчас я применил следующий подход. Массив снова заполняется числами, но теперь они имеют другой смысл - обозначают тип/свойства комнаты, а не блоков, из которых эта комната могла бы состоять. Предыдущий пример выглядит теперь так:
0 0 0
0 1 0
0 0 0
Далее, алгоритм визуализации обходит каждую клетку и проверяет её непосредственных соседей. Нуль - пусто, ничего размещать не надо (пока что). Единица - комната, нужно проверить её соседей. Если рядом с единицей другая единица, то ничего не делаем (для экстерьера), а если рядом с единицей нуль - размещаем стену в координатах единицы в направлении нуля. То есть единица на схеме выше будет иметь сразу 4 стены, независимо от верхних и нижних этажей и угловых клеток, и все эти стены будут расположены в одной точке пространства.

Может быть, преимущества неочевидны, но подумайте о расширении дополнительными блоками. Для добавления балкона в первом варианте потребуется написать что-то вроде этого, добавив новые типы в генератор (вообще, я сомневаюсь, как это должно быть, не вдавался в детали):
5 4 4 5 - блоки заборчика
4 3 3 4 - заборчик, пол, пол, заборчик
1 2 1 1 - стена, дверь, стена, стена
В новом варианте можно сделать так:
0 0 0 0 - ничего нет
0 3 3 0 - двойной балкон
1 2 1 1 - комната, вход, комната, комната
И дальше на этапе визуализации все необходимые блоки выстроятся как положено, заставив балкон заборчиками с фрагментами пола или что там мы хотим видеть на балконе. Т.е. имея несколько наборов блоков, можно использовать одно и то же описание дома для разного внешнего вида.

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

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

Визуальные блоки теперь могут быть точнее ограничены, в частности, блоки экстерьера размещаются в пределах грани куба 4x4x4 и могут выпирать наружу, а блоки интерьера должны будут, наоборот, вписываться в куб 4x4x4 и могут выпирать вовнутрь. Пересечение блоками друг друга исключено или минимизировано, они будут прилегать друг к другу без каких-либо проблем на стыках (до этого мучился с исправлением дырок).

Также, по очевидным причинам, я отказался от GridMap, ведь он не позволяет заполнять пространство так, как я описывал выше. Сначала думал использовать мультимеш, но попробовал merge_meshes() и это оказалось достаточно производительно (пока что). Если что, я думаю, легко заменить на мультимеш, но merge_meshes выгоден тем, что позволяет склеивать геометрически разные блоки с одним материалом (жертвуя памятью).

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

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

Внезапная идея: можно после слияния всех блоков в один меш потом смещать все вершины по каким-либо формулам. Может, кто-нибудь помнит, когда я выкладывал скриншот модели дома с пухлыми стенами? По идее, теперь я смогу сгенерировать такой пухлый дом любой высоты и с любой планировкой, как снаружи, так и изнутри. Конечно, смещение вершин займёт время и потом могут возникнуть проблемы с навигацией в таком изогнутом пространстве, но выглядело бы, на мой взгляд, шикарно, даже лучше, чем кривые домики в Townscaper - там у них только фундамент кривой, а этажи идут друг за другом линейно. О-о-о, а если ещё и перекручивать немного по оси Y, вообще офигенно получится. Всё же я хочу более-менее мультяшные, визуально забавные домики, а не унылые коробки... Но для таких операций, наверное, придётся поворотные матрицы вспоминать.
Аноним 25/02/23 Суб 21:11:37 866056 416
Аноним 25/02/23 Суб 21:46:17 866074 417
>>866017
>Годот слишком маленький
Ниша пуста -> выше шансы заработать.
>будут делать туториалы это искренние энтузиасты
Видел несколько платных курсов. Пару проектов с одного такого платного курса щупал (они опенсурс) и там был какой-то быдлокод... Что только ни продают ради наживы на наивных ньюфагах.

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

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

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

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

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

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

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

Смог бы Симон пробурить небеса, если бы в его жилах не текла магма, раскаляя сердце? Нет, не смог бы. А бур - это всего лишь удобный инструмент... Не будь у него бура, он бы ложкой прокопал небеса. Не будь у него ложки, он бы пальцем проковырял небеса. Ну ты понял, делай выводы.
Аноним 25/02/23 Суб 22:40:18 866086 418
Аноним 25/02/23 Суб 22:40:42 866087 419
Аноним 25/02/23 Суб 22:59:38 866089 420
Разрабы виноваты в плохой документации
Аноним 25/02/23 Суб 23:13:04 866092 421
>>866089
Я пока не сталкивался с такого рода проблемами, того что есть достаточно
Аноним 25/02/23 Суб 23:36:15 866094 422
>>863546
Не, просто нужно хорошее обучающее видео

Например по юнити находил Udemy курс 2017 года, там умные ребята делали его, начало обучения это обучение тому что такое State Machine, а всё что связано с основами и прочим по ходу выясняется, так как очень просто.

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

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

Когда человека учат использовать инструмент, ему не объясняют как добывают и обрабатывают материал из которого он сделан.
Аноним 26/02/23 Вск 07:45:51 866134 423
Аноним 26/02/23 Вск 08:17:51 866136 424
>>866094
> начало обучения это обучение тому что такое State Machine
Вот это и есть основы, о которых говорили выше. Лично я в своём познании настолько преисполнился, что могу смотреть курсы по юнити и применять их в годот. Я не вижу разницы. В обоих движках главный цикл с коллбэком update/process. В одном движке все объекты это 3d-трансформ, в другом все объекты представляют три разновидности: 3d-трансформы для тридэ, 2d-трансформы для двадэ и интерфейсов и общий класс без трансформа вообще, для утилитарных нужд. В юнити все объекты выстраиваются в "иерархию сцены", в годоте все объекты выстраиваются в "дерево сцены". И да, в обоих движках есть сцены, которые используют сериализацию. Причем в юнити сериализация вшита так плотно, что её основной игровой объект в штатном режиме не создаётся конструктором, а десериализуется из префаба (который есть не что иное как сериализованные данные на диске). В юнити префабы, в годоте пакед-сцены. В годоте же игровой объект можно штатно создавать конструктором, можно и десериализовывать. В юнити скрипты - это компоненты родительского игрового объекта и они тоже игровые объекты. Один игровой объект может иметь несколько скриптов-объектов в своём списке компонентов. Каждый из объектов-скриптов, как игровой объект так же имеет список компонентов и может иметь несколько скриптов-компонентов. В годоте скрипты это ресширения базового объекта-ноды, каждая нода может иметь только один скрипт, однако, нода встроена в дерево, потому и называется нодой, а значит, она находится в списке детей своей родительской ноды, и у неё самой есть список нод-детей.
Слова разные в движках, а смысел один. И так можно до бесконечности сравнивать. Экспортированный проект юнити представляет собой юнитиплеер, и набор даных, который проигрывается юнитиплеером. Экспортированный проект в годоте представляет собой годотплеер, и набор данных, который проигрывается годотплеером.
Аноним 26/02/23 Вск 10:56:30 866163 425
>>866092
гайдов в разы меньше юнити
Аноним 26/02/23 Вск 12:13:53 866196 426
>>866163
А с определенного количества это неважно, а важно только достаточное покрытие тем. Вот мне надо было гайды на террейн, на инверсную кинематику ног, на обводку объектов, на порталы - это все нашлось хотя бы в 2-3 вариантах, а значит хватает. По сравнению со старыми опенсурс движками типа Ogre3D. А то, что для чего-то клепают намного больше новичковых гайдов вида "я сделал свой первый платформер" - это уже не так важно. Конечно, наверняка найдутся темы, на которые тут еще нет гайдов, но это уже специально искать придется теперь.
Аноним 26/02/23 Вск 14:27:55 866236 427
>>866196
Такие вещи гораздо эффективнее текстовой документацией покрываются.
Аноним 26/02/23 Вск 14:33:17 866237 428
>>866089
Для опенсорса у годота охуенная документация. А не как бывает, просто дамп сигнатур функций, без объяснения как это использовать.
Аноним 26/02/23 Вск 16:15:33 866258 429
>>866074
>Ниша пуста -> выше шансы заработать.
Малый спрос -> Маленький заработок.
Те кто хотят заработать денег с обучения и продажи рекламы будут брать более популярный движок. Ведь на него клюнет больше незнающих новичков. Это тоже самое если думать что кокаколу купят меньше, чем брусничный морс.
>Видел несколько платных курсов. Пару проектов с одного такого платного курса щупал (они опенсурс) и там был какой-то быдлокод
Пару примеров на личном опыте. Где идёт отрицание действительности. Мир не чёрно-белый.
>На иностранном языке - ничего необычного. Кто-то и в старости начинает учить язык, при чём тут возраст?
Не на иностранном! А на родном русском языке!

Оговорю одно, но ты мало того что не хочешь понять, повторяешь все то, на что уже отвечал.
Аноним 26/02/23 Вск 16:23:48 866264 430
>>866258
Ниша пуста -> меньше конкуренция.
>Пару примеров на личном опыте. Где идёт отрицание действительности.
Тоже качал разные курсы, в основном там хуйня сделанная треьтекурсниками которые возомнили что что-то умеют.
Аноним 26/02/23 Вск 16:35:47 866269 431
image.png 597Кб, 830x467
830x467
image.png 330Кб, 616x353
616x353
>>866264
>Ниша пуста -> меньше конкуренция.
Насколько можно не разбираться в экономике для написания такого бреда?
Сделаю показательный пример на пиках: где есть популярная игра в занятой нише. И пустая ниша с умершим говном.
>качал разные курсы
Я ссылку приложил на бесплатный курс относящийся к теме.
https://www.youtube.com/watch?v=VeCrE-ge8xM&list=PLda3VoSoc_TSBBOBYwcmlamF1UrjVtccZ&ab_channel=BornCG
Почему вам удобно его игнорировать, и потом писать мне что это я игнорирую всех и вся?
Аноним 26/02/23 Вск 16:40:14 866272 432
>>866269
>Насколько можно не разбираться в экономике для написания такого бреда?
Ну то есть ты считаешь что надо сделать еще один пиксельный платформер и пытаться втиснуться между тысячами других, или лучше сделать более оригинальную игру и конкурировать уже среди нескольких десятков?
>Почему вам удобно его игнорировать, и потом писать мне что это я игнорирую всех и вся?
И ты только что писал про личный опыт, лол.
Аноним 26/02/23 Вск 17:06:15 866284 433
>>866272
>Ну то есть ты считаешь что надо сделать еще один пиксельный платформер и пытаться втиснуться между тысячами других, или лучше сделать более оригинальную игру и конкурировать уже среди нескольких десятков?
У непопулярного жанра будет меньше потенциальной аудитории. Если при создании платформера в твою игру заходят поиграть сто человек, при оригинальной идеи это количество будет куда меньше. Если нужен результат и волнует финансовый вопрос, лучшим решением сделать работающею игру по рабочей схеме. Чем не понятно что, для хрен пойми кого!
Аноним 26/02/23 Вск 17:20:10 866292 434
>>866284
Ты даже не пытаешься понять что тебе говорят.
Ну хорошо, если ты такой умный, почему тогда бедный?
Аноним 26/02/23 Вск 17:23:56 866293 435
>>866284
О, спасибо, ты открыл мне глаза на логику тех, кто делает очередной пиксельный платформер и ничего не зарабатывает, потому что они же просто делали по рабочей схеме, как так получилось, что игру никто не заметил.
Аноним 26/02/23 Вск 17:32:55 866295 436
image.png 193Кб, 1115x545
1115x545
>>866292
>Ты даже не пытаешься понять что тебе говорят.
Посмотри во что играют люди, и в какие игры они хотят играть.
>Ну хорошо, если ты такой умный, почему тогда бедный?
Я это взял как аналогию почему на других движках гайдов больше.
Аноним 26/02/23 Вск 17:40:12 866298 437
>>866293
Сколько времени ты провёл в вангерах? Смогла ли оригинальная игра покорить весь мир? В мор утопию играл, тебе было очень интересно?
Аноним 26/02/23 Вск 18:52:34 866320 438
>>866298
Уж точно больше чем в очередной титановой гончей.
Аноним 26/02/23 Вск 21:06:26 866344 439
>>866295
>cs:go, dota, pubg, rust
>во что играют люди, и в какие игры они хотят играть
Твоя проблема в том, что ты не понимаешь этих людей. Ты смотришь на статистику конкретных игр и думаешь, что все эти люди играют в эти игры от безысходности, потому что не могут найти альтернативу. Ты думаешь, что если кто-то сделает игру в том же жанре, но лучше по каким-либо измеряемым параметрам, этакую типичную "убийцу %игра%", то эта новая игра перетянет на себя всю или по крайней мере большую часть аудитории лидеров.

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

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

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

С движками ситуация похожая. Unity пользуются в основном из-за того, что первой её освоили и привыкли, какие-то альтернативы им не нужны, а если и нужны - то обязательно 1-в-1 как Unity. Но на рынке туториалов к Unity конкурировать бесполезно, там лидерах - сделанные по заказу владельцев Unity, и вообще количество такое, что твой ещё один туториал "как двигать кубик по сцене" никому не нужен. Godot же, хотя и менее популярен, тоже имеет свою аудиторию, и эта аудитория испытывает нехватку качественных туториалов, которую ты можешь компенсировать своими туториалами. Пусть твоя потенциальная аудитория будет меньше, но твоя реальная аудитория будет больше и благодарнее за счёт удовлетворения существующей у них потребности. То есть прибыль с платного курса по Godot в данный момент может быть куда больше, чем с платного курса по Unity, если считать только прямые покупки (Unity проплачивает всяким геймдев-школам, чтобы набирать и поддерживать свою популярность, поэтому учителя в плюсе даже если никто не берёт у них эти уроки, а у Godot на такой маркетинг, похоже, пока что денег нет).
Аноним 26/02/23 Вск 21:07:04 866345 440
image.png 820Кб, 1067x599
1067x599
image.png 2083Кб, 1680x1050
1680x1050
>>866320
За два дня 235 отзывов
Аноним 26/02/23 Вск 21:16:02 866347 441
>>866345
Вы же платформеры обсуждаете, а это топ-даун рогалик, совершенно другая ниша. Пиксель-арт не ограничивает жанр игры.
Аноним 26/02/23 Вск 21:20:20 866348 442
image.png 553Кб, 1920x1080
1920x1080
image.png 701Кб, 1477x957
1477x957
К слову надеюсь смогу сделать такую же игру как на пикрил
>>866344
>перетянет на себя всю или по крайней мере большую часть аудитории лидеров.
Какими мне словами ещё тебе объяснить? Есть большой пирог, есть маленький пирог! Если взять маленький кусочик от обоих пирогов, у большого пирога он будет больше!
Аноним 26/02/23 Вск 21:23:29 866349 443
>>866344
p.s.
До этого я спрашивал про платные ассеты на годот, после чего был без причины послан. До сих пор не знаю можно ли их где либо купить, или нет.
>>866347
Пускай он почувствует себя идиотом даже на своём поле шизофрении.
Аноним 26/02/23 Вск 21:39:13 866352 444
>>866348
>надеюсь смогу сделать такую же игру
Технических сложностей не вижу. Делай.

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

>>866349
>платные ассеты на годот
>можно ли их где либо купить
Пока что нет официального рынка ассетов, потому что это требует юридического регулирования, которое сложно провести с опенсурсом. Но те, кто делают ассеты, могут продавать их на сторонних площадках. В частности, 3D модели, текстуры, спрайты, тайлсеты, музыку и звуки следует искать на общих площадках, не зависящих от конкретного движка (просто поищи в интернете). Скрипты же могут продаваться на таких площадках, как itch.io и gumroad.com, или где-либо ещё, где можно продавать цифровой контент. Некоторые публикуют свой контент на patreon.com, где нужна подписка на месяц для получения временного доступа ко всем опубликованным материалам.

В остальном, если ты серьёзно намерен делать игру, лучше будет делать всё самому, заказывать у фрилансеров или нанимать сотрудников, чем покупать ассеты без личных знаний или толкового сотрудника, который эти ассеты будет использовать. Это ведь не волшебная палочка, без понимания какой-то темы платные ассеты не будут сильно лучше бесплатных. Я смотрел платные ассеты на юнити, и там не было чего-то, оправдывающего высокие цены. Это просто жмоты, которые пользуются тем, что цифровой контент можно неограниченно продавать, затратив минимум усилий в самом начале...
Аноним 26/02/23 Вск 21:49:33 866356 445
>>866345
Ну то есть до мора 2 осталось всего 6000?
А остальные провальные тысячи игр ты почему не посчитал, кстати, ошибка выжившего?
Аноним 26/02/23 Вск 21:50:32 866357 446
>>866349
Ну где-то в гугле вылезает сайт с платными ассетами, но не знаю покупают ли там. Смысла в этом в любом случае немного. А, еще на итче видел парочку.
Аноним 26/02/23 Вск 22:03:37 866364 447
image.png 759Кб, 1051x601
1051x601
>>866356
Посчитал. Держи представителя оригинальной игры.
Аноним 26/02/23 Вск 22:47:48 866369 448
>>866094
>>866136
Вы оба сильно заблуждаетесь. Базовые знания для геймдева - это устройство компьютера и разработка простейших программ. Тот анон сам признавался, что не знает, что такое цикл for, а вы ему предлагаете конечные автоматы изучать.

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

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

Своей головой ему нужно думать, а он не хочет.
Аноним 26/02/23 Вск 23:04:01 866378 449
Аноним 27/02/23 Пнд 00:58:07 866415 450
>>863942
Сделай теперь так, чтобы на экране был мигающий, с интервалами 1 в секунду, оранжевый квадрат.
Аноним 27/02/23 Пнд 02:53:28 866431 451
>>866378
>Своей головой ему нужно думать, а он не хочет.
>Когда мне нормально ответили...
Что и требовалось доказать: думать не хочет, только ждёт, когда ему скажут, как делать то-то и то-то.

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

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

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

>>866415
Не издевайся над ним...
Аноним 27/02/23 Пнд 14:32:21 866533 452
>>863942
Молодец, анон. Продолжай изучать и делать игры. Не поддавайся дисморали от токсиков. В годоте дружное комьюнити, и ни в какие другие движки не выгоняют. Годот вполне подходит новичкам. Мы всегда поможем, спрашивай что еще подсказать.
Аноним 27/02/23 Пнд 16:00:01 866572 453
1630077483609.png 1399Кб, 1280x720
1280x720
Аноним 27/02/23 Пнд 17:57:13 866599 454
>>866284
>Если нужен результат и волнует финансовый вопрос, лучшим решением сделать работающею игру по рабочей схеме.
Ты только что юбисофт
Аноним 27/02/23 Пнд 18:58:52 866625 455
>>866533
Спасибо но боюсь они правы
Аноним 28/02/23 Втр 00:36:46 866778 456
>>866431
>Не издевайся над ним...

Может это заставит его пойти и найти как это сделать...
Аноним 28/02/23 Втр 13:30:00 866873 457
>>866625
> боюсь они правы
Я уже не помню, по какому поводу вы (мы?) там срались, но скажу так. Нужно с осторожностью относиться к видеоурокам, не только на ютубе, но даже к платным, с сервисов типа Udemy. С осторожностью. Авторы туториалов очень часто прививают зрителям вредные привычки в кодинге. Им это напрямую выгодно.

ПОДУМАЙ САМ

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

Поэтому в подавляющем большинстве туториалов мы видим (слышим) буквально следующее:
> Так, тут кидаем эту ноду, потом объясню. Здесь добавляем этот код. Ну тут, карочи, э. Скачиваешь ассеты по ссылке в описании. И вуаля! Ты. Сделал. Свою. Первую. Игру.

Спешу расстроить. Не "ты", не "сделал", не "свою" и увы, не "игру".

А код там полный мрак, вроде дёрганья нод из дерева в колбэке _process() я лично сталкивался, скачал с гитхаба контроллер от третьего лица, с такой знаете ли няшной роботяночкой в качестве модели, являющийся проектом-ссылкой из под туториалов одного инфоцыгана с ютуба. А контроллер тормозит на моём некроговне. Я смотрю на экран - ну чему там тормозить? Ну чему? Открываю скрипты, а там пиздец, сынуля, полный пиздец.
Ну я вынес все строковые пути к нодам в onready переменные, и бац - 60 фэпесов на моей некрухе.

То есть, если следовать базовым гайдам кодинга, которые ещё на уроках информатики прививают в школах, то ты/мы/они быстрее игру сделаем, чем глядя видеоуроки.
Аноним 28/02/23 Втр 14:49:01 866914 458
>>866873
>Если бы ты зарабатывал на продаже туториалов, или, скажем, выкладывал на ютуб и получал рекламную монетизацию, выгодно ли было тебе, чтобы после туториала зритель сразу бы всё понял и ушёл делать игры?
Ага. Возможных тем - огромное, неисчеслимое количество. Зритель, который понял и усвоил прошлый урок, с большой вероятностью вернется на следующий, у него же положительное закрепление, что ты хорошо научил. А к тому, кто не научил полезному, зритель не захочет возвращаться, скипнет с мыслью - а, это тот бесполезный челик.
Аноним 28/02/23 Втр 14:54:22 866916 459
>>866914
Удивительное дело, да? Тем дохуя, а туториалы на 99% как сделать простой платформер для начинающих. Удивительно, да?
Аноним 28/02/23 Втр 19:45:29 867136 460
Аноним 28/02/23 Втр 19:46:17 867137 461
>>867136
Тьфу,двачую этого имел ввиду
Аноним 28/02/23 Втр 20:26:45 867153 462
1650035274267.png 142Кб, 884x710
884x710
1568980330634.png 26Кб, 720x146
720x146
Ухх, похоже уже скоро начинаем ждать 4.1
Аноним 28/02/23 Втр 20:35:28 867158 463
>>867153
Они зарашили четверку, чтобы успеть к GDC, наверняка там багов выше крыши.
Аноним 28/02/23 Втр 20:37:39 867159 464
>>867158
Да, хватает. Много вылетов редактора.
Аноним 28/02/23 Втр 21:22:35 867172 465
1677608555220.png 933Кб, 984x861
984x861
>>867137
Поздно. Я уже удолён.
Аноним 28/02/23 Втр 21:40:15 867181 466
>>866873
>Авторы туториалов очень часто прививают зрителям вредные привычки в кодинге. Им это напрямую выгодно.
Двачую, всё так, но низкое качество большинства туториалов всё-таки вряд ли умышленно - если бы автор даже хотел научить качественно, ему для этого нужны знания и навыки преподавателя. Много ли у нас реально достойных преподавателей, окончивших ВУЗ по специальности преподавателя, и при этом шарящих за геймдев? Да ещё и на не очень популярном движке. Я уверен, большинство авторов туториалов - самоучки, какие-нибудь дворники да сантехники, в лучшем случае - собственно программисты и геймдизайнеры, но никогда не настоящие преподаватели. У них ни навыка преподавания нет, ни системных знаний по теме геймдева. Одно только альтруистическое желание учить - или зарабатывать на рекламе с просмотров и продаж курсов. А по описанным тобой причинам повышать собственный уровень им невыгодно, пока их смотрят, лайкают и благодарят в комментариях.

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

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

Чтобы по-настоящему научиться рисовать, тебе должны объяснить, как нарисовать что угодно, что пожелаешь. Это возможно, и это умеют настоящие художники. Настоящего художника можно попросить нарисовать что угодно - он сядет и нарисует это без поиска в интернете туториалов "как нарисовать то-то и то-то". Нет, этот художник никогда раньше не рисовал того, что ты попросил, и никогда не видел туториалов на эту тему. Но у него в голове есть Система, которая позволяет ему нарисовать что угодно, даже то, что он не видел, но может придумать. Ему никогда не нужны были туториалы вроде "как нарисовать сову" и он никогда эти туториалы не проходил, а всё, чему он учился - это системному подходу к рисованию.

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

И не надо оправдываться своим состоянием здоровья или какими-то особенностями психики. Тебе просто запудрили мозги все эти "туториалы", которые ничему на самом деле не учат, и из-за них ты потерял веру в свои возможности. Но это не так, ты способен научиться всему, просто должен поверить в себя, спокойно относиться к обучению и не скакать с темы "как нарисовать сову (платформер)" на "как нарисовать тигра (гоночку)", а подходить к теме "разработка игр" с самых фундаментальных основ, которые ты в своё время упустил или тебе плохо преподали (наверняка у вас там в школе тоже информатика была, она вроде обязательна, но учителя в школах обычно никчёмное говно и не умеют учить, а школота не хочет учиться, поэтому на уроках чаще тупо в игрушки играют, а задания проходят списыванием у единственного умника в классе).
Аноним 28/02/23 Втр 21:55:39 867185 467
>>867181
>Ты опять ничего не понял, лол. Тема - всего одна. Это разработка компьютерных игр
Тем - полно. Поиск пути, процедурная генерация, стратегии реального времени, тысячи тем можно раскрыть.
Ты ничего не понял - и накатал стену текста, поучая других.
Аноним 28/02/23 Втр 22:07:02 867190 468
>>867185
Когда же уже найдётся охуенный чувак с преподавательским опытом, который в русском сегменте запилит годные мини-видосы минут на 10 по всем этим прикладным темам, начиная с подробного разбора нод. Вот прям уроки по нодам. Урок по ноде ригидбоди, все свойства, всем методы, типичные примеры использования и т.д. Чтобы можно было зайти в поисковик, набрать ноду и получить исчерпывающий видос по ней.
Аноним 28/02/23 Втр 22:17:29 867202 469
>>867185
>Поиск пути
RTFM. Я серьёзно, RTFM.

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

>стратегии реального времени
Ну охренеть, может тебе сразу готовую игру дать, чтобы тебе вообще ничего делать не нужно было? Просто скачаешь и будешь играть.

>можно
Но не нужно. Почему не нужно - см. >>867181

>>867190
>Вот прям уроки по нодам.
https://docs.godotengine.org/en/stable/classes/index.html

>Урок по ноде ригидбоди, все свойства, всем методы, типичные примеры использования и т.д.
https://docs.godotengine.org/en/stable/classes/class_rigidbody.html

>Чтобы можно было зайти в поисковик, набрать ноду и получить исчерпывающий видос по ней.
Нажми в редакторе F1. Попробуй, это не больно.
Аноним 28/02/23 Втр 22:18:39 867203 470
>>867202
Я тебя ничего не спрашивал.
Аноним 28/02/23 Втр 22:22:11 867210 471
>>867202
> Нажми в редакторе F1. Попробуй, это не больно.
Я это всё читал, знаю. Мне видео хоца.
Аноним 28/02/23 Втр 22:25:06 867212 472
>>867203 >>867210
А я не тебе на личную почту пишу, а на публичный форум. Если не хочешь, чтобы я тебе тут писал, то свои влажные фантазии о видеоуроках на каждый пук высказывай ютуберам в комментариях под их видео, как делают все дети с их дебильными просьбами "зделойте туториал как нажать на иконку додод на робочим стале, а то я нажимаю мышкой а он нинажимаица((((("

А потом такие публикуют статьи про то, как их засосало в водоворот рекомендаций Ютуба и они так и не смогли ничего сделать на практике, ведь всё время у них уходило на просмотр туториалов...
Аноним 28/02/23 Втр 22:30:27 867217 473
>>866873
> Так, тут кидаем эту ноду, потом объясню. Здесь добавляем этот код. Ну тут, карочи, э. Скачиваешь ассеты по ссылке в описании. И вуаля! Ты. Сделал. Свою. Первую. Игру.
>Спешу расстроить. Не "ты", не "сделал", не "свою" и увы, не "игру".
Ты приходишь к плотнику на мастеркласс. Он дает тебе бруски, доску, гвозди, молоток. Ты сколачиваешь их по образцу. Да, ты не полировал бруски, не выращивал древесину, не отливал гвозди. Ты не изобретал свой дизайн табурета.
Но, тем не менее, Ты. Сделал. Свой. Первый. Табурет.
Да, этот табурет такого же дизайна, как показанный плотником. Ты не делал из него кресло или шезлонг, потому что тогда ты слишком отошел бы от туториала и не знал бы, если где-то ошибся. В следующий раз ты можешь выточить фигурные ножки и перекрасить их, это уже будет твоя кастомизация.
Да, он кривенький, потому что ты сначала не тем боком поставил ножку, а еще ты пропустил отступ между гвоздями и пришлось переделать.
Да, ты не стал гением инженерной мысли и не умеешь рассчитывать сопромат, ты просто смог повторить что-то по образцу.

Но можешь выдыхать, новичок. Ты сделал свою первую игру, просто вставив ассеты в движок, и переписав код с туториала. Это - и есть твоя работа на данный момент.
Аноним 28/02/23 Втр 22:32:19 867218 474
>>867212
Да, просто ты пишешь фигню. Тебе умные люди объясняют, а ты не слушаешь. Но мне то пофиг, твои проблемы.
Аноним 28/02/23 Втр 22:34:17 867220 475
>>867212
Ладно, не злись. Я просто мимокрокодил.
Аноним 28/02/23 Втр 22:35:03 867222 476
Аноним 28/02/23 Втр 22:36:01 867223 477
Аноним 28/02/23 Втр 22:40:38 867224 478
Аноним 01/03/23 Срд 00:20:49 867253 479
>>867217 >>867218 >>867220 >>867222 >>867223 >>867224
Семён, ты чего разбушевался-то? Весна только начинается, подожди немного для приличия.

>Табурет
>дизайн табурета
Проблема твоей аналогии в том, что плотник - это ремесленник, а инди-геймдев - это творец, то есть дизайнер табуретов, стульев, кресел, диванов, столов, тумбочек, кроватей, шкафов, садовой мебели и ещё очень большого количества вещей из самых разных материалов. Плотник может сделать табурет по ГОСТу №такому-то от такого-то года и больше ничего не умеет, да ему и не нужно, он живёт, зарабатывая изготовлением одних и тех же табуретов 30 лет подряд, а в инди-геймдеве такое не прокатит - ты либо дизайнер-творец всего что только может быть, либо идёшь убирать мусор под столами галерных рабов в кубиклах. Нет, если ты хочешь занять место Петровича в кубикле и делать одну и ту же 3D табуретку ближайшие 1.5 года, пока тебя не заменят из-за устаревания технологий, то вперёд и с песней, но мы не в юнити-треде, так что по умолчанию занимаемся инди-разработкой, а не изготовлением одних и тех же табуретов.

>фигурные ножки и перекрасить их
А потом ты создаёшь очередной тред/статью:
>"я пять лет делал 9001-й гениальный платформер-говоломку по самому популярному туториалу, аккуратно перекрасив все спрайты в приятные (мне) цвета блевоты, а ему всего 3.5 отзыва написали, из которых полтора я купил у знакомых, а ещё два отрицательные во время распродажи со скидкой 99% написали, короче, инди-геймдев мёртв и больше не воскреснет, ваши игры никому не нужны и вообще вы ничего не добьётесь, мой пример тому идеальное подтверждение".

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

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

А сейчас ты скажешь "тебе разные люди пишут" и доставишь нотариально заверенный скриншот с (You)...
Аноним 01/03/23 Срд 00:32:29 867257 480
1607562590383.png 9Кб, 761x73
761x73
>>867253
>Проблема твоей аналогии в том, что плотник - это ремесленник, а инди-геймдев - это творец
Ничто не мешает плотнику быть творцом и изобретать мебель. Если тебе не нравится плотник - поменяй на кузнеца, к примеру. Работа кузнеца сейчас - это творить узоры для заборов, например.
>Т.е. ты полностью одобряешь создание тысяч совершенно никчёмных ассет-флипов
Я полностью одобряю, что человеку, который раньше не делал табуреты, дали компоненты, и он сам их собрал инструментом, научившись делать первый шаг. Что он будет дальше делать - изобретать свои шезлонги, или работать в кубикле - это сугубо его дело как свободного человека.
>А сейчас ты
Ну раз ты сам просишь.
Аноним 01/03/23 Срд 00:55:58 867265 481
Сап, анонсы. Вопрос об обучении через ИИ, т.к. можно спросить любой вопрос и она ответит с примерами. Использовал notion, но там ограничение в 20 запросах. Есть ли бесплатные?
Конечно, можно создавать аккаунты после истечения 20 запросов, но это как вариант.
Аноним 01/03/23 Срд 01:13:36 867266 482
>>867257
>Ничто не мешает плотнику быть творцом и изобретать мебель.
Не мешает. Но ньюфагу показывают, как сделать простую табуретку по готовым чертежам, а потом этот ньюфаг носится с этой табуреткой, повторяя её раз за разом практически без изменений, и ноет о том, что готовых чертежей на другую мебель никто почему-то не даёт. А его мечта не табуретки делать, а какие-нибудь небоскрёбы строить, да только готовых чертежей опять-таки не дают.

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

>Если тебе не нравится плотник - поменяй на кузнеца
Лучше сразу на бондаря, чтоб ассоциация с ассет-флиперами была более очевидной:
https://ru.wikipedia.org/wiki/Бондарь

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

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

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

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

>>А сейчас ты
>Ну раз ты сам просишь.
Чувства юмора у тебя нет, так и запишем...
Учи мемы, чтобы не быть баттхёртом)))
Аноним 01/03/23 Срд 01:20:55 867268 483
>>867266
Нет никакой ошибки, анон. У меня жена - художница сама научилась писать скрипты.
Аноним 01/03/23 Срд 01:37:21 867270 484
>>867268
>художница сама научилась писать скрипты
>сама
В каком смысле "сама"? Я не против самообучения, я против тупого бездумного следования тупым туториалам, в которых тебя учат пользоваться готовыми компонентами, но не учат собственно реальной разработке, без которых умение использовать готовые компоненты бесполезно.

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

>>867265
>Вопрос об обучении через ИИ
Это точно не шутка? Иди в /ai/ поспрашивай, лол. Только шизов там не слушай...

>она ответит с примерами
Самоуверенно и с максимально умным видом, наполнив текст морем заумной повторяющейся воды, лишь бы дать хоть какой-то ответ, даже если он будет совершенно ошибочным по причине отсутствия данных для хотя бы минимального правильного ответа. А ты, дурак, поверишь и будешь носиться со скриншотом, говоря "ууу, а ИИ вон чё сказал, я вам не верю, ИИ не может врать". Подожди ещё несколько лет, прежде чем появится настоящий разумный ИИ, а сегодняшние нейронки бесполезны для чего-то кроме развлекательных чатботов, сочиняющих всякий бред.
Аноним 01/03/23 Срд 01:44:49 867271 485
>>867270
Архитектуре мало где учат вообще. Да и у игр простая архитектура. Ее то как раз автор туториала может дать. Вон экскраулерам из соседнего треда нужна что ли сложная архитектура? Я понимаю что ты программист который делает свою гта с машинками, но не надо проецировать прям на всех, тем более начинающих.
Аноним 01/03/23 Срд 01:58:23 867273 486
>>867271
Буквально код комплит открыл, там все написано.
Аноним 01/03/23 Срд 02:20:44 867279 487
>>867271
>Да и у игр простая архитектура. Ее то как раз автор туториала может дать.
В том же Godot достаточно много способов сделать даже самую простую игру, и не все способы эффективны, удобны и гибки в долгосрочной перспективе, тем более всё зависит от конкретного проекта. Автору туториала неизвестно, какую игру хочет сделать ньюфаг, он просто даёт один из возможных вариантов решения простой задачи. Нет одного общего решения для всех и каждого. Если тебе просто прототип на коленке слепить и забыть о нём, то ладно, но что, если ты всерьёз хочешь заняться... А многие вкатываются с серьёзными намерениями, даже если ничего изначально не знают.
Аноним 01/03/23 Срд 02:27:11 867288 488
>>867158
>успеть к GDC, наверняка там багов выше крыши
Если это поднимет популярность движка, то жертвы оправданы и баги простительны. Выше популярность > больше заинтересованных > больше инвестиций > быстрее разработка, внедрение фич, фикс багов > выше популярность... Все только выиграют, ну, кроме тех, кого привлекало работать на маленьком непопулярном движке, известном и понятном лишь "избранным". Но для них полно других опенсурс движков, многие из которых всё ещё более-менее живы...

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

ИМХО, косяк Godot, который меня изначально напрягал и теперь напоминает о себе, в его сравнительной монолитности. Да, ты можешь его скомпилировать из исходников без части модулей, но перед ньюфагом или любителем без желания копаться в C++ предстаёт монолитный движок. Нельзя на ходу сбросить лишнее, и если основной прицел будет на ААА, для рядового инди лишнего будет всё больше и больше. Если вокруг движка будут скапливаться крупные шишки, они будут лоббировать нужные им фичи, а это будет ещё сильнее отталкивать новичков и любителей. По причине нежелания копаться в C++ годного форка от таких любителей не дождёшься, и поэтому движок может скатиться в очередную элитную подстилку под геймдев корпорации, как какой-нибудь анрил, или кто там ещё из крупных остался. Т.е. с выходом 4.0/4.1 движок может перестать быть тем тёплым и ламповым, которым был до этого. Зря беспокоюсь? Вроде состав разработчиков за эти годы не особо поменялся...
Аноним 01/03/23 Срд 02:42:26 867301 489
Аноним 01/03/23 Срд 04:21:36 867316 490
>>867288
>лишь бы подлизнуть производителям видеокарт и графодрочерам, а игры-то тут при чём вообще?
Вулкан же вроде улучшает производительность, не?
Аноним 01/03/23 Срд 09:33:44 867330 491
Аноним 01/03/23 Срд 14:40:39 867485 492
1677670838871.png 9Кб, 707x90
707x90
>>867253
Задавайте свои ответы.
Аноним 01/03/23 Срд 15:41:24 867528 493
1647256683991.png 107Кб, 1329x929
1329x929
>>867330
А смысл? Штука давно заброшена (в движке много изменений за 8 месяцев то), а когда была не заброшена, я ее щупал и она была так себе по юзабельности (там надо открывать нелепые окошки со своими интерфейсами, которые еще и падали или портили сейвы), да и код там вроде не высшего качества.
Помню автор с братом-художником пилил 3д паркур, но похоже забросил и вообще на уе4 перешел куда-то работать.
Аноним 01/03/23 Срд 16:01:58 867538 494
>>867528
Что посоветуешь взамен?
Аноним 01/03/23 Срд 16:06:00 867543 495
Годаны, я тут подумал, в движке есть возможность добавлять свои шаблоны скриптов, в дополнение к искаробочным. Кто пользовался этой фичей? Планирую сделать шаблон-стейтмашину себе. С чего начать?
Аноним 01/03/23 Срд 16:30:31 867557 496
>>867538
А что тут советовать? ECS будет производительным только если встроен в движок, который строится вокруг него.
Иначе у тебя просто компоненты и системы для удобства дизайна.
Так что - либо просто берешь любой аддон на гдскрипте, какой понравится. Либо пишешь свой, банально на уровне - если добавлена нода Jumpable, то выполнять ее скрипт, добавляя-удаляя ноды ты меняешь поведение объекта. Либо подключать С/С++/Rust/C# либы, я лично пользовался flecs.c. Может быть они даже дадут какое-то ускорение если там чисто рассчеты например игровой логики, баффов.
Аноним 01/03/23 Срд 17:46:10 867621 497
image.png 2Кб, 439x395
439x395
После моего последнего ответа прошло много времени >>866625.
Вы продолжаете спорить не давая полезную пищу для размышления. Поймите что если человек хочет создать игру собрав её из чужого кода, значит большее ему не нужно! Он не осилит ваши сложные идеи!
Аноним 01/03/23 Срд 18:16:41 867633 498
>>867621
Мы просто любим попиздеть ни о чём. Не парься и делай себе игру.
Аноним 01/03/23 Срд 20:06:00 867697 499
Аноним 01/03/23 Срд 20:20:32 867705 500
>>867697
Как раз к бамплимиту
Аноним 01/03/23 Срд 20:54:02 867722 501
>>867705
Ну мы два треда назад решили перекатываться на 600 - 700 постах. Или чо, прям ради четвёрочки перекатить?
Аноним # OP 01/03/23 Срд 20:56:09 867724 502
Короче, щас схожу проверю. Если мой проект и на релизной четвёрке будет рандомно подвисать при закрытии окна, то перекат будет через 100 постов.
Аноним 01/03/23 Срд 20:56:29 867725 503
>>867722
Думаю резонно вполне в качестве исключения
Аноним # OP 01/03/23 Срд 21:01:37 867726 504
>>867725
Ждём-с, пока шаблоны подкачаются.
Аноним # OP 01/03/23 Срд 21:07:28 867727 505
1677694049101.png 28Кб, 770x354
770x354
В ожидании Годо...
Чот у них ЦДН видимо напрягся. Все качают.
Аноним 01/03/23 Срд 21:23:24 867738 506
1677695002488.png 789Кб, 1253x727
1253x727
1677695002504.png 802Кб, 1259x726
1259x726
Жаль, что амбиции у ребят с годами поумерились. Сравните фоновые пикчи.
Аноним # OP 01/03/23 Срд 21:29:28 867743 507
>>867724
> Если мой проект и на релизной четвёрке будет рандомно подвисать при закрытии окна, то перекат будет через 100 постов.
Подвисает.
Ну ладно. Всё таки релиз. Надо.
ПЕРЕКАТ Аноним # OP 01/03/23 Срд 21:35:51 867752 508
1677695751974.jpg 29Кб, 382x317
382x317
Аноним 01/03/23 Срд 21:36:34 867754 509
Аноним 02/03/23 Чтв 01:58:38 867884 510
>>867727
Там вроде с гитхаба скачивается теперь.
Аноним 02/03/23 Чтв 01:59:05 867885 511
1567493086331.png 343Кб, 621x419
621x419
Ответить в тред Ответить в тред

Check this out!

Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов