Шапка: https://hipolink.me/godothread
Предыдущий: >>938493 (OP)
Архивный: >>931045 (OP)
нееее
И? В чём твой доёб? 14лвл пиздюку ты запрещаешь кодить игровые системы?
Бритый, а ты чего на этот фест не поехал? Я тебя там искал.
14летние школьники поболее тебя понимают в кодинге и дизайне, чем ты, старпёрская хуйня с пропитым выгоревшим отмирающим мозгом.
Это ты веб-версию игры пытаешься залить? Потому что вот честно, мало кто захочет загружать 500мб для веб-игры. Для экзешников же можно написать в саппорт, они поднимают до 2гб размер. А лучше уменьши свой размер, наверняка у тебя в билде куча мусора, его стоит исключить через экспорт-опции. Я однажды чет тоже распух до 300мб, потом посмотрел внимательней и ужался до 40мб.
Я недавно тоже пытался залить туда свой высер, но мне просто ошибку выдает, без конкретики. В архиве сразу весь контент, включая индех.хтмл, без подпапок. Хз что не так
Не знаю анон, я десяток игр выкладывал, с таким не сталкивался. Выкладывал и архивом, но потом перешел на их butler, чтобы одним кликом заливать. А просто отладка локальная в браузере работает? Алсо проверь лог в консоли разработчика в браузере.
Кучи мусора нет, но все 3д придется перемоделить и перетекстурить. Выкинул одну модельку и снизил с 220 до 180. Но теперь разбираюсь с освещением, все слишком темное по сравнению с пека версией. То ли ambient не сработал то ли что то еще.
Странная хуйня. Попробовал еще раз в браузере - пикрил. Решил попробовать через дропбокс - все норм
Я понял в чем оказался подвох.
При экспорте я ставил обе галочки. Это и привело к тому, что размер удвоился, каждая текстура оказалась добавлена в 2х вариантах.
Это же, повлияло и на яркость. А точнее, текстуры в режиме For Mobile в большинстве черные, что в браузере пеки, что на моей мобиле.
Так что пока переключил на For Desktop, но не уверен не будет ли наоборот проблема на каких то мобилах. А делать разные веб билды для разных платформ чет сомнительно.
Есть ли подобное в Гдскрипте?
Читал документацию и гуглил, но ничего не нашел.
Фух, спасибо, могу ничего не делать дальше, а то я уже напрягся.
Да. Тот же _process - именно такой метод, ты перезаписываешь метод класса-родителя. Можешь свой базовый класс создать, потом от него extend и перезаписать в наследнике функции родителя.
> >>302038532
> Доски /vg/ и /gd/ передают привет.
> >>302038815
> спасибо, им тоже передай, мол, тот, который первый день в интернете, передал привет
Вам тут анонс передал привет. Я конечно обычно такой хуйнёй не занимаюсь, но как порядочный (нет, лол) анонс, передаю.
Передай вг что они пидоры. Жрут ААА, сами же плачутся на весь интернет с того как микротранзакции колются, как баги-хуяги, как все одинаковое, как игровая импотенция, как ноугеймз, а сами жопу поднять ленятся чтобы узнать хоть что-то вне мейнстрима. Хртьфу. Инертные шмоньки.
Привет, вега! Щас мы вам сделоем игру года! Стэй тюнд.
process\ready\draw\init я знаю, я не могу найти информацию о других методах.
Например если я хочу сделать кастомный класс и сравнить два инстанса данного класса. Для этого в пистоне я могу переопрделить метод __eq__.
Как в Гдскрипте сделать подобное?
Никак. Просто делаешь свою функцию eq и сравниваешь ей.
Точнее, есть 1 способ. Идешь в c++ исходники и делаешь такой функционал.
Потому что только последние 2 версии позволяют веб билд без sharedarraybuffers.
Понял, спасибо.
https://www.youtube.com/watch?v=4vAkTHeoORk
Я вообще на тройке досиживаю, поэтому никого не смотрю. Там наверное уже столько нового, что считай новый движок. Придется переучиваться.
День короче не зря прошёл.
А ты что делал сегодня анон?
А, вчера я ещё рыбалку писал, пока что тестовые наброски скрипта и нод, но удочку уже закидывать можно, причем на расстояние в зависимости от удержания кнопки, а ещё поплавок красиво летит к воде, и возвращается если в воду не попал, обратно летит тоже красиво. Я короче уже готов чем угодно заниматься, лишь бы не рисовать :3
Нет. Всё новое органично вплетено. Переучиваться минимум нужно. Старые проекты лучше не перетаскивать, но новые начинать уже можно смело.
Респект. Твоя игра звучит как идеальная мобильная залипалка.
А я 3д мебель лепил. Приятней, чем руками рисовать.
Вот смотри: Делаю сцену с инвентарем, персонажем, все дела, все, что нужно, настроил. Пытаюсь ее копировать, ан нет. Ее можно только ДУБЛИРОВАТЬ, то есть и там и там будет изменяться все, что я делаю. Втф? А если я хочу сделать пустую болванку и уже на нее натягивать Талмапы например, это как? Заново у каждой сцены все настраивать? Или делать для каждого элемента модули и их подключать? Гручно чет.
Если ты создаёшь ресурсы прямо в сцене, они встраиваются в сцену по умолчанию. Таки да, при попытке продублировать сцену ты сталкиваешься с вышеописанным траблом.
Что ж теперь ты это знаешь и будешь внимательнее подходить к проектированию сцен.
Вариантов решения два:
1. Нажимать на каждом ресурсе в скопированной сцене правой клавой в инспекторе и выбирать пункт "сделать уникальным" в контекстном меню.
2. Изначально, создавая сцену, создавай каждый ресурс как отдельный файл, и уже затем выбирай его в инспекторе, так ты будешь сразу видеть (и знать) что у тебя ресурсы из определённых файлов подгружены, а не просто где-то в эфире витают.
> я и так все делал по ресурсам, просто думал это сделать проще
Файл resource.tres копируешь в resource1.tres потом файл scene.tscn копируешь в scene1.tscn и потом в новой сцене заменяешь прописанный там resource.tres на resource1.tres
2048x1222, 0:21
И что с этим делать? добавлять через object_massive.add(obj)? Дело в том, что в папке хранится куча сцен, количество которых с ростом проекта увеличится. Допустим, сейчас у меня три сцены и я могу через
var x = load("res://hui"),
потом
var y = load("res://pizda")
и в конце
var z = load("res://skovoroda"),
но у меня не три сцены, а с десяток-другой и мне придётся всё load()'ировать через var'ы? Неужели нет никакого алгоритма типа
while i != "res://objects_folder".size():
spawn_object_massive.add("res://objects_folder/")
Конечно, gdscript не так работает, но, думаю, логику передал
Не добавил в конце i ++, но не страшно
> Неужели нет никакого алгоритма типа
Есть.
Просто нужно читать документацию. Да и шапку в целом читать не помешает.
А можешь поподробнее написать?
> как сделать адекватный подъём на уступ?
Скачать с миксамо анимацию подъёма на уступ, добавить в свою стейтмашину персонажа, использовать рут-моушен анимации, чтобы передвинуть перса на уступ одновременно с анимацией.
Я иду простым путем. Коллизия персонажа - капсула. Уступ - меньше чем кривой угол капсулы. То есть, упрощая, капсула закатывается на маленький уступ.
Ну сиди ищи одыкватные решения по полгода, перфекционист мамкин. Учитывая что ты не можешь адаптировать старые 2д туториалы под новый годот - удачи тебе хоть что-нибудь релизнуть к старости.
В прошлом треде скидывали.
хуярь наклонные колижены
О, а можно пример или туториал? Интересно, как реализовано
P.S. на сражения пофиг, будет достаточно автобоя на глобальной, но если Godot такое вытянет, то интересно. Современная графика нахуй не нужна, кстати.
Ты уверен что у тебя проблема именно в этом? Потому что дефолтное поведение - дергать сигнал именно того инстанса, который получил эвент.
Я бы охуел, если бы у меня при ударе по одному врагу, умирали все.
Можно. ГДСкрипт похож. Если знаешь питон, то не составит труда его выучить за день. Годот потянет, тем более без сражений. Но подозреваю не потянешь ты. Слишком наполеоновские римские планы для одного человека. Хотя конечно смотря какой у тебя опыт, и сколько/какие игры ты релизнул.
>рут-моушен
Анончик, а поясни за вот это. Судя по контексту, ты понимаешь, о чём идёт речь, а ещё это, походу, как раз нужная мне штуковина, а я не знаю, как этим пользоваться. Расскажи плиз или ссылку кинь.
ДА
Для глобал мапы
https://www.youtube.com/@GSInteractive
Для боя внутри карты
https://www.youtube.com/@nanotechgamedev/videos
Если нужна помощь по геймдизу, можем скооперироваться. Я сука обожаю ГС.
node1.gd:
...
this_button.pressed.connect(node2.button_pressed.bind([this_button]))
node2.gd:
func button_pressed(butt: Button) -> void:
prints("Pressed only one button:", butt)
Но butt ето жопа
В инете тоже везде такое пишут. Я хотел процедурно инстансить кнопки. Для этого такой подход не сильно работает, учитывая что кнопка сама находится в ещё одной контрол ноде.. Вместо этого я сделал кнопки отделными сценами и вместо того чтобы инстансить одну сцену-кнопку много раз я делаю инстанс многих сцен-кнопок и удаляю ненужные. Костыли конечно, но делать какой-то кастомный роутер-синглтон для кнопок ещё дебильнее, учитывая что их всего 3-5.
А галка unique per scene?
Я потерял всякое представление о том, как заставить людей понять механику игрового процесса, если честно.
У меня есть ролевая игра, где вам нужно подойти к NPC и нажать E, чтобы поговорить с ним. В самом начале игры у вас есть кат-сцена, в которой ваш персонаж лежит на земле, и единственный человек в комнате буквально текстом говорит И озвучивает диалог: «Иди сюда и поговори со мной». Игроки попытаются выбежать из комнаты прямо налево, не разговаривая с NPC. NPC, дающий игроку первое оружие. Поэтому, естественно, они возвращаются и жалуются, что не могут сражаться, потому что у них нет оружия. Поэтому я создал триггер, чтобы воспроизвести еще одну кат-сцену, в которой NPC кричит им: «Не выходи без оружия». Кат-сцена заставляет игрока вернуться к NPC, где вокруг NPC появляется светящийся контур с БОЛЬШИМ ТЕКСТОМ, ГОВОРЯЩИМ «Нажмите E». Игроки делают это? Нет, они возвращаются в дискорд и говорят... "Я не могу выйти из первой комнаты. NPC не дает мне выйти"
Все, о чем я могу думать, это «Мы пробовали все, и у нас закончились идеи».
Проблемы дизайна.
А) Можно дать оружие в кат-сцене
Б) Можно НПС затулить выход, если надо научить игрока говорить с ними.
>Я хотел процедурно инстансить кнопки. Для этого такой подход не сильно работает
Ещё как работает. И вот почему.
Ситуация 1. Кропка сама по себе - не актор и не часть инстанса актора. Её задача - просто дать сигнал ноде, которая реально что-то делает; в той ноде весь код, обрабатывающий сигнал с кнопки. Ну так вот та нода пусть и разбирается, кто ей сигнал послал; а в сигнале достаточно просто дать эту инфу и всё.
Ситуация 2. Кропка - актор либо часть сцены с актором. Тогда он сам разбирается со своей задачей, весь код внутри него, да. Но если у тебя много акторов и надо, чтобы среди них действовал только один, то тебе придётся написать какого-то единого менеджера, который будет ими дирижировать.
>>3013
У меня в игре есть несколько дополнительных локаций, куда можно попасть, если через пару экранов вернуться чуть назад. НПС, который даёт необходимый для прохождения предмет, говорит "вернись и спаси там чувака". ГГ на следующем экране останавливает геймплей и говорит "наверное, мне надо вернуться и спасти чувака". И что же? Много людей плейтестили игру. Но ни один не возвращался спасти чувака.
Та секция была необязательной. А в обязательную без разговора с неписем (который стоит прямо тут воле барьера) не пройти. Вот и весь геймдизайн.
>Много людей плейтестили игру. Но ни один не возвращался спасти чувака.
А если потрудиться написать себе детальную аналитику и внимательно на нее посмотреть, то начнешь считать тупыми вообще всех. Геймдизайн геймдизайном, но yellow paint не просто так.
Пример натужный.
Ролевые игры бывают разные. Если это дьябла, то у тебя всегда должно быть какое то минимальное оружие. Хотя бы кулак. Нет причины почему персонаж "не может" сражаться.
Если же это что-то типа фолыча, то сам факт, что можно выйти без оружия, должен означать что игру таки можно пройти без сражений. Зачем иначе давать возможность куда то выходить безоружному, если это не нужно для геймплея?
Ну или делать как было в халфе. Пока ты не поднимешь оружие, ты не пройдешь дальше. Например зомби застрял в дверях.
Ну а то что возвращаются в дискорд - звучит вообще прохладно. Если они там уже были, то они должны были видеть прохождения других.
Короче выглядит как маняфантазия которых на леддите полным полно.
Верно. ААА-игра означает что надо куда-то тратить много денег, а тут все бесплатно и опенсорсно, тратить не на что. Ну тут Хуан с W4 Games сможет улучшить ситуацию. У фирм будет повод тратить миллионы ему.
Интересно сколько за свою жизнь средний пользователь дтф сделал ААА игр в одно ебало. Чет думается мне не в движке тут дело. Ну так, легкие подозрения.
В инете нашел одно упоминание что тайлмап внутри так и делает, но не проверял, правда ли это. Это надо в исходники с++ посмотреть или хотя бы пару тестов провести. Я знаю что есть merge(baking) navigation и occlusion polygons, но не уверен что тот же код используется для просто коллизий.
С другой стороны, не факт что это нужно. Например коллизии по тайлам легко оптимизировать просто проверкой координат, а тут что? Если у тебя будет коллайдер буквой Г он может оказаться вычислительно тяжелее - больше сложений и сравнений придется производить.
Потом, если ты один раз упростил, то что будешь делать, если захочешь подвинуть одну клетку? Какой то магией развоплощать коллайдер обратно в маленькие? Это звучит как нетривиальная задача. В любом случае, можешь воспользоваться чьей то наработкой https://forum.godotengine.org/t/how-can-i-consolidate-individual-tile-collision-shapes-into-large-collision-polygons-from-a-tilemap/17012
Если анимация "ходьба на месте", то это не рут мошн. Ты сам должен двигать "фишку", на которой в этом положении играет анимацию.
Если же анимация рут моушн,то наоборот, теперь анимация управляет тем, где окажется "фишка". Если у тебя анимация медленного разбега, то "фишка" сначала стоит, потом медленно разгоняется и быстро бежит.
Плюсы и минусы вытекают из этого.
Плюсы - анимации красивее. нет "проскальзывания" ног при ходьбе. Если анимация поворот налево при ходьбе, то это реальный поворот тела, а не просто ходьба прямо и поворот "фишки".
Минусы - теперь управлять геймплеем, надо управлять самими анимациями - нужно их ускорять/замедлять правильно, возможно отключать какие то оси. Выше требование к качеству самой анимации. Если анимация идет прямо, но виляет иногда, то и фишка не будет ходить прямо; если при этом оставить рут моушну движение только по прямой, то получится неестественное виляние задницей. В принципе по ощущениям больше работы, надо больше разных анимаций, я например в результате отказался от рутмоушна в пользу боеее простых.
2ч
>Насколько GDScript похож на Python
GDScript упрощеннее питона, в нем нет декораторов, распаковки.
Не знаю, делал ли кто то 3д GSG, но 2д GSG точно пару раз выходили.
Девлоги и туториалы несколько штук было.
Что же касается толп марширующих одинаково солдатиков, то такое тоже делал один чел, правда потом он перешел на самописный с++. В частности для такого используются импостеры (билборды), трюк как с деревьями, когда вдали от камеры подменяются спрайтами.
https://github.com/godotengine/godot/issues/21269
Так что думаю в зависимости от скилов и свободного времени, за 3-6 месяцев сделаешь прототип.
P.s. так что идею использовать шаг на уступ с рутмоушном я бы не советовал.
Получится что у тебя все уступы могут быть только 1 высоты
Уступы могут быть разной высоты, а если что-то не работает, то это проблемы игрока
https://www.youtube.com/watch?v=PNI6zmhn0Gg
> уступы могут быть только 1 высоты
Про игровые метрики этот не слыхал ничего, а советовать лезет. Дизайн уровня следует начинать с установки (для себя) метрик, согласно которым будет дизайниться весь уровень. Если ты внимательно посмотришь на успешные игры, которые у всех на слуху, ты сразу увидишь в них следование метрикам. Уступ 1й высоты преодолевается одной анимацией, уступ 2й высоты преодолевается второй анимацией, которая гейплейно дополнительно выражается например, как разбег, ускорение, двойной прыжок и т.п., уступ 3й высоты преодолевается при помощи третьей анимации, с инструментом типа крюка-кошки, магии, маунта и т.п., уступ 4й высоты преодолевается через помощь непися, сбросом лестницы и т.п.
В общем, малаца, насоветовал атдуши, все делайте игоры по его советам. Будет вам утюг с линейным приращением скорости вместо живого персонажа.
Может быть в нулевых так было, что есть только вариант с полубоксом и боксом, но еще с 10-х я играю в игры где может быть террейн любой сложности, препятствия любой формы и масштаба, прыжок может быть разной высоты в зависимости от прокачки стата, а ты предлагаешь подход с одной единственной анимацией под уступ 1 высоты, угу.
Максимум, что добавили в современных играх, это комбинированный стейт из трёх анимаций { начало, зацикленное действие, конец } и добавили не фиксированные высоты уступов, а шкалу с дробными значениями, где на первом уровне всё так же работает первая анимация, на втором вторая, на третьем третья и далее.
Впрочем, я послушал твою истерику в ньюфаготреде и вижу, что ты просто вкатился поорать, щас покушаешь мамкиного борщика и блажь игроделия пройдёт.
> где на первом уровне всё так же работает первый стейт из трёх анимаций, на втором второй, на третьем третий и далее.
Быстрофикс.
>что тайлмап внутри так и делает
Походу что не делает, так как есть много жалоб, что объекты отпрыгивают назад, когда на плоской поверхности объект на стык тайла попадает.
А хотите прикол что я вчера открыл? Оказывается в годот для 2д нет нормального зума камеры. Те если ты спрайт, который попадает в пиксель перфект, приблизишь в 2 раза и сделаешь ему медленную анимацию движения, то спрайт начинает дрожать на границах, при этом если просто увеличить спрайт в 2 раза то все работает нормально. В итоге похоже для зума нужно специальная нода со всеми объектами и графикой внутри которая просто будет выполнять функцию увеличения.
Я не бываю в ньюфаг треде, а ты видимо принял лично на свой счет что как же так твой совет посмели оспорить, и там тебе тоже написали что он неудачный.
В любом случае в том виде как ты написал "просто скачай 1 анимацию с уступом" не работает, там надо или блендить, или вообще делать инверсную кинематику.
> спрайт, который попадает в пиксель перфект
>сделаешь ему медленную анимацию движения,
Сдается ты не очень понимаешь что пишешь. Если у тебя спрайт пиксель перфект, то и двигаться он должен по пикселям, а не дробным долям пикселя.
Вообще мимо, ты даже не понял о чем речь
>>3091
Пиксель перфект означает что спрайт идеально попадает в пиксельную сетку монитора. Соответственно зум x2 работает так же как пиксель перфект, но в годот именно зум камеры не работает как надо. Что бы добиться этого эффекта попадания в сетку с зумом в годот можно только увеличив размер самого спрайта, но не камеры, что пиздец как неудобно.
Сука, на этой планете есть такой-же идиот как я по стилю общения, мне даже не по себе стало...
Хуйню советуешь, этот ебен ведь реально сначала все файлы подгрузит и потом только зарандомит, уж лучше пускай высрет откуда-то пути, нарандомит, и загрузит.
Я не про разницу а про кривость работы камеры. И разница в том что пиксель перфект можно с помощью шейдеров делать, там более плавный эффект, и если захочешь плавный зум сделать с этим эффектом, то нормально работать не будет.
Я говорю что зум камеры в годот работает с артефактами и это особенно видно при пиксель перфект, и соответственно он артефачет при остальных случаях.
Нет, не соответственно. Пиксель перфект накладывает ограничения, которых нет в других случаях.
Мне кажется ты немного умственно отсталый. Я пишу про кривую функцию движка на примере реализации конкретной фичи, где это максимально отчетливо видно, но и так же мало заметно в остальных случаях. Ты, удивив знакомое слово, зачем то притаскиваешь какие то не имеющие к делу гайду и начинаешь обсуждать хуйню.
> Я пишу про кривую функцию движка на примере реализации конкретной фичи
Фича реализована нормально, просто ты баззворды перепутал.
Начнем с того, что ты в общем то и не показал что ты там наворотил и что именно у тебя кривое.
>артстайл говно лол
Не, пиксель перфект это про техническую базу больше.
Все так. Надо меньше заморачиваться над деталями, и больше хуярить без задней мысли.
Что тут сказать. Остается только повторить
https://github.com/godotengine/godot-proposals/issues/6389
https://github.com/godotengine/godot-proposals/discussions/9256
Или делай пиксель перфект на 3-ке, или вникай в детали 4-ки.
Забавная выдержка
Even in cases where the base class Camera2D would be at fault, somehow, it's possible to create custom cameras without using Camera2D at all, because the camera system in 2D is a fiction. It's just a wrapper for Viewport.canvas_transform. As the documentation states:
This node is intended to be a simple helper to get things going quickly, but more functionality may be desired to change how the camera works. To make your own custom camera node, inherit it from Node2D and change the transform of the canvas by setting Viewport.canvas_transform in Viewport (you can obtain the current Viewport by using Node.get_viewport).
Это пиздец. Короче я пытался. Я чувствую что тут буду неделями сидеть с красными глазами пердоля движок вместо игры, спотыкаясь о всякую хуйню. Я наверно на юнити пойду, так как я просто сейчас создал проект, нажал одну кнопку и у меня пиксель перфект камера. В годот я третий день обмазываюсь документацией что бы сделать какие то самые простые вещи и нихуя не работает. Судя по тому что там выдают разрабы им просто похуй, от его поста такой вайб типа радуйтесь, что вообще обычная камера есть, лол. Я так понял у них такой подход: бросить околонизкоуровненвые вещи а дальше сами ебитесь.
Да вон скоро SDL 3 выйдет с шейдерами, для 2д игр его подумываю использовать.
3Д в годоте рабочее вообще??? Рендер только в low poly умеет???
Нет братан, конечно не рабочее!!!!111 Все делают игры со сломанным 3д. Это ведь не могут быть твои кривые руки, корявые настройки импорта, недостаток освещения в сцене или что угодно другое, верно???????7777777
Алсо
>скачал модель с торрентрв
В блендере просто какой нибудь свой шейдер. Это два разных програмных продукта. В годоте тебе надо воспроизводить кожу шейдерами и материалами самого годота.
https://www.youtube.com/watch?v=ft--lVFpx4E
https://gitlab.com/gamesnotdeveloped/godot-uniplayer
Так в Nodot тоже модульный контроллер.
Пока что получаются лишь говно-полигоны как пик 1-2, а хотелось бы делать пик 3.
Полигон - заготовка под небольшую карту в мини-игре. Соответственно изъебы типа Voronoi diagram не нужны. Но и генерировать руками не хотелось бы.
Всё нормально. Не мучай себя, уходи. Если не понимаешь - значит не твоё.
Я другой анон. Пробовал этот шейдер. С ним качество, мыльное какое то стает. Может есть идеи, как это исправить?
Спасибо, анон. Не знаешь, почему при подключение шейдера, управление камерой отключается?
Может у тебя камера от движения мышки зависит? Для этого в колор рект надо инпут маус на игнор сделать вместо стоп.
Они этот 4.3 тянут-потянут. Изначально он должен был в конце марта выйти, потом его перенесли на конец апреля, сейчас уже на конец мая.
Ну так проджект менеджера пидорнули. Жди.
Спасибо, анон.
Точнее, уже не жду. Я то на бете делаю и мне норм. Но был такой сайтец gotm.io который специализировался только на годот веб играх. И у них были разрешены только стабильные версии. А недавно смотрел, сайт просто закрылся. А жаль, у них была компрессия веб версии в 2 раза. Так и не выяснил как они это делали. Раздеребанивали pck и выкидывали ненужное.
> сначала казалось что разницы не будет особой, но как оказалось разница очень большая
Так оттож.
Аноны, как получить размер коллизии ноды?
Спасибо
Кстати в 3-ке была приписка
IMPORTANT: this is an Editor-only helper to create shapes, use CollisionObject.shape_owner_get_shape to get the actual shape.
Но в 4-ке не вижу такой приписки, возможно архитектуру поменяли и теперь можно и из скрипта обращаться.
Но упомянутый метод тоже есть
https://docs.godotengine.org/en/stable/classes/class_collisionobject2d.html#class-collisionobject2d-method-shape-owner-get-owner
Взлет моей недоигре обеспечен?
Есть черный прямоугольник слева (список документов). По мере нахождения записей туда добавляются документы. Зеленые прямоугольники - это названия документов. При добавлении они автоматом сортируются по названию. Т.к. документов планируется много, пространства внутри списка не хватит, чтобы отобразить сразу все документы - т.е. нужно будет листать список. При нажатии на документ текст отображается в синем прямоугольнике справа.
Вопрос такой. Какие ноды мне для этого использовать? Может туториал есть?
Слева мне нужно в ScrollContainer засунуть GridCintainer, а справа использовать RichTextlabel?
Или как-то по другому делать?
Всё верно ты спроектировал. Так и делай, как у тебя описано. Я бы так же и делал. По сортировке совет, сортируй чайлд-ноды гридконтейнера. Их порядок напрямую влияет на порядок отрисовки. Так что ничего дополнительно выдумывать не надо, прочто берешь массив чайлдрен и сортируешь, вызывая метод. Единственное, что может понадобиться, написать свой сортировщик. Тоже ничего сложного.
> Может туториал есть?
Врядли. Это уже уровень мидл, а на этот уровень инфоцыги не работают. Тут только доки читать и самому разбираться. Если какой затык, приходи в тред, спрашивай.
1152x648, 0:08
> Или как-то по другому делать?
Я тут недавно нашёл мозговзрывающую штуку. Можно внешнюю библиотеку подключить через шарп, и отрисовывать интерфейс там, а в годот прокинуть одну Control ноду, в которой весь внешний интерфейс будет отрисован.
Минусы: придётся работать в шарп-релизе с шарп-экспортом в итоге.
Плюсы: Можно тот же самый интерфейс запускать в отдельном приложении без годота вообще, например, как утилиту конфигурации перед запуском игоры открыть легкое оконное приложение полностью аналогичное внутриигровому меню, с теми же стилями. Сама библиотека UI подключаемая в этом проекте на порядки превосходит встроенную по фичам тупо по причине того, что там ребята чисто гуй делают для тырпрайза. И там сообщество намного крупнее.
Но это уже не мидл, это уровень ближе к про. Так что порекомендовать не могу. Делай лучше на встроенных нодах. Они тоже норм.
Но если прям хочется посмотреть, то: Estragonia
Стрельба игрока так же реализована, но там все нормально работает, и в самой сцене и если ее делать дочерней. Никакие настройки наследования не тыкал, так что вообще 0 понимания че происходит
Ты, наверное, parent с owner перепутал.
Вообще ни разу не приходилось обращаться к owner кроме написания плагинов редактора
>но лазер естественно двигается вместе с врагом.
Ну так заведи в сцене игры специальную ноду для эффектов и прикрепляй к ней. Или воспользуйся set_as_top_level, правда не помню есть ли там подводные (наверное придется y-sort подвигать)
> заведи в сцене игры специальную ноду для эффектов и прикрепляй к ней
Двачую. Ваще мы часто недооцениваем возможность прикреплять ноды через экспорт. Тем более в четвёрке это всё допилили, фильтр по классам заработал.
Я обычно храню ссылку на уровень где-нибудь в легкодоступном месте. И все прожектайлы, эффекты и прочее добавляю чайлдами именно в него явным образом. Бонусом к такому подходу будет то, что при выгрузке уровня автоматически выгрузится и это всё говно.
А то, что ты делаешь, через owner, это рандом. Кем он окажется в каждом конкретном случае - зависит от. Рекомендую парентить прожектайлы к чему-то более персистентному.
Спать я по некоторым причинам его положить не могу.
Сделал через integrate_forces. Хз есть ли решение правильней.
Есть параметры linear_damp и angular_damp, они вычитаются каждый тик из скорости. Обычно их используют для трения, вязкости и подобного. Можно задать очень маленькое значение или например задавать его только когда скорость уже ниже какого-то предела.
Спасибо. Так и сделал.
Ну тащемто это база, основа основ, пихать все говно спавнящееся чайлдами к родителю их типа, довольно странно что ты этого не делал до сих пор.
мимо
И заработал свой первый миллион.
Как сделать масштабируемую карту в Godot? Ну вот эта самая, которая открывается на кнопку М или на любую другую кнопку и показывает вам карту игрового мира. Игра 2Д и карта соответственно тоже 2Д. Я понимаю, что можно повесить кнопку, при нажатии на которую будет открываться окно с изображением карты. Но карта огромная, а экран игры небольшой. Хочется, чтобы была возможность её зумить.
Более того, на карте будут отрисовываться важные метки: игрока, боссов, заданий и пр.
Я вроде понимаю, что нужно загрузить изображение карты фоном и повесить скрипт, который будет в зависимости от размера фона просчитывать координаты и подгружать иконки меток. Но это в теории, а может есть у кого гайд на что-то похожее или ссылка на видео/пример?
> а может есть у кого гайд на что-то похожее
Есть. 5 сек в гугле.
> ссылка на видео/пример?
https://www.youtube.com/watch?v=eQdIOfotA3w
что-то вполне понятное и бесплатно, для нубья вроде меня
и исходники из раздела по GDScript
https://github.com/Godot-Tutorials?tab=repositories
Эта сцена крашит годот (4.1) очень специфичным образом. При открытии не крашит. Если просто создавать новую унаследованную от неё сцену, не крашит. А вот если открыть сначала эту сцену, а потом создать от неё унаследованную - крашит. Или если открыть её и унаследованную, а потом переключиться между вкладками, тоже крашит.
Сука, я заебался и просто хочу выговориться. А теперь попробую пересобрать эту сцену, вдруг получится.
>Сука, я заебался и просто хочу выговориться. А теперь
А теперь логи посмотри и багрепорти на гитхабю
>4.1
Ей же почти год.
Скорее всего починено, вот например https://github.com/godotengine/godot/issues/74406#issuecomment-1937592388
Только делай бекап проекта, если будешь пробовать в новой версии открывать.
Зачем чистый? Делаешь копию проекта, вырезаешь весь калтент оставляя багованые сцены, багрепортишь. Дел на пару минут.
> Делаешь копию проекта, вырезаешь весь калтент оставляя багованые сцены
И внезапно сцена перестаёт баговать. Тру стори.
мимо
Смотря насколько детальное "объединение" тебе нужно. Если чисто визуальное, то внутри сцены-дырки делаешь рычаг и скрываешь его. Игрок взаимодействует с дыркой рычагом. Показываешь этот рычаг-в-дырке. Иллюзия полного вставления. Делал так в одной из своих игр. Если что-то более комплексное, то наверное через NodePath
В 4.2 есть аналкарнавал с ресурсами который хуй знает почему происходит, я тестовые айтемы когда делал движок какого то хера напрочь отказывался считать их как отдельный класс и как ресурсы в целом, причем в списке ресурсов класс айтем то был, а если насильно запихивал айтем через експорт то годо тупо крашился. Причем вообще ничего не помогало, даже когда класс писал полностью заново, делал новые ресурсы, перезапуск тоже, пришлось тупо все на новый проект перенести и посмотреть как там будет, а там оказывается все работает нормально лол, больше с такой хуйней я не сталкивался.
Или вот из недавнего, игрался с настройками проекта во вкладки окна, и че то тыкал тыкал, и получился пикрил который вообще никак не фиксится, ну вот вообще, любыми способами пытался, никак короче, благо проект тупо для теста скриптов и тайлшита был поэтому не жалко. Попытался я воспроизвести эту багулину, сначала запоминал последовательность но ниче не выходило, в итоге начал опять в тупую туда сюда клацать, и таки получилось, теперь неиронично очкую лишний пук сделать в настройках окна текущего проекта.
Да там несложно переделать.
>хроматической аберрации
Хосспаде, да для этого шейдер-то будет элементарный. 10 строчек с учётом бойлерплейта.
shader_type canvas_item; // 1. бойлерплейт
uniform sampler2D screen_texture : hint_screen_texture, repeat_disable, filter_nearest; // 2. берём текстуру экрана
uniform vec2 red_shift; // 3. сдвиг красного канала
uniform vec2 green_shift; // 4. сдвиг зелёного канала
void fragment() { // 5. бойлерплейт
float r = textureLod(screen_texture, SCREEN_UV + red_shift, 0.0).r; //6. берём сдвинутый красный пиксель
float g = textureLod(screen_texture, SCREEN_UV + green_shift, 0.0).g; // 7. берём сдвинутый зелёный пиксель
float b = textureLod(screen_texture, SCREEN_UV, 0.0).b; // 8. а синий уже нет смысла двигать, берём его так
COLOR = vec4(r, g, b, 1.0); // 9. красим пиксель в полученный цвет
} // 10. бойлерплейт
Набросал за 5 минут прямо тут, в годоте не проверял.
И да, основное отличие от тройки - строчка 2. В тройке есть текстура SCREEN_TEXTURE, а тут её надо получать вот так через юниформ. Скорее всего, чтобы адаптировать црт-шейдер из тройки в четвёрку, надо будет исправить именно это получение экранной текстуры; всё остальное - математика, которую не трогали.
1138x662, 0:09
Вот например, с реддита.
Спасибо
Как обмазаться? Отдельные билды или аддонами?
И попутно, как оптимизировать большой террейн?
Хоть что делай, можешь даже не уточнять, что это годот.
Привет, годотеры. У меня странная какая-то проблема, создал таймер и, когда обращаюсь к нему, в один шаг получаю null, а в другой уже ноду таймера. Почему так?
Потому что ты обращаешься откуда-то из Init() или типа того, в общем, когда таймер ещё не создан. Потому и null. Так что ты так не делай. Видишь, годотечька на тебя ругается. Делай как положено: onready var my_timer = %Timer
> Отдельные билды или аддонами?
Есть оба варианта.
> как оптимизировать большой террейн?
Ну это надо много думоть, матана много считоть.
Обращаюсь _process.
>в общем, когда таймер ещё не создан
Если бы это так было, то я просто получал null, а у меня именно:
null
Timer
null
Timer
null
и т.д
То есть чередуется сама нода Таймера и Null
>onready var
Я так и делаю
Падажжи, это для чего ты в процессе обращаешься к таймеру? Скинь ка скрин скрипта, ща поглядим че там у тебя не так.
Просто посмотреть, что он выдаёт на каждом шаге. Так код в _process буквально:
print_debug("Timer: ",timer)
Как видишь у меня на пикрил проблем никаких нету. Можешь архив проекта залить куда нибудь? Довольно интересная ситуация получается у тебя.
Я просто удалил скрипт и сцену, пересоздал их заново и это заработало. Почему? Как? Я не понимаю.
Выглядит так, как если бы ты запускал параллельно две копии сцены, но в одной не присвоил переменную.
Теперь мы этого никогда не узнаем.
Понял.
Мб настройки были какие-то другие?
Это первая игра, начал недавно. По туториалу сделал базу для платформера, вижу куда можно развивать и расширять, как какие механики добавлять, какие хочется. Осталось теперь сделать ИГРУ...
Пока в планах пиксели, дальше посмотрим.
А, ладно, уже сделал через подготовленный набор мешей и значения подобранные руками. Сойдет.
Ну тут смотря сколько средств вложено. Если ты сделаешь смуту в соло, то честь тебе и хвала так-то. Основная претензия к смуте - что она сделана за лярд из бюджета. А не имей лярда, то уже и отношение к такому результату другое.
Откуда взялся лярд, везде в новостях 2 гранта приблизительно по 250?
> Основная претензия к смуте - что она сделана за лярд
Давайте сравним с другими игорами, сделанными за лярд дерева. Для объективности. Можно с переводом дерева в нефть, золото и другие типы монет.
> из бюджета
А потом уж будем обоснованно сокрущаться проёбом из нашего кармана.
Звучит как отмазка, чтобы нихуя не делать. Берешь и делаешь. Учитывая что ты инди, везде можешь спокойно писать что потрачено 0 баксов (ведь время и усилия ведь бесплатны, дыаа), и что сделано в соло. Только больше респектов словишь.
Алсо добавлю, что Смута у тебя точно не получится. Смуту заметили, по тем или иным причинам. Вокруг нее шум. Ее видно.
А ты релизнешь и год будешь сидеть-пердеть с 0 комментов под игрой. И будешь радоваться первому комменту, если он вообще появится. Зато ко второму-третьему-пятому релизу, ты поймешь как шуметь правильно, соберешь свою маленькую сетку мест/людей для пиара, и вынужденно научишься в минимальный маркетинг. Плюс появится важная привычка доводить начатое до конца - без нее ты обречен на провал.
пробовал на стабильной версии с сайта 3.5.3
ну и на всякий на 4.2.1
Большие дяди тоже косячат.
Вот теперь пришла пора впадать в отчаяние.
Ну, небольшая есть, к тому, что стоило бы вместо вливаний всех денег команде из аж 75 человек с крайне сомнительным портфолио пустым??? сделать несколько грантов поменьше и раздать может менее амбициозным, но надежным разработчикам, экспертов бы наняли что-ли, там даже по дизайн-документу игры было понятно, что всё очень мутно, а ведь по его просмотру идею и одобрили
Кратко говоря, стоило бы с меньшего зайти, теперь, ошпарившись об таких "разработчиков", госфинансирование отрасли заморозят лет на 10
Впрочем тут другой тред для обсуждений подобного есть
Наши бюджеты? За всех не говори, чмошник.
Если бы гранты раздавали справедливо, то всем нашим индюкам было бы финансирование на их проекты. Мы бы гордо сидели на грантах и поплевывали бы на жалких грузинских и эстонских либерах, пытающихся зарабатывать в Стиме. Нам бы выдавали всем кучу трафика на Я-играх или бабки просто за публикацию игру в ВК-плее.
А так по факту мы, кто не имеет выхода на Запад, вынуждены за 8 рублей жопу рвать в конкурентной борьбе покруче чем в Стиме.
Если человеку просто так деньги давать - он ничего делать не будет. Суровая правда жизни. Проверено.
Видел про это на реддите и ютубе, так что видимо есть. Сам не вникал.
То шо я ее спиздил это факт, но спиздил со стима, проснулся и внезапно чето вспомнил о ней, сама по себе игра простая в реализации но залипательная пиздец, сам жанр не особо то и популярный, поэтому на ЯИ наврядли будет похожее, шансы я думаю есть короче. Геймплей полностью готов уже, поправить косяки и все чики-пики будет, поэтому завтра потрачу чудок времени на правки а все остальное на рисование скинов и текстур.
юпд: щас полазил на сайте поискал, вобщем как и предпологал таких игр вери мало да они сделаны мягко говоря на похуй.
есть godot 3.5.3 и Яндекс игры. Создаю пустой базовый проект gles 2 (gles 3 тоже пробовал), добавляю лишь одну кнопочку с надписью TEST, чтобы что-то было видно. Создаю экспорт HTML5, в нем ничего не меняю, выгружаю релизную (дебаг тоже пробовал) версию. Отправляю в ЯИ, все грузит, все проходит, но запускаю и вижу "не поддерживается вашим устройством"
что я делаю опять не так, все же работало
Не знаю. Не понял как работает, там не используется нейросеть в отличии от DLSS, просто алгоритм фильтрации/шарпенинга? Есть ли вообще смысл в этом для 2д? Вряд ли это даст какой то прирост производительности, а так в 2д можно же сразу лучше все нарисовать.
А это вообще связано с годотом, или с галочками которые в ЯИ выставляются? Я сам еще не пробовал заливать.
переставил, ничего не поменялось, раньше эта галочка вроде саму публикацию определяла, где игрокам будет доступна, а тестировать из панели разработчика можно было с любых устройств
1280x720, 0:59
https://github.com/the-mirror-gdp/the-mirror
https://themirrorgdp.itch.io/the-mirror
Поправочка - убийца роблокса и фортнайта.
ахуенно щас быстро соберу смуту 2 и получу гранты от государства
Мои извинения, я не читал че они там настрочили, ну успехов им, хули, не различать аудиторию уметь надо.
Хз о чем ты. Я дал ссылки на опенсорс. Можно скачать, запустить, расставлять объекты, перемещаться.
Не скам. Давно за ними поглядываю. И да, опенсорс, так что хз на что тебя тут заскамили. Не параной впустую.
Причина тряски? Ты получаешь опенсорс платформу, можешь делать в нем свою игру, говорят что можно будет экспортнуть ее и продавать стенд-элон в стиме. Еще обещают маркет где ты сможешь продавать ассеты и миниигры и у них будет 10% комиссии.
Челики будут получать с интеграций? Ну так они и работают, делают редактор, мультиплеер сервера, контрибутят в годот.
> Причина тряски?
В срачетреде расписал по пунктам причину тряски. Проследуй туда и прочитай.
Алсо, предлагаю всем миророблядкам с обсуждением миррора свалить туда же.
Предлагаю тебе идти делать уроки и собирать портфель.
Хуан в шоке, законтрибутил миллион строк кода, а на его движке делают игры и зарабатывают!
Делаем, батюшка, делаем.
>Контрибьютишь код в репу, а потом на тебе другие разработчики наживаются!!!111
Да, опенсорс это скам.
В процессе. Я бы кинул ссылку на черновик яи, но я трясунчик и боюсь что анон на подскоке спиздит ее оставив меня в дураках.
Наврядли ее вообще хоть кто нибудь захочет спиздить, ничего прорывного и уникального в ней нет, просто посерфив яи я к удивлению не так уж и много нашел игр этого жанра, если ее можно конечно вынести как отдельный жанр, да и те откровенно говоря кусок говна собранные за сутки в которые не хочется поиграть даже. От того и тряска, шо могу упустить призрачный шанс на успех.
Как правильно делать пальцами чтобы годот-тян была довольна.
Типы транзиций для твинов, то есть для анимаций. Например как быстро переменную надо поднимать от 0 до 1
>>4850
https://popcar2.itch.io/tweens-comparison
А, вот в закладках нашел интерактивную версию. Это наглядней.
вроде разобрался, по умолчанию будет считать объектом класса RefCounted
Чисто с дивана предположу, что тебе высоту контейнера буквально на 1 пиксель увеличить надо, из-за округления целое число элементов не умещается.
Ты про size/position? Поставил 75 и 4 - не помогло.
Судя по всему это из-за того, что каждая новая дочерняя нода спавнится за границей vbox container по какой-то причине
Попробуй вбоксу выставить клип_контент=тру
А вообще без кода и минимального проекта тут хуй поймешь что куда откуда.
Не, падажжи. Давай доведём эксперимент до конца. У твоих нод уже был некоторый размер по у, то есть, они всё равно актуальный размер по у заполняли себе сами. Ты поставил минимум 10, это тот же актуальный размер? А поставь минимум 1пиксель. Посмотри, что будет?
1 пик - вот что будет если "document name" поставить custom min size - 1 пиксель
2 пик - это custom min size - 10 пикселей
separation при этом стоит 2 пикселя
3 и 4 пик - это custom min size у "document name" 0 + separation в контейнере 12. Как можно заметить на 4 пике есть тоненькая полосочка. Godot ее и считает за размер моего слота и прокручивает скролбар до нее. Соответственно сама ячейке не видна. А она у меня сейчас состоит из ноды Control с двумя дочками: button и label (временно)
Поэтому и фиксится тем, что для слота document name задается custom min size
> для слота document name
Чем у тебя является вот это?
Я просто накидал аналогичное на кнопках и всё работает нормально, без дополнительных телодвижений
>>4934
Да теперь ясно. Если у элемента контейнера нулевая высота (а у Control она нулевая, да), ты должен выставить высоту вручную, но это негативно скажется при масштабировании. Или измени контрол на любой контейнер. Вот как тут я последние два заменил на MarginContainer и они сразу правильно расположились.
Попробую еще с марджинкотейнерами.
Пару тредов назад сталкивался с тем, что при изменении названии кнопки, она потом нормально, как мне надо, не меняет размер. Появляются какие-то мин. границы. Либо шрифт ломается. Поэтому так костылил
> А ты про что именно говоришь?
Вот на этих скринах >>4940 >>4938 есть отступы (8 пикс) и зазоры (4 пикс). И всё это делается через theme override. Но если пилить игру серьёзно, то для каждого элемента ГУЯ нужно запилить отдельную тему, в которой прописать все параметры.
В трёшке всё это дублировалось. Были отступы в теме, были отступы в свойстваз контролов. Я настраивал отступы через свойства. Поэтому сейчас сразу прихуел, когда ничего не нашёл в инспекторе.
> Попробую еще с марджинкотейнерами.
Воу-воу, ты главное суть улови. Тебе нужен такой элемент, который будет автоматически подбирать свой размер без дополнительных настроек. Маржин контейнер может и не подойдёт, может тебе элемент строки (слот ентот) будет выгоднее через HBoxContainer сделать. Попробуй разные варианты. Почитай доки. Не следуй слепо советам.
1920x1080, 0:50
Шебм - Of Life and Land, на годоте.
актуально: любим, играем, покупаем
После замка Наельбюка и конечно же Балдуры3 народ захочет что-то изометрическое, но не эрпогэ с длинными нудными катками. И вот тут на сцену выйдут стратежки (в которых катки ещё длиннее, но не нудные, хехе). Так что, ящитаю, в ближайшие 3-4 года ожидается расцвет стратежек. Так что ты можешь заскочить в первый вагон хайптрейна.
Дерзай!
Делаем, делаем. Не Slay the Spire 2, но тоже на годоте.
прикрепи сам файл тут - протестим
попробуй нажать реимпорт.
Полностью переписал весь код так как старый был исключительно для прототипа.
Для стандартного режима игры уже все механики готовы. Так же прикрутил ревард рекламу, и обычную при проигрыше.
Из того что еще надо сделать:
-Дорисовать текстуры, чуть-чуть осталось.
-Нарисовать больше скинов.
-Найти подходящий саунд.
-Добавить казуальный режим (ноу таймер, до первой смерти)
-Добавить рейтинговый режим.
-Сделать магазин, прикрутить покупки.
-Достижения
-Ежедневные квесты (пока что под вопросом, возможно и не буду их делать)
-Подцепить датабазу.
Визуально игра мне пиздец нравится, но я говноед поэтому.. Работы чуууть-чуууть осталось. К удивлению до сих пор сижу на волне мотивации, от чего ловлю стояк. Сплю по 6 часов в день, 2 часа на отдых, все остальное время пердолю игру.
Скринов опять не будет, и ссылки тоже, я все еще трясусь.
Дорогие если честно пустые билды, в игре кроме нескольких спрайтшитов ничего и нету, а папка уже весит 18мб, придется звуки и музыку пиздец как ужимать перед добавлением, а ведь планируется ее дохуя добавить.
Да покажу конечно, правда через неделю после релиза, зато со скрином статы, прям как анон любит.
я так понял все, что resource нужно ручками free делать, а остальное само по иерархии дерева может, типа родителя удаляешь экземпляр и он там сам всех детей подчистит (опять же если в них нет ресурсов)
> resource нужно ручками free делать
Нет, с чего ты взял? Resource наследуется от RefCounted, значит будет собран сборщиком, когда на него никто не будет ссылаться. (Кроме циклических ссылок, но во первых их лучше избегать, во вторых для них можно завести weakref)
Вообще полагаю что для 99% игр вообще ничего вручную менеджить не надо (а для 95% вообще самодельные ресурсы не понадобятся)
т.е. я могу любой сложности дерево нодов сделать, в каждом из дочерних будут картинки, звуки, навигационные пути, аллах...
потом queue_free() у родителя сделаю и больше ни о чем не думаю?
В четвёрке вообще ничего ручками высвобождать не нужно. В трёшке ещё оставались варианты старых объектов, теперь нет. Только если самостоятельно вручную унаследуешь свой скрипт от Object, но зачем?
Типизирую тому шо удобно и красиво, ну и шарп тоже свою роль сыграл после переката на гдс.
База!
т.е. все, что в дереве можно не чистить, а если сам создаешь класс, который не от нод наследуется, то чистить ручками?
Это не ответ на вопрос.
ну я в такие классы часто логику помещаю отдельную игровую, например, хотя они вроде по умолчанию итак будут рефкаунтед, вот я поэтому и спрашиваю, когда нужно теперь в четверке ручками следить и за какими классами
с твоих слов я только понял, что если у меня класс только от обджекта наследуется, только в этих случаях, а во всех остальных, даже если я просто скрипт пишу, в котором ресурсы загружаю какие-то вроде картинок и звуков, потому этот класс навешиваю на ноды, то при освобождении родителя он сам все подчистит
а если я массив создаю и в него экземпляры классов пихаю, то мне как чистки массивов таких производить, элемент прямо самому освобождать и на его место создавать потом новый или он сам почистит все, если я просто удалю уже элемент массива?
Это заявка на репорт))
... больше нажатий клавиш = больший вес клавиатуры = тяжелее кнопки жать. Все так.
> я в такие классы часто логику помещаю отдельную игровую, например
> хотя они вроде по умолчанию итак будут рефкаунтед
> вот я поэтому и спрашиваю
> когда нужно теперь в четверке ручками следить и за какими классами
> с твоих слов я только понял, что если у меня класс только от обджекта наследуется
> только в этих случаях
Только в этих случаях.
Всё, приступай.
к чему приступать, к дальнейшему углубленному изучению движка? так я уж приступил.
в обмане
Деньги не посыпятся, а негативные отзывы посыпятся даже больше, чем на просто игру от соло индюка. Хз почему так.
Нет, ты пиздишь. Классы не являются рефкаунтед по умолчанию, значит тебе нужны не просто классы.
> значит тебе нужны не просто классы
Мне нужны просто классы которые исполняют мою собственную логику с собственной структурой данных, которые не наследуются от какого-то говняка, который вполне возможно потом изменится с версией 4.хуй или вообще удалят в 5.пизда.
Это возможно или нет? Или годод не позволяет программировать что-то своё?
Ну вот когда в 5 удалят, тогда и поговорим. 5 не обязана быть обратно совместимой.
вот только вчера проверял, просто пустой скрипт у тебя будет аналогичен классу с extended RefCount, это вряд ли удалят в будущих версиях или когда либо еще, так что можно делать спокойно
да в наследовании от RefCount там особо ничего страшного и нет, наверное можно минимально чтобы от Object наследовать, но тогда не забывать использовать free()
Конечно можешь, доступен весь исходный код, можешь писать любые классы на c++
Возможно глупый вопрос, но мне интересно, можно ли как-нибудь сделать так, чтоб при смерти одной частица на её месте появлялась другая с анимацией? Хочу сделать, чтоб на месте капли дождя, после её исчезновения, появлялись брызги.
Используй партикли с коллизиями.
https://docs.godotengine.org/en/stable/tutorials/3d/particles/collision.html
Алсо я бы забил и сделал несвязанные системы. Дождь отдельно, брызги отдельно. Никто не будет всматриваться, а именно ли под каплей появились брызги. Особенно если дождь у тебя валит активно.
Я буду.
Тогда шейдером каким-нибудь хитрым, но это я хз. Переходи на 4 если брызги для тебя такая киллерфича, либо фейкай как этот чел, как я выше говорил: https://www.youtube.com/watch?v=KFDDiN2MD6g
Да нет, и без него обойтись можно, просто хотелось сделать красиво.
> Звучит просто какая-то гипервелосипедия какая-то. Пиздец конечно тухловато, мдаа.
почему, он от объекта отличается только тем, что там есть умный указатель, который отслеживает количество ссылок и потом сам почистит
если не нужно, то просто от объекта наследуйся, но потом сам удаляй через free(), когда класс уже не нужен будет
И так, шо было сделано:
- Нарисвал, а по факту спиздил срисовав под себя, несколько скинчиков.
- Сделал мейн меню.
- Добавил и прикрутил к сдк локализацию на 9 языков, хуй знает нахуя столько, но а че бы и нет.
- Доработал логику и пофиксил багулины.
Времени конечно ушло дохуя, а выхлоп нихуя, кучу времени потратил тупо на настройку темы, шрифтов, огорчило еще то что тултип у опшинбатон в тройке не в скролконтейнере находится по дефолту, на мобиле тупо не прокручивалось, пришлось васянить, времени тож скушало это нормально. Сейчас сижу верстаю юай, а потом буду работать над магазином. Дел дохуя еще короч. Мотивации до сих пор полные штаны, последний раз такое было когда только вкатывался в геймдев.
Сорян шо вниманиеблядствую, в стол сложновато делать че то без высирания постов.
>>5303
> партикли с коллизиями.
Когда я использовал коллизии в подобной ситуации (несколько тысяч коллизий в секунду), то у меня ФПС очень сильно падал.
Не рекомендую такое делать в годоте, он не сможет столько коллизий обрабатывать. Конечно для топовых компьютеров это не столь критично, наверное, но у меня на i7 и ddr3 такое было.
Ты кормишь тролля.
С партиклями, по крайней мере в тройке, есть подводный камень. Если ты игру тестируешь без всинка или ограничения фпс, и имеешь фпс под 1к, то и все партикли работать будут на таком фпс, и соответственно 1 партикл эмиттер роняет общий фпс на дно. Поэтому у них есть отдельная галка limit fps, которую я всегда ставлю в 60.
Возможно и в твоем случае это помогло бы. Но хз, тестировать надо.
Спасибо. Выбирайся от туда, меня так на полгода засосало, благо хоть выбрался.
Вот тут объяснение как он работает если кому быстро надо: https://youtu.be/2Ro_SqyEqK4?si=3Yxk9Cdmr1HsaGTh&t=608
Да ладно блядь, чушок-коммушизик стригеррился на "товарищ"? Не верю что тут такие сидят.
Рискни))
гуньдошка, не рвись
1464x610, 0:03
Шизофреника обижают и кибербулят, скорее жаловаться нужно за то что шизофреника унижают прямо на дваче! Абу не написал за то что тебя называют плохими словами, шизло?
Блять, вот же безумная дрисня в треде сидит. Надеюсь этого шизоида выдавят из треда, сразу раздел чище станет.
Я проспал этот ludum dare, вот же.
Крутил-крутил, пердолился-пердолился, в итоге нихуя не понял.
ИЧСХ нода существует, к ней можно обратиться через скрипты, также через скрипты добавляю модель во вложенную сцену во время работы и всё видно, если добавить свет через скрипты - его тоже не видно.
Открой remote inspect да посмотри.
На пустом проекте проблема воспроизводится?
Вот засранец, я тут с хронической бессонницей в код туплю, а он дрыхнет по 10 часов и жалуется.
А нет. Нихуя не разобрался. Случайно получилось
Про это чудо я уже увидел. Но у меня, хуй знает каким боком, получилось это сделать без привязки к полигону.
Делай как положено. Расставь по карте физические объекты и запеки навигацию.
> хуй знает каким боком, получилось
Это не серьёзный подход.
Если я скажу что у меня только что получилось это сделать просто вывернув наизнанку внутренние точки создания навигационного меша, то это будет не серьезным подходом ?
> получилось это сделать просто вывернув наизнанку внутренние точки создания навигационного меша
Да. Это - багоюз. Так нормальную игру не сделать. У одних будет работать- у других нет. Заебёшься фидбек отрабатывать и в конце концов сделаешь по гайдам, как положено.
Но, ради академического интереса делай, чо.
Так высокая загрузка или исправить производительность? Ты уж определись.
>это демки плохо оптимизированы
Это. Про них открыто говорилось что они не оптимизированы. Чтобы оценить оптимизон тебе бенчмарки смотреть надо, а лучше самому их набросать и оценить на целевом железе. А так с 3д норм. Я сейчас под мобилки 3д игру пилю, а на мобилках сам понимаешь какое железо.
https://dropmefiles.com/1rIoc
Ну а хули нет, всё равно кидать нечего.
Там прикол в чём: добавляешь свет или меш в weaponSys.tscn и по и тогу когда запускаешь testLvl.tscn - их не видно, а ноды существуют.
И свет и меш показываются. Добавил их в weaponSys. Или надо кодом добавлять?
Бля, прикол, вчера весь вечер ебался пытаясь понять что не так, перезапускал движок, а сегодня просто берёт и работает.
Всё ещё какая-то странная хуйня, опять это поймал, перезапустил движок и всё заработало, возможно буду копать сегодня отчего это если совсем заебёт.
Проверь свой жёсткий диск. Возможно он у тебя сыпется.
Путём проб и тестов понял что каким-то образом слишком быстро возвращаю поворот рейкаста в начальное положение и скрипт не успевает адекватно отработать, кто-то знает что с этим можно сделать(кроме таймера в полторы секунды)?
Как конкретно скрипт себя ведет? Возможно, for loop лочит тред и не дает нормально ничего обработать, тем самым результат будет как за один проход
Так, словно и не было никакого поворота рейкаста, если задержать возврат на изначальную позицию - отрабатывает как задумано.
Думаю, цикл не дает время рейкасту сделать свою работу. Выдели время на нужную логику, только потом считывай коллизию и всё такое
> кто-то знает что с этим можно сделать
Не юзать один рейкаст на всех, а кидать новые рейкасты каждый раз. Через физик-сервер.
как это скачивать?
А он не подходит чем? Вроде в аддонах стараются сделать свой рудиментарный для травы. Еще yamms в ассет лайбрари находится. Еще в 3ке был аддон mesh batcher, для случаев когда сам руками или тул скриптом расставил, запек, передумал распек и подвигал, наверное такое нетрудно сделать и в 4ке.
Надо ручками расставлять зоны) simple grass texture у меня спавнил траву где то в жопэ, spatial gardener чет не хотел хавать модельки. Просто в terrain3d нету своей реализации кисти для растительности, приходиться использовать стронние аддоны. А отказываться от него не охота, так как самый пиздатый террейн в технологическом плане.
Посмотрю что ты предложил, если будет норм работать - то збс, если нет - то похуй. Не велика проблема
Занимательный PR в репо Godot появился от Мигеля де Икаса, который над Xamarin работал. Патч позволяет встраивать произвольные сцены Godot в свои приложения. Для пользователей SwiftUI это означает, что можно встроить Godot-сцену прям во вьюху, отображать и управлять ей.
https://tirania.org/blog/archive/2024/Apr-23.html
Попытался через physics server, но нигде не объяснено как этой хуйне назначить градус с которым кидать рейкаст, какой час уже сижу ебусь с координатами.
На дробовике стоит 11 градусов, но на скринах это нихуя не похоже на 11 градусов.
Сука, два одинаковых скрина загрузил...
В геймдеве углы обычно в радианах, ты это учел?
Почитал доку, сделал через Vector3.rotated(), всё равно странная хуйня выходит, строго вниз и вверх пули в одну точку летят, в остальные - горизонтально, ладно, хоть как-то.
Скорее всего это связано с тем, что физ движок работает со своей частотой, а рейкаст это объект-легковесная обертка и обновляется тоже только раз в _physics_process
Но у рейкаста есть такой метод force_raycast_update ( )
Updates the collision information for the ray immediately, without waiting for the next _physics_process call. Use this method, for example, when the ray or its parent has changed state.
С другой стороны, хз что быстрее, надо вообще померить, может у тебя экономия на спичках и проще иметь все это 40 рейкастов-объектов на твои дробины, чем пытаться переиспользовать один и обновлять его?
Ну конечно нету! Ты же выбрал функцию rotated, которая принимает ось (столб, вокруг которой вращаешь). Поэтому для разброса по вертикали, потом еще повернуть относительно, скажем, Vector.LEFT.
Правда, это даст разброс в прямоугольной области. Так что сначала я бы сделал генерацию случайного числа в круге (или эллипсе). Это довольно просто, надо сгенерировать два числа - рандомный угол и расстояние от центра (скалированное до размера круга или эллипса), его координаты и будут тем, насколько довернуть выстрел.
Писать код мне, конечно, лень.
Хотя, тут надо поиграться с распределением. Наверное, можно ввести параметр, который отвечает, чтобы пушка чаще стреляла ближе к центру, чем к краям круга.
А зависимость от опенгл останется?
Я джва года мечтаю об оконном бэк-енде для годота, чтобы можно было делать на нём оконные приложения без видеоускорения вообще.
Путешественники во времени среди нас. Но мы-то знаем что Мигелюшка даже собственный бложек тяп-ляпает, как всегда.
Игры-то делоешь?
Заебало сидеть верстать юай, поэтому займусь рисованием, а именно надо:
- дорисовать уже наконец бекграунды, 4 штуки всего осталось то
- нарисовать текстуры к уровням, к этому я еще не прикасался даже, поэтому нарисовать надо очень много всего, но это плевое дело
- надрочить скинов
Хуй знает сколько это часов займет, тут скорее даже дней, а именно примерно где то джва дня. Потом займусь наконец то другими режимами игры. А под самый конец уже и со звуками начну ебаться.
Бля, я уже было обрадовался что тупая обезьяна вернула старую капчу, а как оказалась вернула только защеку
>А под самый конец уже и со звуками начну ебаться.
Самое приятное же. Игра оживает, звучит, разговаривает с тобой. Я уже кучу CC0 саунда себе в закладки накидал, но до стадии добавления звука еще ехать и ехать.
Рилток, только заебывает серфить сотни звуков ради того самого.
перегрузи редактор
>>4394 - анон
Если экран с иконками предполагается 2д, и тебе надо это запинуть в 3д, то вьюпорт текстура. Для курсорса можешь, например, делать clamp координатам, чтобы за пределы не выходили.
Спасибо, анончик.
3д вид из глаз? Что то типа такого и проанимировать радиус. https://godotshaders.com/shader/bodycam/
Или поискать vignette.
Осталось по хуйне:
-режимы добавить, я тут подумал, наверное еще и режим на 2-их с одного компа добавлю, ну а че бы и нет
-прикрутить покупки, мало ли кто то задонатить захочет
-отработать всякие мелочи
-звуки найти и приделать
-и самое главное, успешно пройти модерацию
Если честно физически уже устал въебывать, 9-ые сутки подряд как никак фуллтайм хуярю, а вот мораль на высоте прям, мотивация никуда не делась.
Есть сэр.
Как релизну возьму выходной на пару дней, а потом начну опять въебывать, благо еще много чего можно спиздить.
После поисков пришел к выводу что легче сами модельки поправить. Эх, пошел вилкой ковырять.
Мышкой, наверное, нельзя. Через какой нибудь SurfaceTool кодом строк в 50-100 можно.
Ну вот грубо говоря старый пример где удаляют треугольники из модельки в радиусе взрыва.
https://www.reddit.com/r/godot/comments/gy21nd/helpis_there_a_way_to_delete_and_modify_a_face_of/
Еще как вариант ты можешь в блендере делать составные объекты, тогда при импорте они будут тоже из нескольких мешинстансов, которые можно просто скрывать или копировать.
Если сможешь найти номера точек треугольника, то легко
А какую хочешь сделать?
Это не для нас. Мы ждем 4.3 и 3.6
Я для таких случаев просто делаю кастомные кнопки которые будут передавать то что надо.
Даже интегрированная графика в интеле не так сосёт, как эти мобильные куски говна
На скрине у тебя всё правильно и по красоте.
Если кнопок не планируется прям больше, то так и оставь. А если сильно больше - просто коннекть не через гуй, а из скрипта.
Мобилки? Дааа.
Забудь про шейдеры под мобилки. Вообще. Забудь про динамическое освещение, забудь про тени, забудь про отражения, забудь про сглаживание, забудь про прозрачность, забудь про hdr.
Хочешь покрыть максимум мобильной аудитории? ГЛЕС2 и только меши/спрайты. Все фейкать через них. Тени - blob shadow. Шейдер обводки - заготовленная меш. Запеченный в текстуры свет. Smoke and mirrors, пчел, будь изобретательным как диды.
Потратил я на выяснение этого хуй знает сколько времени.
Вот и думойте.
ТИПИЗИРУЙ, ДАЖЕ ЕСЛИ ДУМАЕШЬ ЧТО ЭТО НЕ НУЖНО, ТИПИЗИРУЙ.
ЭТО НЕ ТОЛЬКО СОХРАНИТ ТВОИ НЕРВНЫЕ КЛЕТКИ, НО И УСКОРИТ РАБОТУ СКРИПТА.
ТИПИЗИРУЙ.
https://docs.dialogic.pro
Очень заманчивый, но не могу понять, как ставить вовремя диалога игру на паузу! Игра либо встает вся вместе с диалогами, либо вообще не работает пауза.
https://docs.godotengine.org/en/stable/tutorials/scripting/pausing_games.html
Кратко - тебе надо исключить ноду диалога из паузы. Либо возможно в диалогике это отдельно сделано, и тогда надо читать его документацию.
>ТИПИЗИРУЙ
База.
Ты круто заморочился и поймал эту херь. Можешь теперь багрепортнуть ее на гитхаб, чтобы другие не страдали.
Ставь на верхний диалогик. Все остальные ноды должны унаследовать его режим.
Звучит так, что ты где-то забыл конвертировать строку в число, или вообще передаешь объект кнопки, вместо ее названия, если ты этим пользуешься чтобы их различать.
адекватнЫЙ*.
Учись понимать, как это работает, потому что бездумное копирование туториалов (т.н. "шаманство") как ты видишь, не поможет тебе. Вес отличается от 10 килограммов и всё - ты уже ничего не понимаешь.
А почему ты думаешь что это связано с рейкастами? Ну если у тебя масса увеличилась в 10 раз то и силу прикладываемую надо увеличить пропорционально. Это в принципе так физика работает
Нет. Ты меня за совсем дурачка то не держи. У меня есть массив которой содержит интовые значения купленных уровней, позже этот массив сохраняется в данных игрока. Когда игру перезагружают после инициализации игрока подгружаются данные с сервера, и этот массив приходит не интовым а флоат, от сюда и вся эта мишура, поэтому в движке все нормально а в вебе нет. Знал бы я об этом раньше.. Я так думаю это из за самого гдс случается, ибо условную 8 он видит как флоат если явно не указать как инт, хз почему так решили сделать ибо даже для динамической типизации это не удобно по факту, но может я просто тупой и не понимаю сией задумки.
если и есть такая задумка, то полагаю, что это сделано, чтобы новички/дурачки, когда писали нетипизировано, всегда получали бы один тип, чтобы не пугались сообщений, что у вас типы разные, приведите к типам, их мозг такого не вывезет, поэтому при объявлении
var x = 4
var y = 4.5
оба будут одного типа, поэтому дефолтный тип вещественный, если не указать прямо
хотя сейчас это проверил на 4.3 там первое интом будет, так что скорее всего что-то другое
если в игре предусмотрены диалоги, то такие фразы-комментарии можно еще попробовать стилизовать к ним
>хотя сейчас это проверил
Я и сам щас проверил, и действительно он выдает инт, у меня почему то в подсознании отложилось что флоат будет, жижанул получается. А вообще почему так получается написано прямым текстом в документации, пикрил. Ктож знал, я вот не знал, теперь знаю.
СПАСИБО БОЛЬШОЕ!
Нормальный способ если тебе не нужны долгие сложные диалоги с выборами ответов. Я по своим уровням еще area3d раскидал, вляпываясь в которые игрок триггерит диалог. Удобно, просто, для моих целей хватит.
я пробовал, так не сработало. по физике у меня в школе была стабильная 3 примерно всегда.
сейчас смотрю гайд для анрила, буду переносить оттуда. а хули ещё делатб
У меня сделано так. Считается дистанция от врага до игрока. Если она больше зрения, рейкаст не трогаем. Если меньше - рейкаст всегда указывает на игрока.
мне кажется, есть нода-рейкаст в форме 3д объедка. погугли, ибо я сам пытался запилить колхоз и бросил
Вымотало это меня ахуеть как, попиздовал я спать.
Из того что осталось сделать:
- докрутить звуки
- добавить донат
- добавить статистику и лидерборд(ы)
- доделать 3 режима игры, звучит сложно, а по факту самое простое
- поправить небольшие косячки, заметил что юай на одном языке моментами уползти пытается
10-20% ускорение графона на вулкане, в т.ч. на мобилках.
уф бля, а вот это нам надо
Зачем? Серьезный вопрос. Я вот не разберу, играет ли "вжух" длинной в 0.1 секунду с 64 битрейтом или 256.
760x386, 0:02
На мобилах (и в браузерах) поддерживается ограниченное количество битрейтов. Нужно выяснять это и кодировать свои звуки в нужный формат. С десктопом-то попроще. Кинул что скачал по файлопомойкам не конвертируя - и играет.
Так проблема не в битрейте то, а в том что звуки проигрываются в одном потоке с игрой, процессор забивается, кадры теряются, вместе с ними и звук, от этого треск с пердежем и появляется на говнопк и мобилах в браузерах. Но уже пох, звук теперь через внешнюю библиотеку работает, и проблем вообще никаких нет.
https://github.com/godotengine/godot/issues/40891
Статика/гифка
> звуки проигрываются в одном потоке с игрой
Ну так юзай
https://docs.godotengine.org/en/stable/classes/class_thread.html
, Люк.
"Когда релиз?"
В вебе не поможет.
Бля я тут было чуть простыню не накатил.
Отвечу кратко.
Не разбираешься - не лезь.
Рекомендую для ознакомления разобраться чому четверку крайне редко юзают для веба. Зато в следующий раз себя дурачком не выставить.
Потому что требует sharedbufferarray, и это главная причина. Обсуждали подробно пару тредов назад. Звуки это пятая-десятая причина.
Вернее требовала. Новые версии уже не.
Звук и тормозит, потому что в однопоточной версии в вебе не успевает в реалтайме обрабатывать. Вариант с внешней js либой звучит интересно. но возникает вопрос, а что еще заменить на внешний js, например все
Как ебанную пнг, наебнутую на материал заставить работать как ПНГ?
Сейчас она за шейдером, на меше.
На чем скрипты писать? Я так понимаю гдскрипты т.к. нативно крутится в движке без маршаллинга хорошо работает как клей, а что-то потяжелее (типа процедурной генерации) засунуть в компилируемый язык и дергать через гдэкстеншны.
Но c# что даст взамен гдскрипту? Готовых решений мало, кода в любом случае больше. Это спасательная шлюпка для людей с юнити?