>>571168 (OP) Поработал тут над QWAS-управлением в изометрической демке, которая идёт с годотом вкаропке и готов выкатить вам свои результаты, которые на мой взгляд весьма неплохи. При одиночных нажатиях Q или W, A, S происходит движение по изометрическим осям. Если же надо двигаться по осям экрана, клавиши QWAS образуют квадрат, нажимая на грани которого, мы двигаемся по экранным осям: WS - вправо, QA - влево, QW - вверх, AS - вниз. Модифицируйте проект "Isometric Game" показанным на скринах образом:
>>571454 Я почему-то испытываю боль, когда ввод делают через вектор. Видимо, сказываются годы оптимизации под 40 серию нокии. Не могу привыкнуть, что куча сложений, умножений флоатов работет быстро. Все равно пишу через ифы и + константы.
>>571454 Суть происходящего в коде: Мы формируем вектор инпута с клавиатуры по авторской формуле вектор2((право-лево), (низ-верх)), затем мы поворачиваем полученный вектор на 45 градусов влево (с минусом), координаты всё еще экранные. Поэтому мы умножаем полученный вектор на cell_size нашей тайлмапы. В итоге получаем инпут повернутый и отмасштабированный изометрически. Далее в процессе мы его нормализуем и умножаем на скорость с дельтой. >>571456 Надо тесты делать. Но мне лень, тебе, полагаю тоже. Чисто логически предполагаю, реакция человека работает гораздо медленнее, чем процессы компа, поэтому это не прецедент оптимизации. Даже если умножения работают очень медленно, инпутлаг будет на грани человеческого восприятия.
>>571457 Так то да. Но вдруг кто-то будет взад-вперед скроллить и это будет тормозить. На самом деле, тут больше опасность в physics_process. Читал что он может вообще на кадр позже вызываться.
>>571459 Частота вызова физик-процесса задаётся в настройках проекта. Пикрелейтед. Коллбэк инпута вызывается только при физическом вводе, в нашем случае при нажатии клавиш. Таким образом, с дефолтными 60 коллбэков физики в секунду, реакция на наш инпут будет быстрее нашего восприятия.
>>571470 да про матрицы это и так понятно, там еще синусов всяких навернул, хотя кто его разберет, что ему в этом может быть непонятно и если это непонятно, то что он ноет, а не учится
>>571607 >Сделай бомбочки как в тетрисе на тетрисе за 50 рублей Напомните плиз, что за бомбочки? Это когда мигающий блок летит и проходит сквозь блоки?
>>571894 Убери эту убогую анимацию, лучше делай наклон в тот момент, когда игрок двигает фигурку влево или вправо. И обязательно добавь easing, линейное движение камеры выглядит очень убого.
>>571895 Ухх, годнота, сам когда-то подобный сеттинг придумывал, даже эскизы где-то в тетрадке должны остаться, типа жизнь помойки - мусорная коробка-тянка с длинными ресницами, вечный обдолбыш хромой тюбик с клеем, продырявленная покрышка.
>>572097 >>572102 Меня наебали не в /гд, а в другом месте. Сказали что годот бесплатный во всём и вставление рекламы противоречит концепции разработчиков. Мне нужно будет вставить видео с рекламой, за просмотр которой игроки получают валюту. Кто-нибудь уже реалтзовывал?
>>572103 Настолько противоречит, что на заставке движка реклама скамкоинов. Никогда не верь рандомам ни в чем что касается юридических вопросов (даже мне), читай договоры сам, перепроверяй. Даже GPL позволяет вставлять рекламу, просто там это бессмысленно, любой васян будет пересобирать со своей рекламой или без рекламы, исходники то открыты. Ни GPL, ни MIT не запрещают коммерцию. С GPL это бессмысленно по причине указанной выше. MIT менее опенсурсная лицензия поэтому она даже не обязывает раскрывать исходники. Так же лицензия не распространяется на результаты работы, т.е. если GPL на сервере геренрит сайт/картинку/текст, то тут тоже не нужно отдавать исходники. Может показаться что к играм это не относится, но ведь скоро все серваки будут работать в гугл стадиуме, и игра не будет скачиваться, а только стримиться, поэтому можно будет хоть GPL игры делать.
>>572115 >Ни GPL, ни MIT не запрещают коммерцию. С GPL это бессмысленно по причине указанной выше. Ну aesprite вроде коммерческий. Покупают просто ради удобства. Тоже самое у RHEL с их техподдержкой.
>>572117 >чтобы хотелось отблагодарить труд автора Нихуя ты не понимаешь в коммерции. Позволь я тебе немношк объясню, как всё в реальном мире происходит. В реальном мире бывают студии наподобие тройка-геймс, которые выпускают пару-тройку игор, которые затем чуть ли не культовыми считаются, но благодарные игроки почему-то скачивают их годноту на торрентах. А кушать-то хочется и студии типа тройка-геймс разваливаются. Поэтому глупо уповать на то, что благодарные пользователи отблагодарят тебя донатами. Нужно любыми способами подталкивать их к платежам. В том числе оплата просмотром рекламы. Сэд бат тру.
>>572127 >на чем-то более продвинутом Пока ещё никто не смог повторить демки на годоте, которые мы с распидором выкладываем ИТТ. Следовательно продвинутее годота ничего нет. Например, у юнити нет дерева сцен. Они прикрутили нестед префабы вроде, но по отзывам - это кривой велосипед. У остальных движков даже этого нет. УЕЧ принципиально не рассматриваю, потому что это продукт другой весовой категории, для игор ААА класса, запиливание на нём игр соло - это как стрелять из пушки по воробьям.
>>572151 >Во время тройка-геймс никаких торрентов не было. >Протокол был создан Брэмом Коэном, написавшим первый >torrent-клиент «BitTorrent» на языке Python, 4 апреля 2001 года. >Запуск первой версии состоялся 2 июля 2001 года. >Vampire: The Masquerade[d]Дата выпуска Соединённые Штаты Америки 16 ноября 2004 > Arcanum: Of Steamworks and Magick Obscura Даты выпуска США 21 августа 2001 > 16 сентября 2003 The Temple of Elemental Evil Алсо, помимо торрентов были всякие директ-коннект-клиенты, ослы-ишаки.
>>572163 И что? По твоему в год создания все такие вжух и раздавали торренты 24/7? Тройку разорили как раз жадные издатели, заставляющие выпускать сырые забагованные продукты раньше срока. А патчи делать и накатывать в то время было геморно.
>>571456 >Я почему-то испытываю боль, когда ввод делают через вектор. Видимо, сказываются годы Вон уже даже французы догадались делать ввод через вектор https://www.youtube.com/watch?v=YnvZNkQHcrI Оказалось там целая функция для этого есть! Конвертировать bool в int оказывается нинужна было всё это время.
>>572298 Да разве это игра? Вот, посмотри, как должен выглядеть настоящий тетрис, тетрис от юнитибогов. https://www.youtube.com/watch?v=0nNp3nqtbWQ Жалко только, что железа ps4 не хватает на настолько продвинутую и сложную игру и она постоянно тормозит. Все-таки за юнитикачество нужно платить.
>>571168 (OP) Хотел пожаловаться, но выяснилось, что как обычно самдурак. Создал словарь, присваивал его новым создаваемым объектам, забыв, что словарь передаётся по ссылке и охуел, что у всех объектов одинаковый словарь. Проблема решилась методом .duplicate() словаря. В общем, как обычно, если в годоте ишьюс, проверь сначала себя и свой код.
>>571905 Ну вообще сеттинг помойки - благодатное дело. Тут тебе и незаезженный (пока) сеттинг, и идейная состовляющая в виде "мусор поглащает планету, надо что-то делать". Можно ещё потом говорить, что делал игру, чтобы привлечь внимание проблеме (которая действительно существует).
>>572909 Хуан теперь шиканет, поживет на широкую ногу годик, покатается по конференциям. А как бабки кончатся, снова начнет пилить годот и просить донаты на патреоне.
>>572909 >И все равно ничего не изменится. Кто хочет делать игры - ищет возможности, как делать игры, на чем писать скрипты, в чем моделировать, где рисовать. Кто не хочет делать игры - ищет причины, почему годот хуже юнити.
>>572946 Да какие пруфы, господи, развертку для ебаных волос делал, такой мутор я ебал. Так и не успел доделать. Еще анимацию бега прикручивал через юнитигуманойда, но она дерганная и нужно было в блендере править, подключать через гуманойда и чекать, лучше стало или нет, и так раз сто.
>>573058 Нашел уже, MultiMesh назыаается. Вот нахуя так делать? Во всем мире это назыается инстансинг. У одного Жуана instance() делает копию объекта, то есть полностью противоположенный эффект на перформанс.
>>573070 Инстанс это создание объекта, ещё такая терминология массово использовалась в синглтон паттернах и фабричных методах ещё до того, как ты родился.
>>573070 >instance() делает копию объекта А, ты ещё и блядь даже не понял, что этот метод делает. Пиздец ты дегенерат конечно, ты хотя бы getting started то осилил?
>>573074 Пиздуй троллить тупостью в другом месте. >>573073 Инстансинг это батчинг геометрии на видяхе, чтобы на вывод одинаковых объектов не плодить оверхед. И только у одного Жуана instance() это new().
>>573089 Нет, у меня на скрине не написано другое. Там именно один экземпляр в движке и несколько копий на экране. Возможно через батчинг, возможно через шейдер, неважно. В любом случае смысл инстансинга - уменьшить затрачиваемые ресурсы - полностью противоположенный тому, что в него вкладывает Жуан.
>>573087 >>573091 >>573092 Ты наверное хочешь чтобы именно в годотреде над тобой посмеивались, что ты не понимаешь разницы между классом и ресурсом, между объектом и инстансом?
>>573095 Создание инстанса класса. >>573096 Эффект Даннинга-Крюгера знаешь? Когда твоё дилетанство позволяет тебе видеть лишь троллинг тупостью в словах профессионалов.
>>573101 >Когда изучал программировании по геометрии Но что самое печальное, что ты всерьёз думаешь, что тебя все троллят, а создатель движка дегенерат. При этом ты приходишь сюда и высираешься, что всё говно, но продолжаешь есть кактус, а не съебёшь нахуй туда, где всё называется как ты хочешь.
>>573133 Я ничего не путаю. Скрин инстансинга с гугла выше. >>573110 >ты всерьёз думаешь, что тебя все троллят Поначалу, действительно, я думал что меня троллят >посоны как в годоте называется инстансинг? >ололо object.instance() Но теперь я точно вижу, что тут одна илита которая не знает что такое инстансинг. >создатель движка дегенерат У создателей движка как раз инстансинг, инстансинга нет только у создателя годота. http://www.undeaddev.com/lets-play-with-a-lot-of-meshes-part-1/ https://docs.unity3d.com/Manual/GPUInstancing.html >не съебёшь нахуй туда Потому что святой жуан сделал название противоречащее индустриальному стандарту, а критиковать его нельзя? Нет, пожалуй, останусь тут.
>>573101 >Создание копии объекта создаст в памяти копию меша объекта. При настоящем же инстансинге меш Ты путаешь инстансинг классов с инстансингом мешей. Это разные вещи. Ты обосрался, дилетант.
>>573138 Вот специально залез в доки юнити глянуть, раз ты на него ссылаешься. И там всё сходится с тем, что я знаю. Операция, в целом, дорогая. Пикрил. Тебе явно говорят. Копию объекта. Это ещё один объект. Это накладные расходы. А то, что ты хочешь - это переиспользование, пул. Специально, для таких как ты, в один абзац написали. https://unity3d.com/learn/tutorials/topics/scripting/object-pooling
>>573141 Обосрался - обтекай. Ссылку я уже приводил выше. Инстансинг - дешевая операция, которая ускоряет рендер в несколько раз. Никаких копий не создается, рисуется тот же меш. https://docs.unity3d.com/Manual/GPUInstancing.html GPU instancing Introduction Use GPU Instancing to draw (or render) multiple copies of the same Mesh at once, using a small number of draw calls. It is useful for drawing objects such as buildings, trees and grass, or other things that appear repeatedly in a Scene .
GPU Instancing only renders identical Meshes with each draw call, but each instance can have different parameters (for example, color or scale) to add variation and reduce the appearance of repetition.
GPU Instancing can reduce the number of draw calls used per Scene. This significantly improves the rendering performance of your project.
>>573140 Мне похуй, что ты спрашивал. Ты продолжаешь твердить, что инстансинг создаёт копию объекта. Это неверно. Ни в кодинге (объект в памяти есть инстанс класса на диске), ни в графике (меш в памяти есть инстанс меша на диске).
>>573146 >Мне похуй, что ты спрашивал. Оно и видно, пиздишь мимо кассы о чем-то своем, увидел слово похожее и все перепутал. >инстансинг создаёт копию объекта. Инстансинг не создает никакую копию, а переиспользует уже загруженный меш. А твой instance() конечно создает копию объекта в памяти, и копирует весь меш. А, ясно, ты зачем-то копией называешь клонирование. Пиздец. >>573145 В Жуане?
>>573152 >А твой instance() конечно создает копию объекта в памяти А "мой" instance() создаёт инстанс класса, уёбок ты упоротый. Непонятно какого хуя у тебя в башке щёлкнуло, что он создаёт копию(!) объекта(!!)
>>573152 >>573160 а помните, как вызов Instance() был настолько костыльным, что возвращал Object вместо GameObject или, собственно, самого класса, и приходилось выходить на сам GameObject через GetComponent<Transform>().gameObject ? я помню!
>>573160 >он создаёт копию(!) объекта(!!) А причем тут это? Ты вообще уже до чего угодно готов доебаться лишь бы не признавать косяки Хуана, называющего инстансингом совсем другую хрень.
>>573176 Испокон веков в программировании инстансингом называли создание объекта некоего класса. В геймдеве конечно есть еще одно значение, которое относится к графике, однако корень срача в данном треде в том, что некий господин проебал уточнить, что именно он имеет в виду и теперь мечущего кал по всему треду.
>>573182 Это новый уровень аутизма, пиздеть про instancing, и приводить в пример скрин, где написано geometry instancing? Geometry instancing относится к геометрии, просто instancing имеет и другие значения, даже дауну это понятно. Но обосравшему пол-треда дегенерату похоже не очень понятно.
>>573184 Тебе глазки жиром залило? Понимаю. Это, блджад, выдача по запросу instancing. И все, сука, все говорят geometry instancing. И даже в вики речь идет о geometry instancing. И только в конце есть маленькая приписочка - см. также Instantiation. Ты реально не различаешь похожие слова, походу, бармалей.
>>573187 >>573188 Ты долго будешь продолжать дристать себе на голову? Тебе ИТТ не поссал в рот только ленивый, может уже успокоишься и съебешь? >смешно если прочитать самый последний абзац скрина, там где обучалка openGL Ебать как смешно, ты наверное аж взвизгнул со смеху, хлюпая и захлебываясь соплями от осознания факта собственной правоты? Даже дауну понятно, что в контексте opengl под instancing подразумевается именно геометрия, потому что отрисовка геометрии - это единственное предназначение opengl. Поэтому там нет нужды уточнять, какой именно instancing. Но только даун будет проецировать на все остальные контексты и визжать, что у этого слова может быть единственное значение в любой ситуации.
>>573266 Что ты там булькаешь, не подавись. Дрищешь тут только ты, даже даун гугл определил контекст и все понял, только ты обосрался перепутав instancing и instantinating и продолжаешь тут клоунаду.
>>573274 Да съебись ты уже, не надоело позориться? Я тебе не про instantinating, а про инстансинг сцен, если бы ты хоть немного вкурил годот, то знал бы, что у него есть такой термин. И означает это не копирование объекта, как ты, ебанашка, придумал, а создание экземпляра сцены из запакованного ресурса. https://docs.godotengine.org/en/3.1/getting_started/step_by_step/instancing.html
>>573277 И я нигде не спрашивал, как делать экземпляры сцен из ресурса, я спрашивал как называется инстансинг, вообще хуй знает к чему ты все время этот хуановский костыль приплетаешь.
>>573288 В анриле есть static mesh instancing, в unity есть gpu instancing, в годоте есть scene instancing. И нигде нет просто instancing. Что тебе, дауну, конкретно не понятно? Ты теплое от мягкого не можешь отличить?
>>573288 Да ты же поехавший, нахуй! Инстансинг - это использование инстансов. Как и каких именно - уже от контекста завит. Ясное дело, большинство разработчиков в первую очередь подумают о ООП и инстансах классов. Рендеринг и геометрия только тебе особенному в голову приходят. А учитывая, что сцены в годоте по сути выполняют роль классов - нет ничего удивительного, что люди подумали, что ты об их инстансинге спрашиваешь.
>>573292 Какой же ты тупой. В анриле и unity это внезапно тот самый инстансинг о котором я спрашивал. И только у Хуана почему-то вместо теплого жидкое.
>>573293 >Рендеринг и геометрия только тебе особенному в голову приходят. Выше скрин из гугла. Один ты в ногу, все остальные не в ногу, ага. Вот почему то всем в контексте графического игрового движка приходит в голову инстансинг геометрии.
>>573306 Да всем просто поебать, нормальные люди изучают инструмент, учатся создавать игры. Им без разницы, как там фичу назвали, инстансинг, хуинстансинг, главное что оно есть, задокументировано и работает - почитал доки, понял, что это и для чего нужно, спокойно применяешь. Ты один тут на говно изошёлся, как будто Хуан тебя лично выебал в жопу и написал на ней фломастером instancing.
Знатоки. У меня есть условная сцена и в ней есть условный куст. Как делать, чтобы в другой сцене создавались эти сцены с кустами, но это были бы не копии всей сцены куста, а только отображения меша в нужном месте с анимацией, а вся логика была бы одна на все кусты.
>>573545 По совопукности фичч (оперсурс=бесплатность, 3д, 2д, редактор с гизмами, современные техники программирования, звезды в гитхабе) альтернатив, действительно, нет.
>>573569 >Жирный >размеры игр от 23 мб Это ты жирный. Справедливости ради - шарпогодот занимает около 35 мб в проекте. В 3.2 функции движка можно будет отключать, возможно так и размер сократить можно будет для людей, делающих игры под программируемые калькуляторы.
>>573637 >Скачал ваш годо. Молодец. >Просто перепрыгивает в 2д режим, когда я рисую панельки. >Как сделать, чтобы UI рисовался поверх 3д вида? Запустить проект и увидеть, что панельки уже нарисовались поверх тридэвида. >Что за пиздец? Произошел троллинг. >>573663 Что конкретно не получается?
ПРОБУЕШЬ ГОДОТ @ СИСТЕМА ЗАРАЖАЕТСЯ ЕГО БАГАМИ @ ЛОВИШЬ ПО ПЯТЬ СИНИХ ЭКРАНОВ В ЧАС @ УЗНАЕШЬ ТЫСЯЧУ СПОСОБОВ ВЕЖЛИВО ПОСЛАТЬ ПОЛЬЗОВАТЕЛЯ НАХУЙ ОТ ИНДУСОВ В ТЕХПОДДЕРЖКЕ
ПРОБУЕШЬ УЕЧ @ УЕЧ СЪЕДАЕТ СНАЧАЛА ВСЮ ВИДЕОПАМЯТЬ, ПОТОМ ОПЕРАТИВНУЮ, ПОТОМ МЕСТО НА ЖЕСТКОМ ДИСКЕ, А ПОТОМ И ТВОЮ ЛИЧНУЮ @ ВСЕ РАВНО КРАШИТСЯ С ПОТЕРЕЙ ПРОГРЕССА @ ЖИВЕШЬ ДО КОНЦА ЖИЗНИ С АМНЕЗИЕЙ, ИЗ ВОСПОМИНАНИЙ ТОЛЬКО 4К ТЕКСТУРЫ
ПРОБУЕШЬ ЮНИТИ @ НИЧЕГО СПОСОБНОГО ТЕБЯ РАССТРОИТЬ НЕ ПРОИСХОДИТ @ ВЕДЬ ВСЕ САМОЕ СТРАШНОЕ С ТОБОЙ УЖЕ СЛУЧИЛОСЬ, ЕСЛИ ДОКАТИЛСЯ ДО ЭТОГО ДВИЖКА
>>573930 Ничего ты не забахаешь, долбень, нужно связи нейронные нарабатывать, постепенно, с толком, тут узнать инфу недостаточно. Художники десятилетиями выдрачивают мастерство, с любым ремеслом так.
>>573975 На плюсах разрабатывали игры еще до твоего рождения, и скорее всего всё еще будут и после твоей смерти. Это не извращение, а стандарт индустрии со времен её зарождения. А шишарп в индустрии относительно недавно, его стали применять, чтобы юнити-додикам жилось попроще, ибо ЦА юнити не может осилить полноценное программирование.
>>573975 В чем ты усматриваешь извращение? Современный c++ это не c++ 99 года. Он позволяет писать почти так же легко как на новомодных языках (некоторые идиомы правда принципиально отличаются, поэтому проще писать в плюсовом стиле чем натягивать сову на глобус). Плюс у тебя вся мощь оптимизаций, производительности, доступных либ и при необходимости возможность писать хоть фарш на шаблонах. На самом примитивном уровне кодинга c++, python/gdscript и какой-нибудь js вообще не различается - я постил в тред годотуториал переписанный в лоб на плюсах.
>>574019 Я читаю глазами, как ты постишь жопой. Речь о геймдеве и ты, ой, тыж мимокрокодил, да? И он >>574007 прямо намазал жопой на клавиатуре, что шишарп создан ради юнити: >>574007 >А шишарп в индустрии относительно недавно, его стали применять, чтобы юнити-додикам жилось попроще
>>574021 Ебать ты тугой, это последствия передозировки юнити в организме? Когда настолько привык перетаскивать ассеты из маркета по сценке, что когда видишь буковы в посте, уже не вдупляешь, что они означают. Откуда ты высрал про то, что шишарп создали для юнити? Черным по белому написано, что конкретно в ИНДУСТРИИ ГЕЙМДЕВА он начал получать распространение именно с приходом юнити.
>>573951 Появился джава, который набрал обороты и захватил рыночек. Мелкомягкие просекли фишки и захотели отхватить часть рыночка ынтерпрайзного и выкатили свой сисярп. Он был простой, что образовалось много кодомакак, которым надо было куда-то деваться. Одна компания подсуетилась и выпустила игровой движок, который сделала под сисярп, шобы в свою очередь срубить бабла на вкатывальщиках под девизом, что нашу хуйню освоит и школьник и уже завтра вы выпустите свой крузис. Туда же стали подтягиваться школьники, которые на тех же мантрах, шо сисярп - это легко и это айти, гы-гы, срублю бабла и 300к/с. На этом разговоры про сисярпы/юнити прекращаем в треде, буду затирать и банить, заебали школьники. Валите в свой загон в соседнем треде.
(Автор этого поста был забанен. Помянем.)
>>574135 Пока ты до следующего сниппета не дойдешь, он и не будет. Velocity - это локальная переменная скорости. Движение происходит только после коррекции свойства position на эту величину.
>>574175 Причем тут ангельский? >свойство Mob под переменными скрипта на узле Main. Это вообще где, нахуй? Что еще за поле "Метод в ноде" Откуда все это берется. Для кого вообще пишутся эти гайды, да еще и на официальном сайте?
>>574199 >где эти "свойства под переменными скрипта Скорее всего имеется в виду самый правый столбец в редакторе (если ты на стандартных настройках 3.1).
Ананасы, я тут решил немного в гд податься как хобби, в программировании нихуя не понимаю. Скачал годот, начал смотреть всякие туториалы, вообще пиздец сложнаааа! Реально нихуя не понятно. С чего вообще начать, какие темы нужно задрачивать для начала? Я начал про сигналы смотреть, но тоже нихуя не понял, чувак кодит и я не понимаю нахуя он в конкретном месте вызывает этот сигнал итд. Потом про типы переменных посмотрел. Ну тут более понятно, непонятно только как это мне пригодится. Про структуру тоже понятно более менее сцена-ноды-дочерние, иерархия итп. Продублировал сборку мини игры, просто тупо как робот списывал с ютаба код, всё работает, но научился чему-то на 1%, 99% просто сквозь уши прошло. Ещё парит что они так объясняют, как будто я уже кодер с 10летним стажем и должен все термины и методы понимать и приумножать якобы имеющиеся знания. Вениаминненастоящее имя
>>574505 >я тут решил немного в гд податься как хобби >нихуя не понимаю >хобби Почитай что такое хобби, Веня. Нахуй подаваться в то, чего не понимаешь? Да ещё это что-то хоббьёй называть? >>574549 Подайте заявку в РосГеймНадзор для разьяснения Вашего вопроса, Веня.
>>574615 Вот вам универсальный гайд 1. Используете шарп вместо гдскрипт - производительность растет раз в 400. 2. Максимально сокращаете количество нод и вызовов к api годота. Особенно вызовов, которые перестраивают древо сцен. Производительность растет в дохуя раз в зависимости от количества сокращений. В моем случае прирост был даже больше чем от шарпа.
>>574623 >Используете шарп вместо гдскрипт Плюсы надо использовать. >Особенно вызовов, которые перестраивают древо сцен. Это вообще универсальный совет для программирования в целом.
>>574688 Дерева сцен нет, тот анончик обдолбался. Дерево нодов: все вызовы, которые будут создавать или удалять ноды в твоей сцене. Т.е. как бы логично, что если уменьшать количество объектов и количество логики в твоей игре, то она сможет быстрее работать. Короче он по всем пунктам написал какую-то хуйню.
>>574694 >Древа сцен нет https://docs.godotengine.org/en/3.1/getting_started/step_by_step/scene_tree.html SceneTree - это у тебя древо нод, но обдолбался я. Хорошо. >уменьшать количество объектов Не просто объектов. У тебя могут быть, например, шарпо-объекты, которые не наследуются от нод и создаются при помощи new - они очень быстро работают. А есть тормозные ноды, у которых даже элементарный GetNode занимает дохера времени. >>574686 Ну юзай кресты тогда, на них тоже игры можно делать. Для меня шарп куда более удобен. >>574688 Например, AddChild, RemoveChild, MoveChild.
>>574760 Игрушка - симулятор жителя города. Кроме игрока есть и другие жители, которые имеют те же возможности, просто ими управляет ИИ. Игра пошаговая 1 ход - 1 минута игрового времени. Если игрок, допустим, спит, то он пропускает 600 минут/ходов и игра должна просимулировать город на эти 600 ходов. Тут уже была заметна небольшая задержка между нажатием кнопки и выводом результата. Перед тем, как запускать игрока в город - город симулируется 3-6 игровых месяцев для создания его истории и отношений между жителями. Вот тут гдскрипт, ноды и я вместе с ними соснули по полной. Сейчас перенес проект на шарп, вот что получил: 120000 ходов гдскрипт-нодо версия считает 30+ минут (мне просто надоело ждать и я закрыл приложение, поэтому конкретного числа нет), шарповерсия считает 4 секунды. На случай, если вылезет умник и скажет, что гдскрипт-нодо версия попала в бесконечный луп - нет, нет попала. 12000 ходов она считала 6.5 минут, шарп их считал меньше секунды, а миллисекунды я не замерял. И если вы думаете, что у меня там пиздец какая сложная симуляция, то вы ошибаетесь. Игра сейчас на стадии макета, в конечной версии расчетов раз 10-20 больше будет. И вот если увеличение шарповских 4х секунд в 10-20 раз пережить вполне можно, то годотовских 30+ минут нихуя нельзя. Сейчас годот у меня по сути выступает фронтэндом для шарпа - рисует гуй, менеджит медиа ресурсы, рендерит. Игровая логика его считай не трогает, и все хорошо. Короче, не повторяйте моих ошибок. Если у вас в игре есть даже намеки на сложные расчеты - сразу шлите нахуй гд скрипт и перекатывайтесть на решетки/кресты. Если планируете использовать много нод, то сначала сделайте себе бенчмарк и убедитесь, что производительность вас устраивает.
>>574623 > Особенно вызовов, которые перестраивают древо сцен. Прокомментируй плиз, насколько быстро будут работать объявления объектов на сцене в стиле дельфи? Типа такого: onready var Image1 = $Scene/Images/Image1 as Sprite onready var Body1 = $Scene/Bodies/Body1 as KinematicBody Затем в остальном скрипте обращаться только по этим именам.
>>574828 >насколько быстро Все познается в сравнении. $ - это тот же get_node. Вызов к апи годота, что всегда не быстро. Однако, если одновременно много get_node не запускать или запускать их во время загрузок, то жить можно. >Затем в остальном скрипте обращаться только по этим именам. Это относительно быстро.
Вообще описанный тобой метод - самый логичный, если нужно использовать ноды. У меня так гуй работает.
>>574857 Невероятное совпадение, но я тоже это использую для гуя. У меня включилась аналогия: гуй -> экранная форма -> delphi
По вопросу тормознутости гдскрипта - это никогда не было секретом. Гдскрипт тормозит и в высоконагруженных участках следует юзать шарп, плюсы или любой другой язык, на котором сможешь ре-имплементировать АПИ годота и сварганить либу для нативскрипта.
>>574885 А вот интересно, стал ли гдскрипт быстрее после введения типизации в 3.1.? Кто-нибудь проводил тесты? Ведь динамическая типизация Хуана означала повсеместное использование типа Variant, а это лютая хуета. Помню, от него еще на кодерских форумах в 2004 плевались. Соответственно, в гдскрипте без типизации строка: var a = 1 означает в гдскрипте с типизацией: var a : Variant = Variant.int(1) Вы могли подумать что это int, но хуй там плавал!
>>574916 Фанбои то? Это самый рак любого коммьюнити обычно - челики, которые тупо минусуют и кукарекают. Там довольно правильные вопросы поднимаются. Например, то, что должно по идее быть отдельным объектом памяти навроде твина или логического хитбокса - в годоте будет отдельной сущностью, которая в дерево добавляется. Вот и думай, в итоге у тебя даже простая сущность с анимациями будет как минимум 5 нод в себе содержать.
А потом такие челики спрашивают про 50к объектов. Загрузка скриптов отдельно вообще недавно появилась, я вообще хуй знает как жили люди, для которых её не существовало. Какое-то разделение логики или нормальная архитектура сразу нахуй идёт с таким подходом.
И это почти что единственное нормальное обсуждение воркфлоу, которое я нашёл.
>>574922 >отдельным объектом памяти Эксперт подал голос. >спрашивают про 50к объектов Это ненормально много, там его правильно макнули, что для этого уже надо быть на другом уровне разработки. Инстансингом хотя бы научиться пользоваться. >я вообще хуй знает как жили люди, для которых её не существовало. Создавали синглтон, тащемта никакой проблемы рулить другими нодами из корневой нет. >И это почти что единственное нормальное обсуждение воркфлоу, которое я нашёл. Там больше похоже было на "никто не знает как пользоваться годотом!" - "чувак, просто прочитай туториал и доки" - "ой бляя я тупой, удолите топик"
Парни, я ничерта не понимаю в гейм деве, но не знаю с чего начать. Может есть какой- то алгоритм? (Руки из жопы, так что с# не работает xaml, только c++ когда то писал. Подскажиь плез(хотелось бы фентези РПГ запелить, как старая Хроно триггер и на подобии)
>>575100 >Может есть какой- то алгоритм? Есть. Берешь рпгмейкер, долго пилишь свою никому ненужную парашу, выкладываешь, всем похуй, дропаешь и навсегда забываешь про игрострой.
>>575115 Так-то в этой годноте нет ничего нового или удивительного, в раст и хасскель такие типы завезли уже много лет назад. Но по сравнению с убогим gdscriptом это конечно прорыв, я рад что Хуан одумался и понял, что пытаться реализовать свой язык с нуля, если ты не эксперт в этом - хуевая идея.
Как вы эвенты хэндлите, когда у вас ноды перекрывают друг-друга? Например, какая-то панель посередине должна перекрывать евенты кликов у всего под собой.
>>575147 Вот тут почитай https://docs.godotengine.org/en/3.1/tutorials/inputs/inputevent.html Если в двух словах - лови клики в unhandled_input, а не _input - тогда гуй будет перехватывать раньше. И да, инпут в годоте это фарш, будь готов к тому, что клики на спрайтах могут обрабатываться не в том порядке, в каком они отрисовываются.
>>575280 Там судя по всему порядок в дереве используется и всё норм, пока з-индексы не трогать. А если будет довольно сложная логика можно спастись через какой-нибудь intersect_point.
>>575280 >инпут в годоте это фарш Баттхёртное высказывание. Доки просто читать надо. Забавно видеть, как ты в первом предложении расписал, всё правильно, а во втором взбугуртнул.
>>575292 Почему для тебя это забавно? Для тебя неприемлима сама мысль, что я не фанбой годота и позволяю себе его критиковать? >>575289 Ты считаешь что там в порядке добавления в дерево? Но ведь дерево может перестроиться или оптимизироваться.
>>575308 >Почему для тебя это забавно? Потому что ты выдаёшь забавные проекции типа этой: >Для тебя неприемлима сама мысль, что Походу ты уже для себя определил, КТО я и ЧТО я. Посему не вижу смысла тебе что-то объяснять. Для нормальных-адекватных же напишу, что в годоте ивенты вызываются в произвольном порядке, в зависимости от загруженности движка задачами, поэтому нельзя пизать перекрывающие друг-друга инпуты, которые будут обрабатываться в рандомном порядке. Если изволил вывести на экран модальную гуй-форму, то изволь позаботиться о блокировке инпута в игровой сцене.
>>575405 Да понимаю я это всё, но меня тошнит от этого синтаксиса. Попытаюсь начать что-то и тошнит. Наверное я неисправимый быдлокодер. Главное, высокоуровневые сиподобные языки воспринимаются нормально, но сам си - неизменно отрицательно.
>>575405 Вот тут ты не прав. В плюсах если просто делать, не уча, очень легко выстрелить себе в ногу, и получить пачку неуловимых багов и крешей, которые заметишь только через несколько месяцев, и потом переписывать все.
>>575405 Просто делать можно на каком-нибудь питоне. На шарпе уже периодически надо прерываться и в документацию посматривать. А на С++ - ад пиздец и израиль. Удовольствие может получать только мазохист, ну или перодлик, которому не код писать надо, а с библиотеками и настройкой ебаться.
>>575400 Неужто гдскрипт НАСТОЛЬКО тормозов привносит? Просто пытаюсь сейчас кое что запилить (в стиле "поймай много объектов"), вот пока только с математикой поведения объектов разобрался, доходит до пиления этого всего, и у меня возникает вопрос, а не усрётся ли гдскрипт от просчёта этого поведения на столько игровых объектов (например от 5 до 15 тысяч)? С одной стороны, кресты мне импонируют, и я скорее их люболю. С другой стороны, монстрячиться с модулями и сопряжением срр с годотом не хочется, да и вполне логичным выглядит написать это всё средствами же ide. Но боюсь, что без плюсов оно реально может усраться (столько-то считать).
>>575542 Выглядит переусложнением читаемости на ровном месте. Что-то в стиле километровых однострочников на PowerShell. Работает, но нахрен оно надо в 2k19?
>>575559 Не, нахуй-нахуй. Я с паскаля начинал своё знакомство с миром программирования, и я был несказанно рад, когда познакомился после паскаля с крестами. Даже vb98, да простят меня предки, мне показался более вменяемым, чем паскаль (если вообще можно так о vb98 говорить). >>575557 Ну то есть оно у меня, вероятно, умрёт?
>>575560 На 15к объектах практически гарантировано. Это уже хайлоад для геймдева, там нужны другие подходы к оптимизации. Движки по сути предлагают инфраструктуру для простых игр, ну там 10-20 объектов, может быть 100 более простых.
>>575561 >Движки по сути предлагают инфраструктуру для простых игр, ну там 10-20 объектов, может быть 100 более простых. Не знаешь, не пизди. У меня в уече остров есть, где одних только деревьев около 20к инстансов, а там еще трава, камни, ветки на земле, которых еще больше. Слава Foliage Tool с динамической генерацией растительности!. Все нормально работает в 30+ фпс, но у меня пека не очень и оптимизацией я еще занимаюсь. Просто инструмент нужно правильно подбирать под задачу.
>>575560 Оно у тебя не умрет, но тормозить будет. Даже если напишешь идеальный С++ код, годотоноды все испоганят. Под еба-производительность бери какой-нибудь шустрый фреимворк и все нехватающее пиши сам или используй уеч.
Блеа... Double же в годот не привезли ещё? Я, кажется, столкнулся с проблемой. Для конечного вывода на сцену оно не надо, а вот в процессе получения конечных данных... Начальные элементы ну до 9 знаков после запятой присутствуют. Собственно, как я понимаю, мне надо сделать всё в модулях - формирование первичных значений с точностью в эти самые 7-9 знаков), передать значения в другие модуля/функции, где они будут использованы для обсчёта, а уже оттуда получать с точностью условные 5-6 знаков в сам годот для использования в построении сцены? Может я упоролся, пытаясь чуть-чуть математики заюзать в проессе?
>>575597 Сейчас бы спиздануть что-то про точность и не понимать, как работает плавающая точка на современных процессорах. На, просвещайся, мыслитель. https://habr.com/ru/post/305276/ Спойлер - плавающая точка и точность вообще не сочетаются, выбери что-то одно.
>>575597 Ну я не философ, у меня более практичные задачи. >>575595 Потому что есть готовые массивы данных, которые хочу заюзать для создания поведения, где количество знаков до 9 доходит.
>>575607 Всё, вопрос снимаю. При итерировании списка объектов получаются динамические объекты (или как там правильно) и это считается не типобезопасным. При итерировании через инт всё зелёненькое.
>>575804 Притом, что доки читать надо. Гдскриптовский if рассматривает выражение при нём (повторяю при нёооом) как nullable type (которыми все гдскриптовские типы и являются у Хуана, в дотипизированном стандарте из 3.0. вообще был только один тип nullable variant). И гдскриптовский if срабатывает когда выражение не: 1. 0 2. null 3. "" 4. Vector.ZERO И т.д.
Бампецки. Когда пишешь код правильно, нужные фичи получаются сами собой. Вот пишу вчера код, добавляющий экземпляры формочки с текстовыми полями в общий контейнер. Для М/Ж/БГ/ГК вариаций этих самых текстовых полей. И тут такое дело, при создании новой ветки дерева контейнер оказывается пустым. Я сначала бросился было дописывать костыль, чтобы при переходе в новую ветку автоматически вызывалось создание первой формочки, но внезапно понял, что мне именно пустая форма будет нужна, потому что при выводе в файл запроектированы записи без текста, но с параметрами. Держу в курсе, кароч.
Сделал случайно мигающие лампы таки. Пока не очень. Переменная PlayTime была придумана чтобы дать LOOP анимации моргания поиграть какое-то (случайное) время, про is_playing я в курсе, и потом выключить. Но я еще не придумал, как это оптимально сделать...
>>576144 >как это оптимально сделать Равномерное горение лампы не является анимацией. Анимацией является моргание. Моргание это: однократно затемнить -> засветить Таким образом ты пилишь только анимацию моргания. Затем в коде объекта-лампы пишешь функцию, которая... Знаешь, я бы даже кинул в объект лампы таймер, у которого функция при таймауте рандомно меняла бы ему интервал и запускала анимацию моргания. Только надо проверить, не вызывает ли таймер свой таймаут при изменении интервала?
>>576305 Только я тебе ещё посоветую создавать таймер кодом. Тут выше дискасс был за медленность обработки нод по путям в сцене. Я этот дискасс полностью подтверждаю. Создать ноду в коде ненамного сложнее, чем вызвать get_node(), зато ты сможешь создавать любое количество мелких объектов для различных утилитарных задач, не заморачиваясь их расстановкой по сцене. Например, вот мой велосипед для быстрого вызова окошка-сообщения:
>>576308 Ух, анончеги, чтобы получать значение нажатой кнопки удобным и привычным мне образом, мне пришлось нагородить велосипед с тремя квадратными колёсами! Есть ли способы изящнее?
Так анончики, я тут только вкатился в гд >>574505 начал пилить кое-что и кароч вопрос не по програмированию, а по интерфейсу годота. Я кароче когда запускаю Play Scene окно вылезает за пределами монитора, оч неудобно, каждый раз приходится вытягивать. Что нужно настроить чтобы нормально открывалось? Тыкал всякое в Проджект сеттингс но чёт не фиксится. Вениаминненастоящее имя