На даний момент я розробляю шутер від зомбі в режимі реального часу. Я кодую це в Java, використовуючи JBox2D як мій двигун фізики. Я кодував мережу на цьому тижні, і зараз я переймаюся фізичною синхронізацією.
Я планую використовувати прогностичну клієнтську / авторитетну модель сервера, де клієнт може вільно переміщатися, доки сервер згодом це схвалить. Це передбачає, що клієнт надсилає на сервер пакети, що містять дані про рух, і сервер обчислює затримку та повторно моделює світ із старого стану.
Моя проблема полягає в тому, що мій поточний двигун фізики JBox2D (в основному порт Box2D) не підтримує відкочування світу, і, мабуть, не так просто серіалізувати світові дані. У мене є 2 рішення, я можу або змінити / розширити свій поточний двигун фізики, або написати своє.
Причини написання мого власного фізичного двигуна -
- Я можу видалити непотрібні функції. У грі зверху вниз мені дуже потрібні лише механіки зіткнення та керованість. Ніякої сили тяжіння не бере участь.
- Я можу зрозуміти код краще, і було б [швидше за все] легше реалізувати функції відкоту
Причини розширення / модифікації JBox2D
- Написання власного двигуна фізики було б значною роботою, яка могла б бути громіздкою
- JBox2D має широку підтримку спільноти, яка може допомогти мені з моїм розробником
- JBox2D має спеціальні оптимізації для таких речей, як виявлення зіткнень, які роблять його корисним
- Деякі роботи, як уже зроблено над цим, але ділилися мало коду
То які ваші думки. Це моя перша гра, і я аж ніяк не професійний розробник ігор. Якщо хтось може надати кілька посилань на роботу, вже виконану в цьому районі (бажано, використовуючи JBox2D / Box2D / Java).
strictfp
скрізь, що серйозно вплине на продуктивність. Інакше сервер і клієнт можуть не отримати абсолютно однакових результатів. Я б рекомендував замість цього використовувати фіксовану точку.