使用相同类的客户端-服务器游戏中的渲染
Rendering in a client-server game which uses the same classes
所以我在构思一款小型在线游戏时遇到了这个小问题。
以下是它的工作原理:客户端和服务器将使用相同的"世界"实现——对象、物理模拟。假设我们有一个类World,它包含一个WorldObjects向量。WorldObject是其他类(如PlayerObject、BoxObject、MonsterObject)的派生基类。这里的问题是如何有效地为这些对象类声明自定义呈现方法。例如,PlayerObject的渲染方式必须与BoxObject不同。
需要记住的是,我们不能只创建一个虚拟渲染方法,因为这意味着例如BoxObject必须#包含"OpenGL.h",而这在服务器端是无法完成的(我们希望服务器端清除图形库)。
那么如何做到这一点呢?我想出了一个这样的想法:创建一个单独的单例(仅客户端),其中包含不同对象类型(例如通过枚举标识)的渲染方法的实现,但这是最好的方法吗?你知道什么更高效、更灵活的吗?
当然,我们在这里谈论的是C++,但如果有一条规则或实践你知道并在另一种语言中使用,请分享(这就是为什么我没有在帖子中真正指定语言)。谢谢
您可以引入从支持渲染的PlayerObject和BoxObject派生的类型,例如PlayerObjectRenderable和BoxObjectRenderaable(或者更合理地说,您引入了类似Renderable的Interface)。然后,当您为客户端创建(或分解)对象时,您将创建这些ObjectRenderable类的实例,而对于服务器端,您将使用更通用的实例。当它进入渲染时,您可以提供对Renderable接口的引用或指针。客户端工厂构建对象也可能是从广义工厂构建对象派生的,依此类推…
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 可以在nodeJS中创建3D多人游戏服务器
- 如何将SFML游戏服务器部署到Linux服务器
- 为MMO游戏设计日志服务器
- Cocos2dx C++将游戏数据发送到远程服务器上的MySQL数据库
- 使用相同类的客户端-服务器游戏中的渲染
- 将游戏服务器线程循环限制为 30FPS,而无需游戏引擎/渲染窗口
- MVC3在线游戏与独立的C++服务器
- Javascript客户端C++服务器游戏
- 游戏服务器的C++MySQL
- node.js Web服务器和C++游戏服务器
- 需要推荐c++游戏服务器,关于玩家使用的数据结构,怪物对象,以获得性能优势
- Tic-Tac-Toe客户端-服务器模型游戏
- 多客户端游戏服务器提示
- 如何创建多人游戏与联系人和实时通信,而不创建服务器
- 为游戏(和其他任务)提供简单而有效的UDP服务器策略
- 客户端-服务器多人游戏的良好实践
- (WINSOCK) c++游戏服务器:TCPAccept上一次有太多TCP连接