Годнота от анона • Для приверженцев опенсорца существует возможность распространять проекты в незапакованном формате. Просто скачай темплейт с оф.сайта и положи экзешник/эльфешник в папку с проектом, этого достаточно. Имя файлу можно задать любое. Дополнительно можешь вшить свою иконку в экзешник. После этого, запустившийся файл темплейта обнаружит рядом с собой файл 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://youtu.be/EmQBLxxPV3E Переводим предпочитаемой нейросетью. У кого своя мясная на инглиш заточена, а у кого электронная из интернетов.
>>873237 >Переводим предпочитаемой нейросетью >мясная на инглиш заточена Похоже, ты только один язык знаешь, поэтому поясню лично для тебя: когда человек изучает второй язык, ему больше не нужно переводить с этого второго языка на свой родной. Твоё восприятие перестраивается и ты начинаешь понимать текст и речь на другом языке точно так же, как на родном, без перевода с языка на язык. Если ещё и говорить на втором языке научишься, то точно так же просто говоришь на втором языке, а не переводишь с родного на чужой. Второй язык врастает в тебя настолько, что ты можешь размышлять на этом втором языке, ведя внутренний диалог на нём без перевода на родной. В это тяжело поверить, когда ты ни одного языка кроме родного не знаешь, но на практике для такого уровня освоения не нужно даже обладать богатым набором слов; я по-прежнему вынужден иногда обращаться к словарю с некоторыми незнакомыми словами и путаюсь при построении предложений, но в пределах знакомых слов всё ощущается почти так же естественно, как родной русский. Переводчики, кстати, так и переводят - сначала они понимают суть сказанного на одном языке, как если бы это была родная для них речь, а потом выражают это своими словами на другом языке, опять же как если бы это был родной язык. Поэтому автоматические переводчики дико фейлились до прихода алгоритмов, способных отделить суть текста от конкретных слов и языковых правил, а затем описать эту суть словами и правилами другого языка - ранние переводчики переводили текст дословно без понимания сути и поэтому результат был очень далёк от желаемого, суть текста легко терялась.
Алсо, сегодня как нельзя проще изучить новый язык благодаря этим нейросетевым чатботам, т.к. они знают язык лучше онлайн-переводчиков и могут выполнять роль учителя языка. Пусть у них большая проблема с памятью и ограниченным контекстом, но изображать общение с носителем языка у них получается вполне достойно, так что как минимум тренировать текстовое общение на чужом для тебя языке с ними можно. Главное не воспринимать слишком буквально, они часто бред выдумывают, даже если формально всё правильно написано.
Прости за оффтоп, но ты триггернул меня.
получал "3" за присутствие на английском в школе, полностью забив на него, изучил язык по играм и руководствам к различным техническим штукам
>>873349 >Твоё восприятие перестраивается и ты начинаешь понимать текст и речь на другом языке точно так же, как на родном Сильно зависит от контента, видос ОПа я понимаю спокойно, но вот например в сериалах/фильмах все говорят как уебаны дегроды и нихуя не понятно вообще.
>>873349 Ты что такой душный? Очевидно же, ОП выразился так, потому что прикольная аналогия, типа нейронка цифровая, нейронка мясная, йоу. Просто фигура речи же. Ты б ещё приебался к тому, что мясная нейронка вообще-то не состоит из мышечной ткани, а значит не может называться мясной.
>>873509 Не, вот этот хуй душный. Да ещё гундосый. Дропнул просмотр.
>>873504 Карочи, по пунктам. Фичи пилятся. Всё будет уже в этом году. Начинаем пилить прототипы игор. К релизу ваших игор подтянется 4.5. Если ты ждал момента, когда начать, этот момент - СЕЙЧАС.
Редактор полигонов сейчас конечно не очень, каждый фейс вручную прокликивать надо. Для сравнения фейс Димасика в бленделе анимировал, в годоте бы задолбался такой меш воссоздать.
>>873665 Они взяли курс на нативную интеграцию с блендером и другими опенсорцами в открытую экосистему. Такшта забей на встроенный %редакторнейм%, просто укажи путь к блендеру в настройках большого редактора и юзай бленд-файлы как сцены. Речь о четвёрке.
>>873709 Практика говорит об обратном. Бывают полностью нулевые игры, которые собирают миллионы, потому что в них вбухана куча рекалмы. Бывают норм игры, которые собирают десяток отзывов.
>>873723 Да это вообще не игра. Как и прочие подобные. Там еще была игра где ты просто нажимаешь 1 кнопку и тебе показывают как будто ты выиграл баксы.
>>873753 Нахуя тебе гайды именно по 4-ке? Что с тобой не так? Я могу открыть гайд со знаменитого сайта про гейм-паттерны и прямо оттуда хуярить код в годот, на лету переводя из сиобразного псевдокода в гдскрипт. Почему ты так не можешь? Почему тебе требуется, чтобы тебе всё разжёвывали по 300 раз?
https://youtu.be/dMYv6InQgno Пиздец. пытаюсь вкуривать вот этот туториал, но ощущение, что просто повторяю, как макака. Есть что-то более упрощенное? Этот кажется слишком перегруженным для небольшого проекта
Годаны, как найти это место? >emit_signal: Error calling method from signal 'my_signal': 'Node(foo.gd)::bar': Method not found.. Через поиск по файлам пытаюсь найти - нету. Я тот сигнал уже отовсюду выпилил, а он всё равно вызывается как-то где-то. Как найти, где именно? Раздражает ошибка.
>>873982 Ну как обычно, стоило спросить, ответ нашёлся. Открыл подозреваемую сцену, и там мне ошибка жёлтым показывает, какая именно нода её вызывает. Оказывается, то был не мой сигнал, а встроенный с таким же именем.
>>874148 Да ты прям как математик посчитавший овец в анекдоте. Я в блендере и сам сейчас с ними работаю, только результат то экспортируется одним куском. А тут можно: - если будет рантайм поддержка, процедурно генерировать на лету. - можно прикрутить оптимизацию мультимешем. Например если у тебя домики расставляются, или подоконники на них, ит.д.
>>874158 Мне нужна, я сам собирался делать, а сейчас увидел что он делает и ему помогают. То есть уже минимум 3 людям нужна. Чини свою логику, в общем.
>>874600 Хорошо, конечно. А там будут: 1. Геологическое моделирование 1.1. Ветряная эррозия 1.2. Жидкостные эррозии 1.2.1. Водные 1.2.2. Лавовые 1.3. Слои породы 1.4. Заполнение чанка водой с формированием озёр и рек, стекающих к уровню океана. 1.4.1. "Пляжная" эррозия - формирование пляжей на основе карты воды, созданной в 1.4. 2. Булевы операции. 3. Эквалайзеры. 4. Корорайзеры. 5. Формирование карт-масок с выходными данными на каждом этапе. 5.1. Сплатмапы заполнения поверхностей. Если будет всё это бесплатно-опенсорсно, это будет просто охуенчик. И тогда останется один вопрос: 6. А там будет процедурная состыковка сгенерированного террейна между чанками (тайлами)? Бесплатно?
>>874643 Не знаю пока, возможно и будет. Но вообще на многое из этого я видел алгоритмы и код, так что даже если есть только хейтмап, это все реализуемо.
>>873235 (OP) Хочу вкатить после юньки, на сколько разница большая в интерфейсах и скриптах? На 2д платформер по времени +- сколько уйдёт чтоб разобраться в архитектуре и тому как что лучше делать? Доки, примеры, так же всё в гугле пишется и без гемора находится?
>>874651 > на сколько разница большая в интерфейсах и скриптах? В зависимости от твоего расположения на кривой гауссового распределения функции Даннинга-Крюгера, разница может быть как кардинальной так и незначительной. Если попроще, то в обоих движках есть майнлуп с коллбэками, векторы есть, линейная алгебра реализована, в этом совпадает. Но по организации объектной системы, в юнити используется композитный подход (есть только один объект и куча компонентов к нему), а в годо используется наследуемый подход (есть много объектов, наследующихся от главного объекта, выполняющих свои задачи). Однако композитный подход не запрещен. > На 2д платформер по времени +- сколько уйдёт чтоб разобраться в архитектуре и тому как что лучше делать? Рабочий день. > Доки, примеры, так же всё в гугле пишется и без гемора находится? Всё есть. Всё как в шапке написано.
>>874600 ебать видос пропердывается. вроде у автора 60 фпс, а запись лагает пизда, че за хуйня, че за инвалид там это реализовывает, походу после него еще тонную фиксанов нужно будет делать
>>873235 (OP) >Прекомпилер шейдеров: https://godotengine.org/asset-library/asset/977 С версии 3.5 больше не нужен. А вот и не угадали. Я сейчас пилю экспорт в веб (то что в 4-ке называется Compability render), а там же старый добрый OpenGL, и что ты думаешь, пришлось стряхивать пыль с аддона. Благо что годот сам сконвертировал .tscn и .gd и все само заработало (я для этого создаю новый проект в 3-ке, кидаю в него то что хочу сконвертировать и открываю 4-кой)
Алсо не уверен что именно его аддон будет опенсорсным - для 3 он распространяет кастомный билд годота, но сорцы модуля и шаблон экспорта - платные. Посмотрим, как поступит с этим.
>>874872 у объекта есть материал, material_override, set_surface_material или что нить подобное, ему присваиваешь загруженный шейдер. Примерно так var shader_material = ShaderMaterial.new() shader_material.shader = load("...shader") mesh_instance.material_override = shader_material либо var surface_index := 0 mesh_instance.mesh.surface_set_material(surface_index, shader_material)
>>874870 Есть, не пробовал, есть некоторые сомнения насчет них. Видел что есть подключение к openAI, но там платные запросы к API, и во вторых, chatgpt 3 учился на старых материалах, он вряд ли напишет под годот 4, а что умеет гуглить chatgpt 4 я хз.
Годаны! В шапке стало слишком много ссылок. Что делать будем? Я тут погуглил, есть сервисы хранения ссылок. С одним из таких сервисов шапка будет выглядеть как-то так:
Добро пожаловать в тред любви, взаимопомощи и ...!
анонасы, а я смогу на данном движке сделать большой не рандомизированный 2D мир (вид сверху) без пролагов? может кто видел уже готовый ассет? пока думаю делать разделение мира на квадраты, где ближайшие к игроку будут подгружаться
>>875148 Ты на реализацию чарков потратишь много времени, готовых решений нет, есть отдельные куски демок и видео от васянов зарубежных, где это реализовано. Если готов потратить месяцок на чанки, то милости прошу, пробуй.
>>875158 Пока ходил наливать чай, уже придумал решение на 10 минут для новичка. Называем сцены Chunk1c1, по периметру расставляем Area которые загружают сцены ChunkXcY, где X к примеру текущий + 2. Текущий получать в скрипте распарсив имя сцены. Можно сделать 1 сцену-префаб и рисовать потом все на основе этой.
>>874896 Ля какая красота! Не сижу на годоте, просто захаживаю почитать тред, а тут такое! Расскажи сложно и бесплатно замутить такую страничку? С радостью бы сделал такие шапки для пары тредов. И почему раньше до этого никто не додумался?
>>875162 > Расскажи сложно и бесплатно замутить такую страничку? Просто перейди там по основному адресу. Всё бесплатно, без смс, но с регистрацией, без этого никуда. Иначе как ты будешь изменения изменять на своей странице.
Нормально ли синхронизировать проекты между компьютерами с помощью обычного бэкапа на внешний жесткий диск? Просто у меня после такой "синхронизации" почему-то годот не увидел добавленные папки и сцены, пришлось заново импортировать проект. Но воспроизвести этот "баг" мне не удалось, во второй раз годот все увидел.
>>875190 Да я раньше, когда на юнити сидел, на Гугл проекты бэкапил. Потом гугл изменил программу синхронизации, что то там перенастраивать надо было. И я подумал, надо на своих дисках все держать, потому что сторонний сервис может внезапно прикрыть лавочку. Наверно вернусь к гугл диску. Но меня все равно буспокоит, что это за баг у меня вылез. И не могу ли я похерить проект, тупо копируя все новые файлы с одного компа на другой? Может там какие-то служебные файлы копировать не надо.
>>875208 Надо смотреть в сторону Syncthing + rclone или подобных вариантов. Т.е. опен сорсная прога делает бэкапы в любые доступные облака, причем с возможностью шифрования, чтобы твои ценные ассеты не утащили.
Подскажите с вьюпорт текстурами - Делаю по гайду (https://www.youtube.com/watch?v=Xq0wgrCmnyw) с поправками на гд4. Импортнул из блендера модель, хочу к материалу прицепить текстуру. Добавил SubViewport, в него канвас лейер с лейблом и цветным прямоугольником. Цепляю этот вьюпорт к вьюпорттекстуре нужного материала - он встает непонятно как и криво, а у челика из видео сразу как надо и заебись. Что я не так делаб?
>>875378 Требует напильника, т.к. ноги могут не заметить пол, и паук продолжает ползать по сфере, и наоборот, может пройти по полу сквозь сферу. Пока не знаю как исправить
Возможно ли отрисовать на плоскости такую же сетку, как рисует годот в редакторе. Простейший вариант с шейдером дает некрасивые результаты, линия становится прерывистой.
>>875646 Можешь попробовать рисовать при помощи MultiMeshInstance, я такую делаю при помощи него
Суть - создаёшь прямоугольник или даже параллелепипед, находишь его центр, находишь центр меду двумя крайними точками поверхности, затем туда перемещаешь его при помощи multimesh.set_instance_transform_2d( _index, _transfo ) Затем растягиваешь на расстояние, равное половине расстояния между точками Потом закрашиваешь Непонятно как поддерживает сглаживание, у меня не получилось его врубить
Второй вариант есть Line2d, просто создаешь отдельные линии между двух точек и всё, поддерживает сглаживание
Какой правильный подход к показу меню (с выезжанием) по нажатию на кнопку?
По нажатию на кнопку у меня меняется флаг. А анимация происходит за счет постоянной проверки в _process(delta) значения и изменение флага. Это же тупо. Есть другой подход?
>>875661 >за счет постоянной проверки В любом языке программирования и движке всегда плохо то что засунуто в ежекадровую обработку. Идеал это вызываемая функция с событием. Всегда и везде надо стараться уменьшить количество кода который обрабатывается каждый кадр.
>>875661 Да много вариантов Например нарисовать нужное движение в AnimationPlayer Или добавлять ноду с таким кодом только когда надо двигать. Или, например, можно отключать process через set-process(false) и включать только когда надо Но в конце концов если сделал как у тебя то ничего страшного - компьютер наверняка вывезет десятки тысяч таких кнопок. Если желаешь советов по мелочи Можно написать settings-show = not settings-show в одну строчку Не стоит делать $"..", ведь можно один раз в ready() запомнить переменную par = get-parent() Вообще вроде как считается не очень управлять родителем Забавный факт - если ты переставишь родителя и ребенка, то все вообще обойдется просто position, т.к. ребенок и будет относительно родителя.
Годаны, а вам не попадалось синтезатора под Годот? Ну, то есть, в теории можно написать самому при помощи AudioStreamGenerator, но лично я такое по скиллам не осилю. Да, есть gdsfxr, но им генерировать музыку проблематично. А вот хотя бы простенькую пищалку, чтобы умела играть треугольник и квадрат, в идеале бы ещё с огибающими, было бы прекрасно. Но чёт не нашёл ничего.
>>875698 >автор честно признался что там гумнокод Ну да так-то. Код-то, в общем-то, норм, но весь на гдскрипте. А на гдскрипте я и сам могу. Так-то вопрос возник, потому что в доках пишут: >AudioStreamGenerator >Note: Due to performance constraints, this class is best used from C# or from a compiled language via GDNative. If you still want to use this class from GDScript, consider using a lower mix_rate such as 11,025 Hz or 22,050 Hz.
>>875705 Из поста было непонятно что ты на гдскрипте и сам можешь и тебе нужно на чем то другом. Ну тут думаю тоже не проблема - принцип остается тем же, гдскрипт играет из буффера, а твой код формирует буффер - но тут можно поискать и на c# либы, и на с++, думаю там опций десяток будет - тебе же нужно просто заполнить массив, передав параметры ноты, это движконезависимая часть.
Что мы делаем с хайтмапами? Правильно, мы пишем шейдер с дисплейсом, который из хайтмапа создаёт террейн. Террейн без пещер.
Но что если вместо того чтобы писать шейдер, мы с вами возьмем Gridmap и пользуясь данными heightmap заполним его кубами? А что если мы заполним его не кубами, а заранее заготовленными модельками булыжников? Кто-нибудь так делал?
>>875772 Фишка готовых аддонов с террейном - готовые лоды, возможно клипмапы, а мультимеш и гридмап вроде бы не умеют в лоды и в окклюжен и там надо самому делать? Я правда давно с этим разбирался, пару лет назад. Кажется тогда надо было несколько мультимешей на разные лоды, и при этом обновлять данные когда персонаж подходит ближе.
>>875681 Я на 4ке большой 3д проект пилю, но для браузера там тени пока не дописали. Ну и весить то билд побольше стал. Так что я хз даже, вроде как и можно делать навороченные 2д игры и даже простые 3д гиперкажуалки, но их с таким же успехом можно и на 3.6 делать.
Кстати насчет автолодов 4-ки. Сегодня импортировал модельки и получил вот таких бетменов, если есть одежда то еще хуже. В общем решается так - клик на .glb и реимпорт с убранной галкой на Generate LODs. Подозреваю что генератор не умеет работать с костями, а возможно и блендшейпами, так что с персонажами пока только в фулл разрешении. Для домиков типа кубик вроде проблем не наблюдал
>>875798 Сейчас никак не делаю, просто закинул модель и чуть необосрался. Раньше делал в 3 годоте как учили - несколько мешей вручную и переключал их скриптом по on area entered. Возможно тут так же придется, только переключать в 4ке лоды можно не вручную, а просто сделав одному объекту visibility range min-max до 5 метров, другому объекту от 4 метров до 10 и так далее.
>>875799 > лоды можно не вручную, а просто сделав одному объекту visibility range min-max до 5 метров, другому объекту от 4 метров до 10 и так далее
О, годно
Я вот хотел бы сделать игру типа Lands Of Lore 2 с воксельными объектами вокруг при помощи grid mesh или как там его, вообще авторы годо очень хорошо придумали tilemap и gridmesh, ну и я был очень доволен MultiMeshInstance, по сравнению с подобным в OPenGL просто супер легко
>>875794 Ну а что не кажуальное ты можешь придумать в 3д но без теней? Я то пилю с рассчетом что все таки хотя бы базовые тени допилят. Сейчас там просто иногда заливает все черными треугольниками.
>>875800 Гридмеш поначалу вызывает радостные эмоции, но потом понимаешь что если ты хочешь сделать улицу под 30 градусов то легко не будет. Можно конечно попробовать гридмап на город или городской район и ставить под нужным углом. Еще я как то скидывал набор городских тайлов где уже заложены некие кривые улочки
>>873235 (OP) Всем ку годотеры, подскажите, хочу сделать на годоте подобие игр на ренпи и куспе раньше которые были, но немного по приятнее визуально и не с такой лапшой кодом как там. Сам геймплей игры прост до безобразия, есть пара фонов, десяток спрайтов персонажей, диалог как в новеллах с кнопками ответов, и разные интерфейсы окон, ничего в реалтайме не будет делаться, только ожидая нажатия от игрока. Надеюсь понятно объяснил, такое сложно будет сделать и возможно?
>>875806 Есть новелмейкер или типа того, это отдельная прога А если годо, то ищи плагины чтобы не тратить время на создание всего этого и сразу делать твою задумку
>>875807 У меня своя задумка, и стандартные новелкомейкеры не подойдут точно. И плагины зачем? Всё сам хочу написать чтобы понимать как, что, куда идёт, она то на вид примитивная будет, но там много окон и взаимодействий, плагинами такое не реализовать.
>>873235 (OP) Годаны, кто реализовывал свечение отдельных объектов в проектах? Про glow в world environment в курсе, но что-то получается сомнительно. Вот есть отдельная сцена с врагом (ареа, спрайт и колижн шейп), добавляю так свечение, в итоге вся основная сцена игры, когда появляется враг, начинает светиться, как новогодняя ёлка, и фон, и гг, и предметы.
>>875812 2д? Так там вроде источники света есть. шейдеры опять же. С другой стороны ты пишешь про ворлдэнвайр, он вроде только для 3д же. В 3д сложнее , в каком то прошлом треде обсуждали. Легко только со сферой.
>>875819 Смотря, какой гейплей у тебя задуман. Рутмовшон подходит для игор с минимумом вертикальности. Если у тебя много паркура, лазанья по стенам то рутмовшон не справится.
Короче решил я значит значит сделать очень простой платформер (не спрашивайте зачем) И взял этот ваш годот...В целом всё понятно, однако я неудачник и пришел к моменту выхода новой версии поэтому в интернете нихуя нет.
Собтвенно вопрос: Есть characterbody2d , беру и делаю scale.x = -1 и весь персонаж разворачивается. У меня всё работает. Однако в интернете есть полно обсуждений, что вешать негтитвное значение в scale для физических нод нельзя. Иначе всё идёт в жопу. Но всё это датированно 2018-2022 годом. Собственно сейчас в новом godot4 это пофикшенно, и физ ножам можно задавать отрицательный масштаб или я просто что то не так делаю?
>>875818 > Сделаю позже. Идея прикольная, но почему-то 10 ФПС на объёме до 50,50,50 блоков. Если задавать объёмы больше - фепесы падают в нулину, блять. Без коллизий, без навмешей. Гридмап, блять. Оптимизированный октантами. Блять.
Или попробовать по честному вкл-выкл окклюжн где-то в настройках проекта Rendering > Occlusion Culling > Use Occlusion Culling , а лоды галочкой в импорте модельки, как я кидал выше скрин.
>>875848 Еще такая мысль - не знаю как у них сделана сортировка по объектам/материалам. Можешь попробовать еще сделать несколько гридмапов, но каждый в мешлибе содержит только один вид камня. Чтобы отрисовка точно шла одним батчем. Или вообще сравнить с мультимешем.
>>875887 Emission сам по себе не производит свет, он просто делает участок текстуры видимым в темноте, даже если объект в тени. А глоу на всю сцену может быть нежелательным. Нашел свой старый пост на тему с возможной эмуляцией >>850059 →>>850237 →
>>875851 > вкл-выкл окклюжн где-то в настройках проекта Rendering > Occlusion Culling > Use Occlusion Culling Включил. Немного фепсов прибавилось, но всё равно не продакшен-левел. Не впечатлило. Вот скрины с куллингом и одним кубом, в объёме 100/100/50 соответственно.
>>875892 Если ты хочешь рядом все освещать, то явно с помощью узлов динамического света. емиссион жеж и при запечке учитывается, так что хуй знает че тебе еще надо. Да, можешь заюзать шейдер с прозрачным градиентом. На твоих пиках так же юзается емиссион, ток еще юзается дублированная геометрия, вдоль нормалей сдвиг и полупрозрачность
>>875896 хз с чего ты решил что там эмиссия, в шейдере ее нет, а зеленый засвет на белой стене это действительно источник света. А дублированная геометрия слишком заметна в местах где она накладывается. По хорошему там надо что то с вьюпортами мутить, эмулировать стенсил буфер, но это долго и лень.
А, еще вспомнил в 4-ке добавили объемный туман, может быть с его помощью можно имитировать свечение. Только придумать как в шейдер передавать форму объекта (если это анимированный человек например)
>>875899 в 4 есть буфер глубины в 3 есть костыли, с вьюпортом и камерой Не до конца просто понимаю че ты хочешь сделать. Когда у тебя будет сцена построена со светом, без емиссона у тя будет все блекло, пока это незаметно пока ты там чета ковыряешь вне законченной композиции с выставленным светом
>>875906 Дело в том, что я не силён в математике. Если ты мне покажешь как сделать так, чтобы несколько гридов бесшовно принимали значения из одного шума, тогда сделою. Сейчас у меня была главная идея в том, чтобы был один грид, один шум, одна карта. А грид чтобы сам куллился автоматически. Он же там как-то хитро на октанты разбит, которые якобы куллятся и лодятся автоматически?
>>875905 Ты отвечаешь анону, который отвечал другому анону. Что хочет тот анон не знаю, а мои эксперименты начались с того, как сделать световой меч АКА лайтсейбр, в виде цилиндра, и чтобы на сцене можно было иметь два с разным радиусом свечения (что через глоу ворлдэнвайр вроде невозможно)
>>875907 >Если ты мне покажешь как сделать так, чтобы несколько гридов бесшовно принимали значения из одного шума, тогда сделою. В смысле, ты этот шум по частям и генерь на каждый гридмап. Все тоже самое как у тебя, только ты берешь шум не с 0 до н-макс размера твоей текстуры шума, а н-заданое. Например текстурка 256, а ты делишь все на 10, ну дык и дели 256 и получай значение каждого шага.
Так и так тебе нид разбивать все на сегменты, дабы их всегда можно было убрать из памяти\либо не рендерить и не напрягать комп.
>>875907 >якобы куллятся и лодятся автоматически? Мы так до конца в этом и не убедились. Тесты надо. >октанты По идее они и не помогут в случае 100 процентного заполнения объема, а только дадут оверхед. Ведь нарисовать надо все кубы, но при этом на каждый куб будут рассчеты. Октанты помогают в прореженной сетке, например если у тебя сеть дорог или хотя бы просто только поверхность террейна. > как сделать так, чтобы несколько гридов бесшовно принимали значения из одного шума Создать нойс в родительской ноде один раз и брать оттуда. А циклы проводить не от -25 до 25, а по частям.
>>875910 ЯННП. Какая текстура? Я взаимодействую с шумом через встроенный интерфейс. Код выше посмотри. Я получаю значение шума не на текстуре, а прямо в пространстве, через .get_noise_3d(i,j,k)
>>875913 В общем-то я уже сам нашёл ответ, как объединить несколько "чанков" гридмапов под одним шумом. Надо добавлять координаты самого гридмапа к координатам в сетках. .get_noise_3d(pos.x + i,pos.y + j, pos.z + k)
>>875913 и че? чем отличается от текстурки 2д ток в 3д? те же координаты, и их значения. бери и отрисовывай от 1,1,1 до 10,10,10 и т.д со смещением, то бишь координаты меняются со смешением и так раз за разом генерится
>>875917 я юзал мультимеши для мульонов пуль + синхронизация с физик сервером, пара косарей пуль на изи генерится, постоянно можно пересчитывать, то бишь супер быстро работает на перечитывание. Базарю, анону рили стоит пробнуть мультимеши, а физику юзать напрямую через физик сервер
>>875919 И кстати, я хочу отдельно заметить, что циклы в ready которые на скринах, выполняются очень быстро. Тормозит не вышеприведенный код, тормозит именно отрисовка готового статичного гридмапа.
>>875921 юзай мультимеши брат >>875920 гридмапа какая-то хуета помоему не? у тебя дравкалов пиздец много. при мультимешах у тебя такой хуйни не будет. они еще и быстро перерисовываются. если надо. могу найти код старый, мейби чета спиздишь оттуда для себя
>>875924 Было предложение его выпилить из 4-ки, но народ начал возмущаться. А по факту так и есть, он только совсем новичкам подходит которые собирают свою первую гташку по кварталам. Ну еще его можно юзать как массив для всякого астар, но можно и без этого обойтись.
>>875925 Без теней +10 ФПС, но повторюсь, как же без теней-то в 2к23. >>875926 > юзай мультимеши брат Придётся разбираться. >>875927 Окей. Ну я пока сам начну. Если что, потом сравним. >>875928 Похоже на то.
Держите аноны, можете попичкать код, генерить любую н-хуйню, при желании в апи можете посмотреть другие виды капсул для колизии Вызов функция вот, 1 значение вроде бы пакет сцены, на скрине показано что из себя представляет, оттуда берутся мешь все настройки для физик сервера 2 это координаты где будет спавнится 3 это исключения колизии, вроде нид указывать просто ссылку на просто объект аля rigidbody kinematic body и все, они будут исключатся и не будут сталкиват 4 это эффекты всякие при спавне, но я их не реализовал тогда func projectile(packed_scene : PackedScene, spawn_transform : Transform, collision_exceptions := [], _effects := [])
сорян, мейби говнокод, но я это делал года 3 назад, я не шибко какой-то йобо кодер
>>875932 Алсо дополню. Я это юзал именно для спавна гильз дабы на сцене было их тысячи с коллизией и т.д, без пропуков. Вы же можете это оптимизировать для себя подругому, без нужды допустим чтобы они выплевывались с н-скоростью, а были сразу статик, короче там массу настроек можно сделать
>>875911 На примере 3-ки. Если менять Power в emission, меняется цвет свечения, но радиус остается тем же. Если менять Intensity или Strength в Glow WorldEnvironment, то меняется интенсивность всего свечения - обоих мечей, фары мотоцикла, солнца, неба, аллаха. Изобразил в 2д как я себе представляю желаемое. Также желательно например чтобы можно было анимировать радиус только одного из них. Вулкан потестить сейчас возможности не имею, а в опенгл 4-ки Glow пока не сделан.
>>875941 Добавлю, что в случае лайтсейбров, ламп дневного света, можно попробовать придумать что то вроде 3д спрайта в котором рисуется 2д текстура, все же овал не очень сложная форма, но с персонажами такое уже не прокатит.
>>875941 А видимо все. больше вариантов не будет из стандартных. то бишь тебе придется развлекаться только со стандартным глоу, можно конечно в случае с персонажем в шейдере дублировать сетку и выдавить её по нормалям, накинуть емиссиона на это эффект, плюс с глоу поиграться дабы меньше переходов было видно. Я вот не помню, погляди в настройках, мейби там есть возможность увеличить качество глоу, а то оно у тебя рили рубленное.
>>875932 > пощупайте, если хотите Пощупал. Код зависит от синглтонов. Такшта либо тащи их, либо заведи полезную привычку описывать зависимости в комментах, чтобы сразу видеть самому от чего зависит код, либо не используй синглтоны (понимаю, сложно отказаться от удобства).
>>875975 > либо не используй синглтоны Не закончил мысль. Щас в туториалах на ютубе и как следствие в ассетах на ассетлибе, пошла мода вместо прописывания автолоада, прописывать export(NodePath) var в скриптах. Это явно показывает, что скрипту следует подсунуть правильную ноду для работы, и уже об этом не забудешь, и зависимость у кода будет явная.
>>875975 > Код зависит от синглтонов А, там физик delta из Global.time, дабы в простое Physics process не работал, или я даже хуй знает чем был мотивирован когда делал это, лол. тащемта сорян анончик >>875932
>>875977 Сорян, я хуй знает зачем ваще этот синглотон захуярил туды, лол, он там не нужен, можете просто delta из physics_process вывести в в глобал переменную скрипта >>875932
>>876059 Насчет б) насколько я понимаю стратегию развития, такие расширения будут только внешними. Но в этом случае модуль уже там скомпилирован в кастомный билд движка. а) просто подумал, что раз ты делаешь типа воксели, то почему бы не попробовать воксели и сравнить производительность.
>>876086 Не помню насчет нормального способа, но точно применял такие 1) генерировал скриптом на питоне файл с коллизиями, грубо говоря tscn же текстовый файл где можно по мелочи даже руками скопипастить 2) генерировал какие-то коллизии tool-скриптом, там конечно надо покурить api че кому назначать, но это реально, типа найти нужный тайл, взять его коллизию, назначить другому тайлу. Может быть есть что-то даже готовое в ассетах, давно 2д не чекал.
>>876098 Иногда да, я просто не люблю обезъянью работу, и если что то можно автоматизировать, я лучше час потрачу на тул скрипт, чтобы потом в любой момент копировать что-то, особенно если это надо повторить больше 16 раз. Редко конечно могу включить что то чилловое посмотреть в фоне и под это дело кликать. Но ска цена ошибки часто высока, приходится переделывать, возвращаться к пропущенным. Цикл в скрипте проще, если ошибся. просто правлю и еще раз прогоняю.
>>873237 И еще на тему root motion. Есть сейчас акутальный плагин для blender+mixamo+godot? Раньше я знаю был Godot game tools, но он подглючивал, и вообще слабо поддерживается для актуальных версий блендера и годота, там куча ишью, и свежего форка не нашел чего то.
А как можно сделать такую анимацию аима? Пока сидел на юнити реализовывал такое через проигрывание анимации в зависимости от положения прицела, но это на каждые ~10 градусов рисовать отдельный спрайт, с учётом того, что планируется несколько видов оружия и персонажей объем работы получается не маленький. Как это упростить можно? Была мысль сделать обычный аим как во всех гайдах для топ-даун шутера с преследованием положения мыши, а руки просто привязать к плечам и оружию, чтобы они болтались как сосиски, но не знаю как такое сделать в годот.
>>876309 Делаешь руки отдельно от тела, анимируешь либо скелетной анимацией, либо просто кодом поворачиваешь спрайт рук, который висит чайлдом во всём теле
>>876309 Тонна челов которые реализовывали подобный поворот оружия. Основная мысль в том, что у спрайта есть pivot и благодаря этому оружие вертится не от центра спрайта.
>>876309 >на каждые ~10 градусов рисовать отдельный спрайт Зато это красиво. Вообще сейчас есть способы ускорить этот процесс, рендерить в 3д, а еще нейронки. >руки просто привязать к плечам и оружию, чтобы они болтались как сосиски, но не знаю как такое сделать в годот. так ноды же вращаются относительно родительской. Ты можешь вращать ее через rotation, а можешь сделать что то вроде $Gun.look_at( get_local_mouse_position() ) - на самом деле чуть сложнее, поскольку надо бы брать позицию мыши из камеры, уже с учетом масштаба и сдвига. Это вообще за 5 минут делается. Или как анон выше сказал скелетную анимацию https://docs.godotengine.org/en/stable/tutorials/animation/2d_skeletons.html Но это уже позаебистее.
>>876317 >>876318 >Ты можешь вращать ее через rotation, а можешь сделать что то вроде $Gun.look_at( get_local_mouse_position() ) - на самом деле чуть сложнее, поскольку надо бы брать позицию мыши из камеры, уже с учетом масштаба и сдвига У меня сейчас так и сделано. Я не понимаю как сделать так, чтобы один конец рук был всегда привязан к рукоятке оружия, а другие концы рук всегда был привязан к плечам. Было бы проще, если бы руки были одной длины и просто сделать их родительским объектом для оружья, но они у меня разной длины т.к. спрайт в ракурсе 3/4
>>876209 Работает. Чуть чуть все таки пришлось доработать напильником. Воркфлоу стал побыстрее чем раньше. 1. Подготовить модель, с ригом. Можно с несколькими мешами (одежда, отдельная голова...). Тут же я масштабирую до нужного роста (около 1 метр 80 см) и применяю все трансформы, чтобы потом не возиться. Также переименовываю кости, если у них какие то дурацкие названия. Можно написать простой скрипт, если надо убрать префиксы типа ModelName_Hips 2. Экспортировать в FBX. Чтобы в миксамо видеть текстуры, в блендере надо при экспорте выбрать Copy и нажать рядом иконку коробки (упаковать) 3. Скачать с миксамо нужные анимации. Там есть целые паки, можно и их. В отдельных анимациях, галочку In Place ставить не надо, раз мы хотим Root Motion 4. Закидываем желаемые анимации в папку, туда же кидаем TPose.fbx, переименовываем анимации как нам надо, добавляем -loop если хотим зацикливание (это можно потом при импорте в годоте поменять). Idle я не делаю зацикливание, так как хочу запускать рандомные, а для этого знать когда закончилась анимация. 5. Запускаем скрипт, он создает .glb названный по имени папки. Закидываем в Годот, настраиваем дерево анимаций, любуемся RootMotionView нодой. 6. Почему то часто glb импортирует материалы как прозрачные. Не понял как запретить. Исправляю так - в Годоте дабл клик на glb, открываются опции импорта. Там нажимаю action - export materials. Выбираю .res вместо .tres, иначе создаются какие то неадекватные материалы по 80Мб и сцена грузится полчаса. Все, теперь можно редактировать прозрачность в материалах отдельно. Работы все равно дальше много, но скрипт позволяет пропустить все ручное прокликивание каждой анимации в блендере.
В чем заключался напильник для скрипта. Почему то все скрипты для миксамо подразумевают, что модель увеличится в 100 раз, поэтому анимацию уменьшают обратно в 100 раз. Но в моем случае с миксамо все скачалось один к одному как я заливал. Поэтому наоборот рут моушн топтался почти на месте. Решение - закомментировать в скрипте строчку которая делает скейл 0.01
Из непонятных технических моментов. Блендер при экспорте glb пишет что запекает анимации, потому что что то там не совпадает в кол-ве кейфреймов. Не знаю плохо ли что он запекает или пофигу. Еще предупреждает, что есть вершины, на которые влияет больше 4 костей (вроде так). Тоже не особо представляю стоит ли париться.
>>876326 По идее тебе надо что-то вроде 2-chain inverse kinematic Если я правильно понял твою проблему, что тебе надо чтобы одна рука в локте сгибалась.
Накатил плагин гита, чтобы не альттабаться, а сразу коммитить с комментарием. Показывает историю, диффы, измененные файлы. Есть какая то поддержка веток, онлайн реп. Есть подводный - в истории не стоит кликать на строчку, где было изменение больших бинарей - редактор зависнет надолго считая диффы... Надо будет им ишью завести чтобы был таймаут.
>>876533 > Есть какие-то способы сделать проще, может я что-то не вижу? Этапы квестов. Классика эрпогэ, существующая с хуй знает каких лет. Вкратце суть токова. 1. Реестр у тебя один, и называется он - база данных. 2. И в твоей базе данных лежат все квесты всех локаций. 3. И у каждого квеста есть поле "ЭТАП" целого типа, которое по умолчанию = 0 4. И у тебя есть сейвфайл, который организован (любым удобным тебе способом) как модификация основной базы данных. Загрузка сейва - это выполнение модифицирующего скрипта в БД. 5. И в процессе выполнения квеста у него увеличивается значение поля ЭТАП, то есть, меняется по сути этап квеста. 6. И увеличиваться он может не только на 1, а сразу на любое нужное тебе целое число, тем самым пропуская этапы. Так ты реализуешь ветвление событий. 7. А в диалогах у НПЦ у тебя будут закодированы условия появления ветвей диалога в зависимости от существующего этапа квеста. Если этап > 4 но < 7 то показать вот ту ветку. 8. И при загрузке локаций ты сможешь чекать этапы квестов и выполнять нужные действия, расставлять фурнитуру и НПЦ. Вплоть до того, что в менеджере загрузки локаций, ты сможешь чекать этапы связанных квестов и выбирать, какую из версий локации грузить в данный момент. День, ночь, война, пожар, руины, прошлое, будущее, иное измерение, и всё что пожелаешь.
> Довольно сложно получается. А кто-то обещал, что будет легко? Эрпогэ - вершина геймдева. А Геймдев - вершина айти. Самая простая игра сложнее самого навороченного КРУДа. Самая простая эрпогэ сложнее самых навороченных кликеров. Мне удивительно видеть, как люди без опыта в айти лезут в геймдев.
>>876533 Я пока глубоко систему квестов не продумывал. Но имхо это иерархический конечный автомат. Обычно вырожденный, потому что квесты обычно простые - 1. выйди за забор 2. убей 5 волков. Рестарты и повторяемые для простоты не рассматриваем. Иерархический - потому что сами квесты объединены в цепочки. После выполнения квеста 1 можно брать квест 2. Да, там могут быть графы посложнее. Например если взял квест за красных, за синих уже не можешь. Может быть, можно обойтись событиями. Например, когда ты завершил квест, посылается событие, и оно спавнит следующего непися. Сами неписи, в таком случае, мне кажется, являются тупыми объектами наподобие кнопок. Да у них есть примитивные состояния, типа позиции на карте, которые могут быть связаны с системой сохранения. Но сами они не отслеживают состояние квеста. Пример - в какой нибудь ММО непись стоит в одном месте, но в разговоре с каждым игроком он говорит с ним лично на основе состояния игрока. Один еще только берет квест, другой уже сдает. (Опять же пропустим сложные случаи, когда непись перемещается между фазами квеста или игрок присоединился посередине рейда - это все можно продумать). В общем, имхо, ничего особо сложного, инкапсуляция, каждый делает свою маленькую часть работы и все.
>>876533 То есть вот это я бы изменил: >В реестре NPC записи о том в какой он локации, в каком месте Ок >и какой у него сейчас диалог. Это перенес бы в состояние квеста у игрока.
>>876595 Вообще мне нравится идея с графом состояний. Похоже на вот эту >>876566 систему с этапами
Есть начальный узел - это начало игры, и несколько конченых, по одному на каждый квест.
Между ними - множество узлов событий, они по умолчанию неактивны.
И есть несколько указателей, каждый указатель движется от начала к концам по узлам событий.
Узлы по умолчанию неактивны, разблокируются по событиям. Допустим ты нашел нужный предмет, инвентарь сообщает что предмет найден и следующий узел открывается. Или в конце диалога открывается следующий узел.
Узлы имеют типы - например: - позиция NPC, при прохождени этого узла NPC перемещается в нужную локацию - диалог NPC - это узел устанавливает NPC нужный диалог. - квестовый узел добавляет или убирает в журнал квестов запись
тут много чего можно придумать.
Мне кажется с такой системой можно делать РПГ масштаба скайрима.
>>876647 Это вопрос исключительно субьективного удобства. Что нравится, тем и пользуйся. Для остального есть тред движкосрача. >>876642 > идея с графом состояний > множество узлов событий > несколько указателей > Узлы по умолчанию неактивны, разблокируются по событиям. Братан, братишка, браток. Как ты ни накручивай слои абстракций, в итоге у тебя на диске будет лежать плоский список, в котором всё будет сведено к индексированным записям. Так нахуя тогда накручивать слои абстракций? Ты только запутаешься в них. Система этапов не просто так является бессмертной классикой, потому что лучше нее ничего не придумаешь, и всё что ты можешь придумать, в конечном итоге сведётся к системе этапов. Все твои вот эти графы состояний превратятся в ту же самую таблицу. Но при этом, при саппорте этой системы, тебе придется переводить плоские данные в графы с узлами и переходами, а потом снова графы с узлами и переходами переводить в плоские данные. Впрочем, похуй же как делать, главное, чтобы тебе было удобно. Именно поэтому я не люблю аддоны и ассеты. Они сделаны так, что их авторам они удобны. Но это не гарантия что это удобно мне.
>>876673 >Как ты ни накручивай слои абстракций, в итоге у тебя на диске будет лежать плоский список, в котором всё будет сведено к индексированным записям. Так нахуя тогда накручивать слои абстракций? Потому что человеку удобнее работать с абстракциями, а не непойми каким плоским списком. Вот пусть на диске хоть ассемблер лежит, пишем то мы не на нем. Простой пример - ты захотел вставить в первый квест дополнительную задачу. В случае графа, ты просто добавил и оно само пересчитается. В случае своего плоского списка, ты или сдвинул все последующие числа, сломав старые сейвы, или начал добавлять в конец, в результате у тебя уже не плоский список, а 1, 2, 1488. 3, 4. Что в итоге приведет к костылям, если ты где то проверял if quest < 5
>>876647 Без понятия, бро, я не пользуюсь другими движками. Ты бы еще спросил, почему я с линукса на винду возвращаться на собираюсь, или почему пользуюсь блендером.
>>876676 Резонное возражение. Я и сам к этому пришёл, когда дописывал пост. Именно поэтому я в итоге и написал: >>876673 > Впрочем, похуй же как делать, главное, чтобы тебе было удобно.
Супертупой нюфаговопрос. Как там вообще делать адаптивный дизайн-то? Есть какие-то гайды (на 4.1 или те, что не устарели)? Я методом тыка пытаюсь разобраться и нихуя не справляюсь, это просто отвратительно. Где там вообще процентные значения, например? Я могу сделать часть интерфейса в 70% от высоты экрана?
>>876764 > Я могу сделать часть интерфейса в 70% от высоты экрана? Да. > Есть какие-то гайды (на 4.1 или те, что не устарели)? Я немного знаком с вёрсткой хтмл и легко пилил адаптивные в трёшке, поскольку оно там сделано по образу и подобию хтмл. Сейчас в четверке не касался этого вопроса. Но процентное соотношение там есть точно.
>>876766 Там все довольно просто Пик 1 - корневой контрол Full Rect занимает весь экран Пик 2 - контрол с custom anchor, как раз и означает в процентах - 0 это край, 1 это дргой край, 0.2 это 20 процентов и тд Пик 3 - контрол с custom anchor и anchor offsets, то есть когда относительно процентов еще и margin в пикселях Пик 4 - это уже с контейнерами, контейнер сам расположен на 10 процентах, и растягивает контрол в него под это.
>>876770 Кроме этого есть всякие контейнеры в которые уже по какой то логике набиваются дети, например grid container, horizontal box, vertical box, их можно вкладывать друг в друга, сейчас вроде бы есть и flow Контейнер управляет лейаутом детей, но дети могут указывать как они хотят размещаться в контейнере, полями container sizing; fill или shrink, а также галочкой expand. В таком случае параметр Stretch будет уже задавать пропорции между такими элементами. На пик 2 - пропорции 3-2-1.
>>876772 >>876773 Не за что. Нюансов все равно много остается, я всех комбинаций не знаю, но база простая. Еще какие то настройки бывают не в настройках контейнеров, а в настройках темы, например отступ между элементами контейнера. Вот их похоже в процентах не задать. Но наверное можно из скрипта как то получить общий размер контейнера и высчитать. Будем считать это продвинутой темой.
>>876771 Тут я забыл написать текстом, что есть margin container он используется чисто для отступа в дереве контролов, то есть даже если у ваших контролов нет возможности явно задать отступ, можно всегда обрамить это в margin.
>>874870 На просторах гитхаба замечен такой проект Godot-Dodo https://github.com/minosvasilias/godot-dodo Процесс обучения описан так: с гитхаба спарсены проекты под MIT лицензией, потом чатугпт 3.5 турбо задавался вопрос что делает каждая функция. В репе есть ссылка на веса, как я понимаю, надо их скачать, установить пререквезиты для питона и запустить eval.py В нем уже содержаться подобные тестовые запросы 'Listen to WASD user input and move current node accordingly.', 'Apply a new metallic spatial material with a red albedo color.', 'Create a raycast and cast from active camera to current node. Return ray collisions.' В описании сказано что модель дожна лучше писать на гдскрипте, но хуже понимает более высокоуровневые запросы Тестите, я сам с картофелины.
Годаны, помогите с шейдерами. Имеется аниматед_сприте, все кадры анимации берутся из одной картинки. Или не аниматед, а просто спрайт с одной картинкой. Итоговый результат должен одинаково себя вести и с тем, и с другим. Имеется канваситем-шейдер. Суть в трёх строках: vec4 color = texture(TEXTURE, UV) vec4 new_color = texture(my_uniform_sampler2D, UV) COLOR = vec4(new_color.rgb, color.a) То есть, простейшая штука. Скормить шейдеру текстуру и заменять на неё всё, что не прозрачное. Но собака порылась в деталях. А именно - в анимации. Точнее, в атласах, как я понял. Для шейдера разные кадры анимации - это разные места на одной текстуре. С разным UV, соответственно. И из этого вытекают две проблемы: 1. Наложенная текстура растягивается на весь атлас, а не на выбранный кадр. 2. При проигрывании анимации анимируется и наложенная текстура. Да, я могу подогнать шейдер под конкретный спрайт. Но у меня тут ареа должна автоматически вешать свой материал на любого кинематика или ригида, который в неё зайдёт, так что надо найти какое-то общее решение. Можно как-то скормить шейдеру то, что фактически отрисовывается, а не исходную картинку? Или ещё какие варианты решения есть?
Так, я заебался. Как мне скруглить углы любого блока? Вот я сделал панель, настроил обводку и скруглениями, включил clip_contents и добавил TextureRect в потомки. Так какого хуя углы просвечивают? Пробовал тему панели копировать на саму текстуру - никак не реагирует. Блжад, почему нельзя просто прописать бордер-радиус: 8 и бордер: 1пкс солид вайт элементу, а надо обязательно ебаться. Почему в годоте ебаном нельзя без гайдов даже такую мелочь сделать? Я не хочу сидеть в фотошопе и каждую иконку делать со скруглениями и обводкой, а потом переделывать их всех, если мне не понравится мой дизайн.
>>877013 Сегодня бегаю весь день, так что сам попробовать и показать не смогу. Вариант 1 - nine patch rect. Там фишка в том, что рисуешь одну кнопку со скругленными углами, но растягиваешь ее рамку на нужное расстояние, углы при этом не масштабируя. Это контрол, со всеми вытекающими, но можно и для игровых объектов приспособить Вариант 2. Пишут что есть ресурс StyleBoxFlat и у него Corner Raduys. не пробовал. https://godotengine.org/qa/132106/how-to-create-rounded-ui-elements
>>877013 Не исключаю что у тебя проблема в чем то другом, типа панель не использует какие то настройки темы. Тогда надо придумывать что то свое. Например использовать ту же кнопку только ненажимаемую для визуала панели. Годот - игровой движок, то есть в первую очередь это когда всякие спрайтики бегают и стреляют, а не инструмент иллюстратора в котором скопировано все что только бывает в хтмл.
>>877045 Но я не знаю количество строк и колонок в атласе. Я вешаю шейдер на рандомный спрайт, у которого даже своего скрипта нет. Может, можно было бы в скрипте-вешалке прописать, чтобы он выковыривал эти данные из АниматедСприте. Но я не нашёл в доках способа сделать это. Можно вытащить текстуру конкретного кадра, делать это по сигналу frame_changed.
Ов щи, пока писал, придумал. Можно узнать размер текстуры кадра, скормить его шейдеру; а шейдер знает размер текстуры атласа. Костыльно, но должно сработать. Не поможет, если анимация будет использовать более одно атласа, но у меня таких нет и, видимо, теперь уже не будет.
>>877133 Ты прав, я перепутал с просто спрайтом, которого есть vframes и hframes. Уже не помню почему, отговаривали исползовать AnimatedSprite, в пользу AnimationPlayer.
Что касается AnimatedSprite, сейчас проверил, он возвращает SpriteFrames, у которого есть AtlasTexture, у которого можно получить region указанного кадра указанной анимации. Думаю этого достаточно чтобы составлять автоматически каталог для всех спрайтов в твоей игре.
>>877142 >SpriteFrames, у которого есть AtlasTexture О, не знал, потому что в доках написано: >Texture get_frame ( String anim, int idx ) const И прежде я уже юзал эту функцию, чтобы автоматически отрисовывать персонажа в инвентаре, и не догадывался, что там атлас. Нушош, тогда вопрос решён.
>>877142 > Уже не помню почему, отговаривали исползовать AnimatedSprite Я напомню. АниматедСпрайт нужен для одноразовых задач, например, сделать крутящуюся иконку сохранения, включать и выключать ей видимость, когда надо. Если нужно комплексно работать с анимациями, для этого создан универсальный АнимаПлеер, который хоть 2дспрайтами жонглирует, хоть 3дмешами, и состыкуется с универсальным АнимаТрии для создания стейтмашин.
Но на практике никто не мешает, конечно же юзать и АнимаСпрайт.
>>877165 Анимаспрайт удобен для пикселярта, когда все анимации исключительно спрайтовые и нет никаких плавных переходов. И его очень удобно совмещать с анимаплеером и анимадеревом. Хотя, в общем-то, никто не запрещает вместо переключения кадров юзать регион в обычном спрайте.
Вопрос знатокам. У меня есть несколько нод, у которых отрисовка детей зависит от собственного состояния. Ну например: у предмета есть енум-свойство А, и все его дочерние картинки играют одну и ту же анимацию или флипаются в зависимости от выбора этого свойства. Для этого я использую: 1. Простые сеттеры свойств, в них по две строчки: задание свойства-переменной и вызов редрав_май_обжект() 2. Функ _реади() и в нём вызов редрав_май_обжект() 3. Ну и собсно редрав_май_обжект(), который собирает вместе все нужные параметры и задаёт свойства детям.
Я вот думаю. Целесообразнее ли вместо этого заюзать виртуальный метод _draw() ? Или он вызывается каждый кадр, так что пихать туда гдскрипт плохая идея? Или есть общепринятый какой-то другой метод, которого я не знаю?
>>877403 Не очень понял твою терминологию. Дочерними/детьми и родительскими называют положение в дереве нод, а дальше ты говоришь про виртуальный метод. Может ты имел в виду наследованные и базовые? Когда вызывается метод draw написано в документации.
Updating¶
The _draw() function is only called once, and then the draw commands are cached and remembered, so further calls are unnecessary.
If re-drawing is required because a state or something else changed, call CanvasItem.queue_redraw() in that same node and a new _draw() call will happen.
Стоит ли привязывать к нему логику - не уверен. Все таки мне кажется ты описываешь больше логику, а не отрисовку. Под отрисовкой там имеется в виду нарисовать линию, кружочек.
Есть хоть одна успешная (ну или хотя-бы играбельная) 3D игра на нём? С графикой лучше чем абстрактные кубики в качестве фона для лоуполи шариков? Или фактически оно только для 2d игр, а поддержка 3д это так для галочки?
>>877469 Cruelty squad, еще какой-то забагованный ремейк Соника, хотя они все такие независимо от движка. Вообще такой вопрос сейчас не особо актуален, в 4.0 3D абсолютно другое, но естественно с момента релиза еще не прошло достаточно времени, чтобы на нем успели сделать что-то крутое.
>>877469 >или хотя-бы играбельная) 3D игра >С графикой лучше чем абстрактные кубики Естественно, та же Human Diaspora, но разраб психанул от неуспеха и удалил все видосы с ней с реддита и ютуба, а мне лень искать их на компе сохраненку. А вообще то любой может скачать разные демки и оценить возможности рендера https://github.com/perfoon/Abandoned-Spaceship-Godot-Demo https://github.com/mikatomik/Godot-4-Overgrown-Subway-Demo https://github.com/gdquest-demos/godot-4-3d-third-person-controller Это демки на 4-ке >а поддержка 3д это так для галочки? Всегда нормальная поддержка была. Вот типичная игра с какого то мелкого джема. >какой-то забагованный ремейк Соника Не забагованый. Там специально стримеры по 100 раз дрочили сейв пока память не утекала. У нормальных игроков в тот же день уже летсплеи целиком игры без пробелем были.
>>877429 >Дочерними/детьми и родительскими называют положение в дереве нод Ну да, про это и речь. Сейчас в родителе три функции, которые так или иначе влияют на отрисовку детей. А я спрашиваю, не лучше ли все их запихнуть в один _драв().
>>877487 Демки не в счёт таккак это фактически реклама. То есть вопрос должен звучать так: Действительно ли можно использовать движок для создания жизнеспособной игры с не нулевой графикой, или он годится только для демок и прототипов которым ясно дело такая производительность не требуется
>>877548 >То есть вопрос должен звучать так: Действительно ли можно использовать движок для создания жизнеспособной игры с не нулевой графикой, Странная переформулировка, ну на этот вопрос ответ да. > такая производительность Это какая еще такая? Производительность в основном зависит от постпроцессинга (врубаю всякие шейдеры и падает с 120 до 60, да и вообще некоторые эффекты требуют второго вьюпорта с дублированием прорисовки), от очень больших текстур (запускал на некроПК,накидав много ассетов с 4к текстурами - вот тогда начинаются затыки, потому что приходится из памяти в видляху постоянно свопать - поменял на 512 и все летает), к тому же имеет смысл объединять текстуры в тримшиты. В третьих все эти динамические освещения - GI, voxel, Reflection probes, объемный туман и так далее. И как можно заметить, все эти три пункта надо выносить в настройки, тогда внезапно на слабом компе можно понизить качество картинки и производительность вырастет, кто бы мог подумать. Еще проблема может быть если пытаться тупо столкнуть кучу физических объектов (если например делать всех неписей физическими телами и они окажутся во взаимодейтсвии через какой нибудь Area все со всеми). Это решается тем что они должны ходить упрощенными методами - например навигацией, которая еще и пересчитывается не каждый кадр. >Демки не в счёт таккак это фактически реклама Демки, блджад, это демки. Они нужны для того чтобы проверить как что работает из коробки и что можно поменять и сколько всего потянет твой комп.
>>877730 Я немного предвзято распишу. 4-кой же можно начинать пользоваться, но она сыровата у нее есть несколько минусов. 1. 3д экспорт в веб в ранней разработке, нет теней, нет многих спецэффектов. 2. вулкан же не везде работает нормально. Так что для разработки на 4-ке уже нужен комп помощнее. Даже банальный запуск редактора и игры в 3-ке GLES2 ощутимо быстрее, чем в 4-ке OpenGL. 3. 3д террейна пока не запилили, и уже месяц даже обсуждений не слышно 4. Если делать 2д игру, то андроид и веб билды будут тяжелее, дольше грузиться 5. Туториалы пока будут попадаться на 3-ку больше, поэтому новичку придется разбираться как что поменять на лету. 6. Аддонов пока меньше, хотя ситуация уже выравнивается, к тому же в основном на 3-ку аддоны заморожены и не будут появляться новые или дорабатываться. 7. Редактор сыроват, в 3-ке как то получше редактируется код, в 4-ке постоянно какие то затупы с автодополнением. Иногда может упасть от неудачного клика по ноде. (Понятно что любой софт может, даже майкрософтовский, но по ощущениям в 4-ке это происходит чаще. несколько раз в день) Так что я бы сказал так Если хочешь вкатываться на будущее, с долгостроем, с А-АА игрой, с мощными спецэффектами, бери 4 ку. За год ее уже доведут до приемлимого состояния. Если хочешь просто потыкаться в 2д на компе, тоже можешь взять 4-ку. Если хочется супер мега оптимизированную игру которая будет и в вебе и на мобилках, тут я бы в ближайший год все еще 3-ку использовать буду.
>>877791 Согласен с этим аноном, беру свои слова назад с советом 4-ки для начинающих. Она подходит для тех, кто уже знает как работать с годотом, но только начинает проект.
>>877273 Спасибо. не слышал про такой. Автору надо бы его в ассетлиб закинуть, да и теги на гитхабе проставить - я бы про него и не узнал, не смотрю ютупчик. В ассетах такой мелькает постоянно в обновлениях, майнкрафтоподобный https://godotengine.org/asset-library/asset/1650
>>877791 Уточнение - zylann таки портировал свой height map на 4-ку. Попробовал, текстуры работают, редактирование мышкой работает, коллайдер работает. Не сработала рандомная генерация в меню. Теоретически можно редактировать в 3ке и перекидывать в 4ку. Завтра более плотно потестирую, разные ситуации, экспорт может быть, терраформинг из скрипта.
>>878951 >>878950 А куллинг он починил? Объясню. Когда я пользовался его плагином пару лет назад, там был баг куллинга, из за того что меш по факту под ногами, а отрисовка происходит дисплейсом в шейдере, то когда поднимаешь взгляд вверх, срабатывает искаробочный опенгл фруструм куллинг и все горы террейна тупо исчезают, потому что из области камеры ушла изначальная поверхность. Так вот, починил он это?
>>878995 Надо проверить, по твоему описанию это похоже на баг движка, чем на аддона, поискал такие ишью, вроде бы закрыты. Аддон генерит AABB и сообщает движку. По хорошему надо проверить везде, в 3, в 4 Forward+, Mobile и Opengl. Если что-то не работает - из нагугленного надо проверить как работает scale или map scale террейна (наверное в идеале надо оставить 1:1) И еще написано что у GeometryInstance есть такое свойство как extra cull margin, то есть в теории можно любому объекту подкрутить, чтобы он был виден дальше чем надо (это часто нужно частицам). но вот тут я не уверен есть ли такая опция в террейне, но на первый взгляд ее нетрудно прикрутить, ведь террейн предположительно виден всегда.
>>879065 В ютубе искаропки автогенерируемые и автопереводимые субтитры. Это без учёта того, что субтитры могут быть вручную добавлены автором видоса, и на нескольких языках. Да, надмозг иногда тупит, но в целом понять можно о чём речь.
Ну а если писать письма туда на емейл, тупо открываеш в соседней вкладке переводчик, и тупо переводишь, и тупо копипастиш.
>>879149 Есть несколько вариантов Вариант 1, сигналы. ui подписывается на сигналы, вместо переменных здоровья делаешь сеттер, в нем сигнал отправляется. Вариант 2. Тупо жесткая связь. Буквально если они в дереве рядом, то "../scene".health. Минусы понятны, что это сложно изменять. Но для джемов вполне норм. Вариант 3. Менеджер. Похоже на вариант 2, только связь чуть послабее, потому что ты обращаешься к конкретному менеджеру, а он уже достает из нужной ноды. Вариант 4. Объединить сцены. Отчасти похоже на вариант 2. Это, например, если говорить о полосках над персонажем. То у тебя может быть спрайт, а сцену с ui добавить ему дочерней.
>>879155 > ui подписывается на сигналы, вместо переменных здоровья делаешь сеттер, в нем сигнал отправляется Чтобы подписаться на сигнал, нужно знать ноду. А это связь. Таким образом пункты 1 и 3 по сути равнозначны, в случае если ты юзаешь шину сигналов (тот же менеджер) и пункты 1 и 2 равнозначны, если ЮИ знает о ноде и подключается к её сигналу напрямую.
>>879221 Далее. Варианты 2 и 4 приведут к производственному аду, даже на ТВГ, тупо в первую неделю так нахуевертишь, что ко второй неделе голова бомбанёт и с конкурса сольёшься. Проверено. Поэтому остаётся только пункт 3, только вместо менеджера - шина сигналов (event bus (design pattern) (for googling) только такой вариант я подвачую.
>>879222 Двачую шину. Когда я узнал, что в Годоте можно вызывать сигналы другой ноды через код и об этом паттерне в частности, то у меня практически полностью исчезли проблемы, связанные с коммуникацией различных сцен между собой.
>>879221 Все же поправлю тебя немного. Чтобы подписаться на сигнал надо знать ноду, но связь не возникает. Связь будет существовать уже только в виде сигнала. Саму подписку сможет оформить фабрика, например из массивчика. А она сможет прицеплять ноды как угодно, поэтому не будет жесткой связи вида "../" Поэтому варианты 1 и 3 НЕ равнозначны. В 1 фабрика знает о ноде и о ui, и только при создании. Нода и ui ничего не знают о фабрике (в отличии от менеджера в 3, о положении которого они обязаны знать чтобы общаться) и не знают о взаимном расположении друг друга, только о сигналах. >>879222 Вариант 4 и так постоянно используется со штатными нодами годота. Например у KinematicBody обязаны быть дочерние CollisionShape, и не редкость когда родительский скрипт ими управляет. Например когда персонаж приседает и надо уменьшить его рост. Движение вверх тоже встречается, у того же персонажа может быть дочерний детектор попаданий пуль, который сообщает родителю о попадании напрямую. Так что никакого производственного ада нет, если это ближайшие соседи. Производственный ад на джемах возникает только от спешки и попытки что то начать переставлять, просто этого делать не надо и надо доделывать уже так как начал.
>>879241 > надо знать ноду, но связь не возникает Там у Хуана какая-то чорная магия, как минимум в трёшке была, что если дёрнуть сигнал на выгруженной ссылке, то просто ничего не происходит, ну и в консольку печатается еэкзепшн (хотя почему чорная магия, дописал предложение и сам понял, что экзепшн обрабатывается, раз в консольку пишется). В других движках аналогичное действие приводит к крашу.
>>879368 Есть. Почитай гайды. обычно проблема в том, что колесо надо размещать там где оно будет при сжатой рессоре, и уже потом вытолкнуто пружной, а не в конечной точке. То есть в твоем случае возможно его просто выдавливает туда или оно вообще спавнится под землей. Можешь попробовать спавнить машину в воздухе для проверки. Второй момент что колеса вообще не сильно надежны и могут при сильном воздействии провалиться, ну то есть если большая масса, сила пружины или с трамплина прилетел. Я когда авиасим пилил так и не справился с колесами, сделал свой костыль. Честно говоря даже в доках сказано что скорее всего понадобиться делать свое.
>>879369 >в том, что колесо надо размещать там где оно будет при сжатой рессоре странный подход >Можешь попробовать спавнить машину в воздухе для проверки Она и так спавнится выше >Честно говоря даже в доках сказано что скорее всего понадобиться делать свое. Читал, мне кажется я не осилю в плане алгебры векторов (я вообще нубасик), но могу попробовать >Я когда авиасим пилил так и не справился с колесами Я думал что дело в фпс симуляции (не успевает просчитать между тиками), но добавление фпс проблему не решило. >Алсо можешь скачать ассет и посмотреть как в них сделано Да качал уже, чего-то особенного не подметил. Думаю тоже на настройки подвески т.к. от нее реально что-то меняется, но это странно, что нужно искать какие-то настройки чтобы шины не проваливались. Если бы у них был нормальный collision shape то такого бы не было.
Сап, Годач. Абсолютный новичок в этих ваших Годо, сижу весь день и не понимаю как это должно работать.
Цель: при нажатии соответствующей клавиши, одна из панелей инвентаря (Заданного через GridContainer) должна поменять свою текстуру. Для пояснения - в одном положении это соответствует активной правой руке, во втором левой.
Перекопал с десяток примеров/обсуждений/глянул документацию, так нихрена и не понял как это (Изменение текстуры в stylebox) правильно делается.
>>879514 Стили - они для другого. Их задача - обеспечить единообразие вида всех элементов интерфейса. Если тебе надо задать из кода произольную текстуру, то используй TextureRect, там тупо меняешь свойство texture и всё. Ещё посмотри в сторону TextureButton, возможно, это тебе больше подойдёт (я не оч понял, что ты хочешь сделать); к ней можно без кода прикрутить шорткат.
Привет. Есть гайд как работать с Generic6DOFJoint3D?
Скачал пример от 3 версии, он не работает на 4, хотя я его ручками подправил. Посмотрел там скрипт: он просто включает мотор и крутит его.
Вроде бы все настроил, но при нажатии на кнопку колесо чуток проворачивается вперед и все, хотя я там уже 9999 велосити накрутил, ничего это не меняет.
если крутить напрямую rigidbody3d через angular velocity (wheel_back.angular_velocity.z = 10) то крутит нормально
Это баг или там bullet где-то отдельно включается?
В чём суть. Хочу отрисовать текст красиво, чтобы он появлялся по буквам, причём каждый чётный символ перед буковками появлялось ещё "_". Количество показываемых символов - export(int) var shown_chars. Показываемый текст - export(String) var mytext. Сначала добавляю подчёркивание: >mytext.erase(shown_chars - 1, 1) >mytest = mytext.insert(shown_chars - 1, "_") А дальше первый вариант >label1.text = mytext.left(shown_chars) >label1.percent_visible = 1.0 или второй вариант: >label2.text = mytext >label2.percent_visible = float(shown_chars) / float(mytext.length()) Проблема в том, что в двух вариантах разный результат. Первый работает надёжнее, но есть проблемы с переносом слов: если слово не помещается на строке, оно перенесётся только тогда, когда наберёт достаточно букв. Собсно, percent_visible для этого и существует. Но во втором способе другая проблема: невозможно предугадать, какой символ будет последним. Там какая-то магия происходит в преобразовании интов во флоты. Попробовал наоборот, сначала задавать процент, >export(float, 0, 1) var shown_percent а потом из него считать количество видимых символов: >var shown_chars = int(shown_percent * float(leng)) Ну и снова, сначала добавляю подчёркивание (см. выше) первый вариант без изменений (тоже см. выше) или второй упрощённый: >label2.text = mytext >label2.percent_visible = snown_percent Та же дребедень. Символ подчёркивания то вообще не отрисовывается (уходит за пределы видимого), то оказывается предпоследним и после него ещё один.
Как с этим совладать, я чёт пока так и не придумал. Годаны, выручайте. Хочу заюзать percent_visible, но не могу. Пока просто обрезаю текст.
Почему, блядь, ни один пидорский соевый гомосатанинский гайд от GDQuest не рассказал мне про yield/await? ПОЧЕМУ, БЛЯДЬ, Я ОБ ЧУТЬ ЛИ НЕ САМОЙ ВАЖНОЙ ФИЧЕ В МИРЕ УЗНАЮ ИЗ КАКОГО-ТО ЛЕВОГО ЮТУБ-ВИДЕО? https://www.youtube.com/watch?v=7QvhCDsFkk0
>>879830 Потому что это хуйня и костыль, сраный атавизм. Как какое-нибудь GOTO. Только баги рождает, хотя всегда есть более эффективное решение. Но вот тебе умное видео: https://www.youtube.com/watch?v=4xMaq-qVQGY
>>879830 > Почему, блядь Потому что инструмент надо изучать в первую очередь по официальным докам, прочитав хотя бы 1 раз целиком https://docs.godotengine.org/en/3.6/tutorials/scripting/gdscript/gdscript_basics.html >ни один пидорский соевый гомосатанинский гайд от GDQuest не рассказал мне про yield/await? Вижу гайд GDQuest по yield 4 летней давности, так что вини только себя. >ЧУТЬ ЛИ НЕ САМОЙ ВАЖНОЙ ФИЧЕ В МИРЕ Если ты не знаешь о ней из опыта программирования, то скорее всего она тебе не нужна. Анон выше может и преувеличивает насчет устаревшей, но то что новичок может ее совать где угодно и получать баги это факт. Я сам поначалу в ready костылял по два yield(get tree(), "idle frame") "чтобы все наверняка загрузилось" и потом удивлялся с трудноуловимых багов.
>>879850 >Я сам поначалу в ready костылял по два yield(get tree(), "idle frame") "чтобы все наверняка загрузилось" и потом удивлялся с трудноуловимых багов. На что заменил?
>>879843 Не сильно, но отличается. Гайды на конверсию есть Например вот выглядит вменяемым https://gist.github.com/WolfgangSenff/168cb0cbd486c8c9cd507f232165b976 Если быстренько по нему пройтись, с чем ты скорее всего столкнешься Сигналы button.connect("pressed", self, "_on_button_pressed") --> button.pressed.connect(_on_button_pressed) yield(get_tree(), "idle_frame") --> await get_tree().process_frame Аннотации onready, export, tool --> @onready, @export, @tool Спавн tscn.instance() --> tscn.instantiate() Функции, ноды - большой список deg2rad --> deg_to_rad Spatial --> Node3D change_scene() --> change_scene_to_file/change_scene_to_packed Свойства setget --> set(value):... get(): ... Физика персонажей KinematicBody --> CharacterBody2D/3D теперь используется встроенное поле velocity, Т.е. не надо будет вmove_and_slide передавать переменную, а надо прямо менять саму velocity. Шейдеры Надо в начале самому объявить SCREEN_TEXTURE для постобработки hint_color --> source_color и прочие переименования Объекты if object: --> if object == null:
>>879850 >>879847 Во-первых, дяденька, я программист ненастоящий, я годот на стройке нашел. Во-вторых, я вижу эту хуйню и не представляю, как в принципе писать пошаговую игру без нее. Я вот в ужасе представлял, какой огород мне придется городить, чтобы ждать завершения вражеских анимаций в их ход, а тут оказывается, что я могу тупо во вражеский ход пройтись по всем врагам циклом.
>>879856 > я вижу эту хуйню и не представляю, как в принципе писать пошаговую игру без нее Стейтмашиной. И ваще. В любой непонятной ситуации создавай стейтмашину.
>>879859 Ну вот например, курсы по юнити (для сравнения) начинаются с объяснения что такое стейтмашина и как она важна в геймдеве. Такшта думой сам, как относятся.
>>879862 >>879861 Я имею ввиду, там можно было и без корутины обойтись, добавив ноду таймер, сделав ей ваншот и в этой функции писать if !timer.enabled: timer.start(2.0) и потом ещё одну функцию приконнектить к таймеру, которая будет делать exit(), но для объяснения сути в рамках туториала проще влепить yield()
>>879861 Стейт машина это что то вроде состояний и переходов changeStateTo() 1. ожидание ввода игрока -> 2. ход игрока -> 3. ход противника -> если еще есть противники, то 3 иначе 1 В общем yield тут не обязателен, changeState может вызывать подписанный на сигнал обработчик.
>>879969 Если что в коде со скришота angular upper И lower limit просто тестовые, должны быть (как я понимаю) 180 и -180 (полный оборот) крутится в настройках на правой панели.
Чем больше и чаще я пользуюсь движком и чем сложнее становится проект, тем сильнее мне хочется удушить блядь к хуям всех его разработчиков. Постоянные баги в редакторе просто нереально выбешивают.
Какую версию качать-то? 4.0.3? И там версия с сирашпом есть и без него. Чем отличаются? Насколько вообще сишарп там норм? Или лучше их языком пользоваться?
>>880059 >Какую версию качать-то? Тред полистай >>877791 >>880059 > Насколько вообще сишарп там норм? сишарп как сишарп. Им мало кто пользуется, так уж сложилось, новичкам все покрывает gdscript, олдам gdscript+cpp. Но если знаком, можешь и на нем писать. >>880062 Постоянно фиксят, на сайте же написано что сейчас бета 3.6 >>880063 3д модели как таковые технически можно, из стора хз, надо во первых смотреть лицензию позволяют ли там использовать модель вне юнити, во вторых может быть какие то особые форматы. Так то я и из анрила вытаскивал.
>>880115 3.6 будет LTS версией то есть поддержка как минимум год-два. 4-ка догонит по фичам/состоянию только в 4.2-4.3. Скачать беты можно из новостей, там ссылки на репозиторий со всеми версиями.
>>880059 > Какую версию качать-то? Открываешь повершелл, если ты на венде, а если не на венде, а на линуксе, то зачем качать? Юзай пакетный менеджер своего линукса.
Эм, так вот, на венде открываешь повершелл и пишешь: >Set-ExecutionPolicy RemoteSigned -Scope CurrentUser >irm get.scoop.sh | iex Закрываешь повершелл и открываешь заново. Пишешь >scoop install 7zip >scoop install git >scoop bucket add extras >scoop install godot Идешь в пуск -> scoop apps -> godot Открывается свежий стабильный релиз. Автоматически не обновится, пока не напишешь в помершеле > scoop update godot Такшта можешь смело девелопить, не боясь, что внезапным обновлением похерится проект.
>>880114 Ага, карп в пакете. Из серии, прототип делается за день, а потом нерешаемые годами проблемы. 1. Видео. Годот не играет Mp4, потому что патент на H.264 до 2028 года. Значит надо мутить что то с встраиванием плеера, ffmpeg или mpv. Там без пересборки движка не обойтись, потому что надо встраивать окно внутрь opengl как то. Кроссплатформенность тоже под вопросом. Смотрел как другие делают, в Kurobe просто андроидный видеоплеер видимо, или хочешь сам ебись с libmpv.so. Собственно поэтому всякие ffmpeg или mpv распространяются в исходниках, хочешь собрать для себя - все легально, а бинарники распространяют только через какие нибудь балканские сервера где не прилетит DMCA. С юутубом тоже непонятно, или комбинировать с yt-dlp или п.2.
2. Браузер. Например для капчи. Сейчас капча картинкой, но ведь может вылезти окно Клаудфронта. Или на какой то борде будет гуглокапча. Посмотрел аддон CEF (Chromium embedded), работает, но весит 1 гигабайт, чтобы показать капчу, карл. Может быть это дебаг, особо не ковырялся пока. Еще есть WebView но подозреваю там те же проблемы со встраиванием будут.
3. Просто много мелочевки. Те же теги парсить, прочитал что админы могут в посте любой html писать. Например оформление в /ld веселое. Кэш для загрузки картинок. Переадресация на /arch-ив. Настройки ебойки.
Еще один охуенный баг от сынов блядей, из-за которого я страдал как минимум полчаса. Просто боги кода, ничего не скажешь, я уже понял, что если что-то идет не так, то дефолтным предположением должны быть не твои кривые руки, а кривые руки дегенератов, которые программировали движок. https://github.com/godotengine/godot/issues/74123
>>880198 да он искусственно переусложнен, плюс пилился во многом некомпетентными вкатунами, плюс монолит вместо модульности и линуксвей. Та же гуглокапча - специальная подстава, я где то читал что там загружается скрипт виртуальной машины на JS, и начинает двигать невидимые квадратики и блоки, а поскольку стандарт там та еще ебанина, то вот кривой конечный результат должен совпать с эталоном на сервере. В принципе сделать перечисленное не проблема, и плеер встроить и капчебраузер, только не приблизит меня к цели - а цель у меня была не капчевалка на годоте, а компактная, кроссплатформенная, легко и легально распространяемая капчевалка. А сам рендер текста на годоте относительно просто делается, ну может со спойлерами повозиться придется подольше. В общем пока писал, в очередной раз осознал, насколько прав и Мицгол со своим гипертекстовым фидонетом, и всякие линуксы распространяемые в сорцах. Ладно надо завязывать, пока templeOs2 не начал писать. А еще как вспомню про эту тяночку... https://habr.com/ru/companies/timeweb/articles/734652/
>>880199 Хуйня типа хромиума явно максимально переусложнена, но она также хотя бы работает относительно нормально. Если скачать какую-нибудь хуйню на кастомном движке типа Epiphany, то можно охуеть с того, как 90% сайтов либо не грузится, либо просто крашит браузер. Если бы было просто сделать альтернативу, то они бы уже появились, а так есть только полудохлая мозилла.
>>880283 Да и вообще вопрос, почему эта функция запускается. Это же вроде просто ее определение (конструктор). Или она и не запускается? А просто из-за того что вызывается поле класса (rotation) оно само считается? Ну и странно что поле класса встроенного класса никак не выделяется
>>880284 Это называется callback. Да, ты только определяешь функцию, но вызывает ее движок. В принципе большинство таких функций начинается с подчеркивания.