Questions tagged «scripting»

一种编程类型,通常意味着比更多的“传统”编程更容易学习。当性能不如易用性那么重要时,通常会使用脚本。脚本语言的示例包括:Javascript,Lua,Perl,Python和PHP。脚本语言通常被解释而不是编译,因此可以直接执行而无需生成机器代码。

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#端相同的方法来检索,添加或删除组件。 也许有一些将脚本与实体系统集成在一起的示例实现?

3
导出搅拌器骨骼
我为混合器模型编写了一个导出器,该模型非常适合网格物体。我正在尝试将其扩展到搅拌器中定义的骨骼。但是,我还没有找到导出骨骼数据的有用信息。如何访问骨骼数据?我想访问骨骼影响的所有顶点,每个顶点的权重和矩阵。我是否需要导出其他内容以进行骨骼动画和动态肢解?

5
为什么将实体配置放在脚本之外?
我见过很多在脚本文件中定义实体组件的游戏,但是当它们配置每个实体并指定其具有的组件时,它们会使用其他文件格式(例如XML)。他们为什么这样做? 我主要是想看看其他人对此的依据是什么。我还在脚本之外配置了我的实体(尽管我选择了JSON而不是XML)。我这样做的原因是使我更容易实现保存游戏,还因为我认为这种配置可以更好地组织为XML或JSON之类的东西。 // @ 克里斯托弗·拉森的答案: 太长了,无法发表评论 我担心您可能偏离了问题的主题。您所描述的问题与基于层次的实体更相关;在我提到的问题中,我提到我在谈论基于组件的实体。 这是我想问的一个例子。以下是配置实体的两种替代方法:通过脚本和通过外部JSON文件。我的问题是,为什么有那么多人喜欢在脚本之外配置实体? 基础实体类: class Entity: def __init__(self, name): pass def addComponent(self, comp): pass 脚本方法: orc = Entity('Orc') orc.addComponent(PositionComponent(3.4, 7.9)) JSON方法: { "name" : "Orc", "components": { "PositionComponent": { "x" : 3.4, "y" : 7.9 } } } 我已经说明了使用这种方法的原因,包括技术上和组织上的原因。我想知道为什么这么多其他人(根据我所看到的)使用它。

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

3
脚本应该与引擎的抽象交互吗?
我正在使用Java和Jython,经过一些研究,我发现让脚本直接访问引擎接口可能是一个错误,因为它将两者紧密结合在一起。 看起来大多数脚本都允许mods通过某种抽象来创建和管理实体。出于这些原因存在这些抽象,还是只是为非程序员提供了一种更直观的方式来修改游戏?
10 java  python  scripting 

3
您在脚本语言中寻找什么?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我正在为另一个项目编写一些嵌入式语言。尽管游戏开发不是其初衷,但它看起来似乎很合适,我认为我会在某个时候进行开发。 在不透露任何细节(以避免偏差)的情况下,我很想知道: 您喜欢用脚本语言进行游戏开发的哪些功能? 如果您在游戏项目中使用Lua,Python或其他嵌入式语言(例如Tcl或Guile)作为主要脚本语言,那么您发现哪些方面最有用? 语言功能(lambda,类,并行性) 实现功能(性能优化,JIT,硬件加速) 集成功能(C,C ++或.NET绑定) 还是完全不同的东西?
10 scripting  tools 

5
为什么在Vector3s中不能使用运算符'> ='?
我正在尝试获得一个矩形,以便在我称为_positionA和的两个位置之间移动_positionB。两者都是类型Vector3。矩形移动得很好。但是,到达时_positionB它不会像应该的那样朝相反的方向移动。 我回到代码中看一看。我得出的结论是,随着对象的移动,if代码中的语句错过了rects位置等于的框架_positionB。如果rects的位置大于或等于, 我决定将代码修改为反向_positionB。我的代码不太长,因此我将在下面显示它: using UnityEngine; using System.Collections; public class Rectangle : MonoBehaviour { private Vector3 _positionA = new Vector3(-0.97f, -4.28f); //Start position private Vector3 _positionB = new Vector3(11.87f, -4.28f); //End position private Transform _rect_tfm; private bool _atPosA = false, _atPosB = false; public Vector2 speed = new Vector2(1f, 0f); private …
9 unity  c#  vector  mathematics  vector  matrix  unity  c#  transformation  java  3d  terrain-rendering  shading  ios  opengl-es  opengl  rendering  optimization  python  scripting  minecraft-modding  modding  pc  3d-meshes  mesh  culling  point-cloud  networking  interpolation  mathematics  game-design  ai  game-mechanics  animation  unreal-4  skeletal-animation  3dsmax  unity  c#  3d  opengl  c++  textures  unity  ide  cocos2d  cocos2d-x-js  unity  c#  mono  il2cpp  c++  game-loop  timer  linux  flash  actionscript-3  java  glsl  c++  vector  entity-component  c++  directx11  windows  visual-studio  libgdx  mouse  unity  c#  architecture  storage  unity  c#  rotation  coordinates  quaternion  vrpn  movement  vector  unreal-4  unity  shaders  unity  gui  text  bug  shooter  3d  animation  rendering  voxels  c++  mmo  multithreading  linux  textures  procedural-generation  terrain-rendering  multiplayer  mmo  game-state  java  android  libgdx  opengl  procedural-generation  unity  gui  3d  animation  tools  geometry-shader  mobile  advertisements  unity  c#  animation  scripting  unity  animation  unityscript  coroutines  unity  shaders  lighting  camera 

2
Lua与Python作为XNA / C#平台的脚本语言的优缺点是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我正在考虑将一种古老的想法付诸实践。该游戏的核心点是游戏环境和对象的功能自定义的可能级别(例如修改太空船武器的行为)。为此,游戏需要编写脚本。我也不打算将其商业化,这对我来说只是一个有趣的编程挑战。 由于我主要是.NET专家,因此我将在游戏本身中使用XNA / C#。对于脚本,我考虑使用Python或Lua。我以前有使用Python的经验,没有反对它的语言。另一方面,Lua对我来说几乎是全新的,除了我在这里和那里所做的一些魔兽世界插件的小改动之外,它看起来很有希望。所以这是我的问题: Lua与Python作为XNA / C#平台的脚本语言的优缺点是什么? XNA / C#中的其中之一是否更容易使用?与XNA / C#一起使用时,其中之一具有某些特定的优点或缺点吗?为什么要为XNA / C#推荐一个?
9 xna  c#  scripting 

2
XNA的脚本引擎
假设我正在使用XNA在C#中制作这款大型游戏。 在我的代码库中必须包含脚本功能的哪些选项?
9 xna  c#  scripting 
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.