[SSRExtensionKit] 开发日志 -- 用 Creator 开发插件

2022.06.01 这其实只是一篇庆祝终于能出门的帖子 :clap:

2015

这是一个很早就开始的项目,那个时候还是 cocos2d-html5 的时期。

cocos2d-x 来到了网页端,开始接触到了很多有趣的东西。

比较早期的一个尝试:

cocos2d-html5 + node-webkit

使用 node-webkitcocos2d-html5 游戏打包成桌面程序,进行跨平台的尝试。

随着从 c++ 过渡到 javascript,开始接触越来越多的前端知识。

那个时候虽然 vuereact 之类的框架还不火(当然也可能是自己没有关注)。

曾经划过一点时间学习前端三件套 html + css + javascript ,但是可能因为是 cocos 出家,总是无法很好的切换到标准前端的开发模式中。

于是就有了新的尝试,结合 cocos2d-jsDOM 元素,进行开发的一个方案 :

cocos2d-js DOM

Cocos2d-JS v3.10中使用HTML中的元素,以 cocos 的编码风格创建浏览器应用。

印象很深刻的是,当时还尝试了:

iPad + Textastic + Github + Firebug + cocos2d-js 的开发环境构建和实际开发的尝试。

接着接触到了 electron,对于一个多年用 c++MFC 的程序来说,感觉终于找到了一个可以快速制作跨多平台软件的一个解决方案了。

只是因为对三件套掌握水平极菜,在表现层有些无能为力,不过如果能搭配上 cocos2d-js 的话那真是一个非常不错的方案,于是就有了一些尝试:

cocos2d-js DOM Electron

cocos2d-js DOMElectron.js的结合,用于创建本地化的桌面应用。

接着还做了更加深入一点的尝试:

cocos2d-js DOM Electron Editor

Cocos2dJS DOM Electron的可视化编辑器。

当然所有的方案,除了 cocos2d-js && DOM 的合体之外,都只做了非常粗浅的尝试而已。

后来也都没有了下文。

2020

时间来到了 2020,自己开始转 Creator 没多长的时间,期间开始尝试插件的编写。

这时候又遇到了过去曾经遇到的问题:

我有亿个好的插件的点子。

一些技术难点我也可以攻克。
但是要我使用三件套,或是一些主流框架 vue / react,再配合上 Creator 的插件框架,最终开发出插件,实在有些困难。

所以还是算了 …

当然因为不想太简单的放弃,于是有了下面的挣扎:

就问你6不6 - cocos2dx 入侵 Creator 插件系统 - 0

就问你6不6 - cocos2dx 入侵 Creator 插件系统 - 1

就问你6不6 - cocos2dx 入侵 Creator 插件系统 - 2

就问你6不6 - cocos2dx 入侵 Creator 插件系统 - 3

就问你6不6 - cocos2dx 入侵 Creator 插件系统 - 4

就问你6不6 - cocos2dx 入侵 Creator 插件系统 - 5

就问你6不6 - cocos2d-x 入侵 Creator 插件系统 - 6

ShaderEditor3D Challenge - 3D Plugin Integration

也有了基于 Creator v2.x 的,非常不成熟的 解决方案:

2022

时间来到 2022.03。上海,开始被闭门不出 …

没有了上下班的时间消耗,空余时间多了,本想写个游戏,但是天天封在家里,写了 60% 开始有点腻了。

于是又想到了开发插件打发打发时间。

去年开发了很多插件,但大多是 cocos2dx 时期积累的移植,而且大都只是组件,也并非纯正的插件。

这次,正巧有时间,正巧又想到了曾经鼓捣过的这些东西,于是想要在 Creator v3.x 里,来搞点事情。

于是便有了文末的连载小说,从 5.1 开始,每天一回,不算今天的,刚好 31 回。

> 2022

本想着是写着玩玩,看看是连载先结束,还是解封先结束。

现在看来,是我赢了 …

项目从单纯的目标出发,现在还在路上,目标也变得越来越不单纯

现在,插件的功能和目标是这样的(当然大部分还只是吹牛X ……):

嫌太长的,可以只看亿句话总结:

只要你会 CocosCreator 就可以来开发插件了 :sunglasses:
折腾人的各种扩展配置全部已经帮你可视化了 :robot:
五花八门的接口封装成 CocosCreator 风格了 :hugs:
​一直眼馋的别人家的组件三方组件也能让你用了 :smirk:

  1. 基础 / General
    1. 支持使用 CocosCreator v3.x 直接开发插件
    2. 支持使用 CocosCreator v3.x 中的所有控件
    3. 支持混用 CocosCreator v3.x 官方插件 UI组件库
    4. 支持混用 npm 中部分 组件库bootstrap, element-ui, font awesome, interact.js … )
  2. 插件 / Extension
    1. 一键生成插件模板
    2. 一键发布
    3. 一键编译
    4. 一键测试
    5. 支持 float / dock
    6. 纯净,无入侵式修改
    7. 极简工作流
    8. 集成 test-case
  3. 可视化 / Visualization
    1. 基础信息
    2. 多面板管理
    3. 自定义菜单扩展
    4. 右击菜单扩展
    5. 扩展拖入识别扩展
    6. 场景脚本管理
    7. 资源数据库扩展
    8. 属性检查器面板扩展
  4. SSRElement / SSRElementEvent / SSRProperty / SSRCSS / SSRClass / SSRSelector
    1. 提供 CocosCreator 风格,组件化 DOM Property CSS
    2. 提供 CocosCreator 风格,事件监听机制
    3. 提供 DOM 风格,事件监听机制
    4. 支持 CocosCreator 风格的动态创建,使用
  5. SSRElement
    • 单一类型 DOM 元素
    • 组合类型 DOM 元素
    • 自定义 DOM 元素
    • 自定义 DOM 元素内容交互,访问,事件
    • Node Related / Node Independent
    • Easy z-order

>> 2022

虽说整个项目的立项源点,是避开前端知识,开发插件

但说实话这不是什么好的出发点。

毕竟正经的学一下前端开发的主流只是还是很不错的选择,那天也许要转应用开发的话,就可以比较丝滑的过渡了。

当然,正因为这个项目有着不正经的初衷,整个过程,确实学到很多不同寻常的知识。

感兴趣的朋友可以戳开文章看看 …

虽然想要实现上面列出的这些梦想是很难的,甚至有的是不可能的,但是连载还在继续,也许呢,就在这里插个 :triangular_flag_on_post: 吧 …


SSRExtensionKit in Progress

SSRExtensionKit 0x01 起源 / Roots
SSRExtensionKit 0x02 插件细分 / Extension Segmentation
SSRExtensionKit 0x03 插件技能 / Extension Skills
SSRExtensionKit 0x04 另一个可能 / Yet Another Way
SSRExtensionKit 0x05 可行性分析 / Feasibility Analysis
SSRExtensionKit 0x06 你好插件 / Hello Extension
SSRExtensionKit 0x07 CSS 加载问题 / CSS Load Issue
SSRExtensionKit 0x08 JS 加载问题 / JS Load Issue
SSRExtensionKit 0x09 ImportMap 问题 / ImportMap Issue
SSRExtensionKit 0x0A DOM 初始化问题 / DOM Init Issue
SSRExtensionKit 0x0B 第一阶段打卡 / Phase.1 Complete
SSRExtensionKit 0x0C 简化 / Simplify
SSRExtensionKit 0x0D 缩放问题 / Resize Issue
SSRExtensionKit 0x0E DOM 缩放问题 / DOM Resize Issue
SSRExtensionKit 0x0F 画布缩放问题 / Canvas Resize Issue
SSRExtensionKit 0x10 停靠缩放 / Resize in Dock
SSRExtensionKit 0x11 停靠 vs 浮动 / Dock vs Float
SSRExtensionKit 0x12 状态切换调查 / State Switch Research
SSRExtensionKit 0x13 状态切换解决方案 / State Switch Solution
SSRExtensionKit 0x14 插件模板 / Extension Template
SSRExtensionKit 0x15 零入侵 / Zero Pollution
SSRExtensionKit 0x16 插件面板 / Extension Panel
SSRExtensionKit 0x17 我的模板 / My Template
SSRExtensionKit 0x18 我的工作流程 / My Work Flow
SSRExtensionKit 0x19 自定义构建问题 / Custom Build Issue
SSRExtensionKit 0x1A 手术开始 / Operation Start
SSRExtensionKit 0x1B 手术完成 / Operation Complete
SSRExtensionKit 0x1C 继续向前 / The Next Step
SSRExtensionKit 0x1D UI 交互初试 / UI Interactive Trial
SSRExtensionKit 0x1E UI 交互封装 / UI Interactive Wrapper
SSRExtensionKit 0x1F NPM 插件 / NPM Plugins


8赞

火钳刘明。

强啊,大佬加油 :clap:

火钳刘明。

这个不会:fire:的,小小小众需求,只是因为我比较执着想搞这个 :rofl:

这也太牛了
1_6749d632d6384d2befcce9ef7128373f

大佬做这个就能大幅度降低插件开发门槛,插件交互方面的开发也能更加的高效灵活

1赞

image

这是有利于整个cocos生态的事,每天在看你的更新文章

继续更新:

SSRExtensionKit 0x20 休息,休息一下 / Coffee Time
SSRExtensionKit 0x21 自定义 DOM 初试 / Custom DOM Trial
SSRExtensionKit 0x22 编辑器模式运行 / executeInEditMode
SSRExtensionKit 0x23 插件消息 / Message in Extension
SSRExtensionKit 0x24 DOM 封装 / DOM Wrapper

没必要这么麻烦,一个 http-server 搞定

不错,这个道是真不知道,等有空了学一下看看,感谢分享 :+1:

而且关于后面的封装接口,简单使用还好,深入使用必然会接触和学习网页开发的操作和知识,感觉没太大意义,个人感觉是个大坑

希望cocos能自己搞一套UI,真的不想学web知识呀

准确的说是把 ui-node ui-asset 这样的组件内置到creator,可以在开发时正常使用就行了,这样就可以直接用creator来开发插件

我已经转行web前端啦

我咋记得大佬你本来是引擎组的啊,跑路了? :rofl:

留不下的远方,人至中年,身不由己

没事,写这个系列就是因为疫情关在家里找乐子用的,主要用来探索,学一些新东西,现在已经探索得差不多了,而且居家也结束了 :rofl:

向你看齐,我希望做着做着慢慢靠过去,你懂的 :grin: