Les scripts doivent-ils interagir avec une abstraction du moteur?

10

J'utilise Java et Jython, et après quelques recherches, j'ai découvert que donner aux scripts un accès direct à l'interface du moteur pouvait être une erreur, car cela couplerait étroitement les deux.

Il semble que la plupart des scripts qui permettent aux mods de créer et de gérer des entités le font par le biais d'une sorte d'abstraction. Ces abstractions sont-elles là pour cette raison, ou est-ce simplement pour fournir un moyen plus intuitif aux non-programmeurs de modifier le jeu?

Vaillancourt
la source

Réponses:

7

Les deux, en général. Vos scripts doivent parler à une couche de fonctionnalités abstraite - ou au moins intermédiaire - et non au moteur lui-même.

Tout d'abord, cela vous offre une mesure supplémentaire de contrôle et de sécurité. Il vous permet de définir facilement et proprement l'interface qu'un script est autorisé à avoir avec votre jeu et donc ce avec quoi il peut se moquer, ainsi que de placer des contrôles de sécurité supplémentaires dans l'intermédiaire plus tard qui ne seraient pas nécessairement appropriés dans le la couche de fonctionnalité réelle elle-même.

Deuxièmement, il vous permet de simplifier l'interface exposée aux scripts pour être plus conviviale pour les programmeurs ou plus facile à utiliser en général.

Cela fournit un peu d'isolation contre le couplage entre les deux, mais ce n'est souvent pas si grave car les scripts seront toujours couplés aux interfaces avec lesquelles ils sont autorisés à interagir, par leur nature même. Les deux autres points sont beaucoup plus bénéfiques.


la source
3

Je pense également que cela vous aide au cas où vous souhaiteriez apporter des modifications au moteur. Vous pouvez les faire sans vous soucier de devoir modifier tous vos scripts depuis que le moteur a changé. Il suffit de changer la couche d'abstraction mentionnée par Josh.

Elie Haddad
la source
1

La création d'une couche entre le cœur du jeu et les scripts, utilisée pour créer des modifications est, à mon avis, nécessaire.

Vous gagnez plusieurs avantages en utilisant cette méthode:

Plus facile pour les moddeurs:
Une bonne raison de le faire est, comme vous l'avez mentionné, un moyen plus facile de créer des mods. Écrire moins de lignes de code signifie plus de lisibilité et minimise les problèmes de compréhension pour les débutants en programmation. Idéalement, cette API devrait être une collection de méthodes pour changer quelque chose au niveau élevé du jeu . Cela signifie par exemple: générer une entité sans savoir comment elle est réellement générée , ou afficher une image avec un seul appel, qui ne prend que le nom de l'image comme paramètre.
En tant que programmeur, vous en bénéficiez également, car vous pouvez écrire plus en moins de temps que vous n'en auriez besoin avec Java.

Sécurité: il
est essentiel d'empêcher les gens de contrôler l'ensemble du jeu. Je m'en fous, si le jeu est un titre solo, mais je m'en fous quand le jeu a une action multijoueur. Même s'il ne s'agit que d'un tableau des meilleurs scores.
D'autres personnes sont toujours frustrées lorsque quelqu'un gagne à cause de la triche (par exemple: changements de position, plus spécifique: changement de position et plafonnement direct des drapeaux). Empêcher les joueurs de le faire est votre tâche principale ici.
Gardez à l'esprit que le tricheur peut toujours décompiler, changer le code, recompiler et jouer avec ce client, alors ajoutez des vérifications côté serveur. Généralement, la «sécurité» fournie n'est qu'une autre option, et non 100% sûre, pour rendre la vie des tricheurs plus difficile.

Marco
la source