Quali sono alcune buone risorse sulla progettazione del motore di gioco 2D?

StackOverflow https://stackoverflow.com/questions/179735

  •  05-07-2019
  •  | 
  •  

Domanda

Sto giocando con lo sviluppo di giochi 2D usando C ++ e DirectX nel mio tempo libero. Sto scoprendo che l'approccio aziendale alla modellazione del dominio dei problemi non aiuta quanto vorrei;)

Cerco più o meno una "migliore pratica" equivalente al design di base del motore di gioco. Come le entità dovrebbero interagire tra loro, come le animazioni e i suoni dovrebbero essere rappresentati in un mondo ideale, e così via.

Qualcuno ha buone risorse che può consigliare?

È stato utile?

Soluzione

Gamedev.net di solito è dove mi rivolgo per avere un'idea di cosa sono le altre persone nella comunità di sviluppo del gioco facendo.

Detto questo, temo che scoprirai che l'idea delle "migliori pratiche" nello sviluppo del gioco è più volatile della maggior parte. I giochi tendono ad essere applicazioni così specializzate che è quasi impossibile fornire qualsiasi "misura unica adatta a tutti" risposte. Ciò che funziona alla grande per Tetris sarà inutile con gli Asteroidi, e un modello che funziona perfettamente per Halo probabilmente fallirà miseramente per Mario.

Scoprirai anche rapidamente che non esiste uno "standard di settore" per formati di trama, mesh, livello, suono o animazione. Ognuno semplicemente rotola da solo o usa tutto ciò che è conveniente per la piattaforma. Di tanto in tanto vedi cose come COLLADA , il che è carino, ma è ancora solo un formato intermedio progettato per facilitare la scrittura degli esportatori .

Se sei nuovo nello sviluppo di giochi, il mio consiglio sarebbe questo: non ucciderti per la struttura del codice al primo tentativo. Prova un gioco semplice, come gli asteroidi, e vai via finché non funziona, non importa quanto "brutto" il codice è. Usa formati semplici con cui hai familiarità senza preoccuparti di come resisteranno in progetti più grandi. Non preoccuparti di plugin, skin, editor o di qualsiasi altra lanugine. Fallo funzionare! Quindi, quando hai finito per primo, tutto il gioco importante, scegline un altro e questa volta ripulisci uno o due aspetti del tuo codice (ma non esagerare!) Da lì, iterare!

Ti prometto che questo ti farà andare più veloce di qualsiasi altra quantità di ricerche online per il "giusto modo". mai possibile (questo proviene da qualcuno che ha fatto MOLTE prese in giro).

E un ultimo pensiero per te: se ti senti più a tuo agio a lavorare in uno spazio più ben definito, dai un'occhiata a XNA o una libreria simile. Predefiniranno alcuni dei "migliori" quot formati da utilizzare e fornire strumenti per lavorare con loro, il che elimina alcune delle congetture iniziali.

Buona fortuna e soprattutto ricorda: i giochi (e il loro sviluppo) dovrebbero essere DIVERTENTI! Non lasciarti coinvolgere troppo dalle piccole cose!

Altri suggerimenti

Crea un gioco. Dopo aver finito, creane un altro. Guarda cosa ti è piaciuto e cosa non ti è piaciuto e poi creane un altro.

Scherzi a parte, puoi leggere tutte le "best practice" di " guide alla progettazione di giochi che desideri, ma alla fine si riduce all'esperienza. L'unico modo per fare esperienza è sedersi e scrivere una partita. Dopo averlo fatto un paio di volte, avrai un'idea molto di come scrivere un gioco.

Praticamente qualsiasi libro che ha Andre Lamothe come uno dei collaboratori.

GameDev ha anche tonnellate di articoli.

Non posso essere più d'accordo con te: le applicazioni enterprise non ti preparano per la programmazione di giochi.

Ho creato alcuni giochi su piccola scala in python, java, html / php e perl. La struttura di base di un gioco, come probabilmente saprai, è:

Ciclo principale:
& Nbsp; & nbsp; handleInput ()
& Nbsp; & nbsp; updateGameLogic ()
& Nbsp; & nbsp; renderImages ()

Ora, va bene per i giochi a schermo singolo, a thread singolo, come qualsiasi cosa degli anni '70 o '80. Ma non trovo questa struttura particolarmente adatta per i giochi multi-schermo (come i giochi di ruolo) o qualcosa di più esotico. Non si avvia molto bene. Il codice diventa piuttosto funky in quanto è necessario gestire una varietà di input. Non si adatta bene.

Tuttavia, prima di scartare troppo questa metafora, tieni presente che questo è un ottimo punto di partenza. Vorrei spingermi fino al punto di raccomandare l'apprendimento di Python / Pygame e iniziare a creare giochi con quello strumento anziché C ++, il che complica il processo di progettazione e implementazione. Quando esegui il prototipo in Python, vedrai che il gioco prende forma molto più velocemente e si imbatte in problemi indipendenti dalla lingua.

Per me, gli aspetti più difficili e che richiedono più tempo della programmazione di gioco sono le risorse grafiche e sonore. Mentre sono un po 'un secchione audio e un musicista dilettante, creare musica credibile e appropriata e SFX è un progetto tutto da solo. Non ho talento grafico, quindi devo fare affidamento sulla modifica delle immagini esistenti o sull'utilizzo di quelle liberamente disponibili. Fortunatamente, ci sono caratteri gratuiti ampiamente disponibili che possono essere utilizzati per i giochi (e poco altro, dal momento che sono quasi universalmente cattivi).

Infine, non c'è niente come l'open source per vedere come altri progetti gestiscono questo. Battle of Westnoth è un gioco maturo di medie dimensioni. Potresti voler vedere cosa sta succedendo lì. Ancora una volta, i giochi in Python spesso rendono disponibile il loro codice sorgente, in modo da poter consultare centinaia di progetti lì. Potresti anche decompilare le ROM atari 2600, ma questo non ti dirà molto sulla programmazione oggi. Il vecchio VCS era un dispositivo dedicato che gestiva le sue app in modo molto dipendente dal sistema. :-D

Infine, mi piace anche Andre LaMothe. Ho il suo vecchio libro del 1993 che ha uno spessore di un milione di pagine. Sebbene sia ancora un bel riferimento su alcune idee di gioco generiche, molte di queste sono ovviate dalla disponibilità di librerie e framework disponibili gratuiti che non esistevano allora.

Buona fortuna con il tuo progetto.

Dal momento che non è stato ancora menzionato, perché non iniziare guardando un motore esistente che è stato rilasciato alla comunità? Dato che stai parlando in 2D, vorrei tornare indietro e raccomandare qualcosa come Abuse . Sì, è antico e la maggior parte dei pezzi interessanti sono in Lisp - ma il gioco è diventato molto popolare per un po ', il che significa che stavano facendo qualcosa di giusto.

In effetti, penso che il fatto che gran parte del gioco originale fosse in Lisp sia una lezione molto utile. Scegli il linguaggio / strumento più robusto e non preoccuparti delle prestazioni. In seguito puoi sempre ottimizzare le parti lente in C.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top