https://twitter.com/ozkriff/status/1353323170481115137 - вспомнил, что не показывал особо макеты своих прошлогодних экспериментов по варгеймостроению.
Возможно, минималистичный иконко-подобный 2D стиль и правда мог бы решить проблемы старой 3D версии с читаемостью и слотами внутри клеток. Я вряд ли в обозримом будущем ZoC воскрешать буду - слишком большой проект с не сильно четкими USP - но чего бы не выложить картинку? Авось когда-нибудь и вернусь к проекту таки.
Возможно, минималистичный иконко-подобный 2D стиль и правда мог бы решить проблемы старой 3D версии с читаемостью и слотами внутри клеток. Я вряд ли в обозримом будущем ZoC воскрешать буду - слишком большой проект с не сильно четкими USP - но чего бы не выложить картинку? Авось когда-нибудь и вернусь к проекту таки.
Twitter
Andrey @ozkriff Lesnikóv 🦀
"Zone of Control" is my old #rustlang game: https://t.co/yCwRJqr3kz Here's a mockup of its theoretical 2D version - a minimalistic icon-based style may make it more readable and solve some of the issues I had with sub-tile slots in the old 3D version. 🤔 #turnbased…
# Rust GameDev Newsletter 18: Январь 2021
📆 Выпустил ежемесячник по ржавому игрострою за Январь: https://rust-gamedev.github.io/posts/newsletter-018 (обсуждения: Reddit, Twitter).
Попробовали с этого месяца несколько урезанный формат и работу редакторской командой - "Newsletter: new format and more delegation". Если все пойдет по плану, то следующий месяц или два выпускающим редактором буду не я, юху!
📆 Выпустил ежемесячник по ржавому игрострою за Январь: https://rust-gamedev.github.io/posts/newsletter-018 (обсуждения: Reddit, Twitter).
Попробовали с этого месяца несколько урезанный формат и работу редакторской командой - "Newsletter: new format and more delegation". Если все пойдет по плану, то следующий месяц или два выпускающим редактором буду не я, юху!
Rust GameDev WG
This Month in Rust GameDev #18 - January 2021
Welcome to the 18th issue of the Rust GameDev Workgroup's
monthly newsletter.
Rust is a systems lang…
monthly newsletter.
Rust is a systems lang…
# Rust GameDev Newsletter 19: Февраль 2021
📆 Выпустили ежемесячник по ржавому игрострою за Февраль: https://rust-gamedev.github.io/posts/newsletter-019 (обсуждения: Reddit, Twitter).
Все таки пошло +- по плану, так что это первый выпуск, который координировал не я, а Форест (один из разработчиков Veloren). Ура делегации!
Сил на пиление своего Земерота я пока не нашел, продолжаю хандрить. Хотя бытовые дела теперь немного приведены в порядок, может в этом месяце получится собраться.
📆 Выпустили ежемесячник по ржавому игрострою за Февраль: https://rust-gamedev.github.io/posts/newsletter-019 (обсуждения: Reddit, Twitter).
Все таки пошло +- по плану, так что это первый выпуск, который координировал не я, а Форест (один из разработчиков Veloren). Ура делегации!
Сил на пиление своего Земерота я пока не нашел, продолжаю хандрить. Хотя бытовые дела теперь немного приведены в порядок, может в этом месяце получится собраться.
Rust GameDev WG
This Month in Rust GameDev #19 - February 2021
Welcome to the 19th issue of the Rust GameDev Workgroup's
monthly newsletter.
Rust is a systems lang…
monthly newsletter.
Rust is a systems lang…
# Rust GameDev Newsletter 20: Март 2021
📆 Выпустил ежемесячник по ржавому игрострою за Март: https://rust-gamedev.github.io/posts/newsletter-020 (обсуждения: /r/rust, Twitter).
По Земероту и новому проекту в ближайшие месяцы обновлений можно не ждать: я вконец загнался и решил таки взять "отпуск от хобби" как минимум до лета (а то и до осени).
📆 Выпустил ежемесячник по ржавому игрострою за Март: https://rust-gamedev.github.io/posts/newsletter-020 (обсуждения: /r/rust, Twitter).
По Земероту и новому проекту в ближайшие месяцы обновлений можно не ждать: я вконец загнался и решил таки взять "отпуск от хобби" как минимум до лета (а то и до осени).
Rust GameDev WG
This Month in Rust GameDev #20 - March 2021
Welcome to the 20th issue of the Rust GameDev Workgroup's
monthly newsletter.
Rust is a systems lang…
monthly newsletter.
Rust is a systems lang…
# gamedev.rs
Отличные новости вдогонку к ежемесячнику: только что закончил перевоз rust-gamedev.github.io на максимально роскошный домен:
✨ https://gamedev.rs ✨
Огромное спасибо Juratech Systems за подаренный домен, а то мы уж отчаялись выбирать из альтернатив.
Отличные новости вдогонку к ежемесячнику: только что закончил перевоз rust-gamedev.github.io на максимально роскошный домен:
✨ https://gamedev.rs ✨
Огромное спасибо Juratech Systems за подаренный домен, а то мы уж отчаялись выбирать из альтернатив.
Rust GameDev WG
Stay up to date with the progress and recent developments in the Rust Game Development Working Group.
# Rust GameDev Newsletter 21: Апрель 2021
📆 Выпустили ежемесячник по ржавому игрострою за Апрель: https://gamedev.rs/news/021 (обсуждения: Reddit, Twitter).
Первый выпуск, скординированный 17cupsofcoffee (автор Tetra).
📆 Выпустили ежемесячник по ржавому игрострою за Апрель: https://gamedev.rs/news/021 (обсуждения: Reddit, Twitter).
Первый выпуск, скординированный 17cupsofcoffee (автор Tetra).
Rust GameDev WG
This Month in Rust GameDev #21 - April 2021
Welcome to the 21st issue of the Rust GameDev Workgroup's
monthly newsletter.
Rust is a systems lang…
monthly newsletter.
Rust is a systems lang…
# Rust GameDev Newsletter 22: Май 2021
📆 Выпустили ежемесячник по ржавому игрострою за Май: https://gamedev.rs/news/022
📆 Выпустили ежемесячник по ржавому игрострою за Май: https://gamedev.rs/news/022
Rust GameDev WG
This Month in Rust GameDev #22 - May 2021
Welcome to the 22nd issue of the Rust GameDev Workgroup's
monthly newsletter.
Rust is a systems lang…
monthly newsletter.
Rust is a systems lang…
# WIP Android
Хоть мой "отпуск" от активных попыток работы над Земеротом еще не закончился (и продлится еще месяца полтора минимум), работа над Земеротом таки идет:
https://twitter.com/fedor_games/status/1397966033152057347
Федя занимается портированием на андроид и в процессе допиливает функционал/оптимизации в (mini|macro)quad. А я так, сбоку отсматриваю ПРы и немного помогаю с тестированием на своих железяках. Планирую в ближайшие дни дотащить вышеописанные звуки в основную ветку, что бы Феде было удобнее отлаживать эту подсистему.
Желающие потестить могут найти последние apk сборки в
Хоть мой "отпуск" от активных попыток работы над Земеротом еще не закончился (и продлится еще месяца полтора минимум), работа над Земеротом таки идет:
https://twitter.com/fedor_games/status/1397966033152057347
Федя занимается портированием на андроид и в процессе допиливает функционал/оптимизации в (mini|macro)quad. А я так, сбоку отсматриваю ПРы и немного помогаю с тестированием на своих железяках. Планирую в ближайшие дни дотащить вышеописанные звуки в основную ветку, что бы Феде было удобнее отлаживать эту подсистему.
Желающие потестить могут найти последние apk сборки в
#zemeroth канале QUADS дискорда.Twitter
Fedor Logachev
Trying to bridge the gap between "it kinda runs on my device" and "works well enough on arbitrary ~7 years old phone". If anyone wants to help with testing: welcome to our discord! discord.com/channels/71017…
# Rust GameDev Newsletter 23: Июнь 2021
📆 Выпустил ежемесячник по ржавому игрострою за Июнь! https://gamedev.rs/news/023 (обсуждения: Reddit, Twitter).
Серьезных обновлений в этот раз немного поменьше - много проектов отложили новости на Июль.
📆 Выпустил ежемесячник по ржавому игрострою за Июнь! https://gamedev.rs/news/023 (обсуждения: Reddit, Twitter).
Серьезных обновлений в этот раз немного поменьше - много проектов отложили новости на Июль.
Rust GameDev WG
This Month in Rust GameDev #23 - June 2021
Welcome to the 23rd issue of the Rust GameDev Workgroup's
monthly newsletter.
Rust is a systems lang…
monthly newsletter.
Rust is a systems lang…
# Android: Открытое тестирование в Google Play
Федиными стараниями по портированию (и щепоткой моей возни с гугловой админкой) Земерот таки добрался до раннего доступа в Google Play, ура! 🎉
https://play.google.com/store/apps/details?id=rust.zemeroth
Во время внутреннего тестирования оно работало в целом неплохо, но макроквадный стек пока тестировался на относительно небольшом количестве телефонов, стоит ожидать технических проблем (да и недобитые баги в логике самой игры еще точно есть) . Так что будем благодарны за отчеты об ошибках, если оно у кого-то не заводится или глючит - можно тут в чатике, можно через репозиторий, можно в
Вообще, это около недели назад еще случилось, но чего-то мне некогда было эту новость до телеги дотащить - кое-какие всплывшие ошибки уже получилось поправить, расскажу об этом в следующих постах. И да, это хороший знако потихоньку сворачивать свой отпуск от растогеймдева и пробовать опять влиться в процесс. Клац-клац.
Федиными стараниями по портированию (и щепоткой моей возни с гугловой админкой) Земерот таки добрался до раннего доступа в Google Play, ура! 🎉
https://play.google.com/store/apps/details?id=rust.zemeroth
Во время внутреннего тестирования оно работало в целом неплохо, но макроквадный стек пока тестировался на относительно небольшом количестве телефонов, стоит ожидать технических проблем (да и недобитые баги в логике самой игры еще точно есть) . Так что будем благодарны за отчеты об ошибках, если оно у кого-то не заводится или глючит - можно тут в чатике, можно через репозиторий, можно в
#zemeroth канале QUADS дискорда.Вообще, это около недели назад еще случилось, но чего-то мне некогда было эту новость до телеги дотащить - кое-какие всплывшие ошибки уже получилось поправить, расскажу об этом в следующих постах. И да, это хороший знако потихоньку сворачивать свой отпуск от растогеймдева и пробовать опять влиться в процесс. Клац-клац.
Google Play
Zemeroth - Apps on Google Play
Zemeroth is a minimalistic single-player 2D turn-based hexagonal tactical game.
# Как портировать ржавые macroquad'ные игры на Android и выкладывать в Google Play?
Основные пункты вышеописанной земеротно-андроидной деятельности были укукожены Федей в текстовый урок:
https://macroquad.rs/tutorials/android
- Какие куски тулчейнов нужны? Где можно взять докер со всем готовым?
- Как смотреть логи?
- Как генерить ключ и как подписывать приложение?
- Какие дополнительные метаданные понадобится указать в Cargo.toml?
- Какие минимальные ресурсы надо подготовить для Google Play страницы?
- и т.д.
Немного неприятный момент в том, что через несколько месяцев Google Play перестанет принимать старые добрые .apk пакеты (уже показывает кучу предупреждений) и понадобится разбираться как готовить Android App Bundle (.aab) и обновлять доки. Но что поделать :)
Основные пункты вышеописанной земеротно-андроидной деятельности были укукожены Федей в текстовый урок:
https://macroquad.rs/tutorials/android
- Какие куски тулчейнов нужны? Где можно взять докер со всем готовым?
- Как смотреть логи?
- Как генерить ключ и как подписывать приложение?
- Какие дополнительные метаданные понадобится указать в Cargo.toml?
- Какие минимальные ресурсы надо подготовить для Google Play страницы?
- и т.д.
Немного неприятный момент в том, что через несколько месяцев Google Play перестанет принимать старые добрые .apk пакеты (уже показывает кучу предупреждений) и понадобится разбираться как готовить Android App Bundle (.aab) и обновлять доки. Но что поделать :)
# Android: новая версия, ошибки с serde и путенахождением
О фатальных аппаратных неприятностях пока никто не сообщил, все всплывшие падения-ошибки просто в логике. Так что в Google Play выложена новая версия, в которой поправлено несколько ошибок и включен макроквадный "экран смерти" для быстрого просмотра бэктрейсов.
Далее немного лытдыбра о процессе отладки, вдруг кому интересно.
Последние уровни кампании были сломаны из-за тупой опечатки в описывающем их конфиге: randomzed_objects. Я ожидал, что навешенный на верхнеуровневую структуру
Были еще репорты про такую непонятную штуку: хотя у агента должно быть движение на три клетки, какие-то ровные пустые клетки были непроходимы. Я сначала думал, что из-за каких-то специфических обстоятельств могут не дочищаться Blocker компоненты умерших объектов. Полез смотреть и перебором зерна псевдорандома нашел стабильное воспроизведение, где ошибка точно была с самого старта до всяких смертей. Дамп внутренней карты стоимостей движения показал клетку теоретически проходимой, просто почему-то дороже трех очков. В чем оказалось дело?
Все интерактивные объекты на карте (бойцы, шипы, бомбы, булыжники, тп) являются сущностями со своим уникальным ID и компонентами, а вот россыпь мелких камей только влияет на стоимость передвижения и больше ничего не делает, так что это просто тип клетки TileType::Rocks.
Спрайты карты в Земероте рисуются перекрывающимися png'шками с прозрачными областями по краям. Спрайтов в игре мало и на десктопах это нормально работает, а вот на телефонах производительность от такого умирает. Так что в порте статическая часть карты в полуручном режиме батчится в одну текстуру.
И этот самый батчинг статических спрайтов по ошибке делался кверху ногами, но из-за низкохудожественного стиля сложно сходу заметить, что с камешками что-то не так.
О фатальных аппаратных неприятностях пока никто не сообщил, все всплывшие падения-ошибки просто в логике. Так что в 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 метод специально сообщает только о длительности основного экшена и игнорирует все форки.
Почему так? Потому что фоновые экшены по задумке должны отвечать за всякие эффекты и мишуру: ну догорает где-то там себе огонь еще пяток кадров - пофиг, давайте начинать показывать следующее важное событие, а то игра и без того пошаговая и неспешная просто по своей сути.
Беда в том, что где-то в логике визуализаторов я накосячил и делаю что-то важное (типа создания спрайта объектов) в долгоработающих фоновых экшенах, то слишком быстрое нажатие конца хода приведет к падению визуализации событий начала следующего хода, потому что не найдет на сцене нужных спрайтов.
Разгрести где именно я делаю лишнее в форках быстро не вышло, так что пока вставил костыль: не разрешать пользователю отдавать новые команды, пока все потоки экшенов сцены не отработали. И что-то чувствую, что даже если найду сам косяк, то потребуется ощутимая переработка вышеописанной схемы, эх.
Еще относительно примечательное из последних правок: попытка исправления странных падений при слишком быстром нажатии кнопки конца хода. Даже не исправления, а припрятывания.
Сначала на всякий напомню как работают все анимации в Земероте в виду его пошаговости:
- Пользователь что-то жмет на карте или в интерфейсе, на что UI формирует команду.
- Ядро с логикой ест команду и выплевывает поток событий.
- События по очереди применяются к состоянию игры и передаются в визуализатор.
- Визуализатор генерирует поток zscene::Action и передает их в связанный ActionInterpreter сцены.
- Экшены какое-то время двигают спрайты по сцене, меняют их цвета, проигрывают звуки и т.д.
- UI блокирует возможность отдавать команды пока не пройдет action.duration() времени.
Два важных нюанса:
- По умолчанию действия выполняются последовательно в один поток, но есть особый Fork экшен, который умеет стартовать параллельный фоновый поток действий.
- Action::duration метод специально сообщает только о длительности основного экшена и игнорирует все форки.
Почему так? Потому что фоновые экшены по задумке должны отвечать за всякие эффекты и мишуру: ну догорает где-то там себе огонь еще пяток кадров - пофиг, давайте начинать показывать следующее важное событие, а то игра и без того пошаговая и неспешная просто по своей сути.
Беда в том, что где-то в логике визуализаторов я накосячил и делаю что-то важное (типа создания спрайта объектов) в долгоработающих фоновых экшенах, то слишком быстрое нажатие конца хода приведет к падению визуализации событий начала следующего хода, потому что не найдет на сцене нужных спрайтов.
Разгрести где именно я делаю лишнее в форках быстро не вышло, так что пока вставил костыль: не разрешать пользователю отдавать новые команды, пока все потоки экшенов сцены не отработали. И что-то чувствую, что даже если найду сам косяк, то потребуется ощутимая переработка вышеописанной схемы, эх.
# 1000 звезд
Курс GitHub репозитория Земерота обновил очередной исторический максимум, превысив психологический рубеж в 1000 звезд. Мелочь, но клево :)
Курс GitHub репозитория Земерота обновил очередной исторический максимум, превысив психологический рубеж в 1000 звезд. Мелочь, но клево :)
GitHub
GitHub - ozkriff/zemeroth: 😠⚔️😈 A minimalistic 2D turn-based tactical game in Rust
😠⚔️😈 A minimalistic 2D turn-based tactical game in Rust - ozkriff/zemeroth
# Rust GameDev Newsletter 25: Август 2021
https://gamedev.rs/news/025
Секции с движками-библиотеками-туториалами особенно куцые вышли - все три редактора лишним временем не располагали, а больше особо никто в этот раз неигровых PRов почему-то не захотел прислать.
https://gamedev.rs/news/025
Секции с движками-библиотеками-туториалами особенно куцые вышли - все три редактора лишним временем не располагали, а больше особо никто в этот раз неигровых PRов почему-то не захотел прислать.
Rust GameDev WG
This Month in Rust GameDev #25 - August 2021
Welcome to the 25th issue of the Rust GameDev Workgroup's
monthly newsletter.
Rust is a systems lang…
monthly newsletter.
Rust is a systems lang…
# Rust GameDev Newsletter 26: Сентябрь 2021
📆 Выпустил очередной ежемесячник по ржавому игострою: https://gamedev.rs/news/026 (Reddit, Twitter)
На этот раз на удивление много движков. Еще попробовали добавить экспериментальную секцию с обсуждениями - а то парочка в месяц хороших тематических обсуждений в реддите случается.
📆 Выпустил очередной ежемесячник по ржавому игострою: https://gamedev.rs/news/026 (Reddit, Twitter)
На этот раз на удивление много движков. Еще попробовали добавить экспериментальную секцию с обсуждениями - а то парочка в месяц хороших тематических обсуждений в реддите случается.
Rust GameDev WG
This Month in Rust GameDev #26 - September 2021
Welcome to the 26th issue of the Rust GameDev Workgroup's
monthly newsletter.
Rust is a systems lang…
monthly newsletter.
Rust is a systems lang…
# CLion -> IntelliJ-Rust
Со вчерашнего дня я официально работаю в IntelliJ-Rust команде фултайм, юху! 🎉
Задачи в CLion довольно интересные, но слишком уж меня тянуло быть ближе к растовым штукам - попросил таки о переводе в соседнюю команду.
Рабочий код так и останется по большей части на Котлине, конечно, зато будет больше опенсорса и будет проще напрямую помогать растовикам. Да и с догфуддингом на своих растовых игроподелках полезная всем синергия должна получиться.
Со вчерашнего дня я официально работаю в IntelliJ-Rust команде фултайм, юху! 🎉
Задачи в CLion довольно интересные, но слишком уж меня тянуло быть ближе к растовым штукам - попросил таки о переводе в соседнюю команду.
Рабочий код так и останется по большей части на Котлине, конечно, зато будет больше опенсорса и будет проще напрямую помогать растовикам. Да и с догфуддингом на своих растовых игроподелках полезная всем синергия должна получиться.
GitHub
GitHub - intellij-rust/intellij-rust: Rust plugin for the IntelliJ Platform
Rust plugin for the IntelliJ Platform. Contribute to intellij-rust/intellij-rust development by creating an account on GitHub.