從零開始做3D卡牌 一 客戶端整體設計

2021-08-16 19:15:47 字數 1442 閱讀 9381

大三開始接觸u3d,工作後又轉去cocos。最近工作室想要攻堅一下u3d,於是又重新接觸了u3d開始做demo。花了4個月,學習加製作完了乙個mmo的demo,剛做完移動和戰鬥同步,當然,資源都是現成的。然而,突然接到通知後面立的專案應該是3d卡牌,得,重頭在來吧。準備按進度慢慢更新,記錄一下整個製作demo過程的設計和心得,也趁這個機會把之前demo製作中設計的很爛的部分和遇到的問題重新改一遍,加油。之前mmo demo的心得也慢慢記錄到部落格裡,先給自己挖幾個坑。

3d卡牌客戶端技術方案:

開發工具: unity 2017.2.0f3

開發語言: c#(實現基礎框架,網路庫以及控制項支援)+ lua(業務邏輯)

(原生生成是xml格式,後續可以考慮製作成二進位制檔案,優化讀寫)

網路協議: protobuf

c#和lua互動: tolua

資源格式: ab包 lz4

內更新以及patch機制:版本遞增增量更新,patch考慮使用推送lua**的格式,動態修改記憶體中的lua table。

注釋規範: lua就按照luadoc的注釋規範來

具體設計:

c# 層:實現啟動類,網路層,內更新方案,資源載入以及lua設定gameobject屬性的介面。

lua層:core+game+utils   (core為框架(實現基類),game遊戲層,utils常用函式層(搬過來的輪子))

core = base(基類,如basescene,場景基類)+常用工具類(如eventsystem,物件池這種)

game =  n* element(要素,實現功能的非ui要素)

+ n* module(遊戲模組,由於是卡牌,主要以ui為主)

+ global(全域性變數和函式)

element(以scene舉例) = scenemanager(管理場景單例) + specialscenes(基於basescene的各種實現)

module = controller (管理器,宣告使用data/proxy/view等,和其他模組的依賴關係,可以訪問anything)

+ data(模組資料,提供模組資料型別和資料介面,data不可主動訪問別的任意內容)

+ view(ui介面,可以和管理類互動,可以訪問修改data,可以訪問proxy)

+ proxy(網路互動,收發協議,可以訪問修改data)

+ const(常量,試實際情況考慮是否可以和data合併)

(乙個模組除了controller,別的均可以預設)

(檔案之間互動無直接訪問許可權是均使用eventsystem)

global = globalvar+globalfunc(就這兩檔案就ok了,由於lua太隨意了,所以通過__newindex方法杜絕其他地方寫入global)

由於還沒開動,純腦補,先寫這麼多,後續試實際開發修改設計結構(無特殊情況應該不改了,flag) 

從零開始手擼WebGL3D引擎3 基本渲染流程介紹

雖然乙個渲染框架可能很複雜,但是如果我們一開始就把事情想的很複雜往往難以下手。另一方面,現在有很多開源引擎,你直接去看也會感覺難以入手。因為複雜性是由於需求而不斷增加的,甚至有的複雜性是因為歷史原因。本系列文章的初衷,是記錄乙個可用的,簡單的webgl渲染框架的發展過程,在這個過程中加深對webgl...

unity3d從零開始(五) 了解攝像機

unity的攝像機是用來將遊戲世界呈現給玩家的,遊戲場景中至少有一台攝像機。也能夠有多台。unity中支援兩種型別的攝像機,各自是perspective 透視 以及orthographic 正交 兩種。在unity中建立攝像機物件時。預設情況下除了transform元件還會帶有camera gui ...

從零開始Unity3D遊戲開發 1 常用快捷鍵

unity3d近兩年起來的很快。自己對遊戲一直很有興趣,所以想找機會轉遊戲開發。目的之一是賺錢,目的之二是完成自己的小夢想。unity3d的人才還是緊缺的,招聘 上各個公司真敢拿著錢砸。讓.net的程式狗情何以堪,所以,為了錢,準備轉遊戲開發了。廢話不多說,以後把自己學到的東西都以文章的形式記錄,不...