Sto sviluppando un semplice motore di gioco (in C #, se è importante), e non riesco a pensare a un modo abbastanza decente per implementare gli script in termini di architettura.
È una semplice strategia a turni con animazioni personalizzate e indipendenti dalla logica per le battaglie. Ha un livello di architettura globale per roba di sistema / basso livello e, soprattutto, due moduli principali - cose logiche e di visione di gioco - che comunicano usando un gestore di eventi.
E il fatto è che mi piacerebbe davvero che gli script influenzassero sia le cose relative alla logica del gioco (cambiando i parametri dell'unità, ecc.) Sia quelle relative alla vista del gioco, come animazioni / dialoghi speciali per battaglie che potrebbero dipendere da un certo trigger con script.
(Ad essere sincero, idealmente voglio che lo script controlli il flusso del gioco, lasciando solo la meccanica / la grafica di base alla logica / vista, ma sono nuovo in questo, quindi non sono sicuro di poterlo fare adesso)
Ho pensato a tre opzioni:
Lascia che lo scripting viva nella logica, ma informalo sul lato grafico del gioco. Ma questo renderebbe la divisione logica / vista molto vaga, no ...
Rendi lo scripting un modulo separato che scambierà gli eventi con gli altri usando lo stesso gestore eventi. Ma questo dovrebbe essere molto attento alla sincronizzazione degli eventi, immagino ... e aggiungere anche molti tipi di eventi al gestore. (Ancora, preferito personale)
Trasforma gli script in un modulo soprattutto, in modo che possa influenzare / chiamare direttamente le funzioni della logica / vista. Ciò consente una funzionalità intrinsecamente più ampia al costo di una sorta di avvitamento dell'intero schema di scambio di eventi e la paura che lo script possa rompere le cose anche quando in realtà non dovrebbe.
Quindi, non posso né decidere uno di questi né pensare a un modo migliore per inserire il modulo di scripting ... Qualche suggerimento o link utile?
Grazie!
Ps grazie per aver migrato la domanda, non sapevo che ci fosse una sezione specializzata per gamedev