Questions tagged «lua»

Lua是一种功能强大,快速,轻巧,可嵌入的脚本语言。Lua被游戏程序员广泛用作脚本语言,这可能是由于它的嵌入容易程度,执行速度快以及学习时间短等原因。

6
Lua如何在游戏中用作脚本语言?
我对Lua到底是什么以及用C ++编程的游戏将如何使用它感到有些困惑。我主要是问它如何编译和运行。 例如,当您使用使用Lua脚本以C ++编写的程序时:Lua中的代码是否只是调用以C ++编写的主程序中的函数,并充当未编译的类,等待被编译并添加到C ++的内存堆中程序? 还是像Linux中的bash脚本那样工作,它只执行与主程序完全独立的程序?
67 c++  scripting  lua 

5
将Lua纳入C ++游戏的利弊是什么?
我有一本C ++游戏编程书,其中有Lua部分。我已经开始阅读Lua一节,这听起来很有趣,但是我无法确定在我的C ++游戏中使用Lua的优缺点。我目前能想到的唯一好处是,您可以通过Lua进行一些编码更新,而无需重新编译。除此之外,我什么都没想到。那么将Lua添加到C ++游戏中的利弊是什么? 示例将不胜感激。
37 lua 

6
我应该在移动设备上使用Lua进行游戏逻辑吗?
如上 我在业余时间写了一个基于Android的游戏(Android是免费的,我没有做任何商业广告的抱负)。 游戏逻辑来自一个非常典型的基于组件的模型,在该模型中,实体存在并具有与之相连的组件,并且来回发送消息以使事情发生。 显然,实际执行的那一层很薄,如果我要编写此应用程序的iPhone版本,则必须在Objective C中重新编写(此基于组件的系统的)渲染器和核心驱动程序。 实体只是确定要添加的组件名称的平面文件,而组件本身是包含实体逻辑的简单,单一目的的对象。 现在,如果我用Java编写了这些组件的所有逻辑,那么如果我决定使用iPhone端口,则必须在Objective C上重新编写它们。由于大多数应用程序逻辑都包含在这些组件中,因此,在理想情况下,它们将以与平台无关的语言/脚本/ DSL编写,然后可以将其加载到任何平台上的应用程序中。 但是,我一直被认为这不是一个理想的世界,并且移动设备上的Lua性能等仍未达到标准,开销太大,如果以后我会遇到麻烦走那条路线? 真的是这样吗?显然,这只是一个假设性的问题,我很高兴用Java编写它们,因为它简单易行,但事与愿违,但我说我真的很喜欢制作这款游戏​​(不太可能,因为我目前不喜欢处理多少游戏以及所有这些不同的移动设备),并且我想开发一款商业上可行的游戏-我会使用Lua还是只想移植移植并重新编写所有代码?
33 android  lua  mobile  porting 

7
是否有任何与C#一起用于PC和XBox 360开发的Lua API?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为Game Development Stack Exchange 的主题。 去年关闭。 我正在阅读一本有关游戏开发的书,其中向您展示了如何在Lua中为您的游戏编写脚本。他们对Lua进行编程并从C ++中使用它,但是我想知道是否存在使用C#中的Lua的库或API:特别是从XNA来为PC 和 XBox 360 开发游戏?
18 c#  xna  lua  xbox360  pc 

4
程序生成特定区域的建筑物
我和一个团队正在开发一个工厂建造者游戏,该游戏在游戏开始时为玩家提供一个随机的工厂。为了确保有一种“公平”的感觉,理想情况下,随机生成的工厂的面积应在(占位符值)30的几个单位内。 编写满足这些规范的基本随机矩形生成器相对简单,但我们的目标是使工厂变得更加复杂,可能由2个,3个甚至4个相交的矩形组成,从而产生更复杂的形状(例如L, U和O形建筑物)。 我尝试生成一个随机矩形,然后使用基本代数填充第二个矩形,但是到目前为止,我并没有实现超过2个矩形的运气,即使如此,我对仅2个矩形设计的结果也不满意。 一些更相关的信息:2D自上而下一些机制是factorio样式,因此房间应该具有合理的长度和宽度,以便为机械留出空间(目前在Java和Lua中使用)(可以根据需要使用内置的库) 提前致谢! 编辑:当我说“好”或“坏”的输出时,不良的输出将是具有播放器无法使用的空间的任何输出。工厂形状限制了玩家可以放置工厂机器(例如传送带)的位置。理想情况下,工厂的区域不应只有1-2个块的宽度,形状不应该是一个或两个大的矩形,而将1-2个块的线“垂悬”到一侧。一个好的输出是所有地板空间都是“可行的”,因此所有区域至少应为3-4块宽。好的输出并不一定总是很复杂(可以使用1或2个矩形),但如果由超过1-2个矩形组成,则输出的机会就很大。

2
Lua和LÖVE的好教程[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 3年前关闭。 我想制作一个非常简单的2D游戏,并且已经阅读了很多有关LÖVE的好东西,所以我想尝试一下。但是我似乎找不到任何好的教程。LÖVE页面上的页面结构比较杂乱,我在Mathew Casperson的帮助下发现的其他页面并不是很有用。有人知道更好的教程吗?
13 lua  love2d 

5
在C ++中使用Lua的推荐库是什么?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 5年前关闭。 我目前正在计划如何将Lua脚本集成到我的2D游戏引擎中,并且我想直接使用最合适的解决方案来公开C ++类和对象。 我已经读过(如果有帮助的话):http : //lua-users.org/wiki/BindingCodeToLua 如果您有更好的脚本语言值得推荐,那就去吧; D 欢迎所有帮助,我需要最好的解决方案才能开始实施谢谢
13 c++  lua 

8
Lua的Love2D引擎;那3D呢?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Game Development Stack Exchange 的主题。 6年前关闭。 Lua真的很棒,学习是如此简单。我非常喜欢脚本语言,并且在学习Python方面也度过了同样愉快的时光。 Love引擎http://love2d.org/确实很棒,但是我正在寻找能够处理3D的东西。在Lua中是否可以容纳3D?无论如何,我仍然对LOVE的粒子系统感兴趣,并且可能只是将我的想法转换为带有粒子照明的2D项目:) 编辑:我删除了有关Python的注释-我希望这是一个Lua主题。谢谢
13 3d  lua  love2d 

6
游戏状态管理(游戏,菜单,标题屏幕等)
基本上,到目前为止,在我制作的每个游戏中,我总是有一个变量,例如“ current_state”,可以是“ game”,“ titlescreen”,“ gameoverscreen”等。 然后在我的Update函数上,我有一个庞大的功能: if current_state == "game" game stuf ... else if current_state == "titlescreen" ... 但是,我觉得这不是处理状态的专业/干净方法。关于如何更好地执行此操作的任何想法?还是这是标准方式?

2
在基于组件的实体系统中处理脚本化和“本机”组件
我目前正在尝试实现一个基于组件的实体系统,该实体基本上只是一个ID和一些将一组组件捆绑在一起以形成游戏对象的辅助方法。其中的一些目标包括: 组件仅包含状态(例如位置,健康状况,弹药计数)=>逻辑进入“系统”,该系统处理这些组件及其状态(例如PhysicsSystem,RenderSystem等) 我想用纯C#和脚本(Lua)实现组件和系统。基本上,我希望能够直接在Lua中定义全新的组件和系统,而不必重新编译C#源代码。 现在,我正在寻找有关如何高效且一致地处理此问题的想法,因此,例如,无需使用其他语法来访问C#组件或Lua组件。 我当前的方法是使用常规的公共属性实现C#组件,这些属性可能装饰有一些属性,这些属性可以告诉编辑器默认值和内容。然后,我将得到一个C#类“ ScriptComponent”,该类仅在内部包装Lua表,该表由脚本创建并保存该特定组件类型的所有状态。我真的不希望从C#端访问该状态,因为我在编译时不知道可以使用哪些ScriptComponents和哪些属性。尽管如此,编辑器仍需要访问它,但是像下面这样的简单界面就足够了: public ScriptComponent : IComponent { public T GetProperty<T>(string propertyName) {..} public void SetProperty<T>(string propertyName, T value) {..} } 这将简单地访问Lua表并从Lua设置和检索那些属性,并且也可以轻松地将其包含在纯C#组件中(但随后可以通过反射或其他方式使用常规C#属性)。这只能在编辑器中使用,不能用常规的游戏代码使用,因此性能在这里并不重要。这将有必要生成或手写一些组件描述,以记录某些组件类型实际提供的属性,但这不是一个大问题,并且可以实现足够的自动化。 但是,如何从Lua端访问组件?如果我调用类似的东西,getComponentsFromEntity(ENTITY_ID)我可能只会获得一堆本地C#组件(包括“ ScriptComponent”)作为用户数据。从包装的Lua表访问值将导致我调用该GetProperty<T>(..)方法,而不是像其他C#组件那样直接访问属性。 也许编写一个getComponentsFromEntity()只能从Lua调用的特殊方法,该方法会将所有本机C#组件作为用户数据返回,但“ ScriptComponent”除外,它将返回包装后的表。但是会有其他与组件相关的方法,我真的不想复制所有这些方法,无论是从C#代码还是从Lua脚本调用。 最终目标将是处理所有类型的组件相同,而在本机组件和Lua组件之间(尤其是从Lua方面)不区分特殊情况的语法。例如,我希望能够编写如下的Lua脚本: entity = getEntity(1); nativeComponent = getComponent(entity, "SomeNativeComponent") scriptComponent = getComponent(entity, "SomeScriptComponent") nativeComponent.NativeProperty = 5 scriptComponent.ScriptedProperty = 3 该脚本不必关心它实际上获得了哪种组件,我想使用与C#端相同的方法来检索,添加或删除组件。 也许有一些将脚本与实体系统集成在一起的示例实现?


4
Lua实体创建/管理良好的游戏引擎
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我正在寻找一种使用Lua或其他脚本语言构造其实体的引擎。这是为了寻找灵感,并在我自己的引擎中也这样做。 我知道CryEngine确实使用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.