Utopia Realms ч2: Друзья

Utopia Realms ч2: Друзья

— Этот чувак неимоверно крут, я хочу работать вместе с ним

Всё не так просто

Современные компьютерные игры состоят из слоёв, каждый из которых играет свою роль в общем процессе. Сумев нарисовать несколько кубов на экране, я разобрался только с первым уровнем — выводом графики. Для полноценной игры нужна система, которая подготовит то, что будет отрисовано на экране, и ряд вспомогательных — работа со звуком, физика, пользовательский интерфейс. Попытавшись нарисовать что-то похожее на майнкрафт, я быстро понял что тут не всё так просто. Игровой мир состоит из небольших кубиков, и, в типичном окружении пользователя их насчитывается около 1 миллиона. Чтобы нарисовать 1 кубик нужно 12 треугольников, итого имеем 12 миллионов треугольников, которые нужно рисовать 60 раз в секунду. Это намного превосходило возможности графических систем которые были доступны на тот момент. Для того чтобы игра вообще запустилась используются разные трюки. Игровой мир должен быть динамичным, пользователь может изменять его и игра должна очень быстро показывать ему новый, изменённый мир так, чтобы он этого не замечал. Кроме того, игрок может двигаться по бесконечному миру — игра должна оперативно дорисовывать новые области по мере исследования.

Работы просто нереальное количество. На дворе август 2011 года. Я стал искать людей, которые уже делали что-то подобное. И нашёл 2х, на мой взгляд, наиболее перспективных из них (смотреть в HD)

Slaihne12:

s33m3s:

Ребята сделали эти видео сами, написав код движков с нуля. Впечатляющая работа. Не долго думая, я написал каждому из них письмо с предложением войти в их команду. Я рассказал что делаю свой движок и наткнулся на сложности реализации. Slaihne12 очень вежливо ответил, что он пока не видит возможности разделения своей работы с кем-то ещё. А s33m3 сказал, что пока не готов сотрудничать, однако он отправил мне исходники своей первой попытки реализации движка и пожелал удачи.

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

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

Если тебе интересно, напиши мне на email, и я вышлю тебе исходники того самого движка, который написал тогда.

Fabian

С готовым движком я ещё раз написал s33m3, рассказал ему о проделанной работе и предложил заняться разработкой игры вместе 50/50. Я бы взял на себя сетевую часть, с которой имел очень много опыта из-за своей основной работы, а он занялся графикой, которая получалась у него намного лучше. Он согласился и мы взялись за работу.

Под псевдонимом s33m3 скрывался 34 летний программист из бельгийского города Namur. Зовут его Fabian, он женат и на тот момент у него был маленький сын. Работал он программистом баз данных в какой-то местной компании. Всё свободное время мы тратили на разработку нашей игры. Общение наше проходило на ломанном английском через почту и в текстовых чатах skype. Надо сказать, что Fabian был очень трудолюбивым, он очень много работал, и я старался не уступать ему. Сейчас, будучи руководителем, я понимаю что имея в команде 2х таких специалистов по производительности мы бы заменили отдел из 5-8 человек. Fabian обожает картошку фри, а ещё его очень забавляло то что у нас много японских автомобилей. В целом, он очень замкнутый человек. За эти 4 года он так и не отважился поговорить со мной голосом, хотя я несколько раз звал его.

Simon

Нас стало двое, и работали мы как проклятые, но работы все равно было намного больше чем мы могли сделать. Через несколько месяцев разработки я продолжил поиски и наткнулся на ещё один проект — TechCraft. Нашёл на форуме наиболее активного участника — Enomi, и написал ему письмо с предложением объединить наши усилия в разработке, конечно же, изначально заручившись согласием s33m3. Enomi воспринял эту идею с энтузиазмом, мы собрали общий чатик в Skype, обсудили основные моменты и взялись за разработку.

В реальной жизни enomi зовут Simon. Ему тоже больше 30. Он живет в Канаде, в пригороде Квебека и регулярно ездит на своем Rav-4 на работу в город. Женат. Вечерами он очень любит выпить бокал дешевого вина за ужином в своем собственном доме.

Кроме него к нам присоединилось ещё несколько человек, однако, почти все достаточно быстро отключились от процесса разработки и просто наблюдали за происходящим, периодически участвуя во флэйме. Enomi же проявлял регулярную активность, хотя и уступал по этому параметру нам с s33m3.

Block Team

— «Russia is so damn huge»

Enomi

 

Так как мы находились в разных концах земного шара, коммуникации у нас были необычными. Первым просыпался я, в девятом часу разбирал почту и решал оперативные вопросы с Enomi, который уже, как правило, собирался ложиться спать. У него ещё заканчивался предыдущий календарный день, что регулярно служило поводом для шуток. Затем, около часа дня подключался s33m3. Мы обсуждали накопившиеся вопросы, и, когда я уходил отдыхать, s33m3 и Enomi общались уже между собой.

Периодически, в моменты когда все были онлайн, мы общались на обычные житейские темы. Enomi хвалился как ему хорошо жить и работать в Квебеке, высокая заработная плата, не высокие требования к кандидатам, удобный город. Он звал нас с s33m3 к себе. Так как Квебек это город, где селятся в основном франкоязычное население, s33m3 серьёзно задумывался над его предложением, но так и не решился. Мы рассказывали друг другу о наших родных местах. Ребят интересовало правда ли, что в России есть места где водку можно купить дешевле чем воду. Мы мерялись размерами наших стран и городов. Их удивило когда я сказал что наш город — Кемерово, маленький, и сказал что тут живет больше 500 тыс. человек. В их представлении это был очень большой город, а я же всегда считал Кемерово чуть ли не деревней. Кроме размеров нашей страны, еще одним поводом для гордости стал интернет. Вообще, с каким бы иностранцем я бы не заговорил, их всегда удивляла и скорость доступа и цена, которую мы платим. Для них за счастье был интернет в 5-7 мегабит против моих 100 при вдвое-втрое меньшей цене.

Общение в чате всегда было очень вежливым и дружелюбным. Мы всегда помогали друг другу. В общении на английском есть один интересный момент. На русском мы обычно говорим «надо сделать то-то». Хрен поймёшь, будет ли человек сам это делать или он предлагает сделать это тебе или вообще просто делится наболевшим и какая-то работа не подразумевается. На английском же почти всегда «you need to …» «I need to …» сразу понятно что тебе говорят, и нужно ли тебе заморачиваться или нет)

Раскол

— «oh come on, vlad»

Enomi

 

Начиная проект я изначально задавал очень высокую планку качества кода, которой s33m3 в целом соответствовал. Но для Enomi это стало настоящей проблемой. Несмотря на то что у него было 10 лет опыта в java разработке (как он говорил), почти всё что он писал приходилось переписывать, чтобы это можно было хоть как-то реально использовать в проекте и не гробить нашу архитектуру. Часть работы переделывал я, часть s33m3. Надо сказать, что у нас было регулярной практикой переписать чужой участок кода, когда у тебя появлялось лучшее понимание того как он должен был быть устроен. Enomi понимал, что не дотягивает до нас, и в конце концов конфликт назрел. После моего очередного разбора ошибок его кода мы первый и единственный раз подняли градус нашего общения. После этого он почти перестал что-то вкладывать в проект и позже, набрав себе новую команду, решил отделиться и делать свой проект. Позже s33m3 сказал мне что Enomi звал его присоединиться к ним, но он остался со мной.

Где-то через год они запустили краудфандинговую кампанию на indiegogo. Когда она провалилась набрав 3% я испытывал смешанные чувства. Разошлись мы мирно и в дальнейшем несколько раз очень тепло переписывались.

***

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

 

P.S.

Я почти ничего не сказал о ещё одном крутом человеке, который целиком нарисовал и сверстал, а потом и запилил наш сайт, а также нарисовал дизайн интерфейса игры. rkit, спасибо тебе огромное. Ты неотъемлемая часть этого проекта.