0

我正在构建一个科学/教育应用程序,我需要提供高级用户脚本功能。我的选择是:

  • 嵌入现有语言,例如 Python 或 Lua
  • 或者用 coco/R 创建我自己的语言,例如

(最初我使用 C# 构建,但以后可能会移植到 C++ 以供 iPad 和 Android 使用。)每种方法都有其优点,但一个重要因素是我不想被应用商店拒之门外。苹果显然禁止运行解释代码的应用程序。我真的不明白这是如何定义的——肯定任何应用程序都是通过解释自己的数据结构来运行的吗?我认为这是某种“当我们看到色情内容时我们就知道它”的定义,您只是不能让您的系统看起来太强大。如果是这种情况,我在想,如果我构建自己的语言并且只传输活动语法树而不是脚本源,那么我不太可能触发他们的警钟 - 它看起来像任何旧数据结构体。有谁知道这是否正确?

4

1 回答 1

1

几年前,Apple 放宽了许可协议中的语言以允许 Lua。它被用于大量 iOS 游戏(包括愤怒的小鸟、所有 EA 游戏等)。事实上,App Store 上有许多使用 Lua 编写游戏,使用基于 Lua 的框架,如 Corona 或 MOAI(例如Crimson: Steam Pirates,Bungie Aerospace 资助的游戏,在 App Store 上连续数周排名第一) . 还有像 Codea 这样的应用程序,这是一个 Lua 脚本环境,最终用户可以使用它在设备上构建游戏/玩具。Lua在 iOS 平台上非常流行。

IMO,创建自己的语言将是荒谬的。Lua 太好了,非常适合 iOS:轻量级、快速、可破解、用户友好、易于嵌入和扩展等。但是,您可能无法将其集成到 C# 应用程序中。我真的不知道 MonoTouch 是如何工作的,但在桌面世界中,C# 是托管代码,编译为字节码,但 Lua 的 API 是本机代码。弥合这一差距是可以做到的,但工作量更大。

简而言之,你可以使用 Lua 而不必隐藏它。您不允许做的是创建一个“元平台”,用户基本上可以通过您的应用程序下载全新的应用程序(未经 Apple 审查)。

编辑:关于“我正在用 C# 构建,但以后可能会移植到 C++ 以供 iPad 和 Android 使用”,您可能需要查看 MOAI。它是一个用 C++ 编写的开源跨平台(PC、Mac、iPad、Android、Chrome)框架,用于在 Lua 中编写游戏。可能会节省您从那里开始的时间,而不是稍后移植。您可以直接在 Lua 中完成几乎所有事情,如果您遇到需要裸机性能或访问尚未通过 Lua API 公开的功能的事情,您可以用 C 或 C++ 编写它。

于 2012-04-13T16:58:00.957 回答