スクリプトはエンジンの抽象化と相互作用する必要がありますか?


10

私はJavaとJythonを使用していますが、いくつかの調査の結果、スクリプトがエンジンインターフェイスに直接アクセスできるようにすると、2つが密接に結びつくため、間違いになる可能性があることがわかりました。

MODがエンティティを作成および管理できるようにするほとんどのスクリプトは、なんらかの抽象化を介して行われているようです。これらの抽象化はこの理由のためにそこにありますか、それとも非プログラマーがゲームを変更するためのより直感的な方法を提供するだけですか?

回答:


7

両方、一般的に。スクリプトは、エンジン自体ではなく、抽象化された、または少なくとも中間の機能層と通信する必要があります。

まず、これは制御とセキュリティの追加の測定を提供します。これにより、スクリプトがゲームで使用できるインターフェイスを簡単かつ明確に定義できるため、スクリプトが不正に機能する可能性があります。また、中間で適切でないセキュリティチェックを後で実行できるようにすることもできます。実際の機能層自体。

2つ目は、スクリプトに公開されているインターフェイスを簡素化して、プログラマーにとってより使いやすくするか、一般的に使いやすくすることです。

これは、2つの間の結合に対する断熱材のビットを提供していますが、それは多くの場合ではないことを大きなAの契約スクリプトは、常に彼らはその性質上、との対話が許可されているインタフェースに結合されますので。他の2つのポイントははるかに有益です。


3

また、エンジンを変更したい場合に役立つと思います。エンジンが変更されたため、すべてのスクリプトを変更する必要を心配することなく、それらを実行できます。Joshが述べた抽象化レイヤーを変更するだけです。


1

私の意見では、修正の作成に使用されるゲームのコアとスクリプトの間にレイヤーを作成する必要があります。

この方法を使用すると、いくつかの利点があります。

modderの方が簡単:
これを行うのに十分な理由は、あなたが言ったように、modを作成する簡単な方法です。コードの行数を減らすと、読みやすさが増し、初心者のプログラミングに関する問題の理解が最小限になります。理想的には、このAPIは、ゲームの高レベルで何かを変更するためのメソッドのコレクションである必要があります。これはたとえば、エンティティが実際にどのように生成されるのかを知らずにエンティティを生成する、またはパラメータとして画像名のみを使用する1回の呼び出しで画像を表示することを意味します。
プログラマーとしても、Javaで必要とするよりも短い時間多くのことを書くことができるので、プログラマーとしてのメリットもあります。

セキュリティ:
人々がゲーム全体を制御できないようにすることは不可欠です。ゲームがシングルプレーヤーのタイトルになるかどうかは気にしませんが、ゲームにマルチプレーヤーアクションがある場合は気にします。ハイスコ​​ア表だけでも。
他の人々は、不正行為のために誰かが勝つと、常にイライラします(例:位置の変更、より具体的には、位置の変更と直接のフラグキャッピング)。プレイヤーがそうしないようにすることは、ここでの主なタスクです。
詐欺師はいつでもこのクライアントで逆コンパイル、コードの変更、再コンパイル、再生できるため、サーバー側でチェックを追加することに注意してください。一般に、提供される「セキュリティ」は、詐欺師の生活を困難にする100%安全なオプションではなく、もう1つのオプションにすぎません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.