通用渐进式游戏客户端开发框架:EasyGameFramework持续更新贴

github地址: EasyGameFramework

渐进式通用游戏客户端开发框架,可用于任何基于js/typescript的游戏或应用开发

提供生命周期模块管理核心,以及个人持续打磨维护的一些基础库。

框架还附带一个通用的库构建工具egf-cli,方便大家构建出自己的库(模块库、工具库等),进行技术沉淀和技术分享。
npm i egf-cli

现在框架工具基本稳定,后期可能只会增加两个功能

  1. 库模版项目自动生成
  2. 增加压缩混淆功能(em,其实这个不是很必要,因为游戏打包时会一起处理)
    主要是方便将分享出去的库压缩混淆

而框架核心基本不变,定位如此
更多的是增加解决开发需求的实用的基础库,方便按需取用。

了解可阅读文章或者浏览仓库
文章:
框架的诞生-零:为什么写框架?
框架的诞生-一:我想要的框架
框架的诞生-二:定位
打破CocosCreator3d不能使用npm包的魔咒!!!

自从我发布这个框架以来,我发现几个有趣的地方
对于我自己

  1. 我非常开心,有种源源不断的动力,推动我去通过文章,交流讲清楚我的想法。

  2. 空闲时,工作闲暇时,就会时不时的去思考我的表达和我的设计。这会促进我去更新我自己:思考,学习,再输出。也会促进我去把这个框架和工具打磨得更加完善。

对于这个框架的反应

  1. 感觉很多人希望它是能大而全,拿来就用。

论坛上有很多很棒的技术干货、工具分享,能看得到,用了实践了就会有反馈,比如某种游戏性,某种方便nb的工具,某种漂亮炫酷的表现效果,等等。
但关于如何打造个人技术体系,如何构建个人框架,这类分享很少。
所以我来分享,来抛砖引玉。

都是框架,我也不想造个大同小异的轮子来浪费大家时间。
所以这个框架的定位,它是渐进的,是一种沉淀技术的方式,是构建个人技术体系的一种思路,是可灵活构建自己风格框架的工具。

当然也不是说,上面那些分享不好,上面的更好,能够为大家带来收获的都很好。等我整理完了,我也会去学习和分享关于shader和图形学的(这方面我是新手菜鸟)

好了,诞生完结散花~

接下来就是成长的开始

仓库我已经更新了几个基础库
通用显示管理库:diplay-ctrl,以及cocos2.x和cocos3d的实现
强大消息通讯库:broadcast,创意来源: 构建复杂应用的神器,FBroadcast

  • 支持双向通信
  • 粘性广播
  • 状态管理

通用对象池管理:obj-pool
通用层级管理:layer

同时增加了基于CocosCreator2.4.3的完整demo,examples/egf-ccc-full

因为使用的是monorepo,需要按照README来安装一下环境

由于基于monorepo开发,CocosCreator编辑器可能没法识别已经安装的库,所以编辑器会报错,但运行和构建运行没有问题

等demo实现完后,再开dev分支,保证main的稳定。工程化实践会逐渐规范。一起学习~up~up
持续更新~
以后的更新日志会在这进行同步

谢谢你阅读我的分享,O(∩_∩)O谢谢!

最后

欢迎关注我的公众号,更多内容持续更新

公众号搜索:玩转游戏开发

或扫码:img

QQ 群: 1103157878

博客主页: https://ailhc.github.io/

掘金: https://juejin.cn/user/3069492195769469

github: https://github.com/AILHC

18赞

重磅更新

对于这个论断,非常抱歉,构建运行是会有问题的
由于在CocosCreator项目中使用monorepo开发也是第一次,之前都是本地 npm link的
但经我研究发现,其实是编辑器的问题,
会对这类项目有影响:
比如我有两个cocoscreator项目,我想安装一次npm包两个项目共用
目录结构
xxx
|–cocosAProject
|–cocosBProject
|–node_modules
这个时候,编辑器没办法require到xxx/node_modules的文件,但运行时能。
参见:运行时能够找到npm模块,但编辑器却找不到?
这里我已经讲了解决方法了
更新日志:
2020/12/07

  1. 修复编辑器引用项目外的模块时报错的问题

正在逐步完善demo

2赞

回帖也要审核,不知道什么时候审核完
文章链接: 通用游戏UI框架的设计与实现

持续更新~
鸽了两个星期了,终于发文了。

三个基础库完善

UI框架库(或者说是通用显示管理库)进入1.0.0版本
跨引擎、高效、灵活且高可扩展

broadcast消息通讯库、对象池管理库也进入了1.0.0版本基本不会做大改动
UI框架库和broadcast库都做了尽可能完善的单元测试,
以及提供demo :egf-ccc-full

可以到GitHub EasyGameFramework克隆

也可以直接

npm i @ailhc/display-ctrl

CocosCreator2.x版本项目
可以

npm i @ailhc/dpctrl-ccc

CocosCreator3d版本项目 1.2和3.0都适用

可以

npm i @ailhc/dpctrl-c3d

同时也写了一篇关于如何设计实现的文章,
由于论坛审核比较慢:
先放出掘金文章链接
通用游戏UI框架的设计与实现

持续更新
2020/12/22
更新一波,
egf-ccc-full增加分包加载测试

无缝支持分包
文章分享: 解决CocosCreator2.4.x的ABundle不能使用npm包的问题

持续更新~
2020/12/23
通用对象池库稳定,已经构建发布到 npm
可以 npm i @ailhc/obj-pool 进行安装

mark!!!

文档更新~
2020/12/25
完善通用UI框架库的文档
文章链接: 基于TypeScript的通用游戏UI框架的使用

文档更新
2020/12/27
完善 broadcast 通用广播库(事件机制)的文档
文章链接:构建复杂游戏/应用的神器:broadcast

更新预告:
通用客户端网络框架库设计与实现

支持支持 :hugs:加油

如果感兴趣的,可以提前了解,在develop分支的enet,enet-pbws
我还在完善单元测试
以及测试例子

eclipse-theia 有多:ox::beer:
直接在https://gitpod.io/# 拼接GitHub或者其它开源仓库地址
比如EasyGameFramework
https://gitpod.io/#https://github.com/AILHC/EasyGameFrameworkOpen

等待一下(第一次会比较慢)

IDE就起来了。


直接yarn install 安装环境
这个安装速度比我电脑本机还要快:sob:

随便找个包来跑单元测试

image

看得尴尬症犯了。。

?????

周末愉快~

框架仓库增加了一个强大基础模块
基于TypeScript的通用网络通信模块enet

介绍

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

可以轻松集成到任意js/ts项目中

可以根据项目需要进行多层次定制(socket层,协议层,网络通信反馈层)

框架提供了基于protobuf的协议处理库 @ailhc/enet-pbws

需配合 egf-protobuf 库使用(一个proto文件编译生成静态js文件的工具库)

还有一个使用这个网络框架的基于CocosCreator2.4.2的聊天室demo(含服务端实现):egf-net-ws

灵感来源

  1. pinus:一个基于Node.js的分布式水平扩展游戏服务器轻量级强大框架

  2. 宝爷的Cocos Creator 通用框架设计 —— 网络

特性

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

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

  3. 零依赖

  4. 强类型:基于TypeScript

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

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

由于使用了protobuf,所以优化了之前的一个protobuf静态js文件生成工具:egf-protobuf

核心框架库core更新
去除proxy包装moduleMap,如有需要可自定义实现

1赞

这个框架的GitHub仓库开通了
discussion
一个类似论坛一样的东西
可以发帖交流讨论~
有什么好的点子,想法尽管发帖吧~


最近我也更新了我的slogan

游戏开发之路有趣但不易

玩起来才能一直热情洋溢

关注我, 一起玩转游戏开发!

你的关注是我持续更新的动力~

让我们在这游戏开发的道路上并肩前行

在以下这些渠道可以找到我和我的创作:

公众号搜索:玩转游戏开发

或扫码:img

一起讨论技术的 QQ 群: 1103157878

博客主页: https://pgd.vercel.app/

掘金: https://juejin.cn/user/3069492195769469

github: https://github.com/AILHC

写了这么多 感觉对新手不友好啊!

你指的对新手友好是怎么样的?:nerd_face:

好像不错的样子