July 29, 2015

第一次提交绿光

这两天都在忙一个事情, 把我们的一个新游戏提交到 steam 绿光计划上。

去年底开始,公司里就有两个人开始在忙一个小项目。最初的一个月,他们只是做了一个原型,本来打算演化成一个手机游戏,作为 2015 年公司的新项目去推广的。这个原型只有一个简单的战斗动画,提出想法的同学是一个格斗游戏迷,他只是想简化格斗游戏里的操作,提取出一些核心乐趣带给大众玩家。

当然,他同时也是一名优秀的美术设计人员,所以原型做的非常绚丽,一下子就吸引了公司里很多人。

对于这款游戏做出来后如何盈利,最初的两个开发人员(一个美术和一个程序)一点想法都没有。他们没有沉浸过任何网络性质的手游,不懂怎么挖坑赚大 R 的钱。只知道打磨那些 demo 中自己认为有趣的地方。所以对于这个项目是否立项,作为公司的决策人是很为难的。

阅读全文 "第一次提交绿光" »

July 28, 2015

lua 分配器的一些想法及实践

从周末开始, 我一直在忙一个想法。我希望给 skynet 中的 lua 服务定制一个内存分配器。

倒不是为了提升性能。如果可以单独为每个 lua vm 配置一个内存分配器,自己调用 mmap 映射虚拟内存,就可以为独立的服务制作快照了。这样可以随时 fork 出子进程,只保留关心的 vm 的内存快照。主要可以有三个用途:

  1. 可以在快照上做序列化,并把结果返还父进程。通常做序列化有一定的时间代价,如果想定期保存的话,这个代码很可能导致服务暂停。

  2. 可以利用快照监控检查泄露。定期做快照相比较,就能找到累积的对象。我曾经做过这样的工具

  3. 可以在镜像上对快照做一些调试工作而不会影响主进程。

阅读全文 "lua 分配器的一些想法及实践" »

July 22, 2015

如何定义一个经典 Rogue Like 游戏

最近玩 Rogue Like 比较多。似乎好多游戏都被贴了 Rogue Like 的标签,在 steam 上,像盗贼遗产、以撒这些也被归到 Rogue Like 里去了,但我隐隐觉得它们还不应该被算到经典的 Rogue Like 里去。

如果从字面上理解,Rogue Like 似乎又特指界面像 Rogue 的游戏,也就是字符界面,海量的键盘快捷键控制,那么矮人要塞也算一标准的 Rogue Like 。可是 DF 的冒险模式之外的部分又似乎和印象中的 Rogue Like 不同。

另外,还有把一些轻量游戏改贴了 Rogue Lite 的标签。玩起来有点像 Rogue Like 细玩又有些差别。

今天在 google 上乱逛的时候,发现了这个 Berlin Interpretation ,觉得很涨知识,摘录如下:

阅读全文 "如何定义一个经典 Rogue Like 游戏" »

July 14, 2015

被严重低评的好游戏 Rogue's Tale

虽然网络游戏假借游戏之名占据着主流之道,其实游戏玩家从来都只是个小众群体。好在靠着网络的力量,小众群体也能找到同好。steam 就是这么一个神奇的平台,他的贡献不仅在于改变了(中国)玩家的(盗版)消费习惯,更重要的是提供了一个良性的游戏评价平台,让好游戏可以被玩家认可并促使开发者开发出更好的作品。

我在 steam 上的一大乐趣就是翻阅引起我的兴趣的游戏的玩家评测。先从差评看起,了解为什么不被人推荐;再去阅读好评,理解游戏的设计点。在用户生态上,steam 的评测比 ios 的好了不只一个层次。

绝大多数情况下,steam 用户的眼光非常犀利。几乎不会有滥游戏被捧上天,也不会有好游戏埋没。至于某些专门迎合更小众群体的偏门游戏,只要制作的好,也不会被误解。因为非该类游戏的用户根本不会购买它,也就不会写评测了。所以,越小众的游戏,好评率越高。如果被差评,几乎都是制作上有问题不太值得一玩的。

曾经我几乎不会去玩好评率低于 80% 的游戏以避免浪费自己的精力,但随着深入了解 steam 社区,尤其是顺着我喜欢的一些评测文章去追述那些玩家的足迹,我发现了另一些被埋没的好游戏。

Rogue's Tale 就是这样一款被严重低评的好游戏。在写这篇 blog 的时候,它的总评测数量是 200 ,其中只有 129 篇好评,好评率 64% 。对于 steam 上发行的游戏来说,这个成绩几乎把游戏判了死刑。当我把这款我由衷喜爱的游戏推荐给朋友时,几乎第一反应都是:评价很低啊。

当我进行了 121 小时游戏时间后,对它的喜爱溢于言表。我决定为它写第二篇文章。前一篇是我在 steam 上的评测

阅读全文 "被严重低评的好游戏 Rogue's Tale" »

July 09, 2015

n:m 的 vpn 隧道

前两天成功用 mptcp 搭建好出国上 github 的快速通道后 ,在想如何方便的无缝使用。如果不使用 vpn 的话,就无法用路由规则来把流量倒向隧道。当然修改内部 dns 的 github 域名解析是可以的,但终归不是很舒服。

SA 试了一下用 PeerVPN 搭 vpn tunnel ,工作倒是正常,但是 mptcp 跑在隧道上等于是白费了。PeerVPN 是用 UDP 通讯的,实际上只走了单条路径,如果再在上面跑 mptcp 等于是自欺欺人。

所以也曾经考虑过使用基于 TCP 连接的 VPN ,比如 openVPN 。在 SA 尝试做配置的时候,我突然有了个想法。既然 PeerVPN 是开源的,何不修改一下实现,让它支持多个 ip 间建立多条路径的通道呢。

阅读全文 "n:m 的 vpn 隧道" »

July 06, 2015

使用 MPTCP 增加对 github 的带宽

从去年开始,我们的工作项目逐步迁往 github 的私有仓库里。github 太好用了,自己搭建的 git 平台完全比不上。可是购买企业版本自己架服务器成本又太高(平均一个人一年要 250 刀),而我们项目并不多(只是人多)购买私有仓库绝对够用了,唯一的缺点就是 github 没有在国内开展业务,服务器都在境外,速度很慢。

之前我们无论是电信还是联通线路,从 github 上 clone 项目的速度一直没有超过 200KB/s ,而我们租用的国际线路本身带宽又很低(因为单价太高,所以只做部分翻墙用)。而且连接还不太稳定,有一定的丢包率。

考虑到我们办公室租有多条不同运营商的宽带,所以最近在考虑怎么把这些资源整合在一起使用。

带宽的瓶颈显然是在墙上,所以只要提高过墙的带宽就可以了。我在 linode 机器 上做了测试,从 linode 美国机房 clone github 仓库的速度轻易可以达到 8MB/s 。

一开始我的念头是自己写一个支持多条 TCP 连接协作的 tunnel 程序。后来转念一想,MPTCP 不就是干这个用的么?去年的时候玩过一阵 MPTCP ,这次和我们爱折腾的 SA 同学们一起再试试。

阅读全文 "使用 MPTCP 增加对 github 的带宽" »

June 10, 2015

为什么 Lua 的新版本越来越慢?

今天有人转了个知乎上的帖子给我看:Lua 5.3为何很慢?该不该升级?

首先,我不认为 10% 的性能差异能够称的上很大,和 10% 的性能下降相比,程序更清晰稳定、功能更完备(不是指功能多,而是指对各种边界条件处理的更好)要重要的多。毕竟,让 CPU 提升 10% 的性能很容易。

其次,在实际项目中,和简单的测试脚本不同,我很难观察到 10% 的差异。(我们的服务器用过 lua 5.2 和 lua 5.3 两个版本,很难从线上压力上感知到性能差别)。

如果你真的用那些简单的测试脚本做一个比较,lua 5.1 比它的前一个版本 lua 5.0 要慢得多。差别或许比 lua 5.1 到 5.3 还要大。而为什么很少人关心这个,去用回 5.0 呢?说到底还是因为 luajit 导致的 lua 社区的分裂,让 lua 5.1 这个中间版本变成了另一个 lua 而已。

我的硬盘上一直留有从 lua 4.0 开始几乎每个 lua 小版本的源代码副本。而近十年来,一直都在跟进 lua 的源码变迁,所以我对 lua 的每次修改都或多或少有一些印象。下面谈谈我对这个新版本越来越慢的一点个人看法吧。

阅读全文 "为什么 Lua 的新版本越来越慢?" »

Misc

Categories

Archives

Recent Comments