понеделник, 30 януари 2012 г.

МАЩАБИРАНЕ НА ВСЕЛЕНАТА


Здравейте!

Това е превод на статия от официалния сайт на DUST 514, в който CCP LIN, грижещ се за гейм сървърите на CCP GAMES, разказва както за техническите предизвикателства които той и колегите му са срещнали при хардуерното и софтуерно обезпечаване на играта, така и подхода с който са успели да се справят с тях.

Като сървърен архитект на проекта, аз съм отговорен за интеграцията на DUST 514, който е FPS предназначен за мултиплеър битки във вселената на EVE ONLINE. Също така отговарям и за оптимизирането на сървърите, които хостват битките в DUST 514 за да подобря тахната работа. За разлика от нормалните FPS, DUST 514 набляга силно и на MMO елементите. И за разлика от излезлите до днес MMO FPS игри, DUST 514 има много дълбока връзка със една от най успешните ММО космически игри - EVE ONLINE. Възнива въпроса какви технологии трябва да използваме за да постигнем това ниво на взаимодействие с EVE, докато FPS битките вървят възможно най-гладко.

Както е добре известно, EVE е направена на програмния език Питон(Python) и по конкретно на една от най-добрите му разновидност - Stackless Python. Той позволява взаимна многонишковост (cooperative multithreading) на програмно ниво. Тъй като технологиите на CCP са тясно свързани със Stackless Python, DUST 514 би трябвало също да ползва тези технологии за да има гладко взаимодействие със вселената на EVE.

След като DUST 514 разчита на Unreal 3 енджин за своя мултиплеър геймплей, взаимодесйствието със EVE естествено трябва да използва някои съществуващи EVE технологии. Един вид DUST 514 клиентът трябва да се явява като специална част от EVE клиентът (тук под клиент разбирайте софтуера на играта който инсталирате на PC-то или конзолата си). Освен това, групата от EVE сървъри трябва да се справя с обработката на информацията постъпваща от DUST 514 клиентите, както го прави и с тези от EVE клиентите, за да може мрежовия трафик и симулацията на играта да продължат да бъдат добре балансирани. Трябва да се знае, че технологиите в изцяло Python-базирания EVE клиент не могат просто сложени в DUST клиента, защото PlayStation 3 платформата е ограничена откъм ресурси. Затова трябва да внедрим някой "по-леки" мрежови технологии, които обаче да са възможно най-близо до тези използвани в EVE - просто те ще трябва да се справят с CPU-то и паметта които PS3 има като наличност.


Друг аспект е взаимодействието на самите "бойни" сървъри(сървърите на който се пресмятат битките) и EVE вселената. Нека помислим как би трябвало една DUST битка да започва:


EVE корпорация прави боен контракт за завземане на територия на дадена планета, която към момента се притежава от друга EVE корпорация. Група наемници от DUST514 приемат контракта като нападатели за да приберат предлаганата сума, а друга като защитници, така че те ще вземат награда ако защитят територията. Когато числеността на всеки отбор достигне предварително определен минимум, EVE сървър трябва да инструктира подходящ "боен" сървър на DUST514 да създаде бойно поле, като му достави информацията, необходима за коректно генериране на първоначалните данни на битката. И тогава DUST клиентите, който са на нападателите и защитниците ще бъдат пренасочени към бойния сървър, който ще симулира битката. След като битката свърши и всеки от участвалите си получи дела от контракта(ако има да взима), процеса на "бойния" сървър ще бъде терминиран от EVE.

Освен че EVE трябва да определя продължителността на битките в DUST 514, трябва да сме сигурни, че чувствителния на забавяния геймплей на FPS върви достатъчно бързо за играчите на DUST. Няма да се впускам в подробни технически обяснения за това как се справяме със предизвикателството описано в предното изречение, защото все още изследваме всички възможности с цел да открием най-добрата точка на баланс.


За разлика от традиционните FPS мултиплеър сървъри, ние ще имаме "бойни" сървъри по цялото земно кълбо. Тъй като хардуерните ресурси на централизиран сървър са доста ограничени на брой, ние трябва да намерим начини да ги използваме, колкото може повече. Вместо да имаме специално предназначен сървър за една битка, ние искаме да имаме мулти-ядрен сървър, който да може да поддържа колкото може повече битки едновременно!

Вече направихме доста значителни подобрения за оптимизацията на FPS енджина който ползваме както на клиента, така и на сървъра, така че в момента един "боен"сървър да поддържа задоволителен брой биещи се играчи. Но ние постоянно прави подобрения на всички аспекти на DUST 514, за да направим играта страхотна за всичките ни бъдещи играчи!


CCP LIN
Server Architect

Няма коментари:

Публикуване на коментар