
Запилил неделю назад и довёл до ума по фидбеку из b игру гибрид pxls.space и "Game Of Life". Вместо пикселей и клеток - эмоджи.
Игроки ставят эмоджи на онлайн доске, а игра каждую секунду проводит симуляцию. Если у эмоджи меньше 2 соседей он умирает от одиночества, если больше 3 - от перенаселения. Если вокруг пустой клетки ровно 3 змоджи, то в ней тоже спаунится эмоджи (определяется по большинству соседей).
Для защиты от вайпов у каждого игрока есть баланс эмоджи, которые он может поставить и который постепенно растёт пока вкладка с игрой открыта и активна.
Центр поля защищён от изменений игроками - проникнуть туда можно лишь строя всякие глайдеры и прочие паравозы (см. материалы по классической игре "Жизнь").
Есть статистика по количеству живых эмодзи на всей доске и отдельно в центре - открывается по кликам по соответствующим верхним углам страницы.
Есть возможность создавать свои шаблоны размещения змоджи и потом быстро их расставлять в один клик.
Поддерживаются и десктопы, и мобилки (только сегодня окончательно допилил зум на тачскрине, раньше работал совсем через жопу).
Бек написан на Rust и хостится на домашнем сервере (за CloudFlare), фронт написан на TypeScript, а обмениваются они данными по вебсокетам и протобафу. Спрашивайте свои ответы :-)
Хочу протестировать под реальной нагрузкой, а также открыт к любой критике и фидбеку.
ИГРАТЬ: https://mojiverse.art/
Игроки ставят эмоджи на онлайн доске, а игра каждую секунду проводит симуляцию. Если у эмоджи меньше 2 соседей он умирает от одиночества, если больше 3 - от перенаселения. Если вокруг пустой клетки ровно 3 змоджи, то в ней тоже спаунится эмоджи (определяется по большинству соседей).
Для защиты от вайпов у каждого игрока есть баланс эмоджи, которые он может поставить и который постепенно растёт пока вкладка с игрой открыта и активна.
Центр поля защищён от изменений игроками - проникнуть туда можно лишь строя всякие глайдеры и прочие паравозы (см. материалы по классической игре "Жизнь").
Есть статистика по количеству живых эмодзи на всей доске и отдельно в центре - открывается по кликам по соответствующим верхним углам страницы.
Есть возможность создавать свои шаблоны размещения змоджи и потом быстро их расставлять в один клик.
Поддерживаются и десктопы, и мобилки (только сегодня окончательно допилил зум на тачскрине, раньше работал совсем через жопу).
Бек написан на Rust и хостится на домашнем сервере (за CloudFlare), фронт написан на TypeScript, а обмениваются они данными по вебсокетам и протобафу. Спрашивайте свои ответы :-)
Хочу протестировать под реальной нагрузкой, а также открыт к любой критике и фидбеку.
ИГРАТЬ: https://mojiverse.art/
Актуальный тред в b: https://2ch.hk/b/res/323244888.html (
М)

Немного технических деталей.
Для защиты от вайпов используется механизм Proof Of Work. Скрипт пытается найти SHA-512 с N нулевых бит и от заданного сервером префиксом хешируемого значения. Сложность подобрана таким образом, чтобы на стандартном ноутбуке решение находилось быстрее, чем за 0.5-1 секунды.
Результат отправляется на сервер, он валидирует и при успехе выдаёт JWT токен. Клиент сохраняет полученные токены в список, пока не достигает максимума в 128 токенов.
Worker убивается, если теряется подключение с сервером или вкладка уходит в фон, чтобы не тормозить и не жрать зря батарейку.
При установке эмодзи клиент должен отправить столько токенов, сколько хочет поставить змодзи (использованные токены забываются клиентом). Сервер валидирует токены и добавляет их в список поюзанных (второй раз уже не примет) в Postgres. А затем ставит столько эмодзи из списка, сколько валидных токенов было приложено.
Таким образом нельзя написать бота, который будет ставить 100500 эмодзи в секунду и завайпает доску, ведь даже если открыть 1000 соединений с сервером всё равно нужно откуда-то брать токены, а скорость их производства упирается в количество CPU в распоряжении пользователя.
Для защиты от вайпов используется механизм Proof Of Work. Скрипт пытается найти SHA-512 с N нулевых бит и от заданного сервером префиксом хешируемого значения. Сложность подобрана таким образом, чтобы на стандартном ноутбуке решение находилось быстрее, чем за 0.5-1 секунды.
Результат отправляется на сервер, он валидирует и при успехе выдаёт JWT токен. Клиент сохраняет полученные токены в список, пока не достигает максимума в 128 токенов.
Worker убивается, если теряется подключение с сервером или вкладка уходит в фон, чтобы не тормозить и не жрать зря батарейку.
При установке эмодзи клиент должен отправить столько токенов, сколько хочет поставить змодзи (использованные токены забываются клиентом). Сервер валидирует токены и добавляет их в список поюзанных (второй раз уже не примет) в Postgres. А затем ставит столько эмодзи из списка, сколько валидных токенов было приложено.
Таким образом нельзя написать бота, который будет ставить 100500 эмодзи в секунду и завайпает доску, ведь даже если открыть 1000 соединений с сервером всё равно нужно откуда-то брать токены, а скорость их производства упирается в количество CPU в распоряжении пользователя.
>>6537
Нихуясе бе! Так всё это время я майнил твои хэши на своем процессорочке
АЛСО СДЕЛАЙ может количество онлайна типа сколько прям щас со мной играет? это интересно понимать имеет ли смысл борьба или продолжать чиллить
Нихуясе бе! Так всё это время я майнил твои хэши на своем процессорочке
АЛСО СДЕЛАЙ может количество онлайна типа сколько прям щас со мной играет? это интересно понимать имеет ли смысл борьба или продолжать чиллить
>>6639
Сейчас из 26 3 моих
Сейчас из 26 3 моих
>>6639
Но клетки то с трудом умирают, так что получается 26 это максимум, а судя по тому что можно ставить любые эмодзи, то юзеров меньше 26. ну итого где то 15 наверное уникальных
Но клетки то с трудом умирают, так что получается 26 это максимум, а судя по тому что можно ставить любые эмодзи, то юзеров меньше 26. ну итого где то 15 наверное уникальных
>>6638
Вчера 43 уникальных посетителя было согласно гугл аналитике, сегодня пока 19. Один человек может ставить разные эмодзи.
Вчера 43 уникальных посетителя было согласно гугл аналитике, сегодня пока 19. Один человек может ставить разные эмодзи.
идея: СПАМ РЕЖИМ где мало того что шаблоны не сбрасываются после клика, так еще и майнинг облегченный т.е эмодзи копятся быстрее намного. чисто динамичный режим забрасывать шаблонами мид ибо заебешься каждый раз его в обычном нажимать но зато антиспам да

ЕБАТЬ ОН ТАМ СПАМИТ ЖАЛЬ ЗАСКРИНИТЬ НЕ СМОГ ИЗ ЗА МАЙНИНГА ОПА ПРОЦ НАГРУЖЕН ЗАДЕРЖКА ПЗДЦ. СТРУКТУРЫ ЕБАНУТЫЕ У НЕГО захватывает только так
>>6682
этот парень имеет умение
этот парень имеет умение
>>6537
Так от чего зависит скорость восстановления то? Ну для глупеньких. Типа с момента захода на страницу начинается счетчик сколько эмодзи я ставлю и чем больше тем сложнее восстанавливатся будет? Тогда я перезапущу страницу не? не понял короче
Так от чего зависит скорость восстановления то? Ну для глупеньких. Типа с момента захода на страницу начинается счетчик сколько эмодзи я ставлю и чем больше тем сложнее восстанавливатся будет? Тогда я перезапущу страницу не? не понял короче
>>6690
чому?
чому?
>>6692
ахаах сука. эбони
ахаах сука. эбони
ахахах хуя ты его тактику спиздил я видел
>>6679
И ЧТОБЫ СКОРОСТЬ БЫЛА БЫСТРЕЕ ну и карта меньше видимо чтоб работало
И ЧТОБЫ СКОРОСТЬ БЫЛА БЫСТРЕЕ ну и карта меньше видимо чтоб работало

нихуя давно эта эмодзи существует? майкрософт права на скрепыша что ли продала
бля ебать я всевозможных эмодзи наспавнил подштанув свою основную популяцию красных

>>6560
В лидербордах прикольно было бы если графа online типа активен ли юзер этого эмодзи щас или нет чтоб знать с кем сражатся
В лидербордах прикольно было бы если графа online типа активен ли юзер этого эмодзи щас или нет чтоб знать с кем сражатся
>>6717
пока мой красный топ1 я буду развивать популяцию точек
пока мой красный топ1 я буду развивать популяцию точек
>>6719
А блять точно...
А блять точно...
>>6724
ага оно. вот тоже показалось, что сегодня пик, предыдущие дни 10-11к было
ага оно. вот тоже показалось, что сегодня пик, предыдущие дни 10-11к было

румын или молдованин тоже мощный тип глайдеры пускает
бля оч живучую хуйню сконструировал, точки будут править миром
>>6734
💪🏻
💪🏻