Offscreen WebKit Rendering

Overgrowth使用Awesomium做UI,Awesomium是无窗口WebKit,将HTML元素直接绘制到用户自己定义的视频缓冲区里。效果看起来很不错,使用HTML和CSS来做UI开发效率也很高,尤其网络游戏这种需要大量UI的系统,很适合人手有限的小团队。Awesomium基于Chromium,集成了V8,相当于在app里加入了完整的浏览器功能,充分使用可以发掘出很多潜能,绚丽的HTML5和CSS3的效果,免费的脚本调试功能。问题是Awesomium是闭源的,而且只支持Windows, MacOX, Linux,不支持iOS和Android,个头还比较大,Win版有数个DLL文件(超过20M)。理论上Awesomium支持Android是可以的,但是iOS不可能,因为V8无法在iOS的沙盒里运行。Chrome的iOS版也有这个问题,在iOS上甚至Webkit也不能用自己的,换句话说iOS版Chrome只是Safari一个壳。

除Awesomium,还有一个berkelium。它是开源的,支持完整的JS和Offescreen渲染,同样基于Chromium,也意味着对与iOS支持基本不可能。berkelium的功能没有Awesomium那么完善。有点奇怪为什么都使用Chromium版的Port,而不是只用WebKit,毕竟需要的只是UI功能。(使用Chromium的原因是Chromium有一个“WebKit Embedding Layer”,这种方式不用修改WebKit或Chromium的源代码。)。

看了几个Port的代码,包括WebKitSDL、Awesomium(1.08)和berkelium,看上去自己写一个Port并不会很困难,Awesomium最初的实现只用了一周(Awesomium和berkelium都不是Port。我猜我还是没有完全理解。)。

有几个问题让人犹豫:

  • WebKit和Chromium开发速度太快,如果想保证自己的Port与开发库同步不太可能。
  • 不能用V8,JSC有点慢。理论上Offscreen渲染只将WebKit作为一个渲染库,在iOS上可以运行,但是V8由于使用JIT,不大可能跑在iOS上。
  • WebKit不同平台的构建非常繁琐,尤其是如果想裁剪功能。我在Ubuntu12.04上将源改成raring才能将包更新到可以构建。
  • WebKit和Chromium的代码非常复杂庞大,且开发方式让人望而生畏(Very different than Mozilla and other more developer-friendly projects; It IS possible to fix bugs in WebKit, but it’s very difficult to track WebKit development)。
  • 如果想精简WebKit的功能需要对代码相对熟悉,可能会很耗时间,比如搞清楚两条渲染路径(软件和硬件)。
  • 对于硬件加速不熟悉,尤其是嵌入式平台上。

说句玩笑话,如果做一款大小十几M的手机游戏,却要搞个8G内存的PC编译一个多小时,实在难让人心安。

几个定律

看了几个管理学领域的定律,很有趣。

第一个是彼得定律,作者是著名管理学家劳伦斯·彼得,定律的核心是:

在一个等级制度中,每个职工趋向于上升到他所不能胜任的地位。

换句话说就是,每一个职工由于在原有职位上工作成绩表现好,就将被提升到更高一级职位,直到无法胜任为止。该定律有一个推论:

每一个职位最终都将被一个不能胜任其工作的职工所占据。层级组织的工作任务多半是由尚未达到不胜任阶层的员工完成的。

这是一条让人灰心的定律,每个人最终都会到达自己无法胜任的职位。听起来像宿命一样,可能是技术能力所限,可能是管理能力所限,也可能是技术职位转向管理职位,无论究其根本是什么原因导致,这个原理的合理性毋庸置疑。只要我们渴望提升职位,最终都会到达自己无法胜任的层次。

到达彼得高度之后,有两种选择:一种是黯然离场,让有能力的人担当;另一种是进入帕金森定律。帕金森定律核心意思是:

在行政管理中,行政机构会像金字塔一样不断增多,行政人员会不断膨胀,每个人都很忙,但组织效率越来越低下。究其原因是管理者无能。

无能的管理者有三个选择,要么让位,要么找个能干的人帮自己,要么找两个平庸的下属。前两个威胁自己的利益,于是他会选择第三个,该效应会递归下降扩散开来,形成机构重叠、人浮于事、扯皮推诿、效率低下的行政管理体系。其实这就是中国政府的现状。

长尾理论也很有意思,也是最近很流行的一个词语。似乎没有明确定义,按我的理解,主要意思是说:聚集种类繁多小众商品形成的销售量,可以创造出与热门商品相匹敌的价值。过去的“二八定律”中“八”并非微不足道,而是和“二”一样具有价值,甚至更高。Google和Amazon都是典型的长尾公司。

还有一些有趣的定律,比如连续体理论,牢骚法则,雷鲍夫法则,比伦定律等。不过超Y理论说的对,没有什么一成不变的、普遍适用的最佳的管理方式。人是最复杂的动物。

GameDev

最近SSH告急,先是22端口被封,修改默认端口后IP被封,向linode请求修改IP地址后可以正常访问。这里要称赞一下linode的技术支持,每次都在10min内回复。以后不敢再用SSH代理了,从github上搜到一个shadowsock-nodejs,方便可用。

看了一会twitter,昨天@infinite_ammo发起一个话题: what obstacles get in the way of you making games? 很多人参与回答,有些共鸣和感触:

@forwardresent Everything seems so overwhelming to do solo, but I’m the kind of person who wants to do everything solo.
单干有点太夸张了,但是我就是那种什么都喜欢单干的人。

@ArtfulGamer Finding a balance between work (teaching) and gamedev. Bad: limited hours/day. Good: limited hours -> working efficiently.
在教书和游戏开发之间找平衡中。坏处:时间有限;好处:有限时间让人高效工作。

@graebor Trying to make too many of them at once, usually. I think I’m getting better at controlling this, though..
总想一次搞定很多事。呃,我想我已经在努力控制这事了。。。

@AlteredTree quite often, I get distracted by a new shiny idea and lose interest in the old one. I have a lot of half-finished projects…
我经常被一个新点子搞得对以前的点子没兴趣了,于是有了一堆半成品项目。。。

@0SCUR0 mental illness gets in the way of my game making. But sometimes it does the opposite. Double edged sword I guess.
做游戏的过程中,大脑常常会处于病态,不过有时候也有点用,估计是把双刃剑。

@OverworldTheme Also the uncertainty of it. When you’re working alone, it’s hard to gauge what is and is not working. Causes me much grief.
自己工作的时候,很难衡量哪些是工作,哪些不是(翻译错没?),让我很伤心。

@theuncommon Right now it’s the day job. Both the time spent there and the loss of energy afterwards. Can’t afford to leave… yet.
现在这(游戏开发)是日常工作了。时间和精力投入很多,陷太深了。

《指环王》杂感

这两天一口气把《指环王》三部曲看了一遍,加上前几天看的《霍比特人》,算是全了。电影以前看过一点,但只有一点点印象,这次才算看懂。整部电影最精彩的情节就是弗罗多、山姆和咕噜一起去魔多的那些戏,魔戒的隐喻、人性的弱点都展现得淋漓尽致。人在无法战胜自己欲望的时候变得极为卑贱,在欲望得到满足时又极为贪婪。人人都挣脱不了自己的欲念,有智慧的人会选择远离,这就是为什么甘道夫和阿拉冈对魔戒避之不及。《神雕侠侣》里杨过在小龙女跳崖后带上面具,可能也是一样的道理。不要被欲念征服,这是成事的一个基本前提。

其实最震惊的不是情节,而是电影特技。晚上跟同学聊天,感慨国内硬件技术的落后,其实软件的差距也非常巨大。这几天跟哥一起找网游玩,发现一件有意思的事——国产网游和代理网游光看游戏截图就一目了然。几乎所有国产网游无论大小,清一色的乡村非主流。今天在YouTube看了一下午游戏视频,目前尖端游戏引擎的视觉冲击力着实让人震撼。这些年国内网游市场对外不开放,且软件行业的技术一直比较透明,才使得国内这些大厂有机会自己慢慢搞研发,否则必将如汽车行业和芯片行业一样被人远远甩在后面,甚至早已出局。

Torque2D

Torque2D开源了,MIT,Reddit原文消息:

“Take Torque 2D, combine it with iTorque, add in Box 2D physics, several major enhancements and bug fixes, and make it open source. That is Torque 2D MIT. By unifying Torque2D and iTorque into a single code base, GarageGames will be able to offer a single 2D game engine for iOS, Mac and PC. Finally, when we made our changes, it broke functionality in several of the older T2D/iT2D editors. In order to work in an open source environment as soon as possible, we made a decision to publish our initial version of Torque 2D MIT without the editors; in other words, the initial version will be an API only engine with tool development to follow thereafter.”

[http://www.garagegames.com/community/blogs/view/22065]

以前的编辑器不兼容,而新的编辑器还没有做出来。GarageGames将引擎开源可能是由于买许可不赚钱了,普遍认为Unity3D要比Torque3D更出色。GarageGames准备转变营利方向,不再靠卖引擎吃饭,而靠服务赚钱。还提到会从目前正在开发的“3 Step Studio”赚钱,这是一个为无编程基础的人做的游戏制作工具,估计目标是做成一款类似“RPG Maker”的工具。目前Torque2D只支持Windows, Mac, iOS,应该很快会开始支持Linux和Android。如果开发不间断,用户现在使用它来开发跨iOS和Android的应用程序应该是没问题的——想必游戏完成时,Android的支持也已经完成。Torque2D MIT版本据说在架构和性能上都有很大改善,具体可见

Torque2D使用自己的TorqueScript语言作为唯一的脚本语言,虽然很多人建议支持Lua,但短期内不大可能。这个语言本身不难学,但我个人比较反感完全用脚本来制作游戏,即使是Lua或C#。Torque大量使用的资源描述文件,如果没有可用的编辑器,做起来效率会很差,但目前的确没有官方的编辑器可用,即使是付费版也没有。GG的项目经理说:Once the MIT version is launched and their is a committee + voting system, we need to decide what editor framework to go with. Once we decide that, we can start working on the editors. 帖子是去年12月20号的,也就是说,现在连编辑器的影子可能都没有。Torque的文档目前也很不完善。

这里可以看出来,GarageGames这个公司发生过很多事,有些跟产品方向有关,有些跟VC有关。

在GarageGames论坛里发帖问MIT版本接口是不是稳定,能否开始制作真正的游戏,还引起了一些争论。关于Torque是否在走下坡路是一个很敏感的话题,稍微流露出一点质疑就会引起人们很大的情绪。