LINUX.ORG.RU
ФорумTalks

mojiverse

 mojiverse, игра жизнь, пет проект


0

2

Запилил гибрид игры «Жизнь» и всяких коллективных онлайн рисовалок типа pxls.space под соусом эмоджи.

Используются классические правила - если у эмоджи 2-3 соседа, он живёт, если меньше, умирает от одиночества, если больше, от перенаселения. Если у пустой клетки есть 3 соседа эмоджи, то там спаунится новый эмоджи (выбирается по большинству соседей).

Для большего интереса центр поля защищён от изменений игроками, но вы можете строить глайдеры и ружья по краям, которые будут проникать в центр.

Для защиты от вайпов и прочих злоупотреблений количество эмоджи, которое можно поставить постепенно растёт по мере того как вкладка с игрой активна и в фокусе.

Бек написан на Rust, фронт на TypeScript, крутится всё это на подкроватном сервере на Ubuntu. И играть в это, очевидно, тоже можно из-под Linux, если имеется в наличии любой современный браузер.

Ссылка: https://mojiverse.art/

★★★★★

Зум работает неадекватно. В три тика укладывается от минимума до максимума.

kilolife ★★★★★
()

Увеличил поле до 256х256 и сделал его закольцованным

KivApple ★★★★★
() автор топика
Ответ на: комментарий от MoldAndLimeHoney

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

Так как это игра «Жизнь», одиночный эмоджи помрёт сразу после его установки. Надо выстроить жизнеспособную фигуру (например, квадрат 2х2) прежде чем жать галочку.

KivApple ★★★★★
() автор топика
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

Наверное просто проблемы с зумом, как сообщали выше. У меня оно за один клик прыгает из «ничего не видно» до «каждый эмоджи размером монету».

MoldAndLimeHoney ★★
()
Ответ на: комментарий от MoldAndLimeHoney

Постарался пофиксить чувствительность зума

KivApple ★★★★★
() автор топика
Ответ на: комментарий от KivApple

Норм. Есть хотелка. Галочку в настройках. Принажатии на которую:
После установки первого смайла в серии присвоить ему координаты (0:0)
Далее сопровождать все остальные смайлы в серии координатами относительно первого.
Поможет быстро составлять известные конфигурации и не считать пустые ячейки пальцем.

kilolife ★★★★★
()

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

Идеи про протокол: 1) слать только то что изменилось 2) возможно слать не всё поле а только то что видно на экране + поля для быстрого скролла вокруг 3) использовать тот факт, что на поле одновременно довольно маленькое количество типов смайлов присутствует, и что рядом обычно одинаковые, например можно нарезать его на блоки 16х16 клеток и каждую сжимать отдельно, во многих можно 1 бит на клетку использовать будет

firkax ★★★★★
()
Ответ на: комментарий от firkax

Увеличение размера поля планирую как раз когда прикручу сжатие. Сейчас его попросту нет. Соответственно, при 256х256 поле каждую секунду шлётся 131 КБ (id эмодзи 2 байта, так как их чуть меньше 4000 разных). Ещё терпимо, но если растить поле дальше, то уже будет не норм.

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

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

Заодно со сжатием можно будет подумать о сохранении истории поля, чтобы потом генерировать таймлапсы. Сейчас, опять же, с битрейтом 131 КБ/сек слишком жирно выйдет.

KivApple ★★★★★
() автор топика
Последнее исправление: KivApple (всего исправлений: 1)
Ответ на: комментарий от KivApple

Меняется значительная, но всё-таки маленькая, думаю не больше 10%. Если сделать дельту и одно значение будет за «не изменилось», то даже deflate в итоге выдаст более хороший результат т.к. длины пустых линий станут больше. Но ещё лучше по-моему будет словарь реально использованных смайлов, может быть с переменной битовой длиной их кодирования в зависимости от частоты использования + rle.

firkax ★★★★★
()

И нужно чтобы можно было отменить миссклик ещё не поставленного смайла. И режим чтоб решётка была.

firkax ★★★★★
()

На смартфоне не работает зум в принципе. Открывается сразу отзумленно на максимум, можно только перемещаться по полю.

the_real_kinik ★★
()
Последнее исправление: the_real_kinik (всего исправлений: 1)

О, зум заработал, спасибо

sn4il
()

Добавил сжатие данных доски. Теперь для поля 256х256 данные весят 2-3 КБ, а не 131 КБ.

В честь этого увеличил доску до 512х512.

Обновите страницу.

KivApple ★★★★★
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)