Kratom Engine

Eltrollo

Mancubus
ich arbeite nun schon seit geraumer zeit an einer 2.5D Engine, das ganze befindet sich
vom Technikgrad her ein Stückchen über Doom1/2 und nutzt das ascii format des
GTKradiants.Wände müssen zwar immer noch im 90°winkel stehen... dafür gibt es
aber mehr Freiheiten wie etwa Räume über Räumen,sowie dynamische Licht und
Schatteneffekte.Heute ist nun der Parser für das mapformat fertig geworden und es
fehlt nur noch die räumliche Einteilung der Brushes in einen Bsp-baum ala Q2 bevor mit
dem Rendern angefangen wird (ich bin noch unschlüssig ob OGL oder Raytracing).

testw.jpg
 
Last edited:

e.v.o

Light Guard
Raytracing. Damit ich meinen Dual-Hexacore auslasten kann. Meine GTX480 stört in dem PC einfach nur.
 

Eltrollo

Mancubus
du wirst lachen aufgrund der Eigenschaften der Geometrie , wäre RT tatsächlich eine Option auch für langsamere CPUs.
man muss bedenken das halt nur eine Bildschirmzeile abgetastet werden muss und das man eine Schnittberechnung mit
ganzen Brushes anstatt mit den einzelnen Oberflächen machen kann :)
 

CruSAdeR

Maledict
Das wurde bei der originalen Doom Engine doch auch so gemacht, oder? Pro Spalte einen Strahl ausschicken vom Betrachter aus, bis er auf eine solide Wand trifft. Pro Spalte kann es immer nur eine sichtbare Wand geben. Aber wenn du dann von da aus weiter gehen willst für richtiges Raytracing, spielt ja doch die Höhe eine Rolle, also brauchst du dann doch für jeden Pixel min. 1 Strahl.

Btw wenn du da beim Rendering was halbwegs Vorzeigbares hast, immer her damit. Interessiert mich immer sowas. :)
 
Last edited:

Eltrollo

Mancubus
ich glaub du verwechselst da grad doom mit Wolfenstein :D
die DoomEngine konnte mehere Wände pro Spalte darstellen wie du z.B. hier siehst :)
bei Wolfenstein geht halt der Strahl solange weiter bis er ein Objekt trifft
im Falle von Doom geht er solange weiter bis er entweder die map verlässt
oder halt die "Spalte" komplett vollgezeichnet hat.Um jetzt dynamische Schatten
zu realisieren musst du halt für jede Wand die vom Licht getroffen werden
kann jeweils einen Strahl vom Minimum und Maximum der Wand zur Lichtquelle
schicken ... wenn unser "Zeichenstrahl" nun auf eine Wand trifft muss überprüft
werden ob er vieleicht gerade in einer "Schattenwand" ist.... ist dies der Fall
so muss halt der Start und Endpunkt des Schattens auf der Wand berechnet
werden ,vorher sollte man fix mal überprüfen ob der Schatten vieleicht die ganze
Linie einhüllt (man zeichnet ja immer Senkrechte Linien pro Spalte)
 

Tombery

Sarge
Ich misch mich mal kurtz ein um zu sagen, echt klasse Eltrollo. :thumb:
Viel Erfolk bis zur vollendigung, ist echt der wahnsinn was du betreibst. Die Buttons kommen nur dem originalen sehr nah. :ugly_thumb:
Kleine frage nur, ist das nur für ein egoshooter geadacht oder auch Z.b für ein Strategiespiel?
 

CruSAdeR

Maledict
Nee, meinte schon Doom. :)
Aber ich meinte die Außenwände. Doom unterscheidet ja zwischen den richtigen Außenwänden und den Sektorgrenzen. Und bei ner Außenwand ist immer Schluss für die Spalte. Davor können aber beliebig viele Sektorgrenzen (mit Treppen) kommen, das ist richtig.
(Mein Wissen über die Doom Engine stammt aber auch nur aus dem englischen Wikipedia Artikel, den ich btw sehr interessant fand. :) Hab mir den Code natürlich nie angeschaut.)

Ein wichtiger Punkt bei Raytracing ist aber doch auch noch die Reflexion. Daran hatte ich jetzt mehr gedacht.
 
Last edited:

Eltrollo

Mancubus
joa das mit den Reflektionen isn guter Punkt da muss ich dir zustimm ... hab bisher auch net soviel für die Engine getan, halt bisher die Konsole und halt den compiler jetzt wo ich drüber nachdenk wirds wohl wirklich das beste sein für jeden Pixel einen "Zeichenstrahl" zu senden.... aber gut ersmal schauen wie es
sich so entwickelt das ganze...


@Tom ... bisher ist ersmal n shooter als Ziel gesetzt, da man aber die Kamera frei drehen kann sollte auch sowas wie ein Strategiespiel kein Problem darstellen
würde sogar gut aussehen da ja Displacementmapping und was Speedtreemäßiges geplant sind.
 

The Matrixer

B.J. Blazkowicz
Hui, saubere Sache, da ziehe ich mein Hut, so mal eben ne Engine selbst programieren ist auch nicht jedem in die Wiege gelegt.
Bin mal auf den Weiteren Verlauf gespannt. Zeit bis zu einer ersten Vernünftigen auf voxel basierenden engine hast du ja noch :-)
Hast du da Eigentlich mal in der Richtung schon etwas Probiert? Also ich selber mag ja auch lieber gutes altes Ray tracing und das
texturen von poligonwänden, wenn man bedenkt das beides mit einzug jener neuen technik wegfällt wird mir echt übel.
 

NachoKing

Undead
Coole Sache! Will mehr sehen! In welcher Sprache geschrieben? Wenn du das per Raytracing realisierst, wie planst du die Daten auf den Schirm zu zaubern? :)
 

Eltrollo

Mancubus
Modelle werden aus den guten alten Sprites bestehen,hab ja schonmal an anderer stelle gesagt das ich diese optisch besser finde
außerdem hat man dadurch mehr grafikpower für andere bereiche übrig ... der einzige Nachteil den ich darin sehe ist halt die
schlechtere Qualität der Schatten...

@Nacho ,Das ganze wird/ist in C++ und der Allegrobibliothek geschrieben (werd halt n bissl faul die Tage :D )
 

CruSAdeR

Maledict
Schlechtere Qualität der Schatten. Lol. :D Sprites sind immer so blöd animiert und zucken rum ohne Ende, und du beschwerst dich über die Schatten. :)

Ändert aber absolut nichts daran, dass ich auf die Resultate gespannt bin. ;)
 

Skulltaker

Knight
Die Sprites werden doch sicherlich nicht so klein sein wie damals üblich und bei der Animation genauso, Pinky hatte doch nur 7 bilder pro Seite.
 

Eltrollo

Mancubus
so hab jetzt die letzten bugs im compiler beseitigt und mach grad die finalen schritte in der räumlichen aufteilung der polygone,
wird also die nächsten tage n bissl ingame material geben :D
 

Eltrollo

Mancubus
So , hab jetzt nu doch zu OGL gewechselt , und als Mapformat das Q3bsp verwendet (hab aber schon klassen fürs .map format zu
60%fertig) Wer sich mal am Editor (Q3Radiant) austoben will soll per PM bescheid geben :) (benötigt werden Pixelshader 2.0 auf der Graka
also geforce fx oder vergleichbar)
screen001r.jpg

screen001r.jpg
 
Last edited:

Eltrollo

Mancubus
hallöchen allerseits ,
wie ja schon hinreichend bekannt sein sollte arbeite ich schon seit geraumer Zeit immer
mal wieder daran eine Engine für ein Game zu coden. Nach einigen "Misserfolgen" auf basis
von Id-Softwares Technologien hatte ich mit der Arbeit an einer kompletten Eigenentwicklung
begonnen.

Heute kann ich mit Stolz verkünden das die Kratom Engine Gestern den Alphastatus erreicht hat. Sprich
es ist nun möglich für einen Artist alle wichtigen Formate ingame zu testen, wer also mithelfen will ein
Game damit zu erstellen ist herzlich eingeladen sich bei mir per PM zu melden :)

Engine Keyfeatures
-Es wird 2 verschiedene Codepaths für den Renderer geben (immoment liegt der Fokus
allerdings erst einmal auf Leistungsschwache System). Für "schwache" Rechner wird
das gute alte OpenGL (SM 3.0) verwendet. Für stärkere Systeme wird es einen Raytracer
auf basis von OpenCL geben (erste Experimente zeigen das schon eine gf 9600 dafür
ausreichen würde). Allerdings ist die Engine nur für orthogonale Projektion augelegt
wodurch auch entschieden wurde das es nur Sprites geben wird anstatt richtige Modelle.

-Ähnlich wie Id-Tech 4 arbeitet die Kratom Engine mit den Mapformat des GTK-Radiant.
Das hat unter anderen Vorteile für die Berechnung von Strahlen da hier sehr viel schneller
eine Schnittberechnung vorgenommen werden kann als mit anderen Formaten. Ich werde
allerdings noch verschiedene Features des Radiant einbauen so das die Engine dann z.b.
Brushes subtrahieren kann usw. Anders als Id-Tech 4 jedoch behandelt die Kratom Engine
eine Map ausschließlich als Liste von Entities betrachtet und einzig der Gamecode
entscheidet ob eine Map alleine für die Spieltwelt ausreicht oder ob mehere Maps zu einer
Spielwelt kombiniert werden müssen.

-Fürs Scripting wird LUA zur verfügung Stehen , hier muss aber noch genau Überlegt
werden was denn nun alles genau gescripted werden kann. Immoment wird hier nur
an der Verbindung von LUA ,WPF und Renderer gearbeitet um eine brauchbare Basis zu
schaffen.Zu einen späteren Zeitpunkt sollen dann Erweiterungen wie zum Beispiel
Webservices und Sound hinzukommen.
 

e.v.o

Light Guard
Magst du das ganze vielleicht auf GitHub oder SourceForge stellen oder zumindest einen Download anbieten?

Würde mit Sicherheit nicht nur mich interessieren was du da so geschaffen hast.
 
Top