用 python 撸一个 ccbwriter

之前可能和大家说过我们项目的 UI 编辑器是上古神器 CocosBuilder, 这个编辑器诞生在那个 cocos2d-x 还需手写 ui 代码的年代, 是 cocos 发展史上一个重要转折点. 它标志着触屏手机游戏行业 ui 不再像之前那样只是简单的串联的作用, 而是像端游那样重交互, 可视化编辑的路线.

如何为 Creator 添加 js/ts 第三方库支持

正如知乎我的这个回答中所说, 我们开始使用 Cocos Creaor 开发新的项目, 所以以后这个博客会陆续开始更新一些 Creator 相关的文章.

我们在项目开发的过程中, 肯定会遇到一些项目间通用的需求, 比如 压缩/加密 之类的, 我们当然可以自己实现一个, 但更好的做法是找找网上有没有别人实现好的库直接拿来用, 今天我们就来看看如何为 Creator 添加添加 js/ts 第三方库支持.

iOS 打包工具在 XCode9 下的改动

相信大家都会用到 iOS 的自动打包工具, 而不是每次都是通过 XCode 的 Archive 后手动导出的, 那样效率低下不说还增加出错的可能.

我们团队也是如此, 用 Python 搞了一套打包工具, 这套工具的核心是 XCode 附带的命令行工具 xcodebuild, 网上其他开源的打包工具也都大同小异. 这套工具自诞生以来一直运行的很稳定, 累计为我们打了数百个包, 为团队节省的时间估计也在数千分钟了.

更新 spine 的 cocos2d-x runtimes (二)

前段时间一个朋友向我咨询播放 spine 动画时遇到的问题:

这个问题我们在很久之前也遇到过, 当时是另个一小伙伴负责的. 当时猜测可能是 spine runtimes 需要升级, 但是升级时遇到了技术问题, 恰好项目比较紧, 便让美术同学重新用老版的 Spine 编辑器重新做了一遍.

订阅 Hexo 的主题页

作为一个经常换博客主题的人, 时不时的就会去 Hexo 的主题页 逛逛, 看看有什么新的主题, 膜拜下大触们的作品.

比较麻烦的是这个页面并不是按照更新时间排序的, 也没有提供按时间排序的功能, 所以只能靠记忆力了. 这样很容易错过新的主题, 而且每次都是从头找起, 效率极低.

我自己是一个 Feed 的重度用户, 几乎是我扩展学习的唯一途径. 那么能不能将这个界面做成一个订阅源呢?

解决 electron-builder 打包依赖问题

大概是三个月前, 写了 使用 Electron 重写 convert2fnt 这篇文章, 文章大概讲了我用 Electron 重写之前的一个 BMFont 字体生成工具的事情.

开发的过程还是比较顺利的, Node.js 的生态非常给力, 加上 Chrome, VSCode 加持, 开发和调试都很爽. 但由于我没有 WEB 开发的基础, 整过过程只能摸索加网上查资料, 中间之曲折, 自不足为外人道也, 但最终磕磕绊绊的也算搞出来了.

呃, 其实也没有那么完美.

Windows 版打包后发现运行不太正常, 但 Win 开发版以及 Mac 开发/发布版都运行正常.

有些诡异, 不过我自己只在 Mac 上使用, 加上工作比较忙, 便搁置了起来. 但谁愿意在自己头上悬在一把利剑呢, 万一哪天着急用 Win 版的怎么办.

趁着国庆放假还没有什么安排的时候, 赶紧搞一下.

Quick-cocos2d-x 编译 Lua 代码加速

quick-x 在手机上运行的时候并不是加载项目的 Lua 的源码, 而是一个名为 game.zip 的压缩包. 当项目中的 Lua 文件越来越多的时候, 生成这个 game.zip 的时间会越来越久.

我们目前的项目有 1256 个 Lua 文件, 每次执行编译操作需要耗时将近 40 秒的时间:

1
2
3
4
5
time $QUICK_V3_ROOT/quick/bin/compile_scripts.sh -q -i ../src -o ../res/game.zip -e xxtea_zip -ek xxxx -es xxx
---
real 0m38.603s
user 0m25.792s
sys 0m3.369s

尤其是当需要在手机上调试 Lua 代码的时候, 每改一次代码就需要运行一次这个命令, 然后 40 秒就过去了, 你恐怕都忘记自己该关注什么改动了吧!

聊聊 Google 支付的那些事

在之前的文章中, 有很多篇都是很 Apple IAP 相关的, 而 Google IAB 的却一篇都没有, 这对于占了半壁江山的 Android 很不公平.

就作为一个开发者而言, IAB 的体验是比 IAP 要好的. 它体现在这么几个方面:

  1. 测试账号就是 Goolge 账号, 不像苹果那样是沙盒账号. 这样不同账号下的应用可以设置同一个测试账号, 避免来回切换账号.
  2. 支持退款查询. 在苹果上, 只能吃了这个哑巴亏.

但是 IAB 也有一些不太便利的地方, 后面我们会讨论它.

使用 Electron 重写 convert2fnt

大概是 14 年 2 月份的时候, 我使用刚学会 Python 写了一个小工具: convert2fnt, 为此还写了一篇文章 将一堆图片转化为BMFont工具 介绍这个工具. 它的主要应用场景是这个样子的:

美术妹子出了一堆图片字, 但是在程序中使用 BMFont 是更加方便的, 这个时候你可以强硬的要求美术妹子重新用 Glyphdesigner 制作一份字体. 但是也可以很温柔的告诉她: “你先去忙吧, 剩下的交给我了.”, 然后在妹子崇拜的目光下, 转身离去, 深藏功与名.

Quick-cocos2d-x 中的多语言

其实本来我的标题是 “Quick-cocos2d-x 中的国际化与本地化”, 多语言虽然是其中的主要内容, 但还有很多额外的工作.

比如: 在韩国上线的游戏必须在游戏第一次启动时弹出一个内容十分长的用户协议, 用户同意后方可继续游戏; 比如很多赌博性质的活动(抽奖, 拉霸, 转盘)都需要修改为其他表现形式. 还有一些技术方面的要求比如游戏用户的数据不能存在 cache 目录下等等.

每个国家和地区的要求都不尽相同, 有的是硬性的法律法规要求, 有的则是照顾到当地风俗习惯以提高用户体验. 当然, 这些并不在我们这次讨论范畴之内, 等我们的经历足够丰富之后可以再次和大家分享一下.

Quick-cocos2d-x 自定义头像

前段时间我们团队实现了游戏中自定义头像模块, 这是一个比较有意思的功能, 加上网上这方面的资料也不多, 所以给大家分享下我们的做法.

自定义头像这个功能牵扯到的内容还是比较多的, 一个人做的话需要技术储备比较大, 因此我们将这个任务做了如下的拆分:

  1. 选择头像
  2. 上传头像
  3. 下载头像
  4. 显示头像

每个人负责其中的一小部分内容, 再把这些小模块组合起来就完成了任务.

多说, 再见 !

大约是在前几天刷微博的时候看到有人说多说要关站了, 赶紧去备份评论 balabala … , 难以置信, 赶紧去我的邮箱找了下, 果然找到了这封邮件:

震惊 !!! 依然难以置信 !!!

Quick-Cocos2d-x 中的面向对象

虽说现在一直提倡组合优于继承, 但是我们这帮深受 c++ 毒害的大好青年还是对继承有着深深的感情. Lua 这门语言本身并没有提供面向对象的机制, 不过我们可以很容易的通过 Lua 的 metatable 来实现一套面向对象的机制.

最近博客的一些变化

虽然最近博客的产量不高, 但是折腾的比较多. 而且每次折腾完都会有一些新的素材, 这样又可以对付一篇博客出来啦. 逃)

充实而又愉快的 2016

以往的年结大家感兴趣的话可以看这里: 我的年结, 这篇是第四篇了. 我大约是 2012 年正式开始写博客的, 时光荏苒, 已经过去5年了, 期间经历过一次大的迁移, 觉得最开始的博客太没有技术含量, 所以就都丢弃了.

值得肯定的是, 这次的年结是写的最早的一次 ! (此处应有掌声👏) 拖延病患者的一小步, 社会的一大步 !