alexflim
Технологии и развитие на сегодняшний день и 13 лет назад, когда ева только зараждалась - разные миры. Переделать движок евы сегодня на порядок сложнее, чем написать всё с 0. Писать всё с 0 никто не будет - потому что переделать нужно будет вообще ВСЁ - серверную часть, клиента, ассеты и вагон и маленькую тележку всего прочего. За те 10 лет резила в еве столько фитч, что разрабатывать будут лет 5 в лучшем случае, а то и дольше.
Разрабатывать можно и 100 лет. Вопрос в том какикими силами и за какие деньги.
Я указал силы и деньги - и с такими силами и деньгами нет проблем написать с нуля еву в два раза лучше чем была.
Второе у евы глобально три затыка
1)Однопоточность
2) Питон
3) Дерьмовый мейн луп сервера- куда впихано и обращение к бд и гейммеханика и вообще всё
Так вот написать с нуля новое серверное ядро (мб сразу "облачное") это в разы легче чем переделывать то овно что ццп называют сервером с его корявым и уже никому не известным (об чём они сами признаются) легаси кодом.
Далее клиент не имеет НИКАКОГО отношения к серверу - ничто не мешает переписать сервер в ноль и оставить тот же клиент и теже данные в БД и тото же контент в клиенте.
Занимаются распланированным размеренным апгрейдом подсистем, оптимизацией и рано или поздно дойдёт до самого ядра. Само ядро у них необходимости переписывать пока нету срочной - у них есть пачка более приоритетных подсистем, обновление которых даст гораздо больший эффект - "Brain in a box" всплывает в памяти к примеру.
Брейн ин а бокс это всего навсего убирание из мейн лупа игромеханики пересчёта скилов (всех) каждый раз при смене шипа - это вообще не подсистема , а то что не надо было делать с самого начала и если уж сделали то должно было быть исправлено еще 5 лет назад.
Так-же проблема существующих проектов в том, что им нужно не сломать всё то, что работает с данной конкретной подсистемой. И не важно какую игру возьми - времени и ресурсов на это нужно гораздо больше, чем писать с 0.
Я один вижу протеворечие с первым абзацем?
Почему 1.5 человека делают месяц это по-твоему нормально? Бухой выпускник щуки за полчаса с бодуна же? Надо быть последовательным в своих убеждениях.
Следи за руками. Бухой выпускник щуки НАРИСУЕТ тайфун- на бумажке. За пол часа , да даже за десять минут и с бодуна.
Что никак не связано с тем что варгейминги тратят на новый танк 1 месяц
Это просто факты, сходу пруф не нагуглю, но он был. Разрабам танков в таком вопросе не к чему врать.
Модель в игре? (имплементированая уже как ассет) или модель вообще?
Открою страшную тайну - в Python есть GIL (Global Interpreter Lock), из-за которого разносить логику по потокам не то что не выгодно, а порою даже вредно для производительности. Само собой, я говорю про интерпретируемый код - нативные расширения вполне могут молотить на нескольких ядрах. Поэтому параллелят методом "один поток на процесс, процесс на ядро". Работает довольно неплохо при адекватной архитектуре.
Прежде чем ругаться на Python, замечу, что все критичное (навроде обсчета физики, ракет и пушек) у CCP давно спущено в нативные расширения. На момент же старта разработки евы (97-й год, на секундочку), адекватного языка с green threads кроме Stackless Python не было.
Да но сейчас 2013 и поэтому стоило бы переписать сервак.
Предлагать же "переписать все на плюсах чтобы было быстро" могут только школьники, не понимающие сути проблем в производительности.
Под аллоды ядро сервера переписывалось дважды при уже запущенном проекте.
Опять же, в девблогах упоминалось, что ортогональными функциями занимаются отдельные ноды - есть маркет ноды, чат ноды, грид ноды. Маркет в жите никак не мешает ганкать в Akora.
Что до обращения к БД, то persistence внезапно очень важная вещь. Между откатами и лагами многие разработчики выберут лаги (потому что откаты по рассинхронам это очень мерзкая вещь, лучше их убивать в зародыше).
Но ничто не мешает сделать отдельный диспетчер обращений к БД (виртуально шардированную) и работать через репликацию чтобы сохранять свой любимый персистанс, а не лазать туда из игромеханики и тормозить ея
То, что для хранения БД CCP использует DRAM SSD производства RAMSAN, знают даже люди, очень далекие от евы. Быстрее на настоящий момент нет ничего. Афаик у Texas Memory Systems CCP первый гражданский клиент (до этого были строго американские военные)
SSD нормально собранная база должна жрать 5000-7000 tps -тогда не было бы спайка лага при бомбёжке при уже работающем TiDi
Как вариант система обращений кривая и смерть шипа вызывает более чем 1 транзакцию (СИЛЬНО более чем одну- тк их не 3000 тыс зараз гибнет)
Адекватных программистов вообще мало. Это суровая реалия жизни. Таких, чтобы шарили в распределенном программировании со всеми его нюансами - вообще мизер. Странно что CCP в такой маленькой стране как Исландия вообще смогли найти такие кадры, и при этом подняться с ног без жирного иностранного наукоемкого middleware. Местами получилось не очень, но то, что получилось вообще - это феномен. Возьми любой город в РФ с населением Исландии (320к) и представь, что местные программисты основали контору которая способна породить продукт уровня EVE. Верится? Слабо.
Да исландия это опа. Но это не помешало иметь ЦЦП Шанхай и ЦЦП КФ - захотели бы сделали "программерский офис" в штатах
Ну внезапно 100к ццу и 4к ццу это разница в 25 раз
Ты лукавишь говоря что разница небольшая, ну или не имел опыта работы с такими проектами. По факту:
По факту с игровыми проектами на 100к ццу имело дело столь малое количество людей что хватит пальцев чтоб всех пересчитать.
Однако оне есть.
1) Твой траффик с внешних интерфейсов столь велик что способен завалить магистральный провайдер
2) Внутренняя сеть кластера на гигабит перестает справляться, а апгрейд до инфинибенда это сложно и дорого
3) Вылет винта, памяти, процессора на одной из машин - это статистически не редкость допускающая даунтайм, а нечто, происходящее раз в сутки
1) ? это вы неподумавши игровой проект же
2) Чтож я такое передаю что у меня гигабита нехватает (вся бд будет пол террабайта дай бог)
3)Ну если у вас гугловый датацентр то наверно да, если у вас кластер на 100к кку то нет.
PS
Деградация SSD вполне предсказуемое явление и следовательно решается своевременной заменой.
4) Любое провисание, вызванное отвалом коннекта БД, сетевыми лагами, partition в сети - порождает за минуты бэклоги, которые синхронизируются часами, а при этом в этом inconsistent state надо работать.
У меня есть опыт масштабирования таких масштабов, и поверь, проблемы начинаются уже на 10к, и каждый новый рубеж порождает новые ботлнеки. Шардинг - это реально в разы проще. БелАЗ это не легковушка увеличенная в сто раз, это принципиально другая машина.
В игровом сервере отвал БД это падение сервера - тк операции с предметами(весь итем менеджмент) перестанут проходить (а если они у вас проходят при отвалившейся БД то у вас дико кривой код гейм механик серверов и архитектору надо оторвать руки)
PS
И что масштабировал? просто интересно.
Если вспомнить те же танки, то они в свое время уперлись в 250к ццу на одном кластере, после чего ушли в шардинг с центральной БД. При этом шарды больше 150к теперь не создают. Хотя казалось бы, что может быть проще по масштабированию, чем бои 15 на 15.
250к кку это достойная цифра применительно к еве этого было бы более чем достаточно. (онлайн за пять лет практически не изменился если не упал тк я помню цифры в 65к кку - сейчас в основном даже в выходные 50к кку)
PS
В случае с варгеймингами шардирование натуральное решение и можно было бы дробить хоть по 3к - просто резать более крупными кусками удобнее вплане обслуживания
PPS
Мэйловцы обещают на скафордже масштабирование до 1 млн кку.
Тьфу-тьфу, а последний год CCP имхо няшки и большую часть вещей делают правильно. Не сглазь. От добра добра не ищут 
А чего там у нас такого было вообще сделано в последний год? ТиДи вроде в прошлом ещё, кружочки вместо квадратиков?