Pull to refresh

Comments 35

Уважаемый bugy, это перевод статьи или ваша игра?
Автору игры и статьи: box2d тут явно лишний, и он время у вас съел. Хватило бы и формулы пересечения прямоугольников либо окружностей, они просты.
И зайдите кто-нибудь на http://selim.co/snowbox/, мне снежком кинуть не в кого! Я стою в центре, у дерева, по нику узнаете.
Это наша игра и статья.
Касаемо box2d — возможно это был сильный оверхед, зато без собственных велосипедов в данном плане гораздо приятнее. И опыт использования движков на будущее.
PS зашел на сервер — кто-то там бегает уже :)
Отличная игра для конкурса и статья.
Как насчёт SnowBox 2.0 и продолжения статьи?
Думаю своих идей у вас хватает, да и пользователи подкинули. Из очевидного:
1. Надо чат, простенький, или возможность сказать что-то (всплывающий бабл со словами) — возможность общения матом бесценна
2. Селим, уберите очевидный способ чита — заходим на сервер дважды с разных вкладок браузера и набиваем фраги на своём же клоне. Не пускать клонов: IP клиента серверу через вебсокеты известен и куки тоже пригодятся.
3. Строим ледяные крепости — надо. Сейчас «крепость» можно построить из множества своих клонов, то есть возможность уже есть, но читерская.
4. Хочется набигать, грабить корованы играть за 2 команды (или более), прокачка персонажа и соответственно хранение этого счастья на сервере, разные локации — и т.д. и т.п.
Спасибо большое за фидбек! Касаемо продолжения, очень двоякие мысли. С одной стороны это был проект «попробовать и выкинуть», с другой стороны в процессе создания захотелось сделать что-то более стоящее из этого начинания. Но после того как закончился этот интенсивный месяц, осталось желание не делать абсолютно ничего, т.к. выдохлись. Сейчас уже отошли и посмотрим как жить дальше.

Два из ваших пожеланий для нас новые: чат и командное соревнование.
Остальное планировалось/хотелось, но к сожалению не успелось.
Два из ваших пожеланий для нас новые

Да? Тогда я внесу еще несколько ценных предложений в духе времени:
1. Игровая валюта — Snowball. За сноуболы покупаются модные скины, лыжи и эпический скорострельный снегомёт
2. На сайте игры можно купить сноуболы за рубли, доллары и биткойны
3. Премиум аккаунты — удвоенная скорострельность, утроенная скорость прокачки, уникальные шапочка, шарфик и варежки в подарок
4. Выберите краудфандинговую площадку для сбора средств на разработку SnowBox 2.0
5. Прикрутите к игре блокчейн, чтобы точно взлетело
6. Выпустите ICO токены
7. Конвертация сноуболов в деньги для игроков, дайте людям заработать, ваши %-ы

100. Мышь и клавиатура — это скучно. Нужен свой, уникальный беспроводной игровой контроллер на Arduino
В моём прошлом каменте перебор с иронией, я пародирую нынешний гейм-дев, «монетезацию», разные модные тренды и все такое. Не ведитесь.
А теперь о серьёзном, мужайтесь.
В дело вступили 2 профи бета-тестера, мои племянники, возраст 8 и 9 лет. Сейчас всё решает молодое поколение. Мы провели час жесткого теста (нет, мы не уронили сервер, и это хорошо). Перевожу их замечания с их языка на обычный язык, выводы комиссии:
1. Нужен чат, или в любом другом виде возможность общения игроков текстом.
2. Голосовой чат не нужен, для такого геймеры сейчас используют сторонние программы типа Discord, TeamSpeek, RaidCall & etc., а между-собой-друзья используют Скайп, Телеграм и WatsApp. Собственно текстовый чат в игре им нужен чтобы договориться о канале голосового общения (это команда) или чтобы обругать противника.
3. Прокачка персонажа нужна. Многие заходят в игру, играют 2 минуты и выходят — потому что нет роста.
4. Скины. Сейчас у вас их 2 (мальчик и девочка). Короче еще просят — допустим скины дают за прокачку персонажа. Нужно: Снеговик, Снежная Королева, Человек-Паук и ещё разные (я всех не запомнила).
5. Боты, которыми управляет сервер, на случай если никого на сервере нет.
Сколько раз мы в неё ни играли, так и не заметили никаких проблем, как и не слышали их от других игроков.

Странно. Потому что проблема ловится в первую же минуту — персонаж «залип» на подъеме в верхнюю часть экрана. Уперся лицом в забор и отказался менять направление движения.
Точно, обманул я :( Эта проблема проявляется когда фокус из окна уходит. И Phaser не замечает отжатия клавишы и лишь перебором клавиш 10-20 раз это иногда лечится… Но баг не совсем наш :)
Проявляется он не так часто, поэтому я решил не делать workaround для этого.
А еще положение персонажей почему-то разное для разных игроков. Посмотрите на ровность «стеночки»:
Игрок 1
image

Игрок 2
image

Игрок 3
image

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

Оно есть, но только на сервере и на клиенте это не показывается.
Именно из-за этого
положение персонажей почему-то разное для разных игроков


Мини-баг, который не влияет на процесс игры :)
Но спасибо за комментарий и наблюдение!
Уперся лицом в забор и отказался менять направление движения.

Это не баг, это фича — ловить нубов и набивать на них фраги.

image

Ой, сколько вас набежало то! Предлагаю правила:
1. Перестаньте только в меня кидаться, я первая зашла а теперь в топе снизу.
2. Заходите под своими никами на ГикТаймс
3. Способ разбиться на 2 команды — команда А — ник начинается с «А.», например «A.John», команда B — ник начинается с «B.», например «B.George». В своих не кидаемся! Кто без команды — тот против всех.

image
В Edge вообще не играбельно. Постоянно залипает ход в одну сторону, а у стенки вообще всё залипает. Думал, я туплю, но нет — оказалось ещё не выстрелить. Надо заходить через другой браузер…
Спасибо за багрепорт! На Edge мы и правда не проверяли…
Как умудряетесь снежки так быстро кидать?))
Просто нажимая клавишу часто. Важный момент — запас снежков ограничен (см. правый нижний угол). Потом они постепенно восстанавливаются. Соответственно пока снежки есть, можно хоть все 5 одновременно бросить. А потом бросать только со скоростью восстановления.
(Этот запас многие вообще не замечают, это к вопросу об игровом тестировании)
Просто нажимая клавишу часто.

Гениально. Ресурс механической кнопки на современных мышках достаточно большой — при обычной работе кнопки на несколько лет всем хватает. Но если в вашей игре выигрышная стратегия — постоянно и непрерывно нажимать клавишу мыши, метая снежки (игрок займётся наведением), то тут явно требуется автоматизация. Есть 2 варианта:
1. Я могу написать автокликер — читерскую утилиту на ваш случай, посажу хук на клик мыши (магия WinAPI), проверю что фокус в окне браузера, нагенерирую кликов — и вуаля, буду строчить как из пулемёта не напрягая пальцы. А из браузера, у вас клиент на JS, античит вы не сделаете. Короче — кому чит на SnowBox за $10 с носа?
2. Как автор игры, вы должны разобраться как играют в вашу игру, какие приёмы применяют игроки, какие стратегии сейчас выигрышные. Игроки уже знают больше вас, вам же некогда играть. Если в геймплее есть занудное действие (например, 100500 кликов мышкой), то его нужно автоматизировать в игре (авто-выстрел что ли). Или иначе — сделайте эту стратегию невыгодной: долгая перезарядка, дорогие «патроны», штраф за промах, в статистике падает оценка меткости, усталость… что то такое.
Мы плавно подошли к вопросу баланса.

Абсолютно согласен! Это как раз к вопросу об игровых тестах.
И именно эту проблему я хотел исправить в первую очередь, но проект уже был сдан

Уважаемый bugy, примите себе как правило:
1. Никогда не оправдывайтесь и не извиняйтесь ни перед кем
(передо мной можно)
2. Вы создали свой мир, родили в муках, как полагается — это факт.
А что уж там юзеры начудят — даже я не берусь предсказать. Сегодня, например, было вот так:

image
А зачем вообще было писать разный код для клиента и сервера? Почему нельзя сначала было написать рабочий код для локальной машины, а после этого добавить синхронизацию состояний с сервером?
Не совсем понял ваш вопрос. Отвечу на то, что точно понял:
1. Нельзя было терять ни минуты. Т.е. если бы сперва закончили клиент, а потом принялись бы за сервер, точно не успели его сделать.
2. На клиенте и на сервере разная физика. Например, столкновения движущихся объектов на клиенте не проверяются, потому что клиент не может знать реальное положение объектов в данный момент времени
В смысле можно было использовать вообще полностью одинаковый код для клиента и сервера. Просто еще до кучи добавить синхронизацию.
Это трудно достижимо по ряду причин:
1. Разные движки на клиенте и сервере. Которые работают по-разному
2. Логика на клиенте не может быть полностью такой же как на сервере, т.к. состояния на клиенте и сервере всегда разные. А на клиенте присутствует логика, которая не нужна серверу (например прозрачность деревьев)
3. Сервер — java (можно считать это требованием), клиент — JS
Все три пункта идут от того, что вы изначально планировали обратный подход. Но в тех игровых движках, которые я знаю, клиент и сервер используют одинаковый игровой код, а сетевое взаимодействие реализуется так, что клиент отправляет на сервер пользовательские команды, а а сервер на клиент — снапшоты игрового мира.
Все три пункта идут от того, что вы изначально планировали обратный подход.

По пунктам 1 и 3 (разные движки и языки) я соглашусь. Можно было бы выбрать другие технологии и тогда можно было бы частично одинаковый код.

Пункт 2 же про более оптимальное и точное поведение. На вышеупомянутых примерах:
1. Прозрачность объектов. Зачем серверу знать об этом и тратить на это вычислительные ресурсы? Более того, в нашем случае сервер даже не знает о том, как выглядят деревья. Для него существует только та часть ствола, которая является препятствием.
2. Столкновения динамических объектов. Какая бы ни была идеальная синхронизация, состояния объектов в двух независимых процессах будут отличаться. Соответственно клиент не может со 100% уверенностью гарантировать (вот кто-то так же думает)

Подобные различия можно было бы вынести и использовать дополнительно к общей логике, здесь я согласен.

Отдельный вопрос по нагрузке на I/O. Слать постоянные снапшоты нам не хотелось. От этого подхода мы отказались почти сразу.
bugy, а будет ли статистика по серверу — сколько игроков за сегодня было (размер хабра-эффекта), среднее время в игре, кто откуда (география) — ну и самое главное: кто же всё-таки сегодня победил по очкам?

test3d, у вас очень высокие ожидания от нашей игры :) Никакой подобной статистики не ведется. Более того, у нас даже нет никаких логов (настраивая второпях linux service, я не добавил отправку stdout в какой-нибудь файлик).
При каких условиях, кстати, твой ник в таблице очков на первом высвечивается крупными буквами? Некоторое время висел в топе, пару раз заметил, что ник вдруг стал огромным :) Скрин снять не успел, от игры невозможно оторваться!
Это похоже на ещё один баг. Вроде как при изменении списка игроков, иногда шрифт слетает. Точнее не скажу, т.к. это не так часто проявлялось.
Спасибо за комплимент игре :)
Ох, а я-то подумал, что это поощрение за длительное пребывание на 1-м месте :)
Игра реально затягивает. Очень классно, что при своей простоте в ней при этом есть определённые фишки, позволяющие создать свою стратегию боя и защиты от снежков, а не просто мутозить кнопку мыши :)
Печаль только от лагов, когда заходит много игроков сразу. :(
Ого, вот за последний комментарий особое спасибо! Т.е. всё-таки игра не выдерживает более 10 игроков сразу. Надо будет её по-стресс-тестировать
Игра реально затягивает. Очень классно, что при своей простоте в ней при этом есть определённые фишки, позволяющие создать свою стратегию боя и защиты от снежков, а не просто мутозить кнопку мыши :)

mindjammer, поддерживаю. Мы сегодня компашкой играли — нашли свою стратегию боя и защиты, всех нагнули и вылезли в топ. Простота в игре только внешняя (графика — закос под примитив), на самом деле механика сделана довольно таки правильно. Автор то ли скрывает, то ли сам еще не осознал — фишка игры нынче в сражении между игроками. Задача разработчиков — дать честное поле боя для всех, а уж мы там подерёмся. И даже как бы баги игры стали не баги, а фичи, это тайное знание доступное старпёрам (напомню, игра на ГикТаймс опубликована сегодня, я зашла первая, значит я самая древняя).

Игра реально затягивает.
Что-то в ней есть. Моя задача — убедить авторов не забивать на свой эксперимент, а продолжить свои опыты, не потеряв это «что-то». Они нащупали — играбельность. Это как золото в Калифорнии найти, такое не бросают.

Однозначно не забивать! Добавить командные бои, с полем побольше, туда же добавить снежных крепостей парочку для каждой из сторон, сделать индивидуальный и командный счёт. Геймплей оставить всё таким же простым, кмк. Всё, это готовая бомба!
Зашёл посмотреть, что получилось, но, видимо, в неудачный момент – на сервере никого, поэтому удалось только побегать и покидать снежки в пустоту, но мне кажется, что у игры есть перспективы. Развлечься с её помощью можно определённо (но были бы хотя бы боты...) По-моему, для первой игры у вас получилось просто отлично.
Sign up to leave a comment.

Articles