Prefarrò questo dicendo che non ho visto un'enorme quantità di fonti di gioco, né costruito molto nel modo di giochi.
Ma provando a impiegare pratiche di codifica "enterprise" nelle app Web, guardare il codice sorgente del gioco mi fa molto male alla testa: "Cosa sta facendo questa logica della visione con la logica aziendale? Questo ha bisogno di refactoring ... così fa questo, refactor, refactorrr "
Questo mi preoccupa mentre sto per iniziare un progetto di gioco, e non sono sicuro se provare a mvc / tdd il processo di sviluppo ci ostacolerà o ci aiuterà, poiché non vedo molti esempi di giochi che usano questo o molto spingere per migliori pratiche architettoniche nella comunità.
Quello che segue è un estratto di un grande articolo sui giochi di prototipazione , sebbene a me sembrasse esattamente l'atteggiamento che molti sviluppatori di giochi sembrano usare quando scrivono codici di giochi di produzione:
Errore n. 4: costruire un sistema, non un gioco
... se mai ti ritrovi a lavorare su qualcosa che non sta andando direttamente avanti, fermati proprio lì. Come programmatori, abbiamo la tendenza a cercare di generalizzare il nostro codice, renderlo elegante ed essere in grado di gestire ogni situazione. Troviamo che un prurito terribilmente difficile non graffi, ma dobbiamo imparare come. Mi ci sono voluti molti anni per capire che non si trattava del codice, ma del gioco che alla fine spedisci.
Non scrivere un elegante sistema di componenti di gioco, saltare l'editor completamente e cablare lo stato nel codice, evitare la follia basata sui dati, auto-analisi, XML e semplicemente codificare la cosa maledetta.
... Basta avere roba sullo schermo il più velocemente possibile.
E non usare mai l'argomento "se prendiamo del tempo extra e lo facciamo nel modo giusto, possiamo riutilizzarlo nel gioco". MAI.
è perché i giochi sono (principalmente) orientati visivamente, quindi ha senso che il codice sarà pesantemente ponderato nella vista, quindi qualsiasi beneficio derivante dallo spostamento di roba su modelli / controller, è abbastanza minimo, quindi perché preoccuparsi?
Ho sentito l'argomentazione secondo cui MVC introduce un overhead delle prestazioni, ma questa mi sembra un'ottimizzazione prematura, e che ci sarebbero problemi di prestazioni più importanti da affrontare prima che ti preoccupassi delle spese generali di MVC (ad es. Pipeline di rendering, algoritmi AI, infrastruttura di dati traversal, ecc.).
Stessa cosa per quanto riguarda TDD. Non capita spesso di vedere giochi che utilizzano casi di test, ma forse ciò è dovuto ai problemi di progettazione di cui sopra (visione mista / business) e al fatto che è difficile testare componenti visivi o componenti che si basano su risultati probablistici (ad esempio operare all'interno di simulazioni fisiche ).
Forse sto solo guardando il codice sorgente sbagliato, ma perché non vediamo più queste pratiche "enterprise" impiegate nella progettazione dei giochi? I giochi sono davvero così diversi nelle loro esigenze o è un problema di persone / cultura (ovvero gli sviluppatori di giochi provengono da un background diverso e quindi hanno abitudini di codifica diverse)?