Elemental Empire
Переработал нижнюю панель и вкладку строительства (добавил туда отслеживание ресурсов)
Переработал нижнюю панель и вкладку строительства (добавил туда отслеживание ресурсов)
Вот все вечно хотят войти в айти, два года назад я начинал этот паблик, расписывал что пригодится для входа и тд, ну и вот вошел я год назад, не тестером, на нормальную должность Technical VFX Artist, все расписывал же, как движок учил, где факапил и тд. Но вот я в должности и уже почти год, стал я счастливее? Стал спокойнее? Нихуя, тут кто-то скажет, типа так ты дно и ничего не можешь.
Наша с братом игра на Godot, на 19 месте в TON League и она даже денег приносит и в целом уже можно не работать и заниматься своей игрой, но с натягом. 14 лет я изучал, пробовал, чтобы оказаться с натягом!! И поверьте этот натяг, он не изичный, мы жопу рвали когда её в яндексе или на конгрегейте выпускали. Вас наверное интересуют цифры, а не эмоции, ну это порядка 3000$ в месяц, на троих - налог) и минус сервера, и минус художник.
Но я пиздец рад и на работе релиз и тут, вроде ок. Я очень рад короче, что я к 41 году, буду получать 300$ и это уже будет неплохо, вот короче и думайте, нужен вам геймдев или нет.
Ещё раз повторюсь, моя история, довольно успешная так-то пздц) 95% просто не появляются даже никогда) И хз что с моей работой дальше ещё будет, вот таки дела малята)
Всем удачи, спасибо за внимание)
p.s. Для сильно унывающих это мы делали вне работы, мне платят ещё и зп)
p.p.s. тупо может звучит, я хочу купить дом в глуши и растить что вырастет)
Но сначала завезу еды на год, но простой) и за год выйду на самообеспечение)
А еще получит ачивку в профиль. Рискнете?
Какой самый быстрый способ доступа к общему корню дерева сцен? Давайте потестируем...
Не самое популярное место для тем по Godot, но видос снимать лень, а поделиться инфой хочется. Тем более это такой олдскул, встречающийся, например, на офф. сайте php или на разных форумах, где в сообщениях десятилетней+ давности люди тестили скорость тех или иных команд и именно так определялось, чем лучше пользоваться.
В общем, задался я вопросом доступа к глобальному корню, начал тестить 4 известных мне способа это сделать и получил неожиданный результат. Выполним сначала прогон с вызовами всех четырёх вариантов, закончим одиночными. Для теста использовалась пустая 2D сцена с кнопкой и скриптом на корне сцены, выглядит вот так.
Структура сцены, показан сигнал на кнопке
Конечно, такой цикл следует оборачивать в функцию и вызывать её, а не тупо копипастить весь цикл, но... Я так и сделал и это замедлило общую скорость в 2 раза! Хотя соотношение результатов не изменилось, поэтому вот финальный вариант нашего тестового скрипта.
Как бы вы написали такой код?
Строка №12 написана с нарушение стайлгайда, там не рекомендуется использовать однострочную запись, но оказалось, что так цикл работает незначительно быстрее...
После первых прогонов выяснилось, что фукция, вызываемая первой, почти всегда работает медленнее, хотя изредка бывает так, что замедления не происходит. Поэтому пришлось прогнать в разных вариантах порядка. Тут как раз помогла обёртка в лямбду.
Не знаю, как бы я выкручивался без функций первого класса, добавленных в Godot 4.
Количество шагов цикла выбрано в 100 000, т.к. это достаточно, чтобы результаты были заметными, с учётом замедления от лямбда функций. При большем шаге разлёт в скорости каждого из вариантов сглаживается, эффект замедления первого test становится незаметен, а это нам не нужно. В самом конце (на скриншоте не видно) я повторил порядок 1,2,3,4, чтобы сравнить его с самой первой группой. Прогнав несколько раз, стало понятно, что во всех вызовах, кроме самого первого, порядок вызовов не влияет на результат. Отсюда, достаточно вызвать 3 одинаковых группы и отбросить результаты в первой четвёрке.
Финальный вариант группового теста
Результаты:
1 место - f1 = 0.032 - 0.037
2 место = 3 место - f3 и f4 = 0.033 - 0.050
4 место - f2 = 0.038 - 0.063
Стабильно хуже всех работает get_tree().root. Это прямой доступ к полю root объекта SceneTree, возвращаемого методом get_tree(). Видимо из-за итерации по объекту, которой, видимо, не происходит в таком объёме при других вариантах. Между остальными тремя различие ситуативно, поэтому я бы просто везде использовал $/root.
Одиночный тест я решил не проводить из-за всё того же замедления первого вызова. Провёл сдвоенный как на скриншоте и так для каждого из четырёх.
f1 = 0.034
f2 = 0.040
f3 = 0.035
f4 = 0.035
В среднем, f1 и здесь оказался быстрее. Спорный результат у f3 и f4. Понятно, что одно является сокращённой записью (не люблю слово синтаксический сахар) другого. Повторение в строенном варианте тоже ничего не дело. Вроде как действительно различия нет. Но, есть ещё один вариант тестирования, приближенный к реальным кейсам, т.к. связан он с записью результата любого из четырёх методов в переменную и доступа к этой переменной.
Изменён код на строке 13, и в функции, принимающей сигнал кнопки.
Результат ожидаемо одинаковый в пределах погрешности измерений и случайного разброса: от 0.004 до 0.011, что кратно быстрее доступа к корню через любой из четырёх методов. Отсюда можно сделать вывод, что в скриптах Godot 4, где нужен доступ к глобальному корню, стоит создать переменную с помощью синтаксиса вроде "@onready var root = get_tree().get_root()", т.к. такой код будет наиболее быстрым, и использовать уже её. Применение $/root по месту удобно и хорошо читаемо, но работать будет незначительно медленнее. Насколько это будет заметно в проекте? Зависит от частоты вызовов, но скорее всего незаметно. Однако, задача этой статьи - найти наиболее быстрый способ доступа и она выполнена, это вариант f1 записанный в переменную.
Сделано на Godot
4-х экономическая стратегия о волшебниках в космосе
В игре вам предстоит управлять колониями людей (волшебников) которые прибыли в новый для них мир
В игре представлены планеты разбросанные по системе, каждая из планет принадлежит одной из стихий (вода, огонь, земля, воздух), от стихии зависят различные бонусы доступные на этой планете
Стройте здания в доступных клетках, но помните что пространство ограничено. Производите еду для людей, добывайте минералы, производите из них другие предметы
Стройте порталы что бы отправить туда своих людей и развивать другое поселение
Пересылайте необходимые ресурсы между планетами
Призывайте духов для совершения нападения на других игроков (или для защиты)
Тратьте очки исследований что бы открыть новые здания и бонусы
Управляйте активными бонусами планеты - свободных слота 3, но вы можете менять их в любое время
Долой рабочие названия и ранний доступ!
Игра уходит в релиз, а я - в заслуженный отпуск. Правда заслужил!
Последние полтора года я пахал за целую команду...
Пост без рейтинга, просто я осознаю, что очередной рубеж пройден, и... шампанское не открываю, а вот выпить кофейку под шум поезда - очень даже отличная идея.
Отправляюсь в места, где родился и вырос, в старый родительский дом в деревне очень далеко от места, где живу.
В следующей игре хочу испытать себя на совершенно новом качественном уровне разработки мобильных игр.
Спасибо всем, кто верил! Тем, кто не верил - тоже спасибо! Все вы, независимо от позиции, классные и живые, я старался общаться со всеми в комментариях, в отзывах к играм, но не всегда успевал сказать каждому самое главное - вы прекрасны в своей уникальности!
Всех обнимаю!
Всем привет, давно ничего не постил, вечно некогда)
Странное название, но я хз как это назвать ещё, но вот пример, это по работе делал анимашку пока идет поиск противника, про партиклы тут вроде особо нечего рассказывать, уже и так эти моменты пояснял, а вот фон на заднем плане, раньше не знал как сделать подобное, долго голову ломал)) Но нашел решение)
Ну в целом, мне кажется можно проще решение найти, но не хочется покадровую анимацию, не знаю, думаю ещё пока, но в целом этот задник сделан шейдером. И кому интересно я записал видос, как подобного плана делать эффекты, можно и лучше сделать конечно, я ещё только учусь, но базовой концепцией поделюсь) Может пригодится кому)
Может не все хорошо получилось, вернусь ещё к этой теме, можно и партиклами добиться примерно такого-же эффекта. Посмотрим ещё.
Спасибо, за внимание.
Взять с собой побольше вкусняшек, запасное колесо и знак аварийной остановки. А что сделать еще — посмотрите в нашем чек-листе. Бонусом — маршруты для отдыха, которые можно проехать даже в плохую погоду.
: Для начинающих разработчиков которые совсем не разбираются в программировании мы бы посоветовал Pocket Code, а для тех кто уже знаком с каким либо языком можно использовать и Godot. Основными плюсами Godot является плавность и возможность создавать 3d игры, а плюсы Pocket Code это простота в использовании. В итоге Godot лучше Pocket Code.