Paradigma
Dal momento in cui questa risposta è stata scritta, le altre risposte postate qui sono tutte sbagliate.
Invece di chiedere se il Domain-Driven Design è adatto ai giochi. Dovresti chiederti se "Domain Modelling" è adatto o meno ai giochi.
La modellazione di domini è buona per i giochi?
La risposta è: a volte è assolutamente favoloso. Tuttavia, se stai creando un gioco in tempo reale come un platform o un FPS o altro (MOLTI MOLTI tipi di giochi), allora no. Non è necessariamente adatto per quei sistemi. Tuttavia, potrebbero esserci sistemi all'interno di quei giochi in cui è efficace l'implementazione del modello del modello di dominio.
Come altri hanno già menzionato qui, i framework delle entità componenti tendono ad essere molto popolari e per buoni motivi. Tuttavia, nella cultura di sviluppo del gioco sembra esserci una netta mancanza di architetture a strati. Ancora una volta, questo è per una buona ragione poiché la maggior parte dei giochi che le persone svilupperanno cambieranno lo stato delle entità e lasceranno che le conseguenze emergenti siano il gioco.
TUTTO IL SOFTWARE NON È IL SOFTWARE CHE STAI SCRIVENDO. Alcuni sono abbastanza diversi dagli altri.
Alcuni esempi di domini in cui la modellazione di domini funziona bene sono i giochi di carte, i giochi da tavolo e altri tipi di sistemi guidati dagli eventi.
I giochi che girano alla frequenza dei fotogrammi X con movimento, ecc. Determinati da delta temporali come concetti di dominio di base probabilmente non sono adatti. In questo caso, il nostro "dominio" è spesso così semplice che non è necessario modellare il dominio. Il rilevamento delle collisioni, la generazione di nuove entità, l'influenza delle forze sulle entità esistenti ecc. Tendono a coprire la maggior parte del gameplay.
Tuttavia, man mano che le cose diventano complesse, inizi a vedere gli sviluppatori implementare modelli di dominio all'interno delle loro entità per gestire determinati tipi di comportamento e calcolo.
Modello del modello di dominio nelle architetture di gioco
Il tuo motore di gioco (ad esempio Unity3D) è spesso orientato all'entità componente. In un platform, potresti avere un'entità per il tuo personaggio e il suo stato è costantemente mutato per aggiornare la posizione ecc.
Tuttavia, in un gioco più orientato agli eventi, è più probabile che il ruolo del framework componente-entità esista più semplicemente come interfaccia utente. Si finisce con un'architettura a strati.
L'interfaccia utente visualizza lo stato del gioco per l'utente. L'utente interagisce con l'interfaccia utente, attivando i comandi nel livello di servizio. Il livello di servizio interagisce con gli oggetti di dominio. Gli oggetti di dominio hanno generato eventi di dominio. I listener di eventi ascoltano gli eventi e attivano le modifiche nell'interfaccia utente.
UI> Livello di servizio> Modello di dominio
In breve, si finisce con il modello-view-controller con un'implementazione del livello di servizio.
Usando questa architettura, hai un core di gioco completamente testabile dall'unità (Una rarità nella cultura dello sviluppo del gioco, e lo dimostra) con un'interfaccia basata sugli eventi.
Ok ora, cos'è DDD?
Il Domain-Driven Design in particolare è una cultura / movimento di enfasi sui modelli analitici che vengono utilizzati per conoscere il dominio, in modo che tu stia effettivamente costruendo la cosa giusta e quindi i modelli di implementazione che ti consentono di implementare un livello di modello che rappresenta il concetti nel modello di dominio usando il linguaggio della tua lingua. DDD nasce da una comunità che lavora con domini complicati e è sempre alla ricerca di modi per gestire un'elevata complessità nelle loro applicazioni concentrandosi sulla modellazione di domini.
DDD non funziona così bene se il tuo obiettivo è solo iniziare a scrivere codice, giocare con il sistema e poi capire cosa vuoi costruire in seguito, ecc. Presuppone che esista più o meno un dominio. Quindi, se non hai idea di quale sarà il tuo gioco .. Quindi, non funzionerà.