Оффтоп Oleg Martynov
441

Браузерная онлайн игра в узкой нише длиною в 10 лет

Всем привет, меня зовут Олег и сегодня я поделюсь своим специфичным опытом в геймдеве. В середине 2009 года я учился на третьем курсе университета и не знал о программировании ровным счетом ничего. В тот момент я увлекся жанром спортивных менеджеров, играл в футбольные, а затем и хоккейные. Это были как десктопные игры, типо Football Manager или Eastside Hockey Manager, так и браузерные, наподобие Золотой бутсы или Hockeyarena. Должен сразу сказать, что классический браузерный спортивный менеджер - вещь в себе, подойдет далеко не всем и потенциальная аудитория довольно ограничена. А у хоккейного менеджера она еще меньше. Все дело в том, что количество событий, происходящих в менеджере в минуту времени примерно стремится к нулю. Официальные игры проводятся раз в сутки, а все остальное время менеджер настраивает состав и проводит трансферы (которые тоже приходится ждать).

В закладки

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

Сайт я запустил без части основного функционала, который я допиливал на ходу. Стартовал он на обычном хостинге за 100 руб в сутки, где расширения PHP включались через админку (ностальгия!). Народ привлекал спаммингом на тематических форумах. Через несколько месяцев старта активно играло порядка 50 человек, что я считал супер успехом. Говорить о подсчете какого-то баланса речи не шло. Багов было много.

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

Немного о движке. Да вы можете в меня кидаться, но движок генерации матча я тоже написал на PHP. С учетом того, что вычислений в первой версии было не так много, работало это довольно сносно. Хватило моих университетских знаний в тервере и мат анализе. По мере того, как росли мои профессиональные навыки, я несколько раз переписывал его архитектуру, выделил в отдельный модуль. С выходом PHP 7.0 переписывание его на другой компилируемый язык стало менее приоритетным, так как я перестал упираться в скорость самого языка.

Про профессиональный рост: естественно, мои мечты о том, что мой сайт будет приносить мне доход (тем более доход существенный) не реализовались. Но от него проявилась побочка, по сути предопределилась моя карьера программиста. И так получается, что несмотря на то, что проект формально не приносит прибыли, лично для меня он оказался супер прибыльным. После окончания университета я устроился на работу программистом (не в геймдев). Мои навыки довольно быстро значительно выросли и я переписал сайт на довольно известном фреймворке, поскольку внедрение новых фич постепенно становилось все более болезненным. Через 1,5 года я сменил работу, мой скилл вырос еще. Стал писать тесты. Потом была еще одна работа и еще одна. Я понимал, что все я делал в начале было говном. Думаю, через это проходили практически все программисты. Всему чему я там учился на работе, я старался внедрять на своем проекте, постоянно что-то рефакторил - это кстати довольно полезная техника, многим ее советую.

В данный момент у проекта порядка 350 активных пользователей, порядка 50к регистраций за все время. Как знать, может быть результат был другим, если бы я выбрал тематикой менеджера не футбол, а хоккей. Но в сфере футбола конкуренция намного выше. По статистике других менеджеров, той же хоккей арены(порядка 600 активных пользователей), я понял, что практически уперся в потолок в России. Тут два выхода: менять формат, чтобы привлекать другую аудиторию или выходить в другие страны. В данный момент сайт переведен на английский на 99%, но спамить на англоговорящих форумах я еще не начал =)

Только в последние два года я стал задумываться действительно о геймдеве: механиках, подсчетах баланса. Не без лишней скромности, мне кажется, что движок генерации матча, умения хоккеистов и тактики довольны сбалансированы. Но в игре существует некоторая проблема с деньгами - у старичков скапливается очень много денег, а тратить их практически не на что. И вообще после определенного момента игра практически исчерпывает механики для старых игроков. База отстроена, команда набрана, тактики установлены - можно заходить раз в день посмотреть на результат матча. Я понимаю, что наверно, это проблема для всех подобных игр, но может в комментах кто подскажет кейсы для решения подобных проблем. Кстати о том, как считать экономическую составляющую в играх, я не нашел в рунете ни одной хорошей статьи, которая предоставила хотя бы одну практическую схему.

Такая вот история, надеюсь кто-то вынесет для себя полезное.

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Oleg Martynov", "author_type": "self", "tags": [], "comments": 6, "likes": 15, "favorites": 11, "is_advertisement": false, "subsite_label": "flood", "id": 25609, "is_wide": false, "is_ugc": true, "date": "Fri, 24 Aug 2018 17:00:54 +0300" }
{ "id": 25609, "author_id": 75174, "diff_limit": 1000, "urls": {"diff":"\/comments\/25609\/get","add":"\/comments\/25609\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/25609"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 64955 }

6 комментариев 6 комм.

Популярные

По порядку

Написать комментарий...
2

На dtf очень мало историй про браузерки. Спасибо! Хоть и не играю в спортсимы -- было любопытно.

Сам подумываю про космическую браузерку на js (+ вероятно php). И в любом случае это пойдет мне в скилл и наработки, которые можно использовать далеко за пределами геймдева.

Ответить
0

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

Ответить
2

Повышайте зарплаты игроков в зависимости от их достижений и уровня, цены на содержание инфраструктуры + через какой-то период времени обязательный капитальный ремонт. Также надо заставить игроков больше ротировать состав команды, тем самым создавая новые расходы на трансферы/аренды. Для этого есть усталость игроков, травмы, скрытые дефекты например.

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

Ответить
0

Спасибо, интересные идеи, подумаю насчет капитального ремонта. Ротировать состав да, согласен

Ответить
0

Побейте верстальщика. Эта картинка мешает нажать на кнопку https://i.imgur.com/jdcLrJh.png
Удалил элемент и вуаля - кнопка доступна -_-'

Ответить
4

спасибо, пойду побью себя)

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
Новая игра Ubisoft на релизе выглядит
точно так же, как и на E3
Подписаться на push-уведомления