Perché un motore come Unity3D è enfatizzato su una libreria nativa come OpenGL per i principianti? [chiuso]


25

Sono solo un principiante nei giochi 3D, la mia piattaforma preferita è Android. Ho pubblicato una domanda in qualche altro forum su "Cosa usare: OpenGL o Unity3d?" Tutti hanno enfatizzato Unity3D e l'utilizzo delle sue funzionalità e strumenti integrati, che dovrei codificarmi se dovessi usare OpenGL. Ma poi qualcuno dice che la maggior parte dei giochi complessi richiede motori personalizzati. Perché dovrei usare un motore come Unity3D su OpenGL?


15
Due parole: gratificazione istantanea. Puoi ottenere qualcosa di "utile" fatto con l'unità senza sapere molto, mentre avviare un'app OpenGL richiede parecchie righe di codice e comprensione di un'ampia gamma di concetti.
Jari Komppa,

5
Forse possiamo semplicemente spiegarlo in questo unico thread e tutte le domande su "quale tecnologia dovrei usare" scompaiono per sempre. anche io voglio un unicorno
jhocking

8
"la maggior parte dei giochi complessi richiede motori personalizzati" - in realtà, un numero sorprendentemente elevato di giochi AAA di grande successo sono costruiti su motori di serie come il motore Unreal .
Philipp

2
Inoltre, un principiante non sarà in grado di rendere un gioco abbastanza complesso da richiedere comunque un motore personalizzato.
Christian,

Questo è appena apparso su Gamasutra, e sebbene non sia direttamente una risposta a questa domanda, è rilevante: gamasutra.com/blogs/ChrisDeLeon/20140426/215519/… - in particolare, sarà molto difficile per un progetto da cui costruisci da zero con OpenGL per essere un primo progetto 'modesto'.
Steven Stadnicki,

Risposte:


30

Penso che tu abbia già risposto a questa domanda da solo. Hai detto "Sono solo un principiante nei giochi 3D" . Inoltre hai detto "... Unity3D e usando le sue funzionalità e strumenti integrati, che dovrei codificarmi se dovessi usare OpenGL" .

Fondamentalmente questo significa che se stai usando OpenGL da solo, stai per scrivere un motore di gioco, quindi, potenzialmente anni dopo, scrivere il tuo gioco. Se vuoi concentrarti su un gioco, utilizza le risorse disponibili per avvicinarti il ​​più possibile a tale obiettivo. L'utilizzo di un motore di gioco è il modo migliore per concentrare i tuoi sforzi sulla creazione di un gioco, anziché scrivere tutto ciò che è necessario per creare un gioco.

Vedi questa domanda correlata: Qual è la differenza tra una libreria e un motore e questa Qual è una struttura di gioco rispetto a un motore di gioco?


quindi OpenGL è solo per la grafica e unity3d è un framework completo che ha requisiti grafici e fisici per il mio gioco?
Aman Grover,

1
L'unità è molto più di questo, ma sì, questa è praticamente la differenza.
jhocking

3
@AmanGrover: renditi anche conto che con GL "solo per la grafica" è davvero "solo per inviare comandi alla GPU". Tutto il duro lavoro di grafica deve ancora essere fatto dal programmatore, mentre Unity ha tutte le caratteristiche grafiche e gli algoritmi importanti inclusi e pronti per l'uso.
Sean Middleditch,

2
Non scrivere motori, scrivere giochi. Questo è ciò che mi è stato detto di avvicinare. Cosa intendo dire che qualcuno crea un motore di gioco mentre stai creando il gioco vero e proprio. Quindi questo è il punto che non sono d'accordo con Byte.
LaVolpe,

28

Perché i principianti, per definizione, non sanno cosa stanno facendo .

OpenGL ha un'enorme curva di apprendimento. Certo, puoi emettere alcuni comandi glBegin, entusiasmarti nel mettere alcuni triangoli sullo schermo, quindi andare fino in fondo con qualcosa di più complesso che non sei ancora pronto ad affrontare. Non è un ottimo modo per imparare. Un'analogia (leggermente esagerata) potrebbe essere quella di apprendere un po 'di fisica di base al liceo per poi essere incaricata del Large Hadron Collider. Non è affondare o nuotare, è nuotare o lasciare un grande buco radioattivo nel terreno.

Si presume che molte persone chiedano "Voglio fare un gioco, cosa dovrei usare?" domanda in realtà vuole creare un gioco (altrimenti avrebbero sicuramente fatto una domanda diversa, sicuramente?) Quindi la risposta è su misura per la domanda e l'utilizzo di un toolkit, un framework o un motore preesistenti è un modo per aiutarli a raggiungere quell'ambizione senza lasciarsi distrarre dall'angoscia se si preferisce un UBO o glUniform per l'aggiornamento di una singola matrice.

Si tratta di fare un passo alla volta, semplificare il processo di apprendimento e darti qualcosa di gratificante alla fine. Cercare di imparare come creare un gioco e come utilizzare correttamente un'API 3D matura e potente allo stesso tempo è probabilmente troppo per un principiante. Questo è come l' effetto Dunning – Kruger meno le connotazioni negative. Non sai cosa non sai, quindi non hai davvero alcun tipo di immagine realistica di ciò che avresti intrapreso.

D'altra parte se il tuo obiettivo è imparare OpenGL, allora non vuoi davvero fare un gioco! Vuoi imparare OpenGL e farlo nel contesto della creazione di un gioco può essere un modo divertente di imparare, ma creare un gioco è un mezzo per un fine, non un fine in sé (e certamente non l'unico modo per imparare OpenGL ). Probabilmente non lo rilascerai mai, e quasi sicuramente ti guarderai indietro tra qualche anno e sarai terribilmente imbarazzato da alcune delle cose stupide che hai fatto.


22

Dipende davvero da cosa vuoi uscire da questo progetto. Se il tuo obiettivo principale è quello di concentrarti sulla progettazione del gioco, allora probabilmente stai meglio con un motore pre-costruito, perché questo ti porterà alla parte di gioco molto più veloce. Se il tuo obiettivo è quello di conoscere la parte di programmazione della creazione di giochi (soprattutto se stai cercando di prepararti per un lavoro nel settore), probabilmente scoprirai che lavorare con OpenGL sarà un'esperienza più preziosa. Tieni presente che nessuna delle affermazioni precedenti è vera al 100% delle volte.

Non c'è davvero alcuna regola quando si decide su questo genere di cose. La maggior parte delle risposte che senti in quel tipo di domanda sono opinioni e pochissime di queste saranno completamente pertinenti al tuo progetto e al tuo set di abilità.


Grazie e sì, sto cercando un lavoro in questo settore, e quindi andrò con OpenGL.
Aman Grover,

9
Sono fortemente in disaccordo sul fatto che lavorare con OpenGL 'nudo' sarà più prezioso per qualcuno che entra nel settore dei giochi. Unity fornisce un eccellente esempio di un motore di gioco moderno e relativamente maturo; comprendere la funzionalità che fornisce (con un occhio per apprendere come si potrebbe fornire una funzionalità simile da soli) è un modo eccellente per comprendere il processo di sviluppo del gioco stesso, mentre OpenGL è lungi dall'essere specifico del gioco in alcun senso significativo.
Steven Stadnicki,

Questo dimostra semplicemente come non ci siano regole su queste cose, solo opinioni. Tutto dipende da ciò di cui hai bisogno / desideri.
jhocking

5
@AmanGrover - quindi non fare un gioco! Avrai un momento più facile imparando una cosa alla volta. Crea un simulatore del sistema solare. Impara come disegnare primitivi di base, impara a tradurli e ruotarli, metti i pianeti in un VBO per disegnarli più velocemente, usa alcuni shader per creare nuvole animate su di loro e sei a una buona distanza per capire i fondamenti.
Maximus Minimus,

3
@KamikazeSoctsman Ancora una volta, non sono d'accordo. Non sto dicendo che OGL sia inutile - tutt'altro! - ma nell'ultimo decennio ho usato la mia conoscenza di OpenGL solo una manciata di volte in brevi periodi. Al contrario, poiché i motori di grafica dei giochi tendono ad essere così sensibili alle prestazioni, nella mia esperienza sono uno dei posti meno comuni per iniziare un nuovo programmatore. Dovresti conoscere la matematica 3d, assolutamente, e dovresti capire i principi del rendering - ma questa è una cosa molto diversa dall'apprendimento di OGL.
Steven Stadnicki,

6

La differenza è semplice Unity è una carrozza con quattro ruote rotonde che ti permettono di ottenere posti. OpenGL è la segatura che potresti creare un negozio e potenzialmente utilizzare per modellare un carrello e ruote migliori e più moderni. Cioè se investi molte ore del tuo tempo nell'apprendimento di ciò che le persone prima di aver fatto prima.

Il tuo obiettivo come principiante dovrebbe essere quello di studiare prima le carrozze esistenti e i loro progetti. Non ha senso buttare tutto fuori dalla finestra e ricominciare da zero. Per prima cosa impara cosa esiste già e acquisisci una conoscenza approfondita di ciò. Se non lo sai, come fai a conoscerne i limiti e se non conosci i limiti, come potresti superarli? Qual è il punto nel rendere qualcosa di mediocre che è inutile ed essere ignorante a tutti gli vibranti strumenti esistenti che sono già disponibili?

sono i passaggi di un gioco principiante sono:

  1. Padroneggia un framework / Engine moderno e acquisiscilo in profondità (Questo ti aiuterà anche a conoscere i diversi aspetti del design del gioco, della grafica e di OpenGL non sono tutto quello che c'è).
  2. Crea un piccolo gioco con esso e impara di più nel processo.
  3. Incontrare organicamente ostacoli e limitazioni nel motore.
  4. Ulteriori informazioni sull'argomento.
  5. Lavora per migliorare le aree che ritieni debbano essere migliorate.

Lavorare da soli per creare qualcosa che è già stato creato non ti renderà uno sviluppatore prezioso per nessuno perché non sarai produttivo in verità o un buon studente, ti limiterai a copiare pezzi di codice esistenti e forse imparerai a leggerli e capirli. Come dice il vecchio Pokemon, "Non è molto efficace ...".

La parte peggiore è che questo tipo di approccio non è facile da seguire perché non c'è gratificazione in esso, quindi stai correndo su una forza di volontà cruda che è stato scientificamente dimostrato di essere una risorsa limitata per gli esseri umani. Devi fare qualcosa che fornisca gratificazione quotidiana o la tua volontà probabilmente non sarà in grado di continuare.

Quindi, per riassumere, un motore è enfatizzato perché puoi fare le cose con un motore e hai molte più probabilità di riuscire in quel modo. Anche i grandi creatori di giochi si sono affidati al lavoro precedente di qualcun altro e tale è la natura del progresso. Devi capire il quadro generale e sapere come giocare con i pezzi Lego forniti da altri prima di creare i tuoi pezzi Lego personalizzati.


4

Supponendo che il tuo obiettivo sia quello di creare un gioco, l'uomo che ha parlato di motori personalizzati richiesti era sbagliato. Semmai, i giochi complessi richiedono un motore maturo che è stato progettato, implementato, ottimizzato, testato e mantenuto da professionisti che sono stati nel settore da molto tempo - o uno che può abbinare la loro qualità (almeno ai fini di un determinato gioco) , se possibile.

I grandi sviluppatori di giochi costruiscono motori interni, ma li riutilizzano ancora pesantemente per i loro giochi futuri. Ma tieni presente che i loro budget e le dimensioni del team e molti altri fattori sono molto diversi da quelli degli sviluppatori indipendenti: potrebbe avere molto più senso per gli affari costruire il proprio motore, anche se quelli esistenti non sono carenti tecnologicamente.

Certo, c'è ancora l'idea sbagliata, perché molte funzioni non esistono out-of-the-box nei motori esistenti, che non possono essere implementate in quel motore, ma di solito non sono accurate.

Tieni presente che alcuni dei giochi più innovativi e moderni, come Portal e Antichamber, sono stati realizzati utilizzando motori esistenti. Alcuni giochi online piuttosto complessi, come Aion e TERA, sono stati realizzati utilizzando motori esistenti. Alcuni dei giochi più belli dal punto di vista visivo, come Bioshock Infinite e Thief, sono stati realizzati utilizzando motori esistenti. E, naturalmente, alcuni non lo erano. Ma il punto è: nulla di ciò che io abbia mai visto ha richiesto un motore personalizzato.

D'altra parte, se il tuo obiettivo è imparare concetti di programmazione grafica, ovviamente OpenGL è la strada da percorrere. Ma anche allora, tieni presente che avere familiarità con alcuni motori esistenti ti aiuterà enormemente a capire cosa stai facendo e a cosa dovresti mirare.


1
-1. Affermazioni piuttosto importanti sull'industria dei giochi. Molti di loro sono inaccurati. Vorrei poter cospargere il tuo post con una dozzina di citation neededs
Panda Pajama,

1
@PandaPajama Nella mia risposta c'è praticamente solo un'affermazione sull'industria dei giochi. Se ti dà molto fastidio, puoi correggerlo o anche rimuoverlo del tutto.
TC

La mia (limitata) esperienza mi ha mostrato che se c'è qualcosa su cui non si può fare generalizzazioni è l'industria dei giochi. Ogni azienda ha un modo diverso di vedere le cose, anche i diversi team all'interno di un'azienda possono avere politiche molto diverse su tutto. In questo caso particolare, i motori interni generano costi e comportano alcuni vantaggi e svantaggi. È estremamente difficile calcolare se il risultato netto sia un risparmio o una spesa e varierà da un progetto all'altro. Inoltre, il budget, sebbene importante, non è l'unico elemento preso in considerazione quando si creano giochi.
Panda Pajama,

@PandaPajama Concesso, vedi la mia modifica. Ho semplicemente detto che potrebbe avere più senso per gli affari in generale, il che include il fattore di budget e qualsiasi altra cosa aiuti a modellare la loro decisione, sottolineando che potrebbe non essere affatto una limitazione tecnica dei motori esistenti.
TC
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.