如何组织游戏引擎
How to organize a game engine
我正在开发一个小型游戏引擎,我遇到了一个问题。
到目前为止,我有一个窗口类,它是Win32窗口的包装器。我还有一个窗口管理器类(它是一个单例类),它管理窗口的创建和窗口消息的处理。然后我有一个引擎类,这是迄今为止最重要的类,因为它是引擎的接口。这个引擎类包含主循环、direct3d设备,以及创建和销毁它的代码。这个引擎类还包含一个Window类对象,它充当direct3d设备的主/宿主窗口。我的问题是引擎需要对一些windows消息(如WM_SIZE或WM_ACTIVATEAPP)作出反应,但消息处理程序是Widnow类的一部分,这是一个"级别"低于引擎类。我还认为我应该创建另一个类来封装引擎的渲染/图形,然后将该类添加到主引擎类中。
所以我不确定我是否应该在窗口类中有一个图形类,或者在图形类中有一个窗口类,或者在主引擎类中并排放置它们。
您生活在事件驱动的世界中,所以使用事件。让你的窗口包装器提供事件,让游戏引擎可以挂钩并做出反应。
不要让控制游戏引擎如何与底层操作系统交互的对象成为引擎对象的子对象。操作系统层应该驱动引擎,而不是相反。
(大多数引擎和程序员都错了)
你会有多个Windows吗?多显示器越来越多地用于各种游戏。
你会在一个窗口上运行多个图形吗?几乎不太可能。这对我来说,窗口应该在图形中,而不是相反。
相关文章:
- 提高基于组件的游戏引擎的效率
- 虚幻引擎 3 游戏在 Steam 输入时崩溃
- 我的游戏引擎的 spdlog 日志记录出现奇怪的"unresolved external symbol"错误
- 游戏引擎矩阵乘法
- 如何在没有现有引擎的情况下在游戏中设计我的事件触发器框架?
- 游戏引擎 SFML C++错误
- 游戏引擎设计问题
- 使用虚幻引擎4编程的平台游戏中的偏转问题
- 我正在尝试安装游戏引擎,但遇到错误
- 我的游戏引擎的 FMOD 音频
- 如何在 GLFW 中为游戏引擎执行正确的输入类
- 游戏引擎:如何从结构:编码实践转换变量
- 如何防止游戏引擎更新循环中的多个声音呼叫
- 游戏引擎:Dynamic_cast-对象类不是多态类型
- 在游戏引擎布局中使用shared_ptr
- 虚幻引擎4.20在我尝试玩游戏时崩溃
- 如何打包游戏的资产并仅允许引擎读取
- C#或C++来制作游戏引擎(深度)
- DirectX 11 2D游戏引擎使用Direct 3D(C )
- 游戏中图形和物理引擎之间共享数据