Gamedev

Ответить в тред Ответить в тред
Godot #21.01.01 Аноним # OP 11/01/21 Пнд 12:55:58 7199771
1610358958443.png 18Кб, 365x364
365x364
Добро пожаловать в тред любви, взаимопомощи и векторной графики!

Краткий гайд по вкату в движок:
1. Читать документацию.
2. Качать примеры.
3. ПРОФИТ!

Ссылки
Скачать движок: https://godotengine.org/download/ или http://store.steampowered.com/app/404790/Godot_Engine/
Теперь прямо онлайн - можно и с дивана: https://godotengine.org/online/godot.tools.html
FAQ: https://docs.godotengine.org/ru/latest/about/faq.html
Документация: https://docs.godotengine.org/ru/latest/ https://docs.godotengine.org/en/stable/
Примеры качаются прямо в движке через свой магазин в отдельной вкладке AssetLib. Там есть всё - от платформера до чата.
Игры, созданные глобальными кириллами: https://steamcommunity.com/app/404790/discussions/0/412448792354265655/
Изумительный Годот: https://github.com/Calinou/awesome-godot - подборка дополнений, модулей и минишоукейс от одного из авторов.

Годнота от анона
- Для приверженцев опенсорца существует возможность распространять проекты в незапакованном формате. Просто скачай темплейт с оф.сайта и положи экзешник/эльфешник в папку с проектом, этого достаточно. Дополнительно можешь вшить свою иконку в экзешник. После этого, запустившийся файл темплейта обнаружит рядом с собой файл project.godot и начнет грузить проект из него и из файлов, лежащих в распакованном виде в той же директории.
- В версии 3.2 появилась возможность прикреплять pck к бинарнику. Бриллиант для любителей однофайлового продукта!
- Редактор персонажей на основе makehuman: https://github.com/Lexpartizan/Go_MakeHuman_dot
- Тест-бенчмарк: https://govdot.herokuapp.com/4Anon.rar

Предыдущий: >>712330 (OP)

Архивный: https://arhivach.net/thread/622866/
Аноним 11/01/21 Пнд 18:15:52 7200722
https://youtu.be/EsTSf5dytbs
>>719944 →

Хоба, оказывается уже кто-то сделал либу для работы с SVG.
Но она давно не обновлялась, и что-то подсказывает мне что она уже не работает.
Кажись, придётся в ней копаться и фиксить...
Аноним 11/01/21 Пнд 18:56:16 7200773
>>720072
> уже кто-то сделал либу для работы с SVG
Облегчение-то какое. Я уже джва часа изучаю этот твой бленд2д и у меня башка вскипела нахуй! К такому низкоуровневому коду меня жизнь не готовила.

Аноним 11/01/21 Пнд 19:00:35 7200784
>>720077
Нас обманули, там просто РЕДАКТОР svg. их даже нельзя экспортировать вне редактора.
Всё очень запущено в общем.

Да я уже не знаю на саомм деле.
https://youtu.be/Cqp3PJQIrUc
Вот можно посмотреть тут, вроде как есть какой-то прогресс в морфинге объектов, но при этом заморфить объект под другой объект в определённой степени скорее всего не получится. Изменить текстуру не получится также легко как с помощью векторной графики. Я думал насчёт векторной графики только из за ее возможностей параметризации, тут их пока нет. Ничего готового нет.
Blend2D не умеет кажись в SVG импорт, только кодом.

Возможно вот этот умеет, но я не знаю: https://www.amanithvg.com/
сейчас еще
Аноним 11/01/21 Пнд 19:30:00 7200795
>>720078
> Нас обманули, там просто РЕДАКТОР svg.
Только хотел написать, а ты уже.
Такое ощущение, что конкурировать с флешем было запрещено. Кривые есть. Безье есть. Но используется всё это только для игровой логики, пути там, это всё. Насчёт использования их в графике - молчок. Строжайший запрет. Векторные форматы при импорте растеризуются. Графика только растровая! Ни о каком векторе даже не мечтайте.
Функции отрисовки примитивов есть, как я описал в прошлом треде. Но они все только рантаймовые, без поддержки редактором. То есть, все эти draw_line придётся прописывать вручную, не видя результата. Даже с опцией tool колбэк отрисовки не запускается. И даже если окажется, что отрисовать можно в редакторе. В этих функциях не имплементировано сглаживание, что делает их, скажем прямо, хреновым конкурентом флэшу.

Ну флэш вроде как официально умер, хуле? Сделайте замену (крик в пустоту).
Аноним 11/01/21 Пнд 19:38:00 7200806
>>720079
Потому что векторная графика может вещи мощные мутить, но её потенциал можно раскрыть только будучи аутистом.
Например - представь у тебя как в каком нибудь рогалик все предметы будут генериться не просто процедурно, а параметрически. Условно у предмета будет shape которая задаёт какие-то параметры аычисляемые типо объёма и свойств (а ля шейп лезвия даёт свойство остроты предмету) а ты потом на этот шейп можешь любой материал надеть, и у тебя получится процедурно сегнеренный ножичек. Так можно несколько частей тип рукояток и прочего нашпилить, а потом только успевай свойства материалов балансить. Это только начало.
Я хочу рогуль написать, но подобрал настолько шизоидно дотошную симуляции всего, что теперь не представляю а как это собственно аизуализировать. Не текстом же. А пилить спрайт под каждый вариант не комильфо. А пилить всратый пиксель арт тоже. В общем дело дрянное. Не зеаю как выйти из ситуации
Аноним 11/01/21 Пнд 19:43:27 7200817
>>720080
Ещё потребовалось бы масштабироаание, растягиванте шейпа, а в растре без потери качества сделать такое невозможно. Или вообще сблендивание двух шейпов.
Возможно я просто перегибаю. Видимо сначала надо сделать хоть что то с формальным отображением.
Аноним 11/01/21 Пнд 19:47:59 7200828
>>720081
> сначала надо сделать хоть что то с формальным отображением
Я тебе уже написал в прошлом треде.
Закоди свой айтем как скрипт с функцией _draw в которой параметрически задаётся рисование нужной тебе фигуры из примитивов. Работать это будет. Для прототипирования сойдёт. А там поглядим. Может сама идея такого детального рогалика окажется унылой.
Аноним 11/01/21 Пнд 19:52:21 7200839
b71.gifv 2998Кб, 538x302
538x302
Годаны, есть вопрос по сетевой составляющей.
Для своей игрульки мне нужно заебенить некоторый сетевой функци онал. Авторизация для лидерборда, передача картиночек с серва, обмен текстовыми данными между сервом и клиентом - это вроде буквально ВСЁ. Пока пилил на жаве, но вдруг ёбнуло в голову, что это наверно даже легче заебенить как веб-сервер(?), тип игруля будет просто обращаться за всем к техническому сайту и не нужно будет париться с хостом, как в случае в сервером-приложением. Я вообще правильно мыслю? хз, просто первый раз полез в сетевуху.
Аноним 11/01/21 Пнд 19:52:27 72008410
>>720082
А что вообще там за инструменты находятся? Право имею к ним допустим применять текстуре и какие-нмбкдь?
Да и по хорошему, вектор должен в рилтайме растпризироваться, иначе фпс непосредственно молниеносно вылетит в 0
Привет Новичек в треде 11/01/21 Пнд 20:30:51 72009111
dvach.jpg 17Кб, 320x180
320x180
Скачал движок, читаю документацию, может кто на мой вопрос ответить? Вот, только без занудства и оскорблений, умоляю! Я хочу свою диабло 2 сделать, с блек джеком и пиксель артом! Хватит ли движка на это? Сама диабло 2 вроде простенькая не ААА по современным меркам.
Аноним 11/01/21 Пнд 20:38:45 72009212
>>720091
Более чем хватит, можешь не сомневаться
Аноним 11/01/21 Пнд 20:42:31 72009313
>>720091
Очень простенькая, сделаешь за неделю, а с годотом вообще за 2 дня запилишь.
Аноним 11/01/21 Пнд 20:52:20 72009414
>>720093
Как думаешь! Процедурная генерация это трудно?
Учил питон когда-то, там в ткинтере была функция рандом!
Принцип такой же?
Аноним 11/01/21 Пнд 20:52:38 72009515
>>720094
ой не в ткинтере, а там импортишь рандом уже
Аноним 11/01/21 Пнд 21:31:03 72009716
>>720091
Дьябла - не простенькая и делалась большой командой топовых спецов.
Размытие при передвижении игрока (картинки) Аноним 11/01/21 Пнд 21:38:35 72009917
Совсем недавно начал делать 2D игру в Годоте.

Заметил, что при передвижении картинки через move_and_slide картинка начинает слегка блюриться и оставляет очень короткий след чтоли.
Снял галочку с опции фильтра в импорте картинки (png), в опциях проекта выставил Window -> Stretch -> Mode -> 2D, след при передвижении всё также остаётся.

Когда картинка не передвигается - выглядит чётко. Может кто-то знает в чём беда?
Аноним 11/01/21 Пнд 21:41:01 72010118
Аноним 11/01/21 Пнд 21:43:02 72010219
>>720099
> Может кто-то знает в чём беда?
Код показывай. Экстрасенсы в отпуске.
Аноним 11/01/21 Пнд 21:44:51 72010420
>>720084
> Право имею к ним допустим применять текстуре и какие-нмбкдь?
Кстати, возможно будет гораздо эффективнее делать параметрическую векторную графику на шейдерах!
Аноним 11/01/21 Пнд 21:49:20 72010521
image.png 47Кб, 967x277
967x277
>>720102
Вот код передвижения
Аноним 11/01/21 Пнд 21:53:16 72010622
>>720105
Что за деление пополам в 10 строке? Что это тебе предположительно должно дать? Учитывая, что в 11 строке полученный вектор нормализуется, это твоё деления я уверен работает не так, как ты предполагаешь.
Аноним 11/01/21 Пнд 22:01:24 72010923
>>720106
Да, случайно взял деление на 2 с проекта с изометрическим видом. Спасибо.
Аноним 11/01/21 Пнд 22:09:27 72011224
1610392166855.png 59Кб, 704x402
704x402
>>720109
Вот тебе для шпаргалки код моего компонента топдаун движения. С коээфициентами разгона и торможения. Параметр direction аналогичен твоему, компонент работает с указанным извне KinematicBody2D. Ну и на стейтмашину внимания не обращай, тебе полезны строки 11-16
Аноним 11/01/21 Пнд 23:24:48 72012325
Аноним 12/01/21 Втр 05:35:25 72016326
>>720104
Разве что на компьют шейдерах, так как опять же требуется результат один раз получить в виде картинки а потом уже рендерить его пересчитывая только если он изменился.

У тебя есть какие-то дополнительные мысли на этот счёт?
Аноним 12/01/21 Втр 08:10:42 72017727
Аноним 12/01/21 Втр 08:27:18 72017928
>>720163
> У тебя есть какие-то дополнительные мысли на этот счёт?
Да! Стайлбоксы!
Есть безумная идея рисовать векторную графику на предварительно настроенных стайлбоксах через draw_stylebox()
Аноним 12/01/21 Втр 08:31:13 72018029
>>720179
УХХХ
Не, мне кажется стайлбоксы не настоллько гибкие, но может я ошибаюсь?

Пока что я лучше отвлекусь на логику внутри игры а не на визуализацию. Иначе у меня фляга засвистит (я уже порядочное время эти темы изучаю просто).

Но если какие-то мысли будут, излагайте.
Аноним 12/01/21 Втр 08:44:49 72018130
>>720180
> стайлбоксы не настолько гибкие, но может я ошибаюсь?
В них хотя бы сглаживание есть.
Но ни они, ни чистая отрисовка не имеют возможности рисовать кривые произвольной формы.
Аноним 12/01/21 Втр 10:17:11 72020131
Аноним 12/01/21 Втр 10:18:27 72020232
Аноним 12/01/21 Втр 10:25:05 72020433
>>720201
ВЕСЬМА мощно.
Только значем делать свою Ноиту? нНужно придумать что-то новое.
Аноним 12/01/21 Втр 12:25:19 72022634
>>720201
Тут вопрос как это работает. Если там GPU то как обратно на процессор данные передаются? А если не передаются, то игру из этого не сделать - откуда персонаж узнает, что там где он стоит уже пол провалился или стена появилась.
Аноним 12/01/21 Втр 18:35:26 72032135
Что-то посмотрел уроки, а там никакого C++ даже не видно. Там вообще можно на крестах скрипты писать? Есть какие-то руководства на русском?
Аноним 12/01/21 Втр 20:39:21 72035236
Аноним 12/01/21 Втр 22:57:03 72036737
>>720201
Мощный видос, как та прога, не помню название, опенсорсная, с симуляцией всех этих веществ.
Одно меня смущает: наши программисты непуганые, без задней мыслей палят в видосе гору перацкого софта на десятки тыщ.
Аноним 12/01/21 Втр 23:03:49 72036938
16103589596880.png 18Кб, 365x364
365x364
l2afYJYutY.mp4 2467Кб, 1024x600, 00:00:36
1024x600
>>720367
>без задней мыслей палят в видосе гору перацкого софта на десятки тыщ.

о каком именно софте идет речь?
Аноним 12/01/21 Втр 23:16:59 72037239
>>720369
Аида экстрим, например.
Аноним 12/01/21 Втр 23:25:04 72037540
Аноним 12/01/21 Втр 23:33:38 72037941
>>720375
Рикаминдую завести в дуалбут какую-нибудь убунту и в ней пилить видосы. Чтобы, стало быть, никто не доебался. А там глядишь привыкнешь и пошлёшь нахуй венду.

Аноним 12/01/21 Втр 23:40:04 72038442
>>720379
Можно просто чистого пользователя на винде завести (у меня такой для стриминга)
Аноним 13/01/21 Срд 00:17:28 72038743
1610486246794.png 131Кб, 340x255
340x255
>>720384
Не сочтите за политоту, но если уважаемый барен захочет доебаться, он до лицензии на венду, представленную на видео доебётся, а дальше уж опергруппа изымет пека и тщательно проанализирует хард.

Не, ну потом-то ты конечно 250 тыщ за моральный вред отсудишь (75 тыщ после вычета судебных издержек и пшёл вон, холоп), как пикрелейтед, но годы и нервы тебе уже никто не вернёт.
Аноним 13/01/21 Срд 12:27:01 72044244
>>720201
Что в видосе-то было?
Аноним 13/01/21 Срд 12:46:00 72044845
Аноним 13/01/21 Срд 16:33:14 72052246
Как на годоте сделать клиент-серверную архитектуру?
Аноним 13/01/21 Срд 17:01:26 72053147
>>720522
Как в доках написано. Мне тебе доки копипастить в тред?
Аноним 13/01/21 Срд 17:03:56 72053548
>>720531
Да я уже нашёл, извиняюсь что потревожил
Аноним 13/01/21 Срд 19:02:45 72054749
изображение.png 524Кб, 1287x618
1287x618
Привет, анон. В Годо можно сделать смесь скелетной анимации и скелетной физики? То есть, чтобы физическое воздействие на анимированый скелет влияло на его движения, но чтобы движение всё равно потом стремилось вернуться в русло анимации?

В голову лезет всякая кустарщина по типу двух скелетов, один невидимый и анимированый, другой видимый и с физикой, каждая кость второго прикреплена жесткой пружиной с трением к такой же кости первого. Но это что-то уж совсем костыли. Есть ли способ лучше?

Пример аналогичной фичи в уе: https://docs.unrealengine.com/en-US/AnimatingObjects/SkeletalMeshAnimation/PhysicallyDrivenAnimation/index.html
Аноним 13/01/21 Срд 19:33:56 72055450
>>720547
Можно. Создаёшь блендспейс 1D, в котором ограничиваешь нужные тебе кости, при выкрутке этого бледспейса в положение с ограничением, от анимации отключатся эти кости и можешь делать с ними любые свои дела.

Соответственно, гуглить тебе надо по блендспейсам, как ими пользоваться.
Аноним 13/01/21 Срд 20:02:50 72056851
>>720554
Я так понял, что ты говоришь просто об отключении кости от анимации и подключении её к физике при определённых условиях. Это не совсем то, что я хочу, хотя это тоже полезно.

Вот тут лучше показано, чего я пытаюсь достичь: https://youtu.be/2MPE620rKy4

То есть, мне важно, чтобы анимация не прекращалась, но я мог на неё в некоторой степени воздействовать извне. То есть, условно, скелет машет рукой, но если на её пути есть препятствие, рука как тру физическое тело в него упирается (может, даже немного отскакивает, колышется и т.д.).
Или если в скелета прилетает что-то, то кости, куда это что-то попало, как-то на это реагируют, смещаются немного, а потом возвращаются на место.
Ну и, самое главное, чтобы было и обратное взаимодействие. То есть, если скелет выпрямил руку, он оттолкнул то, что перед ним, или оттолкнулся сам, в зависимости от того, что перед ним.
Аноним 13/01/21 Срд 21:10:00 72058352
Аноним 14/01/21 Чтв 16:42:19 72069053
>>720583
Это вообще не ответ на мой вопрос. Я же сказал, что мне нужен не блендинг между двумя анимациями, а блендинг между физикой и анимацией, причём работающий и в обратную сторону (анимация может порождать физическое воздействие на окружающие объекты).
Аноним 14/01/21 Чтв 16:46:23 72069254
>>720568
Это называется Inverse Kinematic, да такое возможно но работы будет много.
> если скелет выпрямил руку, он оттолкнул то, что перед ним, или оттолкнулся сам, в зависимости от того, что перед ним.
Ты вообще много таких игр видел? А сделанных одиночками?
Аноним 14/01/21 Чтв 16:49:33 72069355
>>720692
Ну так я и не хочу сам это делать. В уе есть такая фича, я спрашиваю, есть ли она в годо. Мне она нужна, а уе из-за неё одной я не хочу использовать.

Inverse Kinematic я смотрел немного, и это не совсем то, что мне надо. Мне нужна именно динамика, то есть физическое взаимодействие с миром, а не просто подстройка положения костей под определенные ограничения.
Аноним 14/01/21 Чтв 16:57:01 72069556
>>720693
Нет, без "сам делать" нет.
Аноним 14/01/21 Чтв 16:57:46 72069657
Аноним 15/01/21 Птн 01:56:14 72083158
Аноним 16/01/21 Суб 19:06:56 72147959
Редактор-кун, ты жив?
А то не слышно в последнее время
Аноним 16/01/21 Суб 19:40:26 72149560
>>721479
Начался трудовой год, всю неделю запары жоские на работке были. Вообще не притронулся к коду. Но напоминаю, не притронулся к коду демо-примера, само ядро редактора готово давно, еще в декабре. Могу хоть щас выложить.
Щас кумёкаю над темой ТВГ. Буду участвовать. Если всё получится, то моя ТВГ-игра и будет этим примером использования редактора локаций. Код выложу. Хуле там.
Аноним 16/01/21 Суб 22:45:29 72161461
ребят, я конечно понимаю что мне нужно видео карту обновить, но может есть какой то вариант потыкать 4 версию без вулкана?
Аноним 16/01/21 Суб 23:49:27 72162862
1610830166422.png 52Кб, 748x298
748x298
>>721614
Насколько я знаю, в четвёрке остаётся ГЛЕС2. Как раз для встроек.

Ребят, тут реальная проблем нарисовалась. Пикрелейтед. Если ускорение acceleration сильно меньше, чем замедление deceleration, то при быстром тыканьи клавиш управления, если все клавиши отпущены, срабатывает логика замедления и персонаж не разгоняется до полной скорости. Надеюсь внятно описал проблему. Что делать? Как забороть? Вводить койот-тайм на клавиши? Это же пиздец будет.
Аноним 17/01/21 Вск 00:42:35 72164463
>>721495
Не, не, просто проверял, живой ты или не очень. Если живой - это прекрасно.
Только это, можешь приложить пример пустой карты с парой тайлов на обоих слоях? Чтобы не было бесконечных ЧЯДНТ.
Аноним 17/01/21 Вск 16:34:54 72176764
Сегодня разбирал код этой своей технодемки, и подумал, а для чего мне переменная FRICTION, если у меня всё равно нет плавных движений.
Оказалось, что в состоянии IDLE английским по синему прописано motion.x = 0.
Иногда это может доставить веселья, даже если вы не погромист.
Аноним 17/01/21 Вск 19:07:27 72180965
image.png 36Кб, 697x316
697x316
Аноним 17/01/21 Вск 19:50:13 72182566
image.png 10Кб, 260x225
260x225
>>721809
А, всё, отбой, пересекается с гуями.
Аноним 18/01/21 Пнд 09:51:17 72195767
1610952676590.png 27Кб, 455x538
455x538
Я походу единственный, кто юзает draw_... функции. Но всё же спрошу. Если рисовать полилинию, которая согнута острыми углами, то в этих острых углах у неё неверно рассчитывается толщина. Как побороть проблем? Пикрелейтед.
Гугл говорит, типа, да проблема есть. Решений нет. Придётся рисовать отдельными сегментами штоле?
Аноним 18/01/21 Пнд 12:20:23 72198968
https://youtu.be/1mI04gPhd3E?t=216[РАСКРЫТЬ][РАСКРЫТЬ]
Объясните, что он говорит про процессы с этой 3:36 (таймер поставил). Вроде понял, но чет не до конца въехал, хотелось бы объяснение для тупых на великом и могучем
Аноним 18/01/21 Пнд 12:34:11 72199369
>>721989
Там субтитры с потраченным гуглопереводом. Рикаминдую!
Аноним 18/01/21 Пнд 12:40:19 72199570
>>721989
Ну а по сабжу: физический движок (хоть буллет, хоть собственный, хоть если ты туда ньютон вконпелируешь) обладает своими фреймами, которые считаются отдельно и фиксированно, графический фпс у тебя может быть 60, 30, с проп... просадками до 3, но физический фпс всегда маслает по таймеру одинаково, как ты выставил в настройках (по дефолту 60 ФПС). Поэтому для обработки физических параметров существует отдельный колбэк physics_process (в других движках fixed_update, например), в котором настоятельно рекомендуется обращаться к физическим параметрам физической симуляции.
Аноним 18/01/21 Пнд 12:47:25 72199871
>>721995
Ну и дальше, поскольку KinematicBody это не совсем физика, то есть, упрощённая физика, то ему не обязательно юзать физик_процесс, и он юзает просто _процесс, типа это помогает с проблемами при дрожании. Далее мой комментарий от себя: Например move_and_slide внутри себя юзает дельту физического сервера, которую берёт прямо на физическом сервере, так что неважно, откуда она будет вызвана. А вот move_and_collide уже дельту сама не берёт и её вызов из обычного _процесс может быть неточным.
Аноним 18/01/21 Пнд 13:42:32 72200772
>>721995
>>721998
Так-с, стало понятнее. Большое спасибо
Аноним 18/01/21 Пнд 17:30:22 72207373
image.png 40Кб, 446x235
446x235
>>719977 (OP)
Блять, сколько видео с хитбоксами не нахожу - везде покадровый дрочь с этими прямоугольниками. Нет способа с покадровым хитбоксом, типа маской, повторяющей форму удара, которую можно было бы закинуть, и она автоматом подгрузилась? А то вот так вот дрочить и все равно получать неровности.... Чай игра с пикселями, а не йоба-3д с дохулиард полигонами
Аноним 18/01/21 Пнд 17:51:46 72208274
>>722073
Сделай двумерный массив (матрицу) хитбоксов, выключенных по умолчанию и в анимации включай те, которые соответствуют лезвию клинка в этом кадре, а остальные отключай. За производительность не скажу. Т.к. это пул, то производительность не должна просесть. Но проверяй сам.
Обращение к сгенерированным узлам в любой момент Аноним 21/01/21 Чтв 00:18:25 72272875
image.png 30Кб, 509x210
509x210
Сделал простенький скрипт рандомной генерации комнат и расположения дверей в них. Двери спавню в цикле и сразу же расставляю в нужные места, впоследствии с этими дверьми мне нужно в любой момент взаимодействовать (активировать анимацию закрытия когда в комнату заходит персонаж).

Как я понимаю с кодом на скриншоте - такое сделать у меня не получится. Тогда как вызывать узлы (сцены) и при этом иметь возможность в любой момент (а не только при создании) к ним обращаться?
Аноним 21/01/21 Чтв 08:53:19 72275376
>>722728
У тебя грид содержит целочисленные значения? Заведи там словарики вида {"index" : 1, "object" : null}
Тогда, обращаясь к гриду, ты будешь делать так if grid[y2][x2].index = 1: grid[y2][x2].object = DEFAULTDOOR.instance()
Аноним 21/01/21 Чтв 08:58:39 72275577
>>722728
Можно сделать вариант на чайлдах. Тогда надо в код двери добавить имя класса, например class_name DefaultDoor после чего в коде парента, который у тебя в коде указан, можно делать такой код for child in get_children(): if child is DefaultDoor: do_something_with_door() но этот код хорош только для массовой работы со всеми дверьми. Вызывать его для обращения к конкретной двери - тупо, плохо, нирикаминдую.
Аноним 21/01/21 Чтв 10:13:53 72276778
>>722753
Не дописал очевидное. Теперь, когда в гриде словарик со ссылками на инстансы, ты в любом месте можешь по координатам обратиться к ячейке грида, и работать с инстансом в поле object: grid[3][7].object.open = true
Аноним 21/01/21 Чтв 10:49:23 72277479
>>722767
Понял идею, спасибо большое
Аноним 21/01/21 Чтв 14:20:24 72281280
Годаны, что не так? Если я написал класс, то при создании объекта класса надо ведь делать .new() так? Я пишу:
extends Control
var my_obj: MyClass
func _ready():
my_obj = MyClass.new()

И теоретически теперь всегда переменная my_obj должна что-то значить. Ну уж точно не null. Однако почему-то она null. В смысле, это буквально весь код (только имена другие), остальное я спрятал под комменты. Но даже если дальше в _ready обратиться к my_obj, то он всё равно будет null. Что за неведомое проклятье? Куда искать? Где копать?
Аноним 21/01/21 Чтв 14:47:04 72281781
>>722812
> Однако почему-то она null.
Сам дебаггер это говорит фразой null reference exception или это ты так предположил, потому что класс не работает?
Если второе, то опять же если ты наследуешься от потомков Node, одного .new() мало. Недо новосозданную ноду ещё в дерево добавить. Как правило в чайлды самому создающему:
var my_obj: MyClass
func _ready():
my_obj = MyClass.new()
add_child(my_obj)
Аноним 21/01/21 Чтв 15:01:54 72282082
>>722817
>Сам дебаггер это говорит фразой null reference exception или это ты так предположил
print(my_obj) говорит null. Принту я верю.
>если ты наследуешься от потомков Node
Тащемта нет, нода после создания уже будет не null. Но в моём случае класс наследуется от Resource.
Но таки да, я тупой. Ошибку сделал там, где вообще не ожидал. И долго не мог её увидеть или как-то отловить. Не поставил нижнее подчёркивание перед ready, вот оно и не вызывалось.
Аноним 21/01/21 Чтв 21:49:49 72288783
>>721957
Да, декомпозиция наше всё
Аноним 21/01/21 Чтв 22:11:12 72289184
>>722887
Я так ебашу. Не баг, а фича. И пох. Ну, может на второй неделе заморочусь.
Аноним 22/01/21 Птн 20:20:14 72306385
>>719977 (OP)
Зачем мне использовать load если я могу использовать preload?
Нихуя не понял
Аноним 22/01/21 Птн 22:41:49 72310686
>>723063
Лоад грузит в момент вызова. Прелоад грузит при запуске приложения.
В зависимости от ситуации (объём ресурсов, тяжесть инициализирующих эти ресурсы скриптов, наличие SSD в системе), выгоднее либо пропукать прелоадами все будущие объекты, чтобы фризы от их загрузки в момент создания не мешали играть, либо наоборот, быстро загрузить уровень и пропукивать по мере надобности лоадами.

Аноним 23/01/21 Суб 01:34:40 72321287
>>723106
Понял, спасибо. Значит в нетребовательных играх особой разницы нет
Аноним 23/01/21 Суб 14:53:33 72328388
>>723106
>фризы от их загрузки
этот ваш годот не умеет в многопоточность или че?
Аноним 23/01/21 Суб 15:12:30 72328789
1611403949003.png 124Кб, 300x241
300x241
>>723283
Годот-то умеет. Мы не умеем!
Аноним 23/01/21 Суб 17:29:22 72331290
Меня годот отталкивает своим GDScript'ом. Хороший движок должен требовать по минимуму специфических знаний, а знание GDScript - именно специфическое. Я уже и так слишком много всего знаю, чтобы забивать бошку ещё одним языком, даже супер-пупер клёвого. Внедрение C# - это их шаг в правильном направлении, но всё же пусть ещё добавят JS или Lua, тогда посмотрим.
Аноним 23/01/21 Суб 18:01:46 72332891
Аноним 23/01/21 Суб 19:13:06 72334492
> $13,644
> PER MONTH
Ебануться, больше чем по ляму рублей в месяц только с патреона собирает. Надо будет попробовать, чё такое.
Аноним 23/01/21 Суб 19:15:01 72334693
>>723312
Lua уже есть. И афтор прям нахваливает. Дерзай.
Тока там специфичные знания не в гдскрипте. Без знания объектного дерева движка ты и на луа немного накодишь. АПИ учить всё равно придётся.
А объектное дерево будут переделывать в четвёрке. Все затаились в ожидании. Кто не успел выучить и не начинает учить. Кто выучил (я) не торопится углублять знания.
Аноним 23/01/21 Суб 19:29:52 72335194
Аноним 23/01/21 Суб 21:52:32 72337695
>>723344
Так там зарплаты минимум 6 человек получает на фуллтайме. Это копейки.
Аноним 23/01/21 Суб 23:24:23 72340196
1611433461986.png 51Кб, 646x441
646x441
В целях процедурной генерации пришлось только что переписать на гдскрипт функцию shuffle из исходников.
Всё правильно свелосипедил? Или я проглядел возможность перемешивать массивы с фиксированным сидом?
Аноним 24/01/21 Вск 10:37:50 72343897
>>723401
Первое, что бросается в глаза: зачем использовать конструкцию
> if n < 2: return
когда можно написать
> if n > 1:
и херачить свои циклы?
больше одного ретурна в функции вообще редко оправдано и часто признак новичка.
кто-то набыдлокодил, а ты бездумно обезьянничаешь
Аноним 24/01/21 Вск 10:54:16 72343998
>>723438
А в данном случае и так один ретурн, кек.
Вообще, condition nesting vs guard clauses - холивар, идущий уже полвека. Моё мнение, что проверки с ретурном в начале функции допустимы. А вот в середине будь добр не выходи.
Аноним 24/01/21 Вск 12:08:35 72344099
>>723346
Какая нахуй четверка? Я только учить начал вот же бл...
Аноним 24/01/21 Вск 13:18:12 723445100
1611483491676.png 31Кб, 626x231
626x231
Аноним 24/01/21 Вск 13:18:57 723446101
>>723445
Ой, n от старого кода осталась. Удолил.
Аноним 24/01/21 Вск 13:19:50 723447102
>>723445
Ретурнов нет. Ибо входящий массив приходит по ссылке.
Аноним 24/01/21 Вск 19:31:32 723509103
>>719977 (OP)
сука рот ебал
пчоему я могу написать if x != null, но не могу написать if x = null и получаю аНиКсПеКтЕд АсСиГн?!
Аноним 24/01/21 Вск 20:10:23 723517104
>>723509
Ты школьник? Зачем тебе годот?
Аноним 24/01/21 Вск 21:22:38 723538105
Аноним 25/01/21 Пнд 01:03:25 723585106
>>723517
Нет. Хочу разбогатеть, заиметь свою игровую студию. Вопросы?

>>723538
спасибо
Аноним 25/01/21 Пнд 02:26:59 723600107
Вот же, а в AStar не задать вес ребра, придется качать питонячью либу.
Аноним 25/01/21 Пнд 09:18:08 723629108
>>723600
Вес ребра это не вес ли обеих его вершин? Средний? Минимальный? Я не в курсе, но считается одной строчкой кода. Веса вершин есть. Просто берёшь без задней мысли их и юзаешь.
Аноним 25/01/21 Пнд 13:31:47 723671109
1493962854745.png 12Кб, 506x242
506x242
1570439101285.png 1Кб, 425x216
425x216
>>723629
>Вес ребра это не вес ли обеих его вершин?
Вес ребра это вес ребра, но функция connect_points вес рёбер не принимает.
(Думаю очевидно, что не во всех играх нужна просто цена клетки - например, если зайти из клетки леса в клетку воды стоит не столько же, сколько выйти из воды).
Пока что выглядит так, что мне надо отнаследоваться от AStar, переопределить _compute_cost и уже в ней считать ребра самому для соседних клеток. Судя по всему, туда же надо будет совать всякие рандомизаторы и подгонки, помогающие спрямлять путь (по дефолту он не очень в самом алгоритме AStar)
Аноним 25/01/21 Пнд 13:43:08 723674110
>>723671
> Вес ребра это вес ребра
Так неохота матчасть гуглить.
Аноним 25/01/21 Пнд 13:49:54 723676111
1611571793977.png 26Кб, 599x380
599x380
>>723671
> мне надо отнаследоваться от AStar, переопределить _compute_cost и уже в ней считать ребра самому
Ну как бы да. Пикрелейтед.
Аноним 25/01/21 Пнд 14:40:53 723685112
1496596578215.png 193Кб, 1920x1080
1920x1080
>>723676
Не идеально, но уже получше.
Аноним 25/01/21 Пнд 14:44:39 723687113
>>723685
Эм, крос в 24 строке это не кросспродукт? Кажется он в движке есть. Внутри на сях посчитаный.
Аноним 25/01/21 Пнд 15:05:18 723693114
>>723687
Это кросс, но считать его не от чего - сначала тогда придется конструировать новые векторы. (Тут вообще много нехорошего, например координаты сначала упаковываются в айди узлов, чтобы уйти в api, потом распаковываются).
Оптимизация пока не интересует, это ж для ТВГ. Потом хоть на сях переписать.
Аноним 25/01/21 Пнд 16:20:35 723709115
>>723693
Что значит "не от чего" ты по факту делаешь current.cross(goal) только велосипедом на несколько строк.
Аноним 25/01/21 Пнд 21:00:33 723745116
а в движке ентом можно списки ui-ные ебашить по быстрому?
Аноним 25/01/21 Пнд 23:13:57 723770117
>>723745
Не совсем понел шо ты имеешь ввиду? Приведи пример на своём языке программирования, а я покажу, как это у нас зделоть.
Аноним 26/01/21 Втр 10:38:54 723828118
>>723770
ну вот в нативном андроиде есть простые списки, как в телефонном справочнике, или плитка в галерее картинок.
Вопрос в том, есть ли возможности запиливать такие списки быстро, не рисовать самому. Мне нужен например список уровней в моей головоломке
Аноним 26/01/21 Втр 10:54:39 723829119
1611647678704.png 30Кб, 771x516
771x516
>>723828
Есть как минимум два варианта:
1) специальный объект-список, в который без задней мысли пихаешь айтемы, назначаешь им текст, иконку, объект аналогичен по функционалу классическим лист-вью-ле-виртуаль.
2) ноды-контейнеры, автоматически выравнивающие своих потомков. В такой контейнер ты можешь без задней мысли накидать кнопок, которые представляют собой запускаемый уровень. Я предпочел этот способ на нынешнем ТВГ.
Аноним 26/01/21 Втр 10:59:43 723831120
>>723829
а если у меня 200 уровней, 200 нод в памяти будет?
Аноним 26/01/21 Втр 11:04:07 723832121
>>723831
Слушай, без обид, но этот вопрос очень тупой. Мой тебе дружеский совет - подтяни матчасть. В любой среде программирования, если тебе не хватает памяти - ты делаешь постраничный вывод инфы. В переложении на мобильные игры - это наличие двух кнопок "вперед"/"назад" и фиксированное количество кнопок-уровней. Выведены с 1го по 20й. Нажимаешь вперёд - выводятся с 21го по 40й. Это знать надо! Это классика, блять!
Аноним 26/01/21 Втр 15:26:40 723856122
>>723832
это ты матчать подтяни, умник. В нормальных фреймворках ноды переиспользуются. Дохуя в своем айфоне или андроиде постраничного вывода в списках видел как на сайтах из 2000?
Аноним 26/01/21 Втр 15:49:24 723858123
>>723856
Переиспользуй ноды. Кнопок всё ещё двадцать, а названия меняются. Это и имелось ввиду, умник.
Аноним 26/01/21 Втр 15:52:52 723860124
>>723346
>А объектное дерево будут переделывать в четвёрке.

Как и в какую сторону? даже интересно стало
Аноним 26/01/21 Втр 16:01:47 723863125
Аноним 26/01/21 Втр 16:14:00 723866126
>>723858
чтобы это выглядело как говно из двухтысячных, нет спасибо
готового listview нет, все понятно
Аноним 26/01/21 Втр 23:15:53 723932127
>>723866
> все понятно
Ага, пойди похвастайся победой в срачетреде.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов