Come si fa a iniziare quando si cerca di capire il codice di un motore di gioco 3D (come id Tech 3)? [chiuso]

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

  •  19-09-2019
  •  | 
  •  

Domanda

Sono uno sviluppatore C # per la maggior parte. Torna al college ho avuto lezioni su C / C ++ in modo da "so C" e questa è una buona parte della ragione io sono uno sviluppatore C #.

Comunque non ho mai avuto la possibilità di codice in C / C ++ in modo professionale e mi piacerebbe studiare come funziona un moderno motore di gioco, insieme a come un grado C industriale / C ++ app funziona.

Il problema è che non ho idea da dove cominciare. Come in, ho scaricato il (che è stato retronymed id Tech 3 ) e io non sono nemmeno sicuro da dove cominciare con esso.

Come dovrebbe un riparata C # / WinForms attaccare una massiccia base di codice C come id Tech 3 o qualche altro motore AAA massiccia?

È stato utile?

Soluzione

Prova a fare il programma più semplice 3d "Ciao Mondo" che utilizza il sottoinsieme di base del motore. Che probabilmente ti insegnano carichi.

Con basi di codice grandi è meglio non cercare di imparare tutto in una volta. Basta immergersi con una domanda molto specifica che è necessario rispondere a te stesso (o può cercare su internet), o di un compito molto specifico che è necessario compiere. Questo approccio si dà l'obiettivo e la motivazione è necessario fare in realtà un po 'di programmazione. L'apprendimento verrà da sé.

Altri suggerimenti

Scrivi mod sarebbe un buon punto di partenza.

Inizia il territorio sulle carte nautiche: il gioco di vaniglia. Cambiare roba. Guardare il codice bomba a rimbalzo. Farlo rimbalzare ulteriormente. Aggiungere previsione sul lato client (che proiettili non rimbalzante già).

Aggiungi un'arma teletrasporto. Vi dirà di più su di rilevamento delle collisioni che vuoi sapere.

Ci sono alcune funzioni chiave che gestiscono la maggior parte del gioco: Le esportazioni del motore, il trap_ * chiamate. Potrebbe aiutare molto per sapere che cosa esattamente mods stanno facendo con loro prima di aprire il codice del motore e guardando la loro attuazione.

Per esempio, potrebbe dirvi di più il motore per sapere che è necessario chiamare LinkEntity ogni volta che un'entità si sposta o comunque la sua posizione nella struttura di gioco BSP non viene aggiornato e le chiamate del motore successive potrebbe ignorarlo, di sapere esattamente come l'albero viene memorizzato ed accessibile.

Questo suona come uno scherzo, ma: trovare la funzione main(). Questo è il punto di partenza ben definito di esecuzione del programma, e si dovrebbe essere in grado di seguire tutto da lì.

Questo dovrebbe aiutare a capire quali sottosistemi dipendono su cui, dal momento che l'ordine della loro inizializzazione sarà tipicamente bottom-up. Per esempio, un tipico motore inizializza la sua memoria, il debug e sottosistemi tracciamento presto, dal momento che la maggior parte degli altri sistemi hanno bisogno di tali servizi per essere installato e funzionante.

Si dovrebbe anche essere in grado di capire il modo in ciclo principale del gioco, e capire ciò che è necessario prima del ciclo ottiene il controllo.

Nel caso in cui siete alla ricerca di altri motori di gioco 3D e può forse voler confrontarli tra di loro, vedi DIM3:

http://code.google.com/p/dim3/

Andre LaMothe praticamente mi ha insegnato tutto quello che so di programmazione del gioco. Una volta che si ottiene attraverso questi due libri, si sa praticamente tutto quello che c'è da sapere su motori 3D.

  1. trucchi del gioco di Windows Programmazione Guru
  2. trucchi del gioco 3D di programmazione Guru - grafica 3D avanzata e rasterizzazione

In caso contrario, basta provare a scrivere il proprio piccolo motore per divertimento, vedere quanto lontano si ottiene, cosa ti perdi, e presto iniziare a comprendere lo scopo della altro codice che stai guardando,

Anche potrebbe desiderare di provare a guardare il NeHe GameDev Tutorial .

Non sono mai stato un grande fan di lettura di un grande prodotto finito. E soprattutto il codice di Quake base. Ci sono buona cosa si può imparare da esso per certo, ma non dovrebbe essere il punto di partenza. Hai bisogno di imparare prima alcuni nuovi concetti utilizzati nella programmazione del gioco.

Ti suggerisco di mettere C ++ un po 'in attesa (se si vuole fare gioco davvero avete bisogno di tornare ad esso ad un certo punto), ma per il momento l'installazione XNA. E 'così grande quadro come tutto .NET. Ci sono un sacco di tutorial su XNA gioco là fuori.

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