2009-01-31 17 views
14

Mi sono sempre chiesto, in che modo i programmatori di giochi legano insieme i personaggi dei giochi fatti in un software di modellazione 3d esterno come maya o 3d max e la logica di gioco effettiva fatta nel linguaggio di programmazione preferito, ad esempio c o C++.Come si scrive un gioco 3d?

Come puoi combinare queste due cose insieme e qual è l'effettivo processo di creazione di un gioco dalla modellazione dei personaggi alla programmazione?

Alcune delle cose che mi fanno pensare sono come, programmate i movimenti dei personaggi dal codice o dal modello 3d?

Gli esempi sarebbero davvero belli da vedere.

+1

questo è come lo fanno: http://www.unrealengine.com/ o http://unity3d.com/ – Saturnix

+0

Sono d'accordo che Unreal è piuttosto lucido! https://www.unrealengine.com/what-is-unreal-engine-4 –

risposta

14

La maggior parte delle informazioni, come i movimenti dei personaggi, sono effettivamente memorizzate al di fuori del codice. In realtà è un processo abbastanza semplice:

  1. Un artista crea un modello 3D in Maya o qualsiasi altra cosa, e quindi lo salva in un file. Diciamo che l'hanno chiamato "Gollum.3D".
  2. Ora 'Gollum.3D' contiene un sacco di numeri che rappresentano i punti del modello, le trame e tutto il resto.
  3. Il codice del programma legge quindi il file "Gollum.3D" - tutti i suoi punti modello, trame e tutto il resto, quindi esegue molti calcoli matematici per calcolare l'aspetto della scena 3D dato tutti i numeri che rappresentano il modello.

Si scopre che tutto in un gioco finisce per essere memorizzato separatamente dal codice, e il codice lo legge e lo combina quando il gioco viene eseguito. Quando dico tutto - intendo TUTTO! Tutto il testo, le statistiche per i punti ferita e le quantità di danno delle armi, le immagini della schermata del menu e persino l'intelligenza artificiale sono memorizzate separatamente dal codice del programma negli script. Il codice del programma finisce per fare ben poco.

Potresti aver sentito parlare di persone che fanno modifiche ai giochi. I Modders sono persone che modificano i dati che si trovano al di fuori del codice del programma, il quale a sua volta cambia il gioco nel modo che gli si addice. Stanno semplicemente approfittando del fatto che praticamente tutto ciò che riguarda un gioco (tranne alcune cose fondamentali) non è scritto nel codice del programma.

+4

Si chiama un motore di gioco "facendo molto poco"? Questo sta seriamente aumentando la realtà ... –

+1

D'accordo, matematica complessa, fisica e intelligenza artificiale non sono cose che considererei uno sforzo "molto piccolo". –

+13

Penso che non intendesse questo suo piccolo sforzo, forse vuol dire che è una piccola percentuale del contenuto del gioco rispetto a ciò che è memorizzato nei file di script, ecc. –

3

Non ho molta esperienza di programmazione di gioco, ma ho trovato il framework e le risorse XNA molto illuminanti. Puoi trovare un sacco di esempi e come e un forum molto utile qui http://creators.xna.com/en-US/

1

Le animazioni possono essere eseguite all'interno del software di modellazione 3D e quindi fino al codice per "eseguire" animazioni diverse in base alla logica di gioco. I modelli passano dal software di modellazione al gioco attraverso formati comuni. Ad esempio, il framework XNA può leggere in modo nativo alcuni dei formati di modello più comuni.

0

Pensa un po 'a come lo fai tutto in 2D, è praticamente lo stesso con il 3D, gli algoritmi sono solo diversi e ci sono diversi aspetti a cui preoccuparsi.

Il resto di ciò che chiedi è una domanda di progettazione e dipende dal gioco e dal programmatore. Si può scrivere una simulazione complessa per spostare i propri personaggi, mentre qualcun altro può fare affidamento solo sulle animazioni scheletriche. Qualcuno può memorizzare la logica di gioco su modelli 3d e altri no.

Esempi?Forse quake source code è una buona fonte da esaminare.

5

La creazione di caratteri 3D e la programmazione del gioco 3D sono due processi distinti.

Solitamente scolpisci il tuo personaggio 3D in un modellatore 3D (Blender, Maya, 3D studio Max, ecc.), Esporti questo carattere in un file (.obj, .md2, ecc.) E hai scritto il codice sul tuo Gioco 3D per gestire l'importazione del personaggio nel tuo motore.

Mentre questo sembra abbastanza difficile, 3D game engines supportano tutte quelle cose senza scrivere milioni di righe di codice e reinventare la ruota.

Prendiamo ad esempio Ogre3D, un motore di gioco 3D open source. Non devi essere un guru di programmazione per avere un semplice esempio su & in esecuzione in pochi minuti. Suggerisco di dare un'occhiata al loro wiki e theirtutorials.

Per esempio this is un semplice tutorial per la creazione e l'esportazione dei modelli semplici da 3D Studio Max e la loro importazione a Ogre 3D

0

Scrivi motore di gioco è un compito complesso, il mio suggerimento è quello di utilizzare uno dei motori esistenti , (scegli dalla lista: http://www.devmaster.net/engines/).

Al momento del ritiro il motore è necessario prendere in considerazione quanto segue:

  • licenza (si desidera pubblicare, hai un budget, è open source)
  • linguaggio di programmazione/scripting (che lingua stai più bene con)
  • piattaforma di destinazione (Windows/Linux/Mac/Console/Phone)
  • Pipeline (sono gli esportatori dal vostro strumento di modellazione 3D e gli importatori nel motore)

La tua domanda è più legata all'ultima voce, dovresti scegliere un motore che può importare risorse che produci in 3DS, Maya nel motore in un modo che non ti devi preoccupare dei formati di file, perché ciò renderà più produttivo dal momento che ti stai concentrando solo sul gioco.

1

È necessario utilizzare un motore di rendering 3D. Molti di questi sono gratuiti (Ogre3D è buono) e in genere dispongono di strutture per importare quasi tutti i tipi di mesh creati da un software di modellazione comune.

6

A differenza della risposta preferita, mi azzarderei e direi che questo è in realtà un compito piuttosto grande se si fa riferimento ad avere un personaggio che ha animazione ad esso.

Il risultato finale sarebbe quello di abilitare la maggior parte delle funzionalità legate tramite script e file di configurazione (in altre parole, dati guidati), ma il processo per creare un tale sistema non è semplice.

Di solito si inizia con un modellatore esterno in cui si esegue quanto segue: 1. costruire un modello di pelle. 2. costruire uno scheletro e attaccarlo alla pelle in base al peso ecc. 3. applicare tutte le trame e il materiale come desiderato. 4. esporta nel tuo motore.

Ora puoi iniziare a costruire il tuo banca di animazioni per questo scheletro di personaggi o simili se lo associ a più di uno (di solito è il caso se lo scheletro è abbastanza vicino o modulare). Alcune animazioni conterranno solo una gerarchia parziale (per poter fondere solo parte dell'animazione - per esempio, il corpo inferiore è in esecuzione mentre la parte superiore del corpo può usare un'animazione o cinematica inversa diversa - sparare a un nemico durante la corsa è un buon esempio per quello).

Ora finalmente si arriva alla parte del codice. È necessario creare un sistema che associerà le animazioni allo scheletro e renderlo correttamente. Questo sistema deve anche essere in grado di fondersi tra animazioni e IK (ad esempio, passare dalla posizione di riposo a quella di esecuzione) ed essere in grado di combinare diverse animazioni e animazioni parziali - ad esempio, camminare (animazione completa del corpo), guardare qualcuno (IK per la parte superiore del corpo), agitando una mano (IK con animazione parziale) e respirando (animazione parziale) allo stesso tempo si combinano 4 diverse sfumature parziali o totali.

Non ho menzionato il fatto che è necessario creare l'importatore e c'è anche una differenza tra azione e animazione per l'azione. L'azione può avere diverse animazioni combinate o scelte casualmente - saranno associate tramite un file di mappatura dei dati.

Suggerirei di dare un'occhiata a XNA - ha molti esempi, importatori e molto altro e contiene molte cose di base nelle librerie in modo da non dover ricominciare da capo. Come menzionato anche dalle persone - Blender3D è una buona scelta per l'editor + e quindi potrebbe essere Torque solo per l'esperienza di un motore di gioco.

Un'ultima parola - se hai intenzione di provarlo, non sarà una passeggiata nel parco, ma hey - così divertente e i risultati ti renderanno orgoglioso di te stesso.

1

Visita Unity3d.com e realizzerai il tuo gioco in pochissimo tempo. Le animazioni sono fatte nel software di modellazione Maya, ecc., Ma alcune sono fatte nel motore. Unity rende la fisica facile e tu stai più o meno creando il tuo mondo e collegando il modo in cui gli oggetti interagiscono.

Esempio: si dispone di una fotocamera -> È possibile impostare la videocamera dall'interfaccia utente per seguire il carattere principale e la trasformazione XYZ di dove è posizionata la telecamera. Può anche essere fatto visivamente.

Verificare che è molto divertente e meno codice che si possa immaginare. Da lì puoi ovviamente scrivere il tuo codice per fare il tuo gameplay unico. Si spiega facilmente come scrivere uno script e trascinarlo sull'oggetto su cui si vuole eseguire lo script.

Questo è quasi il laico che posso ottenere. Saluti.

0

Non ho notato troppe risposte su cosa esattamente cercare. Negli ultimi anni sono state pubblicate molte più informazioni su come farlo in modo un po 'più semplice, ancora piuttosto complesso.

libero

A carico

1

Dato che questo argomento sta vedendo una nuova vita, ho pensato di contribuire. Ho utilizzato Autodesk 3Ds Max per oltre 12 anni producendo prodotti 3D e focalizzato più sul lato dell'animazione, ma so che Autodesk offre una vasta libreria di classi con moduli di scripting avanzati e funzionalità integrate che ha tutti gli strumenti per scrivere un 3D gioco all'interno di questo programma. Dovresti, ovviamente, imparare "Max Script" e come interfacciarti con tali pacchetti integrati con nomi come "Biped", "Particle Flow", il motore di simulazione della realtà "Havoc", ecc., Per non parlare del rendering motore (di solito la scanline di default, Mental Ray, VRay) che avrà bisogno di molti parametri.

Se non hai un budget o sei in open source, controlla Blender! È incredibile ciò che questo software e comunità 3D open-source ha da offrire. Hanno anche un "motore di gioco" che può collegarsi ad esso: http://www.blender.org/features/ Hanno risorse per aiutarti a iniziare.

Voglio aggiungere per menzionare anche che Unreal sembra piuttosto promettente, dal momento che l'hanno rilasciato per "gratis" basta leggere la stampa fine del 5% di royalty se il tuo gioco effettivamente decolla! https://www.unrealengine.com/what-is-unreal-engine-4

0

Trovo strano che ci siano tanti collegamenti per l'apprendimento di strumenti specifici. Se dovessi imparare lo sviluppo del gioco, vorrei un forum/sito generale per questo scopo. Succhiare come GameDev.net.

PS: Questa è una risposta complementare, non completa.

Problemi correlati