June 23, 2016

正确的序列化 Lua 中带元表的对象

在 Lua 5.2 之后的版本,约定了在元表中可以给出一个 __pairs 方法,而 lua 的基础库 pairs 会使用这个元方法来迭代一个对象。

Lua 5.3 之后的版本,取消了 lua 5.2 中的 __ipairs 约定,而统一使用 lua_geti 来访问整数为索引的数组。

可惜的是,许多 lua 序列化库对此支持的并不好。今天我在改进 bson 的序列化库时,重新考虑了这个问题,看看这个序列化过程怎么做,才能更好的支持 lua 5.3 以后的约定。

阅读全文 "正确的序列化 Lua 中带元表的对象" »

June 07, 2016

skynet 入门指南

随着 lua 5.3.3 的正式发布,我不想再拖了,希望下周就完全冻结 skynet 1.0 的 rc 版本,正式发布。

鉴于 skynet 一直都没有专门的上手指南,过去写的 skynet 设计综述 太老,之后 skynet 又有了很大的变化,所以我想是时候补一篇面向刚接触 skynet 的同学的文章了。

我在 wiki 上补充了一篇 GettingStarted ,欢迎大家多提意见。特别是没有接触过 skynet 又有兴趣的同学,可以看看这篇文章是否讲清楚了 skynet 到底是什么 :)

May 13, 2016

代理服务和过载保护

在 skynet 中,有时候为一个服务实现一个前置的代理服务是很有必要的。

比如,你希望对这个服务发起的请求是支持超时的,就不必在功能实现的服务中实现,那样会增加无谓的复杂性。你可以在功能实现的服务前加一个代理服务,当超时发生时,通知请求方。关于这个实现,我在 blog 中给过一个示例

同理,当你需要做一些负载均衡的处理的时候,也可以做一个代理服务,让请求分摊到多个可以完成类似功能的服务中去,实现比较简单,本文就不展开了。

今天想谈一下怎么利用代理服务更好的为一些热点服务提供过载保护。

阅读全文 "代理服务和过载保护" »

May 07, 2016

skynet 服务的沙盒保护

昨天我们新的 MMO 游戏第一次上线小规模测试,暴露了一些问题。

服务器在开服 3 小时后,突然内存暴涨,CPU 占用率提升不多。当时 SA 已经收到报警邮件,但刚巧在午餐时间,而游戏功能还正常,耽误了半个小时。处理不够及时,导致在最终没有能收集到足够在线数据前,服务器已不能正常操作。另外,忘记配置 core dump 文件输出是另一个原因。

在最后几分钟,我们收集到一些信息:某个 lua 服务陷入 C 代码中的死循环,在 skynet 控制台发 signal 无法中断它(skynet 的 signal 可以中断 lua vm 的运行 )。从 log 分析,内存暴涨是突发的,几乎在一瞬间吃光了所有内存,而并非累积。

第一次宕机后,迅速重启了服务器。同时在内网又同步运行了机器人压力测试,但是无论是外网环境和内网环境均无法重现故障。

阅读全文 "skynet 服务的沙盒保护" »

April 30, 2016

有创意必须实现出来才有意义

这两天在一个游戏设计论坛潜水,读了很多帖子,感觉挺有收获的。

尤其是有一贴,楼主贴了一长篇他的 idea ,应当是想了很久的,算是比较完整,只差动手了。按他的说法,想先在论坛上收集一些反馈。这个论坛聚集了许多核心玩家,和相当数量的游戏开发者,按道理说,他找对地方了。

可是,在下面的回帖中,某人对此作了严厉的批评。

阅读全文 "有创意必须实现出来才有意义" »

April 16, 2016

暴击英雄上架了

不知道这个 blog 的读者中还有多少记得我们承诺要出的单机游戏《暴击英雄》。他终于上架了。

点上图可以去 steam 商店看看,目前首发 7.9 折,30 人民币,如果你读完商店页面下面的好评和差评后,觉得你或许会喜欢这个游戏,那么欢迎你支持我们一下。

ps. 如果你希望用支付宝,可以去衫果买。只不过在衫果买的话,不喜欢不能退款。


按原来的计划,这款游戏应该是在 2015 年底完成的,作为试水产品在 steam 上发售。结果,不出意料的跳票了。开发期整整延长了半年,原因自然是对游戏一直不满意。至于现在的版本,依旧不满意,所以目前还是 Early Access 阶段,接下来两个月会想办法修改已知的问题,希望可以做得好一点点。

至于为什么没有在完全满意后再发布,是因为如果一直这么做下去而不获得真正玩家的反馈,就改成无底洞了。很多内部意见争议也很大,不被玩家骂几句,大家是没那么大动力改的。

阅读全文 "暴击英雄上架了" »

April 14, 2016

排行榜奖金的发放方法

最近有数据显示,我们的游戏《流星庄园》有玩家利用规则漏洞,通过排行榜奖励刷钻石。

我问了一下设计人员一些细节,感觉现在的规则设计是很有问题的。下面记录一下我的想法,和一些改进建议。

排行榜奖励问题不只在我们这样特定的游戏中有,现在几乎所有的 pay2win 游戏都会涉及到。我们最初的规则是,每周为排名前列的公会按名次发放一定的钻石奖励,鼓励大公会竞争,促进消费。

后来,有玩家反应,如果公会无法排在前列,就没有动力竞争了。所以又加了补充规则,如果公会排名又提升,也有相应的奖励。

阅读全文 "排行榜奖金的发放方法" »

Misc

Categories

Archives

Recent Comments