ozkriff.games 🦀
221 subscribers
161 photos
8 videos
173 links
👋 I'm @ozkriff: Rust zealot, hobby game developer, fan of turn based games, one of arewegameyet.rs' maintainers and gamedev.rs' editors. ex-Wargaming, ex-JetBrains.

See the pinned message for more info and links: https://xn--r1a.website/ozkriff_games/4
Download Telegram
# Rust GameDev Newsletter 23: Июнь 2021

📆 Выпустил ежемесячник по ржавому игрострою за Июнь! https://gamedev.rs/news/023 (обсуждения: Reddit, Twitter).

Серьезных обновлений в этот раз немного поменьше - много проектов отложили новости на Июль.
# Android: Открытое тестирование в Google Play

Федиными стараниями по портированию (и щепоткой моей возни с гугловой админкой) Земерот таки добрался до раннего доступа в Google Play, ура! 🎉

https://play.google.com/store/apps/details?id=rust.zemeroth

Во время внутреннего тестирования оно работало в целом неплохо, но макроквадный стек пока тестировался на относительно небольшом количестве телефонов, стоит ожидать технических проблем (да и недобитые баги в логике самой игры еще точно есть) . Так что будем благодарны за отчеты об ошибках, если оно у кого-то не заводится или глючит - можно тут в чатике, можно через репозиторий, можно в #zemeroth канале QUADS дискорда.

Вообще, это около недели назад еще случилось, но чего-то мне некогда было эту новость до телеги дотащить - кое-какие всплывшие ошибки уже получилось поправить, расскажу об этом в следующих постах. И да, это хороший знако потихоньку сворачивать свой отпуск от растогеймдева и пробовать опять влиться в процесс. Клац-клац.
# Как портировать ржавые macroquad'ные игры на Android и выкладывать в Google Play?

Основные пункты вышеописанной земеротно-андроидной деятельности были укукожены Федей в текстовый урок:

https://macroquad.rs/tutorials/android

- Какие куски тулчейнов нужны? Где можно взять докер со всем готовым?
- Как смотреть логи?
- Как генерить ключ и как подписывать приложение?
- Какие дополнительные метаданные понадобится указать в Cargo.toml?
- Какие минимальные ресурсы надо подготовить для Google Play страницы?
- и т.д.

Немного неприятный момент в том, что через несколько месяцев Google Play перестанет принимать старые добрые .apk пакеты (уже показывает кучу предупреждений) и понадобится разбираться как готовить Android App Bundle (.aab) и обновлять доки. Но что поделать :)
# Android: новая версия, ошибки с serde и путенахождением

О фатальных аппаратных неприятностях пока никто не сообщил, все всплывшие падения-ошибки просто в логике. Так что в Google Play выложена новая версия, в которой поправлено несколько ошибок и включен макроквадный "экран смерти" для быстрого просмотра бэктрейсов.

Далее немного лытдыбра о процессе отладки, вдруг кому интересно.

Последние уровни кампании были сломаны из-за тупой опечатки в описывающем их конфиге: randomzed_objects. Я ожидал, что навешенный на верхнеуровневую структуру #[serde(deny_unknown_fields)] должен заставлять serde ругаться на все незнакомые поля, но нет, это не транзитивный атрибут - нужно вообще все десериализуемые структуры рекурсивно этим обмазывать. :(

Были еще репорты про такую непонятную штуку: хотя у агента должно быть движение на три клетки, какие-то ровные пустые клетки были непроходимы. Я сначала думал, что из-за каких-то специфических обстоятельств могут не дочищаться Blocker компоненты умерших объектов. Полез смотреть и перебором зерна псевдорандома нашел стабильное воспроизведение, где ошибка точно была с самого старта до всяких смертей. Дамп внутренней карты стоимостей движения показал клетку теоретически проходимой, просто почему-то дороже трех очков. В чем оказалось дело?

Все интерактивные объекты на карте (бойцы, шипы, бомбы, булыжники, тп) являются сущностями со своим уникальным ID и компонентами, а вот россыпь мелких камей только влияет на стоимость передвижения и больше ничего не делает, так что это просто тип клетки TileType::Rocks.

Спрайты карты в Земероте рисуются перекрывающимися png'шками с прозрачными областями по краям. Спрайтов в игре мало и на десктопах это нормально работает, а вот на телефонах производительность от такого умирает. Так что в порте статическая часть карты в полуручном режиме батчится в одну текстуру.

И этот самый батчинг статических спрайтов по ошибке делался кверху ногами, но из-за низкохудожественного стиля сложно сходу заметить, что с камешками что-то не так.
# Android: Еще немного лытдыбра про падения в конце хода

Еще относительно примечательное из последних правок: попытка исправления странных падений при слишком быстром нажатии кнопки конца хода. Даже не исправления, а припрятывания.

Сначала на всякий напомню как работают все анимации в Земероте в виду его пошаговости:

- Пользователь что-то жмет на карте или в интерфейсе, на что UI формирует команду.
- Ядро с логикой ест команду и выплевывает поток событий.
- События по очереди применяются к состоянию игры и передаются в визуализатор.
- Визуализатор генерирует поток zscene::Action и передает их в связанный ActionInterpreter сцены.
- Экшены какое-то время двигают спрайты по сцене, меняют их цвета, проигрывают звуки и т.д.
- UI блокирует возможность отдавать команды пока не пройдет action.duration() времени.

Два важных нюанса:

- По умолчанию действия выполняются последовательно в один поток, но есть особый Fork экшен, который умеет стартовать параллельный фоновый поток действий.
- Action::duration метод специально сообщает только о длительности основного экшена и игнорирует все форки.

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

Беда в том, что где-то в логике визуализаторов я накосячил и делаю что-то важное (типа создания спрайта объектов) в долгоработающих фоновых экшенах, то слишком быстрое нажатие конца хода приведет к падению визуализации событий начала следующего хода, потому что не найдет на сцене нужных спрайтов.

Разгрести где именно я делаю лишнее в форках быстро не вышло, так что пока вставил костыль: не разрешать пользователю отдавать новые команды, пока все потоки экшенов сцены не отработали. И что-то чувствую, что даже если найду сам косяк, то потребуется ощутимая переработка вышеописанной схемы, эх.
# 1000 звезд

Курс GitHub репозитория Земерота обновил очередной исторический максимум, превысив психологический рубеж в 1000 звезд. Мелочь, но клево :)
# Rust GameDev Newsletter 25: Август 2021

https://gamedev.rs/news/025

Секции с движками-библиотеками-туториалами особенно куцые вышли - все три редактора лишним временем не располагали, а больше особо никто в этот раз неигровых PRов почему-то не захотел прислать.
# Rust GameDev Newsletter 26: Сентябрь 2021

📆 Выпустил очередной ежемесячник по ржавому игострою: https://gamedev.rs/news/026 (Reddit, Twitter)

На этот раз на удивление много движков. Еще попробовали добавить экспериментальную секцию с обсуждениями - а то парочка в месяц хороших тематических обсуждений в реддите случается.
# CLion -> IntelliJ-Rust

Со вчерашнего дня я официально работаю в IntelliJ-Rust команде фултайм, юху! 🎉

Задачи в CLion довольно интересные, но слишком уж меня тянуло быть ближе к растовым штукам - попросил таки о переводе в соседнюю команду.

Рабочий код так и останется по большей части на Котлине, конечно, зато будет больше опенсорса и будет проще напрямую помогать растовикам. Да и с догфуддингом на своих растовых игроподелках полезная всем синергия должна получиться.
# Rust GameDev Newsletter 28: Ноябрь 2021

https://gamedev.rs/news/028

Введение секции "Other News" (для новостей, которые никто не захотел расписать подробнее) в рутину написания ежемесячников состоялось, ура!
👍1
# Ru Rust GameDev 58: Итоги 2021

Забежал на последний в этом году русскоязычный созвон @rust_gamedev_ru тусовочки с подведением итогов за год:

https://youtube.com/watch?v=cAaupiztF_Y&t=44m13s

TLDR: как можно видеть по малой активности в этом канале, итоги мои мало впечетляющие. Прогресса со своими играми минимум - даже 0.7 версию Земерота не дожал, не то что новую игру начать. Но рад, что не забросил ничего, включая общественные проекты типа ежемесячника и rust_gamedev твитора. Авось в скором будущем потихоньку выгребу таки из уныния и разгонюсь опять. :)
👍5
# Разогрев перед Rusty Jam 2: Icon&Mascot Competition

У нас тут начался небольшой разогрев перед вторым ржавым геймджемом: недельный конкурс на новую иконку и талисман для джема.

Подробности на итче:
https://itch.io/jam/rusty-jam-drawing-competition

Дискорд растиджема:
https://discord.gg/gynsysURbv
👍8
# Rust GameDev Newsletter 29: Декабрь 2021

https://gamedev.rs/news/029

И да, я поставил новый рекорд опоздания! :D До этого самым поздним числом выхода ежемесячника было 14е число - в Январе прошлого года. Начинать год сложно.
🔥6👍2🎉2
# Rust GameDev Newsletter 31..33: Февраль..Март 2021

https://gamedev.rs/news/033

И да, пока я пару месяцев охуевал от войны, Джо с Форестом не переставали выпускать ежемесячники:

https://gamedev.rs/news/031
https://gamedev.rs/news/032

Я за это время немного примирился с новой ебанутой реальностью и даже потихоньку возвращаюсь к хотя бы части обычных активностей.
👍7
# Some Changes to Channel

First, I've decided to switch to English. Mostly because there's not much sense left in keeping the VK group and translating stuff to Russian only for this channel sounds wasteful. Especially since Telegram slowly becomes more used by people that don't know Russian (YIL that English-only @Python chat has 100k+ members) and most of the current readers can read English anyway. Feel free to comment in Russian though.

Also, I'll probably make the channel less focused. Previously I was posting here only Rust gamedev stuff that I have direct connection with but now I'll experiment with writing about my non-gamedev activities and other peoples' stuff that I find interesting. I kinda already have Twitter for that but as far as I know, its readers almost don't overlap with Telegram users so I hope the duplication shouldn't be too annoying.
👍95😢1