Хабрахабр

[Из песочницы] MMORPG в одиночку (2d stalker)

Привет ребят! Текст ниже, расскажет вам о том, как я два с половиной года разрабатывал свою ммо игру про сталкеров, артефакты, выбросы, и байки у костра.

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

Так как рисовать я не умею, сразу встал вопрос насчет графики. И разработка началась. Когда-то давным-давно, на старые кнопочные телефоны (j2me), независимыми энтузиастами разрабатывалась игра «Zone of Aliation». И ответ на этот вопрос нашелся. Графика из этой игры идеально подходила для моего проекта. Если описать игру в двух словах, то это 2д сталкер для мобил. Павел не отказал и даже нарисовал еще кое-что, за что ему большое спасибо. Я связался с автором графики — Павлом Шевелевым, и спросил разрешения использовать её в своей игре.

Перемещать черный квадрат это одно, а сделать полноценную игру — совсем другое. Далее требовалось писать код. Информации в рунете по этому поводу кот наплакал, а про примеры я вообще молчу. Если в поисковике вбить — «Как сделать онлайн игру?», конкретного ответа, который хоть капельку мог бы помочь, вы не найдете. Досконально изучив все 9 лекций (одна лекция в среднем длится около двух часов), мне таки удалось на их основании, построить крепкий скелет клиент-серверного взаимодействия для моей будущей игры. Но мне все же удалось отыскать на Хабре информацию о видео-лекциях Виталия Чибрикова, в которых рассказывалось о том, как написать сервер для онлайн игры. Пара слов о технологиях которые я использовал — сервер написан на java, база данных MySql, сетевое соединение netty. Если бы не Виталий, я бы не добился такого результата, за что ему большое спасибо. Клиент написан тоже на java при помощи фреймворка libgdx.

Для начала смастерил локацию. Имея графику и механизм передачи данных, оставалось самое «простое» — сделать игру. Затем прикрутил смену дня и ночи, плюс погодные эффекты. Потом добавил игрового персонажа, научил его ходить. Потом добавил стрельбу, чтобы можно было убить этого кабанчика. Далее создал первого моба — кабанчика. И вот уже имеется, что-то отдаленно напоминающее игру. Затем сделал pvp, чтобы можно было убивать не только кабанов, но и других игроков. Все многократно осложнялось тем, что это ММО игра. Казалось бы игровых функций практически никаких нет, но на реализацию всего вышеперечисленного ушла куча времени. На начальной стадии разработки, сервер вылетал от каждого чиха. Почти любое совершённое тобой действие в игре, должны видеть окружающие тебя игроки. До начала разработки я и представить не мог, какое количество задач мне придется решить. Практически каждый день, я сталкивался с кучей проблем и ошибок. Но разработка потихоньку шла и игра развивалась.

И сервер и несколько копий клиентов запускались на одной машине и общались друг с другом через localhost. До определенного момента тестирование велось только на моем личном пк. Арендовал железо, минимальной конфигурации с линуксом на борту. Но по мере развития проекта ко мене все чаще и чаще приходила мысль — «А не пора ли игру показать людям и устроить настоящее тестирование с живыми игроками ?» И в один прекрасный момент я решил, что пора. «Вот это да!!!» — подумал я, оно работает. Загрузил туда свою программу-сервер и после новой порции геморроя и танцев с бубном, сервер успешно запустился. Мы с ним побегали по карте, пообщались в чате, да постреляли в кабанчиков. Первым человеком который зашел в игру, был художник Павел. Шли дни, игра росла и развивалась, примерно раз в две недели я устраивал открытое тестирование, во время которого любой желающий мог поиграть и затестить новые функции. После чего я довольный и счастливый от того что все работает, приступил к разработке с удвоенной силой. Отличное было время, я создавал виртуальный мир который жил по моим правилам и законам, во время тестирований я ощущал себя чуть ли не богом. Иногда счетчик онлайн игроков переваливал за сотню. А сколько интересных историй приключилось в игре! Иногда заходил на сервер и просто наблюдал за игроками, они там бегают, общаются, ссорятся, мирятся, создают кланы, воюют, собирают артефакты, влезают в аномалии, послушно разбредаются по домам во время выброса. Тех кто отказывался платить расстреливали (в том числе и меня). Помню, какие-то парни объявили себя бандитами и сшибали бабло за проход в определенную локацию. Или как то раз, группа сталкеров во время выброса, спряталась в домике со всех сторон окруженным забором и кто-то завалил единственный выход аномалиями электра (есть артефакт который создает аномалию) после выброса группа оказалась замкнута во дворике этого дома до самого конца тестирования, так как в то время, после смерти игрок возрождался на том же месте, на котором умер.

Отдельно хотелось бы остановиться на способе добычи артефактов. На данный момент в игре реализовано: 20 локаций, смена дня и ночи, дождь, pvp, pve, 3 вида мобов с разным поведением, массовые набеги мобов на базу, 1 рейд босс, 13 артефактов с разными характеристиками, 8 аномалий с разными эффектами, болты для поиска и разрядки аномалий, 8 квестов, система опыта и прокачка скилов, сталкерский pda, радиация, выбросы, группировки, война группировок за территории, npc которые умеют стрелять по мутантам и прятаться от выбросов в домах, рюкзак и система итемов, торговля с npc и игроками, 9 видов брони, 7 видов оружия, детектор аномалий, детектор радиации, гитара плюс еще около 15 различных итемов, и конечно же возможность присесть у костерка и пообщаться в чате с другими игроками. Артефакты рождаются после выброса в аномалиях, и изначально не видны игроку, для того чтобы артефакт можно было поднять, требуется выполнить ряд неких уникальных для каждого артефакта условий.

Или вот чтобы добыть «Сердце», требуется использовать артефакт синева (создает новую аномалию) так, чтобы новая аномалия попала в аномалию импульс, плюс требуется отсутствие солнечного света, то есть артефакт можно добыть только в ночное время. Например, чтобы добыть артефакт «Кровь» требуется, чтобы аномалия электра второго уровня, при срабатывании (бросок болта), соприкасалась с аномалией кислотное облако (летает по карте в произвольном направлении).

Из-за этого постепенно количество игроков в игре уменьшалось, а я все яснее понимал, что попросту не смогу доделать игру. Над всем этим я работал больше двух лет, но вся соль в том этого контента хватает на дня три-четыре, после чего в игре попросту нечего делать. Считаю что добился неплохого результата, но все равно надо смотреть правде в глаза — в одиночку полноценную ММОRPG создать невозможно ну или почти невозможно. Я потратил уйму времени на разработку, но кажется не доделал проект даже на половину. Да и мало кто захочет разбираться в моем коде, так как написан он далеко не идеально, ну и самое главное его много, очень много, прям реально много. Я предпринимал попытки найти еще одного программиста, но людей отлично знающих java и имеющих опыт в разработки клиент-серверных приложений не так много. Код выкладывать в открытый доступ пока не собираюсь, возможно когда-нибудь, наигравшись в stalker 2, все таки я его доделаю.

Никаких ссылок и названий не привожу дабы не сочли за рекламу. Вот такая вот вышла история.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»