Предлагаю на выходных гипотетически подумать, как можно быстро и легко доработать сервер Minecraft так, чтобы можно было запустить несколько штук в одном мире (допустим, 16 серверов на 8 человек). Не, никто реально ничего делать не собирается, просто задачка для ума :)
Для определённости положим, что синхронизировать происходящее между серверными процессами мы не будем. Каждый работает сам по себе.
Проблему с миром вчерне решить несложно: кто первый загрузил чанк, того и тапки. Остальные получают read-only и их игроки не могут там строить и копать (вокруг всё «запривачено»). Оптимизировать тоже не очень трудно — небольшой алгоритм группировки игроков на серверах и выбора, кому именно отдать чанк при наличии рядом нескольких серверов-кандидатов (чтобы пореже сталкивались с «чужими» чанками).
А вот как быть с сущностями? Примерно понятно, что происходить с ними могут одновременно разные вещи в одной локации, если её взяли несколько серверов. Но как быть потом с изменениями в сущностях, чтобы можно было, допустим, за лутом вернуться, выгрузив-загрузив чанк? Как мерджить это от нескольких серверов?
Есть очевидные варианты, а есть хорошие. Меня увлекла задача поискать вторые :) и я приглашаю поломать голову со мной :)