Я пишу 2D космическую RTS-игру на C #. Одиночная игра работает. Теперь я хочу добавить несколько функций для многопользовательской игры. Я искал это в Google, и кажется, что есть только один способ обеспечить непрерывное движение тысяч юнитов без мощного сетевого соединения: отправлять только команды по сети, выполняя одну и ту же симуляцию для каждого игрока.
А теперь проблема: весь движок везде использует дублёры. А вычисления с плавающей запятой сильно зависят от оптимизации компилятора и архитектуры процессора, поэтому очень сложно поддерживать синхронизацию. И он вообще не основан на сетке, и имеет простой физический движок для перемещения космических кораблей (космические корабли имеют импульс и угловой момент ...). Так что перекодирование всего материала для использования фиксированной точки было бы довольно громоздким (но, вероятно, единственным решением).
Итак, у меня пока есть 2 варианта:
- Попрощайтесь с текущим кодом и перезапустите с нуля, используя целые числа
- Сделайте игровую локальную сеть только там, где пропускной способности достаточно, чтобы иметь 8 игроков с тысячами юнитов и отправлять позиции и ориентацию и т. Д. В (почти) каждом кадре ...
Поэтому я ищу лучшие мнения (или даже советы по переносу кода на фиксированную точку, не испортив все ...)