Я заинтересован в "взглядах высокого уровня", а также в реализации.
Реализации, как правило, достаточно глубоко вовлечены, и вы, вероятно, не будете много говорить о них здесь. Программное обеспечение StackExchange не подходит для такого рода дискуссий, не говоря уже о том, что оно потребует значительных затрат чьего-то времени.
Я хотел бы узнать, насколько сложно написать такую систему
Не более или менее сложная, чем любая другая система: это будет зависеть от ваших требований и функций, которые вы собираетесь использовать. Вы можете написать тривиальные реализации тривиально, но нетривиальные вещи, конечно, будут гораздо сложнее. Одна из самых больших проблем заключается в том, что вам, вероятно, не хватит реальных клиентов, чтобы сказать, действительно ли ваша система масштабируется до «массового» уровня, на котором работают WoW и другие игры.
ММО не волшебные. Большинство их технологий не является чем-то особенным, если рассматривать их изолированно. Просто очень маленькие и более простые технологии объединяются очень разумно, чтобы обеспечить более крупномасштабное параллельное моделирование некоторого общего состояния мира.
Я так хочу настроить кластер серверов, где каждый узел контролирует некоторую часть игрового мира со статическими границами. Игроки теперь могут перемещаться из одного конца света в другой, не переключая экземпляр и не нажимая на какого-нибудь «телепорта».
По сути, то, о чем вы говорите, - это симуляция. Это можно сделать довольно просто и не обязательно для конкретной MMO-технологии (одноранговые игры, как правило, поддерживают все те же базовые механизмы для реализации миграции хоста). Основная предпосылка заключается в том, чтобы каждый сервер понимал топологию серверов «вокруг» него (в частности, сервер для мирового узла A должен знать о серверах для смежных с моделированием мировых узлов), а также определял буфер, вокруг которого вы рассматриваете конкретная моделируемая сущность "близко" к соседнему серверу.
Когда объект входит в «закрытый» буфер, вы также начинаете сообщать о нем на соседний сервер. Как только объект пересекает фактический порог, вы отправляете сообщение на соседний сервер с полным состоянием объекта и сообщением, указывающим, что смежный сервер должен взять на себя объект. Очевидно, вы хотите, чтобы это было максимально надежно.