Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество

jME3 Безголовый Сервер

Опубликованно: 09.07.2017, 0:16
Последняя редакция, Andry: 09.07.2017 15:44

Когда вы добавляете многопользовательский режим в свою игру, вы можете обнаружить, что ваш сервер должен знать о состоянии игры (например, где игроки, объекты? Был ли это прямой удар? и.т.д.). Вы можете все это самостоятельно написать, но есть более простой способ.

Очень легко изменить текущую (клиентскую) игру, чтобы она функционировала как сервер.

Что означает Безголовый(Headless)?

Безголовый сервер …

  • Не выводит на экран никакого вывода — окно не открывается, воспроизведение звука не производится, графика не отображается.
  • Игнорируются все вводимые данные — нет обработки ввода.
  • Содержит состояние игры — вы можете прикреплять, изменять и сохранять rootNode, хотя сцена и не отображается.
  • Вызывает цикл simpleUpdate() — вы можете запускать тесты и запускать события, как обычно.

Код Клиента

Во-первых, давайте взглянем на стандартный способ создания новой игры (в ее простейшей форме):

public static void main(String[] args) {
  Application app = new Main();
  app.start();
}

Код Безголового Сервера

Теперь вы можете начать игру, с простейшими изменениями, в режиме Безголовый. Это означает, что все вводимые и аудио/визуальные выводимые данные будут проигнорированы. Это хорошо для сервера.

import com.jme3.system.JmeContext;
import com.jme3.system.JmeContext.Type;

public static void main(String[] args) {
  Application app = new Main();
  app.start(JmeContext.Type.Headless);
}

Следующий шаг

Итак, теперь вы уже можете начать игру в безголовом «режиме сервера», что дальше?

  • Parse String[] args из основного метода для включения режима сервера по требованию (например, запустите свой сервер как java -jar mygame.jar –server.
  • Интегрируйте SpiderMonkey, чтобы предоставлять игровые обновления серверу по сети.
  • Выполняйте только код, который необходим. (Например, поместите весь код рендеринга внутри if (servermode) — блока) (или if (!servermode) для клиента).
  • Добавьте хорошо сделанный журнал, чтобы ваш сервер имел смысл.

Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.