如何组织游戏引擎

How to organize a game engine

本文关键字:引擎 游戏 何组织      更新时间:2023-10-16

我正在开发一个小型游戏引擎,我遇到了一个问题。

到目前为止,我有一个窗口类,它是Win32窗口的包装器。我还有一个窗口管理器类(它是一个单例类),它管理窗口的创建和窗口消息的处理。然后我有一个引擎类,这是迄今为止最重要的类,因为它是引擎的接口。这个引擎类包含主循环、direct3d设备,以及创建和销毁它的代码。这个引擎类还包含一个Window类对象,它充当direct3d设备的主/宿主窗口。

我的问题是引擎需要对一些windows消息(如WM_SIZE或WM_ACTIVATEAPP)作出反应,但消息处理程序是Widnow类的一部分,这是一个"级别"低于引擎类。我还认为我应该创建另一个类来封装引擎的渲染/图形,然后将该类添加到主引擎类中。

所以我不确定我是否应该在窗口类中有一个图形类,或者在图形类中有一个窗口类,或者在主引擎类中并排放置它们。

您生活在事件驱动的世界中,所以使用事件。让你的窗口包装器提供事件,让游戏引擎可以挂钩并做出反应。

不要让控制游戏引擎如何与底层操作系统交互的对象成为引擎对象的子对象。操作系统层应该驱动引擎,而不是相反。

(大多数引擎和程序员都错了)

你会有多个Windows吗?多显示器越来越多地用于各种游戏。

你会在一个窗口上运行多个图形吗?几乎不太可能。这对我来说,窗口应该在图形中,而不是相反。