Usi davvero i diagrammi per modellare i giochi? [chiuso]


17

Intendo principalmente UML, ma qualsiasi metodo che funziona è praticabile. Quindi - modelli davvero i tuoi giochi con UML / altri diagrammi o metodi diversi? Avevo una materia alla mia università sulla modellazione con UML e mi sembrava più uno sforzo che un vantaggio reale, ma mi rendo conto che potrebbe essere solo perché non ho mai creato un enorme sistema IT complesso. Quindi vale la pena e quali tipi di diagrammi / metodi sono di solito * i migliori?

* Naturalmente, molte volte è necessario scegliere strumenti concreti per problemi concreti, ma forse ci sono alcuni schemi.

Modifica: ho dimenticato una cosa importante: crei diagrammi prima o dopo implementato le cose? Ciò che intendo è che quando si progetta e implementa qualcosa di solito si cambia idea o si presenta qualcosa di inaspettato e si devono apportare cambiamenti, a volte importanti, e farli in diagrammi già complessi sembra ugualmente senza speranza come nel codice stesso.


5
Questa è più una domanda relativa alla programmazione in generale, quindi dai un'occhiata a questa domanda: programmers.stackexchange.com/questions/152997/…
congusbongus,

3
Grazie per il link, ma in realtà ho messo deliberatamente questa domanda qui: volevo vedere se gamedev è simile in questo aspetto ad altri campi IT.
NPS

Risposte:


21

Mi piace pensare che tutto ciò che ci circonda possa essere rappresentato, in un modo o nell'altro, attraverso un diagramma. Anche se è solo un diagramma lineare che rappresenta la transizione tra gli stati di un particolare oggetto nel tempo (come un essere vivente, attraversando un certo numero di stati dalla nascita alla morte). Uso i diagrammi per definire i miei pensieri e le mie idee per l'implementazione effettiva. Improvviso parecchio.

Pertanto, i miei diagrammi sono per lo più a un livello molto alto e sembrano mappe mentali .

Per fare alcuni esempi, questa è in realtà una mappa di eredità di classe (una che è stata tagliata) nel mio gioco in cui Interactive Object è il tipo di base.

Interactive Object è il tipo di base

Questo è un diagramma FSM ( macchina a stati finiti ) per una trappola a spike (quelle trappole fantastiche su cui calpesti e che spuntano picchi da terra).

Diagramma FSM per una semplice trappola a punta

Questo è un diagramma del manuale (chiamato in questo modo perché è destinato a tornare al diagramma spesso ) che ho disegnato di recente. Descrive i componenti di un gioco e aiuta anche a raccogliere le risorse necessarie, poiché puoi vedere immediatamente ciò che è necessario e ciò che non lo è. Raccomando questi su piccoli progetti, in quanto diventano piuttosto grandi su quelli grandi. Tuttavia, possono essere ulteriormente ampliati, in modo da poter risolvere le cose.

Panoramica del gioco

Quando vado a un livello inferiore, di solito è perché devo pianificare gli aspetti più complessi della mia architettura, e di solito mi occupo di UML. Non mi concentro mai sulla produzione di UML assolutamente pulito e corretto. Ho adottato ciò che mi è piaciuto di più della convenzione UML e l'ho trasformato in un simpatico UML mindmap. È semplice e fa il lavoro per me, ma non andrei con esso in un ambiente in cui ci si aspetta UML reale, per ovvi motivi.

Un'altra situazione in cui devo passare a un livello inferiore è quando devo descrivere algoritmi reali. Uso quelli che chiamo diagrammi di flusso . È un formato ispirato ai diagrammi utilizzati nei test su scatola bianca .

Un esempio per la trappola a punta che ho disegnato in questo momento sarebbe simile a questo: Diagramma di flusso più dettagliato della trappola a punta

Questo è normalmente lo strato finale tra i diagrammi e le implementazioni effettive dell'algoritmo. Se si presenta la necessità, dettagliamo ulteriormente i diagrammi di flusso (con ulteriori istruzioni eseguite), deducendo o stimando la complessità e costruendo casi di test accurati. Preferisco anche diagrammi rispetto allo pseudocodice.

Non legato allo sviluppo del gioco, ho anche un bel formato per descrivere le schermate in un'app multi-schermo, la funzionalità che l'utente può attivare su ciascuna schermata e la relazione tra le schermate. Normalmente li costruisco prima di iniziare lo sviluppo reale e si comportano come una mappa durante tutto il processo di sviluppo. Se è per un cliente, il diagramma dello schermo è ancora più utile! Mi aiuta a seguire tutto il progetto, dall'inizio alla fine, e prendere in considerazione tutte le funzionalità di cui avrà bisogno. Pertanto, è prezioso fornire una stima accurata dei costi e dei tempi.

Quindi sì, ho sicuramente diagramma tutto e tutto. Se ho un'idea, posso e sicuramente disegnerò un diagramma per questo. Se in qualche modo inizio un progetto senza almeno un diagramma molto ampio per supportarmi, mi sento paralizzato.


4
Su un sidenote, hai usato yEd per i diagrammi? Lo trovo molto utile.
Kromster dice di sostenere Monica

4
Esattamente! Sono contento di vedere un altro utente yEd. L'ho usato molto negli ultimi anni, è il mio preferito attuale.

2
+1 per yed. L'unico aspetto negativo è che UML non è affatto intuitivo. Ma per ogni altro diagramma è incredibile per un'app gratuita.
Sidar,

2
Ho usato yEd per progettare i miei alberi comportamentali per la competizione AI di AiGameDev.
Nick Caplinger,

15

Sicuramente lo faccio - sia strutturale che comportamentale - la mia regola empirica è che faccio diagrammi quando il costo di fare il diagramma è inferiore a quello di provare a ricordare cosa diavolo stavo pensando un mese dopo - o quando ho bisogno di spiegarmi chiaramente a qualche altro sviluppatore

Diagrammi di classe quando la gerarchia ereditaria diventa sufficientemente complessa

Diagrammi di oggetti quando cose come l'istanza di oggetti diventano qualcosa che confina con la creazione di un mostro di Frankenstein da parti disparate - particolarmente utile negli utenti di vertici di lavelli da cucina e pixel shader, per assicurarsi che tutti i bit necessari vengano spinti attraverso il tubo

Diagrammi di sequenza quando le interazioni dettagliate tra un insieme di oggetti diventano complesse: questo è estremamente utile nella modellazione di flussi di rendering complessi in cui sono necessarie informazioni precedentemente calcolate in posizioni a valle appena correlate


Ho dimenticato una cosa importante: crei diagrammi prima o dopo aver implementato le cose? Ciò che intendo è che quando si progetta e implementa qualcosa di solito si cambia idea o si presenta qualcosa di inaspettato e si devono apportare cambiamenti, a volte importanti, e farli in diagrammi già complessi sembra ugualmente senza speranza come nel codice stesso.
NPS

6
ah ah - dipende - qualunque sia il modo in cui funziona il problema a volte - a volte è più facile manipolare il codice e poi disegnarlo, a volte è più facile disegnarlo e poi costruirlo - Non ho una regola dura e veloce per questo uno
Mark Mullin,

@Mark: quel bit dovrebbe essere una parte della risposta;)
Kromster dice di sostenere Monica

8

I diagrammi sono un ottimo modo per comunicare, documentare e aiutare il tuo design e il design è la parte più significativa dello sviluppo del software. UML ha molte funzionalità ma non si intende utilizzarle tutte contemporaneamente, solo quelle utili.

Quando navighi in una nuova città, ti fermi effettivamente a guardare una mappa, invece di continuare e seguire le indicazioni? Questo è il design e la codifica. Quando le cose non sono familiari, quando il problema è complesso, quando ti senti perso, è quando pensare al design è più utile, ed è meglio farlo prima che dopo. È molto più facile cambiare il tuo design prima di aver implementato qualcosa .

I diagrammi sono un ottimo modo per visualizzare il problema e aiutare il tuo design, specialmente per i pensatori visivi (che è la maggior parte di noi su Gamedev immagino). Molti problemi diventano banali, i difetti diventano evidenti, quando è chiaramente mappato su un diagramma. Alcuni problemi che potresti trovare in un diagramma:

  • Troppe connessioni a un singolo componente? Potresti avere un oggetto dio che è difficile da mantenere
  • Troppe interconnessioni? Forse la modularità può essere migliorata, per rendere l'architettura meno fragile
  • Troppi percorsi tra due componenti? Forse hai un accoppiamento stretto
  • Per applicazioni ad alte prestazioni come i giochi, ci sono troppi componenti coinvolti nel percorso caldo o nel circuito interno? Ciò potrebbe influire sulle prestazioni
  • Il più delle volte, tuttavia, il diagramma mostrerà incoerenze tra il design che hai immaginato e l'implementazione effettiva

Inoltre, i diagrammi sono perfetti per comunicare e documentare il tuo progetto, sia per le persone non tecniche che per le persone nuove al tuo progetto - e ricorda, in 6 mesi sei praticamente nuovo anche al progetto!

Il modo in cui usi UML dovrebbe essere guidato da queste considerazioni. Diagrammi per il tuo bene? Usa la notazione che preferisci. Collaborare con altri sviluppatori? Cerca di includere i dettagli delle chiamate API, i tipi di messaggio, le indicazioni delle dipendenze. Discutere di architettura? Basteranno scatole nere e semplici connessioni. Nessuno usa comunque l'intero set di funzionalità UML , inoltre è molto utile come set di notazioni standardizzate che molte persone comprendono - mentre i miei scarabocchi sui tovaglioli potrebbero essere incomprensibili per te e viceversa.

Per quanto mi riguarda, utilizzo sempre i diagrammi: semplici disegni di blocchi note per progetti personali, semplici diagrammi UML al lavoro. Questo diagramma UML è ciò che considererei troppo complesso, e che non farei mai perché il costo di produrlo e mantenerlo supera i suoi benefici, ma ovviamente YMMV.


Un'enorme domanda per te: IIUC, stai cercando di rimanere con semplici diagrammi (sempre). Ma i diagrammi sono generalmente necessari quando l'applicazione diventa complicata. Come si mantengono i diagrammi piccoli e semplici quando si modellano sistemi vasti e complessi?
NPS

@NPS Dipende dallo scopo / pubblico di destinazione e nella mia esperienza è ancora possibile utilizzare semplici diagrammi per modellare sistemi complessi. Di solito quello che hai sono molti diversi diagrammi semplici per persone diverse, o che mostrano diversi aspetti del sistema - questo è in parte il motivo per cui ci sono diversi tipi di diagrammi in UML. I sistemi complessi sono generalmente complessi, nel senso che hanno molti aspetti o livelli, che sono tutti semplici in isolamento. I sistemi veramente complessi sono molto rari, perché tendono ad essere molto difficili da capire dai migliori esperti.
congusbongus,

8

Direi che ci sono due tipi di diagrammi. Diagrammi e scarabocchi formali.

Per quanto riguarda i diagrammi formali, li faccio quando lavoro con altri programmatori, ma lo faccio raramente quando sto programmando da solo.

Tuttavia, ciò non significa che mi siedo e codice tutto ciò che mi viene in mente. Secondo me, la cosa più importante durante la programmazione (o in realtà qualsiasi cosa nella vita) è pensare prima e fare dopo .

La codifica è un compito molto meccanico. Digiti e le parole appaiono sullo schermo. L'idea è che quando inizi a scrivere codice, dovresti aver già risolto il problema. Fare scarabocchi è un ottimo modo per ordinare i tuoi pensieri e persino forzarti a pensare che devi fare correttamente la parte di codifica. Gli scarabocchi non sono pensati per essere salvati per riferimento futuro, solo così puoi capire facilmente i tuoi processi mentali.

Non preoccuparti se impieghi troppo tempo a pensare. Penso che un buon equilibrio avvenga quando dedichi il 90% del tuo tempo a pensare e il 10% alla programmazione. Ho incontrato diversi programmatori "senior" che vivono di "non abbiamo tempo per pensare, solo per fare". Ma anche se chiamano il loro codice "fatto" prima di quelli che si prendono il tempo di pensare a quello che stanno facendo, loro (o le anime sfortunate lasciate dopo) poi passano innumerevoli ore a riparare e rattoppare qualcosa che avrebbe dovuto essere costruito correttamente dall'inizio.

La cosa migliore è che pensare è gratis! non devi essere seduto sul tuo computer per pensare. Puoi pensare al codice mentre mangi, fai il pendolarismo, ti alleni ... In effetti, le idee migliori arrivano quando meno te le aspetti, quindi tieni la mente sempre aperta e inizia a programmare solo quando sai davvero cosa stai andando a programmare.

Ecco un articolo correlato con cui sono d'accordo.

Modifica : per quanto riguarda il formato e il tipo di diagrammi effettivi, ti consiglio di scegliere il freestyle e in realtà manoscritto invece di utilizzare strumenti preconfezionati. Ricorda che il punto è aiutarti nel tuo processo di pensiero, quindi sentiti libero di disegnare ciò che ti piace. La semantica è come preferisci e può essere diversa tra i diagrammi e persino tra le diverse parti del diagramma.

Ci sono tre vantaggi principali con i diagrammi freestyle / scritti a mano sugli strumenti preconfezionati:

  1. Non sei obbligato a rispettare il tipo di diagramma supportato da qualsiasi strumento tu scelga. A volte mapminds funzionerà, a volte qualcosa di più simile a UML andrà bene, mentre altre volte farà un diagramma logico. Altre volte un diagramma completamente personalizzato è ciò che funziona, e nessuno strumento può darti tutta la flessibilità dei diagrammi freestyle (prova a praticare un buco nel foglio e continua sul retro del foglio, nella tua confezione preferita, e vedi cosa succede)

  2. Passerai più tempo a disegnare diagrammi invece di usare lo strumento. Indipendentemente dallo strumento, penna e carta sono sempre più veloci nella creazione di diagrammi rispetto alla tastiera e al mouse attraverso i menu per trovare gli elementi specifici che stai cercando.

  3. Non hai bisogno di un computer per scrivere a mano. La maggior parte delle volte sto realizzando progetti complessi, li faccio in una biblioteca, in un caffè o persino all'interno di un aeroplano. Inoltre, le buone idee compaiono sempre nel momento meno opportuno, quindi assicurati di portare sempre qualcosa con cui scrivere e qualcosa su cui scrivere.


3
e quegli "scarabocchi" potrebbero benissimo esistere solo nella tua mente, o non seguire alcuna convenzione di diagramma formale. E non aver paura di modificare il design mentre procedi e ottieni nuove informazioni. Naturalmente se lavori per gli altri e sono i soli responsabili del design, non puoi farlo (anche se potresti essere in grado di dare suggerimenti e richieste), ma se sei da solo vai avanti e sperimenta. Spesso mi siedo e comincio a fare cose, trovo un design evolversi da quello che sto facendo fino a quando non ho abbastanza idea di formalizzarlo in un diagramma o in un documento.
jwenting

0

Potrebbe valere la pena sottolineare alcuni discorsi sul diagramma di progettazione della Game Developers Conference 2013. Questi sono alcuni esempi molto pratici e testati su strada - e sembra che siano stati presentati in molte conferenze nel corso degli anni.

(Le altre risposte hanno fatto un lavoro ammirevole nel dimostrare perché e come i diagrammi incentrati sul design possono essere estremamente utili nella pianificazione, costruzione, crescita e mantenimento di una base di codice, quindi lascerò quell'aspetto da solo e confido che queste risorse possano essere utili a chiunque visiti la domanda.)

Joris Dormans ed Ernest Adams hanno discusso del sistema di progettazione del gioco Machinations / diagramma di equilibrio. (Ecco un video GDC Vault a pagamento di GDC EU 2012; esempi di GDC 2013 sulla wiki di Dormans.) Invece di tentare di parafrasare, ecco come la wiki descrive il sistema:

Machinations è una struttura teorica e una rappresentazione interattiva, dinamica e grafica che descrive i giochi come sistemi dinamici e si concentra su circuiti di feedback chiusi al loro interno. L'intenzione è quella di trovare un modo per esprimere e investigare metodologicamente le strutture di gioco (ricorrenti). Machinations offre una nuova lente sulla pratica intuitiva e delicata della progettazione e del bilanciamento del gioco.

Noah Falstein ha tenuto un discorso chiamato "The Arcane Art of Puzzle Dependency Diagrams" (video GDC Vault con firewall ). Non riesco a trovare alcun link senza paywall qui, ma varie persone hanno discusso o pubblicato le loro note online.

Entrambi i discorsi hanno discusso quando hanno creato e come hanno mantenuto questi diagrammi, in un modo o nell'altro.


0

Probabilmente dovresti consultare questo articolo sull'utilizzo di una semplice grammatica astratta per descrivere il tuo loop di gioco, come può aiutarti a identificare i problemi di progettazione e quanto è facile iterare a quel livello.

http://www.gamasutra.com/blogs/JoshuaStarner/20130205/186060/Applying_Abstract_Models_to_Game_Design.php

Posso anche indicarti il ​​mio lavoro sull'argomento, più basato sull'economia del ciclo di gioco, usando risorse astratte per tracciare cose come opportunità, fortuna o preparazione:

http://www.stephanebura.com/diagrams/

Se trovi utile questo approccio, dovresti dare un'occhiata alle Macchinazioni di Joris Dormans, uno strumento per realizzare tali diagrammi ed eseguire le loro simulazioni:

http://www.jorisdormans.nl/machinations/

Il suo intero processo è spiegato nel suo libro:

http://www.amazon.com/Game-Mechanics-Advanced-Design-Voices/dp/0321820274/

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.