Tehadon

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

Worklogs Tehadon

auch NPCs können Vernunft annehmen

Sonntag, 6. April 2008 von peacemaker
So, der komische Message-Bug ist beseitigt. Das Problem lag beim parsen. Messages wie z.B. "DGF.GoToField 5,5" wurden als ",5" verschickt. Damit kann ein NPC natürlich nix anfangen, wesshalb auch gar nichts passiert.
Jetzt können die NPCs zumindest auf dem Kampffeld herumlaufen, was ja auch schon was ist.
Sonst ist nichts grosses passiert, ein paar optimierungen hier und da, umstrukturierung bei dem Lauf-Modus, und eine Umstrukturierung des Forums.
Jetzt funktioniert aber das umberechnen zwischen den Lokalen Kampffeld-Positionen und den globalen Koordinaten nicht mehr. Wenn ich einen NPC zu Feld 5,5 schicke, rennt er einfach geraderaus aus dem Kampffeld.

Ist wohl irgendwo ein Denkfehler versteckt. Nix grosses.


mfG

die Echse

Sonntag, 6. April 2008 von peacemaker
Grosserboss, einer unserer 3D-Artisten, schon von Anfang an bei Tehadon dabei, hat eine (grössere, ~1.5m lange) Echse animiert und modeliert.

Ein Bild der Echse:
user posted image

Hier das Video. Ihr braucht diesen DivX-Player um es anzusehen.
http://www.file-upload.net/mem....divx.html

weiter gehts

Samstag, 5. April 2008 von peacemaker
Ave!

Es ist mal wieder die zeit gekommen, euch zu erzählen was passiert ist.
So, ich hab hauptsächlich die DGF-AI etwas abgeändert. Nicht das sie schlecht war, aber ihre Struktur war schlecht. Sie war viel zu sehr von anderen Systemen abhängig, was bei einem modularen Aufbau gar nicht sein darf. Wrappen oder so geht natürlich auch nicht, wesshalb ichs eben neu schreiben musste, um gleich zu Beginn diesem Fehler aus dem Weg zu gehen. Hat ja auch geklappt. Nur streikt jetzt das AI-Messagesystem. Was hier nervig ist, ist das ich das Messagesystem nicht so stark überwachen kann. Manchmal werden einfach fremde Messages gelöscht.
seine Message aus, Noch kurz zu diesem Messagesystem: das ist ein System, welches den Kontakt zwischen Objekten zu System, Programmierer zu den Objekten oder AI-Objekte mit dem Rest, ermöglicht. So kann ich z.B. einfach einem NPC die Nachricht "NPC.Die" schicken, und schon stirbt er einfach so. Die Nachrichten werden dabei so empfangen, das sie sich in so nem Pool befinden. Dort könnte theoretisch jeder NPC die Nachrichten der anderen lesen, was er jedoch nicht macht, da ich sie so höflich programmiert habe, das zu unterlassen. Hätte sonst katastrophale Folgen. So, der NPC sucht sich also(er liest nur die ID, nicht die Message selber) und befolgt sie dann.
Bei Objekten funktionierts genau gleich.

Da ich nicht wirklich was zu zeigen habe, habe ich einfach ein Bild von der IDE gemacht. Rechts ist der Projektmanager zu sehen, da könnt ihr auch gleich die neue schöne Projektstruktur von Tehadon sehen.
Dieser Sourcecode den ihr da seht Updatet die Skriptstates. Ist etwas dünn, da bisher alles noch über hardcoded States funktioniert. Diese Funktion da wird nicht einmal geupdatet.


user posted image

mfG

Texturen...

Dienstag, 25. März 2008 von peter_acc
Wie immer gehts auch im Grafikbereich fleißig zu und wo ich nun auch in diesen Worklog posten kann, werde ich das auch tun:)

Die Texturen werden immer mehr, und natürlich auch besser, zusammengestellt in einem feinen Texturenkatalog. Größtenteils basieren sie auf Fotovorlagen.
Sofern die Wetterlage stabil bleibt werden heute auch mal wieder ein Haufen Fotos geschossen,
die ich dann im Laufe der Zeit über-/be- arbeite.

Hier mal eine kleine Textur die ich für Domis Wirtshaus (siehe letzter Worklog) erstellt habe:

user posted image



Nachtrag: Hier die Textur auf einem Screen, der 3 neue Modelle unseres 3D Artisten Domi zeigt.

user posted image

MfG peter_acc, 2D-Artist

weiter gehts

Montag, 24. März 2008 von peacemaker
So, der letzte Beitrag ist länger her.
Was ist passiert?

Nun, der ein oder andere hat ja sicher bemerkt, das unser Forum bzw. Seite down war. So, nachdem wir dieses Wochenende ein völlig neues Forum hochgesetzt haben, kann ich sagen, das wir doch wertvolle Arbeit geleistet haben.
Vielen Dank an Nexan, der uns da so selbstlos unterstützt hat und auch irgendwie geschafft hat, die DBs zu retten!
Was hat sich so getan? Nachdem ein gewisser Herr *hust* mich immer wieder gedrängt hat, Meshterrains zu verwenden, habe ich mal das Terrainsystem um Meshterrains erweitert.

Quantarie, einer unserer 3D-Magier hat diese schöne Insel dafür gemacht:

user posted image

Sie wird tatsächlich genau so im Spiel vorkommen, Texturen fehlen jedoch.

Sonst hat sich nich soo wirklich viel getan. Ich habe angefangen Gefallen an Meshterrains zu finden, Domi hat den TestNPC (diesen Zwerg der auf jedem Screen drauf iss) abgeändert sodass er nich immer seine Axt mit herumträgt.
Ausserdem habe ich Domis geniales Wirtshaus mal eingebaut.
Sieht Ingame sehr schön aus, vor allem ist es sehr geräumig. Wir brauchen wohl noch viel mehr Objekte um sowas vernünftig auszustatten.
Dann war ich noch bei John_Bone und hab dort ausführlich Gothic 3 gespielt und mit seiner Hilfe habe ich auch noch ne verdammt umfangreiche Modellliste erstellt. Ist ja auch was. Danke noch für seine Zeit, die er für selbstlos für Tehadon geopfert hat!

Hier noch eine hässliche Location samt NPC der schon Dialoge und Quest ausspuckt, sowie hässlichem Terrain, einer untexturierten Skybox und dem geilen Wirtshaus, welches einfach leer in der Landschaft herumsteht. Sehr schön!


user posted image

Sonst denke ich gibts nix grosses zu erzählen. Die schlechte FPS-Zahl ist wegen der 3 Debug-Logs die ich hier angeschmissen hab. Der hauseigene von BlitzBasic, ein externer den ich vor kurzem in C++ gemacht habe und einer den ich irgendwo mal gefunden habe.
Wieso denn drei Debuglogs? Einer wird komplett von NPCs in Anspruch genommen. Diese haben soo viele Daten, da gibts auch viel anzuzeigen.
Einer wird vom Skriptsystem, dort isses das gleiche. Der andere von sonstigen Sachen.

mfG

Seite + Forum kurzzeitig down

Mittwoch, 19. März 2008 von peacemaker
So, ich wollte Bescheid sagen, das die Seite sowie das Forum kurzzeitig down sind.
Wann da sich was ändern wird, kann ich atm nich sagen, man muss noch sehen, es sind ein paar technische... sagen wir mal "Fehler" aufgetaucht.

mfG

ProjektManager, NPC-Editor, ....

Sonntag, 16. März 2008 von peacemaker
So, nach längerer Zeit wird ein paar Sachen die es zu berichten gibt.
Was ist denn so geschehen?
Nun, ich habe weiterhin am T-Editor gewerkelt und auch dort wieder fleissig entbuggt.
Neu ist jetzt auch der sog. ProjectManager, welcher wie der Name schon sagt, Projekte verwaltet.
Zu einer mod (auch Tehadon selbst, zumindest der Content) gehört ja sehr vieles. Maps, Skripts, Sfx, Grafik, Definitionen, .mod-File, ....
Und da alle diese Sachen mit dem T-Editor bearbeitet werden, müssen sie schön aufgelistet sein, sodass sie einfach zu bearbeiten sind.
Das ist quasi eine zweite Objektliste, welche jedoch alle Objekte, die bei dieser Map auflistet. D.H. z.B. alle Waypoints, etc. So kann man nur einen WP anklicken, und schon wird die Kamera automatisch an der Position dieses WPs. Ausserdem habe ich einen NPC-Editor angefangen zu machen, mehr dazu wirds demnächst bei den Makinf-Ofs geben.

Hier ein Bild vom ProjectManager:
user posted image

Ausserdem habe ich begonnen eine kleine Szenerie zu basteln, es ist mal wieder Zeit ein paar Screens zu machen. Aber da das Gras immernoch nicht so funktioniert, wie ichs wollte, gibts dann doch keine Screens.
Die Szene selber sieht im Editor so aus:
user posted image

mfG

Von AI-States, doppelt gelesenen Zeilen und Includes

Sonntag, 9. März 2008 von peacemaker
So, es ist mal wieder an der Zeit zu berichten.
Ich hab mich jetzt mal hauptsächlich mit den AI-States beschäftigt. Da ich schon länger nichts mehr im Bereich AI gemacht habe, musste ich mich etwas im Code zurechtfinden, und merkte auch gleich das da vieles überflüssig ist und Verbleibsel von alter Zeit ist.
Z.B. hatte die NPC-Klasse ~120 Einträge / Eigenschaften, 30 davon waren unnötig. Also habe ich dort etwas verkürzt. Auch sonst habe ich etwas umstrukturiert, die States neu geordnet, etc. So fühlt man sich doch gleich viel wohler Smile

Momentan gibt es noch Probleme mit den NPCs, sie werden nich korrekt in die States gesetzt, aber das ist so ein kleines Problem, das löst sich schnell.
Nun, das State-System ist jetzt doch anders geworden, als erwartet.
Man muss jetzt nicht für jedes State eine Instanz der State-Klasse erstellen, es reicht eine Instanz für eine sog. Statetemplate zu machen. D.H. das ist eine Schablone, die alle States zu einem Objekt verwaltet. Das macht etwas weniger Arbeit, dafür kann man nicht verschiedene States, z.B. die der Fauna und die der NPCs kombinieren. Stört jedoch kaum.
Aussserdem hat man nicht mehr die gleiche Freiheit, beim Aussuchen der Funktionsnamen. Man muss sich jetzt an den folgenden Regeln halten:
- Die Funktionsnamen für States sollten komplett gross geschrieben sein
- Es gibt drei Funktionen pro state: alle haben den gleichen namen, aber verschiedene Endungen. Aso z.B: EIN_STATE. EIN_STATE_ONSTART, EIN_STATE_ONLOOP, EIN_STATE_ONEND.

Ich mache mir jedoch noch ziemliche Sorgen wegen der Skripte. Iwie merkte ich heute, das eine Zeile immer zweimal durchgelesen wird. Das verlangsamt das ganze unnötig.
Ich muss mich wohl etwas tiefer in die 5000-Zeilen HDSS-Sourcecode reingraben.
Sonst sind jetzt Includes verfügbar. Ich habs der übersichtlichkeit so geregelt, das in einer Datei im Hauptordner der Skripts alle Includes stehen.
Man kann mithilfe von #include "" nicht nur eine Datei laden, man kann jetzt auch mithilfe von #IncludeDir "" einen ganzen Ordner, sprich alle Skripte die dort drin sind auslesen. Das erspart viel Arbeit.

~edit~: Hab noch vergessen zu sagen, das mittlerweile das Skriptsystem auf der sog. 2 Stufe, also Variabeln vom Programm und umgekehrt ansprechen kann. So kann man eben z.B. die Playerleben etc. ansprechen. Früher konnte man das zwar auch, aber da war die Variable im Skript eine Art Referenz. D.H. es waren immer zwei Variabeln da, im Skript und im Programm.

mfG

Alles in Ordnung

Mittwoch, 5. März 2008 von peacemaker
So, heute habe ich mal wieder nich sehr viel gemacht.
Ich hab mal die HDSS-Engine angepasst, bzw. ihr Grundkonzept, also wie sie z.B. mit internen Funktionen (welche im Sourcecode selber definiert sind) umgeht.
Das neue Konzept ist etwas mühsamer, weil da noch mehr per Hand gemacht werden muss, dafür isses auch sehr schnell.

In Fakt wurde jetzt einfach gemacht, das immer gleichzeitig abgefragt wird, ob ein Befehl im Skript vorkommt. Früher wars so, das immer nacheinander abgefragt wurde, ob ein Befehl vorkommt, also stark vereinfacht mit Pseudocode:

Code: [AUSKLAPPEN]

if (BefehlKommtVor ("message"))
{
 message param [1]$;
};
// usw ...


Des weiteren habe ich ein paar Tests mit dem CPU-Verbrauch / RAM / VRAM - Auslastung etc. gemacht.
Und ich bin erstaunt, es ist alles ok. Sowohl der RAM als auch das VRAM war, auch bei grösseren Maps sehr schön. Ich hatte mir schon Sorgen gemacht, das die teils relativ grossen Texturen Probleme machen. Scheint nicht der Fall zu sein.
Nun, Quests und Dialoge funktionieren nun, der komische Bug ist weg. Es lag an einer Funktion von HDSS.

Da die Skriptengine mittlerweile so schnell geworden ist, habe ich mich entschlossen alle States (Zustände für NPCs/Monster/Tiere/nutzbare Objekte (Bank, Bett, etc) per Skript zu machen.
Das ganze wird dann einfach in drei Funktionen aufgeteilt, welche bei onStart, onLoop und onEnd (am Anfang, die Schleife, während es gemacht wird und beim Schluss).
Bei einem Angriffstate wäre das folgendes Skript:

Code: [AUSKLAPPEN]

INSTANCE (CAI_State)
{
 name = AI_STATE_ATTACK_NPC_01;
 state = NPC_FIGHT_STATE_ATTACK;
 onStart= this.onStart;
 onLoop = this.onLoop;
 onEnd  = this.onEnd;
};

func AI_STATE_ATTACK_NPC_01.onStart (var AI_Object ob)
{
 animate ob, ob.anim.attack01;
 ob.FightAI.state = NPC_FIGHT_STATE_ATTACK;
};

func AI_STATE_ATTACK_NPC_01.onLoop (var AI_Object ob)
{
 // Einfach so zum Spass leben abziehen:
 ob.npc_attribute.live = ob.npc_attribute.live - 0.1;
};

func AI_STATE_ATTACK_NPC_01.onEnd (var AI_Object ob)
{
 animate ob, ob.anim.none;
 ob.FightAI.state = NPC_FIGHT_STATE_NONE;
};

Ist noch etwas unausgereift und fehlerhaft, wird denke ich aber schon noch.
Diese 'AI_Object'-Instanzen da sind Objekte der Mutterklasse von allen AI-Sachen. NPCs, Monster, Tiere, ....

mfG

Questsystem = neue Probleme

Dienstag, 4. März 2008 von peacemaker
So, ich muss jetzt auch mal was erzählen, nicht das ihr denkt es wäre hier was eingeschlafen.
Ich hab mich mal mit Questsystem auseinandergeseetzt. Irgendwie ist das so etwas simples, trotzdem hat es mir sehr viel Ärger gemacht und mittlerweile funkltionieren Dialoge deswegen teilweise nicht. Standardsituation. Aber egal, wird schon noch.
Wenigstens funktionieren Quests einigermassen.
Das System ist sehr simpel zu erklären: es gibt drei Questevents (gibt noch mehr, die drei sind aber die wichtigsten): onStart, onSuccess, onRun. Je nach Queststatus wird eine dieser Events (d.H. genauer gesagt Funktion) ausgeführt.

Ich zeig Euch mal ne billige kleine Quest. Eine Simple "Hol dir die Information von NPC x"-Quest.

Code: [AUSKLAPPEN]
INSTANCE (CQuest)
{
   name = "Informationssuche";
   ID   = Quest_InformationsSuche;
   onStart = Quest_onStart;
   onRun    = Quest_onRun;
   onEnd   = Quest_onEnd;
   // ne Zusatzvariable erstellen:
   var bool bPlayerKnowsInfo;
};

func Quest_onStart ()
{
   message "Spieler! Du hast ne Quest!";
   // einen Dialog für NPC freischalten :
   // (Hier bekommt der Spieler Informationen):
   ActiveDialog 3, Dia_Isomer_GibInfosRaus;
};

func Quest_onRun ()
{
   // Wenn spieler Infos bekommen hat:
   // (Wird im Dialog zu True gemacht:
   if (TQuest.bPlayerKnosInfo==TRUE)
   {
      ActiveDialog 2, Dia_Asoren_BelohnungFuerInfos;
      QuestEnd ();
   };
};

func Quest_onEnd ()
{
   message "Du hast ne Quest gelöst!";
};

Das ganze ist relativ simpel. ActiveDialog, macht, das ein NPC einen Dialog durchmacht, wenn man ihn anquatscht, oder er den Spieler automatisch anquatscht.

mfG

Gehe zu Seite Zurück  1, 2, 3 ... 9, 10, 11, 12  Weiter