Gli script dovrebbero interagire con un'astrazione del motore?


10

Sto usando Java e Jython, e dopo alcune ricerche ho scoperto che dare agli script l'accesso diretto all'interfaccia del motore potrebbe essere un errore, in quanto accoppierebbe strettamente i due.

Sembra che la maggior parte degli script che consente alle mod di creare e gestire entità lo fa attraverso una sorta di astrazione. Ci sono queste astrazioni lì per questo motivo, o è solo per fornire un modo più intuitivo per i non programmatori di modificare il gioco?

Risposte:


7

Entrambi, in generale. I tuoi script dovrebbero parlare con un livello astratto - o almeno intermedio - di funzionalità e non con il motore stesso.

Innanzitutto, questo ti fornisce una misura aggiuntiva di controllo e sicurezza. Ti consente di definire facilmente, in modo pulito l'interfaccia che uno script può avere con il tuo gioco e quindi ciò di cui può occuparsi, oltre a permetterti di effettuare ulteriori controlli di sicurezza nell'intermedio in seguito che non sarebbero necessariamente appropriati nella livello di funzionalità reale stesso.

In secondo luogo, consente di semplificare l'interfaccia esposta agli script in modo che sia più non programmatore o più facile da usare in generale.

Esso fornisce un po 'di isolamento contro accoppiamento tra le due, ma non è spesso che un affare grande perché gli script saranno sempre accoppiati alle interfacce che sono autorizzati per interagire con, per loro stessa natura. Gli altri due punti sono molto più vantaggiosi.


3

Penso anche che ti aiuti nel caso in cui desideri apportare modifiche al motore. Puoi farlo senza preoccuparti di dover cambiare tutti i tuoi script dal momento che il motore è cambiato. Devi solo cambiare il livello di astrazione menzionato da Josh.


1

Creare un livello tra il nucleo del gioco e gli script, utilizzato per creare modifiche è, a mio avviso, necessario.

Ottieni numerosi vantaggi utilizzando questo metodo:

Più facile per i modder:
un buon motivo per farlo è, come hai detto, un modo più semplice per creare mod. Scrivere meno righe di codice significa più leggibilità e minimizza la comprensione dei problemi per la programmazione dei neofiti. Idealmente, questa API dovrebbe essere una raccolta di metodi per cambiare qualcosa di alto livello nel gioco . Ciò significa ad esempio: spawnare un'entità senza sapere come viene generata , o visualizzare un'immagine con una sola chiamata, che accetta solo il nome dell'immagine come parametro.
Anche tu come programmatore ne trarrai beneficio, poiché puoi scrivere di più in meno tempo di quanto avresti bisogno con Java.

Sicurezza:
è essenziale impedire alle persone di controllare l'intero gioco. Non mi importa, se il gioco sarebbe stato un singolo titolo, ma io mi importerebbe quando il gioco ha avuto un po 'di azione multiplayer. Anche se è solo una tabella dei punteggi migliori.
Altre persone sono sempre frustrate quando qualcuno vince a causa di imbrogli (ad esempio: cambi di posizione, più specifici: cambio di posizione e limitazione diretta della bandiera). Impedire ai giocatori di farlo è il tuo compito principale qui.
Tieni presente che il cheater può sempre decompilare, modificare il codice, ricompilare e giocare con questo client, quindi aggiungi i controlli sul lato server. In generale, la "Sicurezza" fornita è solo un'altra, non un'opzione sicura al 100% per rendere più difficile la vita degli imbroglioni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.