pc客戶端1和2是什么意思啊 客戶端是什么意思

我大多數時候不喜歡直接用別人的代碼 。本著自己寫的原則,客戶端結構總是自己維護 。
代碼結構
整個客戶端大致分為兩部分:框架和游戲 。Frame是框架層,是所有項目通用的 。Game是游戲層,只能寫當前項目使用的代碼 。
框架:說是所有項目通用,有點夸張 。畢竟游戲的類型非常多,商業游戲引擎不敢說對所有游戲都通用,但這就是這部分設計的初衷 。這部分其實就是沉淀下來的代碼,即使重新構建一個新的項目,仍然可以直接使用 。
攝像頭:再次封裝unity的攝像頭 。提供與封裝所有攝像機相關的常見操作 。
字符:封裝字符 。游戲里所有長得像人或者可以算是人的東西都是角色 。
類:對象池,適用于各種對象,就是需要申請的時候,先在列表中查找不用的對象,可以重用的返回,沒有的創建一個 。
CommandSystem:指揮系統 。
特點:
1.封裝邏輯
2.連接邏輯和接口,以及項目中的任何模塊 。
3.延期執行
4.線程安全性,其中delay命令可用于將邏輯放入主線程中執行 。
5.日志打印
基于以上特點,一般用命令系統深圳生活網在邏輯意義上表示一個事件,命令中可以訪問任何項目代碼,所以當一個事件關聯多個模塊時,相關代碼要封裝到一個命令中 。
比如當數據發生變化時,數據存儲會有變化,界面也會有相應的變化,所以需要把邏輯封裝成命令,在適當的地方調用命令 。調用者只需要關心觸發了什么事件,而不是事件的具體內容 。
系統最初的靈感來源于天龍八部代碼中的命令 。天龍八部里的命令只是一個結構,一堆沒有具體類型的參數,然后在發送的時候指定那個參數的含義,然后在使用的時候強轉換類型 。
但是我設計的命令系統的核心是邏輯,也就是對象,這就導致了一些其他的特性,比如延遲執行,線程安全等等 。
常用:不知道怎么分類,常用的部分大部分都在這里,比如工具函數,全局定義,枚舉定義等等 。
Component: component,想法來源于unity,但我剛開始用unity一個月,就知道了“組合而不是繼承”這個表達 。然后我又用了兩年unity 。這里component的核心思想是,凡是可以脫離類的核心,需要單獨更新的東西,都可以寫成一個組件 。所以,這里的組件強調的是邏輯更新,而不是把所有東西都放進組件 。相當于結合和繼承的結合 。
數據庫:數據庫相關的,比如MySQL,SQLite,自己寫的數據表 。
DynamicAttackScript:代碼中動態附加到GameObject的腳本,實際上通常有一些腳本需要在面板上顯示調試信息 。
效果:粒子特效的封裝,提供一些特效的常用操作 。
游戲框架:核心管理器 。以及其他一些獨立的系統 。
GamePlugin:主要提供調用外部插件的接口 。另一個項目寫的插件,放在項目的指定目錄下,會自動調用 。
游戲場景:游戲邏輯場景 。
一般游戲分為幾個邏輯場景,分別代表游戲的不同階段 。一般使用的資源和邏輯共同決定了邏輯場景的劃分 。
一個邏輯場景包含幾個存儲在樹結構中的流程 。一個邏輯場景至少包含一個啟動進程和一個退出進程 。
流程代表邏輯場景內的狀態劃分,流程切換通常涉及相應的界面切換 。
進入過程時的操作通常對應于退出過程時的操作 。例如,如果在進入流程時打開了一個界面,那么在退出流程時應該關閉該界面 。進入流程時,某項操作被禁用,退出流程時應重新啟用 。
不允許進程相互訪問 。進程應該相對隔離 。只有在進入或退出進程時,才允許判斷上一個進程或下一個進程的類型來執行不同的邏輯 。
進程切換時,只會停止舊進程的更新,啟用新進程的更新,不會銷毀任何進程 。
當切換邏輯場景時,舊的邏輯場景和該場景的所有進程將被銷毀,新的邏輯場景將被加載和初始化 。
一個邏輯場景通常使用幾個資源場景,資源場景的顯示根據流程進行切換 。
其實主要作用是區分不同的游戲狀態,隔離邏輯,盡量不要有不同邏輯之間的耦合 。
LayoutSystem前身是C寫的UI框架,C從opengl開始,封裝UI,隱藏底層的具體實現,只需要上層關心游戲界面的邏輯 。從C改為unity后,這部分只是替換了底層已經被unity實現的部分,上層沒有太大變化 。
MovableObject:字面意思是可移動的物體,即游戲中所有需要移動或具有位置屬性的物體的基類 。
ObjectPool:對象池,不同于ClassPool,在這個池中存儲GameObject深圳生活網,ClassPool存儲object 。
也就是說,所有從磁盤預置實例化的GameObject都將存儲在這個池中,它們將被回收并默認存儲,除非指定實際銷毀 。
Resource Manager:Resource Manager,統一了從AssetBundle和Resources加載的方式,讓上層只需要知道加載了某個資源,而不需要具體關心它需要加載到哪里,加載到哪里在讀取配置文件之初就決定了 。一般是從編輯器開發環境的資源中加載,打包后再從AssetBundle中加載 。也可以在編輯器開發環境中從AssetBundle進行測試 。
插座:網絡部分 。自定義通信協議 。雖然網絡通信已經有很多成熟的商業序列化庫,但是我還是自己寫自己的序列化通信協議,由自己的實際情況觸發 。畢竟不難,寫作效率也不低,優化完全可以自己掌控 。
【pc客戶端1和2是什么意思啊 客戶端是什么意思】以上是對框架部分架構的介紹 。雖然不是很好,但經過多年的不斷摸索,始終是一套我能用的架構 。從字數上可以看出,有兩個重要的部分,CommandSystem和GameSce深圳生活網ne,這是實現大部分功能的兩個系統 。還有一個重要的組件,它們相互補充并支持大多數客戶端功能 。

    推薦閱讀