遊戲開發中經常使用的模式

###0. 前言:服務器

遊戲開發中很是重要的四種模式是:函數

命令模式
事件系統
狀態機
協程

這四種模式在各類遊戲引擎中都有不一樣的實現,針對不一樣的遊戲邏輯系統的需求,每一個子系統也會有本身的特定的實現,這裏將我見到過的一些實現方式總結一下:code

###1. 命令模式:協程

  • 在quake 雷神之錘中 大量使用了命令模式,quake的 cmd.h cmd.c 實現了命令緩衝和命令執行器:

主要接口token

CBuf_Init 命令緩衝區初始化
CBuf_AddText 添加鍵盤 或者 console 命令
CBuf_InsertText 插入一個當即執行的命令
CBuf_Execute 執行一條命令

Cmd_Init 初始化
Cmd_AddCommand 註冊命令的處理函數,若是處理函數是null則命令會被髮送到服務器處理
Cmd_Arg 獲取命令參數
Cmd_ForwardToServer 發送命令到服務器
Cmd_ExecuteString 執行字符串命令
Cmd_TokenizeString 將命令切割爲token

在遊戲主循環中,每一frame都會調用CBuf_Execute 執行命令緩衝區中的命令;接口

當服務器初始化的時候會調用CBuf_AddText 添加字符串命令,當服務器發送報文過來,會調用Cbuf_AddText 向客戶端添加命令去執行。遊戲

所以經過命令系統將遊戲的命令處理函數和 命令發生的位置 解耦,分離開了,而且也便於邏輯的統一處理,有點相似於事件分發系統。事件

  • 天龍八部裏的命令模式 待續
相關文章
相關標籤/搜索