EasyGameFramework基于 Typescript 的漸進(jìn)式通用游戲前端開(kāi)發(fā)框架
EasyGameFramework 是基于 Typescript 的漸進(jìn)式通用游戲前端開(kāi)發(fā)框架。
名詞解釋
Easy
用這個(gè)框架開(kāi)發(fā)會(huì)是很容易很輕松很舒服的。
Evolutionary(漸進(jìn)式)
用這個(gè)框架可以讓我循序漸進(jìn)的開(kāi)發(fā),而不是一上來(lái)就給我整一大套東西。在我有需要時(shí)就模塊庫(kù)取或者自己開(kāi)發(fā)。
General(通用)
國(guó)內(nèi)的游戲引擎有3個(gè):
其他不太常用的有很多
各有優(yōu)勢(shì),看項(xiàng)目和團(tuán)隊(duì)進(jìn)行技術(shù)選型。
我想這個(gè)框架可以不受限于引擎,適用于各種項(xiàng)目,不必因?yàn)閾Q引擎而重復(fù)造輪子。
關(guān)于框架這個(gè)話題我寫(xiě)了幾篇文章(感興趣可以看一下)
文檔網(wǎng)址
在線示例
Modules(模塊)
Core
模塊管理器
框架的核心模塊是一個(gè)極簡(jiǎn)強(qiáng)大的模塊管理器,可以輕松接入任何TS/JS項(xiàng)目
「?jìng)魉烷T(mén)」:egf-core
構(gòu)建工具
框架的核心工具是一個(gè)基于rollup的開(kāi)箱即用的模塊構(gòu)建工具,可以構(gòu)建出各種模塊規(guī)范的js+單.d.ts
同時(shí)支持監(jiān)視開(kāi)發(fā)模式哦
「?jìng)魉烷T(mén)」:egf-cli
UIFramework
一個(gè)基于TypeScript的零依賴、跨引擎、高效、靈活、高可擴(kuò)展的顯示控制庫(kù)(UI框架庫(kù))
「?jìng)魉烷T(mén)」:display-ctrl
在倉(cāng)庫(kù)中同時(shí)提供了基于CocosCreator2.4.2和CocosCreator3D實(shí)現(xiàn)的庫(kù)(包含layer層級(jí)管理庫(kù)的實(shí)現(xiàn)),以及與FairyGUI相關(guān)的2.x實(shí)現(xiàn)和3.x實(shí)現(xiàn)
- dpctrl-ccc
- dpctrl-c3d
- dpctrl-fgui 適用于Creator2.x上的fgui適配,同時(shí)也適用于Laya、Egret等
- dpctrl-fguicc 3.x上的fgui適配
Broadcast
一個(gè)基于TypeScript的一套高效靈活的廣播系統(tǒng),可以幫助開(kāi)發(fā)者輕松、有序的構(gòu)建具有極具復(fù)雜性的關(guān)聯(lián)交互和狀態(tài)變化的游戲和應(yīng)用。
特性
- 基礎(chǔ)事件機(jī)制的支持
- 消息支持?jǐn)y帶任意類型的數(shù)據(jù)(并有類型提示)
- 支持函數(shù)this綁定或任意類型作為環(huán)境,一行代碼就可以移除環(huán)境內(nèi)所有的接收者
- 易于構(gòu)建局部/全局的狀態(tài)管理
- 支持雙向通信
- 支持不可思議的粘性廣播
- 基于TypeScript并提供極度舒適的類型提示
「?jìng)魉烷T(mén)」:broadcast
NetworkFramework
一個(gè)基于TypeScript的零依賴、跨平臺(tái)、靈活、高可擴(kuò)展的網(wǎng)絡(luò)庫(kù)
特性
- 跨平臺(tái):適用于任意ts/js項(xiàng)目
- 靈活、高可擴(kuò)展:可以根據(jù)項(xiàng)目需要進(jìn)行多層次定制
- 零依賴
- 強(qiáng)類型:基于TypeScript
- 功能強(qiáng)大:提供完整的基本實(shí)現(xiàn):握手、心跳、重連
- 可靠:完善的單元測(cè)試
「?jìng)魉烷T(mén)」:enet
ObjectPoolManager
一個(gè)通用的對(duì)象池管理模塊,簡(jiǎn)單易用。
特性
- 全局管理多個(gè)對(duì)象池
- 對(duì)象無(wú)需實(shí)現(xiàn)對(duì)象池對(duì)象接口也可進(jìn)行獲取和回收處理
- 簡(jiǎn)潔可擴(kuò)展的API
- 智能類型提示
「?jìng)魉烷T(mén)」:obj-pool
LayerManager
通用層級(jí)管理模塊,簡(jiǎn)單易用,對(duì)業(yè)務(wù)層透明。
「?jìng)魉烷T(mén)」:layer
Demos(示例)
框架提供大部分模塊的Demo示例供參考 「?jìng)魉烷T(mén)」:examples
Development Env(開(kāi)發(fā)環(huán)境)
這是一個(gè)monorepo式的項(xiàng)目倉(cāng)庫(kù),使用這種方式可以很好的管理多模塊項(xiàng)目
Use Tools
-
Lerna是一種工具,可以優(yōu)化使用git和npm管理多包存儲(chǔ)庫(kù)的工作流程。
-
Yarn
Reference(參考資料)
- lerna+yarn workspace+monorepo項(xiàng)目的最佳實(shí)踐
- 基于lerna和yarn workspace的monorepo工作流
- Monorepo 項(xiàng)目管理Lerna
- Lerna 中文教程詳解
- lerna管理前端模塊最佳實(shí)踐
Basic Commands
創(chuàng)建包
- 快速模式
lerna create @xxx/xxx -y
- 配置模式
lerna create @xxx/xxx
給包添加依賴
- 給指定包添加內(nèi)部包依賴(需要加上版本號(hào))
yarn workspace @xxx/a add @xxx/[email protected]
- 給指定包添加開(kāi)發(fā)時(shí)內(nèi)部包依賴(需要加上版本號(hào))
yarn workspace @xxx/a add -D @xxx/[email protected]
- 給指定包添加外部包依賴
yarn workspace @xxx/xxx add @xxx/xxxx
- 給指定包添加開(kāi)發(fā)時(shí)外部包依賴(如果是添加內(nèi)部包,需要加版本號(hào)@0.0.x)
yarn workspace @xxx/xxx add -D @xxx/xxxx
- 給所有包添加依賴(如果是添加內(nèi)部包,需要加版本號(hào)@0.0.x)
yarn workspaces add lodash
- 給所有包添加開(kāi)發(fā)時(shí)依賴(如果是添加內(nèi)部包,需要加版本號(hào)@0.0.x)
yarn workspaces add -D lodash
移除依賴
- 移除指定包對(duì)xxx包的依賴
yarn workspace packageB remove packageA
- 移除所有包對(duì)指定包的依賴
yarn workspaces remove lodash
- 移除根目錄下對(duì)xxx包的依賴
yarn remove -W -D typescript
- 安裝所有依賴
yarn install 或者 lerna bootstrap
- 清除所有依賴
lerna clean
