脚本应该与引擎的抽象交互吗?


10

我正在使用Java和Jython,经过一些研究,我发现让脚本直接访问引擎接口可能是一个错误,因为它将两者紧密结合在一起。

看起来大多数脚本都允许mods通过某种抽象来创建和管理实体。出于这些原因存在这些抽象,还是只是为非程序员提供了一种更直观的方式来修改游戏?

Answers:


7

两者,一般而言。您的脚本应与功能的抽象层(至少是中间层)对话,而不是与引擎本身对话。

首先,这为您提供了额外的控制和安全措施。它使您可以轻松,干净地定义允许脚本与您的游戏一起使用的界面,以及由此而导致的混乱的局面,并允许您稍后在中间进行不必要的额外安全检查。实际功能层本身。

其次,它使您可以简化脚本公开的界面,使其对非程序员更友好或更易于使用。

它确实提供了一个位对两者之间的耦合绝缘的,但它往往不是那个什么大不了的事,因为脚本将始终连接到他们被允许进行交互,其本质的接口。另外两点更为有利。


3

我还认为,如果您想对引擎进行修改,它可以为您提供帮助。您可以这样做,而不必担心自引擎更改以来不必更改所有脚本。您只需更改Josh提到的抽象层。


1

我认为,在游戏核心和脚本之间创建一层用于创建修改是必要的。

通过使用此方法,您可以获得一些优点:

修改者更容易:
正如您提到的那样,这样做的一个很好的理由是更简单的制作mod的方法。编写更少的代码行意味着更高的可读性,并最大限度地减少了对新手编程的理解问题。理想情况下,此API应该是在游戏的高级别上更改某些内容的方法的集合。例如,这意味着:在不知道如何真正生成实体的情况下生成实体,或通过一次调用显示一个图像,该调用仅将图像名称作为参数。
作为程序员,您还可以从中受益,因为与Java相比,您可以用更少的时间编写更多的内容

安全性:
防止人们控制整个游戏至关重要。我不会在意,如果游戏是一个单人冠军,但在游戏中得到了我会照顾一些多人动作。即使它只是一个高分表。当某人由于作弊而获胜时,
其他人总是会感到沮丧(例如:位置更改,更具体地说:位置更改和直接标志上限)。防止玩家这样做是您的主要任务。
请记住,作弊者始终可以对该客户端进行反编译,更改代码,重新编译和使用,因此请在服务器端添加检查。通常,提供的“安全性”只是另一种并非100%安全的选择,它会使作弊者的生活更加艰难。

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.