>>602409 (OP) Бля ты даун что ли, я тебе говорю бери юнити, пожалеешь сука, короч тебя предупреждали, прибежишь с обосранными портками плакаться, жалеть не будем.
>>602435 Придумал персонажа для новой игры: юнитипетушок-игропруфстер. Требует предъявить ему игры. Когда показываешь ему кейс, он кукарекает "ваши игры не игры!"
>>602442 Давайте подумаем, возможно ли, чтобы студия хотя бы АА-класса выбрала годот в качестве движка для своей игры? Тут в прошлых тредах проскакивали ссылки на чела, который брался пилить форк годота, ибо Хуан сделал какие-то там списки через кучу, а не массивы через стек, или что-то такое. Уточните, кто знает? То есть, если профи залезет в сорцы годота с аудитом, то он предположительно охуеет и пошлёт нахуй?
>>601689 >Вот есть у меня две ноды с нулями в одной глобальной точке. Нода А вращается произвольно, а нода Б фиксирована. В ноде Б есть произвольный вектор В. Мне надо, чтобы этот вектор после задания дополнительно поворачивался на поворот ноды А. Смотри какую штуку я нашел. https://docs.godotengine.org/en/3.1/classes/class_remotetransform.html#class-remotetransform То есть можно сделать так: у тебя есть нода А и нода Б, которые вращаются произвольно. Но в ноде Б ты заводишь промежуточную ноду Б' и переносишь туда ее остальной контент. Потом добавляешь в ноду A RemoteTransform, в свойствах задаешь путь к ноде Б', и ставишь галочками переносить только повороты. Сам не пробовал, отпишись если поможет.
>>602445 >чела, который брался пилить форк годота >если профи залезет в сорцы годота с аудитом, то он предположительно охуеет и пошлёт нахуй Л - логика.
>>602641 Да, за будущее годота можно быть спокойным - игр как не было, так и не будет, баги не поправят, зато каждый релиз будут новые модные фичи, как у юпити. Потому что багфикс потом сложно продавать. Ты же не выкатишь релиз, в котором список изменений будет состоять из "пофикшены глитчи физики, пофикшен редактор анимаций, который рандомно не сохранял изменения на выходе, пофикшены микрофризы и статтеринг". Тогда донатеры задумаются, "а что, годот был забагованным говном?" Они просто не в курсе, они ведь игры не делают на годоте. А вот какой-нибудь НОВЫЙ МЕГА РЕНДЕР НА ПУКАНЕ хорошо продается. Глядишь, скоро AR/VR подвезут, ECS и прочую модную шелуху.
>>602657 Ну что ты горишь то. Баги фиксятся, игры делаются. Да и какая конкретно тебе выгода от количества игр? Благодаря рендеру на вулкане, годот сможет в 3д (лучше чем сейчас по крайней мере).
>>602676 >Благодаря рендеру на вулкане, годот сможет в 3д (лучше чем сейчас по крайней мере). Но зачем мне хуевое 3д, которое будет работать только на топовом железе последних лет, когда есть анрил и юнька, которые работают хоть на некроноуте 10 летней давности?
>>602680 Хороший вопрос, хотя юньку ты зря упомянул. Там 3д хоть и лучше текущего годотовского, но тоже хуевое. Анрил же может не всегда иметь такую мягкую ценовую политику, как сейчас. Да и про сторонников опенсорса забывать не стоит. Опенсорсых движков с приличным 3д нет (ну или почти нет). Хуже от того, что годот попробует занять эту нишу, никому не будет.
>>602684 Да пусть занимает, я к тому, что Хуан выбрал неправильный вектор. Надо вместо рендера на пукане было запилить нормальный рендер под десктоп на opengl 3.3, чтобы оно работало и на встроенных видюхах, и на десятилетних. Потому что если 3д и будут пилить на годоте, скорее всего это будет лоу поли индюшатина, и странно, что у таких игр будут системные требования уровня последних AAA игр.
>>602690 >Надо вместо рендера на пукане было запилить нормальный рендер под десктоп на opengl 3.3, чтобы оно работало и на встроенных видюхах, и на десятилетних. Возможно. Но что-то мне подсказывает, что на вулкане шансов запилить хороший рендер больше. А для 2д, лоу-поли и древних девайсов останется OpenGL ES 2.0 (по словам анона).
>>602684 Вы заебали форсить этот опен сорс. Все равно Хуан не принимает пулл реквесты на изменение движка. Все равно и его шестерки пилят его, никого не подпуская, чтобы собирать донаты. Толку от этого опен сурса.
Карго культисты ебаные, для вас терми "опен сурс" обладает каким-то непонятным, магическим смыслом.
>>602690 >Надо вместо рендера на пукане было запилить нормальный рендер Надо было рендер вынести в абстракцию и подключать любые рендеры как модули. Хуйлан такое не умеет к сожалению. У него все захардкожено с зависимостями по всему движку. Почему ты думаешь он переписывает с gl es 2 на 3, потом опять на 2, потом на vulkan уже 4 года? Он ебанутый анскилльный велосипедист.
>>602725 Двачую. Я лучше выберу движок с фичами, чем движок без фич, зато опен сурс. Мне от этого опен сурс ни холодно ни жарко. Больше достоинств у движка нет, вот и форсят опен сурс как что-то хорошее.
>>602725 >Толку от этого опен сурса. Ну как минимум: нет необходимости платить, можешь использовать как хочешь и менять исходники. Какой тебе еще толк нужен?
>>602729 >нет необходимости платить Я и так не плачу за юнити
Нет, смысл опен сурс в распределении работы. Вместо того, что каждая контора самостоятельно пишет весь свой код, код делается общественным. Теперь вместо дублирования одного и того-же кода, все конторы пилят и улучшают один общий проект. Эффективность налицо. Они все равно делают это из экономических соображений. Большинство коммитов во все опен сурс проекты всегда делается профессиональными программистами из больших корпораций. Просто совместная разработка для корпораций дешевле и эффективнее. Никогда обычные пользователи не полезут в код опен сурса и не станут его переписывать. Это миф.
А от того что Хуан выложил исходники на гитхаб, не делает годот опен сурс проектом. Потому что он разрабатывается по классическому проприетарному принципу, где авторы пилят все сами.
>>602735 То есть годот ничего не берет от опен сурса (не использует существующие опен сурс проекты) и ничего не дает опен сурсу (не коммитит в опен сурс проекты, не позволяет использовать части движка для каких-то других проектов, потому что движок - монолит). Годот для мира опен сурс разработки как бы не существует.
>>602736 >Нет, смысл опен сурс в распределении работы. Ну это для тебя. Для меня - это как раз возможность легально не платить и менять под себя. >А от того что Хуан выложил исходники на гитхаб, не делает годот опен сурс проектом. Ладно, допустим, ты меня убедил. У хуана неправильно идет разработка и вообще его опенсорс не опенсорс. Но меня, опять же, как пользователя, волнует конечный результат. Назови мне движков с правильным опенсорсом, которые превосходят годот по возможностям. Я присмотрюсь.
>>602736 У тебя серьезные проблемы с логикой. Ядро линукса тоже ничего не берет из оперсорса, и использовать его потом можно как монолит - линукс тоже не опенсорс?
>>602726 >А нормальный разработчик бы просто взял bgfx. Услышал модно слово и повторяет как попугай. Ты его попробуй собрать для начала, это такое же васянское говно. Сначала тебе надо скачать васянскую билдсистему. Потом васянские зависимости. Потом васянские классы имиджей. Потом писать все на васянском языке шейдеров, которые шаг влево шаг вправо крешатся на реальных видюхах.
>>602756 И вместо того чтобы двум васянам объединить силы, каждый пилит свое багованное говно отдельно. На выходе получаем вместо одного хорошего продукта две неюзабельные параши с одинаковыми функциями. Классика.
>>602744 > менять под себя. Ну и много ты там под себя изменил? Почему я на 99.99% уверен, что ты если и открывал код годота, то тут же его закрывал и больше не открывал?
>>602755 Линукс это ядро. Небольшой компонент операционной системы. Тут как раз хорошо реализован принцип опен сурса за счет модульности. Это никакой не монолит Само по себе ядро вообще ничего ге делает. Линукс это что-то уровня bgfx как раз.
>>602749 Я не про сами движки, а про игры на них. И игры на юнити прекрасно работают на некрожелезе, не надо пиздеть. У анрила похуже с этим дела, но тоже в целом неплохо, ему не нужны топовые видеокарты с поддержкой пукана, ему directx 10-11 за глаза хватает.
>>602772 >а про игры на них. И игры на юнити прекрасно работают на некрожелезе И я про игры. У меня на 10-летнем некрожелезе или греют видяху до 100 градусов (то есть неюзабельны), грузят уровни по 10 минут (на ssd), а игры примерно после 2017 года просто не работают (рисуют черный экран с глитчами). Так что идешь нахуй со своим пиздежом про швитой унете.
>>602771 Ясно, ты просто демагог. По таким правилам я тоже умею. Вот список переиспользуемых в годоте опенсурс библиотек: arkit, assimp, bullet, csg, enet, freetype, mbedtls, mono, opensimplex, tinyexr, upnp. Значит ты пойман на пиздеже раз.
>>602782 А еще он использует опен сурс компилятор, чтобы билдить годот!
Я что писал, что в годоте нет ни одной опенсурс библиотеки? Сам что-то придумал, сам опроверг. Хуан не использует опен сурс там, где его нужно было бы использовать. Ты правда не понимаешь недостаток Хуановского подхода к разработке движка? Не понимаешь, какие преимущества опенсурс дает? Ну подумай, что Хуан мог бы сделать за эти 4 года полезного для движка, если бы интегрировал bgfx, вместо своего ебанутого велосипедства с рендером.
>>602788 >Хуан не использует опен сурс там, где его нужно было бы использовать. А определяешь где нужно у нас лично ты? Ты просто хейтер, если бы он делал bgfx ты бы говорил почему он не взял хуйнянейм вместо этого. >если бы интегрировал bgfx Да ты заебал уже с этим куском кала, я тебе все про него расписал >Ты его попробуй собрать для начала, это такое же васянское говно. Сначала тебе надо скачать васянскую билдсистему. Потом васянские зависимости. Потом васянские классы имиджей. Потом писать все на васянском языке шейдеров, которые шаг влево шаг вправо крешатся на реальных видюхах. И эти 4 года вместо доработки движка всем бы пришлось копаться в багах bgfx. А при каждом обновлении bgfx опять бы все ломалось.
>>602795 >Да ты заебал уже с этим куском кала Это самая популярная библиотека кроссплатформерного рендеринга.
Баги там ты сам выдумал? Ну давай сравним количество issues на гитхабе >bgfx >Issues 226
>godot >Issues 5,000+ Конечно, это баги в bgfx мешают его использовать, ага.
>И эти 4 года вместо доработки движка всем бы пришлось копаться в багах bgfx К твоему сведению, опенсурс разработка это не только пассивное использование кода, но и процесс общего вклада в разработку. Хуан мог бы исправить баги bgfx, и не только улучшить годот, но и помочь коммюнити bgfx! Но у Хуана слишком больше ЧСВ, чтобы писать код чужому проекту. Зачем? Лучше свой велосипед писать 4 года. Свое говно, как говорится, не пахнет.
>>602806 >Это самая популярная библиотека кроссплатформерного рендеринга. Популярная среди твоих одноклассниках? Она нигде в серьезных продуктах не используется, это вещь в себе. >Баги там ты сам выдумал? Это отзывы тех кто ей пользовался. >Хуан мог бы исправить баги bgfx О том и речь. Вместо написания движка все бы сидели и занимались фиксами чужого говнокода.
>>602804 Юнити с 2017.3 версии отменили поддержку железа десятилетней давности, отбросили DX9. На некропеках теперь только чёрный экран и звук, лол. Хотя DX9 это уже не "10 лет назад", а все 20, 10 лет это уже DX10 минимум. Помню, было у меня такое на ноуте c корой дуба, горел тогда с чёрных экранов. Игры покупал, но те, которые не шли, откладывал на потом. Ясное дело, что я не был идейным нищебродом, просто ноутбук накладывает серьёзные ограничения на возможность апргрейда.
>>602829 >Юнити с 2017.3 О, значит я довольно точно определил год. > игры примерно после 2017 года просто не работают (рисуют черный экран с глитчами).
>>602808 Еще возможно у тебя термопаста под крышкой чипа высохла. Сними крышку чипа и (только очень аккуратно) привинти радиатор напрямую к чипу. Я так делал на 560 гефосе. После этой процедуры на 20-30 градусов меньше греться стала. >Причем тут это? При том, что у тебя волосатый бублик не должен греть видеокарту до таких температур, если все в порядке с охлаждением. Что уж там про игрушки говорить. Что-то я не туда воюю. Как бы за юнитидауна не приняли.
>>602811 >Вместо написания движка все бы сидели и занимались фиксами чужого говнокода А сейчас вместо написания движка все сидят и занимаются фиксами своего говнокода. Или ты думаешь в Хуановском рендере не будет багов? Ты уже забыл любимую отмазку Хуана про баги в драйверах видеокарты?
>>602864 Проблема не в багах хуановского рендера, а в том что по производительности этой хуйней невозможно пользоваться и сам по себе рендер дерьмовый, гипробы каловые. Это его потолок, он уже плакался, что никто не хочет рендер пилить и делиться знаниями, все грозится блог вести по разработке рендера, типо те кто сейчас хуйню допиливают проникнутся и станут рендер улучшать
>>602872 У годота в шоукейсе намного больше, чем твои три игры уровня треугольнички в опенгл. У тебя опять приступ вранья. >>602874 На уе4е написаны десятки крутых игр. Зачем нужен твой юнитикал?
>>602883 Не говорите "написаны". Игры не пишут, их делают.
Этот процесс включает в себя много не-кода. Левед дизайн, анимации, моделирование, создание сцен, придумывание сценария, геймдизайн, озвучка персонажей.
>>602883 > три игры уровня треугольнички Маняотрицания пошли. Покажи игры из шоукейса гондоти такого же уровня. Причем у bgfx нет шоукейса и это только малая часть известных игр на нем. bgfx намного популярнее гондоти
Хочу понять что делать в скриптах дальше для дополнительных механик. Например: по нажатию кнопки взрывать первый выпущенный снаряд или вообще все снаряды, по нажатию кнопки снаряды копируют направление взгляда и летят туда.
Как положено по документации у меня 3 скрипта: скрипт игрока со всеми инпутами и движением, прицеплен на капсулу, скрипт пушки в котором функции стрельбы и смены, прицеплен на ребенка камеры, скрипт снаряда который двигает его вперед и удаляет.
Где именно прописывать поведение, скрипте оружия или снарядов? Если я хочу выборочно редактировать параметры снарядов то мне придется хранить их списке? Еще надо сделать кулдаун на выстрел, как проверить что прошла 1 секунда?
>>603054 > по нажатию кнопки взрывать первый выпущенный снаряд или вообще все снаряды, В скрипте пушки создаётся снаряд в какую-либо переменную, например, var snariad = snariads.instance() Далее, он отправляется игроку: player.add_snariad(snariad) В скрипте игрока снаряды хранятся списком: var snariads = [] нулевое значение соответствует первому выпущенному снаряду, крайнее значение (snariads.count - 1) - соответствует последнему. В _процессе скрипт игрока чекает этот лист от последнего к первому (это важно!) и удаляет из списка те снаряды, которые уже не существуют. Теперь, когда всё готово, мы делаем одну простую вещь: по нажатию кнопки, посылаем команду snariads[0].set_boom_bada_boom() либо for snariad in snariads: snariad.set_boom_bada_boom()
>>603083 Звучит как то не по-годотски. По годотски было бы добавлять пули в группу "выпущенные_игроком", а при нажатии посылать им сигнал "взорвать_все", или "повернуть_все". Да и look_at вроде не то что ему нужно. Выше писал про RemoteTransform >>602464
>>603163 Писать ты это и так будешь в самой пуле. Просто тебе не надо будет самому изобретать велосипеды со списками. А вместо вызова функций будешь посылать сигнал.
>>603162 То что ему нужно, никто, кроме него не определит.
Ну через группы тоже можно, хотя ящитаю, это (сорри за каламбур) как стрелять из пушки по воробьям. Группы нужны, когда есть множество разнотипных сущностей, которые самостоятельно создаются и уничтожаются разными источниками и логика определенной сущности не может их всех просчитать. Тогда проще завести группы и обращаться к группам. А тут твой потомок спавнит сущности одного вида, которые самостоятельно уничтожаются. Ты имеешь доступ к потомку, потомок имеет доступ к тебе. Проще и быстрее обмениваться ссылками на инстансы, чем ебаться с группами.
>>603163 Только надо чтобы была функция (метод) "взорвать_ся()" и если через группы, то call_group("пули", "взорвать_ся") если через ВЕЛОСИПЕД СО СПИСКАМИ, то for пуля in пули: пуля.взорвать_ся()
>>602409 (OP) Привет, Анон. Есть PoolVector2Array с набором векторов. Нужно каждый его элемент скалярно умножить на один и тот же Vector2. Это можно как-то одной командой сделать? Или только пилить цикл, по всем элементам массива?
>>603638 Скорее всего, только циклом. Шаблон обджект пула предписывает только организовывать пулы из объектов. Какие либо действия внутри них пул производить не обязан, только заниматься переиспользованием отработанных в новые. Впрочем, всё возможно.
>>603749 >Несколько индусов за стипендию гугла имитироаали бурную деятельность. Ни один за 3 месяца не сделал нихуя. Код в основную ветку естественно добавлен не будет
>>603750 Я просто не понимаю нахуя юзать годот? Ну говорили же запилите какую-нибудь фичу которой нигде нет, про те же события констрактовские, нет они подпрягли еще какого-то индуса ноды полировать. Их никто не юзает, потому что это тот же гдскрипт только неудобный. Или если в события не можете сделали бы шаблоны, но чтобы реально годные, фпс, рпг, чтобы хоть кто-нибудь реально сказал - вот это говно облегчило мне жизнь. Дрочатся как ебанутые, одно и тоже переписывают. Зайдешь на гитхаб там коммиты сыпятся, движуха какая-то, и так годами, а не происходит нихуя, в каждой области сраная недоделка, говнокопия юнити. https://github.com/godotengine/godot/issues/30915
>>603757 >Нарисуй оленя-гондотера Но я не знаю, как ты выглядишь. Хотя можно найти фотку любого годотера, под условия подпадает. >>603758 > передразнивать посты. Я просто зашел пообсуждать движки, а ты гондотина начала на меня обзываться, гондауны все такие тупые?
Небольшой крик души, можете смело меня игнорировать.
Использую Годо уже больше трёх лет, есть парочка законченных небольших игр, есть много мелких недоработок от джемов, и ещё пишу(писал) на нём большую полноценную игру(больше половины контента уже реализовано). И вроде бы всё хорошо и замечательно было, пока дело касалось только прототипов или совсем мелких проектов. Вот в чём с Годо никто не сможет потягаться - это со скоростью разработки. Тут вообще конкурентов нет, даже близко никто не валялся. Архитектура движка гениальна в своей простоте, позволяет за считанные минуты набросать костяк проекта любой сложности. Почему я никогда не прекращу пользоваться Годо окончательно, так как хотя бы даже для того же прототипирования равных ему нет. Но как только ты выбираешься за пределы прототипов и игр больше чем из трёх сцен, начинаются проблемы. И проблемы серьёзные, особенно когда задумаешься о будущем. 1. Ориентация на мобилки. Как следствие - полное отсутствие рендеров для полноценных платформ. Даже банального OpenGL нет, это же охуеть вообще! Не ждите, что ваша игра запустится на старом железе, даже если у вас там пара содомирующих кубов в коробке и больше ничего. 2. Проблемы с производительностью, отчасти и-за первого пункта, подозреваю. Пока ты делаешь прототипы и маленькие игры для себя на своей йоба-тачке, которая покрывает всё это стократным запасом скорости, этого не замечаешь. Но как только начинаешь тестировать коммерческий проект на слабом железе(которого предположительно у 70-80% пользователей) - внезапно охуеваешь от 15фпс на сцене из двух спрайтов на фоне параллакса. 3. Опенсорс. От которого происходит целый ворох проблем, от мала до велика. Первая - забудьте о простом релизе на консолях. Для этого нужно или самому движок переписывать, или нанимать стороннюю фирму. Вторая - баги, баги, баги, которые никто не чинит, потому что все заняты добавлением новых ненужных фич, которые в свою очередь добавляют баги, баги, баги. И ладно бы мелкие, так ведь большие серьёзные баги никто не чинит. Я больше года назад завёл тикет на баг редактора, с которым столкнётся каждый, кто вздумает запилить более-менее серьёзный проект. Тикет приняли, разобрали, нашли причину, и... ничего не сделали до сих пор. А баг некисло так портит жизнь разработчику. Но, похоже, я единственный, кто собирался писать на Годо большой проект. И с одной стороны - "почини сам, это же опенсорс". Но с другой стороны, а зачем мне тогда движок использовать вообще, простите? Мне проще самому писать на своём движке.
Вывод только один - при всех плюса Годо, что называется "not production ready". То есть на нём банально невозможно выпустить большой полноценный проект.
Итого - я переписываю свои мелкие проекты на юнити, а большую игру перевожу на самописный движок на SDL2. И это очень обидно, потому что мне реально нравится использовать Годо.
>>603819 >Я больше года назад завёл тикет на баг редактора, с которым столкнётся каждый, кто вздумает запилить более-менее серьёзный проект. Тикет приняли, разобрали, нашли причину, и... ничего не сделали до сих пор. А рассказать, что за баг или ссылку на тикет кинуть - западло?
>>603819 Это какая-то паста? >полное отсутствие рендеров для полноценных платформ Вут? Почему у меня на железе 10-летней давности работает GLES2? Кстати, имей в виду что игры на юнити 2017+ года на старом железе не запускаются. >забудьте о простом релизе на консолях. Вут? Берешь и релизишь, просто сдк в комплекте никогда не выложат.
>>603834 GLES2 - не полноценный рендерер. На встройках с ним проблемы, он банально не работает на половине, даже новых. >Берешь и релизишь, просто сдк в комплекте никогда не выложат. Ну-ка зарелизься-ка на свитч с пруфами. (у меня девкит свитча есть если что)
>>603835 Выбираю оба. Я это и имел в виду - когда игра технически закончена, всё дописано - и архитектура, и все модули, и интерфейс, и метагейм и т.д. Осталось только наполнение контентом - рисовать графику, строить уровни, скриптить врагов, режиссировать катсцены.
>>603839 >На встройках с ним проблемы, он банально не работает на половине, даже новых. Так на новых есть GLES3, и будет Вулкан. Чо ты тут клоунаду устраиваешь, лол? > Я это и имел в виду - когда игра технически закончена, всё дописано - и архитектура, и все модули, и интерфейс, и метагейм и т.д. Осталось только наполнение контентом - рисовать графику, строить уровни, скриптить врагов, режиссировать катсцены. Так не бывает в принципе в этой жизни. Любая разработка именно "большой" игры выглядит так - геймдизайнер придумывает фичу, левелдизайнеры добавляют ее на уровень, и идут к программистам, потому что средствами игры ее добавить невозможно или возможно только через костыли. И программисты меняют движок. То что ты описал - это фантастика, ну или очень-очень поздняя стадия поддержки ммо, когда ее уже 3 раза перепродали и разработчиков нет вообще, есть только пара срипткидди в поддержке. В документации годота прямым текстом написано, к кому обратиться чтобы получить порт на свищ. https://godotengine.org/qa/30450/proposal-for-nintendo-switch-support-for-godot
>>603819 > 1. Ориентация на мобилки. Как следствие - полное отсутствие рендеров для полноценных платформ. Даже банального OpenGL нет, это же охуеть вообще! Не ждите, что ваша игра запустится на старом железе, даже если у вас там пара содомирующих кубов в коробке и больше ничего. Почему компы слабее мобилок? > 2. Проблемы с производительностью, отчасти и-за первого пункта, подозреваю. Пока ты делаешь прототипы и маленькие игры для себя на своей йоба-тачке, которая покрывает всё это стократным запасом скорости, этого не замечаешь. Но как только начинаешь В большинстве игор есть меню настроек графики, где можно подобрать себе параметры по своему железу. Почему ты так не делаешь? > 3. Опенсорс. От которого происходит целый ворох проблем, от мала до велика. > Первая - забудьте о простом релизе на консолях. Чтобы релизиться на консолях, нужно заплатить деньги за СДК. Затем свою игру надо адаптировать к СДК. В прошлых тредах была инфа, что есть фирма, которая всё это сделала и продаёт уже готовые шаблоны экспорта, по цене: стоимость СДК + маржа за свою работу. > Вторая - баги, баги, баги > "почини сам, это же опенсорс". Но с другой стороны, а зачем мне тогда движок использовать вообще, простите? Потому что починить это бысрее, чем пилить свой велосипед. Впрочем > самописный движок на SDL2 Раз у тебя уже есть свой велосипед, тебе проще, конечно.
В итоге, что я могу сказать. Разработай себе универсальный подход, при котором ты клепаешь быстрый прототип на годоте, получаешь краудфандинг, а затем резко перебрасываешь весь контент в аналогичный проект на юнити и заканчиваешь игру на нём.
Впрочем, если изучил шарп, и минимально ознакомился с юнити, то кроме неотключаемого сплеша, у него минусов нет. Я недавно озвучивал свои мысли вслух в юнититреде по данному вопросу. Он делает годот по всем пунктам. Скорость разработки - это твой личный импринтинг. Набросать сцену с ебущимися кубами в юнити ничуть не дольше,чем в годоте. При этом, каждый куб может на себе носить несколько скриптов. И вообще, принцип списка компонентов уделывает принцип дерева: пока годот в дереве рекурсивно ветви обходит, юнити уже быстро пролетел по одноранговому списку компонентов и выдал результат. Увы и ах. Самые удобные человеку вещи оказываются самыми неудобными машине. Это удобно, когда ты бросил риджидбади, ему в потомки бросил спрайт и коллижншейп, но не менее удобно, когда ты бросил геймобджект, ему в компоненты бросил риджидбади, коллайдер и спрайтрендерер. Разница минимальна, а выигрыш в скорости заставляет задуматься. В годоте ты вынужден следить, чтобы не подвигать мышкой ноду коллизии относительно родительской ноды тела, в юнити этой проблемы нет. Компонент коллизии просто не имеет координат, они ему не нужны, он не существует в памяти как полноценный геймобъект (у которого одного как раз координаты есть), он только задаёт форму коллизии своему хост-объекту. То же самое и о спрайте.
>>603841 Нодеву-то виднее, конечно. А вообще мне похуй. Я табличку возле разложенных граблей вывесил - и умываю руки. А наступать ли на них - ваше дело. Мне лично шишки набивать надоело. Да вам и беспокоиться не о чём, впрочем, всё равно тут никто никогда до этих граблей не доберется.
>>603844 Так-то да. Но даже бесконечно вложенные сцены юнили уже украл как нестедпрефабс. Проклятие опенсорса: наработки уносят в слозесорс и делают бабки.
>>603847 Это как бы и так было всем очевидно. Ты думал что гондотиры сейчас прочитают твой и скажут "ммм, ты прав! все переходим на юнити, посоны!". Им уже десятки тредов объясняют очевидные истины, но они продолжают жить в своем манямирке.
>>603843 >В большинстве игор есть меню настроек графики, где можно подобрать себе параметры по своему железу. Почему ты так не делаешь? Объясни, как сделать это на Годоте. Алсо объясни, как исправить настройками графики низкую производительность скриптов и пайплана рендерера?
>>603851 > как сделать это на Годоте Делаешь новую сцену с корнем Control и делаешь меню. Значения берёшь из ProjectSettings, всякие там антиалиасы и прочее. Сюда же помещаешь настройки ЛОД, размеров текстур и т.п. Это очень большая работа, но если мы говорим о большом ерьёзном проекте, эту работу делать надо. > как исправить настройками графики низкую производительность скриптов Шарпом, крестами. > и пайплана рендерера Переходом на юнити, в котом вулкан есть уже сегодня и ждать не надо.
>>603850 Да просто мне реально обидно, потому что во всём остальном-то движок действительно хороший, и мне вообще очень нравится. Но блджад, вот пилил я на нём два года игру мечты, и, когда впереди забрезжил свет окончания работ, начал потихоньку готовиться к релизу, собрал демку, пошёл тестировать на парке машин, и внезапно понял, что релизить-то не получится. И это пиздец.
>>603847 > нодеву Чувак, я какбе на EA еще 10 лет назад работал. Ну и потом ты оче упрощаешь картину, рассуждая о 2д онли. У 2д так то с опенсорс движками нет конечно.
>>603855 >ни разу за 2 года не давал знакомым или друзям потестить и поэтому не столкнулся с проблемами запуска >за пару дней перевел все на юнити Прохладно. Ты когда в следующий раз набрасывать будешь, попробуй сочинить что-то правдоподобное.
>>603839 >Я это и имел в виду - когда игра технически закончена, всё дописано - и архитектура, и все модули, и интерфейс, и метагейм и т.д. Осталось только наполнение контентом - рисовать графику, строить уровни, скриптить врагов, режиссировать катсцены. То есть в годоте муторно добавлять горы контента?
Тут про баги всякие пишут, а их получится исправлять за пару минут загуглив решение на форумах или придется с нуля что-то учить, читать жесткие книги по программированию, перелопачивать библиотеки на тыщи строк?
>>603856 Не вижу, чем скриптомакака от нодева отличается. Своих-то проектов у тебя всё равно нет, раз ты даже не способен понять отличия рабочего процесса у большой команды и индюка-одиночки. >>603863 >>603864 А вы в следующий раз не мугичкой читайте.
>>603872 > скриптомакака И снова мимо. > отличие от одиночки Ну так это ты начал про большие проекты затирать. > своих проектов у тебя нет Ох уж эти проекции.
>>603907 А какое отношение имеет Dwarf Fortress к твоему проекту? Да и говорить про DF смешно, во-первых его давно обогнали всякие успешные rimworldы, во-вторых с точки зрения gamedev это полная противоположенность того что ты описал, в DF вообще считай нет графики уровней и моделек, а именно код там постоянно пишется.
>>603934 >во-первых его давно обогнали всякие успешные rimworldы Римворлд - бездушный выблев на юнити, в котором нет и 5% от фич и интерактивностей из dwarf fortress. "Обогнать" df этот кал может только в фантазиях пикрилейтеда, видимо ты на него чем-то похож.
>>603962 Как иронично. DF это игра, которую пилят годами прямо как гондотиры, она не вышла даже в ёрли-аксесс. А РимВорлд на юнити просто взяли и запилили, да еще и с графоном сразу, и давно продают за $35 баксов.
>>603964 Графон уровня римворлд это скорее минус чем плюс, вырвиглазное ноу-скилл говно без анимаций. Уж лучше ascii арт, чем такой кал. >А РимВорлд на юнити просто взяли и запилили, да еще и с графоном сразу, и давно продают за $35 баксов. Просто взяли и запилили унылое говно, в попытках срубить бабла на фанах df, и это говно даже близко не стоит с оригиналом. То, что продают - молодцы, но это не делает игру лучше и глубже, чем df. А если для тебя финансовый успех - единственный критерий для оценки игры, то можешь не переживать за df, их авторы вполне себе безбедно живут на донаты от фанов уже не первое десятилетие.
Годотач, такой вопрос: делаю себе игру, которая юзает встроенный годотовский хай-левел нетворкинг (коннектиться нужно будет только по локалке, поэтому мне сложнее и не нужно) и всё хорошо, всё работает, но меня заёбывает каждый раз ручками коннектиться к локальному адресу ПК. Хочу получать IP.get_local_addresses() клиента, и +-50 адресов в каждую сторону от него искать IP хоста быстрым циклом в ready(). Собственно, вопрос: Есть ли какая функция, чтобы тупо возвращала true, если на этом IP есть хост-сервер или эту проверку можно делать как-то иначе? Я бы тупо коннектился ко всем IP в цикле до тех пор, пока не вернётся сигнал connected_to_server, но что делать, если хост-серва в локалке два+, а мне нужен конкретный из них? Короче, без вашей помощи не осилю, документацию уже перерыл пару раз - нужного не нашлось, выручайте.
>>603974 >Уж лучше ascii арт, чем такой кал Нет, лучше нормальные читабельные иконки, чем кодированные символы, для понимания которых нужно заучивать таблицу кодировки в памяти. Это лишнее препятствие для игрока, негативный UX.
>>603974 Ты совершенно прав, мой юный друг. Финансы - совершенно не единственный критерий успеха. На мой взгляд, главный критерий - сколько игроков играет. Ну, прямых цифр нам никто конечно не выдаст. Но мы можем косвенно оценить по движухе вокруг. Тем на реддите с нового года о RW - 24,156, df - 4,221 (в 5 раз меньше) Постов о RW - 326,654, df - 68,857 Каналов на твитче о df - 3 штуки с 30 просмотрами, RW - 8 c 340 просмотрами, и так далее. Можно долго продолжать, но картина ясна. И главное, мне все еще непонятно, зачем было приводить df как пример "игрового проекта".
Короче, разобрался. Спасибо огромное >>603986 что сказал, в какую сторону гуглить. Короче, вот:
Хост: Хост в ready делает массив IP-адресов для трансляции:
for address in IP.get_local_addresses(): var parts = address.split('.') if (parts.size()==4): parts[3]='255' var tempIP=parts.join('.') if tempIP!="127.0.0.255": IPs.push_back(tempIP)
Тут я исключил 127.0.0.1(255) потому что он вызывал какие-то проблемы (уже не помню какие) Далее в process() хост создаёт PacketPeerUDP и отправляет пустой PoolByteArray - "data" поочерёдно на все свои IP-адреса, которые подготовил ранее. 4242 в данном случае - порт, но он может быть любым:
var udp= PacketPeerUDP.new() for IP_ad in IPs: udp.set_dest_address(IP_ad, 4242) udp.put_packet(data)
Клиент: Клиент ТОЧНО ТАК ЖЕ собирает массив всех своих IP адресов (на мобилках он обычно всего один, помимо 127.0.0.1) с 255 на конце в ready(). Тупо используйте тот же код.
И в process() клиент тоже создаёт себя как PacketPeerUDP и слушает по всем своим IP из массива отосланный пакет, при получении которого записывает IP хоста в переменную. 4242 - опять порт, может быть любым. 65536 - дефолтное значение размера буфера.
var client = PacketPeerUDP.new() for IP_ad in IPs: client.listen(4242,IP_ad,65536) client.get_packet() HostIP=client.get_packet_ip()
>>604050 Ебать странное заявление. Тред школьников, про школьный движок, и эти школньики называют взрослых людей школьниками, за то что хотят потереть их филиал скрэтч мит
>>604020 > я исключил 127.0.0.1(255) потому что он вызывал какие-то проблемы (уже не помню какие) Это же loopback интерфейс, который если попытаться перевести "петлевзадый". Он настолько локальный, что не выходит за границы компа (устройства). Следовательно, сети на нём быть не может. Кроме такого варианта, когда на 127.0.0.1 сидит программный прокси-сервер (антивирус обычно), который подглядывает в пакеты и затем их перенаправляет в нормальную сеть 192.168.255.255 или 10.255.255.255
Языки программирования придумали чтоб упрощать код. Так повторяющийся код превращают в функцию а повторяющийся участок памяти над которым проводят однотипные операции превращают в класс. А это во что можно превратить? http://docs.godotengine.org/en/3.0/tutorials/3d/fps_tutorial/part_two.html скрипт animation player'а
func animation_ended(anim_name):
# UNARMED transitions if current_state == "Idle_unarmed": pass
Тут только меняются названия пушки, действия одинаковы euqip, unequip, idle, fire, reload везде. 3 оружия с пятком анимации еще можно так расписать, но с каждым новым добавлением код будет расти в геометрической прогрессии. А после добавления кучи пушек поменять какую то фигню будет муторно. И я хочу в своей игре кучу пушек и больше анимаций для них.
>>604162 Впрочем, дам подсказку. В дополнение к коду этой функции (anim_transition) я бы создал файл json, в котором описал бы правила работы конченого аппарата конечного автомата переключения анимаций. Например: [ {"anim_from" : "pistol_equip", "anim_to" : "pistol_idle"} ] В дальнейшем я бы не трогая код, редактировал файл правил.
>>604175 У меня другая идея появилась. Сплитить строчку по нижнему подчеркиванию. Лучше чем быдлокод, но потом придется его заменить потом чем то более быстрым.
>>604140 Это я понял, но по какой-то причине, если в массиве вообще есть такой адрес - всё ломается к хуям и for-цикл тупо виснет на нём, не слушая ничего по другим, правильным адресам.
А может, это моя локальная проблема и её надо как-то иначе решить, но мне проще одну строчку для проверки добавить
>>604240 Хмм, а в этой ноде можно будет сделать такую же универсальную конструкцию как в коде? То есть чтоб структура анимаций оставалась та же а пушки менялись.
>>604240 With AnimationPlayer, Godot has one of the most flexible animation systems that you can find in any game engine. The ability to animate pretty much any property in any node or resource, as well as having dedicated transform, bezier, function calling, audio and sub-animation tracks, is pretty much unique. Найс самоотсос Хуана. Спиздили все из юнити.
>>604261 Сомнительно что в унити можно анимировать любое свойство. Впрочем, даже если так, придумали это уж точно не в унити, даже в дремучем флеше подобное было.
Тащемта, Хуан много чего пиздит из взрослых движков, новый animation tree почти один в один из анрила спизжен, только более кривой, глючный и с уёбищным интерфейсом, в отличие от анриловского.
>>604288 > спизжен, только более кривой, глючный и с уёбищным интерфейсом это обо всём хуановском можно сказать. редактор материалов? васянка под юич. анимируй свойства? васянка под юнети. анимейшн три, ну ты уже сказал тут всё. что там ещё, а, да, ECS который на самом деле не ECS, тоже с юнети спизжен, и конечно же криво, не даст вешать свои скрипты куда угодно, и вообще НИТО.
>>604291 >В лучшем опенсорсном движке Годот используется интерфейс лучшего в мире движка УЕ4 >А ВОТ У НАС В ЮНЕТЕ ТОЖЕ ЕСТЬ ГОВЕНИНА Юнитигной, у вас там реально все так плохо, что вы каждый раз пытаетесь примазаться?
Извиняюсь за свое невежество и смелость прервать войну оскорблений, но, избрал Godot для разработки игры, опыта в разработке не имею, поэтому спрашиваю: насколько целесообразно и реально на Годо создать нечто похожее на вот эту игрульку. https://www.youtube.com/watch?v=Q41FQT6_LxQ
>>604378 > реально на Годо создать нечто похожее на вот эту игрульку. В теории - да. Но никто пока не смог этого сделать. А учитывая >опыта в разработке не имею Скорее всего, ты не сможешь сделать даже один домик из этой игры в блендере, что уж говорить целиком об игре.
>>604411 Ну, в бляндере я уже работал, и это, пожалуй мой единственный опыт около геймдева, какие-нибудь убогенькие домики понастроить смогу, чтобы в итоге спрятать подобие игры и никому не показывать.
>>604424 >Вполне реально. Почему тогда на гондотю нет ни одной 3д игры? Ответ очевиден - без окклюжен куллинга невозможно создать что-то масштабом больше стандартной 3д демки. Для полноценной игры это несерьезно.
>>604456 >Хуан не простил годотерам их своеволия. Сурово наказал он их. Беспрерывно делают годотеры игры. Напрягая все силы, разрабатывают они их и, кажется, вот-вот уже сделают игру, но каждый раз годот обновляется и ломается проект. И опять приходится годотерам начинать все сначала. Люди узнали об этом, и с тех пор любую бессмысленную и бесконечную работу называют «годотов труд».
>>604453 Что это за аутизм? Ты понимаешь, что ты поехавший? Нахуя ты это делаешь? Какие-то игры для тех, кто тебя обоссывает, какие-то игры для борды из 15 человек. Ты совсем ебанутый? Выйди на улицу, друзей найди и для них хотя бы делай, раз ты такой аутист. Спасибо за два подписчика дарагие фанаты
>>604480 Ну как рекомендует... говорит что его плюсы это, что быстро загружается и не надо устанавливать, поэтому можно таскать с собой на флешке. Очень интересно.
>>604442 Уже 100 раз обсосано, окклюжн куллинг в 2к19 никто не использует, потому что он не работает в современных условиях, он работал только в 2000-х в коридорных шутанах, где еще делали S-образные стыки между уровнями чтобы не видно было следующий кусок карты. В годоте будет репроекция глубины, которая на основе предыдущего кадра и сдвига камеры определяет по маске что осталось скрытым и не надо рисовать, это топовая технология для опенворлда и прочего.
>>604499 Еще бы. Пилить большую половина движа за бесплатно, пока Хуан собирает все сливки по 12к$ в месяц и нихуя не делает кроме переписывания рендера раз в несколько лет. Это нужно быть или святым и ебанутым (что одно и то же лол), чтобы писать код годоту.
>>604560 Тут встает более глобальный вопрос, можно ли считать данное интерактивное 3д приложение игрой. Ведь даже куб без текстуры на пустой сцене, на который навесили скрипт перемещения стрелочками, технически можно назвать игрой на годоте.
>>603083 >>603162 Сделал через группы, потому что хз как чистить списки. Какие в группах есть способы выбора конкретного элемента?
>>603084 Сделал кулдаун через таймер, потому что стрельба в скрипте пушки одноразовая и этот илд исчезает, а помещать его в общий скрипт не хочу, вдруг весь инпут встанет.
Что не так с поворотом у камеры? Чтоб снаряды поворачивались по взгляду пришлось добавить
camera_rot.x *=-1 camera_rot.y += deg2rad(180)
Без этого поворот был в обратную сторону. Я менял в инспекторе поворот, эффекта ноль. Камера смотрит по оси z, снаряд тоже.
>>604780 > хз как чистить списки >>603083 > В _процессе скрипт игрока чекает этот лист от последнего к первому (это важно!) и удаляет из списка те снаряды, которые уже не существуют. for index in range(list.size()-1, 0): if !list[index]: list.remove(index)
>>604849 Tckm Есль цель сделать ракету, как в халфе второй, когда ракеты летят, куда ты ракетницей указываешь, то нужно не мгновенно менять направление, а интерполировать от старого к новому положению вектора.
>>604858 > в годоте "if нода" проверяет объект на существование? if expression возвращает тру, если expression не null для ссылочных типов, не ноль для числовых, не пустая строка для строковых.
>>603908 >Вообще-то я подразумевал код показать. Забей. Смысл был в том, что есть ли в годоте _встроенные_ средства для построения побитовых масок из спрайтов-объектов и возможность работы с ними. Если их нет, то написать на шарпе или плюсах я подобие своего движка я и сам смогу. >>603908 >То, что на гифке я бы делал через one way collision Это только частный случай. Там дофига других необходимых вещей есть, которые через полигоны жопошно определять. Ну и плюс это работать должно в разы быстрее чем через полигоны. ------ Но я собственно уже сделал пока свой костыль через Physics2DDirectSpaceState и массив лучей. Потом что-нибудь получше придумаю. ------
>>604477 Это совсем не то. То что ты принес, это просто маски слоев для коллизий. Я имел ввиду спрайтовые маски, с которыми можно совершать разные побитовые штуки, как минимум проверку на пересечение по AND.
>>604913 >Где об этом почитать? Я конкретно не понимаю, о чем ты. Говорю же забей. Если не знаешь, что это, то оно тебе и не нужно. Я честно говоря даже не знаю где-бы это нормально описывалось, так чтобы понятно было. Если вкратце. То берешь спрайты из которых у тебя тайлмап строится и делаешь с них черно белую маску, обычно через альфу, но есть и другие способы. Со спрайта игрока так же делаешь такую-же маску, либо в большинстве случаев лепишь простой AABB и коллизии проверяются побитовым сравнением этих двух изображений или прямоугольника с маской. Если часть маски попадает в прямоугольник вот это и есть твоя коллизия. Если реализовать механизм правильно, на низком уровне, то работать будет быстрее чем, через полигоны. Ну и всякие плюшки, вроде тотальной разрушаемости ландшафта (типа как в игре Worms), проще работа с кривыми поверхностями (конкретно кривыми), проще рабоать если нужно, чтобы игрок проходил внутрь поверхностей и т.д. --------- >>604941 >Он хочет pixel perfect collisions, но ведь сейчас не 1980 К сожалению да.
>>604941 >это создаст игроку больше неудобств чем улучшений. Игроку вообще похуй будет, он даже знать не будет, что и как у меня там реализовано будет.
>>605033 Игроку будет не похуй, когда он будет застревать в совершенно нелепых местах, и умирать от совершенно левых столкновений, даже в 1980х это начали понимать и научились проверять прямоугольные хитбоксы до того как отработает хардверный спрайт.
>>605038 Это не проблема механизма коллизий, это уже вопрос гейм- и левелдизайна. Можно и в полигонах нахреначить такого, что игрок охуеет. Надо просто маску коллизий создавать не фактически со спрайтов, а как дублирующую подложку где заложены нужные для коллизий формы с обрезанной шелухой.
>>605033 > Говорю же забей. Если не знаешь, что это, то оно тебе и не нужно. Судя по описанию, писечка вкусная. Есть пруфы, что это быстрее полигонов и, главное, быстрее параметрических коллизий, типа капсулы, круга, шара?
>>605033 А какой смысл делать пиксель перфект? У тебя гигантское простанство? Разрушаемость? Если у тебя обычный платформер то ты разницы с квадратными коллизиями не заметишь
>>605073 Полигоны то у тебя тоже невидимые. А в дебаге все, что хочешь подсветить можно. -------
>>605074 >Есть пруфы, что это быстрее полигонов и, главное, быстрее параметрических коллизий, типа капсулы, круга, шара? Нет. Но по логике даже пачка битовых AND будет дешевле вычислений с плавающей точкой.
>>605089 >Разрушаемость? Была идея, но я уже забил.
>>605089 >Если у тебя обычный платформер то ты разницы с квадратными коллизиями не заметишь Заметил. То что раньше делалось простой проверкой на глубину проникновения или расстояния до поверхности, приходится делать через жопный костыль с массивом рейкастов. Но это похоже косяк годота, т.к. в нем метод intersect shape в direct_space_state похоже вообще не рабоатает. По крайней мере мне не удалось его заставить, вообще хоть что-нибудь выдать.
>>605092 > дешевле вычислений с плавающей точкой Я вас умоляю, коллега. В век 8-ядерных штеудов заниматься байтоёбством? Ради чего? Ради кого? Ваш личный загон - уважаю, ничего не имею против. Битовые операции вложены в гдскрипт, дерзайте, велосипедьте. Но не советую требовать подобный функционал искаропки.
>>605097 И даже они будут в разы дешевле, операций с плавающей точкой. ----------- Но опять же это все болтология. Если это не реализовано на низком уровне, то пытаться сделать это на том же gdscript - гиблое дело, будет медленнее
>>605104 >Но не советую требовать подобный функционал искаропки. Да я не особо и митингую по этому поводу. Просто грусть-печалька по поводу проебанных возможностей. Ясен пень, что я на полигонах смогу приспособиться (вернее можно сказать уже). -------------
>>605130 Не, ну так то он может и прав быть. Для того чтобы проверить AABB там вначале отработает несколько if-ов в ООП, чтобы узнать что у нас именно AABB а не произвольный многоугольник под произвольным углом, и математика действительно будет во флоатах, а не интах. А для пикселей не нужно перебирать все, можно сравнивать например целые байты, а то и слова, по and. А может и в опенгл есть какая-то функция, узнать о наложении уже постфактум после рисования? Правда, это может создать неудобства в логике (надо будет откатывать обратно если с чем то столкнулся)
>>605132 Нет, для пиксельных коллизий тебе придется перебирать все не пустые пиксели по площади спрайта, получать мировые координаты этого пикселя, выбирать значения из массива-маски по этим координатам и сравнивать. Чем больше площадь спрайта, тем тормознее будут твои коллизии.
Для AABB тебе всегда нужно просто сравнить несколько чисел. float, byte, не имеет значения. Ты думаешь что современные долго считают флоаты? Для современных процессоров боттленеком является невозможность распаралеллить инструкции для пайплайна, и миссы кеша.
>>605146 >для пиксельных коллизий тебе придется перебирать все не пустые пиксели по площади спрайта, получать мировые координаты этого пикселя, выбирать значения из массива-маски по этим координатам и сравнивать. Нет, не придется, кто тебе внушил такую чушь? Работает это, например, так. У спрайта делается битовая маска, 00111100 и так далее. В 32битной архитектуре, соответственно, в регистре у нас сразу горизонтальный скан целого 32-пиксельного спрайта. Битовая карта мира, естественно, храниться в массиве, и координаты определяются один раз, а не на каждый пиксель - у тебя это аналог вычислений внутри цикла, которые надо делать один раз до цикла, а потом просто инкрементить на шаг. Так что, если говорить совсем упрощенно, то мы накладываем маску спрайта 01100... на уровень 1111000... и если and дает ненулевой результат, то есть пересечение. В реальности там чуть сложнее, потому что надо делать не одно сравнение, а два - учитывая сдвиг не кратный 32 битам, то есть примерно так (spr << xShift) & levelMask[i-1] (spr > (32-xShift)) & levelMask Плюс там еще надо немного математики над , но тут мне вообще лень думать. Но я сразу сказал что я вообще против этого подхода.
>>605349 Зачем ты мне пишешь? Я это и так понимаю. Еще раз повторюсь что это надо бенчмаркать. У тебя написано 12 операций (abs это xor и вычитание, <= это вычитание). Сколько будет в пиксельных мне считать лень. Минимум 2 за каждую строку спрайта в 1пикс высотой.
>>605092 >Нет. Но по логике даже пачка битовых AND будет дешевле вычислений с плавающей точкой. >гондотитя Какая разница, если ты разрабатываешь на движке, который находится на дне выгребной ямы по перформансу? Ты хоть усрись, но все равно не получится сделать так, чтобы не тормозило, число draw call'ов будет расти пропорционально кол-ву спрайтов на экране и твой 2д платформер уровня марио будет грузить процессор и видеокарту как крузис.
>>605356 >музыка Добавь видосики через видеоплеер. Делаешь его невидимым и с него читаешь текстуру одной строчкой и вешаешь видео на спрайты или 3д модели.
>>605405 > число draw call'ов будет расти пропорционально кол-ву спрайтов на экране Это только в том случае, если каждый спрайт будет создавать себе инстанс текстуры (что в редакторе годота делается по умолчанию). Мы это ещё в прошлом треде разобрали. Просто берёшь и вешаешь на одинаковые спрайты ссылку на один инстанс текстуры. Затем берёшь и слепляешь все текстуры в одну текстуру-атлас, загружаешь один её инстанс, затем спрайтам назначаешь его и указываешь координаты кусочка текстуры, который нужен. Это дольше, запарнее, но будет тебе перфоманц.
>>605432 Ты наверное прошлый тред жопой читал, спрайт батчинг это еще и объединение всех четырехугольников в один меш, без этого у тебя все равно один дроу колл на спрайт.
>>605405 >если ты разрабатываешь на движке, который >число draw call'ов будет расти пропорционально кол-ву спрайтов на экране и твой 2д платформер уровня марио будет грузить процессор и видеокарту как крузис Кстати, поправьте если не прав, но по-моему единственный способ сделать чтобы число draw call'ов не зависело от кол-ва спрайтов это использовать буфер-текстуры (ARB_texture_buffer_object, это минимум OpenGL 3.1) вместо полновесных обычных, что для 2D в принципе может прокатывать ибо там без мипмаппинга и фильтрации можно обойтись в отличии от перспективного 3D. Интересно, какие-нибудь из популярных 2D движков их юзают? А при простом спрайт-батчинге-то draw call'ы тоже растут пропорционально, просто с меньшим коэффициентом.
>>605528 >А при простом спрайт-батчинге-то draw call'ы тоже растут пропорционально Нет. При спрайт батчинге у тебя будет один меш, в котором все координаты спрайтов. И один дров колл. А на видяхе уже на ее 1000+ ядрах все квады нарисуются параллельно. Погоди, разве я тебе уже не рассказывал все это в прошлом треде?
>>605590 Но если все спрайты не поместятся в одну текстуру, то тогда нужна будет вторая, а не поместятся во вторую -- нужна будет третья и т.д. Итого число дроу-коллов всё ещё увеличивается с числом спрайтов, просто медленнее.
Годаны, научите интерполировать цвета. Суть токова: в годоте компонент emission не излучает свет. Сэд бат тру. Пришлось велосипедить. Позади квада с эмиссией установлен SpotLight, в _process я хочу вычислить средний цвет текстуры и сделать его цветом светильника. Как я только не делал, вот пикрелейтед вариант кода, а видеорилейтед вариант хуиты, которая получается. Слишком дёрганный свет получается, как будто свеча горит на ветру. сначала я брал матрицу източек текстуры с шагом 10 пикселей, потом я стал брать из центра. Добавлял десатурацию. Пробовал задавать разные шаги интерполяции в зависимости от яркости. Ни-ху-я. Вообще, можете на пальцах объяснить, что у меня не так?
>>605673 >Донаты - вещь непостоянная и существует как приятный бонус. Реально же они работают на галерах простых ентерпрайзных. Заткнись, тупая дура, не знаешь не пизди.
>>605658 Берешь N пикселей с картинки (твоя сетка подойдёт) суммируешь R G B каждого из них Потом делишь на N (количество пикселей) вот тебе и типа примерно средний цвет
Чтобы резко не моргал только его и интерполируешь с прошлым значением.
>>605528 Один draw call - это один вызов функции отрисовки, glDrawArrays или её производных. Чтобы был один дравколл для спрайт батча - нужно ручками собрать вертексы всех рисуемых спрайтов в один vbo и отрисовать их за один вызов функции отрисовки. Для текстур при этом есть несколько вариантов. Можно собирать все спрайты в одну мега-текстуру, и конвертировать локальные текстурные координаты в глобальные. Можно создать массив текстур, GL_TEXTURE_2D_ARRAY, это что-то типа стопки отдельных текстур, наложенных друг на друга, таким образом можно передать в шейдер хоть сто текстур и использовать их в рамках одного драв колла, выбирать нужную в шейдере. Есть еще 3д текстуры, можно так же билдить текстурный куб из спрайтов и использовать в качестве текстурных координат не 2д вектор, а 3д. >Интересно, какие-нибудь из популярных 2D движков их юзают? Спрайт батчи есть почти в любом движке, на котором делают коммерческие 2д игры. XNA/monogame, libgdx, cocos, юпити. Кроме гондотитя, естественно, Хуан не понимает, зачем это нужно, он загружает один спрайт на сцену и у него всё летает, значит и так сойдет. Если интересны детали реализации - посмотри исходники monogame какого-нибудь, там опенсорс.
>>605703 >Можно собирать все спрайты в одну мега-текстуру Но у обычной 2D текстуры сильные ограничения на размер. Поэтому я и заговорил о texture_buffer_object, который ограничен по сути только памятью видюхи. >Можно создать массив текстур, GL_TEXTURE_2D_ARRAY, это что-то типа стопки отдельных текстур, наложенных друг на друга, таким образом можно передать в шейдер хоть сто текстур и использовать их в рамках одного драв колла, выбирать нужную в шейдере. >>по-моему единственный способ сделать чтобы число draw call'ов не зависело... А, значит я был неправ, он не единственный. Спасибо за инфу, про такой вариант буду тоже знать. >>Интересно, какие-нибудь из популярных 2D движков их юзают? >Спрайт батчи есть почти в любом движке Я не в общем про спрайт батчи спрашивал, а про мега текстуру реализуемую в виде texture_buffer_object. В tbo просто нету мипмапов и фильтрации. Хотя если цель -- тупо блитить из текстуры на экран, то они и не нужны.
>>602409 (OP) Анон, у меня встал вопрос. Есть сцена, на ней есть Label в котором bitmap font'ом пишется какой-нибудь текст. Можно ли сделать так, чтобы на эту Label не влиял размер окна и текст в ней всегда был в масштабе 1:1 ? Т.е. к примеру, если у меня базовое разрешение игры 320х240, а игра запускается в окне x4 (1280x960), то чтобы текст в этом Label рендерился, без учета масштаба
>>605760 >>605762 Сначала: var arr : PoolColorArray Потом: for x in range(0, pict.w, 10): for y in range(0, pict.h, 10): arr.append(get_pixel(x,y)) Затем: for pix in arr: - sum_red += pix.r - sum_gre += pix.g - sum_blu += pix.b И в конце: final_color = Color(sum_red / arr.size(), sum_gre / arr.size(), sum_blu / arr.size())
>>605780 >>605707 Нахуя вы там пиксели руками суммируете в гондотитя-скрипте, вы ебнулись? Да еще и каждый фрейм, как я понял. Просто делай ресайз твоей пикчи с билинейной фильтрацией в размер 1x1, он автоматом даст тебе среднее значение. И работать будет побыстрее, потому что в реализации ресайза перебор пикселей будет на плюсах реализован, а не тормозном гондотитя-скрипте. http://docs.godotengine.org/en/3.0/classes/class_image.html#class-image-resize
>>605786 Самое быстрое будет, скорее всего, влезть в исходники кодека и там найти какое-то значение по блоку еще до того, как его распаковали, ведь суммируя пиксели ты по сути выполняешь двойную работу.
>>605885 Чтобы не мерцало, меняй цвет не каждый фрейм, а раз в 0.2 секунды задавай desiredColor, цвет, к которому стремится текущий, а actualColor (который назначается источнику света) высчитывай через линейную интерполяцию - actualColor = lerp(actualColor, desiredColor, deltaTime). Тогда меняться будет плавно. А насчет цвета, хз что еще посоветовать, по идее можно определять доминантный цвет через алгоритм типа такого - https://github.com/BlueCocoa/mashiro, но это придется спускаться на уровень плюсов, на гондотитяскрипте попиксельные вычисления не лучшая идея. Хотя, если делать их не каждый фрейм, в раз в 0.2 секунды или даже секунду - то в принципе можно попробовать.
>>602409 (OP) Когда в годоте будет нормальный импорт мешей? Импортирую .obj - материалов нет, импортирую .dae - материалы есть, но сам меш виден как сцена. Можно ли как-то обойтись без этого пердоллинга?
Блин, двач, помоги. Пытаюсь сделать шейдер, задаю команду:
vec4 color = textureLod(SCREEN_TEXTURE, SCREEN_UV);
получаю в ответ:
Unknown identifier in expression: SCREEN_TEXTURE ------- Что не так, это ж вроде встроенная текстура, не? Может там где галку какую чекнуть надо в настройках?
>>606037 Мне в женшени и тис100 больше всего не нравилось то, что вся сложность сводиться к тому, что тупо не хватает места для команд. Была бы игра с симуляцией нормального компьютера.
А поддерживает ли годот такое, а конкретно работу с последовательным com портом. Видел васянские способы соединения через powershell, а потом уже в годот, но это не то.
Товарищи, может это относится не только к этой теме, но все равно спрошу. Есть ли какие-нибудь гайды по особенностям разработки в GODOT (и не только) под андроид и под веб? Какие отличия от разработки под win? Что можно и что нельзя делать? Какие разрешения и аспекты исползовать? ------ А то вот сделал я допустим прототип. Под виндой запускаю все нормально играет. Экспортирую в html вроде бы играет, но на половине браузеров шейдерную воду не показывает. Экспортирую в андроид, играет, но наэкранное управление начинает туда сюда скакать (хотя в веб версии на том же андроидном браузере рабоатет нормально).
>>606559 Опять своего скамерсофта скидываешь? Скамерговно, ты? Есть же гораздо более информативные каналы по годоту, где не говорят медленным темпом какую-то хуйню как для восьмилетних даунов по 20+ минут
>>606559 Ладно, я погорячился, если поставить быструю перемотку то конкретно это видео смотреть можно и в целом пока-что неплохие видео выпускает не то, что раньше
>>606592 > Есть же гораздо более информативные каналы по годоту Нету. А если ты постулируешь наличие - доказывай ссылками. Отсутствие же в доказательствах не нуждается.
>>606841 > пилить свой Ундертейл с блекджеком и шлюхами Пилить игру-фанфик - это заведомо провальная идея. Что у тебя своих идей нет? Делай игру по сеттингу вселенной-наоборот с толщеходами.
>>606842 Там даже сюжет похож. ГГ как и в Андертейле хитрыми кознями сброшен вниз, чтобы остался там навсегда, но игроку придется пройти цепочку заковыристых квестов, чтобы выбраться и отмстить.
>>606843 И естественно, по пути к финалу ГГ накопит силу и скиллы, обзаведётся множеством новых друзей. Поучаствует в умопомрачительных событиях. Например, в одной из полостей, он побывает на фестивале небесной рыбы! Что это? Как это? Узнаем на релизе!
>>606842 Да не, игра никоим образом не будет связана с Подхвостом (возможно, позаимствую кривожопый стиль рисовки и расположение юнитов на поле боя, как в Дельтаруне), просто именно она вдохновила меня на то, что в одно жало можно сбацать что-то охуенно цепляющее (хотя я и до нее переиграл в десятки индюшни, смастеряченных в одиночку) на готовом двигле.
>>606845 > сбацать что-то охуенно цепляющее Сможешь прямо сейчас выдумать короткую, но цепляющую историю? Что-то вроде "каждую ночь мне снится тяночка моей мечты, она милая и приятная. Мы занимаемся вместе кучей интересных вещей (и сексом тоже, разумеется). Мы ходим в походы. Вместе делаем игоры. Катаемся на байке. Иногда занимаемся простыми домашними делами, уборкой или стиркой. но всегда это все весело, хорошо и с любовью. А потом я просыпаюсь одинокий и больной лысый карлан, и кашляю в своей засаленной постели.
>>606854 > все что мы тут пишем, идет в лор?? Охуенно! Записки Аркадия. Том I. Выйдя из башни на воздух, я полной грудью вдохнул аромат пятипалого гриба, которым поросла вся тыльная сторона башенной стены...
>>606858 ..., и приступил к своему привычному утреннему ритуалу. Как всегда я первым делом вытащил из потайного кармана в рукаве своей мантии позолоченную подзорную трубу, некогда украденную у своего наставника. Старый хрыч поначалу справедливо подозревал меня в воровстве, но так и не смог доказать моей вины, поскольку эта тончайшей работы вещица словно влитая поместилась в моей прямой кишке, куда я ее спрятал на время повального обыска моей скромной обители. Сейчас же это искусное творение гномьих рук наведено линзой на окно четвертого этажа Солнечной Башни, где с минуты на минуты должен появиться объект моей неуемной похоти. Правая рука привычно потянулась к промежности, потирая вовсю набухающий бугорок...
Пришло время раз и навсегда выяснить, может ли Годот в 2д спрайты. Итак, тест. Дано, типичное для мариво-игр: -Сколлящийся задник -Пара надписей -Спрайты, летающих по синусоидам -Анимация по 4 кадра Конфиг: некропека 2007 года (e8500, 4GB, gtx260 <1GB)
Пик1: gd script, 850 спрайтов@60fps Пик2: gd script, 1900 спрайтов@30fps Сказки про перегрев идут нафиг. В годоте 53°C, в простое у меня обычно 51°C. Это не 95°C, как в некоторых карточных играх на юнити
Пик3: cpp, 1900 спрайтов@30fps BREAKING NEWS: на моем компе в данном тесте С++ НЕ ДАЛ УСКОРЕНИЯ.
Неожиданный эффект: Хром, запущеный в фоне, -5 FPS.
Пик4: веб версия. 700 спрайтов@30fps в вебе переключение gdscript/cpp неактуально, поскольку все равно все транспилировано в js.
>>606892 з.ы. если не хотите запускать вишмастер - не запускайте. Это весь проект для годота, просто экспортируйте его, или скопируйте туда свой экзешник. Просто на c++ не переключайтесь, потому что у меня он встроен в экзешник как модуль.
>>606897 На каждый сцену со скриптом. То есть вообще ноль оптимизации, железо 10-летней давности, 2000 спрайтов на комфортном fps, этого за глаза для типичных инди-игр. А если это все еще оптимизировать, то и уровень факторио наверняка достижим.
>>606892 >BREAKING NEWS: на моем компе в данном тесте С++ НЕ ДАЛ УСКОРЕНИЯ. Почему breaking? Вроде любому очевидно, что если спавнить ноды из с++, то на графический пайплайн это не повлияет и отрисовка будет по прежнему работать по-Хуановски. >Пик2: gd script, 1900 спрайтов@30fps Такое себе, ты доказал, что на гондоте невозможно сделать игру уровня террарии, в ней на full hd экране будет одних тайлов около 8к, не учитывая персонажей и окружение.
>>606915 > Почему breaking? Потому что каждая нода выполняет свои рассчеты даижения по синусоиде > Такое себе, ты доказал, что на гондоте невозможно сделать игру А вот и ничего подобного, я показал что на железе 10-летней давности, замечательно все работает вообще без всяких оптимизаций. Террария это другой жанр, в ней никто не будет делать каждый тайл независимо анимируемым спрайтом в своей фазе и частоте, там будет тайлмап, у которого анимируется текстура целиком, то есть все тайлы огня меняются синхронно. Может быть вообще кастомный шейдер. Я привел только отправную точку, откуда можно ускорять минимум в 5 раз.
>>606915 > игру уровня террарии, в ней на full hd экране будет одних тайлов около 8к Хотел написать, что можно рисовать графику на канве (в функции draw()), но потом подумал, что это выглядит, как оправдание.
>>606923 Разбиваться-то они может и разбиваются, но отрисовываются они через спрайт батчинг, одним draw call'ом. Эта фича есть и в xna, на котором изначально пилили террарию, и в юнити. А в годоте нет, тут хоть разбивай, хоть не разбивай, каждый тайл будет отдельно рисоваться. Ты ничего не наоптимизируешь в итоге, упрешься в рендер. >>606919 Это еще медленнее будет, тут уже отрисовка упрется в процессор, получится 2д рендер без аппаратного ускорения. >>606918 >откуда можно ускорять минимум в 5 раз. А что не в 10? >Может быть вообще кастомный шейдер Хуйня без задач в плане оптимизации, если нет возможности задать свой формат пикселей и описать свой пайплайн. >там будет тайлмап Насколько помню, тайлмапы в гондоти только статические и не подходят под разрушаемый мир, поправь меня если неправ.
>>606926 Ну все, тебя уже понесло, конечно любая ячейка тайла редактируется, и непонятно с чего ты решил что тайлмапу нужен спрайтбатчинг, спрайт батчинг это объединение независимых отдельных спрайтов в дроуколл, кто тебе сказал что цельный тайлмап не идет одним дроуколлом сразу? Короче выдумал новой хуйни, ну ничего и на нее тест напишем.
>>606929 > ну ничего и на нее тест напишем Этого он и добивается уже второй тред подряд, чтобы аноны доказывали ему, что они не верблюды, писали тесты с бенчмарками, вместо того чтобы делать игры. В итоге на юнити куча игор от анонов, а на годоте куча тестов и срачей. Неужели так сложно игнорировать и репортить срущего юнитуха?
>>606941 Так тестики и не для него, а для анонов, которые не делают игры на годоте, потому что наслушались всякого вранья, будто годот не подходит для 2д, или не подходит для некропека, или греет видяху. А тут бац - и ссылочка на тестик, второй раз его делать не нужно.
>>606171 Немного не так понял или я криво пояснил. Я хочу при нажатии на кастомную кнопку закрывать окно в котором эта кнопка находится. К примеру: Открыл меню настроек, нажал "Выход" в этом меню и меню закрылось.
>>607221 Тогда тебе помогут сигналы с биндингами. Хуан сделал гениальную вещь: к любому сигналу можно дополнительно прикрутить любое количество переменных. Например, есть сигнал hide, мы его коннектим так connect("hide", self, "on_hide"). Сам сигнал объявлен без аргументов, поэтому функция on_hide должна быть также без аргументов. И тут появляются биндинги! Пишешь: button.connect("pressed", self, "on_pressed", [menu_frame]) где меню_фрейм это и есть то окно, которое ты планируешь закрывать. Далее, описываешь функцию-обработчик уже с параметром: func on_pressed(frame): frame.queue_free() Таким нехитрым образом ты можешь на одну кнопку повесить универсальный обработчик, обрабатывающий разные объекты. В момент излучения сигнала в обработчик передаётся разный бинд. Если у нас сигнал с параметром, то биндинги добавляются в конец: connect("signal_with_param", self, "on_swp", [bind1, bind2]) func on_swp(param, bind1, bind2)
>>607258 Можно и без биндов, при условии, что в каждом окошке кнопка является вложенным потомком, тогда кладёшь в кнопку однострочный скрипт: func _pressed(): get_parent().queue_free()
>>607638 Моноверсии на шарпе нужен установленный моно. Больше ничего из пререквизитов не требуется. Если на компе запускается редактор годота, то запустится и экспортированная игра.
>>607639 Не, да, у меня то все запускается. Но на какой-нибудь XP пользователю ничего не придется доставлять? Годот не использует какие-то ебы, которые не были встроенны в то время?
Здравствуйте! У меня случилось это https://github.com/godotengine/godot/issues/13163 Причём, по ссылке ЭТО случается в открытом проекте, при совершении некоторых действий. У меня же ЭТО происходит сразу при запуске. Я уже неделю гуглю, и ничего. Некоторое время меня спасала моно-версия, я там редактировал свой проект не пользуясь шарпом. Но для моно нет шаблона экспорта в хтмл5, если я правильно понял. В общем, жизнь боль, чот приуныл, посаны.
>>607642 >>607640 Ах да. Видеодрайвер должен у юзера поддерживать GL ES2/3 это вроде как единственное требование. В остальном исполняемый файл шаблона экспорта собран в нативный код на чистом ЦПП 2003, который без дополнительных рантаймов должен исполняться на ХРюше.
>move_and_slide(linear_velocity, floor_normal ... ) >floor_normal is the up direction, used to determine what is a wall and what is a floor or a ceiling. If set to the default value of Vector2(0, 0), everything is considered a wall. This is useful for topdown games. >на туториал-видосе чувак ставит floor_normal=Vector2(0, -1), чтобы фигурка прыгала, отрываясь от палки под собой Я тупой и нихуя не понял. В интернете текстового пояснения не увидел. Как это работает, памахите?
>>607845 > floor_normal Это нормаль пола. Этим вектором ты указываешь, в какую сторону в игре пол. Это нужно для работы метода is_on_floor() который будет возвращать тру, если персонаж стоит на полу, который задан этим вектором.
>>607826 >Дотнет нужен только шарповерсии. И то там ещё моно в довесок придётся ставить. Ебом токнуть? Моно поставляется вместе с годотом, ничего отдельно его ставить не надо. Dotnet годоту не нужен.
>>607641 Тебя же предупреждали, что годот написан дилетантами и состоит из багов чуть более, чем полностью. Нахуй ты в него полез? Более того, от этой хуйни не застрахован и билд твоей игры, потому что билд игры и редактор это в целом одинаковые приложения на рантайме годота. Так что если каким-то чудом ты релизнешься со своей гондотной игрой в стим, вполне можешь увидеть в отзывах, что у 50% игроков она просто рандомно крашится при запуске или в процессе игры, и ты ничего не сможешь с этим поделать. Даунята с двача посоветуют тебе пересобрать движок из исходников, веря, что это магическим образом устранит баги из кода, а Хуан ехидно улыбнется, снимет с карточки очередные 12к долларов донатов и поедет отдыхать на море. >>607675 Ну да, с 2017 не пофиксили, но скоро всё будет, не сомневайся. Боюсь, что года до 2030 Хуан будет переписывать по кругу рендеры, скоро вот допилит вулкан, поймет, что написал хуйню, а донаты нужны, вспомнит про bgfx, еще пару лет будет на него переписывать. А потом опять на opengl, потому что bgfx хуйня. А там глядишь и новое графическое апи выпустят.
>>607929 Вот интересно, ты все так кукарекаешь с дивана о том, что ни разу в своей жизни не пробовал сделать? Или только когда речь касается сборки годота с .net? Потому что если бы ты попробовал написать хоть один скрипт на C# без sdk, ты бы увидел, что билд просто крашится. А в комплекте с годотом идет только рантайм, сдк надо ставить самому.
>>607962 >Даунята с двача посоветуют тебе пересобрать движок из исходников, веря, что это магическим образом устранит баги из кода Анон, тут нет никакой магии. Просто у него линукс, а это такой зоопарк, что проще собрать самому и узнать чего не хватает, чем выяснять что там у него отличается.
>>607969 Как пересборка из исходников поможет тебе выяснить чего не хватает и что отличается? Ну пересобрал ты, ту же версию, запустил, там точно тот же краш. Потому что ты собрал точно тот же код с теми же багами. Ничего не изменилось. Пересборка внезапно не выведет тебе окошко с сообщением "ебать, да у тебя тут Х не хватает в системе". Она не поправит баг в коде. Будет точно тот же краш с тем же сообщением об ошибке.
>>607977 Слинкуется с либами которые у него стоят в системе, а не с теми на которые рассчитан бинарник; соберется под нужную архитектуру, хз что там в линуксе, в шинде бывает не та битность, не тот тип многопоточности, не тот вид либы.
>>607980 Сейчас бы собирать мастер для работы над игрой. Он же нестабильный, там еще больше крашей и косяков. Туда сливают пулл-реквесты Васянов и потом разгребают баги. >>607981 Это так не работает, из-за косяков с линковкой программа бы в принципе не запустилась. Если она запускается и крашится уже в рантайме, это баг рантайма, кода самого движка.
>>607982 >Он же нестабильный, там еще больше крашей и косяков. Постоянно собираю, никаких крешей и косяков, наоборот одни фиксы. Понимаешь, мы же не знаем вообще откуда тот линуксоид скачал годот - из стима ли, с сайта ли, из какого нибудь репозитория пакетменеджером, какая там версия, какие зависимости.
>>607983 > там написано kernel sigreturn, это ошибка ядра линукса Во, шарящий чувак! Погоди, постой! Короче, у меня дебиан, недавно обновился на 10й, когда 9й из стейбла в олдстейбл перешёл. Годот скачан с официального сайта. Архитектура 32х разрядная.
Далее вот какая хуйня произошла: у меня все бинарники годота лежат на сетевом диске, подключаемом (монтируемом) вручную через самбу. Я ж говорю, колясочник я. Через фстаб не удалось настроить монтирование. Каждый раз ручками ввожу пароль от сетевых дисков. И в тот раз я по запарке забыл подключить диски и запустил ярлык. Ничего не произошло. На экране. Но внутри дебиана, я полагаю хрустнуло колесо моей инвалидной коляски. Ну я запустил скрипт, ввёл пароль, диски подключились. Но годот запускаться перестал. Выдаёт пикрелейтед. Первой мыслью было перенести бинарник годота в \home и запустить оттуда. Но нихуя. Инвалидная коляска уже сломалась. Щас у меня есть мысль, что надо какой-нибудь кэш где-нибудь почистить. Но ничего подобного не гуглится.
>>607984 > никаких крешей и косяков, наоборот одни фиксы Сможешь навскидку сказать, что пофикшено, по сравнению с 3.1.1? И ещё, ответь плиз, собирал ли ты кастомные шаблоны экспорта с вырезанными неиспользуемыми модулями? Я, например, хочу собрать кастомный шаблон экспорта, в котором вырезана вся физика, всё тридэ, вырезано двадэ от Node2D оставлено только то, которое от Control, на котором, собственно и сделан весь проект.
А в этом вашем годоте есть какая-нибудь хуйнюшка, которая может выдать мне рандомно какой-то элемент из списка с определенной долей вероятности? Или надо самому сначала её изобрести?
>>607965 >Потому что если бы ты попробовал написать хоть один скрипт на C# без sdk, ты бы увидел, что билд просто крашится. А в комплекте с годотом идет только рантайм, сдк надо ставить самому.
Написал несколько тысяч строчек кода. Ничего не крашится. Сдк не стоит, стоит только MsBuild. Где твой бог теперь?
>>607932 Признаю, не учел линуксоводов с маководами. Им и правда скорее всего нужен MonoSDK. Пользователи же самой популярной ОС просто ставят MsBuild, а не засирают свой пк кучей ненужной хуйни ради утилиты, которая идет в комплекте.
>>608383 В целом, норм, хотя я для понятности кода, делал бы через словарь ключ-значение: var common_chest = { items = ["хуй", "пизда", "джигурда"], chances = [3, 3, 4] } и далее choice = Choices.choices(common_chest.items, common_chest.chances)
Но это если бы я был питонщиком с синдромом блаба. Так-то вижу, что данная функция неудобна. Лучше сразу передавать в "мешок" подготовленный словарь с элементами ключ-значение. Потому что эти элементы не я ручками буду подавать, а сама игра будет формировать элементы. Причем не сразу, а в зависимости от состояния игры списки лута будут дополняться или урезаться игровой логикой. Хранить ключи отдельно от элементов в двух разных массивах это - НУ ТАКОЕ.
Поэтому мой велосипед работал бы либо как там >>608348 либо как-то так: var common_chest = [ {item = "хуй", chance = 3}, {item = "пизда", chance = 3}, {item = "джигурда", chance = 4} ] и далее choice = MyRandomSubclass.get_item_from(common_chest) При этом в реальной игре common_chest получал бы актуальный список элементов у синглтона игровой логики приблизительно так: var common_chest = Game.get_actual_items_list_for(CHESTS_COMMON)
>>608713 Ну так ты в переменную при нажатии выставляешь "ускорение", на которое потом сдвигаешь. А при отпускании ты его не обнуляешь. Переменная глобальная же (в рамках файла). Может тебе ее в функцию перенести? И вообще, пройди туториал или почитай в прошлом-позапрошлом треде, как делать управление.
>>608716 Перевёл в функцию и теперь всё работает. Но вопрос теперь в другом, а как прикрутить коллизию? МАой kinematicbody-копрокуб стоит в воздухе, а не падает, move_and_collide чёто не работает
>>608752 Одно дело интересный вопрос про то какая производительность у годоти или как написать оклюжн куллинг, а другое пошагово проходить с новичком туторы.
>>608754 Двочую. Новичкам жопы подтирать не интересно (впрочем, не запрещаю). Тред движка, ЯЩИТАЮ, это должен быть тред, где фанбои движка обмениваются интересными трюками в коде и находками в АПИ и редакторе. Типа > Сматрити, какую годноту я нашел! >>607933
>>608888 Не получится. В юнити можно к одному объекту прикрепить несколько скриптов. Кроме того, игровой объект содержит в себе только трансформ и ещё парочку базовых предметных вещей. Весь остальной функционал вешается на один игровой объект компонентами, скрипты тоже вешаются, как компоненты. В годоте же есть куча разнородных потомков общего объекта с намертво прибитым функционалом. И к каждому такому можно привесить только один скрипт, прибитый гвоздем к типу ноды (я имею введу директиву extends). В юнити доступ к функционалу через бинарный поиск шаблона<компонента>. В годоте доступ к функционалу через "строковые/мать/его/пути". При всём уважении к гению и отваге Хуана. Он создал мертворожденное тормозное говно, которое by design не сможет быть оптимизированно и догнать по скорости хотя бы жидовский юнити, не говоря уже о таких мастодонтах, как УЕЧ или плачдвижок. Sad but true. Deal with it.
>>608899 С того, что обработка строк (массивов символов) всегда была медленнее, чем побитовые операции с числовыми типами, а с вводом юникода стала ещё медленнее.
Чтобы в годоте добиться хоть какого-то прироста скорости, придётся полностью отказаться от дерева сцен. Все игровые объекты создавать в коде как var sprite = Sprite.new() var texture = StreamTexture.new() texture.load_path = "path/to/stex/file" # вот тут тормознёт опять sprite.texture = texture self.add_child(sprite)
>>608900 Тебя никто не заставляет обращаться в годоте по строке, делай getNode() кешируй результат в переменной и все. >>608902 Хз причем тут дженерикс, это просто синтаксический сахар, если у тебя мешок компонент типа TA, TA, TB, TA, TC, TB, TA, TA, вызов getcomponent<TA> никак тебе волшебным образом поиск не ускорит.
Пытался сделать управление камерой сам - камера не совсем плавно поворачивается по оси y (жмыхает что-то), сделал по туториалу с вики - вышло аналогично пикрил. ПАМАГИТИ
>>609028 Сделай отдельно какую-нибудь "точку взгляда" перед мордой игрока и по движению мыши поворачивай ее, а не камеру. А камерой просто догоняй эту точку с ускорением/замедлением (в зависимости от расстояния между "точкой взгляда" и "точкой камеры") (то что в кавычках примерные названия, я х.з. как это правильно по научному называется)
>>609062 Ты только что InterpolatedCamera. >>609052 В играх всё интерполируется, для плавности. И мышка, и небо, и Аллах. Если ты об этом не знал, то теперь знаешь.
>>609066 >Если ты об этом не знал, то теперь знаешь. Какие же годотеры фантазеры. Ну тогда тебя не затруднит ссылка на исходник в quake3 или source engine, где происходит интерполяция мышки?
>>609112 А вот и нет, в других играх всё нормально (даже проверил на двух мышках).
На том видео плохо видно, но дело в том, что по оси "x" в центре поворот происходит медленее, чем ближе к -90 и 90 градусам, там поворот идёт быстрее. Это как камеру в редакторе в локальном пространстве по "x" поворачивать, такой же эффект происходит. Не знаю как такой эффект объяснить, может я наркоман уже.
>>609212 https://pastebin.com/0KFHw6yn код с годот доков, только кнопки и clamp камеры под проект изменил. Моя реализация fps управления была похожей, но там нечего смотреть, такая-же проблема была. Вот и думаю, может в самом проекте что-то.
Кто нибудь не подскажет, как в гоботе добиться гладких столкновений? (на видео видно, что при столкновениях со сложными формами, игрок начинает вибрировать, если идет вперед)
Не использовать move_and_slide, а делать что то свое? Такое возможно?
На видео код с примера FPS, который в доках.
Алсо, прыжок во время вот этой вибрации не работает... Очень неприятный на управление персонаж получается ;-;
>>609229 >>609210 >>609218 У японцев работает (ссылки выше) У американцев работает (Джереми Баллок). У французов работает (ДжиДиКвест). У одного тебя, бедненький, не работает. Ну так возвращайся на свой сорс, хули ты в треде срёшь, мразина?
>>609234 >У одного тебя, бедненький, не работает. Ну так возвращайся на свой сорс, хули ты в треде срёшь, мразина?
Что я сру, мразина? Я просто задал вопрос, почему у меня поворот камеры кривой, скинул код и сидел думал. Я решил этот вопрос, меш игрока кривой оказался. И зачем ты смешал меня с двумя анонами, я вообще тот анон (>>609210), который примеры моей (а не движка) проблемы с годота скинул, сравнив с тем, как это должно быть (на сурс вообще похуй, самая левая игра, которая скачана была).
>>609210 СТАТТЕРИНГ Т А Т Т Е Р И Н Г В гондотите с этим ничего не сделать, Хуан отмазался, что у нвидии дрова кривые. Надо ждать рендер на вулкане и молиться, что там этого говна не будет.
Нахуй я пытаюсь в игры? Поставил Aseprite и понял, что вообще, нахуй, рисовать не могу. Что я могу высрать на экран своими конечностями? Говно. А нахуя такая игра, если демонстрировать на экране нечего, кроме говна? А музыку, блять, кто будет сочинять? Я?!! Пиздец, короче, ёбаный.
>>609868 Ебать ты нежный. Люди годами въебывают, изучают, по курсам, туториалам, через сотни и тысячи часов практики. А ты скачал и думал, что сразу нарисуешь шедевр? Или упорно учись, или иди нахуй, третьего не дано.
>>609870 > Качай с opengameart Там ничего стоящего нет, одни заманухи от платных артистов. > делай 3д лоуполи Вот это поддерживаю. >>609868 Анон, лепи игоры из кубов! Представь себе: говорящие кубы! Сделойте мне игру, экшон-эрпогэ, суть токова: Можно играть кубами, а можно играть шарами. И если играешь кубом, то грани параллельные, кругом плоскости и ты олзаешь по ним. А если играешь шаром, то можно кататься туда-сюда. Диалоги со скиллчеками - конусам в диалогах доступно угрожать другим фигурам, что посадят на остриё. Прокачка. Можно родиться кубом и постепенно прокачаться до цилиндра или до тора. И если поверхность повредят, то катаешься вприпрыжку. Визуально в игре три зоны: плоскость с простыми фигурами. Рубленная поверхность для округлых, там в центре есть старый чертёж, в котором сидит злой додекаэдр. И графон такой, чтобы фигуры вдалеке двадэ, а когда приближаешься в тридэ. Можно грабить матеманы.
Ньюфаг Вкатился в годот из кастрата. Сейчас постигаю туториалы по простейшим играм и ГДС. Объясните пожалуйста, грубо говоря, вот допустим различные ноды выражают моего гг - его куклу и анимации, его коллизии, его платформерный объект который движется - так вот, всякие моменты вроде запрета контроля если мы получаем урон, через переменные - пишутся в одном скрипте? То есть - управление анимации, управление инпутом, и т.д. или все группируется и выглядит как несколько нодов?
>>609905 > Привет, подстилки) Здравствуйте, Господин! > всякие моменты вроде запрета контроля если мы получаем урон, через переменные - пишутся в одном скрипте? То есть - управление анимации, управление инпутом, и т.д. или все группируется и выглядит как несколько нодов? Есть несколько способов, каждый из которых является применимым/допустимым. Выбирай в зависимости от твоего стиля кодинга и личного удобства для себя. >>609909 > инклюд нод используют для того чтобы объединить 2 скрипта и они оба выполнялись для объекта? Не только. Не совсем. Ноды вкладывают в ноды для достижения комбинированного эффекта (например, нода коллизии должна быть вложена в ноду физического тела, чтобы задать ему форму). Объединять скрипты можно несколькими способами. Самый привычный это var script = load("/path/to/script.gd").new() но опять же есть еще пара способов, в зависимости от твоих предпочтений. > Какой аналог в годоте условия every x seconds? Есть несколько способов... Эммм... ну ты понел. Есть ноды-таймеры, которую ты можешь добавить в свой объект-сцену и сделать, чтобы он срабатывал эвери Х секундс. Есть корутины, есть сцентритаймер, работающий на корутинах. Можешь создать кастомный счётчик в коллбэке главного цикла (_process()), можешь создавать таймер кодом, чтобы не ебаться с нодами (в рантайме всё равно он будет как нода в дереве, но то уже мелочи). >>609914 > Примеры приложух? Один из годотеров пилит приложуху "конструктор диалогов" и иногда постит скрины. Можешь поискать в тредах. Сейчас что-то он затих. Наверное ниасилил. >>609929 Талант это 5% предрасположенности и 95% титанического труда (с) >>609984 О да, ИТТ тоже калькулятор постили.
>>610060 > Один из годотеров пилит приложуху "конструктор диалогов" тоже какое-то время назад запилил чисто для себя подобное, вот только из-за того что подобного говна много, но все они работают через хуй пойми что и имеют слабую документацию скажите, что сделал очередной велосипед, но я на нем хотя бы катаюсь теперь
>>606892 Держу в курсе - проапгрейдил видяху на 750ti (б/у с али, как известно топ за свои деньги, минимальная видюха для современных игр). Итого результаты для конфига (e8500, 4GB, 750ti 2GB)
Заметил странную штуку, иногда при добавлении пачки в 500 спрайтов fps просаживается и не восстанавливается, а если добавлять по 5 штук, то может тянуть и большее количество без просадок.
>>610287 >gd script, 1980 спрайтов@30fps Хуёво, это примерно в 5-10 раз меньше, чем в условной тераррии, которая выдаст стабильные 60 фпс и на более слабом железе.
>>610346 >>610321 Коллеги, напоминаю, что это пример умышленно неоптимизированного кода, который просто накидали и работает. Причем он работает в окне (не фулскрин), с аэро прозрачностью, каждый спрайт тут это сцена. И если под террарию в любом случае придется писать свой движок или оптимизировать готовый, то для нормальных инди игр типа Hollow Knight или Braid этого движка хватит за глаза. Будем честны с собой, террарию вы никогда не сделаете. А найти пример игры, которую нельзя сделать, можно для любого движка, это не так сложно, лол.
>>610349 >>610350 >Каждый спрайт со скриптом и двигается там? Именно так, там есть песок, который движется, вода, которая движется, у каждого тайла есть здоровье и логика поведения, они зарастают зеленью, и т.д, тайлы уничтожаются, взрываются, и т.д.
>>610352 >Hollow Knight Тут соглашусь, он технологически примитивный, даже опенворлд не запилили, как в salt and sanctuary. >Braid А вот это вряд ли, насчет перемотки времени уровня брейда на гондотитяскрипте есть большие сомнения. >>610354 >ряя, ваши спрайты не спрайты Ваше мнение очень важно для нас, оставайтесь на линии. В террарии блоки - это динамические элементы, для них прописана логика, у них есть атрибуты, такие как здоровье, помимо просто положения в тайлмапе. А рисуются они XNA-шным спрайт батчем, такой рендеринг невозможно реализовать на годоте, не перепиливая куски движка на уровне плюсов.
>>610355 Я спорить не буду, потому что во первых не интересуюсь террарией, а во вторых мне похуй. Но очевидно что это все делается тайлмапом, в котором сами тайлы анимируются, то что у них логика и здоровье это дело десятое, это может быть операция над массивом чисел. А уже отдельные эффекты какие-то могут спавниться спрайтами, и тут уж запаса в 1000 хватит за глаза.
>>610357 Хуёпочки. Если ты ты посмотрел доклад разраба брейда, то знал бы, почему это не подошло для игры и почему он хранил состояния всех сущностей за прошедший час и изъебывался с хитрыми алгоритмами сжатия, чтобы такой объем данных помещался в память консолей.
>>610356 > это все делается тайлмапом, в котором сами тайлы анимируются Ты представляешь, какой будет гемор - анимировать годошный тайлмап? Тебе придётся заготовить тайлы-фреймы для анимации и менять их в каждой ячейке тайлмапа, где у тебя планируется анимация. Либо заготовить атлас-текстуру и анимировать выбранный регион для тайла. В любом случае будет заёбисто. https://godotengine.org/qa/11223/is-it-possible-to-change-animate-tilemap-cells Проще собрать уровень на объектах. В том числе, используя тайлмап как матрицу для расстановки объектов: в дизайн-тайме ты расписываешь тайлмап. В рантайме у тебя функция _ready расставляет объекты по уровню, используя map_to_world затем выгружает тайлмапу.
>>610360 > то знал бы, почему почему? да потому что лентяй он. хуле там даже мозги включать не нужно, берешь дату, пишешь ее в память. > хитрыми алгоритмами сжатия интерполяция это хитрый алгоритм, так и запишем
>>610364 >Проще собрать уровень на объектах. Проще-то может и проще, да фпс начнет стремительно падать в ноль, как только у тебя будет больше чем 30 на 30 тайлов.
>>610368 > как только у тебя будет больше чем 30 на 30 тайлов А я им вручную текстуры из одного атласа раздам и увеличу фпс. Главное не делать это преждевременно. Преждевременная оптимизация - антипаттерн. Сначала игру сделай, а потом задумывайся, как батчить спрайты.
>>610374 >а потом задумывайся, как батчить спрайты. Смысл думать о том, что в принципе невозможно делать в гондотите? >А я им вручную текстуры из одного атласа раздам Так вся фишка в том, что рендер Хуана все равно будет рисовать по одному кваду за draw call, в этом и заключается отсутствие спрайт батчинга, от которого у всех встают волосы дыбом.
>>610287 Так ли много игр ты видел, где 1000 одинаковых спрайтов на экране? Это бесполезный бенчмарк. Возьми хотя бы десяточек спрайтов, и назначь их рандомным образом, посмотрим что будет. Переключение текстур дорогая операция в opengl, если Хуан не догадался в рендере сделать сортировку спрайтов по текстуре, то будет еще бОльшая просадка, т.к. на каждый draw call будет переключение текстуры.
>>610384 > фишка в том, что рендер Хуана все равно будет рисовать по одному кваду за draw call Пруфов ты так и не привел. Хотя у твоего оппонента говдот-куна есть целый бенчмарк, где всё работает в 60 ФПС.
>>610436 > хотя бы десяточек спрайтов, и >>610287 И сделай ещё, чтобы у них текстуры брались либо из одного атласа, либо из разных пикч. И посмотрим на ФПС в обоих случаях.
>>610452 >ТАДА БУДИТ ВИСНУТЬ Не понял, к чему твой визг, демка и так виснет на непозволительно маленьком кол-ве спрайтов и сосёт по перфомансу у любого другого движка, от гейм мейкера до юпити.
>>610571 Я так понимаю, там билды под шин? Пользователи божественной ОСи все равно не смогут запустить. Надо сделать так - запустить на твоём компе бенч годота, заскринить результат, сколько спрайтов, сколько фпс. Потом юнити и тоже заскринить. Чтобы была видна разница на одинаковом железе. Сделай плиз, если нетрудно.
Итак, уже развеяно немало мифов - о том что якобы годот не годится для некропека, или о том что он перегревает видяху. Следующий популярный миф - мол, ладно, а вот Терраррию не сделать, якобы неправильно работает тайлмап, через спрайты. Проверяем. Не знаю что там в Террарии, в моем тесте сейчас так: 120х68 карта, 256 разных тайлов 16х16 пикселей. На самом деле два слоя тайлмапов, просто чтобы смотрелось лучше. Обсчитывается только один. Плюс статический задник-картинка Два вида анимаций тайлов Первый - циклическая смена текстур через AnimatedTexture. Так делается огонь, вода и т.д. Второй - собственно изменение конкретных клеток. В качестве теста написал коротенькую реализацию игры Жизнь Конвея. Плюс накидал спавн спрайтов, в определенных условиях. В террарии ведь должны быть еще герои и спецэффекты. Результат - 60 fps на 750 ti, коллеги. Кстати я разобрался как на ней записывать видосики. Проект будет лежать там же, на govdot. Указал лицензию - CC0 public domain, и код и картинки.
>>610662 Не. Там где юнити не запустится вообще или будет рисовать кашу из за изменений в шейдерах с 2017 года , или греет видяху до 95 градусов, Годот летает с 2000 спрайтами.
>>610671 Редкой игре нужно больше, а той что нужно можно и оптимизации провести. А 2000 это больше 0 не запустившегося юнити. >>610674 А зачем нужен ты когда есть Кодзима?
>>610668 >не запустится вообще или будет рисовать кашу из за изменений в шейдерах с 2017 года Шиз, плес, юнити компилит 500 конфигураций каждого шейдера при билде для охвата всех видюх. Чухану конечно это неизвестно так как он юнити близко не видел, зато он имеет уверенность рассуждать что там где не запустится и сколько градусов будет у видяхи. Типичный годото чуханоид.
>>610680 Анон, плес, мы это выяснили несколько тредов назад, в 2017 унити отпилило поддержку некропека, не знаю что там у тебя в голове компилится, а на практике там просто черный экран с белыми пятнами.
>>610684 Да, это очень странно, у тебя 1060? И процессор по бенчам на 70% быстрее моего e8500. Странно, может надо делать какую-то спец сборку экзешника для AMD?
>>610684 >Странно, может надо делать какую-то спец сборку экзешника для AMD? Не надо. У меня результаты примерно как на >>606892 Другой анон с фуфыксом
>>610696 Да, надо бы им почистить ишью, а то там одни вопросы ньюфагов в основном. то ли дело в проприетарных движках, где твои репорты багов менеджер просто в мусорку отправляет не читая
>>610699 Я уже всего не вспомню, сразу стирал что не работает. Kingsmaker рисовал черный экран, Plane Mechanic Simulator рисовал черный экран с белыми и розовыми засветами, Project Warlock и MtG Arena грели gtx260 до 95 градусов.
>>610702 Странно, какой то слабый результат на первом тесте хотя у меня видюха существенно слабже, старая нвидия. Неужели амуда вместо процессора не вытягивает?
>>610705 Да, что-то конкретно не так с моей системой. Давно подмечаю какие-то лаги и подтормаживания. Надо как-нибудь заняться большой уборкой. И ещё проц помощнее хочу купить. Держу в курсе.
Тоже запустил бенчмарки. i7-7700K / 1080 ti. Сначала запустил 10к спрайтов и там и там, классический стресс-тест для 2д рендера. Юнити выдает стабильные 60 фпс, годот всего 10. Потом замерил на 2к спрайтах, т.к. у годоти к этому моменту фпс падает до 50. У юнити на 2к - 400. И это на железе, на котором все игры последних лет работают на ультра настройках без просадок. Причем, у юнити (видимо из-за спрайт батчинга) фпс падает не линейно, а все медленнее и медленнее, чем больше спрайтов на экране. У годота падает линейно, каждое добавление 500 спрайтов роняет фпс на одинаковое значение. Так что делаем выводы, посоны.
>>610695 Так ты сначала придумай игру, где нужно будет 2000 спрайтов. Для многих игр подойдут тайлы, а они быстрые. >>610719 >запустил 10к спрайтов и там и там, классический стресс-тест для 2д рендера. >классический Сам только что придумал?
>>610720 >Ну скажите им, что много спрайтов НИНУЖНО, ну скажите, что 20 фпс это более, чем достаточно для современных игор! Годотя литает, я скозал! Литает!!!11 Тут проблема не столько в конкретных 2к спрайтах на конкретном железе, а именно в линейной зависимости фпс от кол-ва спрайтов. Для моего не самого слабого железа 2к это предел. Для чьей-то некропеки это может быть уже 1к, 500 или даже еще меньше. В юнити фпс падает так - добавил x спрайтов, фпс упал на y. Добавил еще x спрайтов, фпс упал на y/2. Добавил еще x, упал на y/4, добавил еще - упал совсем на чуть-чуть. Эта нелинейность достигается как раз за счет батчинга и прочих оптимизаций, сортировки по текстурам/шейдерам, чтобы уменшить переключение контекстов, и т.д. В годоте на каждые x спрайтов всегда падает на y, и это станет проблемой для некоторых жанров игр, типа той же террарии, факторио, римворлд и т.д, где спрайтов на экране побольше, чем в клоне супер марио. >Сам только что придумал? Нет, еще издревле 2д рендеры так бенчмаркали, если смог преодолеть 10к спрайтов и удержать стабильные 60 фпс - значит, сделал годный рендер.
>>610721 Ради интереса загуглил - в Touhou кап в ... 2000 спрайтов. При этом они не независимые, как в бенчмарке, а двигаются по связанным траекториям, а значит очень легко оптимизируются инкрементом в цикле. А вот Казаков с его 64000 юнитами просто так не сделать, да. Но такое где угодно оптимизировать
>>610725 > легко оптимизируются инкрементом в цикле. Не понял, как ты собрался инкрементом в цикле оптимизировать draw call'ы годота, расскажи подробнее.
>>610724 >типа той же террарии, факторио, римворлд Ты опять начинаешь, жиробасина? В этих играх не будут использоваться спрайты для всего. А будет использоваться ТайлМап, для которого написан второй бенчмарк, и там тоже нормально все будет.
>>610755 На аврках и ардуинке com-порт по дефолту является единственным способом общения пк с мк. А так я хотел для одного своего проекта (не ааа убийца-бестселлер в стиме, другое) сделать внешний джойстик-контроллер через uart
>>610765 Usb на ардуиньке работает как последовательной порт. Зря я его com портом обозвал, но суть та же, т.к usb порт на ардуиньке это не полноценный usb, взаимодействие идёт через Serial. Копипаста: Все платы Arduino имеют, по крайней мере, один последовательный порт (также известный как UART или USART): Serial. Он связан с цифровыми выводами 0 (RX) и 1 (TX), а также используется для связи с компьютером через USB.
>>610769 В дополнение скажу, что это относится и к твоей ардуинке уно, которая работает только с Serial и эмулируют какой-то там последовательный порт, новые же модели пердуины умеют работать в нативном режиме usb (SerialUSB) с большей скоростью передачи данных.
>>610801 Я бы поиграл в экшон-эрпогэ, для которой нужен внешний модуль на ардуине, собираемый самостоятельно, подключающийся к игровому пека по ЮСБ и выполняющий функцию взламывателя игровых замков, например.
Антон, такая проблема. Комп: проц: i7-4790 видео:NVIDIA Quadro K620 разрешение: 2 монитора по 1920х1080 (рабочий стол расширен на 2 монитора) Win7x64
---------------
Проект: любой 2Д платформер со скроллингом.
Когда включены оба монитора, то происходит такая штука:
К примеру если разрешение проекта 384х216 и я его запускаю в окне любого размера вплоть до максимального (1920х1080), то все двигается и скроллируется максимально плавно, без задержек и рывков. Если же я включаю режим Fullscreen или делаю borderless окно 1920х1080 (что по сути тот же фуллскрин) начинаются рывки при скроллинге и перемещении)
Если же отключить один из мониторов, либо сделать дублирование рабочего стола на оба монитора, то рывки и прочая хрень пропадает и все опять становиться плавно.
Есть идеи как это можно пофиксить? Ну или хотя бы можно ли из кода узнать, сколько у юзера мониторов, чтобы предупредить его про возможность таких косяков в случае если их больше одного?
>>611113 Спасибо. Чет я в глаза проебался когда этот раздел справки смотрел.
>>611112 >У тебя оба монитора подключены к нвидии или один от встройки работает? Оба к одной видяхе, один через HDMI, второй через VDI. На обоих одинаковое разрешение и частота 60 выставлены.
>>611111 Открой на втором мониторе диспетчер задач на вкладке с мониторингом ресурсов (ой, у тебя некросемёрка, тогда на вкладке с процессами отсортируй по ЦоПе) и смотри, кто нагружает систему: только годот, годот и ещё кто-то, кто-то другой. О результатах отпишись.
>>611111 У меня для тебя две новости, плохая и плохая. >Fullscreen >делаю borderless окно В годоте нет нативного фуллскрина, то что ты называешь fullscreen и есть бордерлесс окно. Потому, что он Хуан решил, что это тупо - делать полноценный фуллскрин в 2к19. https://github.com/godotengine/godot/issues/14542 >Godot does not understand fullscreen video modes. It is kind of silly to support that nowadays, given that monitors all have fixed pixel densities. >начинаются рывки при скроллинге и перемещении) СТАТТЕРИНГ СТАТТЕРИНГ СТАТТЕРИНГ СТАТТЕРИНГ
>>611117 >Если их в один 3840х1080 объеденить через настройки нвидии (если конечно у тебя такая опция есть) твоя проблема остаётся? Они у меня в один общий рабочий стол объединены. Т.е. можно перетаскивать окна туда сюда, но при включенном фуллскрине, окно растягивается только на один монитор. Попробовал задать в проекте разрешение 3840х1080 и borderless, так чтобы растянулось на два монитора. Дерганья остались хотя и чуть меньше чем просто в фулскрине.
Причем самое забавное, что даже когда игра дергается, FPS показывается стабильные 60.
Если один монитор отключить или сделать его обычным дублем первого то проблем вообще нет, в любых режимах игра идет плавно.
>>611138 >Лучше бы Хуан над оптимизацией работал, спрайт батчинг запилил бы. Зачем? Вроде бы пришли к выводу всем тредом, что 20 фпс более чем достаточно для любой современной игры.
>>611154 > Вроде бы пришли к выводу всем тредом, что 20 фпс более чем достаточно для любой современной игры. Тролли и демагоги могли к чему угодно прийти. Ты либо один из них, либо вообще не можешь в сарказм, с которым они "пришли к выводу". Либо у тебя сарказм и я в него не смог только что, кек.
>>611129 Позакрывал все лишнее, запустил только проект (экспортированный, без редактора) на годоте и диспетчер задач. 1..2% - диспетчер задач 7..8% - годот остальные 90% идут на system idle process
>>611159 Да тут не в cpu дело, очевидно же, что не хватает пропускного канала видюхи. Попробуй другие игры погонять, если там тоже статтеринг - значит в целом видюха не тянет такое разрешение и не успевает обновить кадр. Если только в гондотите - то можно только посочувствовать, опять Хуанорендер свинью подложил, неэффективно использует пропускной канал, что неудивительно, учитывая как он рендерит 2д (draw call на каждый спрайт).
>>611146 >В годоте нет нативного фуллскрина, то что ты называешь fullscreen и есть бордерлесс окно. Потому, что он Хуан решил, что это тупо - делать полноценный фуллскрин в 2к19.
Ну если и так работает, то нахрен бы он и нужен был полноценный фуллскрин?
>>611164 Перфоманс, полноценный фуллскрин позволяет работать процессу напрямую с видюхой в нативном режиме, и выжимать из неё больше. Грубо говоря, в нативном фуллскрине вывод видюхи маппится напрямую на монитор, при бордерлессе - на окошко операционной системы. Поэтому нативный фуллскрин до сих пор остался во всех основных движках типа юнити, анрила, и юзается в большинстве игр, особенно с крутыми графоном, типа ведьмака какого-нибудь. Но Хуан посчитал что это глупо, видимо по той же логике, по которой 20 фпс хватит всем.
>>611161 > (draw call на каждый спрайт) Пруфца бы. А то по дукументации опенгл - дравкал выдаётся на инстанс текстуры, а не на программную абстракцию "спрайт". Таким образом, если запихнуть все текстуры в один атлас, мы ручками сделаем тот же самый батчинг, который делает этот надоедливый платный движок с неотключаемым сплешскрином.
>>611166 Блядь, вы необучаемые что ли? Уже обоссали и разжевали сто раз, что годот рендерит каждый спрайт отдельным драв коллом независимо от текстуры, даже если ты сто раз рисуешь один и тот же спрайт, будет сто драв коллов. https://github.com/godotengine/godot/issues/1527 Нет, они до сих пор продолжают маня-фантазировать про атласы какие-то, что там само всё объединится и отпимизируется по велению левой пятки Хуана. > мы ручками сделаем тот же самый батчинг, Угу, совсем тот же самый, настолько тот же самый, что у годота 10 фпс там, где у юнити 60. >>610719
>>611169 > годот рендерит каждый спрайт отдельным драв коллом независимо от текстуры, даже если ты сто раз рисуешь один и тот же спрайт, будет сто драв коллов Не пизди. По твоей ссылке бенч без атласа. И загляни в код, там как-то вообще тупо идёт присвоение в цикле вижуалсерверу нового инстанса текстуры. Ясен хуй там будет 100500 дрочкалов.
>>611161 >Да тут не в cpu дело, очевидно же, что не хватает пропускного канала видюхи. Похоже, что нет. Сейчас перекинул один моник на встроенную видяху, точно такая же фигня. С одним монитором (любым) все гладко, с двумя - дерганья. Загрузка ЦП всегда одинаковая.
>Попробуй другие игры погонять, если там тоже статтеринг - значит в целом видюха не тянет такое разрешение и не успевает обновить кадр. Если только в гондотите - то можно только посочувствовать, опять Хуанорендер свинью подложил, неэффективно использует пропускной канал, что неудивительно, учитывая как он рендерит 2д (draw call на каждый спрайт). Попробовал несколько разных игр, результат 50 на 50. В некоторых такой проблемы нет и все гладко, в других дерганья при двух мониторах и гладко при одном. Причем движки у всех разные. Т.е. дело тут не в количестве дроу колов, а в чем-то другом, либо в винде, либо в опенгле.
Попробую поэкспериментировать на других компах и системах.
>>611172 Реально не всрался. Годотеры игоры делают. Большинству игор не нужно столько спрайтов. Поэтому годотеры спокойно работают и зарабатывают, не упираясь в производительность. Одни пердолики безыгорные ИТТ копротивляются за свой батчинг.
>>611117 >>611174 Ага. Попробовал тот моник который подключен через встроенную видяху назначить основным и запускать игру через него - все стало ровно и дерганья пропали и в годоте и в других играх. Так что похоже видяха тут тоже причастна или софт от нвидии.
>>611146 >В годоте нет нативного фуллскрина, есть бордерлесс окно И слава богу. Сейчас 2к19, уменьшение фпс практически незаметное (доли процента), зато alt-tab будет мгновенным без секундного мигания, и будет превью окна на таскбаре.
>>611189 Ну, пару тредов назад залётные унитидебилы хихикали над высказываниями Хуана, о баге в драйверах нвидии. Дескать непогрешимые, неполживые разработчики ПЕЧей не могут ошибаться. Сверхлюди же.
>>611166 Я же тебе уже 3 раза пояснял в треде, не? Дравкалл - это отправка меша на видяху по шине, и если не объединять все меши спрайта в один мегамеш, то и вызовов из движка будет по количеству спрайтов.
>>611191 >без секундного мигания Ты свои два гига два ядра то обнови, нищенка. Мигание у него при переходе с фуллскрина 320х200 на 1024х768 рабочий стол, кек.
>>611219 Я не писал что там бордерлес виндоу. Факты про годот пишут другие, а я только рофлю над примитивностью движка и над ущербами, которые им пользуются.
>>611223 Зачем мне такой графон если я игру даже в фулскрин развернуть не могу? Мне в очке играть или фулхд окошке которое наполовину за края экрана вылезает?
>>611222 Хуан словно аналоговнет в СССР - 1в1 выглядит внешне и работает также как забугорный аналог, но на своих (скомунизженных и реверсинженернутых конечно) радиодеталях.
>>611240 Покажи другой свободный опен сорс с таким же покрытием платформ, работающий из коробки. cocos2d-x - нет 3д редактора. ogre3d - такая же сегментация на 1 и 2 версии, как у Хуана с gles2. urho3d - говно мамонта, выглядещее как 90-е. Год назад я тоже проигрывал - чего это на Godot все так наяривают, почему он в топе гитхаба по звездам. А потому что так и есть по факту Хуан свое дело знает, тише едешь дальше будешь. Вот сейчас перепишут на Вулкан и производительность вырастет, что тогда придется выдумывать хейтерам?
>>611254 >Вот сейчас перепишут на Вулкан и производительность вырастет, что тогда придется выдумывать хейтерам? К тому моменту, как зарелизят 4.0, выйдет графическое апи нового поколения, условно назовём его Хуйкан. После выпуска 4.0 все охуеют от количества багов, от того, что у части пользователей всё будет глитчить и статтерить, у другой части будет просто черный экран вместо рендера, у немногих счастливчиков всё будет кое-как работать. Поддерживаться, разумеется, будут только топовые видеокарты последних лет, т.к. на старые видюхи вулкан не завезли. Т.е. о поддержке некропекарен и старых ОС, чему сейчас радуются пользователи гондоти, можно будет забыть. Хуан выступит с заявлением, что разработчики драйверов под вулкан некомпетентны, нахуячили баги в драйвера, всё сломали, поэтому гондотя и не работает, и что проблемы с рендером можно решить только переписав его полностью на Хуйкан. Будет запущен новый этап сбора донатов на новый рендер на Хуйкане, после сбора денег Хуан снова пропадет на пару-тройку лет. Когда проест все донаты, выкатит еще один кривой полурабочий рендер, без спрайт батчинга для 2д и без окклюжен куллинга для 3д, и скажет, что у графического апи Хуйкан слишком много внутренних проблем, разработчики выкатывают забагованные драйвера, да и поддержка оставляет желать лучшего. Поэтому, единственный способ исправить все недостатки рендера на Хуйкане - переписать всё на принципиально новое графическое апи под названием Защекан, выход которого анонсирован в 2035 году. Разумеется, для решения столь амбициозной задачи необходимо будет запустить новый этап сбора донатов на реализацию рендера на графическом апи Защекан. Я это к чему всё. Отсутствие вулкана не помешало разработчикам запилить кучу годных игр за последние 20 лет, и в 2д, и в 3д. Сейчас бы думать, что вулкан решит все проблемы годота, в том числе самую главную - научит Хуана программировать и решать проблемы.
>>611277 >К тому моменту, как зарелизят 4.0, выйдет графическое апи нового поколения, условно назовём его Хуйкан. Зачем нужны эти фантазии? Закон Мура давно остановился, ничего особо нового в ближайшую пару лет не будет. Иначе все бы уже об этом трубили во всю. >у части пользователей всё будет глитчить и статтерить, у другой части будет просто черный экран вместо рендера Прям мой опыт с юнити описал. >Т.е. о поддержке некропекарен и старых ОС, чему сейчас радуются пользователи гондоти, можно будет забыть. Даже если это случится, ничего не мешает продолжать использовать Godot 3 для такого. >Отсутствие вулкана не помешало разработчикам запилить кучу годных игр за последние 20 лет, и в 2д, и в 3д. Естественно, многие написали in-house движки для этого.
>>611289 >Даже если это случится, ничего не мешает продолжать использовать Godot 3 для такого. Для какого такого? Такого, когда 10 фпс на не самом слабом железе, а про некроту и подумать страшно?
>>611326 >Такого, когда 10 фпс на не самом слабом железе, а про некроту и подумать страшно? Что ты несешь, поехавший? На некроте 30-60фпс, читай тред. >>606892
>>611416 >>611417 Сссука. У меня анимация через Animation Tree -> Animation Player играется. А через Animartion Tree скорость не регулируется, она просто этот параметр не учитывает.
>>611465 Не-а. Там действительно есть проблема когда к AnimationTree цепляешь AnimationPlayer, чтобы гонять его через стейт машину. Там не идут сигналы и свойства не поменять из кода:
>>611474 >>611473 Петя Сканер делает стейтмашины вручную кодом. И я так буду делать. А свистоперделочные анимашон-три пусть идут нахуй. В коде я могу бесконечно долго усложнять логику переходов между состояниями, а в анимашон-три придётся городить лапшу визуальными нодами.
>>611462 Не завезли, и не завезут. Позиция Хуана такая - пока терпите, ждите версию 4, рендер на пукане. Но и там спрайт батчинга не будет, просто пукан пошустрее чем opengl, да и работает только на топовых видеокартах последних лет, поэтому тормозов там никто не заметит, можно будет и дальше спокойно проедать донаты и не запиливать оптимизации в рендер.
>>611482 > Только там где он делает стейт машину именно для анимации, а не для перемещения игрока. Он делал комбинированную. Переключение состояния "ходьба" означает одновременное включение анимации "ходьба" и перемещения модельки. Неужели ты из примера не можешь вычленить нужное тебе?
>>611483 >топовых видеокартах Ох уж эти топовые джифорсы 600 серии. Особенно какой-нибудь GF 645 - прям самый топ в 2019. Какие же юнитипидоры нищеброды, пиздец просто.
>>611527 Дык у ОПа-хуя игры на юнити не запускаются, и годот 4 тоже не запустится))))) Он скажет что годот 4 нинужен и на всё хватает третьего с его 20 фпс)))))))))
>>611486 >Он делал комбинированную. Переключение состояния "ходьба" означает одновременное включение анимации "ходьба" и перемещения модельки. Не, не пойдет. У меня две отдельные стейт машины, одна для игрока, вторая для его анимации. Мне так удобнее.
>Неужели ты из примера не можешь вычленить нужное тебе? Не люблю видеотуториалы смотреть. Слишком большая потеря времени пересматривать все и искать где и что там кто делает.
>>611488 Зачем мне форкать гондот, чтобы что-то там запиливать? Хуан все равно не принимает пулл реквесты, затрагивающие его кормушку (рендерер, который он переписывает несколько лет подряд на донаты, относится к их числу). А так я уже давно пилю свой собственный двиг со своим рендером на opengl.
>>611594 >Физика в Godot довольно ограничена, и начинает сильно уменьшать FPS уже при десятке активных объектов Взвизгнул. У гондодиков появится новая мантра, БОЛЬШЕ 10 ОБЪЕКТОВ НИНУЖОНО!!
>>611627 В том, что пока в 2004 году во втором халф лайфе на одной сцене могли быть сотни физических объектов, в гондотите в 2к19 без просадки фпс можно использовать не больше десятка. Не находишь это комичным?
>>611629 Какие еще сотни объектов? Там как раз валялся мячик и пара ящиков плавала, как раз десяток. Ну и да "находиться" конечно может сколько угодно. Помню как там фризило на уровне с машиной.
>>611633 >в качестве доказательства что не тормозит скидывает видос где тормозит Годотодауны как всегда, думаю в доках годота есть секция с мантрами для заучивания, чтоб вера помогала не видить тормозов.
>>602409 (OP) Пачаны, подскажите. Сижу на Конструкт2 и не делаю игры уже несколько лет. Есть ли смысл перейти на Годот и не делать игры на нём? Там и 3Д есть. Вообще хотелось бы на Юнити ничего не делать, но Годот меньше объёмом и говорят простой, удобный, саврименный не хуже Юнити...
>>611658 Мне все твои распидорские высеры шерстить в поисках момента где годот не будет тормозить что характерно видосы в 30фпс)))))))? Можете этим всем годотокомьюнити заниматься, мне и так уже все понятно.
>>611654 > закон Мура касается ПРОЦЕССОРОВ и он работает Закон Мура НЕ работает. Отсутствие явления (работа закона мура, существование боженьки, сотоны и ангелов с бесами) - в доказательстве НЕ нуждается. В доказательстве нуждается именно наличие явления. Ты посмел кукарекнуть, что закон Мура всё ещё работает (несмотря на то, что имитацию его работы делают за счёт наращивания ядер (де факто количества процессоров). Так что будь любезен доставить пруфы твоего вскукарека, иначе твоё очко переходит в зрительный зал.
>>611654 Так, спокойно! Ты как и положено местным аутистам понял все буквально. Когда говорят о законе Мура, не имеют в виду тупо уменьшение транзисторов в 2 раза (впрочем и тут скоро упрутся в физику), а еще и сопутствующее уменьшение тепловыделения и рост производительности. Есть правда еще многоядерность, но она упирается в то, что мало какие алгоритмы можно легко параллелить. Поэтому и ответ на твой вопрос - причем тут годот - если бы ты читал внимательней был бы тебе ясен - я отвечал на предположение что прям вот сейчас появится новый прорывный api. Предпосылок к его появлению нет, вулкан был просто эволюцией того, что вместо фиксированных шейдеров можно писать код, который на том же железе позволит считать только то что хочет программист, а не только то, что заложил инженер в видяху. Вот и вся магия роста перформанса.
>>611652 Ну смотри, по сравнению с констрактом, годот предоставит тебе более низкий уровень программирования игор. То, что в констракте (конструкторе игор) делал одним кликом, как само собой разумеющееся, в движке (годот, юнити, уеч) потребует от тебя либо написание определенной логики, либо скачивание уже написанных кем-то ассетов. Например, в констракте ты просто, без задней мысли кидаешь на сцену спрайт, говоришь констракту - это топдаун персонаж игрока. Констракт говорит - окей - и всё, ты уже можешь ходить персонажем. В движках тебе придется описать ручками логику передвижения. Скомпоновать с физикой. Ну, либо скачать кем-то написанное. И так во всём. В конструкторах тебе даётся готовая логика уровней. Ты можешь наполнять уровни контентом, настраивать переходы между ними. В движках будь любезен сначала сам организовать логическую структуру уровней, спроектировать каким образом уровни будут наполняться контентом, как будут осуществляться переходы, а уж потом наполняй контентом.
Подскажите что-нибудь pls!11 Есть сцена с тайлмапом, несколькими нодами-спрайтами и нодой-игроком. У игрока в скрипте создается дефолтная Camera2D, без smoothing. Во время движения по сцене ноды-спрайты начинают дрожжать (тот самый jitter?), а между тайлами тайлмапа иногда проскакивают вертикальные полосы. Не знаю что там с драйверами Nvidia, про которые тут что-то писали, но от видеокарты это вроде не зависит т.к. проверял и на Nvidia и на Intel встройке, то же самое все. Что это может быть, и как фиксить? Может ли это быть связано с CanvasLayer (у инстанснутых нод-спрайтов добавил у каждой, чтобы выводить попапы, которые они могут выводить, по центру экрана, а не относительно начальных координат камеры или чего-то там)?
>>611689 Не знал про эти настройки. С Use Pixel Snap вертикальные полосы между тайлами пропали. Но дрожжание спрайтов осталось. Со второй галкой что-то делать стоит? У меня проект GLES3 лол. И проявляется-то и на Nvidia и на Intel (gt650m/hd graphics 4000 лол).
>>611702 Я понял в чем дело. При расстановке нод со спрайтами по сцене я не включил прилипание к сетке, поэтому у них были координаты с дробной частью, и видимо поэтому их так трясло.
>>611662 найс интроспекция, красиво ты вскукорекнул, но мимо, т.к. неважно каким образом мощность процессоров растёт. поэтому закон Мура работает, а твоё развальцованное очко переходит в кунсткамеру.
>>611877 А тебе уже не терпится переделывать поломанные обновой проекты? (два дня переделывал сломавшиеся двадэ частицы и это нихуя не смешно, в документации не обновили, как теперь делать анимацию фреймов частиц, кое как методом тыка нашёл, что надо особую текстуру добавлять в ресурс и настраивать там)
>>611880 >It's the damn kernel! For some reason, kernel 4.19. is causing processes to stall while running. I just got things working on a 4.9. kernel. facepalm Ну Хуан не виноуат, что дрочер использует древнее ядро. Или погодь. У него на 4.19 не взлетело, а на 4.9 зороботало? Я нипонел. З.Ы. Ванильная Бобрунту 18.04.3 с ядром 5.0, только что включил стимгодоту 3.1.1, все робит. Давно пора привыкнуть, что дистры это ебаные суповые наборы, где-то что-то есть, где-то чего-то нет и распространять вместе со всем, что надо - через ебаные снапы.
Юнитидрочер, у меня к тебе вопрос есть. В исследовательских целях, так сказать. Какова твоя мотивация нахождения в этом треде, засирания, годота и агитирования всех за юнити?
Я серьезно интересуюсь. Т.е. в чем твой профит, если какая-то часть людей бросит годот и пересядет на юнити?
>>611911 Да ты совсем дурак? Закон Мура работает! Просто сейчас технологии достигли предела возможностей физически.
Уже в 2007 году сам Мур заявил, что действие этого закона больше невозможно из-за фундаментальных причин — атомарной природы вещества и ограничения скорости света, которое не позволяет процессорам работать еще быстрее.
Понял? Но это не значит, что мощности компьютеров перестали и перестанут расти. Они продолжают расти и будут расти, только другими путями.
>>611926 Да не работает он. Кстати вспомнил еще причину, почему он фуфло - нанометры то сейчас не настоящие, а маркетинговые! Транзисторы по сути не уменьшаются уже почти, а только дорожки проводящие между ними. https://habr.com/ru/post/423575/
>>611898 Не вижу ничего плохого в обсуждении недостатков нашего любимого движка. У нас же нет цели обелять его ура-шапкозакидательством. Он медленне юпити? Допустим, хотя тормознутость юпити известная проблема, к любой игре отзывы на стиме почитать. Его производительности достаточно для большинства игр? Да, это наглядно показали бенчмарки. Ускорится ли он? Да, работы уже ведутся, надо просто подождать.
Знатоки линейной алгебры, подскажите. Столкнулся с некоторой сложностью. Нужно кликом мышки указывать точку на карте. Карта двигается камерой за игроком. Всё в двадэ. Я получаю event.position - он мне рисует координаты в окне, где я мышкой ткнул. Гугел подсказывает, что надо event.position - position, делаю так, но координаты всё время разные для одной точки на карте, в зависимости от положения камеры. Подскажите правильную формулу. Я пошёл дальше гуглить, позже почитаю ответы.
>>611923 ну то есть ты слит вместе со своим рузке языком, свинья лишнехромосомная. жаль вам обезьянам открыт доступ к достижениям. сидели бы вы как в Северной Корее на калькуляторах в чебурнете и там бы воняли. А то сидят лишнехромосомные с вражеских чипов не развивающихся во вражеском интернете и воняют что-то доказывают )))
Салют, годотобоги! Поясните, отдельная сцена = класс. Инстанцирование = создание объекта этого класса. Я правильно понял? self прописанный в скипте сцены, которая была инстанцирована будет ссылаться на тот нод, к которому прикреплен скрипт?
>>612086 > отдельная сцена = класс Нет. Отдельная сцена - файловый ресурс, который подгружается в дерево сцен и по инструкциям этого ресурса в дереве сцен создаётся поддерево (ветвь). На этом уровне классов нет, есть ноды, которые все - единый класс Node. А уж какой потомок класса Node, это задаётся либо ресурсом либо скриптом и влияет только на него самого и его ветвей в дереве. Ещё раз, в дереве сцен нет ООП, нет наследования. > Инстанцирование = создание объекта этого класса. В ООП = да. На том уровне, на котором ты создаёшь инстанс из класса. На уровне дерева сцены есть только добавление ветвей: add_child() - что будет у тебя в скобках - зависит только от тебя. > self прописанный в скипте сцены, которая была инстанцирована будет ссылаться на тот нод, к которому прикреплен скрипт? И тут, не зная всего вышеописанного мной, ты скрестил ежа с ужом. Скрипт сцены - это скрипт-расширение класса, указанного после директивы extends! Если в ресурсе TSCN указан тип (класс) Sprite и указан скрипт my_sprite.gd, то при создании инстанса из PackedScene будет создан класс-потомок Sprite c расширенным функционалом. Посмотри, как это выглядит в рантаймовом дереве (во время выполнения проекта нажать вкладку "удалённый" в панели с деревом сцены). Поэтому, в выполняющемся проекте не будет никакого нода, на который должен ссылаться инстанс спрайта, все методы будут в нём, как рсширения, self, как и положено будет ссылаться на сам инстанс.
>>612123 ИДИ НАХУЙ ТУПОЙ ДОЛБОЕБ ТЕБЕ УЖЕ СТО РАЗ ПОЯСНЯЛИ В контексте инстанцирования речь идёт о времени выполнения, в котором существует только дерево сцен.
>>612123 ТУПОРОГАЯ ИДИОТИНА, БЛЯДЬ, САМ ЖЕ НЕ ЧИТАЛ СВОИ ССЫЛКИ > User-created types are not technically classes. Instead, they are resources that tell the engine a sequence of initializations to perform on one of the engine’s built-in classes.
>>612123 >>612135 >>612140 Типичные годотеры, озлобленные на весь мир потому что выбрали не тот двиг, но качать другой они не будут чтоб не признать свой же обсер.
>>612135 Блять как же я с тебя сгорел. ДЕРЕВО - ЭТО ПРОСТО ДЕТАЛИ РЕАЛИЗАЦИИ ВНУТРЕННОСТЕЙ ДВИЖКА! С точки зрения ПОЛЬЗОВАТЕЛЯ движка (разработчика игры) Сцена = класс Инстанс = объект класса Сигналы = методы
С тобой говорить просто невыносимо Это примерно как если бы кто-то сказал: Я хочу сделать в ООП-Хуитоне класс, который наследуется от другого класса А ты бы начал доказывать: Никакого ООП не существует! Есть только запись в структуре HuitonObject! И там указатель на другой HuitonObject! А никакое это не наследование! Да всем насрать как это технически сделано, блджад! >User-created types are not technically classes И че блять! А еще там написано первой же строчкой In Godot, scripts and scenes can both be the equivalent of classes in an Object-Oriented programming language. As a result, many best practices in Godot boil down to applying Object-Oriented design principles to the scenes, nodes, or script that make up your game
>>612141 Ты не проецируй, я себе скачал еще УЕ4- лучший из проприетарных движков. Так что я могу сравнивать с лучшим из опенсорс движков - Годотом. И что такое "выбрали не тот двиг"? Это не семья, движок всегда можно сменить. Для одних задач один, для других другой. Правда юпити уже в пролете, это да.
>>612146 Классный уход от темы, одобряем. Это как на личности переходить, но в среде анонов. >>612135 >>612117 Ну вот смотри. Я создаю отдельной сценой нод. Назовем его UnityFag. Повесим на него скрипт. Запихнем несколько переменных Honor, Hp, и Agressiveness. Напишем пару функций отвечающийх за что-нибудь. Это по-сути, готовый экземпляр, как я понимаю. Но мы его воспринимаем как класс, ибо далее: _Динамически_ начинаем инстанцировать одного за другим UnityFag-ов в количесте N штук в нашу главную сцену, которую назовем, скажем GodotThread. Пусть методом add_child(). Но при инициализации вызываем условный сторонний метод, который начинает колдовать с характеристиками. Итого получаем кучу экземпляров условного класса. Я думаю, методом костылей можно реализовать и инкапсуляцию, и полиморфизм, и наследование - если все это понадобится. Да, я пользуюсь утиным методом определения сущностей. Если что-то хрюкает, имеет пятачок и сидит в луже, то это вполне возможно будет свинья, хоть под это определение подходит куча анонов, засирающих этот тред срачем. Вот Lua блядь нихера не поддерживает из коробки ООП. Его там блядь нет. Но его можно сделать на Lua. И ни один хуй - ни разу ни под одной статьей на хабре из десятка посвященных реализации принципов ООП, не написал "это нихуя не ооп, потому что вы все хуи, а не разработчики."
>>612081 Выше в тред кидали бенч на i7 / 1080 ti, там у гондоти 10 фпс, у юнити 60. Тоже некрожелезо? >играй в 800 на 600 Я бы может и поиграл, да гондотя не поддерживает нативный фулл скрин, расширение в игре в на годоти совпадает с расширением рабочего стола
>>612076 Я так делал, но там в основном все демки с одной сценой в которую уже добавлены все элементы игры. Есть несколько где используется инстансинг, но меня больше интересует как правильно удалять объекты из сцены, то как я пробовал удалять они удаляются, но всё равно, как я понял, остаются в памяти.
>>612157 Поиск по странице по слову i7. Как ты дожил до своих лет с таким интеллектом? Впрочем, неудивительно, учитывая что ты пользователь годота. РЯЯЯ СТОЛЬКО СПРАЙТОВ НИНУЖНА, ТОЛЬКО ВЫИГРАЛИ! через 5.. 4... 3.. 2.. 1..
>>612154 >у гондоти 10 фпс, у юнити 60. Уникальная архитектура от программиста-самоучки. Он по-ходу запилки годота узнает о том, что рассказывают на 1-2 курсе универа.
>>612165 Опа, а вот и первокур вылез, который думает что все знает об архитектуре, только почему-то ничего не создал, в отличии от автора Годота, известного во всем мире.
>>612175 Классно ты меня приложил. есть страница моего кода, которая используется в 90% девайсов на планете, но тебе виднее что я создал общественно значимого
>>612153 Ну в таком смысле, да. Согласен. Если хочешь, как в юнити, делай пикрелейтед. Но есть один нюанс. Два. Жёлтеньких треугольных нюанса. Поэтому, совсем как в юнити не получится. Пикрелейтед2.
>>612227 Переведено с английского языка.-Allegro - это польская платформа для онлайн-торговли. Управляется Allegro.pl Sp. Z O.O. которая была образована в 1999 году и впоследствии приобретена онлайн-аукционом QXL Ricardo plc в марте 2000 года. QXL Ricardo plc изменила свое название на Tradus plc в 2007 году и была приобретена Naspers в 2008 году. Википедия (Английский язык)
Годаны! А помните, много дней назад я спрашивал, как мне сделать над вектором операцию, похожую на нормализацию, только чтобы все компоненты вектора всегда получались 1 по модулю? Мне тогда ничего не ответили, только предложили свой велосипед написать. И вот наконец я самостоятельно нашёл решение (когда придумывал название методу-велосипеду, который теперь удалю): snapped_vector = unsnapped_vector.normalized().snapped(Vector2.ONE)
>>612297 да ты серьёзно тут ищешь какую-то помощь? лол. тут двачедауны сидят порофлить. а информацию надо черпать на гамедевелоперских форумах, ёпта. уже всё до тебя написано и на форумах и сайтах расписано.
>>612338 Я везде ищу. >>612342 Помоги ещё вот с чем. На радостях от обнаружения snapped() я кинулся ещё один свой велосипед переписывать и удивился тому, что мой велосипед работает так как мне надо, а метод выдаёт хуиту. Пикрелейтед закомментирована попытка перевести с велосипеда на метод. Задача: Имеем виртуальную сетку с заданной величиной ячейки. Нужно вернуть вектор, описывающий центр ячейки, ближайшей к исходному вектору. Или, проще говоря, округлить входной вектор до размера ячейки.
>>612221 Так ты и ни одной игры еще не сделал. Загрузить одну модельку на пустую сцену и получить 60 фпс - охуеть достижение. Приходи как будет готовая игра. Хотя кого я обманываю, мы оба понимаем, что этой игры не будет. Верить в возможность создания полноценной законченной игры на годоте - это как верить, что из жидкой дрисни можно построить небоскрёб
Я конечно примерно представляю, как это можно реализовать (даже несколько способов вижу). Но вдруг я изобретаю велосипед и есть простые решения. - есть (условно) тактическая стратегия - она требует соответственно многооконность/многоэкранку. Ну то есть, не наличие нескольких мониторов, а возможность переключаться с одного на другой экраны. Например, 1) глобальный экран 2) графики 3) торговля 4) что-то еще. - нужна именно многоэкранка, а не "всплывающие окна" Я планирую реализовать это как инстансы отдельных сцен, корневыми узлами которых будет canvasчто-тотам. Все содержимое их будет обновляться при вызове конкретного окна, которое будет "выплывать" наверх. Управлять всеми процессами будет отдельный нод engine так: 1) Game 2) UI, Engine 3a) UiTrade, UIGraph, UIGlobal, 3b) EnEconomics, ... etc. Я правильно все делаю, или велосипед изобретаю?
Годотач, а как сделать прямо-таки охуительный прыжок в платформере? Чтобы от микро-тапа до полного зажатия на секунду была действительно хорошая и заметная разница. А то какие гайды не читаю, везде на тап большой прыжок, на зажатие тупо огромный. И двигать значения JUMP_HEIGHT нихуя не помогает, потому что промежуточного значения по гайдам толком и нет. Либо тап, либо зажатие в секунду. Все остальные значения (как например зажатие в 0,5с считаются так-же, как и тап.). Единственное, что хоть как-то помогло - это менять гравитацию при падении, но тогда прыжок ощущается не как человеческий, а как какой-нибудь баскетбольный мяч.
Дополнительный вопрос:
коем хуем можно сделать пиксельно-точную высоту прыжка? Есть какая-нибудь формула уровня: Сила прыжка - (гравитация*дельта) чтобы посчитать насколько высоко эту силу нужно выставить. Ибо я заебался делать десятки тестов, чтобы тупо найти десятичное значение силы для прыжка.
Годотач, такой вопрос. А как годот обрабатывает тайлмап'ы? Это я к моменту о оптимизации и производительности в 2Д
Допустим есть карта уровня для платформера. Пускай будет только графика, без коллизий. Можно поступить двумя способами: 1) Создать карту как тайлмап, и закинуть его в сцену как "Tilemap" 2) Создать один большой png спрайт карты и закинуть его в сцену как "TextureRect" или "Sprite"
По затратности создания эти варианты приблизительно одинаковы, а вот какой будет лучше по производительности?
>>612460 Правильно всё делаешь, только имя Engine уже занято. А в целом годно. У меня так юзеринтерфейс построен: в корне его нода со скриптом, содержит метод ShowUI(PanelIndex) при вызове метода панель, которая указана, отображается, остальные скрываются. Ты ещё можешь дополнительно при скрытии делать им стоп-процесс.
>>612496 > Есть какая-нибудь формула уровня: Сила прыжка - (гравитация*дельта) чтобы посчитать насколько высоко эту силу нужно выставить. Боюсь, тут придётся открывать учебник по кинематике. Ну или статью в википедии. https://ru.wikipedia.org/wiki/Кинематика >>612509 > какой будет лучше по производительности? Тайлмап заявлен как более производительный. Только вот проблема в том, что на картах нвидия он моргает как сучка.
>>612520 > Только вот проблема в том, что на картах нвидия он моргает как сучка в таком случае, использовать сразу спрайт всего уровня будет более универсально? Карт нвидиа же больше, чем амуде и встройки интел. другой кирилл
>>612520 >Тайлмап заявлен как более производительный. А можно подробности, где заявлено? А то все что я нашел в мануале это: "they are optimized for drawing large numbers of tiles", а это вполне может быть "оптимизед" по сравнению с закидыванием кучи спрайтов на сцену, а не с рисованием одной большой текстуры цельным куском.
> Только вот проблема в том, что на картах нвидия он моргает как сучка. У меня не моргает на нвидии. Кроме тех проблем с двумя мониторами и фуллскрином, что я выше по теме отписывал, проблем с отображением нет.
>>612658 Неосилятор-ложкоблядь, зачем ты проецируешь свои юнитипроблемы на нас? У нас игры есть, тормозящие, моргающие, но есть. А у тебя нит игор, только коллекция ассетов. Вообще, чем больше юнитимрази срут ИТТ (пока годотогоспода игоры делают), тем больше я убеждаюсь в гениальности юнитеков: создали платформу, на которой можно делать ассеты и продавать их. И уже который год тянут бабло из школоты.
>>612709 >>612393 По вашему всякие ГТА, майнкрафты - незаконечнные игры же выходит. Там постоянно пилят новый контент, новые моды, новые механики. Даже старые игры когда их еще записывали на болванки или картриджи, там были ревизии и патчи, а теперь их начали переиздавать тоже постоянно дорабатывая что-то. Игры по типу Скайрима вообще выпускаются голыми недоделками, чтобы их сами пользователи доделывали. В дрочильнях то же самое, новые уровни, новые персонажи, новые абилки. Даже если не упоминать сам контент (который, как утверждают на гд, важнее программирования), то абилки то требуют чтобы их накодили. В общем, единственное что может остановить разработку - это когда директор проекта скажет все, мы его закрываем. И то это не гарантирует, что люди не начнут сами дорабатывать модами, как к ToEE до сих пор Circle of Eight выходит, или например фанаты сейчас переписывают эмуль сервера давно закрытых City of Heroes и Dungeon Runners
>>612776 В чем суть твоего возражения? Какая разница, доделывал игру рандомный челик, или оффициально? Было это длц платное или бесплатное? Если что-то доделали, то значит оно было незаконченным. Тетрис постоянно доделывают, всякие новые механики, какой то режим где больше 4 линий можно удалить если накопить бонусы, мультиплеер, спамить противнику мусором и мешать. В марио каждый день новые "невозможные" уровни добавляют. Законченность игры определяет только менеджер, который говорит: релизим так как есть! Это все произвольое деление на тайтлы.
>>612784 >Если что-то доделали, то значит оно было незаконченным. В голос с этого философа. Где еще встретишь философа, как не в годот-треде - игр нет, а попиздеть хочется.
>>612784 >Тетрис постоянно доделывают, всякие новые механики, какой то режим где больше 4 линий можно удалить если накопить бонусы, мультиплеер, спамить противнику мусором и мешать. >В марио каждый день новые "невозможные" уровни добавляют. Господи какой ты тупой. Опять приравнивает высеры васянов к "допиливанию" игры.
>>612800 Падажжи. Но оФФициальные марио и тетрисы выходят каждый год. То есть, получается, дядя из фирмы заверял тебя, что марио точно-точно законченная игра, а потом брал и дорабатывал.
>>612805 А фильм Терминатор 2 это доработка Терминатора 1. Хуль не всё получилось сделать в первой части, накатили патчик так сказать, с длц в виде жидкого Роберта Патрика. Ты такой тупой что уже даже не смешно
>>612852 >название сайта ебать аргумент. А знаешь, что в школе изучали двадцать лет назад? Плюсы. Давай, говори теперь, что на плюсах пишут только школьники, мистер-охуительная-логика
>>612886 >на патреоне Демка, которая никогда не будет доделана, в том числе и из за ограниченности движка. Кстати видел там еще одну игру на годоте, и она тоже была про фуррей. То есть годот в основном юзают больные извращенцы.
>>612897 Только инфантильный долбоеб будет дрочить на рисованную девочку с ушками и хвостиком тем более в игре на годоте. То есть это игра для прыщавых уебанов которые остановились в развитии на отметке 15 лет.
>>612902 Так, слово релиз ты только что добавил, это раз. Коммерческие - человек зарабатывает на ней Профессиональные - человек зарабатывает не ней. Или у тебя для этих слов тоже альтернативные определения?
>>612901 Мы наблюдаем обычные манявры юнитипидарков >ЭТИ ПЛАТНЫЕ ИГРЫ НЕ ИГРЫ! ПАЧИМУ НЕДЕЛАЮТ ГТА НА ГОДОТИ?? То есть эти манявры будут продолжаться бесконечно, потому что даже игра похожая на ГТА не будет являться ГТА.
Так. Скачал ваш Годот. Запустил. Первые впечатления: какая-то песочница, что-то типа майнкрафта. Играться весело. Но как инструмент для разработки - нет. Даже Roblox по сравнению куда более серьёзная вещь.
>>612910 Эти "манёвры" будут продолжаться пока на годоте не появится ХОТЯ БЫ ОДНА ИГРА. Игра, это не поделка школьника на коленке, который запустил годот и по тутору сделал за неделю на коленке хуйню уровня какого-нибудь юнитековского асетфлипа, который делается за 3 минуты, а действительно продукт. Что-то хотя бы уровня сабнавтики, холлоу найта, харстоуна, капхеда, да или хотя бы дарквуда, зе форест, римворлд, ну на крайняк файявоч или аутер ворлдс. ХОТЬ ОДНА ИГРА НА ГОДОТЕ
>>612924 > Что-то хотя бы уровня сабнавтики, холлоу найта, харстоуна, капхеда, да или хотя бы дарквуда, зе форест, римворлд, ну на крайняк файявоч или аутер ворлдс. Я смотрю, на юнити у тебя каждая первая игра не браузерная параша типа БАТЛЫ. Юнити - не движок, а конструктор, причём, строго определённого жанра игр - поиска записок в лесу со слендерманами и анубисами. На этой параше даже два дэ графика реализуется через жопу, а не как у всех.
>>612924 > эти "маневры" будут продолжаться пока жив хоть один тугосеря, которому нечего делать, кроме как СРАТЬ В ЧУЖОМ ТРЕДЕ. >Срать, это вам не мешки ворочать. Это надо найти время, место, придумать как и обо что триггернуть собеседника, это вам не пукнуть в лужу. >Что-то уровня полыхания пуканов, взрыва пятой точки, дымления ануса. >ИГОР >ДЕЛАТЬ >НЕКОГДА >СРАТЬ >В ЧУЖИХ >ТРЕДАХ >ВРЕМЯ >ЕСТЬ
>>612924 На годоте много игр, больше одной. Так что твое утверждение уже ложно. >асетфлипа Откуда на годоте ассеты? Вы ж говорили там самому все писать надо. >Что-то хотя бы уровня В чем определяется уровень? Формализуй. Иначе ты продолжишь маневрировать "это не игра Х, поэтому несчитово".
Там идет конфочка юнити, заанонсили System Shock 3, новую часть Oddworld, ксп 2, поддержку RTX, инструметы для нейросетей и машинного обучения, и еще кучу другой хуйни. Че когда в годот батчинг спрайтов завезут?
>>612944 > Че когда в годот батчинг спрайтов завезут? Не завезут, международным консорциумом уровня гондотитя было постановлено, что 3 спрайта на 20 фпс достаточно для любой современной игры.
>>612947 А еще на юнити вереница майнкрафтов разной паршивости. Знаешь, странная манера - выставлять детские рисунки из начальной школы как какое-то достижение. Лучше уж ничего не выставлять.
>>612930 Как твоё ёрничество создало ХОТЬ ОДНУ ИГРУ НА ГОДОТЕ? Никак.
>>612928 А ты можешь годот обсужать отдельно от юнити или годот не существует отдельно от юнити? Ответить про годот на вопрос про годот хотя бы в теории возможно?
>>612929 А ты можешь годот обсужать отдельно от юнити или годот не существует отдельно от юнити? Ответить про годот на вопрос про годот хотя бы в теории возможно?
>>612933 >На годоте много игр, больше одной. Тогда наверное тебе не составить труда показать хотя бы одну настоящую игру на годоте. Чтобы это была действительно игра, законченынй коммерческий продукт, а не недельная поделка школьника по тутору, которые выставлен в потешном шоукейсе. >Откуда на годоте ассеты? Насколько часто тебя ебошили по голове, что ты прочитав это >хуйню уровня какого-нибудь юнитековского асетфлипа, который делается за 3 минуты задал самый уебанский вопрос в мире, которым можно было на это ответить? Когда тебе клиент говорит "Бургер, одну картошку фри и колу" а будем честны, годотеру другой работы не найти, ты тоже начинаешь ёрничать вопя на весь макдак АТКУДА В КОЛЕ КАРТОШКА? >В чем определяется уровень? Я тебе привёл примеры игр. По ним ориентируйся. Я понимаю, чтоб для твоего уровня интеллекта это очень сложная задача, но ты всё же постарайся.
>>612959 >хотя бы одну настоящую игру Ваши игры не игры, ясно. >законченынй коммерческий продукт Мы уже разобрали несостоятельность законченности. Коммерческие продукты выставлены на итчио, стиме и т.д. > недельная поделка школьника по тутору, которые выставлен в потешном Это ты сейчас 99%юпити "проектов" описал. >Я тебе привёл примеры игр. По ним ориентируйся. Ты не сливайся, а формализируй критерии, там, в количестве объектов, текстур или геймплейных выборов, а то когда тебе приводят ты отвечаешь что ваши игры не игры. Зачем мне тратить на тебя время? Сначала ты потрать на формулирование своего тезиса, тогда будем с ним разбираться.
>>612963 Пиши формальные критерии, хуесосина. Где посмотреть "хоть одну игру" я тебе написал, если твоих куриных мозгов не хватило открыть сайт - твои трудности.
Не пойму почему в треде сравнивают годот с юнити, стандартом геймдева. Ровня годота это констракт какой-нибудь, дефолд, coppercube и т.д. Даже чуханский гамак ближе к юнити потому что на нем хотя бы игры делали. Это все равно что сравнивать линупс созданный для девственников с виндой или макосью.