运行器

运行器Runner 是控制游戏行为的最主要对象,它虽然不能控制游戏生命周期,但可以控制在生命周期内如何完成游戏更新、渲染,并分发窗口事件等。

创建运行器

运行器最主要的功能是执行 启动函数OnReady销毁函数OnDestroy ,用来初始化游戏和在游戏结束时回收资源。

可以使用继承的方式创建运行器:

class MyRunner : public Runner
{
public:
    MyRunner()
    {
        // 游戏设置
        Settings s;
        // ...

        this->SetSettings(s);
    }

    void OnReady()
    {
        // 完成游戏初始化
    }

    void OnDestroy()
    {
        // 完成游戏资源回收
    }
};

// 创建运行器
RefPtr<Runner> runner = new MyRunner;
// 启动应用
Application::GetInstance().Run(runner);

运行器选项

运行器选项用来设置窗口属性、背景色等,它的完整定义为

struct Settings
{
    WindowConfig window;          ///< 窗口设置
    Color        bg_color;        ///< 背景色
    Duration     frame_interval;  ///< 帧间隔
    bool         vsync_enabled;   ///< 垂直同步
    bool         debug_mode;      ///< 调试模式
};

关于窗口属性的详细说明,请参考创建窗口

控制画面帧率

画面帧率(FPS)是指一秒钟内游戏画面的刷新次数,帧率越高画面越流畅,同时也消耗更多的CPU和GPU资源。

Kiwano 默认开启了垂直同步(VSync),也就是说游戏的帧率会尽量等于你的屏幕刷新率,目前大部分屏幕是60Hz,所以你的游戏画面会基本稳定在60 FPS。

如果你需要修改画面帧率,可以首先在运行器设置中取消垂直同步,然后设置帧间隔时间:

Settings s;
// 取消垂直同步
s.vsync_enabled = false;
// 设置帧间隔时间
s.frame_interval = 1_sec / 100;

1_sec / 100 表示 1 秒钟除以 100,也就是每一帧的间隔是 10 毫秒,这样一秒钟就可以刷新 100 帧,即 100 FPS。

处理窗口关闭

当用户点击窗口的关闭按钮时,可以通过继承方式给用户弹出一个提示窗,询问用户是否关闭:

class MyRunner : public Runner
{
public:
    bool OnClosing()
    {
        int ret = MessageBox(NULL, TEXT("确认要退出吗?"), TEXT("退出"), MB_YESNO | MB_ICONQUESTION);
        if (ret == IDYES)
        {
            // 返回 true 表示允许用户退出
            return true;
        }
        return false;
    }
};

results matching ""

    No results matching ""