Eigene Engine Programmieren?

5 Antworten

Also besser wäre es, bestehendes zu verwenden.

Aber wenn du es selber machen möchtest, dann fängt man am besten mit der Planung an.

Dabei kannst du dich an gängigen Szenen-Fileformaten orientieren. Das Format "glTF" ist denke ich brauchbar:

https://github.com/KhronosGroup/glTF?tab=readme-ov-file

Das hat zwar manche Sachen nicht, aber sieht mir besser aus als Collada (welches ich nicht empfehlen würde).

Soweit zum Grafik-Teil. Beim Audio-Teil kannst du es wohl ähnlich machen. Und für die weitere Komponenten schaust du, was du brauchst oder was sinnvoll ist oder ob es evtl. schon einen Standard dafür gibt.

Aber auf jeden Fall solltest du Schritt für Schritt vorgehen. Und ich würde mit der Grafik anfangen, denn sobald du etwas sehen kannst macht das einige Dinge einfacher.

Erwarte allerdings nicht zu viel für den Anfang. Das kann recht lange dauern bis du etwas brauchbares beisamen hast und kostet Zeit.
Diesbezüglich: Wenn du schnell Ergebnisse möchtest, würde ich zu OpenGL raten. Ansonsten wäre aber Vulkan geeigneter, da moderner und umfassender.

Da du Game-Engine in Zusammenhang mit Unity und Unreal genannt hast. Klären wir doch vorher kurz was eine Game-Engine ist und was du wirklich erreichen willst.

Unity und Unreal wird zwar im normalen Sprachgebrauch als Game-Engine bezeichnet, ist jedoch viel mehr ein komplettes Autorensystem. Eine klassische Game-Engine ist einfach ausgedrückt lediglich eine Ansammlung von Programmcode der als Schnittstelle zwischen Spielecode und Grafiktreiber dient. Bedeutet auch eine klassische Game-Engine übernimmt dir nicht das kompilieren deines Codes und bietet auch nicht die Möglichkeit dein Spiel bereits in einem grafischen Editor zu betrachen. Dies bietet im Gegensatz beispielsweise Unreal und Unity schon.

Ich nehme jetzt einfach mal an deine Frage geht eher in Richtung Grundlagen der Computergrafik. Beispielsweise: "Wie stelle ich digital einen Würfel da?"

Um solche Fragen beantworten zu können muss man sich zunächst Gedanken darüber machen wie man überhaupt mit der Grafikkarte kommunizieren kann. Hierfür gibt es verschiedene APIs, beispielsweise kann man in Unity unter anderem zwischen OpenGL und Vulkan als Grafik-API wählen. Eine solche API übersetzt dann deinen Code in einen für die Grafikkarte interpretierbare Sprache.

Meine Empfehlung wäre mit OpenGL zu starten, hierfür würde ich folgendes Tutorial verwenden: https://learnopengl.com/

Jedoch sollte meiner Meinung nach die Computergrafik nicht dein erster Kontakt mit genereller Programmierung sein und auch nicht dein erster Programmcode außerhalb von Unity/Unreal oder sehr simplen Einsteiger-Programmen.

Luisa830 
Fragesteller
 07.05.2024, 14:44

Nein das wäre nicht mein erster Kontakt mit dem Programmieren. Ich programmiere als Hobby sehr gerne. Manchmal mehr und manchmal weniger. Trotzdem danke für die Antwort, war sehr hilfreich :)

0

von null auf eben. alles baut in schichten auf, die Engines sind im prinzip vorgefertigte bibliotheken und tools. Unity läuft auf c# und Unreal auf C++. Nen layer drunter läuft asm und irgendwann bist du eben auf der Hardwareebene.

benjaminlinde  09.05.2024, 10:13

Danke das hat ihm bestimmt sehr weitergeholfen. echte eine SEHR hilfreiche Antwort

0

Hi, das ist ein riesiges Projekt, was Jahre gedauert hat. Und wie du schon vermutet hast arbeiten daran große Teams von erfahrenen Entwicklern.

Ohne erweiterte Kenntnisse in C#, Assembler und co. brauchst du da nichtmal anfangen.

Musst du aber auch nicht. Gerade dafür sind solche Engines da, damit du dir relativ einfach deine eigenen Games coden kannst. Ich würde dir empfehlen mit C# und C++ anzufangen.

Hier empfehle ich dir einen Kurs auf udemy.

Woher ich das weiß:Berufserfahrung – Backend Developer
Wie programmiert man am besten seine eigene Engine? Ich meine Unreal Engine 5 oder Unity ist ja auch nicht plötzlich einfach mal so da gewesen. Das muss ja jemand (bzw. mehrere) Programmiert haben.

Das ist so ein riesiges Ding, einfach weil eine Engine so extrem viel macht.

Für den Grafikausgang müsstest du dich mit OpenGL, DirectX, Vulcan usw. außeinandersetzen, mit denen du GPU-Programmierung machen kannst.

Alleine das ist ein eigenes Berufsfeld, und vor allem sehr Mathematiklastig (Viel Matrizenrechnung, Vektorgeometrie etc.)

Dann macht eine Engine ja auch noch Ton & Audioverarbeitung, also blöd gesagt, dass du am Ende mit mp3 Dateien oder ähnliches im Spiel Töne abspielen kannst, dazu müsstest du dich mit der WIndows API außeinandersetzen.

Darüber hinaus verarbeitet eine Engine ja noch Tastatur in & Outputs, auch dafür wäre eine Schnittstelle vom Betriebssystem entscheidend.

Und dann gibt es noch vieles mehr, von Geometrierenderungen, Schader, Scripting etc. Kurzum, sehr schwierig und dazu VIEL zu viel um es als Einzelperson zu machen.

Eine eigene Engine zu Programmieren kann ein cooles Projekt sein, allerdings sollte man das dann nie mit dem Hintergrund machen, dass die Engine am Ende auch benutzt wird.