2016-02-16 2 views
0

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

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

Вопросы: 1) как я могу запустить свою игру в отдельном потоке из потока Netty, в какой-то данный момент?

2) как передать эту цепочку с Netty для обработки входящих команд?

Заранее благодарен!

ответ

1

Создание новой темы на самом деле не связано с netty.

Просто запустите его:

new Thread(yourRunnable).start(); 

или использовать ExecutorService:

ExecutorService executor = Executors.newSingleThreadExecutor(); 
executor.submit(yourRunnable); 

Runnable Ваш, вероятно, что-то вроде класса, который модифицирует свою модель непрерывно. Чтобы связаться с netty ... просто добавьте класс контроллера с методами, которые позволяют вам манипулировать моделью (getters, seters, любыми методами, которые вам нужны), и вызывать ее из обработчика netty, когда вы получаете команду от клиента.

Позаботьтесь о постоянных модификациях; вам, вероятно, понадобятся некоторые точки синхронизации.

+0

Я использовал Thread и отлично работал! благодаря – Danielzt