loop_in_codes

低调做技术__欢迎移步我的独立博客 codemaro.com 微博 kevinlynx

lua和python谁更适用于嵌入MMORPG?

 

预计新项目会选择lua或python之一作为游戏的脚本语言。以前草草地接触过这两门语言,对于语法,以及嵌入进C/C++程序都有点感性上的认识。可能是受《UNIX编程艺术》中KISS原则的影响,现在总喜欢简洁的东西。所以我个人比较偏向于使用lua。

 

这两天翻了下网络上的资料,在lua的wiki上看到一篇比较lua和python的文章,草草地翻译出要点:

Python:
1. 扩展库很多,资料很多
2. 数值计算比较强大,支持多维数组,而lua没有数组类型
3. 本身带的c类型(?)支持处理动态链接库,不需要进行C封装(C扩展)
4. 远程调试器,似乎lua扩展工具支持
5. 自然语言似的语法
6. 对于string和list的支持,lua可以通过扩展库实现
7. 对unicode的支持
8. 空格敏感(代码不忽略空格),这其实可以使python的代码风格看起来更好一点
9. 内建位操作,lua可以通过扩展库支持
10.语言本身对错误的处理要好些,可以有效减少程序错误
11.初级文档比lua多
12.对面向对象支持更好

Lua:
1. 比python小巧很多(包括编译出来的运行时库)
2. 占用更小的内存
3. 解释器速度更快
4. 比python更容易集成到C语言中
5. 对于对象不使用引用计数(引用计数会导致更多的问题?)
6. lua早期定位于一种配置语言(作为配置文件),因此比起python来更容易配置数据
7. 语言更漂亮(nice)、简单(simple)、强大(powerful)。
8. lua支持多线程,每个线程可以配置独立的解释器,因此lua更适合于集成进多线程程序
9. 对空格不敏感,不用担心编辑器会将tab替换成空格

Useful Comments:
1. Everything is an object allocated on the heap in Python, including numbers. (So 123+456 creates a new heap object).
2. lua对于coroutine的支持更适用于嵌入进游戏,虽然python也有,但是并没有包含进核心模块

3.Python was a language better suited to Game AI

 

本来想去找点对于python的正面资料(嵌入进游戏这方面),但是居然没找到。客观地说如果单独用python做应用,python还是很有优势。现在心意已决,应该向leader推荐lua。

 

ps,希望能补充以上两种语言的特点。

posted on 2008-05-06 17:37 Kevin Lynx 阅读(8533) 评论(15)  编辑 收藏 引用 所属分类: game develop

评论

# re: lua和python谁更适用于嵌入MMORPG? 2008-05-06 18:03 剑孤寒

正在用lua做游戏,过来说两句:

2. 数值计算比较强大,支持多维数组,而lua没有数组类型
-> lua中的table是可以当数组类型使用的
6. 对于string和list的支持,lua可以通过扩展库实现
->lua是有string的
8. lua支持多线程,每个线程可以配置独立的解释器,因此lua更适合于集成进多线程程序
->lua本身是不支持多线程,在lua里这个东东叫做协同程序

用lua做游戏最大的缺点是不好把程序中的类(包括各种继承关系,以及在脚本里继承C++中的类)导到脚本里(当初为了解决这个问题着实花了不少时间),如果能解决这个问题lua绝对比python更适合做游戏^_^  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-05-06 19:15 Kevin Lynx

@剑孤寒
貌似有个tolua++可以很轻松地解决这个问题。  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-05-07 00:15 Xw.Y

期待项目后的Review~稍稍接触过一点lua和python。。。个人胡乱猜想的感觉是,如果是嵌入MMORPG,取决于用脚本做什么,脚本对用户开放程度,脚本和代码互相依赖的程度等,就个人目前的认知。。。Lua大优于python。 (mail & gtalk: xiaowen dot yan [at] gmail dot com)  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG?[未登录] 2008-05-07 15:04 沐枫

脚本的可控程度,复杂度等等,更容易影响语言的选择.  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-05-07 15:24 Qestion

看了stackless python 么?  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-05-07 16:06 Kevin Lynx

@Qestion
Stackless Python is an enhanced version of the Python programming language. It allows programmers to reap the benefits of thread-based programming without the performance and complexity problems associated with conventional threads. The microthreads that Stackless adds to Python are a cheap and lightweight convenience which can if used properly, give the following benefits:
Improved program structure.
More readable code.
Increased programmer productivity.

似乎很有意思  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-05-08 02:20 test

个人认为,如果就这2种语言选择的话,lua是唯一可能的,用python嵌入MMORPG是给自己找麻烦
我刚开始面临选择的时候是先接触的python,用了python编程确实很好很强大,可一嵌入c++的时候发现个很大的问题,所有的api都少了个印象中应该有的解释器指针。。没有这个指针意味着你的整个程序里面只能有一个解释器,这在多线程比如服务器的时候你有胆量用它么,虽然python有API解决这一问题,但远不直观,方便。
后来接触lua,也是很牛B,跟C++的交互几乎很完美(当然你不能指望一种语言能无缝嵌入另外一种语言),而且lua每个解释器都由一个指针代表,意味着你能在程序中使用N多的解释器而互不干扰,这才是lua方便多线程嵌入编程的真正原因,而不是上面那位说的“协同程序coroutins”
如果让我选择我宁愿lua内核直接支持面向对象而不要coroutins,当你用一种脚本嵌入你的游戏的时候你会希望你的一些小的甚至大点的工具也能用这种语言写,而没有方便的面向对象编程会让你很难受,这也是大家认为python适合做大些的软件而lua不适合的原因。
ps. python虽然本身对类完美支持,但是它的类跟c++的类进行交互嵌入并不比lua方便,印象中反而更麻烦
当然,选择lua还有其他一些公认的原因,小巧,快速等等  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-05-08 09:22 Kevin Lynx

@test
感谢的经验分享,现在选择基本明了了,选lua也符合我自己的美学观念。:D  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-05-08 14:15 zhiyong

lua 和 python 是不同的语言,各有长处、短处,没有最适合MMORPG的脚本语言,只有最适合具体应用的脚本语言。
非要扯这个【最】有意思么?

to: 楼上的楼上

对于你碰到找不到“应该有的解释器指针”这个问题,我不知道说什么才好,难道你的解释器是同时被多个线程使用的?所以你才需要多个解释器实例吧?  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-11-01 16:22 suxiaojack

多个解释器有好处也有坏处。好处显而易见,直接就是多线程了。坏处也是多线程带来的,各个解释器交互数据的问题。但是开启多解释器的进程是可以负责协同这些解释器,以及其中的数据的。这个比直接用Lua本身的协同要方便操作些。  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2008-11-08 09:17 zhaojs

lua可以一个进程加载多个引擎环境,并发执行多个脚本.可以用硬件资源减少软件开发复杂度和软件开发成本.

python一个进程只能加载单个引擎环境,它建议多进程实现并发.单个进程实现多线程是采用python自己的虚拟机,如果调用长时间阻塞的C/C++函数,那就是利用不到python的虚拟机了,所以C/C++扩展必须全部为异步执行的,python的虚拟机非常优秀,单引擎环境也可以节省资源开销. 不过付出的代价就是更复制的软件复杂度和更高的软件开发成本.

个人感悟:社会分工合作可以减少总成本提高生产效率,这是商业存在的意义. 暴雪选择了lua,符合非常符合商业规则,是硬件和软件投入的中庸之道.对暴雪来说,把部分压力转移出去给了硬件.对运营商来说,需要更多的硬件投入,但可以获得更多的上帝感觉.  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2009-03-20 10:09 nopython

EVE online客户端用了是python  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2010-03-22 18:52 aydge

请问楼长的,暴雪的lua和运营商有什么关系呢,客户端执行而已。

引擎端不可能用lua,因为没有硬件能支持那么多lua线程。  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2010-03-22 20:48 Kevin Lynx

@aydge
lua里的线程并非OS里的线程。大家都知道的WOW里的LUA,用于其客户端的UI扩展制作。本文提到的应用主要集中于服务器端的逻辑扩展,如任务、剧情等。  回复  更多评论   

# re: lua和python谁更适用于嵌入MMORPG? 2014-02-26 14:17 sthouwu

现在都是用Lua了吧。面向对象什么的不是问题了  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理