[TL][游戏设计]lua或者python如何应用到游戏开发(软件自动化)中的?

214 views
Skip to first unread message

sagasw

unread,
Jul 21, 2009, 2:44:17 AM7/21/09
to pongba
经常看到云风的博客上有介绍关于lua的文章,十分感兴趣,也找了一些lua与c++、c进行交互的例子。
但是总感觉隔了一层,lua可以直接操纵c或者c++的对象,但是具体来说,如何被使用在游戏开发中?有了解的牛人帮忙介绍一些。

如果不是搞游戏开发,但也用到了lua或者python作为脚本语言的也很感兴趣。

我们公司使用的是VBA的自动化,有些类似于word自动化,但是基本上自己做的很少,大多是用微软SDK实现。
假如说使用lua或者python作为自动化或者动态脚本,该如何着手呢?

Jeffrey Zhao

unread,
Jul 21, 2009, 2:47:29 AM7/21/09
to pon...@googlegroups.com
我没有真做过游戏开发,只是听人聊起过。
 
游戏中业务参数修改特别频繁,因此需要一种脚本语言,易于使用,易于修改,立马生效,从这点上说Lua还是比较合适的。
 
 

Linker

unread,
Jul 21, 2009, 2:53:08 AM7/21/09
to pon...@googlegroups.com
如果是加微软派系的公司,强烈建议不用除了微软以外的技术。
以免个人收到非技术以外因素的影响。

2009/7/21 sagasw <sag...@gmail.com>:

--
Regards,
Linker Lin
linker...@gmail.com

Jeffrey Zhao

unread,
Jul 21, 2009, 2:55:44 AM7/21/09
to pon...@googlegroups.com
这是为什么?“非技术以外”,这里是笔误,还是双重否定啊?

其实我很提倡没有门户之见,各种平台一起用的,所以不知道这么说的理由是什么。

--------------------------------------------------
From: "Linker" <linker...@gmail.com>
Sent: Tuesday, July 21, 2009 2:53 PM
To: <pon...@googlegroups.com>
Subject: [TL] Re: [TL][游戏设计]lua或者python如何应用到游戏开发(软件自动化)中的?

sagasw

unread,
Jul 21, 2009, 3:07:56 AM7/21/09
to pongba
假如说有这样一个商业软件,是用来做组态开发,就好像VB那样,有设计期运行期,工业控制领域称之为HMI,这种软件可以让用户为自己的工程项目编写实际应用。

VBA作为一个运行期脚本,可以让用户控制一些程序中的对象,让他们有更强大的定制能力。这一块我了解的也不多,但好像就是继承一些特定的类,然后用户就可以获取使用。

假如说使用VBA以外的,是否需要自己构建一整套完整的对象以及方法的体系结构,然后暴露给用户使用?


2009/7/21 sagasw <sag...@gmail.com>

qiaojie

unread,
Jul 21, 2009, 3:29:49 AM7/21/09
to pon...@googlegroups.com
业务参数修改频繁的话应该用数据驱动的框架来解决,而不是用脚本语言,对于游戏来说一个好的游戏编辑器比脚本更重要。




2009/7/21 Jeffrey Zhao <je...@live.com>

莫华枫

unread,
Jul 21, 2009, 3:33:57 AM7/21/09
to pon...@googlegroups.com


2009/7/21 Linker <linker...@gmail.com>
如果是加微软派系的公司,强烈建议不用除了微软以外的技术。
以免个人收到非技术以外因素的影响。

这不把ms当锤子了嘛?



--
反者道之动,弱者道之用
m...@seaskysh.com
longsh...@gmail.com
http://blog.csdn.net/longshanks/

莫华枫

unread,
Jul 21, 2009, 3:37:23 AM7/21/09
to pon...@googlegroups.com


2009/7/21 qiaojie <qia...@gmail.com>
业务参数修改频繁的话应该用数据驱动的框架来解决,而不是用脚本语言,对于游戏来说一个好的游戏编辑器比脚本更重要。

完了之后,会发现这个框架需要图灵完备。

谢铸聪

unread,
Jul 21, 2009, 3:49:24 AM7/21/09
to pon...@googlegroups.com
底层引擎用C或者C++写,然后封装成dll文件,而以后针对具体游戏所做的更改就只是在脚本层次了,当你对游戏做了修改,想看结果,无需重新编译太多东西(这里的东西主要是底层部分)就可以看到实现结果了。
用同一套引擎,然后用脚本来开发,可以作出不同的游戏。

谢铸聪

unread,
Jul 21, 2009, 3:53:45 AM7/21/09
to pon...@googlegroups.com
补充一句,我也看云风的博客,也看他的书,算起来还有点关联,他是我的偶像来的,呵呵。
 

机械唯物主义

unread,
Jul 21, 2009, 4:26:26 AM7/21/09
to TopLanguage
不是有一个lua 中国社区吗,里面看看。
这方面的书籍肯定有,到那个社区去问问。

sail tsao

unread,
Jul 21, 2009, 4:40:35 AM7/21/09
to pon...@googlegroups.com
网游服务器和客户端都会用到lua。
服务器使用lua主要是写一些容易变更的逻辑处理,这部分逻辑处理如果硬编码写到服务器模块内的话修改的时候就需要重新编译服务器模块,需要重启服务器。对于策划需要多次调节某些数值的需求来说,使用lua可以在不重启服务器的情况下看到修改后的效果,非常方便。lua还可以用作服务器的配置文件,传统的ini配置文件不够灵活,lua配置文件可以加入逻辑处理。比如曾看到金山的服务器资源中就有配置NPC对话的LUA文件。

客户端使用lua可以用来做界面的逻辑处理,比如魔兽世界的插件系统。

2009/7/21 机械唯物主义 <linjun...@gmail.com>

Linker

unread,
Jul 21, 2009, 5:18:42 AM7/21/09
to pon...@googlegroups.com
个人不鼓励微软派系的人用Lua。
主要处于团队气氛的考虑。微软系团队最好用VBA之类的。比较和谐。
但是欢迎和我讨论Lua方面的问题。


2009/7/21 sagasw <sag...@gmail.com>:

--
Regards,
Linker Lin
linker...@gmail.com

Linker

unread,
Jul 21, 2009, 5:22:09 AM7/21/09
to pon...@googlegroups.com
对于微软系,我推荐用C++/CLI 和 C# 结合来解决工程问题。
脚本可以选IronPython。


2009/7/21 sagasw <sag...@gmail.com>:

--
Regards,
Linker Lin
linker...@gmail.com

qiaojie

unread,
Jul 21, 2009, 5:25:47 AM7/21/09
to pon...@googlegroups.com
服务器端可以这么干,但是对于客户端来说还是不行的。不过客户端其实可以考虑mono,我目前也正在写一套基于mono的引擎,附带的好处是可以方便的实现跨平台。


2009/7/21 Linker <linker...@gmail.com>

jyf1987

unread,
Jul 21, 2009, 6:13:48 AM7/21/09
to TopLanguage
我用lua写饭否爬虫 irc机器人
都挺好用的
还有配置gd库处理图片的 不搞游戏 也能搞别的

sagasw

unread,
Jul 21, 2009, 7:55:13 AM7/21/09
to pon...@googlegroups.com
下载了VLC的代码,准备研究一下它是怎么用的。


2009/7/21 Linker <linker...@gmail.com>

ys n

unread,
Jul 21, 2009, 6:10:02 AM7/21/09
to pon...@googlegroups.com
lua的优势就是适合做嵌入式的脚本编程,
python倒是适合做自动脚本.有兴趣可以看下tolua++.游戏是一种强逻辑的程序,所以lua才游刃有余,方便把纯逻辑提取出来,简化了底层代码,甚至可以把脚本交给非技术人员来写.

2009/7/21 sagasw <sag...@gmail.com>:

Linker

unread,
Jul 21, 2009, 12:11:21 PM7/21/09
to pon...@googlegroups.com
楼主的问题就是在于非游戏开发。
我觉得如果逻辑不是很变化很复杂,没有必要引入脚本。
对于windows平台,没有比C#最合适的高层语言了。
Linux我还是一如既往的推荐 C++ Lua组合。

2009/7/21 ys n <okn...@gmail.com>:

--
Regards,
Linker Lin
linker...@gmail.com

云天

unread,
Jul 22, 2009, 5:03:02 AM7/22/09
to TopLanguage
我正有个构思,用python+gtk开发游戏界面,c处理游戏数据。
楼主有没有兴趣一起来研究

Linker

unread,
Jul 22, 2009, 5:39:55 AM7/22/09
to pon...@googlegroups.com
有pyGTK,为何不用?

2009/7/22 云天 <lbt...@gmail.com>:

--
Regards,
Linker Lin
linker...@gmail.com

机械唯物主义

unread,
Jul 22, 2009, 6:26:29 AM7/22/09
to TopLanguage
有pyqt,pygame,为何不用?

On Jul 22, 5:39 pm, Linker <linker.m....@gmail.com> wrote:
> 有pyGTK,为何不用?
>
> 2009/7/22 云天 <lbth...@gmail.com>:

> linker.m....@gmail.com

Cheng, Long

unread,
Jul 22, 2009, 8:25:19 AM7/22/09
to pon...@googlegroups.com
把脚本交给非技术人员来写是万恶之源。没有经过系统理工科训练的人写代码都不
靠谱。

ys n 写道:

ys n

unread,
Jul 22, 2009, 11:48:17 AM7/22/09
to pon...@googlegroups.com
没有万恶之源,有的话,除掉它,世界都清静了。完全可以提供一个简洁易用的框架,这个当然要结合具体需求了,lua很适合,可以和C++很好的合作,可以用元表支持面向对象。非技术人员只要有逻辑思维就可以了(诗人除外)

2009/7/22 Cheng, Long <long.x...@gmail.com>:

qiaojie

unread,
Jul 22, 2009, 12:18:01 PM7/22/09
to pon...@googlegroups.com
你这个想法其实蛮天真的。脚本语言跟C++的差别只是脚本不需要使用者了解系统底层,但是程序逻辑上的要求丝毫没有降低,也就是充其量解决了人月神话中所说的次要矛盾,而问题的主要矛盾丝毫没有得到缓解。要指望非程序员解决程序员都感觉最棘手的问题,你认为现实吗?

2009/7/22 ys n <okn...@gmail.com>

qiaojie

unread,
Jul 22, 2009, 12:28:28 PM7/22/09
to pon...@googlegroups.com
其实这个问题我之前已经说过了,对游戏来说最重要的是实现一个数据驱动的框架,狭义上可以理解为游戏编辑器(实际上这个概念要宽泛的多),有了编辑器美术就可以导入各种素材,策划们就可以设定剧情填写各项设定,调整玩法,平衡等等,这些才是一个游戏的主要工作。脚本可以降低一些编码上的复杂度,但是绝对不是程序实现一个游戏引擎再集成个脚本系统,扔给策划就万事大吉,把脚本当成万金油,都是没做过游戏的人yy出来的。


2009/7/23 qiaojie <qia...@gmail.com>

sagasw

unread,
Jul 22, 2009, 7:22:43 PM7/22/09
to pon...@googlegroups.com
qiaojie,以你的看法,WOW使用lua是作为什么样的功能出现?
仅仅是为了让用户可以扩展么?

没有玩过WOW,也不了解游戏产业,发问的可能有些初级。

BTW,看到某个掌机开发论坛的牛人放出一个可以在psp上开发avg的lua框架,可惜框架没有源代码。不过倒是可以参考一下luaplayer,应该是一样的概念吧。

2009/7/23 qiaojie <qia...@gmail.com>

sagasw

unread,
Jul 22, 2009, 7:42:22 PM7/22/09
to pon...@googlegroups.com
还是关于云风。

突然想起他还写了一本书,于是翻了翻,竟有一章专门介绍lua与脚本的。
有些书果然是要反复读的,记得当时看这一章因为不感兴趣就了了翻过。

2009/7/23 sagasw <sag...@gmail.com>

@@

unread,
Jul 22, 2009, 9:18:57 PM7/22/09
to pon...@googlegroups.com
wow的lua是给用户用的。
简单的用法就是写宏比如你自己绑一个键可以用来同时完成几个不冲突的工作。
复杂的就是写插件用到的。

2009/7/23 sagasw <sag...@gmail.com>

Linker

unread,
Jul 23, 2009, 12:00:28 AM7/23/09
to pon...@googlegroups.com
同意qiaojie的看法!
很久以前尝试过让没有专业素质的人写脚本,是非常不靠谱的事情。
我觉得,在windows下面,C#表述上层逻辑,外加优秀的编辑器,和C++底层,是非常合适的架构。

关于编辑器,还是有个问题,有些逻辑方面的东西很难通过编辑器来编辑。
一个网络游戏的数据部分可能没有单机游戏那么多。更多的成份是逻辑。
一个逻辑编辑器又是比较难设计的。
有谁有这方面的经验的?


2009/7/23 qiaojie <qia...@gmail.com>:

--
Regards,
Linker Lin
linker...@gmail.com

qiaojie

unread,
Jul 23, 2009, 12:25:31 AM7/23/09
to pon...@googlegroups.com
网络游戏的数据没有单机游戏多?一个典型的mmorpg,至少有3个种族,5个职业,几十种角色属性,百来NPC,上千种道具,还有N多任务,你说这个数据大不大呢?
你要给每个NPC每个任务都写个脚本来实现其行为,那不是累死人的活?我还见过把NPC对话都写到脚本里的,这种做法跟用C++硬编码比起来好不了多少。比较好的
解决方案是把逻辑分离出来,写若干套NPC模板,然后通过数据来进行配置。







2009/7/23 Linker <linker...@gmail.com>

Linker

unread,
Jul 23, 2009, 3:31:04 AM7/23/09
to pon...@googlegroups.com
配置?
我就在想这个“配置”到底是啥?
用脚本实现,可以把脚本看成是配置文件啊。
请qiaojie明示。

2009/7/23 qiaojie <qia...@gmail.com>:

qiaojie

unread,
Jul 23, 2009, 4:40:46 AM7/23/09
to pon...@googlegroups.com
配置就是一组结构化的数据集合,比方一个数据表,一个XML文件,一个具有规定格式的文本文件。
脚本当然也可以看成是数据,但它不是结构化的,你可以随意添加各种逻辑和数据到脚本里,这样就
容易造成混乱,使编辑和维护都不方便。当然了,脚本本身也具有定义结构化数据的能力, 你要那样
用的话也是可以的。
数据驱动除了能配置一些简单的对象属性,也可以做一些很复杂的事情的,比方说XMAL里可以定义数
据绑定,把一个控件的属性值绑定到另一个对象的某个属性上,使其自动保持同步,而以前都是手工写
代码来保持同步的,代码即罗嗦又麻烦。在WPF里大部分UI都可以用这种数据申明的方式来定义,代码
量相比传统UI开发方式要小很多,这就是典型的数据驱动模式。



2009/7/23 Linker <linker...@gmail.com>

Cheng, Long

unread,
Jul 23, 2009, 5:18:45 AM7/23/09
to pon...@googlegroups.com
其实很简单,将逻辑和数据分开就ok。逻辑方面的东西,让策划用汉语描述,然后
程序员写程序(脚本)实现。数据的东西(数字、公式、文本)策划用工具填。

Linker 写道:

ys n

unread,
Jul 23, 2009, 11:56:25 AM7/23/09
to pon...@googlegroups.com
用lua肯定也是定义一套模板的,任务,道具,npc分别有不同的模板。脚本本身也具有定义结构化数据的能力,整个脚本系统除了接口,逻辑,就是数据了,这些数据可以单独出来的,和数据驱动不冲突。脚本的目的不是用来封装底层,而是一个相对独立的模块,一般都是事件触发的,也符合游戏的特点。

2009/7/23 qiaojie <qia...@gmail.com>:

nFox

unread,
Jul 24, 2009, 1:51:58 AM7/24/09
to TopLanguage
其实没必要硬性规定

好用的就和谐

> linker.m....@gmail.com

nFox

unread,
Jul 24, 2009, 1:53:22 AM7/24/09
to TopLanguage
C#还是比较低层的语言吧

On 7月22日, 上午12时11分, Linker <linker.m....@gmail.com> wrote:
> 楼主的问题就是在于非游戏开发。
> 我觉得如果逻辑不是很变化很复杂,没有必要引入脚本。
> 对于windows平台,没有比C#最合适的高层语言了。
> Linux我还是一如既往的推荐 C++ Lua组合。
>

> 2009/7/21 ys n <okni...@gmail.com>:
>
> > lua的优势就是适合做嵌入式的脚本编程,
> > python倒是适合做自动脚本.有兴趣可以看下tolua++.游戏是一种强逻辑的程序,所以lua才游刃有余,方便把纯逻辑提取出来,简化了底层代码,甚至-可以把脚本交给非技术人员来写.


>
> > 2009/7/21 sagasw <sag...@gmail.com>:
> >> 经常看到云风的博客上有介绍关于lua的文章,十分感兴趣,也找了一些lua与c++、c进行交互的例子。
> >> 但是总感觉隔了一层,lua可以直接操纵c或者c++的对象,但是具体来说,如何被使用在游戏开发中?有了解的牛人帮忙介绍一些。
>
> >> 如果不是搞游戏开发,但也用到了lua或者python作为脚本语言的也很感兴趣。
>
> >> 我们公司使用的是VBA的自动化,有些类似于word自动化,但是基本上自己做的很少,大多是用微软SDK实现。
> >> 假如说使用lua或者python作为自动化或者动态脚本,该如何着手呢?
>
> --
> Regards,
> Linker Lin

> linker.m....@gmail.com

nFox

unread,
Jul 24, 2009, 1:55:15 AM7/24/09
to TopLanguage
C#算是比较低的吧

python还是比较好用的

On 7月22日, 上午12时11分, Linker <linker.m....@gmail.com> wrote:

> 楼主的问题就是在于非游戏开发。
> 我觉得如果逻辑不是很变化很复杂,没有必要引入脚本。
> 对于windows平台,没有比C#最合适的高层语言了。
> Linux我还是一如既往的推荐 C++ Lua组合。
>

> 2009/7/21 ys n <okni...@gmail.com>:
>
> > lua的优势就是适合做嵌入式的脚本编程,
> > python倒是适合做自动脚本.有兴趣可以看下tolua++.游戏是一种强逻辑的程序,所以lua才游刃有余,方便把纯逻辑提取出来,简化了底层代码,甚至-可以把脚本交给非技术人员来写.
>

> > 2009/7/21 sagasw <sag...@gmail.com>:
> >> 经常看到云风的博客上有介绍关于lua的文章,十分感兴趣,也找了一些lua与c++、c进行交互的例子。
> >> 但是总感觉隔了一层,lua可以直接操纵c或者c++的对象,但是具体来说,如何被使用在游戏开发中?有了解的牛人帮忙介绍一些。
>
> >> 如果不是搞游戏开发,但也用到了lua或者python作为脚本语言的也很感兴趣。
>
> >> 我们公司使用的是VBA的自动化,有些类似于word自动化,但是基本上自己做的很少,大多是用微软SDK实现。
> >> 假如说使用lua或者python作为自动化或者动态脚本,该如何着手呢?
>
> --
> Regards,
> Linker Lin

> linker.m....@gmail.com

Linker

unread,
Jul 24, 2009, 4:17:57 AM7/24/09
to pon...@googlegroups.com
2009/7/24 nFox <nFo...@gmail.com>:
> C#算是比较低的吧
语无伦次!!!

--
Regards,
Linker Lin
linker...@gmail.com

Reply all
Reply to author
Forward
0 new messages