我使用Netty开发了一款游戏服务器,到目前为止,它的工作正常。但内部结构不够好,目前服务器只接收命令,处理并将结果发送回所有客户端。
我需要这个服务器以30或60 fps的速度运行每个游戏室的分离线程,因此它会计算这个房间所有帧的物理和移动。目前,客户计算所有的动作,显然我有很多问题。我不能依赖客户......
问题是: 1)如何在某个特定时刻在Netty线程的单独线程上运行我的游戏?
2)如何与Netty通信这个线程来处理传入的命令?
提前致谢!
答案 0 :(得分:1)
创建一个新线程并不与netty真正相关。
刚开始吧:
new Thread( yourRunnable ).start();
或使用ExecutorService
:
ExecutorService executor = Executors.newSingleThreadExecutor( );
executor.submit( yourRunnable );
您的Runnable
可能就像是一个连续修改模型的类。要与netty通信...只需添加一个控制器类,其中包含允许您操作模型的方法(getter,setter,您需要的任何方法),并在从客户端收到命令时从netty处理程序调用它。
注意并发修改;你可能需要一些同步点。