Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Hallo Leute =)
Ich möchte euch heute mal mein Projekt vorstellen an dem ich schon seit sicher 5 Monaten rumfeile. Eine komplette Game-Engine, oder besser ein komplettes game studio. Mein Ziel hier ist es besonders den Leuten die wenig von Programmieren verstehen eine Möglichkeit zu bieten sich auszuspinnen und mit einfachsten Methoden ihre 3D games zu basteln. In den 5 Monaten die ich in dieses Projekt investiert habe ist einiges zusammengekommen. Das Programm ist so derartig vielseitig das ich gar nicht alles aufzählen kann.
Man kann 3D Objekte erstellen, alle vertices/Flächen/und auch komplete Objekte verschieben, skaliren, rotieren, extrudieren, mit einem eigenen texture-editor texturieren und in Szene setzen. Hinzu kommen Lichtquellen, ein eigenes KeyFrame-System um Animationen jeglicher Vorstellung zu realisieren, ein parenting-system, Sounds mit OpenAL, und das schärfste von allen: Eine eigene voll-simple skript-Sprache mit compiler um das Spiel zum Leben zu erwecken.
Man kann sein Spiel jederzeit wie in einem Programmierstudio testen (grünen Pfeil oben drücken und los gehts), in dem Fall von Delphi (mit dem die engine auch programmiert ist) abgeschaut.
Natürlich kann man seine Projekte auch speichern, laden, einzelne Objekte exportieren/importieren und auch Objekte von anderen 3D-Programmen wie Blender imporiteren. (wie in den screenshots ersichtlich).
Um mal zu zeigen was in der engine alles möglich ist hab ich eine kleine Tech-Demo zusammengestellt, ein kleiner shooter der zeigt was hier alles möglich ist.(ich hoffe der screenshot ist nicht zu groß^^).
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Ich werde mich heute mal um ein Tutorial für die Benützung bemühen und auch vielleicht ein paar Tutorial-Videos fabrizieren, mal sehen^^ Weil so im leeren Format kennt sich ja keiner mit der engine aus.
Für alle die mit Blender arbeiten können, haben hier schon einen Vorteil, die Tastenbelegung ist großteils davon abgeschaut =)
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Hallo, nach fast 2 Monaten voller Probleme im Privatleben hab ich endlich mal wieder Zeit gehabt mich meiner engine zu widmen. Mein Plan derzeit: Ein Multiplayer-Shooter. Meine engine dazu ist gottseidank schon netzwerkfähig, jetzt geht es nur noch im den Inhalt und die Spieltechnik. Ich habe vor, mal was ganz neues zu versuchen, ein Theme das es noch nie in einem Shooter gegeben hat:
Eine Gruppe von Ureinwohnern mit Kriegsmasken und ausgestattet mit dreiläufigen Bambus-Gatlings jagen sich auf dem Mond durch Höhlen und im Freigelände.^^
Die letzten Tage hab ich mit Skizzen und Modellieren, Animieren und umprogrammieren meiner engine verbracht, und...hier mal die ersten Ergebnisse meines Werks. Ihr seid natürlich alle bei der Jungfernrunde zum Mitzocken aufs herzlichste eingeladen.
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Liebe Leute, es gibt für euch was zum zocken, Ich möchte euch meine Multiplayer-Demo nicht vorenthalten.
Sollten beim Start des Spiels Probleme auftreten, das kann an den Netzwerktreibern liegen, ein Restart im Administrator-Modus behebt die meisten Probleme. Es sollte aber eigentlich alles auch so funktionieren. Die Demo funktioniert sowohl im Multiplayer-Modus als auch alleine. Einfach auf "Host" drücken, warten bis sich ein Zweitspieler verbindet oder alleine losstarten. Viel Spaß beim ausprobieren. Steuerng wie gehabt bei Ego-Shooter: W,A,S,D + Maus und E zum Nachladen, TAB für die Spielstatistik.
Einfach mal ausprobieren, ich freue mich auf Feedback jeglicher Art.
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
In so einem GameEngine-Tool kommen viel zu viele Buttons, Checkboxen, ect zusammen. Mit der Zeit geht das echt in die Performance und man kann nicht mehr damit arbeiten. Bzw wollen diverse Freunde von mir die engine mal gern in Linux sehen, also...weg von Windows und seiner VLC und selbst-ist-der-Mann-Menüs gemacht. Ich hab dafür gleich eine eigene Interface-Klasse kreiert die sämtliche Menüobjekte wie Buttons,ect zur Verfügung stellt und mit OpenGL rendert. Als optische Vorlage dient hier das Programm Autodesk Maya. Sieht gleich alles viel professioneller aus und es lässt sich auch besser damit arbeiten
schönen Sommer, ida
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Zuletzt geändert von Ida am Mo Sep 05, 2011 19:32, insgesamt 1-mal geändert.
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Ihr seid herzlich eingeladen einmal die neue Version meiner engine zu probieren. Hier und da können noch vereinzelt Fehler auftreten aber im Gesamten sollte es funktionieren. Sobald ich eine (meiner Meinung nach) fertige Version hab werd ich mal eine ausführliche Anleitung mit Übungen ect rausbringen und dazu Testspiele die ihr in die engine laden könnt. Man lernt a besten wenn man sich ansieht wie fertige Projekte gemacht wurden^^
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Zuletzt geändert von Ida am Do Sep 08, 2011 21:17, insgesamt 1-mal geändert.
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Update: Die Engine läuft jetzt stabil, alle Funktionen sind benutzbar und ich hab eine Liste mit Tastenkürzel beigelegt. Mit dabei auch wieder mal ein kleines Testspielchen um die neuen Funktionen (besonders im Animationsbereich) zu demonstrieren.
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Update: Die engine wurde nun um ein recht simples aber durchaus wichtiges Update erweitert. Es ist nun möglich die Hintergrundfarbe sowie den Nebel in der Spielwelt dynamisch in der Spielwelt zu ändern. Dazu hab ich sogenannte "Elemente" entwickelt (Ja, mir fiel kein besserer Name ein)
Um das Prinzip zu verdeutlichen: Man kann so viel Elemente erstellen wie man will und sie beliebig in der Spielwelt platzieren. Jedes Element beinhaltet Informationen für eine Hintergrundfarbe sowie Nebeleigenschaften. Der aktuelle Nebel in der Spielwelt (Farbe sowie Distanz, Dichte) und die aktuelle Hintergrundfarbe ergibt sich aus der Entfernung aller in der Welt verstreuten Elemente: Ein Beispiel: Man baut einen langen Gang und setzt an beide Enden ein Element. Das eine hat die Hintergrundfarbe Grün und ganz schwachen weißen Nebel. Das andere als Hintergrundfarbe Blau und einen starken dichten schwarzen Nebel. Steht man nun genau in der Mitte dieses langen Ganges ist die aktuelle Hintergrundfarbe eine Mischung aus Grün und Blau und ein mittlerer grauer Nebel. Je näher man nun in eine Ecke des Ganges geht, also je näher man zu einem Element kommt, desto stärker wird dessen Einfluss. Geht man Richtung erstes Element wird der Nebel immer schwächer und weißer und die Hintergrundfarbe immer grüner.
Hier noch ein Beispiel anhand eines Bildes:
Zum Downloaden gibts das leider noch nicht da noch ein paar Bugfixes gemacht werden müssen.
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Ich habs endlich geschafft mich hinzusetzen und eine vollständige Anleitung für meine game engine zu schreiben. 22 Seiten hat das Dokument und zeigt Schritt für Schritt mit viel Bildmaterial wie man das Programm benutzt. Hier ein paar Seiten aus dem Dokument.
Die Bugfixes in dem neuen Element-Menü sind auch geschafft und damit gibt es einen neuen Release! Die gesamte engine ist wieder downloadbereit und wartet auf kreative Köpfe die aus ihr alles rausholen was nur geht!
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Fettes Update: Der editor beherrscht nun das Importieren von BONE_ANIMATIONS aus anderen 3D-Programmen. Funktioniert erste Sahne! In Ida werden zwar selbst keine Bones verwendet aber die Animationen funktionieren^^ Ich hab zum Test ein paar Charaktere aus dem kostenlosen Spiel YoFrankie mitsamt ein paar Animationen in meine engine geladen.
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Kleines Update: Was man nicht alles so erfährt. Irgendwie bin ich beim Programmieren auf das Thema displayLists in OpenGL gestoßen, soll angeblich die Geschwindigkeit beim Rendern erhöhen dank vorkompilierten Daten für OpenGL. Also: Implementiert, geladen, getestet, und:
WOW, man wird doch immer wieder aufs positive überrascht, diese Option beschleunigt die Rendergeschwindigkeit besonders bei großen Spielwelten um ca das 100-Fache, wenn nicht mehr. Einfach krass! Danke, OPENGL! Im Editor kann man also bei einem Objekt einfach die neue Option "fix" anklicken die das Objekt in eine display list schreibt. besonders bei hochauflösenden Modellen mit vielen faces macht das einen extremst großen Unterschied was die Geschwindigkeit angeht. Eine gut ausgestattete und hochdetaillierte Map die auf meinem Stand-PC auf 30 FPS/Sek einbrach schafft mein altes Klapper-Notebook nun mit satten 60FPS.
lg Ida
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Registriert: Mi Apr 13, 2011 22:05 Beiträge: 218
Programmiersprache: Lazarus/FPC
Update
Derzeit versuche ich in den Editor eine Technik zu integrieren die ich TEILS vom Spiel Rage abgekupfert habe. Die Idee dabei ist mit eine Art Stempel zu erstellen mit dem man seine texturierten Objekte "verzieren" kann. Der Stempel manipuliert quasi die Textur und brennt sich in Echtzeit ein. Die Textur wird dabei im Speicher überschrieben. Man kann also mit der Maus einfach über die Objekte fahren und die engine zeigt eine Vorschau wo der Stempel auf die Textur gedrückt wird. Man kann den Stempel drehen und skalieren. Diese Stempel bestehen quasi nur aus transparenten Texturen die meist so Details wie Risse, kleine Schattierungen oder Dreck enthalten. Oder wie in diesem Fall Smileys
Der Unterschied zum normalen Texturieren ist das man keine Texturen doppelt verwenden kann, oder zumindest in den seltensten Fällen. Das Originalidee wie sie bei RAGE zum Einsatz kommt heißt MEGATEXTURE. Das Prinzip ist recht einfach: Anstatt mehrere einzelne Texturen werden ALLE Texturen einer Spielwelt in EINE EINZIGE Riesentextur gespeichert, die natürlich mehrere millionen Pixel groß ist. Die engine holt sich dann in Echtzeit die benötigen Texturbereiche der Objekte die man gerade im Blickfeld hat, streamt sie in Echtzeit auf 1024x1024 große Texturen die dann im Spiel verwendet werden. Der Riesenvorteil ist eben das Einfügen der zahlreichen details, da jeder Zentimerter im Spiel anders aussieht und sich nichts wiederholt, wie in den meisten Spielen eben schon der Fall!
Diese Idee hab ich zu einem Teil übernommen. Anstatt alles in eien fette Textur zu speichern wird einfach alles gleich direkt in 1024x1024 großen texturen gespeichert die sich im Spiel selbst nicht mehr ändern. Jede Fläche der Spielwelt hat ihren eigenen Platz und kann somit auch individuell im Details verziert werden. ABER: ich kann auch jederzeit auf die klassische Idee des Texturierens zurückgreifen, mit sich wiederholenden Texturen! Es ist also jedem selbst überlassen wann und wo er das einsetzen will.
Also....nicht das ich jetzt verwirre: Es ist alles gleich geblieben, es ist einfach nur ein neues feature dazugekommen(oder kommt gerade dazu, so ganz wills noch nicht) mit dem man seine texturen verzieren kann. Nur wenn man eben eine Textur wiederholend benutzt dann wird sich diese Verzierung mehrmals zeigen, darum sei es angebracht für jede Fläche einen eigenen Texturbereich zu reservieren!
Hier mal ein Beispiel: Eine sich wiederholende Textur, daneben die selbe sich wiederholende Textur in eine Megatextur gespeichert zusammen mit zahlreichen Details bestempelt.
Ich hab mir schon die entsprechenden Codes geschrieben die Texturpixel in Echtzeit verändern und speichern können. Des weiteren funktioniert auch schon die Erkennung der zu bedruckenden Fläche sowie eine Vorschau des Stempels auf der Fläche in Echtzeit.(Bild ganz oben)
Was noch nicht klappt ist Drehen Skalieren und das Aufbringen der Texturen, das ist aber nur noch eine Frage der Zeit.
lg, ida
_________________ Ich teile manchmal heimlich durch Null. - Alber Einstein
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.