|
|
由于Blog不能上传RAR文件,故全文贴下,转载此篇文章请务必跟作者联系
半年前曾经接手过的一个项目是类似于冒险类的手机游戏,有大量的分支剧情和文字信息,如果把这部分代码都写进MIDlet里,不仅加载类时会浪费大量内存,而且不易后期维护和修改。所以就开发了这个简单的脚本引擎。他的总体架构是在我参看了圣剑II的源代码之后有所感悟,得益于开源的帮助才得以完成,心存感激,所以今日才将其公布,也算是对前辈精神的一种崇敬吧!
速度:如果在J2ME上采用圣剑II的那种解释型的脚本运行机制,解释一句执行一句,速度肯定不甚理想。所以我想到了将其编译成数据然后读取的做法,运行速度已经在后续的两三个游戏中得到了肯定。唯一的缺陷是编译后的脚本数据文件增大了Jar的大小。
内存:因为脚本采取编译处理,每条指令都变成了数据,所以编译后的数据量也是蛮大的,再加之有大量的文字,如果一次读取进内存,尤其像老40这种变态机型,肯定是要爆掉的,于是我想到了分段读取的办法,所以才将LoadScript和UnLoadScript作为关键字,这样可以动态操纵脚本合时读入内存,合时释放。缺点是读取的I/O操作会降低游戏速度。所以LoadScript的使用应该适时调用。
因为项目时间比较紧,如果自己写词法分析,语法分析这部分,肯定项目来不及,所以就用了JavaCC作为词法语法的分析器。
最后感谢郑玉英同志在脚本编辑器的应用上对我的帮助,虽然你现在到EA后联系渐少,但在我心中你永远是我的兄弟。
Blog上竟然不能上传RAR,没办法放到这里吧,请斑竹不要给我删掉啊!
详情请查看:
http://spaces.msn.com/j2medev/blog/cns!8D09CFF9FE06ED5D!358.entry |
|