Войти
ПроектыФорумОцените

Glor.io

Страницы: 1 2 3 4 5 6 7 Следующая »
#0
4:51, 5 апр. 2017

Привет всем, сделали недавно в качестве "проекта на выходных".

Играем за рыцаря, цель - построить замок и заработать как можно больше золота. Управление - мышка + WASD (или стрелки). Есть прокачка и можно ездить на свинье. Чтобы добывать ресурсы эффективнее - нужно строить крестьян.

Ботов нет, т.к. учить их человекоподобно строить проблематично.

Под капотом на клиенте Phaser, на сервере Node.js + ws + p2.js. Изначально использовали socket.io, но слишком большой оверхед при передаче бинарных данных. В качестве физики брали matter-js, но память текла как ненормальная, и gc фризил, с переездом на p2 прошло. Хостится все на микро-инстансах в Amazon. В планах попробовать переписать сервер на rust'e, должно раз в 5-10 больше пользователей держать навскидку.

Изначально обменивались сериализованным JSON, потом осознали свою ошибку, взяли protobuf-js. Сейчас захардкоженный вьюпорт 1920x1080, клиенту идут только измененные данные и только из вьюпорта (ну, помимо глобальных типа скора и миникарты), поэтому по трафику все достаточно компактно.

Крэши, баги, вот это все, присутствует.

Кто уже релизил .io игры, что посоветуете? Где выкладывали (я так понимаю iogames.space - самый крупный вариант из тех кто ссылку просит?) ? Какие подводные камни?

+ Скриншот

Ссылка на игру: http://glor.io/

UPD:

> Кто уже релизил .io игры, что посоветуете?

Раз никто не посоветовал, посоветую сам.

Пока тестировали на нагрузку ботами, рассчитывали на 100-400CCU глядя на другие выходящие игры, однако после того как iogames.space выложил игру, и начали появляться летсплеи, CCU вырос до 1500 к вечеру, мы смогли накинуть несколько серверов но уперлись в лимит, и все рухнуло.

Серверов не хватает, Amazon очень медленно обрабатывает запрос на повышение лимитов - вышел эпичный провал в самый пик.

Полезные выводы:

- Надо было изначально запрашивать повышение лимитов у Amazon'а
- Надо стресс-тестить вообще _все_, что есть в игре, и делать это долго (у нас было несколько утечек памяти, которые вылазили не сразу, при определенных действиях игроков, но ставили в ступор сервера после пары часов игры большой толпой).
- Плохая идея писать сервер на node.js
- Мы используем Elastic Beanstalk и одновременный апдейт (чтобы клиент и сервер были синхронизированы везде), но когда сервер под большой нагрузкой, он может не обновиться (память кончается, у нас же t2.micro), что приводит к попытке отката и красивой красной надписи на всех серверах. Пока решили это тем, что убиваем приложение перед выкатыванием.
- Прикручивайте перед стартом дашборд, чтобы видеть все сервера и их игровое состояние (мы даже прикрутили вывод всех возможных параметров сервера и игроков, включая профайлинг, сколько какая операция выполняется) - это дикий хелп к дебагу, например, после этого мы сразу нашли несколько утечек, и пришли к выводу, что у нас слишком высокая точность при обсчете физики, поэтому она самый большой тормоз. Ну и есть бонусы - можно найти популярного ютьюбера, присоединиться к нему, и поконтактировать на предмет раскрутки.

UPD2:

Один из самых полезных выводов:

- Никогда, никогда, никогда, не хостите ио игры у амазона, трафик выходит крайне дорогой (дороже чем сами сервера с лоадбалансерами и всяким).

UPD3:

Выкинули node.js, совсем, переписали сервер на расте, это как глоток свежего воздуха по скорости и отсутствию GC, по производительности получилось раз в 8-10 быстрее, и более предсказуемо по кпу и памяти. Почему раст? Потому что плюсы это скучно :). Есть, конечно, свои подводные камни ввиду новизны и малой популярности языка в геймдеве, все что лежит в крейтах - явно никем нигде в продакшене в таком виде не использовалось, приходится дорабатывать и чинить баги. К борроу-чекеру привыкается за неделю.

Приехало немного статистики, да, iogames.space - самый крупный .io портал, если судить по входящему трафику. Топ стран - USA/Russia/Brazil (возможно топ некорректен, потому что у нас нет серверов в Австралии, Сингапуре, и Японии/Китае). Причем бразильцы - одни из наиболее активных.


#1
6:25, 5 апр. 2017

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

#2
6:34, 5 апр. 2017

@typhoondev

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

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

#3
10:11, 5 апр. 2017

Забавно. Наворачивайте дальше :)

#4
10:32, 5 апр. 2017

Хочу скрины.

#5
10:39, 5 апр. 2017

@Skyblade Добавил.

#6
17:04, 5 апр. 2017

очень даже неплохо! и интересно ...

#7
18:24, 5 апр. 2017

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

#8
21:34, 5 апр. 2017

возможность респануть воинов на территории врага за стенкой - это фейл конечно. Зачем стена тогда нужна?
в целом довольно интересно

#9
9:37, 6 апр. 2017

@vater

Спасибо за фидбек! Да, похоже надо отображать радиус постройки, будем прикручивать.

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

> возможность респануть воинов на территории врага за стенкой - это фейл конечно. Зачем стена тогда нужна?

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

#10
10:08, 6 апр. 2017

Очень бесит, что не видно свою базу на миникарте. С другой стороны странно, что видишь на карте врагов, а враги - тебя. Никуда не спрячешься от хайлевелов.
Вообще, сразу в глаза бросается проблема, которой не было в agar.io. С одной стороны нет "веселого пожиралова" как там, и нужно что-то строить, копить ресурсы и т.п. Это интересно, но, с другой стороны, все время прибегает какой-то жлоб с толпой и просто тебя выносит без шансов на спасение. Нельзя просто так взять и убежать как агаре, ты привязан к своей морковке, башням и стенам. И получается, что неясно как играть, когда на карте есть более сильные игроки.

#11
14:53, 6 апр. 2017

@Went

Спасибо за фидбек. По миникарте, добавили в план, показывать постройки, хотя бы башни свои.

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

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

А вот тут если честно, не совсем понял. Если есть башня/стены/морковка, то уровень уже достаточно высокий + есть запас по ресурсам, в таком случае обороняться, особенно с грядками - сильно легче чем нападать.
Разница между 5-ым и 10-ым уровнем примерно в один удар (т.е. чтобы 10-ый убил 5-го нужно 3 удара, а наоборот - 4).
Соответственно тот кто обороняется, он в более выгодной позиции, за счет возобновляемой еды, стен, наличия достаточно сильных гвадров и камня рядом (если мы говорим про готовую базу). Если враг не оставил у себя на базе гвардов, а пришел и спамит ими, их на своей базе очень легко отгородить, таким образом лишив врага лимита, и он станет совсем уязвимым независимо от уровня.

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

#12
14:29, 13 апр. 2017

Очень круто получилось, а сколько по времени заняла разработка до альфы?

#13
14:50, 13 апр. 2017

@RunneRik

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

#14
14:29, 14 апр. 2017

n0uk
> в качестве "проекта на выходных".
n0uk
> полтора месяца где-то, плюс месяц

Фух, я уж думал я совсем слоупок и такое взаправду делается за выходные :). Потратил около двух недель на свою игру io в режиме "полуфуллтайм", но конечно еще пилить и пилить.
Проекту удачи!

Страницы: 1 2 3 4 5 6 7 Следующая »
ПроектыФорумОцените

Тема в архиве.