Можешь мне кратко набросать функциональную спецификацию "ядра" на уровне концепта? Что делает, каким целям служит? Как, с кем и посредством чего взаимодействует?
Есть у меня ощущение, что ты смешиваешь понятия ООП и агентно-ориентированной архитектуры, но даже там организация общения агентов разных версий - задача нетривиальная, ибо они друг друга банально могут "не слышать" или "не понимать"
Почему эти рассуждения похожи на троллинг? Пожалуй, я не совсем к месту употребил термин ООП. Суть моих рассуждений в том, что нет необходимости брать старое "ядро" и чинить в нем что-то, а достаточно взять новое и заставить его внешне выглядеть как старое.
А ядро - это совокупность функций реализующих взаимодействие с ОС, отображение графики, сетевые функции и обрабатывает взаимодействие объектов составляющих наполнение мира.
Нет, не троллинг, просто пока я обдумывал твой пост у меня родились минимум 3 описания "ядра", напрямую или косвенно связанные с ООП, что я боялся, что начну спорить сам с собой.
Так вот, твое "ядро" - это лишь капля в море, обеспечение прорисовки, сетевое взаимодействие и общение с ОС - это важная часть, конечно, но не ключевая при необходимости проработки вопроса поднятия старых серверов.
Ключевыми становятся вопросы самой совокупности объектов и ошибок, связанных с их взаимодействием друг с другом. Например, очень любопытен баг с продажей непривязанной к персонажу сумки, в которую уже был добавлен предмет посредством манипуляции с пакетами, что позволяет во-первых, ронять сервера, во-вторых, дюпать вещи. Пофиксен был, если мне не изменяет память в конце Пандарии, завязан на объединенных серверах, для которых, кстати, сетевой протокол был переписан, что и позволило баг реализовать, однако сам баг (насколько я могу судить) скорее всего состоит в криво прописанной проверке на принадлежность сумки владельцу (ведь пользуясь интерфейсом нельзя положить вещь в сумку, не привязав сумку к персонажу). Если так, то это баг не "ядра" а как раз надстройки, следовательно, в классической версии надстройки он так же присутствует, а мультисерверное ядро позволяет его использовать. Чтобы его пофиксить, требуется накатывать пре-Дренор надстройку, либо вносить изменения в код, что повлияет на совместимость патчей.
Теперь по поводу самого ядра. Ядро или, я думаю в твоей интерпретации можно это называть более простым для широкого круга термином "движок" построен на определенных условиях, предъявляемых к надстройке. Например, модель прогнозируемого перемещения, разработанная еще во второй, кажется, кваке для оптимизации сетевого взаимодействия (когда сервер не только считывает у тебя твое положение, но и прогнозирует, где ты должен находиться, что позволяет комфортно себя чувствовать при слабом соединении) в какой-то момент устарела и была заменена на более ресурсоемкую, зато более надежную систему двойного опроса, когда и клиент сообщает серверу о своих действиях, и сервер верифицирует их посредством хранения стека последних совершенных действий. Кстати, на стыке этих подходов построена система "прекастов" когда ты жмешь на заклинание во время окончания каста другого, которую близзард с триумфом и помпой внедрили в вотлк.
Очевидно, подобная архитектура взаимодействия требует совершенно другой работы между ядром и надстройкой. Так вот, новое ядро ждет этой новой работы, а старая надстройка не может ее осуществить. Что делать?
И это то, что я и ты можем оценить со стороны - в реальности же в коде творится ад. Я думаю, что есть области кода в которые в принципе запрещено лезть девелоперам из-за непредсказуемости последствий. Вроде размера рюкзака.