2009-08-11 11 views
9

Provengo da uno sfondo che sviluppa principalmente siti Web e forse alcune semplici app basate su moduli. MVC funziona bene, ma non vedo come sia applicabile a un gioco. Quindi come lo fate ragazzi?Come impaginare il codice di un gioco semplice?

Sto sviluppando con Qt e OpenGL, se questo è rilevante. Ho un QGLWidget che sto fondamentalmente usando come hub centrale al momento. Dovrebbe passare l'input a un oggetto Player in modo che possa gestirlo, o dovrebbe controllare direttamente il player? Gli oggetti dovrebbero disegnarsi da soli, o dovrebbe esserci un altro gestore per questo? Fondamentalmente, cosa va dove? Chi gestisce cosa?

I collegamenti agli articoli pertinenti, le risposte ad alcune di queste domande, suggerimenti o strutture di file sono tutti apprezzati. Non mi interessa davvero come programmarlo, solo come modulare bene.

Grazie :)

risposta

6

Guardate questo tutorial:

http://ezide.com/games/writing-games.html

È scritto per python e spiega MVC per i giochi molto buoni.

Buona fortuna!

+0

Sì! Grazie! Ora questo è on-topic e molto rilevante. Molto più vicino a quello che sto cercando. – mpen

5

Bene, il punto di partenza per lo sviluppo cliché gioco sembra essere gamedev. Ci sono un certo numero di tutorial e articoli per iniziare da lì. Ha anche un forum abbastanza attivo. C'è anche un libro, "Programmazione di giochi Linux" (presumo tramite Qt che stai usando Linux), ma credo che costi. Un certo numero di libri, tuttavia, può essere trovato su Internet, e questo potrebbe essere uno di questi.

C'è anche la "black art of game programming", un wiki con titoli di capitolo davvero terrificanti. Ecco un link a un capitolo particolarmente rilevante, anche se ovviamente è possibile visualizzare il tutto: Chapter 2. (archive.org backup link)

Spero che questo aiuti, - Agor

+0

speravo in qualcosa di un poco più specifico di "gamedev". Quell'arte nera della programmazione di giochi ... è piuttosto terribile. Descrive principalmente come il gioco dovrebbe apparire all'utente finale, e in un modo piuttosto rigido (riprodurre un'animazione della morte con un sacco di suoni e cose, quindi visualizzare una schermata di punteggio più alto!). Descrive un ciclo di eventi di base, ma speravo in qualcosa di un po 'più complicato di come scrivere un gioco di 200 linee in un singolo file. Quello che posso fare. Non intendevo affatto così semplice. Non riesco a capire se è stato scritto da un professore di dottorato di ricerca di 15 anni o di 60 anni che cerca di comportarsi in modo "cool". – mpen

+0

Immagino di essermi trasferito un po '. Lo scaverò un po 'di più, potrebbero esserci alcune gemme in seguito, ma il primo bit non è di grande utilità. Sì, sto programmando su Linux per questo particolare progetto ... è molto più facile ottenere le librerie che ho bisogno di installare correttamente. Ma io salto avanti e indietro ma tra Windows e Ubuntu ... ma i principi di progettazione non sono comunque dipendenti dal SO. Comunque .. grazie, guarderò di più. – mpen

+0

Nessun problema. Se stai cercando più livelli di dettaglio, potrebbe essere utile fornire maggiori informazioni su * che tipo * di gioco stai facendo. Immagino che, ad esempio, i giochi di strategia in tempo reale abbiano una struttura del codice molto diversa da quella dei sparatutto in prima persona, o giochi di puzzle, o qualsiasi altra cosa. Come altro suggerimento: ci sono (ovviamente) giochi open-source di qualsiasi genere, quindi puoi dare un'occhiata a loro come guida. Personalmente, non riesco mai a fare head o code del codice sorgente, ma forse sei più esperto. :) [E sì, ero imbarazzato dalla cosa della "black art", ma all'epoca sembrava appropriato? :)] – agorenst

0

E 'probabilmente più fondamentale di quello che stai cercando, ma ho imparato con pygame, e il loro è un libro di APremere su di esso che insegna gamedev base, se altri sono interessati

+0

Le persone continuano a suggerire pygame ... Non sono davvero interessato a passare a un'altra libreria oa imparare una nuova libreria, * ma * cercherò di esaminare la documentazione per vedere come strutturano le cose. Se è davvero così bello, * deve * essere ben progettato, giusto? Grazie. – mpen

+0

Gratta che. Non sembra che pygame fornisca qualsiasi struttura ... è solo una grande libreria di utilità vero? Non mi piace affatto. – mpen

0

Ho quasi voglia di urlare duplicato di my question ma sarebbe zoppo. :)

In ogni caso, guarda attraverso quelle risposte. Penso che se non hai molta esperienza in game dev, saltaci dentro. Non pensare troppo alla fase di pianificazione, preoccupati solo di ottenere qualcosa sullo schermo, ottenere qualcosa di funzionante, poi refactoring e pasticciare con il tuo codice (senza modificare l'output) e scoprirai cosa funziona e cosa ti sembra migliore.

Sono un grande fan della scrittura di qualcosa che funziona, quindi di tornare indietro e di refactoring. Puoi imparare molto in questo modo, e trascorri meno tempo andando in circoli ipotetici cercando di capire le cose nella tua testa e di non fare nulla. (E non dire che è quello che finiresti a fare, forse sei un eccellente pianificatore, ma personalmente l'ho fatto molte volte.)

+2

Questo è il problema. Faccio sempre * un salto dentro e non pianifico mai, e poi finisco con un enorme pasticcio tra le mani che mi dà fastidio e poi "refatto" l'intero programma nel nulla. Meglio iniziare con una struttura in modo tale da non essere così tentato di farlo a pezzi. Ho poca esperienza di gioco, ma non nessuna. Ho un clone mario super base, e un altro gioco ... ma quando si tenta di aggiungere più elementi (come una schermata di menu), tutto va a pezzi. Come se il tuo giocatore fosse l'unico oggetto che gestisce l'input ... cosa succede quando muore? – mpen

+0

Ad ogni modo, hai ragione. È abbastanza simile alla tua domanda, leggerò anche quelle risposte. Grazie :) – mpen

+0

http://dev.koonsolo.com/9/model-view-controller-for-games/ Questo è buono. Ho sempre pensato a "Modello" come "database" e Controller come ... Non so, gestendo i dati del post e così via e inviandolo al modello, e Views sono viste .... dovevo girare la testa un po 'per vedere come potrei applicarlo a un gioco. Utile :) – mpen

Problemi correlati