ubuntuusers.de

3D OpenGL Engine auf ansi C

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

new1

Avatar von new1

Anmeldungsdatum:
23. Januar 2009

Beiträge: 117

Hallo alle zusammen

Ich habe eine weile nach einer 3D OpenGL Engine gesucht die mit ansi C geschrieben wurde aber leider nichts gefunden.

Es existieren hunderte die auf C++ geschrieben wurden und auch auf C# aber ich habe keines auf ansi C. Ich bitte euch mir zu helfen eine zu finden.

Ich suche nach einer OpenGl 3D Engine die auf ansi C geschrieben wurde wenn möglich auch noch Open Source.

Mir sind vorteile C++, Java und auch andere Objekt orientierten Programmiersprachen bewusst dennoch möchte eine auf ansi C.

Danke für die mühe und ich hoffe es klappt.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Öh... da wäre ja schon mal die Quake1 und Quake2 Engine - bekannter geht's kaum. Wo in aller Welt hast Du gesucht? Unter Deinem Bett?

TraumFlug

Avatar von TraumFlug

Anmeldungsdatum:
16. Juli 2009

Beiträge: 999

Wohnort: zwischen den ohren

Huh, c++ hat sich in dem Bereich ziemlich durchgesetzt, da es den objektorientierten Ansatz massiv erleichtert, der grade bei 3d Engines den Aufbau und die Nutzung vereinfachen kann.

Vielleicht kann man ein foss Spiel mit einer guten Engine finden, dass in reinem C gehalten ist. Aber dazu müsste man wissen, was für eine Engine du überhaupt willst? Da gibt's grosse Unterschiede im Funktionsumfang, und grade bei fertigen Spielen (erstrecht wenn reines C genutzt wird) ist so eine Engine oft sehr an die Bedürfnisse des Spiels angepasst. Was für eine Funktionalität suchst du denn genau?

Ansonsten bei den bekannteren Engines fallen mir erstmal auch nur die idtech/quake Engines ein, die in C gehalten sind. Ist eher eine Ausnahme, wie gesagt C++ vereinfacht das Arbeiten mit solchen Engines einfach zu sehr, als dass Leute für den Opensource Bereich den Aufwand eingehen würde, sowas in C zu machen...

TraumFlug

Avatar von TraumFlug

Anmeldungsdatum:
16. Juli 2009

Beiträge: 999

Wohnort: zwischen den ohren

Zusatz: ein kleines Spielchen, dass OpenGL 3d nutzt und offensichtlich in C gehalten ist, ist Neverball. Hat wahrscheinlich keine sehr fortschrittliche Engine, aber naja...falls du erstmal was einfaches suchen solltest...

new1

(Themenstarter)
Avatar von new1

Anmeldungsdatum:
23. Januar 2009

Beiträge: 117

Lysander schrieb:

Öh... da wäre ja schon mal die Quake1 und Quake2 Engine - bekannter geht's kaum. Wo in aller Welt hast Du gesucht? Unter Deinem Bett?

Hast recht nicht lange. Lieg daran das ich nicht fiel zeit habe um in die 3D Engine Geschichte einzusteigen. Ich möchte auch nicht das du dich gezwungen füllst mir zu helfen aber trotzdem danke hätte ich wirklich selber darauf kommen können.

@ TraumFlug Ich suche was für ein RPG. Ins besondere möchte ich ein versuch in Richtung Silver starten.

https://www.youtube.com/watch?v=VBmCmfNFwXk ein kleines video was vielleicht hilft es zu verstehen.

Danke für die Verdeutlichung das ich C++ nehmen sollte. Ich möchte trotzdem mit C das machen weil die zeit und kraft was ich in das lernen stecke kann ich genau so gut in das Programmieren stecken. Die Entscheidung ist nicht endgültig hängt von euren Argumenten und der Engine ab.

Ich bin froh das jemand mir geantwortet hat. Freu mich auf weitere Entdeckungen und Danke an alle die mir dabei helfen.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

new1 schrieb:

Lysander schrieb:

Öh... da wäre ja schon mal die Quake1 und Quake2 Engine - bekannter geht's kaum. Wo in aller Welt hast Du gesucht? Unter Deinem Bett?

Hast recht nicht lange. Lieg daran das ich nicht fiel zeit habe um in die 3D Engine Geschichte einzusteigen.

Quake 3 ist übrigens auch in C geschrieben - wenn schon C, dann würde ich wohl auf diese (alte, aber bewährte) Engine setzen.

Ich möchte auch nicht das du dich gezwungen füllst mir zu helfen aber trotzdem danke hätte ich wirklich selber darauf kommen können.

Tue ich ja nicht - aber bei so einem Projekt und so einer Frage ist es imho schon mal ok, ein wenig zu "necken" 😉

Danke für die Verdeutlichung das ich C++ nehmen sollte. Ich möchte trotzdem mit C das machen weil die zeit und kraft was ich in das lernen stecke kann ich genau so gut in das Programmieren stecken. Die Entscheidung ist nicht endgültig hängt von euren Argumenten und der Engine ab.

Kannst Du das noch einmal in richtigem Deutsch und verständlich ausdrücken? Ich habe das nicht verstanden...

dirkolus

Anmeldungsdatum:
17. Mai 2011

Beiträge: 2178

Wohnort: dahoam

new1 schrieb:

Danke für die Verdeutlichung das ich C++ nehmen sollte. Ich möchte trotzdem mit C das machen weil die zeit und kraft was ich in das lernen [von C++] stecke kann ich genau so gut in das Programmieren [des Spiels] stecken. Die Entscheidung ist nicht endgültig hängt von euren Argumenten und der Engine ab.

Na dann ...

Mein Chef hatte mal einen schönen Vergleich genannt: "Ich bin Holzfäller und werde nach gefällten Bäumen bezahlt. Ich hab keine Zeit, die Kette meiner Kettensäge zu schärfen, weil ich ja Bäume fällen muss!" Dass das Bäumefällen mit der schärferen Kette schneller und einfacher geht, darauf muss man erst mal kommen.

Dass es kaum moderne 3D-Engines im nicht (unbedingt) objektorienterten C gibt, sollte einem zu Denken geben. Insbesondere, wenn es darum geht, 3D-Objekte darzustellen. Merkste was?

Abgesehen davon: Eine Grafik-Engine ist eigentlich kein nebenbei-Projekt.

Dirk

new1

(Themenstarter)
Avatar von new1

Anmeldungsdatum:
23. Januar 2009

Beiträge: 117

@dirkolus : Eine Abstrakte und gut verständliche Antwort. Als Vollzeit-Projekt kann ich es nicht machen.

Lysander schrieb:

Danke für die Verdeutlichung das ich C++ nehmen sollte. Ich möchte trotzdem mit C das machen weil die zeit und kraft was ich in das lernen stecke kann ich genau so gut in das Programmieren stecken. Die Entscheidung ist nicht endgültig hängt von euren Argumenten und der Engine ab.

Kannst Du das noch einmal in richtigem Deutsch und verständlich ausdrücken? Ich habe das nicht verstanden...

Ich war unsicher ob ich C oder C++ verwenden sollte. Weil ich gut mit ansi C vertraut bin und C++ nur ein Name.

TraumFlug

Avatar von TraumFlug

Anmeldungsdatum:
16. Juli 2009

Beiträge: 999

Wohnort: zwischen den ohren

Ich würde 'nen "crash-course" für c++ machen, und dann entscheiden. Wenn du C gut beherrscht, hält sich das im Rahmen, je nachdem wie tief du einsteigen willst. Solange du das Projekt nicht Codeseitig verkaufen, veröffentlichen, oder mit anderen arbeiten willst, kannst du auch C++ und C munter mischen, C++ ist quasi abwärtskompatibel. Du musst eigentlich nur aufpassen, dass du new/delete nicht bei'm gleichen Speicherobjekt mit malloc/free mischen kannst, und die Symbolnamen in den Binaries einen Präfix haben, wenn du mit g++ kompilierst. C++ hat neben der zusätzlichen Syntaxfunktionalität auch den Vorteil der STL, mit vielen Standarddatencontainern und dergleichen, die oft Praktisch sind.

Welche Engine du nimmst, hängt natürlich davon ab, was du erzeugen und wie du arbeiten willst. Eine Engine aus einem Spiel zu sägen, wenn sie stark mit dem Spiel verwoben ist, kann mehr Ärger machen als dass man Zeit spart. Manche "Engines" sind quasi nur konfigurierbare Grafikrenderer, andere bieten gleich Szenenmanagement, Physik und Skriptfunktionalität (für dein RPG werden Skripte wohl unabdingbar sein), manche sind nur ein Grundgerüst, auf anderen lässt sich mit vergleichsweise wenig Arbeit schon mal "schnell" ein komplettes Spiel aufsetzen. Manche Engines sind auch auf bestimmte Arten von Spiel ausgelegt (Shooter in Innenräumen, Echtzeitstrategie, ...) und machen bei stark abweichenden Konzepten dann vielleicht nicht soviel Sinn.

Mit den idtech Engines, nur weil sie als welche der wenigen in C funktionieren, wirst du vielleicht nicht so froh - die sind auf FPS-"Labyrinthshooter"-Games getrimmt, das läuft nicht immer gut, wenn man was komplett anderes damit machen will. Gegenbeispiel wäre jetzt UFO: Alien Invasion, dass rundenbasierte Gefechtstaktikhandlung mit der idtech 2 macht, wobei die wohl stark angepasst wurde.

Dein Wunschbeispiel mit "Silver" ist natürlich schon eine Vorgabe, aber bevor du dich in's Gefecht stürtzt würde ich genau überlegen, was und wie du da im Endeffekt haben willst. Silver etwa benutzt vorgerenderte Szenen mit feststehender Kameraperspektive und animierten Objekten, die darin integriert sind. Ist ja auch über 10 Jahre alt, damals konnte man so komplexe Szenen nicht in Echtzeit auf jeder Zielhardware machen, für die Charaktere hat's aber gereicht. Wenn du einen ähnlichen Weg gehen wolltest, müsstest du quasi eine Engine selbst erstellen, oder eine vorhandene stark anpassen um einen ähnlichen Leistungsvorteil zu erzielen, weil's heutzutage ein unübliches Konzept ist. Ich vermute es existiert dann ein schlichtes unsichtbares 3d-Modell für betretbare Flächen, Pfade für KI und aktivierbare Objekte, vielleicht noch Alternativen im vorgerenderten (Sachen wie Türen, kleine animierte Objekte), oder Spezialpuffer um Lichteffekte auf die Szene zu integrieren. Ich würde angesichts der >10 Jahre Entwicklung der Grafikhardware aber eher danach gehen, die Szenen in Echtzeit zu rendern - wenn man die Kamera bewegen kann, selbst wenn die Bewegungen klein sind, kann man viel Athmosphäre gewinnen; wobei der Statische Ansatz schon noch seine Stärken hat, komplexizität der Details open end, womöglich noch mit raytracing statt rasterizer visualisiert...

new1

(Themenstarter)
Avatar von new1

Anmeldungsdatum:
23. Januar 2009

Beiträge: 117

TraumFlug : Ich verstehe das ich um C++ nicht komme.

Ein RPG soll sein mit vollständig drehbarer Kamera (360°) Second-Person-View am Charakter fixiert. Was mir an "Silver" gefehlt ist die Steuerung, das aufgeräumtes Interface und Kampfsystem.

Gibt es was in der Richtung?

Danke für die zahlreiche Hilfe @ all

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Also wenn Du wirklich *gut* mit C vertraut bist, so würde ich das dann auch in C angehen. C++ ist mithin eine deutlich andere Sprache als C - auch wenn es immer noch viele Menschen und sogar selbst ernannte Profis gibt, die gegenteiliges behaupten.

Generell sollte man wie immer *die* entscheidene Frage stellen: Willst Du ein Spiel entwicklen oder ist der Weg das Ziel und Du willst viele Einblicke in die zu grunde liegenden Technologien erhaschen? Für ersteres ist es imho immer besser, sich ein möglichst Rund-um-Sorglos-Paket zu schnappen, bei letzerem wirst Du mit einer "simplen" Engine Jahre lang vor Dich hin frickeln, bis das Projekt für Dich an Reiz verloren hat.

Wenn Du ersteres willst, empfehle ich Dir Warcraft3. Damit kann man prima "modden" und hat einen mächtigen Editor inkl. Scriptsprache bereits eingebaut. Damit kannst Du Dich erst einmal um die wesentlichen Komponenten kümmern und hast sofort etwas "lauffähiges".

Für letzteres würde ich in der Tat erst einmal verschiedene Technologien angucken und mit allen ein wenig "herumprobieren". Damit schaffst Du Dir - neben Lektüre und Rechercher im Netz - einen Überblick über 3D-Technologien und die Fallstricke und Schwierigkeiten.

TraumFlug

Avatar von TraumFlug

Anmeldungsdatum:
16. Juli 2009

Beiträge: 999

Wohnort: zwischen den ohren

Das C++ als "eigenständige Sprache" anders programmiert wird, stimmt natürlich. Durch die erweiterten Möglichkeiten und die anderen Bibliotheken sieht's mitunter drastisch anders aus. Ich finde trotzdem, dass der C Kern deutlich vorhanden ist, es sich immer mal auf tiefer Ebene anbietet, mit "alten Methoden" zu arbeiten, und dass für C Kenner es im Zweifel nützlich ist, zu verstehen was genau C++ mit bestimmten Sachen macht, und wie das gleiche in C aussehen würde - um es besser zu verstehen. Aber ich bin auch kein Profi.

Gibt es die Engine für Warcraft 3 etwa opensource? Wenn nicht, würde ich die auch nicht "empfehlen"...

Ausserdem sind RTS Engines eher für 2d-Artiges Terrain/Kartenmaterial konzipiert, auch wenn 3d gerendert wird. Da fängt es schon an: man sollte bevor man loslegt ein gutes Konzept haben, wie die Technik umgesetzt werden soll, und was für genaue Anforderungen bestehen. Ist man nur in Dungeons unterwegs, könnte durchaus eine Quake-ähnliche Engine funktionieren, die 3rd person Perspektive ist ja nur eine Frage der Kameraposition, und die Steuerung muss man anpassen. In einer Elderscrolls ähnlichen (grossen, offenen) Welt gäbe es wieder andere Anforderungen. Die "künstliche Intelligenz" und die scriptfähigkeit ist noch so ein Punkt - ich halte das mit für das schwierigste an 3d Spielen. Du solltest überlegen, wie automatisch gesteuerte Wesen sich verhalten sollten, und wie solches Verhalten mit der betreffenden Engine umsetzbar ist. Das Kampfsystem spielt dabei auch eine Rolle, also echtzeit oder rundenbasierend, und ob Zusatzcharaktere eine Rolle spielen sollen, und wie sie "gesteuert" werden.

Ausserdem sind "Engines" wie Irrlich oder Ogre mMn eher als "Toolkits" zu verstehen, auf denen man dann eine Engine aufbauen muss. Ohne genau zu verstehen, wie 3d-Grafik und -Logik funktioniert wird das nichts. Dafür kann man sein Konstrukt massiv anpassen, und ein Spiel erzeugen was nicht quasi genauso funktioniert wie die Engine vorgibt. Leider kann ich dir nichts raten, Spiele in Richtung der neueren Final Fantasy etwa kenne ich aus dem Opensource Bereich nicht. Weil's nicht grade puppenleicht ist, was gutes zu machen, ist wohl auch der Grund, warum es nicht so sehr viele wirklich gute Opensource Spiele gibt, und die die's gibt eher in Richtung neues Spiel auf vorhandener Engine gehen.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

TraumFlug schrieb:

Gibt es die Engine für Warcraft 3 etwa opensource? Wenn nicht, würde ich die auch nicht "empfehlen"...

Wieso?

Ausserdem sind RTS Engines eher für 2d-Artiges Terrain/Kartenmaterial konzipiert, auch wenn 3d gerendert wird.

Das tolle an "echtem" 3D ist doch gerade, dass man damit *alles* machen kann. Die Neuauflage von "Giana Sisters" (Twisted Dreams) setzt ja auch auf 3D - auch wenn es nur ein Side-Scroller ist. Falls Du WC3 nie gespielt haben solltest: Die Cut-Scenes sind *in* der Engine gemacht; dabei kommen Kamerafahrten usw. vor. Dies kannst Du auch alles komfortabel über einen Editor erstellen. Natürlich gewinnt die Grafik keinen Preis und viele Dinge mögen auch besser gehen, aber WC3 bietet einem nun einmal alles an Tooling, was es für den reinen Spielbetrieb braucht. Grafiken, Texturen, 3D-Modelle und Sounds musst Du eben extern entwicklen - aber alles andere geht out-of-the-box.

Mir fällt grad noch "Never Winter Nights" ein; auch schon eher "älter", aber a priori fürs Modding ausgelegt - und im Ursprung bereits ein 3D-RPG. Damit kann man vermutlich noch viel mehr anstellen, als mit WC3.

Die "künstliche Intelligenz" und die scriptfähigkeit ist noch so ein Punkt - ich halte das mit für das schwierigste an 3d Spielen.

Und genau deswegen schlage ich ja erprobte Systeme vor. Natürlich beschränken diese Dich in vielen Freiheiten, aber das ist bei Frameworks immer so: Je mehr man geschenkt bekommt, desto weniger Freiheiten hast Du bei vielen Dingen. Der Clou ist aber ja gerade, dass Du diese eher selten wirklich brauchst und im Rahmen des Rahmenwerks für vieles elegante Lösungen finden kannst. Im Gegenzug bekommst Du etwas, was Dir so viel abnimmt und Dich bei eigentlichen Designen schnell zum Ziel führt!

Deswegen war ja meine Frage, ob der OP ein Spiel machen will (Ziel- und Inhaltsfixiert) oder sich in Sachen Technik austoben will. Letzteres wird vermutlich niemals etwas spielbares hervorbringen... daher würde ich bei der Präferenz des ersten immer auf ein Full-Stack-Framework setzen.

Kennt jemand noch Rastullahs Lockenpracht? Das ist ein (irgend wie trauriges) Beispiel dafür, wie ein Projekt verläuft, wenn man sich zu viel vornimmt. Als Mod für Half Life gestartet, sollte es dann zum DSA-RPG Baukasten-System a la "Never Winter Nights" werden. Dafür wurde zwar auf die Ogre-3D-Engine zurückgegriffen, aber das reicht ja eben nicht. Hinzu kommen noch unzählige Sachen, wie Du sie ja bereits genannt hattest. Für die Beteiligten war es sicherlich ein Spaß, sich mit diesen technologischen Dingen zu befassen; für mich ist / war es traurig, dass nie etwas spielbares bzw. nutzbares herausgekommen ist. Im Endeffekt wäre das nämlich so ein OS-Paket geworden, welches Du eher "empfehlen" würdest 😉

new1

(Themenstarter)
Avatar von new1

Anmeldungsdatum:
23. Januar 2009

Beiträge: 117

Interessante Temen habt ihr da angesprochen.

WC3 Habe ich hinter mir und es war unzufrieden stellenden. Je detaillierter das Model ist desto mehr Probleme du hast. Alle neu Entwicklungen kann die KI nicht Händeln. Ich habe ein Projekt mit einem meiner besten freunde gestartet und es scheiterte an den grenzen des Konzeptes.

Ich möchte was lauffähiges machen und auch was auch unter Linux Nativ nutzen kann. Dass soll auch kein Höllen Kriecherei Spiel werde das ist zu langweilig. Die KI muss warten ich habe an PvP gedacht damit man auch Spaß haben kann.

Was ich jetzt weiß das C++ wichtig ist wenn ich möchte das mit jemand hilft und das Game Zukunft haben soll. Es muss nun eine Engine ran. Wichtig wäre mir Open Source und OpenGL.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

new1 schrieb:

Je detaillierter das Model ist desto mehr Probleme du hast.

Was für ein Modell meinst Du?

Alle neu Entwicklungen kann die KI nicht Händeln. ... Die KI muss warten ich habe an PvP gedacht damit man auch Spaß haben kann.

Hu? Das widerspricht sich irgend wie!?

Was ich jetzt weiß das C++ wichtig ist wenn ich möchte das mit jemand hilft und das Game Zukunft haben soll.

Wieso das? Wenn ich die Wahl hätte, würde ich *nie* freiwillig auf C++ setzen! Es gibt durchaus Engines in Java und vor allem Wrapper in allen möglichen Sprachen, die ein weit besseres Abstraktionsniveau und Ausdcrucksstärke haben als C++ (oder Java).

Es muss nun eine Engine ran. Wichtig wäre mir Open Source und OpenGL.

Dann recherchier das eben mal! Ich denke nicht, dass hier viele Leute unterwegs sind, die da wirklich tiefgreifende Erfahrungen haben. Insofern musst Du Dir da eben selber die Engines angucken.

Ich habe ein Projekt mit einem meiner besten freunde gestartet und es scheiterte an den grenzen des Konzeptes.

Wie ich oben schon anmerkte: Wenn Du wirklich ein Spiel designen willst, ist Dein Ansatz der falsche! Ich habe schon mit gefühlten Tausend Usern wie Dir in diversen Foren Kontakt gehabt... ich habe von *keinem* etwas spielbares gesehen. Was spricht denn gegen "Never Winter Nights"? Das ist doch deutlich mehr auf erzählerisches RPG ausgelegt - wobei bei PvP eher WC3 passte...

Wenn Du mit Sachen a la Ogre, Irrlicht, usw. anfängst, wirst Du auf lange Sicht *nichts* spielbares hinbekommen! Dessen sei Dir bewusst.

Antworten |