Tehadon

Kommentare anzeigen Worklog abonnieren
Gehe zu Seite 1, 2, 3 ... 10, 11, 12  Weiter

Worklogs Tehadon

Vieles hat sich getan

Sonntag, 5. Dezember 2010 von Jo0oker
Hallo Leser,

es hat sich wieder einiges getan, nun funktioniert schon recht gut:
-PhysX integration
-Skripting
-NPC [Gfx]
-und vieles mehr.

Weitere Neuigkeiten findet ihr hier:http://www.forenberg.de/forum/...ex-12.html

MfG

Wird hier nicht weitergeführt...

Samstag, 16. Oktober 2010 von Jo0oker
Hallo Leser,

ich möchte einmal darauf hinweisen, dass aufgrund der Umstellung auf eine neue Engine der Worklog hier nicht mehr weitergeführt werden kann. Alle Neuigkeiten erfahrt ihr aber selbstverständlich hier:

http://www.forenberg.de/forum/...6895d9c14e

[ http://www.tehadon.de ]

Das Projekt ist natürlich nicht tot!

Wenn in naher Zukunft eine Techdemo erscheint, was geplant ist, werde ich das hier sehr wahrscheinlich noch vermerken.

MfG T-Team

Pathfinding, Maploader und SVN

Donnerstag, 22. Juli 2010 von Jo0oker
Es geht weiter!

Ich habe mich in der letzten Woche viel mit dem Thema Pathfinding beschäftigt
und es auch schon komplett in Tehadon eingebaut.

Zum Finden der Wege nutze ich den von Dijkstra entwickelten Algorithmus, der sich für
unsere Zwecke gut eignet.

Gefunden werden die Wege aus dem so genannten Wegenetz. Dabei kann eine Map mehrere
Wegenetzte besitzen, deshalb werden sie mit einer eindeutigen ID versehen.

Das Wegenetz als solches besteht aus einzelnen Wegknoten, welche durch "Brücken"
verbunden sind. So kann beispielsweise der Punkt B von A aus erreichbar sein,
A aber nicht von B aus!

Um einen Weg zu finden braucht man nun nur die Regionsid und einen Start - und Endknoten.

Der Kern des Systems wurde in C++ geschrieben, die Verwaltung der Knoten und "Brücken" hingegen in C#.
Der C# Teil verwaltet außerdem die einzelnen Aufgaben, welche in einem eigenen Thread abgearbeitet werden.
Durch eine Kapselung dieser Aufgabenverteilung, kann man auch, je nach bedarf, beliebig viele Threads für
das Pathfinding verwenden.

Der C++ Teil beinhaltet außerdem ein abstrahiertes Wegenetz, welches er zum Suchen/Finden der Wege
nutzt.

In einem kleinen Leistungstest konnte das System ca. 1000 Wege pro Sekunde finden, bei einer Wegenetzgröße von
500 Knoten und viele "Brücken".

Der C++ und C# Teil wurde dabei durch einen simplen Wrapper verbunden. Dabei wurde die C++ API so einfach wie möglich
gehalten:

Code: [AUSKLAPPEN]


        public static extern void AddRegion(int RegionID);

        public static extern void AddNodeToRegion(int RegionID, string Name);

        public static extern void AddNoteToLastRegion(string Name);

        public static extern void ConnectNodes(int RegionID, string SourceName, string DestinationName);

        public static extern int CalcPathString(int RegionID, string Start, string End);

        public static extern int GetNodeID(int RegionID, int Pos);

        public static extern void SetLastEdgeDistance(int RegionID, double Distance);


[ACHTUNG]
Ich werde die Pathfindingdll gerne allen BB-Programmieren zur Verfügung stellen, jedoch nicht Opensource, somit
wird es mit dem nächsten WL auch einen Wrapper geben.

Nach dem Urlaub:

In den letzten Tage hatte ich einwenig mit Visual Studio zu kämpfen, es kompileirte nicht so wie ich wollte, dieses Problem wurde nun erfolgreich beseitigt.
Außerdem ist nun ein SVN-Plugin direkt ins Studio integriert, hier einmal ein Screenshoot:
user posted image

Desweiteren kann man nun über die INI-Datei der Engine sagen, welche Mod nach dem Starten verwendet werden soll.
Ein Mod kann dabei entweder aus einer Resource.cfg und einer Ordnerstruktur oder aus einer
Resource.cfg und einem Zip bestehen, so gibt es die Möglichkeits Mods aus nur 2 Dateien bestehen zu lassen.

Desweiteren ist das Mapformat komplett durchgeplant und auch schon bedingt in die Engine integriert. Um einen groben Überblick zu verschaffen:
Eine 'Welt' ist in mehrere Sektionen aufgeteilt, die unterschiedlich geladen und entladen werden, so dass wir viel Resourcen sparen. Dieses Laden
und Entladen geschieht in einem eigenen Thread, so dass der Spieler davon nichts mitbekommt.

So, dass wars für erste, bald gibt es wieder mehr Neuigkeiten!

lg Jo0oker

Weiter gehts

Donnerstag, 17. Juni 2010 von peacemaker
Hallo,

ich denke viele hier haben sich schon gefragt, wieso dieser Worklog schon so lange keinen Eintrag mehr gesehen hat. Wurde Tehadon etwa schon aufgegeben? Nach mehr als zwei Jahren Arbeit?
Dem ist natürlich nicht so, wir hatten nur beschlossen erstmal ein bisschen Informationen unter Verschluss zu halten, da unser Vorhaben zu Beginn etwas übertrieben schien.

Unser Vorhaben? Nun, wie der ein oder andere mitbekommen hatte, ist Blitz3D etwas in die Jahre gekommen. (Die meisten ahnen es wohl schon)
Immer mehr Probleme mit neuer Hardware, plus die mittlerweile auch mir verkorkst scheinende Sprache machen es nicht einfach etwas in der Grösse von Tehadon zu entwickeln.
Wir sind schon sehr weit mit BB gekommen, aber es gab Knackpunkte, und vor allem hätten wir in diesen 2 Jahren sicherlich noch viel weiter kommen können, es gab immer wieder Fehlentscheidungen, und so passierte es das bestimmte Systeme viel zu oft neugeschrieben wurden (HDSS, AI, ...)
In den mehr als 40 000 Zeilen die Tehadon bilden gibt es sicherlich viel unnötiges oder nicht schön gelöstes.

Nun, etwas neues musste her. Unsere erster Versuch war eine Engine für BB zu finden, und desshalb machte sich Jo0oker daran einen Wrapper für die Softpixel-Engine zu machen. Dieser funktionierte gut, aber das Problem mit der Sprache blieb.

Da kam uns die Idee, wieso es nicht mit c# zu versuchen. Sowohl Jo0oker als auch ich nutzen es beruflich, kennen es entsprechend sehr gut. Desweiteren sind wir beide der Meinung das das die Zuukunft der Spielentwicklung ist. Die starken OO-Konzepte ermöglichen eine sehr gute Architektur ohne 4 mal den selben Code schreiben zu müssen.

So war es dann auch. Als Engine haben wir ganz schnell Ogre3D gewählt (wurde auch schon in einigen Projekten kommerziell genutzt).

Unsere erste wichtige Design-Entscheidung war, den kompletten Gfx-Part aus dem Game-Part zu trennen, um so optimale Modularität zu gewähren. Das ganze basiert nun auf diesen modularen Systemen:
  • Tehadon.AI
  • Tehadon.Core
  • Tehadon.Game
  • Tehadon.Gfx
  • Tehadon.Main
  • Tehadon.ScriptEngine
  • Tehadon.Sound
Jo0oker hat schon einiges an Gfx-Dingen gemacht, dort steht schon das komplette System und muss noch erweitert werden.
Hier mal ein Bild vom momentanen Wettersystems

user posted image

Nun zum Herzstück des ganzen Spiels, der AI.

Auch hier habe ich diesmal sehr viel Zeit investiert und dabei ein recht einfaches aber effizientes System ausgearbeitet. Es basiert auf drei Subsystemen: GfxNpc, Scout und Brain.

Der Scout ist das virtuelle Objekt das alles wahrnimmt. Alle Perceptions laufen darüber. Der Scout ist dann mit dem Brain verknüpft, welches alles auswertet. Dieses 'Gehirn' ist die Verbindungsklasse, und führt alle Entscheidungen basierend auf reinkommende Informationen aus.
Schlussendlich gibt es noch den GfxNpc, welcher einfach die 3D-Entität darstellt, Animationen abspielt, usw. Dieses ist mit dem Brain verbunden und kriegt von dort die Anweisungen.

Dann, ein grosser Teil der bisherigen Entwicklung ging für HDSS drauf. Wir haben uns auch dieses mal überlegt eine eigene Skriptengine zu machen, sind aber sehr schnell auf die Idee gekommen, laufzeit-kompilierten C#-Code zu verwenden. Da der Compiler ein Bestandteil des .NET-Frameworks ist, sollte das keine Probleme verursachen. Die Vorteile sind, eine unglaublich schnelle Ausführung, eine sehr mächtige Sprache sowie Ideale Kombination mit dem System, da wir nun direkt auf die Game-Klassen zugreifen können ohne es wrappen zu müssen (siehe altes HDSS, Klassen - Type - Mapping)

So, das war ein sehr kleiner technischer Teil, es gibt noch viel mehr, aber ich will mich etwas kurz fassen.

Nun, das bedeutet aber auch das wir den Worklog hier nicht mehr weiterführen können, da wir kein Blitz-Projekt haben. Für alle die noch interessiert sind, gibt es ja noch den offiziellen Worklog in unserem Forum.

Was momentan noch in Abklärung ist, ist die Frage ob wir den alten BB-Code veröffentlichen. Vlt interessiert es ja jemanden, bzw. jemand kann es brauchen. HDSS wurde ja schon releast, auch wenn das Interesse anscheinend eher gering ist Very Happy

Schlussendlich nutzen wir die Neuentwicklung als eine Chance, um vieles von Anfang an richtig zu machen. Das Gameplay inkl. Story bleibt eigentlich gleich, nur die technische Basis ändert. Aber dazu gibt es die nächsten Tage mehr im offiziellen Worklog.

peacemaker,
T-Team

Weihnachtsgeschenk

Montag, 28. Dezember 2009 von Jo0oker
Hallo Community,
Heute gibt es ein leicht verspätetes Weihanchtsgeschenk, gezaubert von unserem
2D-Grafiker.

Es handelt sich dabei um Wallpaper...

user posted image

Verschiedene Auflösungen
640x480
http://www.tes-cheese.ch/tehad...40x480.jpg
800x600
http://www.tes-cheese.ch/tehad...00x600.jpg
1024x768
http://www.tes-cheese.ch/tehad...24x768.jpg
1280x800
http://www.tes-cheese.ch/tehad...80x800.jpg
1280x1024
http://www.tes-cheese.ch/tehad...0x1024.jpg
1440x900
http://www.tes-cheese.ch/tehad...0x900.jpg0
1600x1200
http://www.tes-cheese.ch/tehad...0x1200.jpg
1680x1050
]http://www.tes-cheese.ch/tehad...0x1050.jpg
1920x1080
http://www.tes-cheese.ch/tehad...0x1080.jpg
1920x1200
http://www.tes-cheese.ch/tehad...0x1200.jpg


Und einmal als Zip:
http://www.file-upload.net/dow...1.zip.html

Viel Spass damit.

MfG

B3D und C#

Mittwoch, 11. November 2009 von Jo0oker
So, die kombination aus C# und B3D klappt nun perfekt.

Hier könnte ihr mal ein Video das zu sehen:
http://www.youtube.com/watch?v=fpxXjN4z1cg

Schaut euch das Video am besten in HD an!

Wie ihr sehen könnt, kann man die Schrift nicht mehr in Marodiin
lesen, das liegt an einem Grafikkartentreiberupdate,
seit dem funkioniert B3D nämlich nicht mehr so richtig.

Ich hoffe die SoftPixel Engine kann bald abhilfe liefern!

lg Jo0oker

Marodiin - HDSS Preparser

Sonntag, 8. November 2009 von Jo0oker
Hallo liebe Worklogleser und Leserinnen.

Gestern habe ich für Marodiin einen HDSS Preparser geschrieben, der jegliche
Fehlermeldung auswift, sagt in welcher Datei und Zeile er sich befindet.
Die Folgenden Funktionen werden schon unterstützt:

-Funktionen auf vorhandensein überprüfen
-Funktionen auf doppelte deklaration überprüfen
-Variablen auf vorhandensein überprüfen
-Variablem auf doppelte deklaration überprüfen
-Variablen ohne $ erstellen gibt ein Fehler
-Auf Semikolons überprüfen
-Auf Klammern und Anführungszeichen überprüfen
-Auf falsche Kommentare überpüfen

Außerdem ist das Projektmanagement in Marodiin und der NPC-Editor weit fortgeschritten.

MfG

Und es werde Licht!

Donnerstag, 8. Oktober 2009 von Jo0oker
Hallo Leser,
in den letzten Tagen hat sich im Bereich Marodiin nicht viel getan.
Ich habe lediglich BlitzSky von Krischan mal getestet und ich muss sagen, großartig!
Hier das Resultat:

user posted image
user posted image
user posted image

Ich denke, morgen wird es mal ein Update geben!

lg Jo0oker

XML-Animationen und NPC

Mittwoch, 7. Oktober 2009 von peacemaker
So, wird mal wieder Zeit für einen Eintrag.
Es sind einige Dinge geschehen, ich erzähle in diesem Eintrag jedoch nur das nötigste.

Als erstes sicher mal das wichtigste: Quantarie hat einen neuen NPC gebastelt. Leider hab ich keine aktuellen Bilder, wesshalb ich ein etwas älteres poste.
Das Teil ist übrigens noch nicht texturiert, wie ihr vielleicht seht.

Kritik ist erwünscht! Die Polyzahl ist glaube ich bei etwa 1100 oder so.

user posted image

user posted image

Dann zum technischen:
Ich habe das alte Animationssystem für NPCs erneuert. Also, das Problem am alten System (kann man sowas überhaupt System nennen?), es war alles schön hardcoded. Überall im Code waren einfach die Animier-Anweisungen verteilt. Das bedeutet, das für NPC und dem Spieler verschiedener Steuerungs-Code vorhanden war.
Ich habe nun mit dem neuen System versucht den Animations-Code abzuspalten und in ein separates System zu setzen.

Mein Lösungsansatz: Alles schön extern auslagern, wie immer Very Happy
Die Animationen werden in XML-Files konfiguriert, pro File wird ein sogenannter NPC-Animbody definiert. Ein Animbody ist einfach in diesem Fall ein animierter Körper. Dort werden die verschiedenen Sequenzen definiert, die verschiedenen Childs, also Slots, für Schwerter, Waffen etc.

So, nehmen wir eine Datei "Intenar.xml" die wir in den Anims-Ordner tun. Diese schaut z.B. so aus:
Code: [AUSKLAPPEN]

<body>
 <anims>
   <anim name="Attack">
     <start>150</start>
     <end>200</end>
     <mode>one_time</mode>
   </anim>
 </anims>
</body>

So, wir nehmen hier zu Demozwecken nur eine Sequenz Namens "Attack".

Beim Erstellen des NPCs müssen wir auch den AnimBody zuweisen:
Code: [AUSKLAPPEN]

$npc = new (npc);
// ... die üblichen einstellungen
$npc->animBody = "Intenar";

Also, beim animBody gibt man einfach den Dateinamen ohne Endung an. Beim Zuweisen passiert folgendes: Es wird geschaut ob das Body schon geladen wurde, falls ja, wird das zugewiesen, falls nicht, wird es aus dem xml geladen und zugewiesen. So wird sichergestellt das ein Body nur einmal geladen wird.

So, die Animation ingame zu starten ist nun viel schöner. Im HDSS-Skript, beispielsweise:
Code: [AUSKLAPPEN]

$npc->Animate ("Attack");

Man gibt einfach den Namen der Sequenz an, welche ausgeführt wird.

Viel wichtiger für mich war das es auch hardcoded besser funktioniert:
Code: [AUSKLAPPEN]

NpcAnimBody_Animate (npc, "Attack")

Nun, es gibt ein bisschen ein Problem dabei: Es wird externer Code, mit internem kombiniert. Fehlt also eine bestimmte Animation im xml, könnte das das Ganze System durcheinander bringen.

Aber das bringt auch Gutes: Man kann nun schöne externe States bsateln, die dazu noch NPC-Unabhängig sind.
Soll heissen, wenn man ein State macht für "Sitzen" macht, funktioniert es mit allen NPCs, auch wenn bei einem NPC von 150 bis 170 ist, beim anderen von 30 - 50.
Auch Anpassungen an den Animationen sind jetzt ohne Probleme möglich, man muss einfach nur an einem Ort eine Zahl ändern und fertig. Früher musste man durch den Code gehen und an mehreren Stellen anpassen.
Merkts euch, Hardcoding ist für solche Dinge nie gut!

mfG

Marodiin Version 0.0.1.1

Dienstag, 30. Juni 2009 von Jo0oker
Marodiin Neuigkeiten und Updates

Hallo, absofort steht das neue Update auf die Version 0.0.1.1 zur verfügung.

Was ist neu?

-Eine art Kontexmenu(linke Maustaste)
-Viele Bugs behoben
-Optimierungen
-Geschwindigkeit verbessert

Und noch nen Bild:
user posted image

Und noch nen Video
http://www.youtube.com/watch?v=tNp6Bnfofz8
Das Video ist von grosserboss, einer der 3D-Artisten!

Und noch nen Video von mir:
http://www.youtube.com/watch?v=8HcY52Uo060
Achtung, HD!

Und jetzt noch viel Spass!

MfG

Gehe zu Seite 1, 2, 3 ... 10, 11, 12  Weiter