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

14

Ogni volta che pongo una domanda sullo sviluppo del gioco in un forum online ricevo sempre suggerimenti come l'apprendimento di algoritmi di disegno a linee, manipolazione di immagini a livello di bit e decompressione video ecc.

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

L'incredibile bellezza di questi giochi sfugge a qualsiasi metodologia di programmazione comprensibile (per me).

Oltre all'hardware di gioco è davvero un mostro ora giorni. Quindi è ovvio che gli sviluppatori lavorerebbero ad un livello più alto di astrazione.

Qual è l'ultima metodologia di sviluppo nel settore dei giochi? Com'è possibile che un team di 30-35 sviluppatori (di cui la maggior parte è la gestione e il marketing fluff) sia in grado di realizzare giochi così sconvolgenti?

Se la domanda sembra troppo generica potresti spiegare l'architettura di God of War 3? O come andresti a produrre un clone? Penso che dovrebbe essere obiettivamente rispondente.

    
posta Monika Michael 06.09.2012 - 18:42
fonte

6 risposte

12

Dichiarazione di non responsabilità: non sono non uno sviluppatore di videogiochi. Ma ho un interesse "hobbista" in esso.

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

Tutte le cose per rendere più semplice il tuo lavoro di creazione di software e astrarre il codice del lavandino della cucina. È necessario, ma scriverlo ogni volta è molto improduttivo.

Usando questi motori gli sviluppatori possono costruire il loro gioco e non doversi preoccupare di parte del codice sottostante. ( 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 killer e uno studio:

link

Ci sono molti diversi motori là fuori. Alcuni pagati, alcuni gratuiti, altri ancora in metallo, altri offrono un'astrazione più alta.

Ad esempio:

  • OGRE
  • Unreal Engine
  • Unità
  • sorgente
  • e molti altri ...
risposta data 06.09.2012 - 20:15
fonte
5

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

La mia esperienza è stata che la programmazione di giochi, specialmente per i giochi in tempo reale, è un'esperienza molto diversa da ... quasi tutti gli altri sviluppi software che ho fatto, a parte il lavoro GUI. È qualcosa che devi provare!

    
risposta data 06.09.2012 - 19:58
fonte
4

La risposta è "motori". Un sacco di giochi sono costruiti su diversi motori di grafica e gameplay 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 Fonte.

Ci sono altri fattori in gioco, come la maggior parte del codice è usa e getta e non passeremmo in riunione in un ambiente aziendale - ma questo perché la durata limitata di un gioco e i tempi di sviluppo accelerati significano che il codice è ( quasi) progettato solo per funzionare, non per essere mantenuto.

    
risposta data 06.09.2012 - 18:52
fonte
4

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

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

link

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

link

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

link (scorri un po ')

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

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

link

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

  • Ultimo ma non meno importante, è abbastanza veloce. Guarda le demo mobili, IMHO si muovono abbastanza bene e hanno una grafica molto decente:

link

Ecco un bel progetto Unity che sto attualmente aspettando:

Brian Fargo's Wasteland 2

Hanno un bel post sul blog perché hanno scelto Unity , così come altri discutendo su come lavorare con esso va avanti .

    
risposta data 06.09.2012 - 23:47
fonte
3

Il software ID è uno dei fornitori che di solito pubblica giochi di stato dell'arte. Alcuni anni dopo rilasciano spesso quelli come open source. Su link 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 moderno e veloce motore di gioco competitivo, dovrai conoscere tutti quei pezzi di basso livello. Se non vuoi preoccuparti di questi: ci sono diversi motori disponibili (motore di quake3 o quelli di altre risposte) disponibili ma bene, quindi non stai creando un nuovo gioco rivoluzionario; -)

    
risposta data 06.09.2012 - 20:33
fonte
1

Come molte risposte menzionano, i motori di gioco e le librerie giocano un ruolo importante. Tuttavia, si noti che questo si applica ai giochi commerciali mid-big più che ai piccoli giochi "indie".

Ad esempio, sulle piattaforme mobili la maggior parte dei giochi viene scritta utilizzando solo un insieme di librerie relativamente primitive invece di affidarsi a motori di gioco in piena regola. Esistono, ma per la maggior parte si tratta di riutilizzare il proprio codice da precedenti progetti.

    
risposta data 06.09.2012 - 21:10
fonte