Это копия, сохраненная 30 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
С изучения документации. Если не можешь в инглиш, и даже в гугл-переводчик, то начат перевод официальной документации: https://docs.godotengine.org/ru/latest/
Но вообще, будь мужиком и изучи английский: https://godot.readthedocs.io/en/stable/
Вместе с движком обязательно смотри примеры, там есть всё - от платформера до чата. Примеры качаются прямо в движке через свой магазин.
Скачать движок: https://godotengine.org/download/ или http://store.steampowered.com/app/404790/Godot_Engine/
FAQ: https://docs.godotengine.org/ru/latest/about/faq.html
Игры, созданные глобальными кириллами: https://godotengine.org/showcase или https://steamcommunity.com/app/404790/discussions/0/412448792354265655/
Скажи "Годот круто!" https://github.com/Calinou/awesome-godot - подборка дополнений, модулей и минишоукейс от одного из авторов.
Годнота от анона:
Для приверженцев опенсорца существует возможность распрострянять проекты в незапакованном формате. Просто скачай темплейт с оф.сайта и положи экзешник/эльфешник в папку с проектом, этого достаточно. Дополнительно можешь вшить свою иконку в экзешник. После этого, запустившийся файл темплейта обнаружит рядом с собой файл project.godot и начнет грузить проект из него и из файлов, лежащих в распакованном виде в той же директории.
Редактор персонажей на основе makehuman: https://github.com/Lexpartizan/Go_MakeHuman_dot
Все языки в одном месте: https://vk.com/topic-70467171_35982467
Тест-бенчмарк:
Веб-версия - https://govdot.herokuapp.com
Вишмастер для винды - https://govdot.herokuapp.com/4Anon.rar
Предыдущий тонет там: >>612980 (OP)
Архивы:
1 https://arhivach.ng/thread/207802/
2 https://arhivach.ng/thread/388500/
3 https://arhivach.ng/thread/388501/
4 https://arhivach.ng/thread/388502/
5 https://arhivach.ng/thread/388503/
6 https://arhivach.ng/thread/432708/
7 https://arhivach.ng/thread/433902/
8 https://arhivach.ng/thread/436355/
9 https://arhivach.ng/thread/455461/
10 https://arhivach.ng/thread/479963/
11 https://arhivach.ng/thread/489815/
(Автор этого поста был предупрежден.)
Моча ставит под сомнение крутость годота?
Рекомендую прочитать пост их мода, касаемый отношению к /гд
https://2ch.hk/ruvn/res/85998.html#86226 (М)
Это просто какая-та дичь. Вместо того чтобы создать тред с реквестом провести им нормальный контест чел невразумительно пишет "я стою за полусотней новел"
Слушаем MC Godot-а который познакомит вас с причиной конфликта и предметной сферой технологического спора.
https://youtube.com/watch?v=jLQsSKrMJt8
Распидор, что теперь будешь делать? Славик Хуесос канул в лету, тебе нужно искать новый предмет обожания.
746x420, 0:08
>канул в лету
Я не сильно шарю в летосфере, но если у модера-хуесоса отобрать модерку - то он просто станет хуесосом. Ещё один яркий персонаж для ассетфлипов и промоушена фандома гд.
Пускай выражается теперь через разработку игор.
Годот своей простотой и доступностью привлекает шизофреников, даунов, умственно отсталых и прочий весёлый контингент. Чего только вот этот пиздец стоит - >>17517
Инвалиды с умственными отклонениями самовыражаются в интернете через вот такое своеобразное творчество.
Но ты можешь просто спокойно делать игры с 20 фпс и не вариться в этом котле с поехавшими, никто не запрещает.
Коммьюнити годота это зумерки, которые вкатились в геймдев только что. Набрали в гугле "лучший двиг" и им выдало годот, так как на каком-то сайте с рейтингом софта в списке движков годот залайкан фанбоями до первого места с большим отрывом от преследователей.
По незнанке легко зашквариться.
Чо когда там сглаживание в годот завезут, раньше чем батчинг?
>но производительность полное говно конечно
То есть графон 2004 года тебя уже устраивает.
> производительность полное говно конечно
> Runs fine on a low-end dedicated GPU.
Крыса-лжец в своём репертуаре.
>производительность полное говно конечно.
Дурачок, это скриншот. А ты решил что это просто медленное видео.
Нет, крыса, про тебя.
>>17630 (Del)
> я не даун, я тестил
А про multimesh_instance_get_transform_2d при этом ты не знал, и постил свои результаты под дружный смех годотеров.
Не бомби, хейтерок. Вставляй свечу - беги к врачу.
Зачем ты перешла на гринтекст и боевые картиночки, бомбанувшая чушка?
>Раньше еще находились полуразумные годотеры, признававшие, что для 3д годот не подходит, но хотя бы для 2д то норм
Ты преувеличиваешь, годот можно юзать для 3д игр.
Не для всех, конечно. Но если у тебя игровой процесс происходит на одном экране, нет скроллинга, не слишком много мешей - штук 10-15 на экран, то в принципе годот вполне подходит.
Еще желательно не использовать rigid body физику, если уж очень надо - то не больше 10 физических объектов в сцене, а то фпс начинает просаживаться, но мы в прошлых тредах пришли к выводу, что больше 10 и не нужно для современных игр.
Так что для части 3д игр годот вполне юзабелен, можно например сделать 3д тетрис, или 3д клон бомбермена с денди.
>если у тебя игровой процесс происходит на одном экране, нет скроллинга, не слишком много мешей - штук 10-15 на экран, то в принципе годот вполне подходит
репорт
>>617648
>РРЯ ЕСЛИ НЕ СИЛЬНО ПЕРЕДЕЛАЛ А ПРОСТО ДОРАБОТАЛ, ТО ЭТО НЕ ОПТИМИЗАЦИЯ
> моё лицо, когда необучаемые продолжают срать в треде, уверенные, что кого-то там унижают
А ты просто покажи игру на годоте и срать мгновенно перестанут. Только чет ты кроме боевых картиночек ничего не постишь.
> покажи игру на годоте
> ваши игры не игры
> шоукейс в оп-посте не шоукейс
Классека. Кстати, репорт тебе за обход бана, серло-шизло.
В шоукейсе игры, которые более-менее похожи на игры, безбожно тормозят.
Да хоть steam.com
В прошлый раз когда постили шоукейс и видосы на ютубе, годотопетухи их зарепортили и моча быстро эти посты потерла.
Лови лайкосик ♥
Далее уже работаешь с внутренней переменной. Если создаёшь объекты динамически в игре - то просто игнорируешь экспортный NodePath и сразу прописываешь нужный инстанс внутренней переменной.
Для удобства в скриптах делаешь функцию, которая чекает все переменные-ссылки на нуль и возвращает булево, тру если все содержат ссылку на инстанс или фолс, если хоть одна содержит нуль. Далее в начале каждого метода достаточно одной строчки:
if !check(): return
Ля, обиженка перешла на боевые картиночки.
Но если бы тред был мертвым, он бы утонул и его снесло. Если же ты просишь снести тред, значит ты боишься что этого не произойдет. Ты боишься годотеров, боже, как же ты жалок.
> Ты боишься годотеров,
Но их не существует. Когда забанили всех хейтеров, в треде остался один ОП и вся движуха ИТТ заглохла.
Как говорил юнити-шизик в вашем треде: "Все слишком заняты созданием игр, а не срачами"
Ты либо ОП, либо мод. Тут никого больше не осталось. Ну ещё фалкосемён одиноко бампает свой тред. Даже порнушники разбежались.
Да всем похуй, тред умер, раздел умер. У каких ребят ты спрашиваешь? Ребят больше не осталось, последние из тех, кому не было похуй на годот - уже сидят в бане неделями, дорепортились - пожинайте плоды.
Когда я хочу набампать 10 перекатов, вы траллируете меня - набивая бамплимиты ИТТ, наивно полагая, что я обижен.
ТАК. КАК. Я. ХОЧУ.
Я - Бог этого мира.
Не беспокойтесь о треде. Он не утонет. Потому что я, БОГ, этого пока что не хочу.
Раньше тут сидел много народу, нормально общались, обсуждали всякие темы, срались, потом пришли обиженные и начали репортить все посты, в которых ты не вылизываешь кому-то очко и позволяешь себе не соглашаться с чьим-то мнением. Пришел модератор и всех перебанил, он чей-то приятель из элитной закрытой конфочки вниманиеблядей раздела, видимо его попросили почистить раздел от неугодных.
С тех пор постинга нет, кто-то просто ушел с этой помойки, кто-то до сих пор сидит в бане, а ОП сидит в пустом ИТТ треде и уверяет всех (и видимо себя), что всё нормально и просто все ушли делать игры.
> Пришел модератор и всех перебанил, он чей-то приятель из элитной закрытой конфочки вниманиеблядей раздела, видимо его попросили почистить раздел от неугодных.
Назогач, шизик. Не нравится модерация - предъяви Абу в /d/
Ладно, я постараюсь исправиться. Не стукайте, братушки, все ж мы люди.
Ниче, щас инфинитач запустят, съебем с этой помойку в нормальное обсуждение без юнитишизика.
Тредус инфинитум енжинио срачелли.
Этой тулзе лет больше, чем тебе. Алсо, репорт. Ты тредом ошибся, петушок.
1) translate(V*delta)
2) move_and_slide(V, Vector3(0,1,0))
При нажатии клавиши 'W': в случае 1 все нормально - игрок перемещается в направлении взгляда, в случае 2 - тупо вдоль оси z, независимо от того, куда смотрит объект игрока. В чем прикол?
Я совсем нюфаня, если что
Ну, точнее, скорее всего разница в том, что в одном случае идет перемещение по локальному вектору z, в другом по глобальному. Это я понимаю. Но я хз, как для второй функции использовать локальный вектор оси z. Уже заколебался искать решение.
UPD: Я заебался "делать правильно", и скрафтил костыль. Но все равно хотелось бы знать правильный ответ на вопрос.
> Но все равно хотелось бы знать правильный ответ на вопрос.
Матрицы, чувак. Матрицы и прочий матан:
> # Basis vectors are already normalized.
> dir += -cam_xform.basis.z input_movement_vector.y
> dir += cam_xform.basis.x input_movement_vector.x
https://docs.godotengine.org/ru/latest/tutorials/3d/fps_tutorial/part_one.html
Блять, Абу! Убери вакабамарк, ретроград, бля! Сделай это!
> # Basis vectors are already normalized.
> dir += -cam_xform.basis.z (ЗВЁЗДОЧКА) input_movement_vector.y
> dir += cam_xform.basis.x (ЗВЁЗДОЧКА) input_movement_vector.x
Чуть позже. Я решил вопрос через dir = to_global(Basis().z)-to_global(Vector3(0,0,0)). Твой код не шибко опрятнее, особенно если to_global(Basis().z) и to_global(Vector3(0,0,0)) распихать по переменным. Но спасибо за ответ.
Хотя не, все-таки опрятнее.
Есть другой вопрос: is_on_floor() работает для проверки прыжков через жопу. Правильно ли я сделал, заменив его на небольшой test_move вниз? Мб есть способ грамотно настроить пол?
800x600, 0:09
> Твой код
Код не мой. Я просто разместил ссылку на туториалу.
>>18971
> Мб есть способ грамотно настроить пол?
Есть:
>>18969
> Чуть позже.
Нет, сейчас. Встань и пройди по ссылке.
> vel = move_and_slide(vel, Vector3(0, 1, 0), 0.05, 4, deg2rad(MAX_SLOPE_ANGLE))
>>18979
Добейся, чтобы в блендере все анимации работали. Если заработают в блендере, то заработают и при экспорте в годот. Видосрелейтед.
>Блять, Абу! Убери вакабамарк, ретроград, бля!
Это в /d/ можно поднять в треде о багофичах. Я так добился фикса стикеров, когда они отвалились, а всем как будто было похуй.
Хах, ржака пиздец!
Все верно, в юникоде × умножение.
Тащемто, ничего сложного. Ща сделаю тебе мини-гайд.
Основная непонятка тут в том, что есть отдельная нода для таких дел. В ней имеется удобный интерфейс для натыкивания полигона мышкой. В шейпах же предполагается, что ты будешь строить полигон кодом, потому никакого интерфейса там нет, только прямой доступ к массиву точек.
Если тебе прям срочно надо чтобы это коллижоншейп был и при этом хочется строить мышкой, то могу предложить такой хак:
1. Делаешь CollisionPolygon2D
2. Рисуешь форму.
3. Делаешь CollisionShape2D
4. Создаёшь ей новый ConvexPolygonShape2D
5. Закидываешь туда хотя бы одну ненулевую точку, чтобы он сохранился в файл.
6. Сохраняешь сцену с двумя нодами-шейпами.
7. Закрываешь сцену в годоте.
8. Открываешь сцену в блокноте.
9. Копипастишь значение строки polygon в строку points.
10. Сохраняешь, открываешь в годоте == PROFIT!
11. Далее можно удалить CollisionPolygon2D или наполнить его новыми точками и повторить пункты для нового CollisionShape2D/ConvexPolygonShape2D
> 5. Добавляешь туда хотя бы одну точку к трём дефолтным, чтобы сам массив точек сохранился в файл.
Быстрофикс.
>>19264
>>19269
Спасибo тебе, пoпрoбую завтра разoбрать тo чтo ты написал
Нo у меня такoй вoпрoс, пoка не захoдил сюда пoпрoбoвал сам
я сделал кинематик бади 2д > спрайт > кoлижн шейп 2д
Ему - кoнвекс пoлайгoн шейп 2д. Там кoлвo тoчек, я задал кooрдинаты тoчкам - пoлучил свoю фoрму. Я сделал тo чтo нужнo?
Маска, если чисто философски, это любой слой, наложенный поверх предыдущего. Соответственно, маска коллизии это коллижоншейп.
Что за шейдеры, поподробнее?
Это годототред.
Бля, как устранять подрагивания при движении мышкой? FP-Шутан. У меня нихуя не получается от них избавиться. А в коммерческих играх такого подрагивания нет. В чём секрет?
Ответ неправильный.
Я не уверен, что в винде вообще есть такой функционал без сторонних костылей.
Ну прост в настройках проекта во вкладке Display-Window есть опция поставить галочку always on top, видимо функционал есть, вот только мне надо чтобы always on top было не всегда, а когда выполняется определённое условие в игре.
спасибо, похоже то, щас потестирую
В гта са такая хрень была, бесила, когда окно своачивать пытался
Че несёт?
Да вообще заебало кодить и че-то там рисовать. Хочу, чтобы можно было ввести описание игры, а она сама сделалась по одной кнопке.
Ты только что менеджера, рассылающего емейлы РАБотникам, описал.
Не передёргивай, онанист проклятый.
Автогенерация сеттеров-геттеров и прочего бойлерплейта была уже в 90х годах в таких IDE как Delphi и разумеется, есть сейчас в современных IDE.
Хуан, ЗДЕЛОЙ!!
Главный переключатель состоит из трёх состояний (idle, move, dead)
К idle подключён единственный блендпейс из четырёх анимаций бездействия.
К dead подключена простая анимация погибания (в дальнейшем можно туда тоже блендспейс ебануть).
К move подключены включатель (action_start) и переключатель (action). К переключателю подключены блендспейсы действия (стрелять из лука, кастовать спелл, тыкать копьём, махать ножиком). После этого выход переключателя проходит через одиночный включатель, к которому дополнительно подключён блендспейс ходьбы. Логика токова: Когда мы просто ходим, работает анимация move, если мы совершаем действие, то оно одноразово проигрывается. Если мы прекращаем двигаться, включается простой. Если перса убивают, включается анимация помирания.
Прыжков и падений нет, потому что это топдаун.
https://twitter.com/reduzio/status/1190060915665887232
Почему он показывает недоделанное говно? Пусть сделает чтоб смотрелось заебись и показывает, он бы еще цветной треугольник запостил.
Вообще-то он постил. Да пусть постит, интересно, и картинка под конец неплохая получается (хотя у него пробы для интерьера и экстерьера разные, говно полное, в крайенжине уже лет десять это решено без ебалы и производительность лучше в реалтайме чем у гуана с запеканием).
https://youtu.be/TrL8S7vQ6LA?t=1089
Убили
Почему-то когда он получает фокус от других контролов (в Focus соседи прописаны), с ним ничего нельзя сделать вообще.
Годот 3.11
> вес экзешника 27 Мб.
В 2к20 для пк это ничто.
> На пеке запускается, на ноутбуке нет, типа ошибка вывода 3Д, лол.
Это плохо, попробуй переключить в gles2.
А что делает этот таймер, кликает что ли? Опиши, может получится на чем-то другом реализовать.
В последнее время постоянно: Ошибка постинга: Bad Gateway
Пишут, что при кастомном билде годота можно урезать конечный файл чуть ли не в половину. Попытался скомпилить годот для 2д и ожидаемо соснул, кастомная версия не запускается, отсутствует .pck файл. Прочитал что такая херня получается когда прописываешь в scons tools=no но без этого параметра модули не отключить. Ну хз, ладно, буду стоковым пользоваться.
>>21108
Да это нужно было для одной браузерки, уже неактуально, хэллоувинский ивент закончился, просто охуел с размера таймера. Просто таймер со звуковым сигналом оповещающий о спавне тыкв. Проще было на js реализовать, но хотелось в годоте поковыряться. Кликер я тоже хотел сделать, но не успел.
> отсутствует .pck файл.
Pck файл это твой проект. Тебе надо сделать экспорт своего проекта и положить в эту папочку этот собранный годотик.
Ну ты дал стране угля. Участвовать в конкурсах НА ВРЕМЯ, не обладая навыками в выбранном инструменте.
> Проще было на js реализовать
И делал бы на жс, а в годоте бы практиковался в стол. Кто тебя умным назовёт?
По существу вопроса:
Изучаешь файл конфига сконса. Понимаешь, что делает опция сконс=но, проделываешь аналогичные тебе операции.
(Забегая наперёд, скажу, опция сконс=но делает примерно такое: модуль1 = выкл, модуль2 = выкл, модуль3 = выкл)
(И ещё раз забегая наперёд скажу, в конфиге есть и опция триде=но, РТФМ, БИЧ)
Для браузерки, я так понял, ты собираешь выходной файл? Это, я так понял, будет файл васм, да?
Ну и двачую этого >>21156 пцк - это и есть твоя игра. Это пластинка, а файл васм - её граммофон.
Если ты хочешь прям ваще в один файл упаковать всё, то тут либо сторонние инструменты юзать (что-то типо васм декомпилятора, если есть, а если найду?), либо кодить на плюсах свои модули, прописывать их в конфиг сконса и конпелировать движок вместе с твоими модулями. Но тут возникает другой вполне резонный вопрос, если ты можешь в плюсы, без редактора, зачем тебе вообще ИГРОВОЙ движок? Возьми СДЛ/СФМЛ с БУЛЛЕТОМ и ебашь по хардкору с подливой под себя.
>>20997
ХЗ, что ты там нахуевертил. Показывай говнокод. УМВР.
Некогда мне модераторствовать. Я игры делаю. Ну всё, пока, мне Кодзима звонит.
Едрить колотить!
300 строк кода и ещё и половины работы не сделано: Раса Внешность, пол социальный конструкт, лицо, нос, уши, борода, тапки, перчатки. А еще остались плащи, платья, штаны, аксессуары.
нельзя по нормальному дебажить, потому что это не студийный проект а тупо скрипт для make
Это оно? Я сам не пробовал.
https://docs.godotengine.org/en/3.1/development/compiling/compiling_with_mono.html
Так ты поменяй конфигурацию, га какой нибудь release_debug, где в скрипте не будет tools=yes тогда и будет игра а не редактор. Про отладку сейчас не поясню. Гуглится что у людей получалось подключиться.
не пойму нахрена ему надо устанавлвать mono если оно работает со студийным C#
не, я хочу работать с кодом из студии. например ставить бряки в нужных мне местах. то что предлагает разраб - не дает этого - потому что там проект - это просто makefile, а не vsporj
Ну, например, можно попробовать создать пустой солюшен с пустым проектом с++ и накидать в него модули и заголовки. Должно же сработать.
А какая разница, что там мейкфайл? Исходники есть, а студия может подключаться к вообще любому запущенному ехе
Один хуй нужны дебаг-символы, чтобы студия показывала анону, как он хочет: строку исходника с исключением и брекпоинты. А дебаг-символы, насколько я знаю, Хуан не распространяет, следовательно, нужно собирать бинарник самому.
Ты мог бы накидать этот колхоз за то же время, пока писал свой пост с возражениями. Ведь это нужно сделать всего один раз, после чего у тебя уже будет свой собственный вс-проджект.
Так онон как я понял и так собирает сам. Просто он собирает редактор с флагом tools=yes.
Хотя имхо даже редактор можно дебажить, если в параметрах запуска указать какой то ключ, запускать сразу проект..
Сконс-скрипт, который генерирует вс-проект. Охуеть просто. Я же тебе даже болдом выделил.
он генерирует не вс проект, а говняный мейкфайл с которым ну вот вообще никак не поработать, а вся студия сводится к подсветке синтаксиса уровня notepad++ и чуток работающего intellisense (который больше пердит не понимая что за код и куда ведет, так как не умеет в конфиг этого мейкфайла)
Как же долго он компилится. Подожди, щас скомпилю и посмотрю, что там не так с проектом на выходе.
да вот смотри
бряка не цепляется. я не могу пошагово пройти по коду. потому что это не проект, а мейкфайл. Да, дебагер можно там подцепить через жопу процессы - но это всё говно
1280x720, 0:03
Мда. Отладчик отвалился от процесса при достижении этого бряка. ЧЗХ???
ну я же и пишу что через опу там всё(иногда, оно все таки доходит до бряк, и даже дает пошагово пройтись. а иногда отваливается. или отваливается в процессе).
ну тяжело студии работать с makefile (посмотри свойства проекта)
> (посмотри свойства проекта)
Так, падажжи. А если всё говно оттуда вычистить и добавить туда команды сборки майковскими сборщиками? Например, создать пустой проект и скопировать оттуда?
Ща попробую.
Сконс-скрипт, который генерирует вс-проект, котопый вызывает сконс-скрипт, собираюший проект.
На дворе 2020 год, а серьезные программисты код пишут в блокноте и дебажат на листочке бумаги и им это всё не нужно...
иначе я просто не понимаю любви в мире С++ делать makefile...
И дело ведь не в сложном пайплане из всяких тестов и сборок под стопятсотплатформ - все это делается через студию
Нужно как-то указать проекту заголовки, но я не знаю как, я же просто кот, у меня лапки!
>1107 ошибки
В общем, на этом я умываю руки.
Хуан явно пользуется НЕ студией, а какими-то линуксовыми инструментами.
>>21843
> код пишут в блокноте
Это вряд ли. Линуксовые гнусь-иде дают пасасать майковской студии. Вон посмотри видосы того же Пети-сканера, которые не про годот, а про жс. Он там в каких-то опиздохуительных идешках работает.
Из-за фильтрации текстур, включенной по умолчанию при импорте. Самое простое решение: переимпортировать пикчу для тайлмапа с пресетом "2D Pixel".
Более сложные решения (если ты ненавидишь пиксельную графику) - подгонять размеры отфильтрованных тайлов, чтобы они немного пересекались и швы заполнялись.
Почему вы ещё не собрались в кучу и не выпустили четвёртую криандию или голблинов?
(Автор этого поста был предупрежден.)
>тред обсуждения движка
>за обсуждение движка банят и удаляют посты
На самом деле непонятно, зачем этот тред и на какие темы в нём можно общаться.
Для того же, для чего и все остальные движкотреды.
Тред, в котором пользователи движка задают вопросы по движку и получают подсказки как и что сделать . С кодом в том числе.
>(Автор этого поста был предупрежден.)
А модер то кажется действительно умом тронулся.
>>22308
>Тред, в котором пользователи движка задают вопросы по движку и получают подсказки как и что сделать
А потом моча эти подсказки удаляет и всех банит.
Вам самим не противно в этом треде находится? Над вами даже потешаться уже не очень хочется. Просто уже грустно от этого.
А что ты в фалькотред не идёшь и не спрашиваешь, "а чего вы не объединились и не сделали Кирандию"? На фалькоэнжине как раз игорей нет.
>Над вами даже потешаться уже не очень хочется. Просто уже грустно от этого.
Ути-пути. Животному не дают вмешивать в разговор годотоспод, животное выгнали в загон для сранья. Животному теперь грустно.
> А что ты в фалькотред не идёшь и не спрашиваешь
Потому что он и есть - фалька. Это же было очевидно еще полгода назад.
Що! Выбачьтися нагайно!
Бан обходим, гражданин?
Вы попали в неловкую ситуацию, когда бешеная собака стала лаять и на своих хозяев. Вы теперь сами не можете нормально постить в треде, дрожите что моча и вас укусит за жопу.
Ну что, дожаловались? Разбудили кракена?
Не нравилось свободное общение? Ну теперь сидите в душном цифровом гулаге, где пернуть страшно.
Короче например хочу передвинуть свой копрокуб на 200 пикселей со скоростью 10пикселей/секунду, и чтобы он потом медленно замедлился перед остановкой. Как ето сделать?
Я хочу скриптом внутри сцены Car (а эта сцена инстансом находится в сцене world) менять что-то в сцене World (например текст и т.д.). Как это возможно реализовать?
нибейте, просто не привык к нодам годота, а в доках что-то не нашел подобной темы
Пиздец, давно уже забыл каково это снова по шагам учить новый стек, сижу просто из-за лени не могу прорваться через http://docs.godotengine.org/en/3.1/getting_started/step_by_step/your_first_game.html
> опыт в кодинге уже 4 года, но на совершенно другом стеке
Опыт в кодинге 12 лет. Джва года назад решил вкатываться в игоры. Обнаружил, что во всех движках одинаковый "стек" - мейнлуп с коллбэками. С лёгкостью перекатываюсь между движками, не испытывая проблем.
Какой нахуй мэйнлуп с колбеками, ты вообще понимаешь о чем речь? Давай назовем это паттерном хотя бы. Стек это языки+базы+сторонние тулзы которые ты используешь на проекте. Везде фантазеры, ору нахуй.
>Опыт в кодинге 12 лет.
А, ну тогда у меня все 20, если считать когда впервые на паскале в школе хэловрот высрал, ебать ты ньюфаня.
Если бы ты изначально изъяснялся по русски, нам было бы проще понять друг друга.
Там кавычки, ебанаш
Извини пожалуйста, я не хотел с ноги врываться на самом деле. Просто очень отвык уже чувствовать себя беспомощным в иде и испытатьвать ступор от: "хуй пойми куда тут тыкать что бы достичь желаемово", вот и прорвало на поплакаться. На самом деле надеюсь преодолеть лень, разобрать пару тьюториалов во внерабочее время пятница и суббота уже проебана, осталось ток завтра, и поселиться у вас тут надолго с мини-проектами для тренировок.
Шаблоны игор рекомендую изучать, которые прямо из менеджера проектов загрузить можно. Мне лично очень помогли на старте.
МБ почитать инструкцию на доксах? Может быть скачать проект-шаблон, посмотреть, как там реализовано?
То есть, у тебя по обычным коллайдерам ездит, а по CSG с включённой коллизией - нет? Я правильно понял?
Ну показывай. Что там у тебя нахуеверчено. Скринами, видосами показывай.
Короче включил у csg коллизии, но там надо ещё отдельно staticbody и collisionshape добавить, без этого не работало (хотя на ютубе у некоторых и так работало)
Похуй, в любом случае буду импортировать целую сцену из блендера, лишь бы работало.
> импортировать целую сцену из блендера
Про суффиксы знаешь?
Если добавить к имени блендер-меша суффикс -convcol то он импортнётся в годот, как выпуклый коллижоншейп (convex). Таким образом, тебе не придётся дополнительно настраивать коллайдеры в годоте, всё сможешь сделать в блендере. В сцене для каждой поверхности накидываешь дополнительный меш, называешь его, например Моя-ваза-2-convcol и вуаля - при импорте у тебя объект с коллизией автоматически подхватывается.
Даже есть блендер-плагин, который делает из одного вогнутого меша набор выпуклых https://github.com/kmammou/v-hacd по ссылке ниже есть скрины, насколько это удобно.
Первая папке этоо если внутри вкладки FileSystem кликнуть по res:// правой кнопкой и нажать Open
Вторая Project -> Open Project Data Folder
От папки res:// ожидается доступ только на чтение в системе потребителя (игрока). От папки user:// ожидается чтение и запись. Соответственно, изменяемые данные (сейвы, конфиги) тебе рекомендуется хранить во второй.
>>23171
Кроме того, папка res:// это функциональный аналог виртуальной папки программы ModOrganizer, широко известной в узких кругах. Если тебе это о чем-то говорит, то дальнейшие объяснения излишни. Если же нет, то если вкратце, при запуске игры существует возможность подключать несколько файлов архивов, причём более поздние при загрузке заменяют файлы с совпадающими именами в конечном результате. Это даёт гибкий механизм для патчинга, моддинга и довнлоадконтентинга.
Fbx пока что только в бета-версии реализован. Оптимальный вариант сейчас GLTF. Но в будущем конечно даже я на fbx перекачусь, ибо негласный стандарт.
Если нужно прямо сейчас, то пока что только конвертировать.
Насчёт какой формат лучше, это вопрос субьективный - удобства и привычки, ибо все современные форматы поддерживают и анимации, и материалы.
Реализация генератора персонажей из LPC идёт полным ходом. Уже даже есть, чем похвастаться.
Принимаю советы и пожелания по интерфейсу. Пока что интерфейс через свойства (пик 4). Скорее всего по окончании работ буду регаться на ассетлибе и выкладывать ассет в паблик.
>2k20 век
>не в курсе, что сажа с картинкой не работает
Ты с какой целью поднял утонувший тред?
>какие плюсы и минусы?
Здесь за обсуждение этого банят и удаляют посты, иди в движкосрач-тред, там пояснят.
Плюсы: опен сорс - не надо никаких разрешений и процентов. Самое живое комьюнити опен сорс движков сегодня. Довольно удобный редактор. Есть 3д. Много туториалов. Поддержка кучи платформ (но нет консолей). Продолжает развиваться и оптимизироваться.
Минусы: мало ассетов, какую нибудь воду с волнами и плавучестью придется писать самому. Не очень быстрый, но с простой игрой скорее всего ты не упрешься в ограничения. Спорная архитектура, сложно модифицировать. Развивается медленно, серьезные улучшения вводятся за год.
Языки: питоноподобный свой язык. Можно писать прямо на c++. Сейчас добавляют c#, пока не все платформы. Есть биндинги на разные языки, типа. Rust, Haskell и т.д.
> (но нет консолей)
Тащемта есть, но не бесплатно.
https://docs.godotengine.org/en/3.0/tutorials/platform/consoles.html
http://www.lonewolftechnology.com
В остальном всё двачую.
Сейчас затестим
https://github.com/lawnjelly/godot-lportal
Опачки! Ну раз такое дело, то можно повторно рассмотреть воксели в качестве тиррейна
https://github.com/Zylann/godot_voxel
Потралы для закрытых пространств а-ля Квейк 1-2. На открытых тормозов будет даже больше.
Так у зиланна есть простой хейтмаповый террейн. Не знаю как давно он его обновлял.
Видос 2: интерполяц.камера в сцене (следите за пушкой и тенью).
Трисётся триде сцена, когда я перемещаюсь по ней KinematicBody'ей при помощи move_and_slide. Трисётся мой говнокод, трисутся скачанные ассеты, трисутся скачанные демки.
Вопрос. Это у меня пека хуёвый или одно из двух? Может там где-то нужно какую-то галку отметить?
Как бросить объект в триде?
Вот я скажем, взял в руки бомбу риджидбоди, задал ей режим KINEMATIC, чтобы не тревожила физический движок, выставил collision_mask исключающий персонажа, чтобы не толкала, если этого не сделать, получается красивый, но нежелательный эффект: если засунуть бомбу в свою капсулу коллизии, начинаешь взлетать и летишь, летишь, летишь.
И вот я наконец решил бросить бомбу во вражину.
Я возвращаю ей режим RIGID, возвращаю маску коллизии и она просто падает вниз, как бы я не замахивался. Я конечно, сразу подумал, что надо вычислять вектор, куда ей бросать и задавать ей силу броска через add_force, но она продолжает просто падать вниз.
ЧЯДНТ?
И ещё проблема. Когда объект закреплён у персонажа, на него не действуют коллизии (маска соответствует стенам) но сквозь стены он проходит.
Я уже 100% уверен, что я делаю это неправильно. Но правильные способы не гуглятся.
Могу завтра посмотреть. Вроде что то читал про проблемную смену ригид и кинематика, но могу путать.
можешь попробовать использовать обычный спрайт и ноду анимации, которая будет менять тектсурку спрайта
А, ну это вариант, да, благодарю.
> минимальный проект
Берёшь пустой проект. Качаешь туда ассет FP контроллера ( https://github.com/aarroz/simplefps ). Кидаешь на сцену персонажа, пару статиков на пол и стены, пару кубов - риджид боди. В сцене персонажа добавляешь рейкаст из головы вперед на 3 метра. В скрипте персонажа пишешь пик 1.
Причем тут выбор? Мне нужна помощь по общей физике.
>>23203
https://refactoring.guru/ru/replace-conditional-with-polymorphism
Иначе на эти мучения страшно смотреть
>>21849
Бля, вам в этом то году не тошно от этих заголовков?
> Причины рефакторинга
>
> Этот рефакторинг может помочь, если у вас в коде есть условные операторы, которые выполняют различную работу, в зависимости от:
>
> класса объекта или интерфейса, который он реализует;
Нет.
> значения какого-то из полей объекта;
Нет.
> результата вызова одного из методов объекта.
Нет.
На скриншоте код тестовой кнопки, которая переключает вид ифами, в зависимости от пола, да, но в реальный код это не пойдёт. Будет внутренний генератор, выдающий персонажа и жсон-файл с его характеристиками, которые без условных операторов будут грузиться в объекты-нпц.
Не придётся. Я не вижу более правильных и корректных способов делать неписей в эрпогэ, кроме как через фабрику.
1920x1012, 0:21
Вот так работает если сделать по туториалу.
Не работает с гридмапом по понятной причине, но думаю несложно прикрутить будет по принципу камеры в думе.
Спасибо, товарищ! Так держать!
>1993
>молодые шутливые программисты из id пишут движок, который автоматом собирает уровень в бинарное дерево и использует его для куллинга, работая на 4 мегабайтах оперативки
>2020
>для использования куллинга в годоте нужен сторонний модуль, который заставляет тебя РУКАМИ размечать комнаты и РУКАМИ рисовать порталы
Скорее так.
Такие вещи бесплатно не раздают. Ну, до 2001-го точно не раздавали.
Даже ты если придумаешь охуенно крутой алгоритм, я уверен, что ты не побежишь исходники на гитхаб выкладывать.
Лично я даже что-то просто неплохое не буду выкладывать, никогда не понимал это желание публиковать исходники.
Сделал что-то хорошее - продавай, плохое - спрячь и не позорься.
Единственное исключение, если бесплатность является частью модели монетизации, как у того же блендера.
А жопой смотрел, оно уже само применяется
Не, можно и к дефолтному добавлять, только проверил
Ты описываешь что то подозрительно кривое, практически уверен что так делать не надо. Посылай сигналы, отключай обработчики кнопок.
Чот внатуре какая-то лапша.
> В идеале хочу, чтобы после выполнения одного moveforward/back сразу выполнялся другой
Вот с этого и надо было начинать: "Я делаю задачанейм, для этого я сделал такой код, он работает не так, как мне надо".
Через стейт мащин делай.
Как так сделать?
Пробовал с помощью yield останавливать функцию btnpressed, посылая сигнал в функцию moveforward, и когда выполнение в moveforward заканчивается, посылать обратный сигнал на завершение yield.
Но в итоге что-то идёт не так, btnpressed не дожидается выполнения другого блока, а идёт дальше; и цикл внутри btnpressed становится бесконечным.
Куда копать и как сделать лучше?
Через анимации. Кидаешь animation player в сцену, и можешь анимировать любые проперти у любых нод.
Но ты заебешься это делать, я бы тебе рассказал, какой аниматор неудобный, но тут за это банят
> сделать затухание одной сцены и плавное появление другой
Можно через шейдер либо анимацией, изменять альфу или например свет мирового окружения.
> катсцену, где объекты будут перемещаться из одной точки в другую
Кинематикбоди, навмеши либо скрипты.
Перейди от йелдов к синхронному коду.
Например (псевдокод)
if(nexttasktime >= os.time.now):
nexttasktime = os.time.now +tasklength
change_task()
640x360, 0:08
> сделать затухание одной сцены и плавное появление другой
В камере плавно затемняешь светофильтр, затем загружаешь новую сцену и в камере плавно засветляешь светофильтр. При этом камера является синглтоном.
> запилить катсцену, где объекты будут перемещаться из одной точки в другую и проигрываться звуки в конкретные моменты времени
анимейшонплеер
>>27256
Если тебя всё время банят, значит тебе здесь не рады. Уйди отсюда и больше не приходи.
>>27121
>>27118
>>27103
>>27117
>>27282
Суть такова: на Вики нихуя не нашел по этому поводу, но нашел ответ на годот qa и таки запилил подобие собственной стейтмашины. Оказывается тут даже сигналы не нужно посылать, тупо вставляешь функцию в елду и ждёшь ответ о завершении функции. Всё!
yield(puknut_v_thread(),'completed')
А сигнал completed посылается автоматом при завершении функции puknut_v_thread(), даже свои сигналы не нужны.
Я хочу, чтобы это было написано в Вике, вместо этого там ненужная поеботина про сигналы.
Сигналы - это идиоматичная конструкция, твоя - скорее как удалять гланды через анус, ну работает у тебя радуйся, в вики такое писать не надо.
Попробуй вот этот ассет скачать
https://godotengine.org/asset-library/asset/424
Запустил его, приделал оружие к игроку, ничего не дрожит.
Спасибо. Погляжу.
Какой классный код у этого контроллера! Всё, как я люблю. Ентерпрайз-стайл. Однозначно забираю для своих проектов.
Код классный (Gary, я узнал его!), но не зря автор назвал его "стартер". Есть куда расти. Я немного доработал. Зацените, годаны.
Все можешь делать ассет и продавать.
Я начал делать и столкнулся с фундаментальным ограничением. Колиженшейпы нельзя двигать. При попытке менять длину капсулы, она проваливается под пол. Стало быть, я сделал два шейпа: шар на уровне ног и капсула сверху. При нажатии ктрл, капсула выключается, голова с камерой перемещается ниже, на уровень ног. При отжатии включается капсула и камера/голова возвращается на свое место.
Теперь появилась вторая проблема. Если отжать контрол в низком проходе (ползанье по вентиляции, класека), включившаяся капсула моментально выталкивается из прохода наружу. Мне что, делать рейкасты, чтобы определять высоту потолка над головой и ширину стен по бокам? Или я изобретаю велосипед, и есть функционал искаропки?
Я чет нигде таких не могу найти.
Я вроде бы сам свелосипедил (см. гифрелейтед). Кидаю 2 рейкаста. И по условию, если (игрок касается стены && горизонтальный рейкаст == false && вертикальный рейкаст == true) выполняется, то перевожу игрока в стейт "висеть". Вроде бы все работает как надо, но может есть какие-нибудь еще способы лучше и правильнее?
Это норма
Да, я тоже читал. Вопрос в том, как оптимально определять нахождение в тесном пространстве и задерживать анимацию вставания в полный рост?
А в феврале будет годот-конфа в Брюсселе, опять придется ехать тусить, эх, не видать нам вулкана в ближайшее время походу.
Я нихуя в этом не разбираюсь, но на ум приходят два варианта.
1) Кидать рейкасты во все стороны
или
2) Рисовать на карте, там где узкие проходы, невидимые области, попадая в которые игра знает, что это узкий проход и не дает игроку встать, пока он не покинет эту зону.
В нормальных играх это делается путем рисования ручками на карте всех узких проходов, где нельзя встать. Всё остальное - васянство и нагромождение костылей, которые рано или поздно сломаются.
В инете пишут что это может быть не от ссао, а от теней.
Попробуй все что тут советуют https://github.com/godotengine/godot/issues/13129
>>28527
Толсто.
Вечером попробую этот вариант решения проблемы, но он вроде не помогает на все сто, обещают убрать этот баг к версии 3.2-4.0
И то верно. Что-то я сразу не сообразил. Мне же нужен факт наличия мешающих объектов, а не координаты столкновения.
Спасибо!
Как мне нравится этот код. Это прямо гопнический код с того мема "ПАДАЖЖИ ЁБАНА". Вы только вглядитесь в эти строки. Если кроучин есть, то "слыш, давай сюда". Если, кроучина нет, код как бы переспрашивает у анкроучина "а если найду?" и если действительно находит, то "слыш, давай сюда" если же не находит, то "свободен до следующего тика".
Хули этот коммент еще не удален из-за его токсичной маскулинности?
Хотя была идея каким-то образом задействовать шейдеры, но тут мои знания еще хуже
1920x1080, 0:28
Что именно ты собрался оптимизировать? Эта демка демонстрирует оба метода, и анимацию тайлов, и создание спрайтов.
Вроде бы флаг transpose в set cell это поворот на 90 градусов, можно комбинировать с флипами чтобы получить остальные.
Я про то, что в общем случае этот метод в принципе не будет работать для гексагональной сетки. Если только тайл не симметричен
Фиг то там. Если тайл симметричен, то да. А так - нет.
Но вообще забей. Это я уже редкоиспользуемый случай разбираю. Это все мелочи. Просто могли бы сделать более удобно и функционально
Как трактор подъезжает к полю - он подъезжает к одному из чанков и эта чанк из одного прямоугольника превращается в набор маленьких прямоугольников, заполняющих этот чанк.
Для поля с пшеницей нужен мультимеш. Гридмап это для более кубических игор, типа майнкрафта, портала.
Твой велосипед - норм. Так и делай.
Нет. Сначала делаешь экземпляр всей упакованной сцены, потом можешь из него вытянуть конкретный чайлд и поменять ему родителя.
Однако, ничто не мешает тебе сделать отдельной сценой интересующую тебя ноду и грузить её отдельно.
Например, в сцену грузится упакованная сцена "бомба", в составе которой есть нода "огонь". Нода огонь это тоже сцена, и если она понадобится тебе отдельно, то ты просто грузишь упакованную сцену "огонь". Мысли нодами.
>Однако, ничто не мешает тебе сделать отдельной сценой интересующую тебя ноду и грузить её отдельно.
Не хотел бы делать так, ибо дохуя всего получится. Собственно поэтому и спросил.
>потом можешь из него вытянуть конкретный чайлд и поменять ему родителя.
Не подскажешь команды для этого? если не влом
Ты add_child имеешь ввиду?
> похоже сам разобрался
Всё равно пости решение в тред. Для ньюфагов. Для архива.
Нужно что-то вроде такого:
old_parent.call_deferred("remove_child", node)
new_parent.call_deferred("add_child", node)
Но надо проверять. Возможно ещё set_owner придётся дёргать.
А обычный move_child разве не подойдет?
Блин, я как-то через жопу прочитал описание. Сорь,сегодня чет вообще уже невнимательный.
На основе такого принципа теоретически можно организовать автоподгрузку открытого мира убираем ноду из сцены, а она остаётся в памяти. Формируем пул из этих нод. Если игрок АТАШОЛ достаточно далеко, ноды выгружаются из памяти. Если подошёл близко - снова добавляются в дерево сцены. на дистанции N метров от игрока ноды понемногу загружаются, чекая нагрузку и не перегружая систему.
Ммм.... Писечка. Надо тестить.
Полтора двачера это не геймдев комьюнити.иа хуесосят все совсем другой движок.
Правильно. А ещё есть сладкий деревенский ONREADY. С его помощью можешь объявлять сватьев и братьев без функции? главной области скрипта (или как там). Например:
onready my_var = $path/to/node
или
onready my_var = get_node("path/to/node")
Это объявление сработает перед вызовом _ready() но после того, как скрипт полностью активируется, объявится, наготовится, так что эти переменные там тоже будут видны.
Бля. Объебался с кодом.
onready var my_var = $path/to/node
или
onready var my_var = get_node("path/to/node")
И ещё есть ленивая инициализация через геттер. Важно помнить, что внутри скрипта её придётся вызывать через self, чтобы геттер сработал:
var lazy_var setget , get_lazy_var
...
func get_lazy_var()
-> if is_inside_tree() && lazy_var == null:
-> -> lazy_var = $path/to/node
-> return lazy_var
Учи английский. Или делай игры в 1С. Там тебе всё по русски будет.
Был ещё ублюдок нико-дев, но слился недавно. И он не совсем уроки делал просто девлог. Есть ещё ублюдок айрвикар, но он просто всякие фишки показывает, да еще на версии 2. Был ещё некий ШЕМ, но он слился практически мгновенно. Ещё ублюдок сканер пиарил потаскуху вебгёрл, но она выкладывает очень вяло, вангую что уже слилась по тихому.
В общем, русскоязычный рыночек открыт. Я уже даже сам подумываю а не вкотиться ли?
Десериализовать ещё можно через свой велосипед. Ибо распаковка пакед сцены это по факту десериализация и есть.
Задача - максимально подробно изучить тему. Насчет сериализаци - пони. Но не очень пони как (а самое главное зачем?) на практике реализовать подобное. Это же дополнительная ебля на пустом месте, а я наоборот хотел как проще.
И еще, если я более или менее въехал в суть этого термина - сериализация позволяет упакованным сценам работать быстрее? То-бишь лучше не ебать мозги, и делать как в туториалах?
Я отвечал на этот вопрос:
>>29756
> Экземпляры могут быть только у упакованной сцены? Других вариантов расплодить ноду не существует?
Поэтому такой ответ.
Экземпляры ты можешь делать классическим способом:
var new_obj = Node.new()
Этот код создаст в памяти новый экземпляр объекта типа (класса) Node.
Что делать с ним дальше - решать тебе.
>>29772
> сериализация позволяет упакованным сценам работать быстрее?
Сериализация позволяет упаковывать объекты для передачи в стороннюю среду: файл на диске, абонент по сети.
Насчёт скорости ты понял не совсем верно. Скорее всего имелось ввиду что тебе не нужно изобретать свою сериализацию, а БЫСТРО использовать имеющуюся.
> лучше не ебать мозги, и делать как в туториалах?
На начальном этапе да.
Если ты новичок в программировании вообще, советую параллельно смотреть/читать материалы по общему программированию.
Когда ты освоишься, ты увидишь, что туториалы дают неоптимальные для профессионала, но понятные для новичка методики.
>Насчёт скорости ты понял не совсем верно. Скорее всего имелось ввиду что тебе не нужно изобретать свою сериализацию, а БЫСТРО использовать имеющуюся.
Не, я в том плане, что последовательность битов должна выполняться побыстрее в плане производительности? Тут же вроде питоноподобный язык, и все такое...
> последовательность битов должна выполняться побыстрее в плане производительности?
Сейчас пекарни такие, что выигрыш от байтоёбства будет виден только под микроскопом. Пруф ми вронг.
Нойс. Теперь, пжлст, эту тяночку вот в эту локацию https://github.com/godotengine/tps-demo вместо того робика, что там есть.
Когда надо чтобы метод вызвался не сразу, а когда объект с ним связанный не будет никем занят. Иначе могут быть случаи, когда вызываешь - и хуяк - крош на десктоп.
Здравия желаю, капитан! Я, собственно, спрашиваю, как определить, когда это действительно необходимо, а когда можно пренебречь. Я просто пока еще не до конца въехал в то, каким образом различные ноды и сцены ведут себя в течение программы. Где бы про это поподробнее прочитать?
Начни со статьи в годот докс про деферред колл, я полагаю. А там уже по непонятным словам в статье и гугли.
Короче. Юзай деферред, когда вызов метода напрямую приводит к рандомным странным ошибкам.
> объясни тогда хотя-бы логику применения этой функции вот здесь
Удаление чайлда и добавление в другого парента происходят в одном фрейме. Это может вызывать падения, потому что добавляемый чайлд ещё не удалился из одной ветви дерева, а его уже пихают в другую ветвь. Причём происходить это может рандомно. Потому и отложенный вызов.
Из того что я читал, делал такие выводы: движок каждый кадр выполняет всем нодам process, physics process и input, деферред выполняется после этого всего, перед следующим кадром (т.е. между кадрами). Таким образом туда надо слать все, что может повлиять на непосредственно используемое. Примеры: переключать сцены (ресурсы сцены используются). Менять формы коллижнов (могут быть в процессе сравнения в физическом движке) Подозреваю что добавление-удаление чайлдов в ready тоже может пошатать. Также если ты запускаешь отдельный поток то из него надо взаимодействовать через деферред.
> и все работало
Оно будет работать. А потом внезапно на момент удаления чайлда, чайлд окажется заблокирован собственным коллбэком и его удаление отложится до конца фрейма. Как верно написал анон выше. Тут-то ошибка и выскочит. Причем не у тебя, а у твоих игроков и они тебе телефоны на саппорте оборвут. :)
>Причем не у тебя, а у твоих игроков и они тебе телефоны на саппорте оборвут. :)
Вот потому и хочу въехать в эту функцию. Т.к. это очень коварная херь.
Вообще, хорошо бы нашелся какой-нибудь Антон-альтруист, который бы запили по этой теме подробный гайд "от" и "до", со всеми нюансами, чтобы раз и навсегда закрыть тему. Но спасибо что хоть дали направление в котором думать, когда используешь эту функцию. Лучше чем ничего.
выпущенные 3d игры на godot?
так, чтобы при этом можно было поиграть
да кто сейчас в игры играет, все только делают
полно проектов в открытом доступе в сети лежит
геймлпей там есть, модельки бегают, чё тебе ещё надо?
Свойство спрайта (self_)modulate
Миллионом способов. Выбирай какой тебе по душе.
1. При столкновении физических объектов каждый из них получает инфу о соседнем объекте. Если игрок и говно — физические, то говно просто напрямую открывает у игрока поле "кем является" и вписывает туда "говноед".
2. Если это просто спрайты, можно реализовать велосипедистую проверку коллизий через ААББ.
3. Можно передвигаться по клеточкам и сам факт перехода в клеточку с говном автоматически обмазывает.
4. Сообщения. Игрок куда-то вступил, посылает сообщение "игрок вступил" в менеджер сообщений. Говно подписано на сообщения типа "вступление". В сообщении нужно указать какую-либо идентифицирующую инфу, например координаты. Говно чекает координаты в сообщении и если они совпадают со своими, посылает сообщение "атака говном". Игрок подписан на сообщения типа "атака" и получив сообщение "атака говном", считает возможность увернуться от атаки. Но уворот не работает, потому что он только что вступил куда-то , что вызвало кулдаун уворота. В итоге, игрок признаёт, что он вступил в говно.
И т.д. и т.п.
Можно.
Смысл в такой компоновке найти можно.
Трансформ игрока остаётся в центре мира, в то время, пока трансформ тела игрока перемещается по миру. В любой момент ты можешь применить некую глобальную трансформацию. Например повернуть на одинаковый угол всех персонажей внутри сферической локации — полости вселенной наоборот с толщеходами.
Но вообще, смысл ещё может быть в том, чтобы хранить общий скрипт в такой корневой ноде, который будет иметь естественный доступ ко всем нодам-детям. И ты сможешь без задней мысли менять функционал игрока. Например, у игрока два тела: человек и камера-дрон, по клавише ты переключаешься между ними.
Ты ещё не видел как люди корневую ноду просто 2д координатой делают. Это как раз то, что годот поощеряет, вроде как, челик выше всё правильно написал.
Бля, ещё бы нормальное ООП завезли, а не это говно.
> а не это говно
Чем тебя не устраивает?
Но вообще, нахуй ООП в играх? В играх лучше ЕЦС (все игровые данные - это таблицы сериализованных на диске данных, обращение к свойству игровой сущности поднимает с диска виртуальный столбец таблицы (поле) со всеми строками (записями) и ты можешь быстро пробежаться по одному полю сотпицоти объектов).
> использует говно
> жалуется на него
> ему предлагают вариант лучше
> говорит, что это его путь
Сделал через ареа2д проверку касания с говном и дебагг в виде слова jopa. Слово jopa выводиться при касании с говном, но при попытке сделать
get_node("kakashka").set_visible(true):
годот шлёт меня нахуй, типа такого нода нет. Нод kakashka - это спрайт в сцене с ареа2д.
> get_node("kakashka")
Здесь ошибка.
Проверь, чтобы относительно скрипта из которого этот метод вызывается, какашка была по правильному пути.
Господа, а можно ли как-то в 2д проекте сделать тени у объектов короткими?
Здесь у меня справа сверху источник света (обычный Light2D) и на объекты повешены LightOccluder2D. Хочется чтобы тени были не бесконечно длинными, а примерно как у нарисованных сверху бочек. В голову приходят разве что шейдеры и маски, но пилить такое для каждого объекта я замучаюсь, хотелось бы найти какое-то универсальное решение.
Я на этом проекте занимаюсь только всякими свистелками и перделками (свет, эффекты, анимации и т.д.), весь основной код пишет другой программист, и он не хочет добавлять в игру 3Д ни в каком виде. Поэтому я и вынужден искать решение в рамках 2Д.
Я сейчас на машине без годота. Попробуй два источника света? Возможно они будут как-то уменьшать тень перекрещиваясь?
Алсо нашёл вот это, но лень переводить. Есть ли там ответ? https://godotengine.org/qa/40039/how-to-achieve-dynamic-directional-2d-lighting-and-shadows
>Попробуй два источника света
Пробовал, из-за того что у нас много объектов то там начинается черти что, появляются всякие лишние тени и т.д.
>нашёл вот это
Ага, я тоже уже нагуглил этот тред, там много болтовни вокруг да около, но в итоге ничего дельного не посоветовали человеку
Мне, например, всё понятно. Английский учил по ютубу спустя много лет после школы.
https://www.youtube.com/watch?v=O3mge9GM6rE
По порядку абв, но в душе г
Пиши адрес.
if animate.get_frame() == 5:
myfunc()
На первый взгляд все работает нормально, но когда игра слегка перегружена с объектом вообще какая то дичь начинает твориться, а потом он просто замертво встает. Похоже я что то не так делаю, как правильно?
пикрандом
Это я знаю, но в анимации фрейм рейт менять нельзя, в AnimatedSprite это намного удобней. Но вот как скрипт из AnimatedSprite зпустить, хз.
Точно, благадарю.
Но вопрос, а удобно ли на нём делать какие-нибудь сложные игры с процедурной генерацией мира типа клона майнкрафта или рогалика (лол) или для этого лучше использовать по старинке обычные ЯП?
А что насчёт кастомных форматов файлов? Могу ли я сам сгенерить файл ресурсов и загружать их через мой код? Можно ли таким образом и DLC/моды создавать? Или свои форматы сейвов. Или свой свпособ обращения к серверу через сокеты?
Ещё я слышал, что можно написать свой модуль для годота, но чтобы его использовать, придётся весь годот перекомпилить?
> Но вопрос, а удобно ли на нём делать какие-нибудь сложные игры с процедурной генерацией мира типа клона майнкрафта или рогалика (лол) или для этого лучше использовать по старинке обычные ЯП?
Это возможно
https://youtube.com/watch?v=12pQxYm2MOY
И рогалики тоже, есть видеотуториалы, есть ассеты.
> А что насчёт кастомных форматов файлов? Могу ли я сам сгенерить файл ресурсов и загружать их через мой код?
Да возможно, я часто генерю текстовые файлы ресурсов если много копипаста объектов.
> Можно ли таким образом и DLC/моды создавать?
Можно, где то в треде писали, как сделать
> Или свой свпособ обращения к серверу через сокеты?
Можно.
> Ещё я слышал, что можно написать свой модуль для годота, но чтобы его использовать, придётся весь годот перекомпилить?
Придется. Это не очень сложно, один раз разобраться и потом все аатоматически.
А моды у нас как в Скайриме с мод-органайзером. При запуске игры движок опрашивает прописанный в конфигурации главный файл архива. Аналог esm. Далее имеется функция, с помощью которой ты можешь загрузить дополнительные архивы, аналоги esp, bsa.
И самое главное: при загрузке архивов строится виртуальная папка res:// в которой ресурсы при совпадении имён берутся из более поздних архивов. Ты сможешь организовать систему патчей и модов с проверкой зависимостей и порядка загрузки.
Ммм... Писечка!
Годот и 3Д можешь забыть - будет работать медленнее чем OpenGL immediate mode.
инбифо: Автор этого поста был предупрежден.
Годится. В тридэ там будут проблемы если ты замахнёшся на опенворлд уровня ведьмака-3. Платформеры типа твоего пика там нормально зайдут. Физика там — общепризнанный bullet. Правильно расставь массу предметов и будет тебе неплохая симуляция.
В атласе ты хранишь не отдельные фреймы, а спрайт-листы целиком. Доставай из атласа спрайт-лист, после чего дроби на спрайты. У меня это именно так работало.
Изначально думал сделать так, когда экспортишь спрайт кусочка, то делаешь это с прозрачностью цельной картинки, без обрезания краев. Получается что центр это всегда конечная точка для любого куска пазла. Где я ошибся?!
> центр это всегда конечная точка для любого куска пазла
Що?
> не вручную же координаты конца ставить
Пусть скрипт запоминает начальные координаты кусочков. Или ЯХЗ что там у тебя за пазл. Это обширное понятие.
Пиздят. Программировать придётся везде. Но у нас программирование проще и доступнее (из бесплатных).
Нет, абсолютно такое же программирование, единственное где проще это в констракте, еще проще только готовыми шаблонами, но это уже не программирование
Ну есть гдевелоп, но он неудобный, они пошли по провальному пути гимпа и закономерно обдристались. Контракт он как фотошоп, чем меньше аналоги на них похоже тем хуже аналогам
Тебе делать нехуй? Я сказал - годот проще и доступнее всего в кодинге. Ты вылез спорить, при этом сам же говоришь, что аналоги менее удобные.
Я не видел ничего проще объектного дерева годота. Идеально по полочкам разложенный функционал, каждый класс на своём месте и не тянет от предков ничего лишнего. Вот на мой взгляд одна из самых важных составляющих годота.
Благодаря этому, кодится в годоте легко и непринуждённо, многие вещи я постиг самостоятельно, даже не прибегая к документации, ибо названия методов и аргументов грамотно спланированные говорят сами за себя. В движках-конкурентах я не мог ни шагу ступить без документации. Даже в платных. По этому параметру они на несколько шагов отстают.
Вот поэтому я назвал кодинг в годоте самым лёгким, а не из-за питоноотступов, как многие наверняка подумали. Срал я на отступы. Когда умеешь кодить, эти частности не отвлекают.
Да чо, оставайся. Расскажи ещё что-нибудь интересное. А я буду кнопочки нажимать над понравившимися постами.
https://docs.godotengine.org/en/3.1/getting_started/scripting/visual_script/getting_started.html
Но нахуя? Это то же самое программирование только неудобнее раз в 100.
Оно и в годоте эмиссия.
https://docs.godotengine.org/en/3.1/tutorials/3d/spatial_material.html
Emission
Emission specifies how much light is emitted by the material (keep in mind this does not include light surrounding geometry unless GI Probes are used). This value is added to the resulting final image and is not affected by other lighting in the scene.
Удваиваю.
Давай поиграем в игру: Ты должен найти на пикрелейтеде точку входа в функцию, пока не наполнилась яма с кислотой. Но дверь из ямы ты сможешь открыть только если укажешь точное количество строк обычного скрипта, которым заменяется пикрелейтед.
В смысле после запекания?? Я на скринах вижу динамические тени.
Читай доки анон я не шучу там все есть, и bias, и contact в глес3 шейдере, и про шаг сетки рейтрейсера и про его режимы работы (почему шаг сетки воксельного освещения важен объяснять думаю не надо?)
https://docs.godotengine.org/en/3.1/tutorials/3d/lights_and_shadows.html
> и bias, и contact в глес3 шейдере, и про шаг сетки рейтрейсера и про его режимы работы
Есть-то оно есть, но выглядит всё равно мерзко. Я как ни крутил настройки, так и не добился красивых теней. Ну, впрочем, может это я ниасилил.
Контакт фикс на второй пикче тоже мерзко выглядит.
Спасибо, анончик, вроде помогла подкрутка биаса (контакт вообще лучше не трогать), теперь тени относительно кошерные. Боже, как же обожаю эту трассировку лучей в запеченном свете!
Это в годоте такие ровные тени завезли?
Эт понятно, но ты до конца досмотри. Там грид из мультимешей и это даёт ещё больший прирост. Как?
Еще вопрос, почему при включении MSAA 16x сцена так же начинает лагать, хотя на ней не так уж и много объектов.
Gi probe это реал тайм, чтобы запекать свет надо делать все по инструкции запекания, сомневаюсь что ты все это проделал
https://docs.godotengine.org/en/3.1/tutorials/3d/baked_lightmaps.html
П.с. про мсаа х16 не могу ничего сказать, всегда считал что -30фпс это норма, там же для отображения 1 пикселя нужно в 16 раз больше рассчетов, то есть примерно равно увеличению разрешения в 4 раза??
func _physics_process(delta):
print(1)
func del():
queue_free()
Когда запускаю функцию del спрайт исчезает, но в инспектор продолжает писать 1. Почему код продолжает работать, если объект удален?
Чудеса оптимизации. Куеуе-фри не удаляет объект сразу, а ставит в очередь на удаление. Пока он в очереди, он будет обрабатывать процессы. Поэтому, останавливай колбэки если удаляешь объекты таким образом (через очередь).
Set physics process в его случае
https://www.youtube.com/watch?v=yLm7-w8sh8M
Как называется такой вид игры, когда какие-либо элементы располагаются на плитках, хексах (как в CIV). Вроде и сам понимаю, но думаю есть конкретное определение для данного типа игр.
И есть ли какие-либо материалы, как организовать это в годо. Пикрелейтед взят с примеров на годо https://shmellyorc.itch.io/shipwreck, так что скорее всего инфа где-то может да и есть.
>>Как называется такой вид игры, когда какие-либо элементы располагаются на плитках, хексах (как в CIV).
думал, что tile-based game, но вроде как grid-based game.
Поправьте, если я не прав.
Tilemap, имхо, это же просто принцип построения 2D окружения из набора некоторых визуальных данных, но никак не принцип взаимодействия с объектами внутри игры.
Пишу относительно текущих знаний, но могу ошибаться.
> принцип взаимодействия с объектами внутри игры.
Принцип везде один: получаешь ссылку на объект, вызываешь метод объекта. Опционально получаешь возвращаемые данные. Опционально отдаёшь работу по получению ссылок обсерверу и просто шлёшь ему сообщения. Опционально получая возвращаемые данные.
Это было до движков. Есть в движках. И будет после движков.
Нет названия. Просто клеточные игры.
Обязательно поймешь. Здесь все твои друзья! Если что поможем, обесним.
Если я не ошибаюсь да и в шапке написано, есть примеры в магазине. Качаются через сам движок. Не знаю, если ли какие-то примеры не от тамошних Кириллов, но может какой годный пример да будет.
Удачи в поисках!
Если устанавливаешь версию из стима, она сразу с сэмпл-проектами скачается. Для версии с официального сайта там же есть ссылки на скачивание. Кроме того, как верно замечено, через вкладку шаблонов их можно скачивать по одному прямо в менеджере проектов.
>>33502
>>33505
Да, спасибо, нашел.
Что можете сказать про реализацию >>633501 в годоте?
Я пока думаю что нужен плейн под воду, над ним с небольшим оффсетом плейны под землю
Плейны под землю текстурятся тайл-мапой, но с прозрачностью чтоб не пришлось рисовать все вариации
Переход между двумя типами определять по соседству и в материале подкладывать на нижний слой текстурку соседнего биома.
Где-то наверно обосрамсы вскроются но я пока не знаю.
*один обосрамс вижу в кейсе если будет тайл на пересечении трех разных биомов
Накладка слоёв на двадэ-канве ничем не отличается от накладки слоёв в фотошопе/гимпе/крите - вот как ты в растровом редакторе накладывал слои, так и здесь делай.
Объявление!
На время ТВГ частота ответов на вопросы может быть снижена очень сильно.
Слоями же. Не тупи. Каждый слой psd файла это, скажем, тайлмап, или спрайт. Дальше сам.
Это нужны вариации всех возможных пересечений, что тупо. Я имею ввиду что нужно процедурно подкладывать нижний слой.
Без альфа-канала тупо. Но слава Хуану - у нас есть поддержка альфа-канала!
Для этого использовать A* ? Я так понял что это алгоритм который ищет путь по графу, у меня же уже есть массив с координатами по которым можно ходить. То етсть мне же не надо определять где препятствие и т.д.
Так а как реализовать очередь в godot? Я так понял что там нет структуры типа Queue как в Python.
> как реализовать очередь в godot? Я так понял что там нет структуры типа Queue как в Python
Учи документацию.
Просмотри видосы, что советовал анон выше.
Я питона в глаза не видел, поэтому хз что ты подразумеваешь под очередью. Список тебе не подходит? var Spisok = [1,2,3]
> структуры типа Queue
var KueSHUE = { Name = "Vasia", Diagnoz = "Shizik" }
Словари тебе тоже не подойдут?
Таймеры в движке есть. Классические, православные таймеры. Иди учи.
(Продублирую)
А знаешь, я проверил, и действительно нельзя поменять фильтрацию при импорте модельки целиком. Оказывается, в доках так и написано - лучше импортируйте раздельно gltb + текстуры.
Но. Есть невероятно простой лайфхак. Буквально на 5 секунд.
Сразу после импорта твоей gltf надо нажать сохранить как - tscn. И потом работать с моделькой как с родной сценой движка. Зайти в свойства меша, там в материал, там в текстуру, и вуаля. Все галочки на месте.
То, что ты описал, является простыми Префабами (читай про префабы в геймдеве), а не сцены.
Смешно читать как вы тут изобретаете префабы, когда они должны быть искаропки.
мимо залётный юнити разраб
Почему вы не выбрали Юнити? Ну объективно там вся эта "база" уже давно реализована. Да, потратишь недельку-другую на переход от Годота, на понимание Юнити, но блин, чуваки, потом один сплошной буст будет по времени. Будете игры делать, а не вот это вот всё изобретать.
> префабы в геймдеве
Да, это "префабы". И они у нас искаропки. Причём это у нас "нестед префабы" и они были фкаропке всегда, а не приделаны костылём в прошлом году.
Так принято в рамках движка. В чужой монастырь со своим уставом не лезут. Хочешь поспорить - пиздуй в движкосрач.
>читай про префабы в геймдеве
Шизоид, юнити не равно геймдев.
Если в юнити ПРЕФАБЫ, это не значит, что в любом другом движке такая же терминология.
Префабы - это какое доисторическое говно, когда в первой халве уровни рисовались не мешами, а брашами. И вот слепленные фигурки из брашей назывались префабами. Какому идиоту может придти в 2020 таким пользоваться, когда можно пользоваться вложенными сценами, со всеми объектами, модельками, скриптами, светом и так далее.
Тогда во многих случаях практичным будет загрузить в память некий пул (сцену) из экземпляров сцен, дубликаты которых наиболее часто используются, чтобы лишний раз программа не лезла на жесткий диск. В идеале, - грузить все, до чего игра может дотянуться в пределах данного левла. И грузить этот пул при загрузке собсно левла.
Я теперь Кодзима Кармак?
> Тогда во многих случаях практичным будет
Будет. Пулы в движке тоже есть.
> Я теперь Кодзима Кармак?
А игры у тебя есть? На словах я тоже Тодд Говард.
@
press f6 что бы запустить сцену
- ну ок, а в редакторе где эта кнопка?
Вижу f5 вот - play, следом f7 - pause scene.
Блин а f6 почему нету между, ладно хуй с ним, буду через хоткей делать.
Потом чет наворотил, сцена уже не запускается, в итоге случайно закрыл консоль вместо запущенной сцены
@
весь прогресс за час идет нахуй
@
))
Моё лицо кароче от сегодняшнего прогресса в разработке игор.
Как дампить переменные в этом движке?
На МММ тоже зарабатывали. Это не показатель
В смысле не на кол-во элементов, а на количество измерений, то есть: в случае arr[N1,N2,..., Nx], чему равно x max, прежде чем годо пошлет меня на хуй?
Это копия, сохраненная 30 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.