Answers:
两者,一般而言。您的脚本应与功能的抽象层(至少是中间层)对话,而不是与引擎本身对话。
首先,这为您提供了额外的控制和安全措施。它使您可以轻松,干净地定义允许脚本与您的游戏一起使用的界面,以及由此而导致的混乱的局面,并允许您稍后在中间进行不必要的额外安全检查。实际功能层本身。
其次,它使您可以简化脚本公开的界面,使其对非程序员更友好或更易于使用。
它确实提供了一个位对两者之间的耦合绝缘的,但它往往不是那个什么大不了的事,因为脚本将始终连接到他们被允许进行交互,其本质的接口。另外两点更为有利。
我还认为,如果您想对引擎进行修改,它可以为您提供帮助。您可以这样做,而不必担心自引擎更改以来不必更改所有脚本。您只需更改Josh提到的抽象层。
我认为,在游戏核心和脚本之间创建一层用于创建修改是必要的。
通过使用此方法,您可以获得一些优点:
修改者更容易:
正如您提到的那样,这样做的一个很好的理由是更简单的制作mod的方法。编写更少的代码行意味着更高的可读性,并最大限度地减少了对新手编程的理解问题。理想情况下,此API应该是在游戏的高级别上更改某些内容的方法的集合。例如,这意味着:在不知道如何真正生成实体的情况下生成实体,或通过一次调用显示一个图像,该调用仅将图像名称作为参数。
作为程序员,您还可以从中受益,因为与Java相比,您可以用更少的时间编写更多的内容。
安全性:
防止人们控制整个游戏至关重要。我不会在意,如果游戏是一个单人冠军,但在游戏中得到了我会照顾一些多人动作。即使它只是一个高分表。当某人由于作弊而获胜时,
其他人总是会感到沮丧(例如:位置更改,更具体地说:位置更改和直接标志上限)。防止玩家这样做是您的主要任务。
请记住,作弊者始终可以对该客户端进行反编译,更改代码,重新编译和使用,因此请在服务器端添加检查。通常,提供的“安全性”只是另一种并非100%安全的选择,它会使作弊者的生活更加艰难。