Łatwe w użyciu wieloplatformowe silniki 3D do tworzenia gier w C ++? [Zamknięte]


73

Chcę spróbować swoich sił w pisaniu gry 3D. Nie chcę jednak zaczynać od tak niskiego poziomu rysowania poszczególnych trójkątów i pisania własnego modułu ładującego obiekty 3D i tak dalej. Słyszałem o takich rzeczach jak Irrlicht , Crystal Space 3D i Cafu , ale nie mam z nimi żadnego doświadczenia. Szukam sugestii od ludzi, którzy mają doświadczenie w pracy z tymi lub innymi silnikami, na których są dobrze napisane i łatwo zacząć z nich korzystać, bez konieczności uczenia się mnóstwa teorii matematyki 3D i tego, jak układy GPU działają wewnętrznie.


16
Chociaż mogło zostać zamknięte, to pytanie było dla mnie bardzo pomocne.
Caleb Jares

4
to samo, bardzo dobry wątek, nie wiem, dlaczego stackexchange nie lubi tego rodzaju pytań.
steveh

2
lubią zamykać pytania, jak sądzę
Frank Cranston,


Odpowiedzi:


48

Moja opinia (tylko dla silników 3D typu open source):

  • Irrlicht :
    • Lekki silnik 3D
    • Wyczyść C ++ bez zależności i bez STL.
    • Niezbyt dobrze udokumentowane, ale istnieją dobre samouczki.
    • Bardzo mały, więc możesz go łatwo dostosować.
    • Brak sterowników OpenGL 3.X, Direct X 10.X lub 11.X dostępnych w oficjalnym SDK.
    • Bardzo dobry do tworzenia aplikacji mobilnych;
    • Dobra społeczność
    • Dostępnych jest kilka rozszerzeń
  • Ogre3D :
    • Duży silnik 3D
    • Wykorzystuje nowoczesne C ++, takie jak STL, wyjątki i RTTI
    • Dobra dokumentacja (dostępne są książki).
    • Wiele rendererów (OpenGL, DirectX i OpenGL ES ...).
    • Ogre3D ma wiele rozszerzeń, takich jak integracja CEGUI lub Bullet, węzły drzewa ...
    • Ale trudniej jest rozszerzyć Ogre3D, jeśli chcesz czegoś konkretnego.
    • Duża społeczność
    • Wiele rozszerzeń
  • Kryształowa przestrzeń : stary design i trudny w użyciu. Po kilku dniach przestałem używać tego silnika.
  • Horde3D
    • Mały silnik
    • Nowoczesny design
    • Lekka społeczność
    • Brak rozszerzeń
  • Blendelf
    • Mały silnik z pewnymi zależnościami
    • Nowoczesny design z nowoczesnymi efektami, takimi jak DOF lub HDR ...
    • Tylko OpenGL
    • Lekka społeczność
    • Integracja pocisków dla fizyki
    • Używasz lua do pilotowania tego silnika 3D

TL; DR:

  • W przypadku gry komputerowej (lub przyszłej gry komercyjnej): Ogre3D
  • Do pierwszej gry: Irrlicht
  • Do tworzenia aplikacji mobilnych: irrlicht (Ogre3D jest za duży)
  • Dla seksownych efektów: Blendelf

Szczerze mówiąc, nie poleciłbym Irrlicht do tworzenia aplikacji mobilnych. Dokonuje zbyt wielu alokacji pamięci i oferuje niewiele niestandardowych implementacji alokacji pamięci. Czas uruchamiania ze względu na prawie 60 000 alokacji dokonanych podczas uruchamiania jest dużym problemem.
Simon

Używam Irrlichta na Androidzie i IOSie, a czas uruchamiania nie jest dużym problemem ... Ładowanie tekstów jest znacznie dłuższe niż przydzielanie ...
Ellis

@ Simon czy mógłbyś wyjaśnić, o czym mówisz, „niestandardowymi implementacjami alokacji pamięci”? Co to jest i dlaczego tego chcesz?
tymczasowego

2
@Aerovistae Przydział pamięci wymaga połączeń z systemem operacyjnym, jest to bardzo kosztowna operacja. Zwykle podczas tworzenia silnika gry chciałbyś samodzielnie zarządzać pamięcią, na przykład, że przydzielisz dużą część pamięci, a następnie sam rozdzielisz tę pamięć w programie. W ten sposób przesuwasz tylko wskaźniki i nie wywołujesz jądra za każdym razem, gdy potrzebujesz dodatkowej pamięci. Jest to dość zaawansowany temat i wymaga zaawansowanej arytmetyki wskaźnika, szczególnie jeśli potrzebujesz jakiegoś mechanizmu przeciw fragmentacji.
dreta

3
Więc kiedy Simon mówi, że nie poleciłby tego, ponieważ nie oferuje niestandardowych implementacji alokacji pamięci, tak naprawdę nie dotyczy to początkującego, a nawet większości pośrednich programistów?
tymczasowego

21

Oczywistą początkową sugestią jest Ogre3D .


Czy miałeś z tym jakieś doświadczenie? Czy jest dość stabilny, dobrze napisany i dobry dla początkujących w 3D? Mogę łatwo znaleźć w Google listę silników 3D (jak widać z mojego pytania), szukam więcej wglądu w to, co jest dobrym wyborem i dlaczego. Dzięki.
davr

1
Ale Ogre3D nie jest silnikiem. Jest to biblioteka renderowania 3d. Musisz albo wybrać silnik oparty na ogrze, albo zbudować własny.
Ogień

4
Mam duże doświadczenie z Ogre3d; Jest bardzo stabilny i dobrze napisany, i świetnie sobie radzi z przyziemnymi zadaniami (ubijanie scen, ładowanie siatki, billboardy / cząstki). Ogień jest poprawny, ponieważ nie jest silnikiem gry; ale Ogre można (i często jest) integrować z innymi bibliotekami, aby je stworzyć. To fantastyczny krok powyżej „rysowania pojedynczych trójkątów i pisania własnego modułu ładującego obiekty 3D”, ale to tylko biblioteka renderująca. Jeśli tego właśnie chcesz, to świetna biblioteka z aktywną i wspierającą społecznością.
Karantza

3
@Fire OGRE: Obiektowy silnik renderowania grafiki. To silnik. Ma singletony w każdym miejscu. Zdecydowanie silnik.
Ricket

3
@Ricket Tak, silnik graficzny , ale nie silnik gry, co najprawdopodobniej miał na myśli, ponieważ jest to mocno podkreślone w dokumentach ogrów. Również singleton (anty) wzór z pewnością nie ma nic wspólnego z tym, że jest silnikiem, czy nie.
Raoul,

7

Open Scene Graph to całkiem niezły, bardzo dobrze zaprojektowany wieloplatformowy silnik 3D. W przeciwieństwie do Ogre3D, na przykład, nie zapewnia funkcji „silnika gry” i koncentruje się na byciu bardzo ładną abstrakcją na OpenGL.

  • Jest dość lekki i nie narzuca ci frameworka: możesz z niego korzystać tak mało lub tyle, jak chcesz i używać go za pomocą SDL, SFML, wxWidgets, QT ...
  • To wspaniałe doświadczenie edukacyjne: podczas nauki biblioteki coraz lepiej rozumiesz podstawowy OpenGL i sposób, w jaki został zaprojektowany
  • Prawie gotowy do użycia: ma moduły ładujące dla popularnych formatów 3D
  • Przyjazny dla shaderów

Spójrz na obszerną listę próbek .


4

Pod względem silników gier:

  • Torque3D : Wiele funkcji, ale niektórzy uważają kod za trudny w obsłudze .
  • Silnik C4 : Niedrogie, doskonałe wsparcie dla autorów, ale narzędzia mogą wymagać trochę pracy.
  • Zrób to sam: wybierz zestaw bibliotek i sklej je ze swoją grą.

Ponieważ sugerowano Ogre3D, istnieje również lekka alternatywa Horde3D .

Plusy:

  • Projekt jest solidny i prawdopodobnie przewyższy Ogre3D w przypadku ciężkiego renderowania (jeśli jeszcze tego nie zrobił)
  • C API, dzięki czemu powiązania dla języków takich jak Python są proste i łatwe w utrzymaniu (kod wewnętrzny to C ++)

Cons:

  • Wymaga co najmniej obsługi OpenGL 2.0
  • Mniejsza społeczność
  • Niestabilna baza kodu (nadal zachodzą poważne zmiany architektoniczne)

2
Unikaj Torque 3D, jeśli cenisz swoje zdrowie psychiczne. Silnik skryptowy jest mętnym koszmarem, bardzo frustrującym w pracy.
Jared Updike,

4

Irrlicht zapewnia nieco więcej niż Ogre3D, a jednocześnie jest nieco bardziej praktyczny (np. Nie czuje się, jakbyś po prostu „uruchamiał silnik” i oglądał, jak działa, wydaje się, że jesteś jedno uruchamiające polecenia, jak powinno być moim zdaniem).

Myślę, że dobrze byłoby zacząć!


4

Wiem, że poprosiłeś o C ++, ale Panda3D działa również z C ++, nawet jeśli początkowo jest przeznaczony do pracy z pythonem. To silnik gry, ale cokolwiek ...


2

Oczywistym wyborem, jeśli Ogre3D jest dla ciebie za niski, byłby NeoAxis: http://www.neoaxisgroup.com/

Jest zasilany przez Ogre, ale jest kompletną platformą do tworzenia gier.

Jego celem jest .NET, więc możesz używać C #, zarządzanego C ++, VB.

Więc idź na to. :)

Ogre3D może działać na wielu urządzeniach mobilnych, takich jak iPhone i Android. Więc nie jest za duży.

Nie myl rozmiaru z wydajnością.

Nie jestem pewien, czy IrrLicht ma oficjalną obsługę iPhone'a, ale Ogre3D tak.


Jeśli jest w .NET, nie możesz dodać IronPython do listy języków? Python to wspaniały język skryptowy.
Jared Updike,

2
.NETTO? Czy to nie wyklucza współpracy między platformami?
davr

.Net nie, ale Neo-Axis używa C ++ / CLI, który robi.
jsimmons,

Dzisiaj rozmawiałem z głównym deweloperem Neoaxis, który ogłasza wsparcie dla Mac OS X we wrześniu. :)
jacmoe,


1

Jak dotąd dobre odpowiedzi, ale dodam Marmoladę . Radzi sobie całkiem dobrze na urządzeniach mobilnych. Kilka dużych wytwórni wydało z nią grę konsolową, więc ma poświadczenia. Na nim jest nawet edytor podobny do jedności, Shiva3D , który pozwala również na wiele platform.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.