您的位置:首页 > 其它

创业公司成长记<二>

2016-11-25 19:53 190 查看
人得时常停下来好好思考总结,跑得快了就容易岔气!

相隔上一遍文章《创业公司成长记<一>》又是8个月时间,走走停停,技术栈不断切换,能力继续提升。

然而自己究竟又有哪些变化,如果不好好总结总结竟也全然不知,以至于被问到你这半年又做了什么,竟一时语塞答不上来。这半年来没有任何工作日志,所以也没办法按照时间线来写,对于工作这种事,还是有一个固定的工作记录比较好,不是写给别人看,而是留给自己整理汇总。

上一篇最后提到了ECS 项目,肯定当时也是埋头在干这个事情,实际上ECS是公司的一个实验项目目前已经停掉了,它的最小完整产出其实就是一个标准的第三方库,从一个.scene文件解析出一个场景自动加载并运行,这个 .scene文件用json组织了一个实体组件系统,将大部分对象创建和维护工作从硬编码变成了配置,其最大的意义在于基于配置的灵活性和工作流变化,当然这个.scene的创建和编辑不能纯手动,可以说他是可视化IDE的一个产物,也就是后来用electron封装的那个工具。

整个ECS项目的产出在 https://github.com/egret-labs/Egret-ECS

主目录下libsrc就是第三方库的源码-符合egret结构的源码

主目录下demo就是使用此第三方库的一个高度可复用组件的演示demo

主目录下tools/scene-editor就是这个接下来我要重点讲的可视化场景编辑器,可以说它就是egret creator的原型了(对应于cocos creator),如果未来有的话


electron有一套自己的前后端API,之所以能够把网页封装成本地app其实是提供了一个运行在本地端的服务器容器主进程和渲染进程是分开的,如果让网页拥有访问本地的能力还需要对其进行改造
tools/scene-editor/panels
下的
ws_edit.html
ws_select
就是提供工作空间创建、选择和编辑的页面及逻辑,其中正好用到了从渲染进程访问主进程的本地API的方法,有兴趣的同学可以作为范例来研究。

editor_container.html
则是承载编辑器和预览的容器页面,用户编辑的操作要实时反馈到预览页,又苦于 用户编辑->json文件->预览的流程,两者必须要经过主进程进行本地存储,所以实际上这三者是通过跨进程通讯来完成的,在同一台机器上还不能直接访问,是不是有点不方便呢,没办法electron就是按照网络思路来做本地应用的,下面来讲这样的好处。

tools/scene-editor
下的editor 和previewer分别是react项目的编辑器和egret的预览,通过
tools/scene-editor
下的
main.js
主进程连接

这里充斥着
on
send
和各种信号量,这种API一看就是IO通信的事件,貌似底层是socket通信,那么问题也来了,通信只能传递可序列化的对象,不能直接操作对象函数等等确实太不方便,但这样的结构几乎和网络通信结构一致,所以把前端页面和主进程代码一分离,本地应用变成云端应用也是分分钟的事情,你说是不?

至此,ECS项目算是讲完了,再讲讲研究electron期间做的一个练手,那就是android H5WebView 一键打包的本地应用,也算是一个产出,帮助开平的同事将h5游戏封包成app,要封装的游戏多了,就总结出通用的需求,上传ICON,修改应用名,修改包名等等,通过修改gradle配置并执行脚本来启动打包流程,最后自动打开output文件夹就算完成。

至此,五月份之前的工作基本告一段落,我也是查看文件日期粗略地回忆。

六月份工作栈切换回Android,egret Nest连续接入了 QuickSDKApusSDK ,为了方便开发者接入Android support的同时接入上述两种登陆和支付sdk,我还一起把创建sdk版本android support 的功能加入到了新版命令行代码中,新命令行全部使用了async await 也是老大安利给我的技术胶囊,好吃,好玩,后来就是各种写文档,因为要使用新的命令行和新的android support,准备工作着实不易

android-support 位置 http://github.com/egret-labs/egret-android-support, refactor-for-nest分支

新命令行

npm install egret-cli


全都是实验性项目,感兴趣的同学可以去尝试

后来七月份和老大整合了单独的命令行工具——eui加速器的代码,本来之前是做在引擎里的功能,将exml编译阶段编译成js极大地提高运行时加载速度,作为隐藏功能很久没有启用,后来说又有这样的需求,但是拿出来一看说没做完,原来是因为没有考虑到用户自定义的类,我这才明白一些eui的逻辑,之前都相当浑浑噩噩。

npm 发布名称为
cli-eui-new
最新版v0.2.0,目前我在维护,与引擎的运行时加载的版本一致。

在整合和维护egret-cli期间见证了使用
commander
库编写命令行的便利,算是新命令行的一大利好,能用现成的库就用现成的,不是不能写,是要他的经过验证过的成果,毕竟不是每个人都能保证自己编码的质量。

后来引擎组全部扑在莽荒纪——首个webgl商业项目的引擎层优化上,我也从C座搬到E座,协助老大将eui整合进特定版本的命令行中,在这个特定版本中,他们优化了资源库的结构。毕竟我不是主力,于是后来又切换到莽荒纪微端的开发中,使用开平的登陆和支付接口封包成apk,webview版本直接被否掉,所以直接上了runtime版本,据说后来微端的下载量是0。

时间来到9月,全体公司员工搭上了去首尔的游轮,整个9月假期太多,都是日常维护也没记住什么有用的成果,以至于时间很快来到十一。

微端中的支付全是网页端的,想做成原生端,于是我陷入了无比纠结的微信支付接入深渊,而后是支付宝,在没有结果之前目前又在接Facebook。

为了一个神秘项目我在十一之前做了一个
socket.io
express
作为后端、
eui
作为前端技术的营销活动平台非常短小。通过sdk接入的各种扯皮,我想我是该切入后端编程了,十一七天封闭开发出了三人行基础版——一个多人在线纸牌游戏,自此进入迭代。当然自己做的游戏与公司业务无关,但这是前后端完全由我自己完成的多人在线网络游戏,与单机游戏截然不同,也是一次使用eui完成界面的完整工作流,意义非凡。

如今十一月份初,技术栈完全切换到 ios 原生开发,来弥补我在 ios端的不足,语言、工具、库以及开发流程。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  技术栈 创业 成长