实现特定于游戏引擎的编程语言

时间:2015-07-27 11:22:48

标签: compiler-construction cross-platform game-engine

对于任何拼写错误或基本的语法错误,我很抱歉,我在学校从不擅长英语......当然还要提前感谢。

我的目标是制作一个易于用户使用的游戏引擎和编辑器,但仍可用于开发高质量的3D游戏。

为方便用户,我想实现一种自定义编程语言来设计游戏逻辑,AI行为,武器系统等。 但是将它们限制在引擎的低级别方面。

最终我想让游戏引擎能够支持多个平台,但由于我没有钱购买我想要包含的平台,所以现在无法实现。 。

我的第一个想法是构建脚本语言,但我非常担心不运行用户代码本机的系统开销。因为我还希望用户能够编辑网格顶点,创建自定义路径查找系统或其他更多计算密集型任务。

所以我假设将用户代码编译为二进制文件是最好的选择。这就是许多问题开始出现的地方。

我更愿意了解生成的可执行文件中发生了什么,并完全控制结果。所以我不太喜欢使用像llvm这样的现有工具来生成可执行文件而害怕失去控制权。 我想了解更多关于如何在较低级别的CPU上运行代码和内存管理等等... 但主要是因为我喜欢尽我所能去做。

我遇到的问题是: - 考虑到上面生成二进制代码真的是最好的选择吗? (或者我应该坚持使用脚本语言)

  • 目前我正在编写一个用于生成Windows exe文件和插入操作码的程序。这没关系,还是应该使用现有工具作为llvm?

  • 在生成自定义Windows exe文件之前,是否需要注意任何法律操作,许可证等?

  • 我的目标之一是稍后将引擎部署到多个平台,手动编写自定义程序,将用户代码转换为特定平台指令集,类似于x86指令集。还是会更难?

我希望我能够详细解释这个问题。如果有人有任何问题可以随意发布,我会解释自己。

感谢。

克里斯

1 个答案:

答案 0 :(得分:-2)

首先,你应该重新考虑它的想法。如果你真的希望你的游戏引擎能够被人们用于生成游戏并在之后修改现有游戏,那么你必须坚持已经建立的标准。原因很简单 - modders主要是编程的初学者,很难学习Lua,Boo,......他们真的没时间并且有能力改用你的自定义语言。所以对于脚本来说,你真的应该坚持行业标准。

另一方面,你真的必须在你的设计中分离mod和内容扩展,它不需要低级别访问或具有高CPU使用率。

考虑到所有这些事实,我强烈推荐以下内容:

  • 为引擎建立一个mod系统(基于一种众所周知的语言,如c#或java脚本)
  • 建立脚本接口以控制其实体/组件的行为。

这是常见的方式。如果你放弃这样一个既定的标准,你可能会有一些严重的麻烦。