История разработки FAF от ZePilot (создателя)

Примечание: здесь и далее по тексту SC FA – Supreme Commander: Forged Alliance.

 

Часть первая: глупая идея.

 

Я играл в Starcraft 2 с kekouse. Это было плохо и скучно.
Мы с ним опечалены ситуацией с SupCom FA.

Я: «Это печально, у Galactic Wars есть лобби, и это хорошо, часть GW не работала. Но нормальное лобби, какой-то нормальный патч и мы могли бы получить надежду, что игра заживет новой жизнью!»
Kekouse: «У нас никогда не будет такой игры, как SupCom FA, при нашей жизни!»
Я: “Хммм … Интересно, как трудно было сделать что-то вроде GW …”
Kekouse: “Ты никогда не сможешь сделать это!”
Я: «Посмотри на TA Spring. Делаю простой IRC-клиент для чата, с помощью PyQT я могу создать прототип быстрого интерфейса… Боже мой, это действительно возможно!»
Kekouse: “Хорошо, давай (ты) сделаем(шь) это!”

Обратившись к некоторым старым моддерам в GPG, и получив ответы вроде «вы глупы» (я особенно помню, что DeadMG сказал, что это слишком большая работа для двоих парней ради дюжины игроков :), я начинаю налаживать свою работу над сервером для SC FA…

То, что вы прочитаете здесь и далее, может стать большей частью нашей недавней истории:

(Рис. 1 – увы, утерян)
То, что вы видите, было первым сервером FAF. И что еще более удивительно, эта часть кода все еще находится в текущей версии сервера!

25 июня. Можно сказать, что это официальный день рождения FAF.

(Рис. 2 – увы, утерян)
Вы видите, что SC FA подключается к серверу, и сервер просит его создать лобби.

“Ура !!!” «Это вполне возможно и не так сложно!»
Что за глупая мысль …
После одного или двух дней мне удается создать рабочее лобби для одного игрока.

(Рис. 3 – увы, утерян)
(Вы можете видеть, как я счастлив: «ура, это работает», – сказал в чат.)

27 июня.

Хорошо. Сервер готов!
Теперь пора браться за лобби.

(Рис. 4 – увы, утерян)
Вот скриншот первой версии лобби, самой первой когда-либо существовавшей. Он подключается к IRC-серверу и ничего не делает, но меня распирает гордость. Это случилось 29 июня.

 

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

Здесь я хочу поблагодарить за терпение ранних альфа-тестеров, которые проводят вечера, пытаясь соединиться с моим сервером, снова и снова: Kekouse, Ephez, Olivarius, Nesar, я надеюсь, что никого не забыл.

 

4 июля:

Первая связь между двумя игроками и первая игра в FAF! (Я выиграл)
SC FA запускалась вручную :)

Вы можете узнать старый список игр. Это представление прожило долго :) А вот значки пенисов не прижились.

Два дня спустя вышла первая альфа сервера (с автоматическим запуском SC FA), запущенная на моем медиацентре.

Часть вторая: остальные.

 

Как я уже говорил в первой части, я прекращал играть в SC FA примерно на год, в это время я играл в другие игры.

SC FA еще не продавался в steam, и статистика GPGNET была довольно плохой, когда я начинал делать свой проект:

И я решил – сейчас или никогда, настало время попытаться реанимировать эту игру!

 

Стоит понимать что и другие проекты, а не только FAF, появлялись и пользовались успехом у игроков в течение долгой жизни SC FA. И о таких проектах пойдет речь далее.

 

Проект: GW Галактическая война

 

Как уже упоминалось ранее, именно идея, что GW была бы замечательным лобби, побудила меня сделать то, что я сделал.
Но моим «дизайнерским» планом был TA Spring: эффективный, быстрый и простой.
Для тех, кто не помнит GW, я напомню, что у этого проекта вышла только бета.

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

Но, как признала команда GW, их амбиции были в 1000 раз больше, чем команда смогла сделать в реальности.

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

  • У них был только один кодер, который (кажется), к сожалению, слушал все требования команды, даже экстравагантные (3d карта галактики, ….)
  • Бета версия была многообещающей, но они закрыли ее. Не смотря на наличие людей, поддерживающих проект и видящих улучшение с каждым новым обновлением, а ведь это действительно важно и является главной движущей силой в таких проектах.
  • Сервер был недостаточно эффективен, клиент работал не так хорошо, но вместо того, чтобы это исправить, они расширяли функционал для неработающей версии.

Итак, помня об этом, я исправил некоторые моменты, сделал их более реалистичными и сделал точную дорожную карту.
Вот она: https://bitbucket.org/thepilot/falobby/wiki/RoadMap

План состоял в том, чтобы как можно скорее выпустить первую рабочую версию.
Дорожная карта старая и с тех пор не обновлялась. Со временем я изменил порядок приоритетов, но огладываясь назад, могу утверждать, что я счастлив: я выполнил все сроки и даже с опереженимем графика!
Версия, запланированная на конец года, была готова в сентябре.

На стороне сервера моей «целью» был эффективный и простой сервер:

  • Должен работать на одноядерном Atom (дешевый сервер).
  • Должно занимать не более одного такта памяти (текущий сервер работает на 4-500 МБ с 300 игроками онлайн).
  • Должно быть в состоянии поддерживать 1000 игроков (это оптимистично, но помогает сохранять оптимизированный код).

 

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

Тем не менее я спросил главного кодера GW, возможно ли иметь доступ к коду GW.
Все, что я получил, по неизвестным причинам (я не настаивал), это один старый файл, делающий то, что я описал в части 1. Так что, в целом это было бесполезно для меня.
Это для меня до сих пор остается грустным моментом, потому что вся их работа потеряна навсегда. (Я не думаю, что кто-нибудь еще раз попытается воплотить проект GW, если я потерплю неудачу).

 

Проект: FA-Ladder

 

Одна из моих самых больших ошибок, и я до сих пор прошу прощения за это.
Как я уже сказал, я покинул SC FA довольно давно.

Когда я ушел, FA-Ladder был действительно молодым, и был просто модом и хранилищем повторов с прототипом подбора игроков 1 на 1.
Когда я начал FAF, я, честно говоря не обратил внимания на данный проект должного внимания, хотя он был очень продвинутым (в основном, возможно, потому, что в память моей закрепилось название и ассоциация с чем-то простым. Я думал, нзвание не изменилось, значит ничего не поменялось, хотя в действительности у проекта возможности были большие). Проект никак не рекламировали и не обсуждали, так что я не особо много читал или знал о нем.

Проблема заключалась в том, что цели FAF и FA-Ladder были одинаковыми. После запуска первой публичной бета-версии мне кто-то сказал: «Эх, тебе следует связаться с Moritz!».

И я увидел, каким стал FA-Lobby, и был впечатлен.

В то время у FAF было больше инструментов для сообщества (чат, список игроков, более очевидный список игр), но FA-Lobby был намного более продвинутым во всех других областях.

Поэтому я попросил Moritz  объединить усилия. К сожалению, поскольку он использовал Java, было трудно / невозможно объединить код.
И я убил проект FA-Ladder.

Это не было целью, я не рад этому. Moritz по-прежнему является одним из разработчиков FAF, поэтому я надеюсь, что никаких обид.

 

Проект: PlayerTrack

 

Это была база данных с оценками рейтинга игрока другими игроками – альтернатива real lobby.
Хотя я любил статистику (и FAF предложит ​ очень скоро такую же систему :), мне не нравились идея оценки рейтинга одного игрока другими игроками. Я понимад цель, но это действительно предвзятое отношение.
Меня также очень интересовали иконки рангов в TA-Spring.

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

 

Сообщество

 

Я пропускаю историю дальше, но опять же, когда я ушел, 3603 был просто сделан как мод, все надежды на официальный патч ушли, и я остался с мыслью, что все хотят увидеть настоящий 3603 патч для FA.

Когда я вернулся с FAF, я был так счастлив сказать всем, что это наконец возможно.
Тогда я обнаружил ужас.

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

Я был в ужасе от того, что родились два культа: 3603 ненавистников и 3603 почитателей.
Не все были довольны патчем. Я до сих пор не понимаю, почему и как это произошло, но я снова пропустил один год истории SC FA.

Koecher ввел для меня термин «делитель сообщества», Moritz сказал мне, что он не слишком много рекламировал FA-Ladder из-за ненавистников 3603 … «ЧЕМ СТАЛО СООБЩЕСТВО SC FA!» Я кричал в своей голове.

Я оставил отличную группу игроков, надеясь на GW, 3603, новые блестящие вещи … чтобы найти группу интеграторов с обеих сторон.

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

 

Я не один

 

В первой альфа-версии лобби многие люди помогали мне тестировать функции. Ephez, Kekouse уже упоминались, но все сообщество FA Canard PC (французское сообщество) тоже помогло.

Несколько человек помогли мне кодировать FAF.
Как было сказано ранее, одной из моих целей было использование более простого решения: IRC для чата, веб страниц для максимально возможного количества вещей.

Сервер воспроизведения в реальном времени
Первый сервер живого воспроизведения довольно старый, и он старше чем FAF, и был создан Mancer. Batto помог добавить некоторые функции, такие как задержка и отладку и другое: http://code.google.com/p/openlivereplayserver/
Позже я заменил его своей собственной версией на Python.

TrueSkill
Это не совсем помощь, это полная реализация кода Moser в python (а теперь и lua): http://www.moserware.com/

Хранилище карт
Первая версия хранилища карт (сетевая) была сделана Olivarius. То же самое для первого списка лидеров 1 на 1.

Иконки
Иконки танков были сделаны Ephez.

FA lobby
Moritz, очевидно.

Сервер
Первый сервер FAF был размещен на Wolfmic.

Открытие первой общедоступной альфа-версии состоялось 5 июля 2011 года.

Эта версия была очень простой. Нет автообновления, нет поиска игр 1 на 1. Был чат и пользовательские игры, и на этом все.

 

Также можно ознакомиться с историей появления и развития FAF глазами обычных игроков 

История FAF

Источник:
https://forums.faforever.com/viewtopic.php?f=2&t=896&sid=9a11b15a21539a88c5efe3b4d4a9313d

Related posts

Leave a Comment