Идея MMO RL1

Компьютерные игры сопровождали меня почти всю сознательную жизнь, начиная с 1995 года, когда у меня появился первый Pentium. Буквально за несколько месяцев я добрался до уровня «установить операционную систему за вечер», а в играх меня стали интересовать практически исключительно ролевые игры и квесты. Самые запомнившиеся названия тех лет: Diablo, Baldur’s Gate, Nox, Allods, Neverhood и проч.

Любовь к играм привела меня в программирование, но область я решил выбрать специфическую для тех лет — сайтостроение. Меня завораживала сама идея интернета, как фактора, объединяющего все человечество. И, сидя в районной библиотеке, я по модему выходил в сеть и читал практически все подряд, впитывая знания, как губка. Несколько раз наткнувшись на очень интересные и красиво сделанные сайты, я загорелся желанием уметь делать не хуже.

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

И, как в те давние времена, несколько лет кряду я погружался по вечерам в миры современных ролевых игр и, главное, рогаликов, перемежая их опытом массовых онлайновых игр. Из последних запомнившихся мне ролевых игр могу назвать серии Mass Effect, Dragon Age, Pillars of Eternity, Icewind Dale, Divinity, Tower of Time. Среди рогаликов и рядом стоящих жанров — это, конечно, Dwarf Fortress, ADOM, Tales of Maj’Eyal, Cogmind, Caves, Path of Exile, DCSS. Из онлайновых упоминания достойны Rift, World of Warcraft, Eve Online, Warhammer Online.

А теперь сложите два и два.

Если мне что-то нравится, я хочу научиться создавать подобное (или лучше). Мне нравятся три направления в играх. Для меня они уже давно из простого развлечения превратились в вид искусства, как кино или музыка. И мне довольно неплохо поддаются веб-технологии. Именно так и была рождена идея Null Mirror.

Нужно создать игру, сочетающую в себе три вещи:

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

Когда и как

Но есть несколько ограничений.

Во-первых, время. Мое свободное время состоит из отрывков по 2-3 часа вечерами, иногда большими частями в выходные, т.к. я посещаю трудовое учреждение (хожу на обычную человеческую работу).

Во-вторых, я представляю, как устроены игры изнутри, и знаю тот объем новой информации, что мне предстоит изучить (нет, на самом деле я тогда этого не знал — прим. 2019 г.). Добавить к этому еще и новый стек технологий (клиент-сервер, как во всех основных MMO-играх, языки программирования, и проч.) не очень реалистично.

Конечно, пока я буду заниматься созданием этой Dream Game, мне нужно что-то есть. Поэтому работу пока нет возможности оставить.

Решено. Будем писать игру на технологиях сайтостроения, вечерами, заодно решим проблему с многоплатформенностью — браузер есть на любом компьютере (даже иногда в холодильниках).

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

Кусочек кода на PHP


Интерпретируемый язык, коим является PHP, несомненно в один прекрасный момент станет порогом, о который мне придется долго и больно биться лбом. Дело в том, что его быстродействие ограничено. И если речь идет о масс-онлайн игре, то когда-нибудь, если она станет успешной, количество игроков достигнет такого уровня, что никаким железом (читай — количественным расширением парка серверов) не добиться приемлемого качества игрового процесса.

Но все равно я остановил свой выбор на PHP. По двум причинам. Первая: я хорошо его знаю и могу начать разработку прямо здесь и сейчас, со всеми нюансами и на должном уровне. Вторая: мне нужна максимальная скорость разработки, чтобы сбалансировать мой перфекционизм и стремление сделать именно Dream Game (что всегда выходит за все рамки приемлемых сроков).

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

Может, стоит как раз присмотреться к Unity?

Свой сеттинг

Что вообще такое сеттинг? Это свойство некоей придуманной вселенной, будь то книжная или игровая, которое объясняет нам, с чем нам в этой вселенной придется столкнуться.

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

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

Гимли не одобрил бы мой выбор

Игр, созданных по мотивам произведений Джона Рональда Руэла, такое безумное количество, что прямо оскомина наползает на лицо при слове «секира». Мне очень нравится его сеттинг, но делать что-то подобное — значит сразу быть раздавленным штампом «опять чертовы эльфы». Хоть некоторые люди и утверждают, что ничего нового придумать нельзя, и новое — это лишь странно совмещенные компоненты уже существующего, я точно уверен, что должный объем опыта, посыпанный воображением, способен придумать то, чего еще не было у других, сохранив определенную долю привычности.

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

Я лично принадлежу к огромной армии поклонников классического фэнтези, но у меня нет особенных ограничений, мне нравятся хорошие произведения, а не произведения в определенном сеттинге. Выбирать сеттинг для своей игры я точно должен по принципу «то, что я люблю», иначе как же мне создавать контент долгие месяцы?

Однако, давайте обойдемся без штампов. Орков не будет. Как и магии, берущейся из ниоткуда. Поизобретаем немного, взяв за основу классику.

И назовем сеттингом Null Mirror фьюжн из стимпанка, фэнтези и реальной человеческой истории, дополненной собственным видением того, как должны выглядеть интересные обитатели игровой вселенной и чем они должны заниматься. А поможет мне в этом моя жена, у нее с воображением и придумыванием персонажей получше, чем у меня.

C чего же начнем?

С проектирования.

Более того, потратим на это столько времени, сколько потребуется. И сейчас я вкратце объясню, почему.

Мой опыт уверил меня в истинности поговорки «семь раз отмерь, один отрежь». Боже, в мире нет более полезной сентенции! Мир программирования всегда был похож на лепку автомобиля из пластилина, но страшнее всего то, что люди потом правда пытаются ездить на этих автомобилях.

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

Как это делается? Я имею в виду, проектирование игр? Так же, как и в случае с любым продуктом. Сначала мы делаем грубый набросок. Затем досыпаем деталей туда и сюда. Потом еще немного деталей вон туда. Повторяем до тех пор, пока не ответим на все свои вопросы.

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

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

Поехали!

1 — MMO RL — Mass Multiplayer Online Roguelike