预计新项目会选择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 阅读(3137) 评论(14)  编辑 收藏 引用 所属分类: 游戏开发

评论
# 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扩展制作。本文提到的应用主要集中于服务器端的逻辑扩展,如任务、剧情等。  回复  更多评论

刷新评论列表

lua和python谁更适用于嵌入MMORPG?相关推荐

  1. notepad++ 查找引用(Find Reference)(适用于c c++及各类脚本比如lua、python等)

    在程序开发过程中,程序员经常用到的一个功能就是查找引用(Find Reference),Visual Studio里面的对应功能是"查找所有引用"(Find All Referen ...

  2. lua与python结合_从Python到Lua

    在码农世界里,有几个迷之争论:Vim/Emacs与IDE之争.Tab与Space之争.Windows与Linux(也包括macOS等)之争,诸如此类.任何一个争论都是莫名激烈.动不动就友尽,如果你恨一 ...

  3. php和python web开发-php与python谁更适合web开发?为什么?

    就单纯PHP和python比较的话,甚至说是强大的Java(Java的优势是复杂业务逻辑,企业级应用,当然电商领域例如阿里也喜欢)来说,PHP就是为Web而生的!开课通知:php中文网<第10期 ...

  4. php和python哪个用了开发web好-php与python谁更适合web开发?为什么?

    就单纯PHP和python比较的话,甚至说是强大的Java(Java的优势是复杂业务逻辑,企业级应用,当然电商领域例如阿里也喜欢)来说,PHP就是为Web而生的!开课通知:php中文网<第10期 ...

  5. java和python的优势_Java和Python哪个更好?解读Python对比其他语言的优势

    人生苦短,我用 Python,为啥这么说,因为我们码农圈有金句:学完Python,便可上天 ~ 首先 我要向各位坦诚,我对 Python 的喜爱也是从几年以前才开始的.不经历长期的痛苦教训,我们是不会 ...

  6. php和python-php与python谁更适合web开发?为什么?

    就单纯PHP和python比较的话,甚至说是强大的Java(Java的优势是复杂业务逻辑,企业级应用,当然电商领域例如阿里也喜欢)来说,PHP就是为Web而生的!开课通知:php中文网<第10期 ...

  7. SQL和Python 哪个更容易自学?

    当然是SQL,无论是文科还是理科,这个答案都是毋庸置疑的. 看了很多回答,竟然有人说二者差不多,甚至有的回答为了博眼球说SQL比Python要难,真实误人子弟,害人不浅. 下面,就从如下几个方面说一下 ...

  8. 掌握python和js_js与python哪个更强大 javascript和python哪个好入门

    请问javascript与python学哪个更好?女人比较不那么容易有欲念,对着自己心爱的男人,有时候一个温柔的拥抱已胜过一切激情. 你要做什么才是关键啊,前端的话你基本不会用到python啊,还是老 ...

  9. R和Python谁更好?这次让你「鱼与熊掌」兼得

    作者 | Parul Pandey 译者 | 大鱼 责编 | Jane 出品 | Python大本营(公众号id:pythonnews) 如果你从事在数据科学领域,提到编程语言,一定能马上想到 R 语 ...

最新文章

  1. pyqt designer connect无响应_如何用PyQt编写桌面程序,创建并打开播放列表?
  2. Jenkins分布式部署配置
  3. cmake 头文件 库文件
  4. IIS报错,App_global.asax.×××.dll拒绝访问
  5. linux 镜像自动安装,制作能自动安装的CentOS镜像文件
  6. [分布式训练] 单机多卡的正确打开方式:PyTorch
  7. MongoDB简介、在node中使用MongoDB
  8. hive 导出json格式 文件_hive中创建hive-json格式的表及查询
  9. shell脚本编程学习(一)
  10. 到底啥是平台,到底啥是中台?李鬼太多,不得不说
  11. python找不到sys模块_在本地目录中找不到模块,存在于sys.path中
  12. amazon linux ami root 密码,Amazon Linux AMI 2015.09 (HVM)平台搭建lamp
  13. python dwg转图片_如何把cad转高清jpg图片?
  14. 用户场景法,设计测试用例
  15. 运动坐标系的旋转角速度与旋转角(转换角)的关系
  16. 爱快服务器怎么重置系统,爱快软路由 备份设置以及恢复备份设置教程-路由器怎么恢复出厂设置...
  17. Windows系统蓝屏机制
  18. The current epoch, 79 is less than the accepted epoch, 5b
  19. 高可用解决方案:同城双活?异地双活?异地多活?怎么实现?
  20. 清华大学教授张长水:基于小样本学习的计算机视觉应用

热门文章

  1. 18 模块划分4步骤——EDD
  2. 四足机器人 | GEM(elevation map) + Fast_Lio(odometry) 环境部署记录
  3. web前端期末大作业 HTML+CSS+JavaScript---介绍自己的家乡-宁夏js菜单下拉
  4. Microsoftware Project 的安装和使用不需要连接project server
  5. 又一年神仙打架,清华大学特等奖学金答辩会上15位大神现场竞争!
  6. 如何提取fq.gz中的文件_什么是GZ文件类型或扩展名? 如何创建,提取和打开Gz文件?...
  7. PSINS中19维组合导航模块sinsgps详解(滤波部分)
  8. 【信息论基础】离散信息的度量—自信息和互信息
  9. (GCC)STM32CubeMX生成的ld链接脚本详解
  10. Android之无限轮播图源代码