我应该在移动设备上使用Lua进行游戏逻辑吗?


33

如上

我在业余时间写了一个基于Android的游戏(Android是免费的,我没有做任何商业广告的抱负)。

游戏逻辑来自一个非常典型的基于组件的模型,在该模型中,实体存在并具有与之相连的组件,并且来回发送消息以使事情发生。

显然,实际执行的那一层很薄,如果我要编写此应用程序的iPhone版本,则必须在Objective C中重新编写(此基于组件的系统的)渲染器和核心驱动程序。

实体只是确定要添加的组件名称的平面文件,而组件本身是包含实体逻辑的简单,单一目的的对象。

现在,如果我用Java编写了这些组件的所有逻辑,那么如果我决定使用iPhone端口,则必须在Objective C上重新编写它们。由于大多数应用程序逻辑都包含在这些组件中,因此,在理想情况下,它们将以与平台无关的语言/脚本/ DSL编写,然后可以将其加载到任何平台上的应用程序中。

但是,我一直被认为这不是一个理想的世界,并且移动设备上的Lua性能等仍未达到标准,开销太大,如果以后我会遇到麻烦走那条路线?

真的是这样吗?显然,这只是一个假设性的问题,我很高兴用Java编写它们,因为它简单易行,但事与愿违,但我说我真的很喜欢制作这款游戏​​(不太可能,因为我目前不喜欢处理多少游戏以及所有这些不同的移动设备),并且我想开发一款商业上可行的游戏-我会使用Lua还是只想移植移植并重新编写所有代码?

Answers:


17

就脚本语言而言,Lua速度非常快,但就像其他任何东西一样,它取决于处理器。例如,Lua在控制台平台上并不是很好,因为它倾向于非常分支,并且某些控制台平台的分支速度非常慢。为了最好地回答您的问题,我建议您运行一些基准测试。查看Lua在设备上执行各种算法的速度。我怀疑只要您不对脚本代码进行任何繁重的数学运算或迭代,就可以了。(无论如何,您都不应这样做。它们是脚本。在引擎中进行计算。)

话虽如此,脚本并不是平台独立的灵丹妙药。由于苹果公司对执行动态代码的限制,如果您移植到iPhone,则可能仍需要在Obj-C中重写。我没有即时可用的链接,但可能值得一读。Apple 几乎不允许使用托管代码(您必须获得特殊许可才能运行特殊发行版)。他们肯定会不允许Lua实现进入应用商店。

[编辑]显然我对iPhone上的Lua感到误解。看看下面的评论。


9
Lua在iPhone应用程序中被广泛使用,并且对其允许的术语进行了更改。看到这里:appleoutsider.com/2010/06/10/hello-lua
Colin Gislason,2010年

5
许多控制台应用程序实际上使用LUA。是的,它是多分支的-但是,如果您控制高级逻辑,则无关紧要。只是不要从渲染循环中调用它;)据我所知,随着开发者协议的最新变化,适用于游戏的LUA很好-许多游戏都是由LUA驱动的。但是,与在封闭平台上进行的任何开发一样,请向平台所有者(例如Apple)寻求明确的答案。另外,不需要Obj-C-iPhone允许使用C / C ++就可以了。(不过,我建议您在Obj-C中执行UIKit的任何操作。减少痛苦的因素)
Rachel Blum 2010年

7
快去魔术肥皂盒。Lua是名词而不是首字母缩写词,因此您永远不会编写JAVA。Lua表示月亮。您不会写MOON。谢谢-刘纳粹。
deft_code 2010年

2
可悲的是,我知道很多人写“ JAVA”。

1
我确实在NDS上大量使用lua(它远不如iPhone强大),并且运行速度非常快。足够快,我们可以直接在lua中完成一场游戏的一半以上的逻辑。
Klaim 2011年

7

Lua的C实现是专门为在嵌入式设备上运行而设计的。它体积小且速度快(用于脚本语言)。我本以为至少可以完成一些轻巧的工作。


4

当然。脚本逻辑极不可能成为您的瓶颈(您实际上将使用Shark或Instruments进行分析,对吗?)。我开发了iPhone版本的Marooned,该版本在游戏逻辑上使用了很多Lua。我做了很多性能调整,基本上Lua是0%。

(当我们发布Marooned时,Lua是一个灰色地带,但是自从iOS开发以来,它正式受到祝福。)



1

这确实取决于您的游戏逻辑中嵌入了多少脚本。通常,LUA用作高级胶水,但是很多繁琐的工作都是通过C(++)进行的。是的,就脚本语言而言,LUA的速度非常快-与本地语言相比,您的速度仍然要慢30到50倍左右,因此它实际上取决于LUA中发生了多少事情。


0

实际上,您可以使用Lua编写整个游戏,而完全避免使用Java / ObjectiveC / C / C ++。

对于跨平台开发,请使用Corona。免费使用,直到您计划将其运送到App Store或Android Marketplace。

如果要瞄准iPhone / Pad / Touch,请看一下

就像@Sean Edwards的旁注:我参与了针对Nintendo DS,Wii,Sony PSP和Xbox360的五个游戏的发行,它们都使用相同的引擎,并使用Lua编写脚本。它广泛用于游戏机和手机。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.