MMORPG является уже примером неизменности. Поскольку игра распространяется по серверам и игровым системам, здесь абсолютно нет центрального объекта «игровой мир». Таким образом, любой объект, который отправляется по проводам, является неизменным & mdash; потому что это не изменяется получателем. Вместо этого в качестве ответа отправляется новый объект или сообщение, если оно есть.
Я никогда не писал распределенную игру, поэтому не знаю точно, как они реализованы, но я подозреваю, что обновления объектов либо вычисляются локально, либо отправляются в виде различий по проводам.
Например, вы играете в Command & Conquer. Ваш гигантский танк сидит в режиме готовности, охраняя вашу базу. Ваш противник приближается с легким танком, чтобы исследовать вашу базу. Ваш гигантский танк стреляет и поражает танк противника, нанося урон.
Эта игра довольно простая, поэтому я подозреваю, что многое вычисляется локально, когда это возможно. Предположим, что компьютеры двух игроков изначально синхронизированы с точки зрения состояния игры. Затем ваш противник нажимает, чтобы переместить свой легкий танк в вашу базу. Сообщение (неизменяемое) отправляется вам по проводам. Поскольку алгоритм перемещения танка (вероятно) является детерминированным, ваша копия Command & Conquer может перемещать танк противника на экране, обновляя игровое состояние (может быть неизменным или изменяемым). Когда легкий танк попадает в зону действия вашего гигантского танка, ваш танк стреляет. На сервере генерируется случайное значение (в этом случае в качестве сервера произвольно выбирается один компьютер), чтобы определить, попал ли выстрел по вашему противнику или нет. Предполагая, что танк был поражен, и обновление танка вашего противника должно быть сделано, только diff & mdash; тот факт, что новый уровень брони танка снизился до 22% & mdash; отправляется по проводам для синхронизации игр двух игроков. Это сообщение является неизменным.
Неважно, является ли объект на компьютере игрока, представляющий танк, изменчивым или неизменным; это может быть реализовано в любом случае. Каждый игрок напрямую не меняет состояние игры других игроков.