Quali caratteristiche appartengono al motore e quali a un gioco?


19

In questo momento, mi trovo a implementare e testare nuove funzionalità per il mio motore di gioco 2D, codificandole direttamente nel motore. Allo stesso tempo, ho un gioco vetrina con supporto di scripting, che dovrebbe chiamare le funzioni dei motori. Allego, ad esempio, un movimento a tessere fisse alla classe Entity nel motore, anziché copiarlo in modo specifico per il gioco. Questo sta decisamente spezzando l'idea di un motore generale utilizzato per più di un gioco.

Esistono delle migliori pratiche per continuare a concentrarsi sulla corretta implementazione nelle parti giuste (ovvero motore vs. gioco)?

Risposte:


25

Bene, ci sono un paio di modi di pensare a questo. Uno è elencare le funzionalità specifiche che il motore dovrebbe avere (cosa hai chiesto qui.) Tuttavia l'altro modo è semplicemente iniziare a creare giochi senza preoccuparsi troppo del "motore", e quindi le funzionalità che trovi vengono riutilizzate tra più giochi (in particolare, funzionalità utilizzate in ogni gioco) è necessario migrare dalla fonte per un gioco specifico in una base di codice condivisa chiamata "motore".

Perché alla fine, il motivo per cui si desidera una determinata funzionalità nel motore anziché nel gioco è che è condiviso tra più giochi. In genere saranno cose come disegnare comandi, controller di input e codice di rete. Un motore di gioco 2D avrà molte funzionalità grafiche 2D, come il caricamento di immagini, una gerarchia di visualizzazione con ordine z, gestione di fogli di calcolo, interpolazione, ecc. Molti giochi richiedono una simulazione fisica, anche se molti invece non lo fanno. Nel frattempo più roba "nascosta" utilizzata in quasi tutti i giochi include timer, messaggistica eventi e persino funzioni matematiche specifiche per lo sviluppo del gioco (ad es. DistanceToTarget ()


Per farla breve:

A) Il motore dovrebbe avere funzionalità condivise dalla maggior parte dei giochi.

B) Impara quali funzioni sono condivise creando un sacco di giochi.


7
+1 -just start making games without worrying too much about the "engine"
JCM

1
Bene just start making games without worrying too much about the "engine"è sicuramente un bel suggerimento.
Christian Ivicevic,

3
Sono d'accordo con i due commenti sopra di me, ma l'osservazione "basta fare giochi senza preoccuparsi del motore" è stata tolta dal contesto ed è inutile senza il resto: "e quindi le funzionalità che trovi vengono riutilizzate tra più giochi (in particolare , funzioni utilizzate in ogni gioco) dovresti migrare dalla fonte per un gioco specifico in una base di codice condivisa chiamata "motore". In breve, crea il maggior numero di giochi possibile in modo da sapere cosa dovrebbe andare sotto un motore e cosa non dovrebbe ' t.

2
Questa è un'ottima idea perché ti impedisce anche di implementare le funzionalità del motore che in realtà non ti servono nei tuoi giochi.
Zachary Yates

2
+1 per mantenere lo spirito della Regola del tre .
Joshua Drake,
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.