游戏开发从哪里开始?
了解包含输入、状态更新和渲染的游戏循环
该博客上撰写的文章是出于教学目的而创建的。 另外,文章中的信息可能不正确,请谨慎。
游戏开发不仅仅是绘制图形。 它涉及创建接收玩家输入、改变游戏状态以及通过屏幕和声音传递结果的整个过程。
游戏反复更新其状态
角色的位置、生命值、分数、当前阶段都是游戏的状态。 游戏在运行时不断更新此状态。
读取输入。
更新游戏状态。
在屏幕上绘制当前状态。
再次重复此过程。
这种重复的结构称为游戏循环。 使用引擎时,循环本身由引擎管理,但开发人员编写每一步发生的情况。
while (isRunning)
{
ProcessInput();
UpdateGame(deltaTime);
RenderGame();
}
帧率和时间不同
每秒可以执行的帧数因计算机而异。 如果每帧移动角色 1 次,速度将在 30 FPS 到 144 FPS 之间变化。
因此,移动量是从前一帧开始经过的时间。deltaTime乘以
position += direction * speed * deltaTime;
这样,即使帧数不同,每秒的移动速度也能保持相似。 定期间隔很重要的系统(例如物理计算)可以以固定的时间间隔单独更新。
单独的规则和表达式
计算玩家攻击时的伤害量接近于游戏规则。 挥舞剑的动画和播放音效都接近表情。
将两者放在一个代码中可以增加添加新武器或网络功能时的修改范围。 通过划分数据、规则和屏幕表达式,可以在其他图形或 UI 中使用相同的规则。
无需从头开始创建大型游戏。 游戏开发的最佳开始是用一个输入、一个移动对象和一个明确的成功条件完成一个小循环。