Походовый тайминг многопользовательского режима

Материал из Клуб любителей рогаликов
Перейти к: навигация, поиск

У меня есть идея для синхронизации мультиплейерных игр, которая более пошаговая, чем реалтаймовая. Я не знаю как работает сюрреалистичное время, так что я не уверен отличается ли оно или нет.

Моя основная идея заключается в том, чтобы игра была строго походовой за исключением случаев когда игроки рядом друг с другом (ничего нового). Когда игроки находятся около друг друга, она остается по существу походовой до тех пор пока все игроки делают ходы достаточно быстро. Тем не менее, если игрок слишком долго делает ходы, он "теряет" свой ход - продолжительность времени, отпущенного ему на "тайм-аут" зависит от того, насколько близко находится игрок к другим игрокам.

В действительности игрок не "теряет" ход, на такое время как эта задержка, поскольку ему дан самый верхний приоритет, так что он может сделать свой ход в любое время (т.е. не дожидаясь чтобы ещё кто-нибудь сделал другой ход).

Кроме того, вредные эффекты задержки хода смягчаются тем, что обычно монстры, атакующие игрока будут всё ещё ждать этого игрока, чтобы сходить перед его ходом. В игре которая отвергает атаки игрока против игрока, это означает, что игрок обычно в безопасности на столько времени, сколько он хочет подумать над следующим ходом.

Основной недостаток этого метода в том, что возможно объединёнными усилиями обмануть систему. Игрок, находящийся в затруднительном положении может просто перестать ходить, позволяя другому игроку прийти на помощь независимо от того сколько времени это потребует. Этот недостаток может в действительности быть преимуществом если есть желание поощрить сотрудничество.

Вот описание того как это работает:

Порядок игры определяется последовательно пронумерованными "ходами", которые далее подразделяются на "фазы (phases)". За ход сначала ходит один игрок, а потом может ходить ряд монстров. За "фазу" одно создание выполняет одно действие. Первая фаза хода всегда является ходом игрока. Последующие фазы хода - действия монстров.

Игроки могут ходить не в строгом порядке, но вместо этого они ограничены ожиданием хода соседних игроков. Всякий раз, когда игрок делает ход, запускается набор таймеров - по одному за каждого соседнего игрока - в соответствии с расстоянием:

1 поле = 10 с
2 поля = 8 с
3 поля = 5 с
4 поля = 4 с
5 полей = 3 с
6-8 полей = 2 с
9-15 полей = 1 с

Перед тем как сделать ход, игрок должен ждать пока все эти таймеры не обнулятся. Всякий раз, когда один из игроков поблизости делает ход, связанный с ним таймер обнуляется. Таким образом, игрок может всегда делать ход немедленно после того как все соседние игроки сходили (с момента его последнего хода).

Назначение этих таймеров состоит в том, чтобы дать всем соседним игрокам шанс отреагировать на ход игрока прежде, чем игрок снова сможет сходить.

После хода игрока, он видит слова "жди 9", появившиеся на экране в случае если он должен ждать своего хода более одной секунды, пока все таймеры не обнулятся. (Счетчик ожидания отсчитывает в обратном порядке с 9 или любого другого значения до нуля, выбирая из оставшихся таймеров таймер с максимальным значением.) Когда все таймеры обнулятся, сообщение об ожидании исчезает, и игрок может ходить в любой момент.

Монстры могут ходить после хода игрока. Монстр попытается сходить если выполняется любое из следующих условий:

  1. Игрок, чья очередь хода, атакует монстра этим ходом.
  2. Монстр преследует/убегает/атакует игрока, чья очередь хода.
  3. Игрок, чья очередь хода - ближайший к монстру игрок.

Если монстр пробует сходить, он сравнивает номер своего последнего хода с номером последнего хода текущего игрока. Если номер последнего хода монстра меньше или равен номеру последнего хода игрока, то монстр ходит.

Например, предположим пару игроков Adol'а и Bahn'f поочерёдно атакуют крысу. Если крыса начинает свой ход после хода Adol'а, то она не может ходить во время хода Bahn'а, и чтобы сходить она будет ждать пока снова не настанет очередь хода Adol'а. Последовательность ходов выглядит как:

  1. Adol, крыса
  2. Bahn
  3. Adol, крыса
  4. Bahn
  5. Adol, крыса

Что случится если Adol слишком долго ждёт и Bahn сходит дважды подряд? Крыса сможет сходить во время хода Bahn'а.

  1. Adol, крыса
  2. Bahn
  3. Bahn, крыса
  4. Adol
  5. Bahn, крыса

В этом случае, возможно окажется, что Adol может быть атакован дважды, прежде чем отреагирует - но только потому что рядом был Bahn и ход Adol'а истёк. В случае атаки монстром с соседнего поля, Bahn также следующий после монстра, может потребоваться по крайней мере 8 секунд для его хода перед тайм-аутом прежде, чем Bahn сможет сделать ход (таким образом допуская сследующий ход монстра).



Автор: Isaac Kuo.
Источник: Mostly Turn-based Multiplayer Timing.
Перевел: Дмитрий О. Бужинский [Bu], 29.08.2005.