gpt4 book ai didi

windows - 为 XNA 游戏实现基于 XML 的简单脚本语言

转载 作者:可可西里 更新时间:2023-11-01 10:55:21 26 4
gpt4 key购买 nike

我正在与一个团队合作使用 C# 和 XNA 开发 RPG 引擎。我们计划以 Windows 和 Windows Phone 7 为目标,但在过场动画期间遇到了 AI 交互和控制玩家 Action 的问题。大多数情况下,一切都是使用 MVC 设计模式提取的,但是将所有逻辑和移动抽象到 Controller 中可能会导致问题。因此,我们的想法是拥有一个接口(interface) (IScriptEngine),该接口(interface)采用 IScriptObject 并相应地更新 map 模型中的数据。我正在考虑将脚本放入 XML 类型的语法中:

<Script Name="MoveNPC_1"> 
<Action Command="MoveToTile" Target="NPC_1" Value="10,2"/>
</Script>

并让 IScriptEngine 相应地解析它。我非常怀疑在一个巨大的 switch 语句中进行解析是不是一个好主意,但这正是我一直在使用的方法。

switch(Action.Command)
{
case "MoveToTile":
{
doMovement(Action.Value, Action.Target);
break;
}
}

即使是我的高中编程经验也告诉我这是个坏主意,但我想不出任何其他解决方法。

编辑:我想以某种方式将这一切嵌入到 map 文件中。在 map XML 文件中,我们为 指定了区域,其中包含多个标签。然后会有一个部分,指定 NPC 在 map 上的位置,以及它将使用什么资源和脚本。然后会有一个部分,其中将定义所有战斗(同样,定义资源等等),然后可能是一个部分,其中将定义这些脚本。我只希望有一种方法可以使用 WP7 即时编译 C#。如果我能得到双方的支持,这就不是问题了。我想知道是否有任何可以移植到 WP7 的 Mono 库可以共享 CodeDom 和所有编译器类的功能?

最佳答案

XML 脚本!? 喘息!现在是“可能会导致问题”的东西!

为什么不直接使用 C#?我听说这非常棒。我已经给了我的 opinion on this matter

您需要问问自己:您的脚本真的需要数据驱动吗?有什么理由不能用C#表达数据吗?

它们真的需要在运行时解释吗?因为,如果他们真的这样做了,那就是 can be done with C#

这是 gamedev.stackexchange.com 上的另一个 answer of mine to an almost identical question。我什至在其中放了一个可能的实现示例。

如果你想要执行的 Action 超过一帧(基本上是协同例程),例如:“走到这里,说话,等待,走到那边”,你也可以相当好地 implement this with yeild in C#


编辑:如果您想混合使用 XML 级别和 C# 脚本,这里是我的意思的示例:

<Level>
<Door position="4,4" name="spookyDoor" />
<Region position="4,2" name="spookyOpener" />
</Level>

在 C# 中:

public void LevelStart()
{
this.Regions["spookyOpener"].OnPlayerEnter += () =>
{
(this.Items["spookyDoor"] as Door).Open();
};
}

关于windows - 为 XNA 游戏实现基于 XML 的简单脚本语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540231/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com