EasyGameFramework基于 Typescript 的渐进式通用游戏前端开发框架

联合创作 · 2023-09-20 01:33

EasyGameFramework 是基于 Typescript 的渐进式通用游戏前端开发框架。


名词解释


Easy


用这个框架开发会是很容易很轻松很舒服的。


Evolutionary(渐进式)


用这个框架可以让我循序渐进的开发,而不是一上来就给我整一大套东西。在我有需要时就模块库取或者自己开发。


General(通用)


国内的游戏引擎有3个:



其他不太常用的有很多



各有优势,看项目和团队进行技术选型。


我想这个框架可以不受限于引擎,适用于各种项目,不必因为换引擎而重复造轮子。


关于框架这个话题我写了几篇文章(感兴趣可以看一下)



文档网址



在线示例



Modules(模块)


Core


模块管理器


框架的核心模块是一个极简强大的模块管理器,可以轻松接入任何TS/JS项目


「传送门」:egf-core


构建工具


框架的核心工具是一个基于rollup的开箱即用的模块构建工具,可以构建出各种模块规范的js+单.d.ts


同时支持监视开发模式哦


「传送门」:egf-cli


UIFramework



一个基于TypeScript的零依赖、跨引擎、高效、灵活、高可扩展的显示控制库(UI框架库)


「传送门」:display-ctrl


在仓库中同时提供了基于CocosCreator2.4.2和CocosCreator3D实现的库(包含layer层级管理库的实现),以及与FairyGUI相关的2.x实现和3.x实现



  1. dpctrl-ccc

  2. dpctrl-c3d

  3. dpctrl-fgui 适用于Creator2.x上的fgui适配,同时也适用于Laya、Egret等

  4. dpctrl-fguicc 3.x上的fgui适配


Broadcast



一个基于TypeScript的一套高效灵活的广播系统,可以帮助开发者轻松、有序的构建具有极具复杂性的关联交互和状态变化的游戏和应用。


特性



  • 基础事件机制的支持

  • 消息支持携带任意类型的数据(并有类型提示)

  • 支持函数this绑定或任意类型作为环境,一行代码就可以移除环境内所有的接收者

  • 易于构建局部/全局的状态管理

  • 支持双向通信

  • 支持不可思议的粘性广播

  • 基于TypeScript并提供极度舒适的类型提示


「传送门」:broadcast


NetworkFramework



一个基于TypeScript的零依赖、跨平台、灵活、高可扩展的网络库


特性



  1. 跨平台:适用于任意ts/js项目

  2. 灵活、高可扩展:可以根据项目需要进行多层次定制

  3. 零依赖

  4. 强类型:基于TypeScript

  5. 功能强大:提供完整的基本实现:握手、心跳、重连

  6. 可靠:完善的单元测试


「传送门」:enet


ObjectPoolManager



一个通用的对象池管理模块,简单易用。


特性



  1. 全局管理多个对象池

  2. 对象无需实现对象池对象接口也可进行获取和回收处理

  3. 简洁可扩展的API

  4. 智能类型提示


「传送门」:obj-pool


LayerManager



通用层级管理模块,简单易用,对业务层透明。


「传送门」:layer


Demos(示例)


框架提供大部分模块的Demo示例供参考 「传送门」:examples


Development Env(开发环境)


这是一个monorepo式的项目仓库,使用这种方式可以很好的管理多模块项目


Use Tools



  • Lerna



    Lerna是一种工具,可以优化使用git和npm管理多包存储库的工作流程。



  • Yarn



Reference(参考资料)



  1. lerna+yarn workspace+monorepo项目的最佳实践

  2. 基于lerna和yarn workspace的monorepo工作流

  3. Monorepo 项目管理Lerna

  4. Lerna 中文教程详解

  5. lerna管理前端模块最佳实践


Basic Commands


创建包



  1. 快速模式

    lerna create @xxx/xxx -y


  2. 配置模式

     lerna create @xxx/xxx



给包添加依赖



  • 给指定包添加内部包依赖(需要加上版本号)

    yarn workspace @xxx/a add @xxx/b@0.0.1


  • 给指定包添加开发时内部包依赖(需要加上版本号)

    yarn workspace @xxx/a add -D @xxx/b@0.0.1


  • 给指定包添加外部包依赖

    yarn workspace @xxx/xxx add @xxx/xxxx


  • 给指定包添加开发时外部包依赖(如果是添加内部包,需要加版本号@0.0.x)

    yarn workspace @xxx/xxx add -D @xxx/xxxx


  • 给所有包添加依赖(如果是添加内部包,需要加版本号@0.0.x)

    yarn workspaces add lodash


  • 给所有包添加开发时依赖(如果是添加内部包,需要加版本号@0.0.x)

    yarn workspaces add -D lodash



移除依赖



  • 移除指定包对xxx包的依赖

    yarn workspace packageB remove packageA


  • 移除所有包对指定包的依赖

    yarn workspaces remove lodash


  • 移除根目录下对xxx包的依赖

    yarn remove -W -D typescript 


  • 安装所有依赖

    yarn install 或者 lerna bootstrap


  • 清除所有依赖

    lerna clean



 

浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报