Quali tecnologie vengono utilizzate per lo sviluppo del gioco oggi? [chiuso]


14

Ogni volta che faccio una domanda sullo sviluppo del gioco in un forum online ricevo sempre suggerimenti come imparare algoritmi di disegno a tratteggio, manipolazione di immagini a livello di bit e decompressione video ecc.

Tuttavia, guardando a giochi come God of War 3, trovo difficile credere che questi giochi possano essere sviluppati usando tecniche di livello così basso.

La straordinaria bellezza di questi giochi sfidano qualsiasi metodologia di programmazione comprensibile (per me).

Inoltre l'hardware di gioco è davvero un mostro ormai giorni. Quindi è ovvio che gli sviluppatori lavorerebbero a un livello più alto di astrazione.

Qual è la più recente metodologia di sviluppo nel settore dei giochi? Com'è possibile che un team di 30-35 sviluppatori (di cui la maggior parte è responsabile del management e del marketing) in grado di creare giochi così sbalorditivi?

Se la domanda sembra troppo generica, potresti spiegare l'architettura di God of War 3? O come faresti a produrre un clone? Che penso dovrebbe essere obiettivamente responsabile.


2
Qualcuno vorrebbe spiegare il downvote?
Monika Michael,

2
I downgrade sono dovuti al fatto che la domanda non è "costruttiva". Per citare "questa domanda non è adatta al nostro formato di domande e risposte. Ci aspettiamo che le risposte siano supportate da fatti, riferimenti o competenze specifiche, ma questa domanda probabilmente solleciterà dibattiti, argomenti, sondaggi o discussioni estese" . Cioè, non è possibile rispondere con precisione alla domanda. Continuo a pensare che la tua domanda abbia valore, ma debba essere riformulata.
9000,

2
@ 9000 E come si qualifica questa domanda come non costruttiva?

1
@delnan: probabilmente i downvoter non erano contenti di frasi come "Qual è l'ultima metodologia di sviluppo nel settore dei giochi?" . Per me, "come faresti a produrre un clone" è molto meglio.
9000,

Risposte:


12

Disclaimer: io sono non uno sviluppatore di videogiochi. Ma ho un interesse "hobbistico" in questo.


La maggior parte dei giochi AAA che vedi sono realizzati utilizzando i motori. Non sono scritti da zero. Pensa a un motore come a un quadro. Hai .NET framework, Java SDK, Cocoa toolkit.

Tutto per semplificare il tuo lavoro di creazione di software e di astrazione del codice del lavello della cucina. È necessario, ma scriverlo ogni volta è molto improduttivo.

Utilizzando questi motori lo sviluppatore può costruire il proprio gioco e non doversi preoccupare di alcuni dei codici sottostanti. ( Non commettere errori, lo sviluppo del gioco è uno dei rami più difficili dell'ingegneria del software. )

Ad esempio, Unreal Engine 4 ha un kit di sviluppo e uno studio killer:

http://www.youtube.com/watch?v=MOvfn1p92_8

inserisci qui la descrizione dell'immagine

Ci sono molti motori diversi là fuori. Alcuni pagati, alcuni gratuiti, altri più bassi, altri offrono un'astrazione più elevata.

Per esempio:

  • ORCO
  • Unreal Engine
  • Unità
  • fonte
  • e molti altri...

5

In riferimento al commento di gbjbaanb, alcune delle cose che rendono divertente la programmazione dei giochi sono la durata limitata della base di codice e la mancanza di richiedere precisioni. Ad esempio, se stai progettando un gioco FPS e il tuo algoritmo di movimento a volte posiziona il tuo personaggio di gioco a pochi pixel, non è un grosso problema e le probabilità sono che nessuno se ne accorga. Se stai progettando un software aziendale e occasionalmente la tua funzione di somma ti fa guadagnare qualche dollaro, è un bug molto più serio. Quindi, quando si progettano giochi, alcuni aspetti possono essere molto meno precisi (e devono solo superare test umani, piuttosto che una suite di test automatizzata che verifica che le risposte siano esattamente corrette).

La mia esperienza è stata che la programmazione dei giochi, specialmente per i giochi in tempo reale, è un'esperienza molto diversa da ... quasi ogni altro sviluppo software che ho fatto, forse ad eccezione del lavoro con la GUI. È qualcosa che devi provare!


4

La risposta è "motori". Molti giochi sono costruiti su vari grafici e motori di gioco che sono fondamentalmente grandi librerie o framework.

Nel mondo OSS, dai un'occhiata a Ogre per un esempio, per i giochi commerciali hai cose come Source.

Ci sono altri fattori in gioco, come gran parte del codice è usa e getta e non passerebbe inosservato in un ambiente aziendale - ma questo perché la durata limitata di un gioco e le tempistiche di sviluppo accelerato, significano che il codice è (quasi) progettato solo per lavorare, non per essere mantenuto.


Naturalmente, questi motori sono solo astrazioni di codice C / C ++ regolari (anche se altamente ottimizzate) in cima alle API di livello inferiore (ad esempio DX o OpenGL per la grafica).

Ma è una buona idea avere esperienza nella creazione di un gioco molto semplice usando C o C ++ solo per far capire all'autore com'è lo sviluppo del gioco.
KyelJmD

4

Unity3D è davvero bello. Ecco alcuni punti che mi piacciono:

  • ti consente di creare giochi in modo indipendente dalla piattaforma, quindi crea automaticamente implementabili per Windows, Mac OS X, Android, IOS. Questo è vero per la versione corrente (3.x). Apparentemente la versione 4 ti permetterà di distribuire anche su Linux:

http://en.wikipedia.org/wiki/Unity_(game_engine)#Major_features

  • Anche se hai bisogno di una licenza a pagamento per utilizzarla effettivamente (commercialmente), puoi scaricare una versione gratuita in cui puoi utilizzare la maggior parte delle funzionalità (ad esempio non puoi, ad esempio, creare implementabili per le piattaforme mobili). Offre un ottimo modo per visualizzare l'anteprima della cosa prima di decidere di acquistarla o meno:

http://unity3d.com/unity/licenses

  • Funziona con la maggior parte dei software di modellazione 3d (preferisco 3d Studio Max, ma supporta anche altri):

http://unity3d.com/unity/editor/importing (scorrere un po 'verso il basso)

  • La codifica (scripting) può essere eseguita in C #, che è un bel linguaggio, con una buona API e controlli del tempo di compilazione. Viene fornito con un buon ambiente di sviluppo (IDE e tutto il resto). Se vuoi qualcosa di diverso, supporta anche Javascript.

  • Ha un ottimo supporto fisico (collisioni, gravità, forze, ecc.):

http://docs.unity3d.com/Documentation/Manual/Physics.html

  • Dispone di un negozio di asset che ti consente di acquistare vari modelli, script, animazioni ecc., E in base alle tue abilità (e al tuo portafoglio) puoi ottenerli / modificarli per ottenere rapidamente risorse decenti per il tuo gioco.

  • Ultimo ma non meno importante, è abbastanza veloce. Dai un'occhiata alle demo mobili, IMHO si muovono abbastanza bene e hanno una grafica molto decente:

http://unity3d.com/gallery/made-with-unity/game-list

Ecco un bel progetto Unity che sto attualmente aspettando:

Wasteland 2 di Brian Fargo

Hanno un bel post sul blog sul perché hanno scelto Unity , così come altri che parlano di come funziona .


3

ID Software è uno dei fornitori che di solito pubblica giochi all'avanguardia. Alcuni anni dopo rilasciano spesso quelli come open source. Su http://fabiensanglard.net/quake3/index.php puoi trovare un'analisi del codice sorgente di Quake3. Questa è una descrizione abbastanza dettagliata e anche se Quake3 è piuttosto vecchio nel frattempo i concetti dovrebbero essere ancora rilevanti per i giochi moderni.

E sì, se vuoi costruire un motore di gioco moderno, veloce e competitivo all'avanguardia, dovrai conoscere tutti quei pezzi di basso livello. Se non vuoi preoccupartene: ci sono diversi motori (motore di Quake3 o quelli di altre risposte) ma bene, allora non stai creando un nuovo gioco rivoluzionario ;-)


Dall'aspetto di quell'analisi, Quake 3 precede alcune tecniche "a basso livello" vitali dello sviluppo del gioco di oggi. Per cominciare, shader (forniti da OpenGL).

Quake 3 è stato rilasciato nel 1999. Sì, è molto tempo fa. Ma mostra come funzionano le persone che cercano di andare al limite di ciò che era possibile allora. La maggior parte degli altri motori disponibili punta più sulla riusabilità, sul codice "pulito", ecc. Anziché sulle massime prestazioni. (Questo non significa che altri motori siano lenti e lenti, ma penso che valga la pena guardarlo se vuoi conoscere l'architettura e l'implementazione del motore di gioco 3D)
johannes,

Un altro articolo correlato sulla matematica binaria di basso livello nei giochi 3D, usando Quake come esempio: blog.quenta.org/2012/09/0x5f3759df.html
johannes

1

Come molte risposte menzionano, i motori di gioco e le librerie svolgono un ruolo importante. Tuttavia, tieni presente che ciò si applica ai giochi commerciali medio-grandi più che ai piccoli giochi "indie".

Ad esempio, su piattaforme mobili la maggior parte dei giochi sono scritti usando solo un set di librerie relativamente primitive piuttosto che fare affidamento su motori di gioco completi e framework. Esistono, ma per la maggior parte si tratta di riutilizzare il proprio codice da progetti precedenti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.