Мне нужен совет. Скоро мне придётся делать выбор между несколькими вариантами реализации движения кораблей с учётом движения планет. Я приведу особенности, положительные и отрицательные стороны вариантов, хотелось бы от опытных игроков услышать насколько важны доводы за тот или иной вариант, какие детали я упустил, что же в результате предпочтительнее. - При движении планет не изменяется расстояние до планеты назначения (как во всех зарубежных потомках Galaxy и оригинальной ДГ). Именно в этом случае верна поговорка "от инкаминга убежать нельзя". Запустив корабли, можно быть уверенным, что они долетят до цели именно тогда, когда планировалось, с каждым ходом "отъедая" от расстояния величину, равную скорости. Движение планет не влияет на время прибытия.
Как следствие -- очень удобно использовать планеты для перевозки грузов. Можно отправить планету и грузовики "вдогонку" за ней, с рассчётом, чтобы догнали у цели, таким образом сэкономить ход или больше. Пример: С планеты А(0;0) на планету Б(40;0) отправляется корабль со скоростью 20. Если планета Б летит вправо со скоростью 10, то на следующем ходу координаты Б будут (50;0), а координаты корабля (30;0). Если планеты А и Б летят вверх со скоростью 10, то на следующем ходу их координаты будут (0;10) и (40;10), а координаты корабля (20;10). В любом случае корабль прибывает на Б через 2 хода.
- При движении планет не изменяются координаты кораблей (как в современной ДГ и ОГС). Этот вариант несовместим с форматом отчёта, в котором предполагается, что корабли летают только по прямой между планетами, что приводит к разнообразным неприятностям (см. "Малоизвестные особенности Dragon Galaxy", GC#66). В принципе есть решение этой проблемы, предложенное Крашем (удивительно, что никто не додумался до этого раньше), при этом рассчёт положения летящих кораблей на следующем ход остаётся громоздким, но в принципе возможным -- владелец в клиенте видит действительное положение корабля. Но время прибытия остаётся неопределённым, очень трудно использовать планеты для перевозки грузов, легко "промахнуться", планета-"грузовоз" теряет ход при каждом развороте. В принципе это не критично, но неудобно.
Пример: С планеты А(0;0) на планету Б(40;0) отправляется корабль со скоростью 20. Если планета Б летит вправо со скоростью 10, то на следующем ходу координаты Б будут (50;0), а координаты корабля (20;0), корабль не долетит за 2 хода. Если планеты А и Б летят вверх со скоростью 10, то на следующем ходу их координаты будут (0;10) и (40;10), а координаты корабля (20;10). Но клиенты покажут корабль в точке (17.64;10).
- При движении планет не изменяется расстояние до исходной планеты (не использовалось). Довольно любопытный вариант. Владелец планеты назначения может "увести" её от инкама, зато владелец исходной планеты может "подтолкнуть" инкам.
Это даст очень интересные тактические решения. Промахнуться мимо планеты невозможно (можно лишь "убежать" планетой), использование планет для перевозки отличается от 1-го варианта, но имеет свои приятные особенности.Пример: С планеты А(0;0) на планету Б(40;0) отправляется корабль со скоростью 20. Если планета Б летит вправо со скоростью 10, то на следующем ходу координаты Б будут (50;0), а координаты корабля (20;0). Если планета А летит вправо со скоростью 10, то на следующем ходу координаты А будут (10;0), а координаты корабля (30;0). Если при этом Б летела со скоростью 10 влево, то её координаты также будут (30;0) и корабль долетит до Б всего за ход. Если планеты А и Б летят вверх со скоростью 10, то на следующем ходу их координаты будут (0;10) и (40;10), а координаты корабля (20;10) (как и в варианте 1). Вариант 2 в отличие от 1 и 3 плохо приспособлен для случая "дрейфа" планет (как например и в "Бездне"). Движение летящих кораблей становится плохо предсказуемым даже при синхронном движении планет (в некоторых случаях "дрейфа" можно предсказуемо двигать и летящие корабли, но лишь в тривиальных, не представляющих никакого игрового интереса, кроме эстетического).Вариант 1 классический и отражает естественную внутреннюю структуру отчёта и всех старых серверов. Но если рассматривать то, что "от инкама убежать нельзя" как безусловный недостаток (для чего вероятно на ДГ и перешли к варианту 2), то интересной альтернативой становится вариант 3. Поскольку у меня запланировано несколько проектов с "дрейфом" планет (вращающаяся и расширяющаяся/схлопывающаяся галактика, движущиеся кластера, та же "Бездна" в конце концов), то от реализованного сейчас варианта 2 придётся отказаться. Выбор за 1 и 3. В принципе, возможно реализовать даже все три варианта, сделав это опцией партии. Но я не уверен, что такое усложнение оправдано. К тому же от варианта по-умолчанию будет зависеть внешний формат партии во второй версии ОГС. Всё вышесказанное относится прежде всего к ОГС, изменения на котором неизбежны (но пройдёт ещё время, достаточное для рассмотрения вопроса). Что касается ДГ, то было бы весьма желательно избавится хотя бы от самой грубой ошибки (не соответсвие координат кораблей в сервере и клиентах) используя решение Краша или подобное. Самый простой способ состоит использовании на сервере кода клиента (доступного ГМ ДГ как автору ГВНГ) для коррекции координат, но можно рассмотреть и другие способы коррекции (могу предложить свою помощь по реализации исправления). Переход же к вариантам 1 и 2 на ДГ как я подозреваю сопряжён со значительным переписыванием кода сервера (если не изменением формата базы игры) и вряд ли Роман решится на него. Но я могу и ошибаться.
http://uplanet.ru | http://pbem.uplanet.ru | http://galaxylegend.ru | http://duelserver.ru | http://www.galaxyclub.ru | http://galaxylegend.ru/press/pz | http://www.orioner.ru/racelist | http://forum.galaxylegend.ru | http://pbem.eu.org/B-on/logs/html
|