脚本语言和游戏开发/编程



好吧,我一直在接触2D游戏开发/编程,我看到的许多游戏也使用某种脚本语言。所以我想知道——在游戏中使用脚本的目的是什么?我知道答案不是一个简单的原因,我一直在努力考虑所有的可能性。以下是我"认为"我目前所知道的:

1)脚本允许更改游戏而无需重新编译。

2)脚本对于非程序员来说更容易使用。

3)脚本允许我将引擎与游戏本身分离,允许我更快地制作具有相同组件的其他游戏?

这就是我所知道的。我的下一个问题是,如果我要独自开发/编程一款游戏,我真的需要使用脚本吗?或者我是否可以使用python或ruby之类的东西创建游戏原型,以便进行快速测试,然后用c++重写代码,从而节省时间和避免编译器bug ?

另一件事,我想知道,我更好地使用Ruby或Python,因为我最有经验的那些?或者我应该使用Lua、Perl或其他更适合我的目标的东西?说到这个问题,我到底应该用脚本做什么?我是否应该使用它们来定位和模拟游戏菜单UI,编写/读取保存文件,加载地图关卡,保存"新游戏"或"退出"等游戏术语的数组或结构,还是以上所有内容?

如果我使用脚本,难道不允许终端用户编辑游戏机制吗?或者是否有一种方法可以将脚本打包到一个引擎可以读取的压缩文件中?

最基本的,我想知道:

我应该在我的游戏中使用脚本做什么?,为什么?

如果我单独工作或与程序员一起工作,而不是开发人员,我需要使用脚本语言吗?

如果我要制作平台游戏、rpg或其他游戏,我应该使用哪种脚本语言?

你的前3个理由都是100%正确的,它们是使用脚本语言和游戏引擎的主要原因。

就我个人而言,我只是通过Luabind才真正体验到Lua。设置起来有点棘手,但很值得。使用脚本语言,你能做的就是公开你希望"用户"(在这种情况下是你自己)能够使用的数据结构和/或功能。一般来说,唯一可以编辑的游戏机制等是你允许他们编辑的。

我应该在我的游戏中使用脚本做什么?,为什么?资产加载,暴露功能/类型,例如,对于我们的游戏引擎(用c++编写),我们有一个基本关卡,然后继承了许多不同类型的关卡,如波浪关卡,死亡竞赛等。用户只需在脚本中说明他们需要什么类型的关卡,然后在这里添加资产。在我的演示中,我们有;

水平= " wavelevel "

—Level初始敌人数量

EnemyNumbers = " 3 "

—Level总波浪数

波数= " 4 "

——波系数

WaveCoeff = " 1.1 ">

地形大小

TerrainSize = " 256 ">

——地形文件

TerrainFile = "资源/模型/mountainous.raw"

不要太在意那些数字。

正如你所看到的那样,它会加载一些资源并决定关卡类型

我们还将AI的许多控制交给脚本,事实上,数据结构几乎完全暴露在Lua中。

如果我单独工作或与程序员一起工作,而不是开发人员,我需要使用脚本语言吗?

是不可能?当然,我们都更喜欢"真正的"编码。如果你的游戏引擎足够抽象,可以用Lua创造完全不同的游戏,那就意味着你做得很好,设计得很好。

你必须考虑的另一件事,特别是如果你的游戏引擎非常大,让我们面对它,真的不会有一个小的,每次你编译,它可能需要几分钟!是链接器在这里占用了时间。

如果我要制作平台游戏、rpg或其他游戏,我应该使用哪种脚本语言?

我只使用过Lua,所以这是我在这里能给出的唯一建议。

老实说,这听起来像是你第一次尝试制作游戏,你甚至不应该担心这种事情。相反,我更担心的是将项目的范围缩小到一个你有机会真正完成某些内容的水平。如果你还没有尝试过一字棋或Pong级别的游戏,那就先尝试一下。你在那里学到的东西将比担心脚本语言更有价值。

哦,如果你是第一次尝试制作RPG游戏。不喜欢。它们是迄今为止最难制作的游戏类型,即使对于拥有大量可用资源的专业开发者来说也是如此。保持简单,并把它作为一个学习经验。

回到你的问题:如果你是唯一看到你的游戏的人,你可以选择是否使用脚本语言。如果它可以节省您的时间,或者您想学习如何将脚本与代码集成,那么就去做吧,但要注意,它可能会有点浪费时间。

是/否/取决于你的第二个。如果你的游戏范围很小,那么编写脚本就不那么重要了。如果您单独执行此操作,脚本编写就不那么重要了。

你对你所知道的或你的引擎将支持什么(或你可以购买什么引擎工具来支持)的选择。Lua很流行,但即使是手工编写的脚本也可以工作。它更多的是关于将数据从代码和设计类型的工作与工程师类型的工作分离。

你最初的观点适用。脚本将非编码人员排除在代码之外,并允许团队中的任何人轻松更改应该在代码中的数据相关内容。脚本也是一种非常高级的语言,允许以可控的方式改变许多游戏关卡,如果放在代码中会显得很难看。我个人也参与过这两种方式的游戏。脚本游戏在游戏周期结束时更容易维护——如果脚本支持代码已经成熟,并且经过了一些调试周期。新的脚本支持代码比直接编码更难调试,因为有更多可能的故障点。没有脚本的游戏往往完成得更快,但需要更多程序员/工程师的时间,这意味着整体范围必须限制在预算之内。

我想说的是,精心设计的脚本和整体游戏系统总是胜过直接编写代码。以Unity为例,我们可以看到脚本、代码和其他内容如何结合到一个流畅的界面中,从而实现快速的游戏开发。

我应该在游戏中使用脚本做什么?,为什么?

你引用的理由都很好。你可能需要了解的一件事是,大多数专业游戏仍然是用c++构建的,如果代码基数很大,它就无法灵活地进行更改。因此,如果你使用c++,你将需要脚本语言来根据你列出的原因进行快速更改,这很重要。

如果你不使用c++,也许你使用一种可以快速吸收变化的语言,使得脚本的主要目的不那么明显。我不会在Flash或Python游戏中使用脚本语言。

我需要使用脚本语言,如果我独自工作或与程序员与开发人员的区别?

正如我之前的回答:这取决于变化的时机。游戏的核心规则很少改变,但与关卡设计相关的一切都会改变,并且应该尽快进行测试。如果你可以在游戏的编程语言中做到这一点,为什么还要这么做呢?如果你不能,那么任何加速变革整合的方法都是值得的。

我应该使用什么脚本语言,如果我要做平台游戏、rpg或其他游戏?

坦率地说,任何问题都没有唯一的解决办法。我个人使用Falcon和ChaiScript, Lua是众所周知的,但任何可以用于游戏编程的脚本语言都可以。这是一个已经有人问过的问题,如果你有疑问,就选择Lua吧,因为它在游戏中是最常见的。
我给你一个简短的回答。脚本主要用于在游戏仍在运行时更改内容,这样你可以更快地编辑内容。这比重新编译,重新加载资产,进入游戏中的特定点,激活某些条件(道具,以特定顺序与人交谈等)等等要好得多。

脚本中完成的事情是角色演讲,NPC与触发器的互动(例如走到某个地方,停下来与另一个NPC交谈,然后跑到某个地方,脚本用于计时),触发器或事件以及敌人的状态(生命值,速度,准确性,有时说是角色的逻辑)。

你列出的理由都是在游戏中使用脚本语言的正当理由。我还想补充另一个原因:不同的语言更适合不同类型的编程任务,高级脚本语言可以让你用比c++更适合的语言编写部分游戏。

c++在游戏中广泛使用的主要原因是性能,易于访问低级本地api或硬件(在主机上)以及惰性-大多数游戏都是用c++编写的,因此大多数第三方库和游戏中间件都是用c++编写的,并且最容易与c++进行接口。然而,对于许多任务,像Python、c#或Ruby这样的高级语言比c++更能提高程序员的工作效率,对于性能不重要或不需要与本地api接口的代码,这种优势可能超过c++的优势。

一个设计良好的c++游戏引擎加上高级脚本语言可以给你两全其美——c++最需要的地方的性能和低级访问,以及高级语言最需要的地方的生产力。

事实上,几乎所有的MMORPG游戏服务器都是用脚本编写的。

所有的c++引擎都会嵌入一个脚本语言来进行逻辑处理,lua是适合它的脚本语言。

在bigworld中,python是默认的嵌入语言。

node.js也是游戏服务器编程的一个很好的候选。因为它的网络io能力优越。node.js中有一个开源框架:https://github.com/NetEase/pomelo/

我发现使用脚本很有帮助,无论是在大型游戏工作室还是作为独立开发者的工作中。另一方面,我有一些朋友成功地使用了带有脚本技术的专业级现代引擎。如果你是在独立开发游戏(或在一个小团队中),我认为你应该避免使用这种方法。主要原因有:

    它几乎在任何地方都增加了开销:多一门语言需要掌握(团队中的每个开发人员),性能比本机慢,API是最薄弱的环节,这意味着你经常需要重新构建二进制文件。使用高级语言的唯一真正好处是减少了前期的开发时间(如果你使用的是成熟的引擎),但根据我的经验,这些时间最终会被耗时的漏洞修复所消耗。许多游戏脚本语言使用动态类型(如Lua, Stackless Python, Pawn),我发现与静态类型语言相比,这更容易出错。如果你也觉得它只对简单的事情有好处,你还不如直接使用它。
作为旁注,我确实发现游戏脚本语言非常有用,但仅用于快速破解/原型应用,而不适用于游戏中的大型组件。请看我的回答。

我不相信你自己写的游戏脚本界面有这么有用。我曾经在Freeciv上做过一些工作,并投入了大量精力去使用脚本界面实现"建模"。这个功能似乎很少使用。我认为存在内部平台效应的危险。你不需要脚本语言来定制你的游戏:你已经拥有了一种完美的编程语言(在你的例子中是c++)。这是一个WTF。

我应该在游戏中使用脚本做什么?,为什么?

就像所有人(包括你自己)所说的那样,脚本让你的游戏更容易编辑。在一个更大的团队中,脚本也具有非常好的生产力效果:精通技术的人可以继续优化引擎,而创意人员可以致力于真正的游戏,两个团队不必互相妨碍。

我是否需要使用脚本语言,如果我是单独工作或与程序员而不是开发人员?

您不需要它,并且取决于您的最终目标是什么,实现脚本实际上可能是浪费时间。我还开发了一款2D脚本游戏;我是一个人,但我把它写成脚本也是一个个人挑战,也因为我想让游戏很容易修改。

如果我要制作平台游戏、rpg或其他游戏,我应该使用什么脚本语言?

最受欢迎的两个选项是Lua和Python。大多数人推荐Lua是因为它稍微快一些。我选择了Python,因为它(原生)支持类—它可以很好地与我现有的c++体系结构—也因为我发现它是一种更令人愉快的语言。

好吧,我知道这有点死气沉沉的,但我必须这么说。没有脚本就没有编程这回事。老实说,你是不是自己写的并不重要,事实是,这些剧本是别人写的。就像ruby,为了使用它,你需要一个像notepad+这样的程序来设置它,或者任何基于enterbrain的RPG Maker都使用ruby来操作。不管你喜不喜欢,在使用电脑设计游戏时,要学会编写脚本。至于语言,查一些资料,尝试不同的语言。不要使用预编译的引擎,只要从头开始工作。相信我,你会好起来的。我还在努力决定我更喜欢哪个,Lua(c++)还是Ruby。我可以用纯c++

最新更新