Jaka jest różnica między biblioteką a silnikiem?

31

Pracuję nad biblioteką, aby pomóc w tworzeniu gier 2D ze Scalą. Jak dotąd jest to zbiór pomocnych klas, ładowanie plików, wykrywanie kolizji, obrazy, duszki itp.

Kiedy przestaje być biblioteką klas i zaczyna być motorem? Gdzie dokładnie leży różnica między użytecznym frameworkiem a silnikiem gry?

Lanbo
źródło
Powiedziałbym, że nie można dokonać rozróżnienia, ponieważ są to koncepcje na innym poziomie abstrakcji. „Duży” silnik jest nadal ramą.
André Paramés,
1
Jest mniej rozróżnienia między silnikiem gry a ramą, ale w tytule, między biblioteką a silnikiem, istnieje ogromne i jasno określone rozróżnienie. Ten link podsumowuje: gamefromscratch.com/post/2015/06/13/…
Serapth

Odpowiedzi:

21

Myślę, że zamieszanie, w które wpadają ludzie, polega na tym, że jedno składa się na ogół z drugiego, więc ludzie naprawdę chcą wiedzieć, kiedy masz wystarczająco dużo jednego, aby być uważanym za drugiego.

Kiedy przestaje być biblioteką klas i zaczyna być motorem?

Nigdy.

Gdzie dokładnie leży różnica w użytecznym frameworku i silniku gry?

Nie ma żadnego.

Teraz pozwól mi wyjaśnić odpowiedzi. Silnik gry składa się z bibliotek klas. Nie przestają być bibliotekami klas tylko dlatego, że znajdują się w silniku gry. Biblioteka jest użyteczną strukturą do zaspokojenia określonych potrzeb w obrębie silnika gry. Podstawą wymagającą pełnej gry jest silnik gry.

Oto kilka przykładów silników gier:

  • Unreal Engine
  • Silnik rzeczywistości
  • Silnik źródłowy
  • Silnik Quake
  • Silnik Unity

I kilka przykładów bibliotek

  • Novodex (fizyka)
  • FMOD (audio)
  • Havok (fizyka)
  • Ogre3D (renderowanie)
  • BINK (biblioteka wideo)
  • Direct3D (grafika)
  • OpenGL (grafika)
  • DirectSound (audio)
  • XInput (wejście)

Mam nadzieję że to pomoże

James
źródło
1
Co z różnicą między silnikiem renderującym a biblioteką graficzną? : p
Zaky niemiecki
1
@Zaky German - Ogre3D to „silnik” graficzny, podobnie jak FMOD to „silnik” audio. Oddzielne jednak nie są to silnik gry, nie obsługują na przykład danych wejściowych użytkownika, łączności sieciowej itp. Myślę, że w tym miejscu może pojawić się zamieszanie. W tej konotacji możesz wymieniać bibliotekę, moduł, komponent lub silnik. Nie są to jednak „gry silnika”. Biblioteka graficzna byłaby czymś podobnym do Direct3D lub cienkim API nad Direct3D, aby ułatwić, ale nie będzie bezpośrednio renderować. OpenGL i otaczające go opakowania również wpadałyby do obszaru biblioteki graficznej.
James
14

Naprawdę nie ma konkretnej definicji ani jednego (ani pokrewnego terminu „ramy”, jeśli o to chodzi). Istnieją setki różnych sposobów interpretacji różnych subtelnych różnic w pakietach oprogramowania i przypisywania im klasyfikacji.

Osobiście postrzegam „bibliotekę” jako rzecz, która zapewnia stosunkowo niewielki i ukierunkowany zestaw funkcji, podczas gdy „framework” zapewnia większą lub szerszą funkcjonalność, a „silnik” zapewnia to samo (lub więcej) i zazwyczaj ma zestaw powiązane z nim narzędzia.

Widziałem dość osobistej interpretacji tych samych terminów przez inne osoby, aby czuć się bezpiecznie, co sugeruje, że „silnik” zapewnia większą lub wyższą funkcjonalność niż zwykle „biblioteka” zazwyczaj… ale tam, gdzie wyznaczasz tę granicę dla własnego oprogramowania to zależy od Ciebie.

Josh
źródło
Istnieje konkretna różnica między frameworkiem a innymi bibliotekami; są one wymienione na stronie Wiki tego pierwszego. Krótko mówiąc, struktura kontroluje przepływ aplikacji i podłączasz do niej swój kod; w innych bibliotekach kontrolujesz przepływ i wywołujesz jego kod.
André Paramés,
1
Nie uważałbym tego za ostateczne; Wikipedia ma również stronę dla „silnika gry” i podobnie jak „biblioteka” i „framework”, terminy te są używane równie często w sposób zgodny z opisem na stronie wiki, jak w sposób, który w moim przypadku doświadczenie. Wciąż wszystko jest bardzo falowane ręcznie.
Josh
2

To trudne pytanie, ponieważ granica między biblioteką a silnikiem może być czasami bardzo cienka, rozmyta. Muszę powiedzieć, że momentem, w którym biblioteka zamienia się w silnik, jest moment, w którym dostosowuje się on do konkretnej gry lub określonego rodzaju gry.

Na przykład: silnik Unreal (lub Source lub Quake) został zaprojektowany do użytku w grach FPS (można go wykorzystać w innych grach, ale poświęcasz trochę czasu na działanie przeciwko silnikowi). Ogre3d (lub nawet Directx, SDL lub inne popularne biblioteki) można wykorzystać do tworzenia dowolnego rodzaju gier, bez konieczności wyrywania głównych części kodu lub obejścia ich.

thedaian
źródło