当前位置: 首页 > 软件库 > Web应用开发 > Web框架 >

EasyGameFramework

基于 Typescript 的渐进式通用游戏前端开发框架
授权协议 MIT
开发语言 TypeScript
所属分类 Web应用开发、 Web框架
软件类型 开源软件
地区 国产
投 递 者 郎华皓
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

 

 相关资料
  • nebula3 是一个游戏引擎和开发框架,可移植的特性支持多平台,包括 iPhone。 http://code.google.com/p/nebula3-engine/

  • 本项目是win32下大型客户端游戏的游戏辅助开发框架,由于它集成并包含了游戏辅助开发的各方面功能,称本项目为win32辅助开发的组件也可。 内含具体项目有fifa online3、疾风之刃、怪物猎人online、流放之路等,也有辅助帐号验证服务器,帐号查寻与管理工具,特征码识别,资源文件系统等。 本人现已转型,特发布此项目,旨在分享一份只供参考的多年工作经验与心血,若本项目中有些您认为闪亮的设计、

  • base北京,一面全程20min,面试的有点随意只能说,项目都没问。 1.怎么学习的,看过哪些书。 2.你觉得c和c++有哪些区别。 3.你写c和c++有哪些感受和体会。 4.什么是构造函数,什么是析构函数。构造函数初始化列表有什么用 5.智能指针 6.什么是移动语义,移动语义高效在哪里,什么是万能引用。 6.用到的设计模式,或者讲一下你了解的。 7.单例与static T的区别。 8.网络相关,

  • 9.22 一面 45min 寄了,没给我复盘笔试,别人都复盘了 项目、实习,演示你做的游戏demo(音效组件怎么管理的、三段跳怎么实现的) C#八股:资源卸载、垃圾回收机制(托管堆)、反射机制 c++八股:static修饰符的作用(修饰变量、类)、零拷贝、智能指针 git rebase(变基,再合并)git merge(直接合并)的区别,使用场景 手撕LRU(最近最少使用)页面置换算法 秋招第一个

  • 目前,我正在尝试用Java开发基于2D平铺的侧滚游戏,主要基于David Brackeen的“用Java开发游戏”中的代码和示例 目前地图文件的大小为100x100个图块(每个图块为64x64像素)。我已经将系统配置为仅显示玩家可见的图块。Graphics系统由ScreenManager类管理,该类返回当前BufferStrategy的图形对象,如下所示: ScreenManager.java 来

  • 你的常用的数据结构都有什么? HashMap和HashSet的区别? 怎么构造一个HashMap HashMap优势是什么? 还有什么需要注意的? 扩容机制,hash冲突? 如果你去设计一个Hash函数怎么设计呢? 一般 HashMap多线程情况下会出现什么问题? 怎么解决扩容死链的? 尾插会有什么问题? 数据错乱问题以外还有什么其他问题? 怎么解决这个问题? councurrentHashMap

  • #友塔游戏校招# 一面 约1小时 面试官比较不按套路,上来就是手撕,题目是:一个环,有n个点,问从0出发,经过K步回到原点有多少种方法? 写的比较坎坷,一开始给出的暴力搜索,后来优化成深度遍历,本来是想运行一下,因为电脑环境出现问题,一直没有编译过,面试官看代码没什么大问题,就过了。 然后拷打了项目(Raft分布式系统),延伸问了RPC protobuf等问题 八股主要针对操作系统,主要问了for

  • 我目前有一个多人卡牌游戏开发和工作在Java,它正在工作在控制台。游戏的形式与桥牌和黑桃相似,减去了竞价过程。它是一个四人游戏,玩家轮流出一张牌。 我目前正在将其转换为一个基于浏览器的webapp,并添加了spring MVC,使用HTML、JavaScript和AJAX作为UI和与后端的通信。我有一个很好的想法,我想要采取的方法,使这工作的单人对AI允许用户发挥他们的牌,并使用AJAX调用从服务