Qual è la differenza tra una libreria e un motore?


31

Sto lavorando a una biblioteca per aiutare lo sviluppo di giochi 2D con Scala. Finora, è una raccolta di classi utili, caricamento di file, rilevamento di collisioni, immagini, sprite, ecc.

Quindi, quando smette di essere una libreria di classi e inizia a essere un motore? Dove sta esattamente la differenza tra un framework utile e un motore di gioco?


Direi che la distinzione non può essere fatta, perché sono concetti a un diverso livello di astrazione. Un "grande" motore è ancora un framework.
André Paramés,

1
C'è meno distinzione tra un motore di gioco e un framework, ma dal titolo, tra una libreria e un motore, esiste una distinzione enorme e chiaramente definita. Questo link lo riassume: gamefromscratch.com/post/2015/06/13/…
Serapth

Risposte:


21

Penso che la confusione che le persone entrano qui sia che l'uno è generalmente costituito dall'altro, quindi ciò che la gente vuole davvero sapere è quando ne hai abbastanza di uno per essere considerato l'altro.

Quindi, quando smette di essere una libreria di classi e inizia a essere un motore?

Mai.

Dove sta esattamente la differenza in un framework utile e un motore di gioco?

Non c'è nessuno.

Ora lasciami spiegare le risposte. Un motore di gioco è composto da librerie di classi. Non smettono di essere librerie di classi semplicemente perché si trovano all'interno di un motore di gioco. Una libreria è un framework utile per affrontare un'esigenza specifica all'interno di un motore di gioco. Un framework che comporta le esigenze di un gioco completo è un motore di gioco.

Ecco alcuni esempi di motori di gioco:

  • Unreal Engine
  • Reality Engine
  • Motore di origine
  • Quake Engine
  • Unity Engine

E alcuni esempi di biblioteche

  • Novodex (Fisica)
  • FMOD (Audio)
  • Havok (Fisica)
  • Ogre3D (Rendering)
  • BINK (Videoteca)
  • Direct3D (Grafica)
  • OpenGL (Grafica)
  • DirectSound (Audio)
  • XInput (input)

Spero che sia di aiuto


1
Che dire della differenza tra un motore di rendering e una libreria grafica? : p
Zaky tedesco,

1
@Zaky German - Ogre3D è un "motore" grafico come FMOD è un "motore" audio. Separati tuttavia non si tratta di un motore di gioco, ad esempio non gestiscono l'input dell'utente, la connettività di rete o simili. È qui che penso che parte della confusione possa entrare in gioco. In questa connotazione è possibile scambiare Libreria, Modulo, Componente o Motore. Tuttavia, questi non sono un "motore di gioco". Una libreria grafica sarebbe simile a Direct3D o un'API sottile a Direct3D per semplificare, ma non eseguirà direttamente il rendering. OpenGL e i wrapper attorno ad esso rientrerebbero anche nell'area della libreria grafica.
James,

14

In realtà non esiste una definizione concreta per entrambi i termini (o per il termine correlato "quadro", del resto). Esistono centinaia di modi diversi per interpretare le varie distinzioni sottili nei pacchetti software e assegnare loro le classificazioni.

Personalmente vedo una "libreria" come una cosa che fornisce un insieme relativamente piccolo e diretto di funzionalità, mentre un "framework" fornisce funzionalità più o più ampie e un "motore" fornisce la stessa (o più) e in genere ha una serie di strumenti associati che ne derivano.

Ho visto abbastanza interpretazioni personali di altre persone con gli stessi termini per sentirmi al sicuro suggerendo che un "motore" fornisce funzionalità più o di livello superiore rispetto a una "biblioteca" in genere ... ma dove si disegna quella linea per il proprio software sta a te.


C'è una differenza concreta tra un framework e altre librerie; questi sono elencati nella pagina Wiki del primo. Di conseguenza, il framework controlla il flusso dell'applicazione e vi inseriamo il codice; in altre librerie controlli il flusso e chiami il suo codice.
André Paramés,

1
Non lo considero definitivo; Wikipedia ha una pagina per "motore di gioco", e proprio come "biblioteca" e "quadro", quei termini sono usati altrettanto spesso in modi conformi alla descrizione sulla pagina wiki come in modi che non lo fanno, nel mio Esperienza. È ancora tutto molto ondulato a mano.
Josh,

2

Questa è una domanda delicata, dal momento che il confine tra libreria e motore a volte può essere molto sottile e sfocato. Devo dire che il punto in cui una libreria si trasforma in un motore è quando si orienta verso un gioco specifico o un tipo specifico di gioco.

Ad esempio: il motore Unreal (o Source o Quake) è progettato per essere utilizzato per i giochi FPS (potrebbe essere tranquillamente utilizzato per altri giochi, ma passeresti un po 'di tempo a lavorare contro il motore). Ogre3d (o anche Directx, SDL o altre librerie comuni) può essere utilizzato per creare qualsiasi tipo di gioco, senza dover estrarre parti importanti del codice o aggirarle.

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.