Domanda

Sto cercando dei buoni riferimenti per imparare a modellare la fisica 2D nei giochi. Non non cerco una biblioteca per farlo per me - Voglio pensare e imparare, non usare ciecamente il lavoro di qualcun altro.

Ho fatto un bel po 'di Google, e mentre ho trovato alcuni tutorial su GameDev, ecc., trovo i loro tutorial difficili da capire perché sono scritti male o assumono un livello di comprensione matematica che Non possiedo ancora.

Per i dettagli - Sto cercando come modellare un gioco 2D dall'alto verso il basso, un po 'come un gioco di combattimento con carri armati - e voglio modellare accuratamente (tra le altre cose) l'accelerazione e la velocità, l'accumulo di calore dei componenti, "collisioni tra modelli e limiti di livello e armi di tipo missilistico.

Siti web, libri consigliati, blog, esempi di codice - sono tutti benvenuti se aiuteranno la comprensione. Sto pensando di usare C # e F # per costruire il mio gioco, quindi esempi di codice in una di queste lingue sarebbero grandiosi, ma non lasciare che la lingua ti impedisca di pubblicare un buon link. =)

Modifica : non intendo che non capisco la matematica - è più il caso che non so cosa devo sapere per capire i sistemi coinvolti e non so davvero come trovare le risorse che mi insegneranno in modo comprensibile.

È stato utile?

Soluzione

Ecco alcune risorse che ho raccolto alcuni anni fa. Degna di nota è l'integrazione Verlet. Sto anche includendo collegamenti ad alcuni motori di fisica commerciale e open source che ho trovato in quel momento. C'è un articolo di StackOverflow su questo argomento qui: fisica dei giochi in 2D?

Metodi fisici

Libri

  • " Sviluppo del motore di fisica del gioco " , Ian Millington - Possiedo questo libro e lo consiglio vivamente. Il libro costruisce da zero un motore fisico in C ++. L'autore inizia con la fisica delle particelle di base e quindi aggiunge & Quot; leggi del movimento & Quot ;, vincoli, fisica del corpo rigido e così via. Include un codice sorgente ben documentato fino in fondo.

Motori fisici

Altri suggerimenti

Parlando per esperienza, l'implementazione di un motore fisico 2D è piuttosto difficile. Descriverò in dettaglio i vari passaggi che ho fatto durante la creazione del mio motore.

  1. Rilevazione di collisioni. Il rilevamento delle collisioni può essere un problema difficile, anche quando non hai a che fare con mondi 3D o simulazioni in rete. Per la fisica 2D, devi assolutamente utilizzare il Teorema dell'asse di separazione . Dopo aver implementato SAT, hai completato la parte dinamica del tuo motore.

  2. Cinematica / Dynamics. Chris Hecker ha scritto un eccellente risorsa online che mi ha accompagnato passo passo nella risposta alla collisione.

  3. Tutto il resto. Una volta terminato il rilevamento / risposta alla collisione, si tratta di implementare tutto ciò che si desidera nel motore. Ciò può includere attrito, forze di contatto, articolazioni e qualsiasi altra cosa tu possa pensare.

Buon divertimento! Creare la tua simulazione fisica è un'esperienza incredibilmente gratificante.

Questo è un ottimo tutorial che dimostra concetti di fisica 2D usando il flash e non è specifico per il flash. http://www.rodedev.com/tutorials/gamephysics/game_physics.swf

Anche se vuoi imparare tutto dal basso, una biblioteca di fisica open source ben codificata e documentata contiene molte più informazioni di un libro. Come posso gestire la situazione x ... find nei file può essere più veloce di un indice cartaceo.

Risposta originale:

Cosa, nessuna menzione di Box2D ? È un progetto lato open source di un dipendente Blizzard, ha una buona comunità e bene, funziona benissimo.

Nella mia (breve) esperienza con Box2D, integrandola con Torque Game Builder, ho trovato l'API pulita da usare, la documentazione era chiara, supportava tutti gli oggetti di fisica che mi aspettavo (le articolazioni in particolare erano un requisito) e il la comunità sembrava amichevole e attiva (verso l'inizio del 2010).

A giudicare dai poster del forum, è emerso anche che i gestori erano ricettivi nei confronti dei contributi alla fonte (che non portavano il bagaglio di licenza).

Il suo risolutore basato su isola è sembrato abbastanza veloce, come mi aspettavo dalla sua reputazione, non dal fatto che ho fatto importanti test delle prestazioni.

F # ha una funzione chiamata Unità di misura che fa l'analisi dimensionale per te, fornendo errori se sbagli. Ad esempio, se dici:

let distance : float<meters> = gravity * 3.0<seconds>

Ciò produrrebbe un errore di compilazione, poiché la gravità è < metri / secondi ^ 2 > e non < metri > ;. Inoltre, poiché F # è solo .NET, puoi scrivere il tuo codice matematico / fisico in una libreria di classi e fare riferimento a quello dal tuo C #.

Ti consiglio di dare un'occhiata a questi post sul blog per ulteriori informazioni:

Questa è un'ottima risorsa per scrivere il tuo primo motore. È in 3D ma è molto facile da convertire in 2D. Conosco almeno una grande azienda che ha seguito questo tutorial per il proprio motore interno e personalmente ho seguito i suoi passi per il mio motore. Spiega tutti i concetti di fisica di base nella fisica basata sulla primavera / impulso e ti mostra come scrivere il tuo intergrater.

The F # .NET Journal ha pubblicato due articoli su questo:

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