游戏的构成

Posted albert0504

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了游戏的构成相关的知识,希望对你有一定的参考价值。

一个游戏基本上是一个连续的循环,它完成逻辑动作并以每30帧/每秒(或更高)的刷新率在屏幕上绘制图像。

下面是一个简化的游戏循环结构:

 

一:初始化

在这一步中,游戏程序执行标准初始化操作,如内存分配、资源采集、从磁盘载入数据等等

二:进入游戏循环

在这一步中,代码执行到游戏主循环,此时各种操作开始执行,执行持续到用户退出主循环为止

三:获得玩家的输入信息

在这一步里,游戏玩家的输入信息被处理或缓存,以备下面的人工智能和游戏逻辑步骤使用

四:执行人工智能和游戏逻辑

这一部分包括游戏代码的主体部分,诸如执行人工智能、物理系统和一般游戏逻辑,其结果用于在屏幕上绘制下一帧图像

五:渲染下一帧图像

在这一步中,玩家的输入和第四步中游戏人工智能和游戏逻辑执行的结果,被用来产生游戏动画的下一帧动画,这个动画通常被放在离屏缓存区(offscreen buffer area)内,因此玩家不会看到它逐渐被渲染的过程。随后该图像被迅速复制到显示器中并显示出来

六:同步显示

通常由于游戏复杂程度的不同,游戏在计算机上运行的速度会时快时慢,而这是难以接受的。因此必须把游戏按照某个最大帧速率进行同步,并使用定时功能或等待函数来保持同步。

七:循环

这一步非常简单,只需返回到游戏循环的入口并重新执行上述全部步骤

八:关闭

这一步是游戏的结束,表示将退出游戏主程序或主循环,并回到操作系统。然而,在用户结束游戏之前,游戏程序必须释放所有的资源并清理系统,这些释放资源的操作对任何其他软件也是同样要做的

 

游戏循环是一个含有大量状态的FSM(Finite State Machine),下面是更详细的一个版本:

 1 #define GAME_INIT
 2 #define GAME_MENU
 3 #define GAME_STARTING
 4 #define GAME_RUN
 5 #define GAME_RESTART
 6 #define GAME_EXIT
 7 
 8 int game_state = GAME_INIT;
 9 int error = 0;
10 
11 void main()
12 {
13     while (game_state != GAME_EXIT)
14     {
15         switch(game_state)
16         {
17             case GAME_INIT:
18             {
19                 Init();
20                 game_state = GAME_MENU;
21             }break;
22             
23             case GAME_MENU:
24             {
25                 game_state = Menu();
26             }break;
27 
28             case GAME_STARTING:
29             {
30                 Setup_For_Run();
31                 game_state = GAME_RUN;
32             }break;
33 
34             case GAME_RUN:
35             {
36                 Clear();
37                 Get_Input();
38                 Do_Logic();
39                 Render_Frame();
40                 Wait();
41             }break;
42 
43             case GAME_RESTART:
44             {
45                 Fixup();
46                 game_state = GAME_MENU;
47             }break;
48 
49             case GAME_EXIT:
50             {
51                 Release_And_Cleanup();
52                 error = 0;
53             }break;
54 
55             default: break;
56         }
57     }
58     return (error);
59 }

 

以上是关于游戏的构成的主要内容,如果未能解决你的问题,请参考以下文章

游戏的构成

「游戏引擎 浅入浅出」4.3 片段着色器

「游戏引擎 浅入浅出」4.3 片段着色器

「游戏引擎 浅入浅出」4.3 片段着色器

「游戏引擎 浅入浅出」4.3 片段着色器

微信小程序代码片段