Tehadon

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

Worklogs Tehadon

Katapult

Sonntag, 8. Juni 2008 von peacemaker
grosserboss, einer von unseren 3D-Artists hat dieses schöne Katapult gemacht:

user posted image


Das ganze ist auch schon animiert, zwei Videos von verschiedenen Perspektiven sind hier zu finden:
http://www.file-upload.net/mem...1.avi.html
http://www.file-upload.net/mem...2.avi.html

Es läuft etwas schnell, ingame wirds das natürlich nicht.

Katapulte werden später als sog. IAO (Interactive Objects) gemanagt. Das sind geskriptete Objekte. Bei ner Bank würde das z.B. so aussehen:
Code: [AUSKLAPPEN]

INSTANCE IAO_Bench (CIAO)
{
 name = "Bank" ; // wird im Fokus angezeigt
 onUse= this.onUse; // wird beim Benutzen ausgeführt
 // ... usw
 // hier kommt noch z.B. pfad-angabe, evtl. lebenszeit usw.
};

// beim Ausführen dieser Funktion, wird von System aus
// immer eine Variable namens '$useIAO' (nur als Bsp.)
// mit dem Wert des genutzten IAOs belegt.
// die variable '$user' definiert den Benutzer (NPC-Instanz)
void IAO_Bench::onUse (); // kann auch IAO_Bench.onUse sein
{
  if (NPC_DistanceToIAO ($user,$useIAO) > $user.$actionRadius)
 {
  NPC_GoToIAO ($user, $useIAO)
 } else {
  NPC_Sit ($user, $useIAO.$position)
 };
};


So viel dazu.

mfG

HDSS und zwei Bildchen

Samstag, 7. Juni 2008 von peacemaker
Ave!

So, wie stehts? In letzter Zeit habe ich fast nur an HDSS gearbeitet, bisher ging auch alles ganz gut, aber gestern habe ich irgendetwas falsch gemacht. Jetzt funktionieren ein paar Dinge nicht mehr. Ich sollte endlich lernen SVN oä zu benutzen, dann kanne ich solche Sachen in Zukunft vorbeugen.

Also, zuerstmal zu HDSS:
Code: [AUSKLAPPEN]
print ("blopp1.1.1.1.");

CreateVar ($test);
CreateVar ($second);
CreateVar ($red);
CreateVar ($blue);
CreateVar ($green);

SetVarValue ($test, 999+1);
SetVarValue ($second, 998+3);

SetVarValue ($red,255);
SetVarValue ($green,1);
SetVarValue ($blue,1);


print ($test);

if ($test+1==$second)
{
 setcolor ($red,$green,$blue);
 print ("blublu");
};

Dieses Skript ist nun fehlerfrei ausführbar. Das ganze ist wirklich verdammt schnell, viele Dinge werden beim kompilieren sehr stark optimiert, desshalb ist der Zwischencode ja auch so kompliziert zum Lesen. Nun, das muss ja auch niemand machen, dafür gibts ja den HDSS-Compiler.
Das coole an der Sache: HDSS ist in dieser Form plattformunabhängig (wie Java). Man könnte jetzt auch eine VM (das Programm, das den Zwischencode ausführt) in c++ machen, und diese dann z.B. auf linux zum Laufen bringen. Wirklich Nutzen hat das für Tehadon nicht, aber es ist ein positiver Nebeneffekt.

Nun, das Problem: verschachtelte Funktionen. Dieser simple Code z.B. ist noch nicht möglich, weil der Compiler kein innere-Klammer-Zuerst kennt:
Code: [AUSKLAPPEN]
print abs(-17); // abs liefert in diesem Fall '17' zurück

Hört sich einfach an, ists auch. Nur ist der erste Inplementierungsversuch völlig schief gegangen. Irgendwo stimmt da etwas nicht.

Nun, sonst hatte ich noch vor demnächst mal ein paar gescheite Screenshots zu veröffentlichen. Also habe ich mal angefangen eine etwas mehr sagende Location zu basteln. Wirklich schön und fertig ist sie nicht, hier aber mal ein Zwischenstand.

user posted image

user posted image

Wie gesagt, noch nicht fertig, aber Kritik ist trotzdem erwünscht. Zu sagen ist noch: das Gras kommt schon noch, ausserdem ist das T-Editor-Wasser nicht gerade schön. Das liegt daran das ich ne zu kleine Cubemap benutzt habe und das die Wasserplane zu hoch skaliert ist.
Ingame ist das nicht so, dort siehts bedeutend schöner aus.

mfG

Bäume und HDSS

Samstag, 31. Mai 2008 von peacemaker
Ich habe mal versucht einen Baum zu machen. Sieht zwar noch nicht so gut aus, aber man erkennt was es darstellen soll. Hoffe ich. (Danke nochmals an Shure_Kyu Very Happy)

Ansonsten habe ich noch ein bisschen an der Third-Person-Kamera gewerkelt, man kann sie jetzt, wenn man [P] drückt drehen. Ist halt noch nicht so weich, ausserdem passierts noch oft, das die Kamera hinter einer Wand oä verschwindet. Sowas nervt natürlich gewaltig und muss umbedingt ausgebessert werden. Immerhin habe ich schonmal der Kamera eine Kollisions-Kugel verpasst.

Ein Bild davon:

user posted image

Ich habe noch versucht an HDSS weiterzuwerkeln, aber momentan machen die Variablen ordentlich Stress. Muss ich noch versuchen irgendwie auszubügeln.

mfG

Chatrunde und HDSS

Freitag, 30. Mai 2008 von peacemaker
So, soeben ging die erste Chatrunde vorbei.
Mehr dazu gibt es hier

So, der letzte Eintrag liegt ja eine Weile zurück. Was ist denn sonst noch geschehen? Ich habe HDSS nun generalüberholt. Das ganze basiert jetzt auf einem anderen System, sowohl der Parse / Compiler (mehr dazu später) als auch das Ausführen funktioniert nun stackbasiert.
Da steht ja etwas von Compiler. Nun, nachdem ich mich eine zeit lang mit Compilerbau beschäftigt habe, bin ich zur folgende Idee gekommen: HDSS könnte ja kompiliert sein. Nicht etwa in Maschinencode oder Assembler, sondern in einen Bytecode. So funktioniert ja z.B. auch Java. Das wäre dann relativ low-level, was ein sehr sehr schnelles Ausführen ermöglicht.
Ich habe also schonmal begonnen, und es hingekriegt, das folgender Code ausgeführt werden kann. Dabei zeige ich euch noch (in Strings visualisiert), wie dieser Zwischencode aussieht.

Code: [AUSKLAPPEN]

CreateVar ($var1); CreateVar ($var2);
SetVarValue ($var1,120+20) ; SetVarValue ($var2,80);

Text (20+$var1, 14+$var2, $pi);

Das gibt den Wert von pi (3.141592654) aus.
So, der Zwischencode würde dann so ungefähr aussehen (hab ich jetzt vom Kopf geschrieben, ungetestet):
Code: [AUSKLAPPEN]

CREATE_VAR
1
CREATE_VAR
2
SET_VAR_VALUE
1
ADD
120
20
SET_VAR_VALUE
2
80
TEXT
ADD
20
GET_VAR_VALUE
1
ADD
14
GET_VAR_VALUE
2
STRING
CONST
PI

Das funktioniert nun mehr oder weniger perfekt, und sehr schnell. Ich weiss, etwas lange, aber der Computer hat damit weniger Probleme als beim oberen.
Vlt fällt euch ja auf, das ich oben die Funktionen CreateVar und SetVarValue benutze. Das ist nur ein Text, ich hatte noch keine Zeit nen Parser zu machen, welcher var $name und $name=120; macht. Kommt aber noch.

mfG

Chatrunde im Channel

Dienstag, 27. Mai 2008 von peacemaker
So, am Donnerstag, den 29.Mai, um 20.00 veranstalten wir eine kleine Chatrunde im Tehadon-Channel.

Folgende Themen werden besprochen:
Zitat:

- First/Third-Person
- Rauschmittel in Tehadon
- Items reparieren
- Magiesystem
- sonstige Wünsche / Anregungen


Es ist natürlich jeder willkommen, jeder kann so auch seinen Teil an Tehadon beitragen Very Happy

Wo sich der Channel befindet und wie ihr reinkommt könnt ihr hier nachlesen:
http://www.tehadon.de/channel.html

HDSS Stress

Sonntag, 25. Mai 2008 von peacemaker
So, heute ein kleinerer Eintrag.

Wirklich weiter bin ich ja nicht gekommen. Irgendwie macht HDSS wieder ordentlich Stress und ich merke das ich ein paar Dinge teilweise falsch angepackt habe. Ein grosses Problem ist das wohl nicht, das werd ich dann im Laufe der nächsten Tage etwas abändern.
Nur ist sowas dann doch etwas schwierig. Solche komplexe Dinge wie die Skriptengine darf man nicht allzu gross verändern, ohne damit zu rechnen, das plötzlich gar nichts mehr geht. Ausserdem benutzt fast jedes sonstige System HDSS. Sei es AI-System, Event-System, Item-System, GUI-System (teilweise), Dialog-System, ...
Ich könnte auch einfach eine völlig neue Skriptengine aus dem Boden stampfen. Aber das will ich (noch?) nicht. Ich denke für sowas müsste ich aber nicht mehr als eine WE einplanen (hab ich ja auch schon geschafft). Aber nein, ich bleibe bei diesem System und werde demnächst versuchen das ganze zu verbessern/abzuändern.

Nun, wo klemmts noch?
Die If-Abfragen funktionieren ja eigentlich perfekt, es sind jetzt auch beliebig oft geschachtelte Abfragen möglich. Ohne jedwelchen Speedverlust.
Also so etwas, ist problemlos möglich:
Code: [AUSKLAPPEN]

if (bBla==TRUE)
{
 if (bBli==TRUE)
 {
  if (bBblabla=FALSE)
  {
    if (bBliblablblu=TRUE)
    {
      // ... usw.
    };
  };
 };
};

Nun, Funktionen gehen ja auch irgendwie. Zwar stimmt etwas mit dem Return-Wert nicht, aber das ist halb so schlimm.

Mich besorgen eher solche simplen Terme wie der folgende:
Code: [AUSKLAPPEN]

var int bla;
bla=1+(2*6)*len(console.in("dein name:"))*(1+(5-8))^(3*6)

Sowas löst man normalerweise mit Syntax-Bäumen. Nach einem bisschen Überlegen bin ich da auf folgende Lösung gekommen:
einfach aufteilen. (in Token, kennt ihr vlt. Wird bei Skriptsprachen und Compiler genutzt)
Code: [AUSKLAPPEN]

// aus 1+(1+len("bla")) wird dann:
LEN
"bla"
ADD
1
ADD
1
So ungefähr. Ich muss jetzt halt noch schauen wie gut ich das Umsetzen kann.

mfG

Teamzuwachs, GUI, Scrollbar und sonstiges

Samstag, 24. Mai 2008 von peacemaker
So, wir haben Zuwachs bekommen! Willi, ein ziemlich erfahrener Programmierer hat sich dem T-Team angeschlossen. Zunächst nur als Externen Mitarbeiter, aber schon bald wird er uns wohl tatkräftig unterstützten.
So, und kaum ist er da, hat er sich bereit erklärt die GUI zu machen. Da er schon diverse Erfahrungen damit hat (er hat die bUId sehr stark modifiziert, wesshalb er sich einigermassen damit auskennt) sich bereit erklärt, die komplette GUI zu übernehmen.

So hat er also die ziemlich verbuggte Scrollbar entbuggt. Die ist nun eigentlich fast fertig, es fehlen noch die oben-unten-Buttons, wobei das ja sehr wenig Arbeit ist.
Ihr könnt euch hier eine kleine Scrollbar-Demo runterladen, die Grafiken sind natürlich nicht final und von mir in Paint erstellt.
http://tdata.td.funpic.de/_Use...ollbar.zip

Was war noch? Nun, ich habe etwas an der Skriptsprache gewerkelt. Und zwar habe ich Teile des Funktions-Systems überarbeitet. Externe (im Skript definierte) Funktionen können zwar noch Werte zurückliefern, das funktioniert jetzt aber etwas... unbequemer.
Interne Funktionen sind immer noch so wie früher.
Als Beispiel:

Code: [AUSKLAPPEN]

// externe Funktion abrufen:
CallFunc (Add,120,15);
Console.Out "120+15 ergibt %funcReturnValue%"

// interne Funktion abrufen:
var int iLen = len ("abcdefghijklmnopqrstuvwxyz");
// ausgeben
console.out "Das Alphabet hat %iLen% Buchstaben";

// eine externe funktion
func Add (var int nr1, nr2)
{
return c(nr1+nr2);
};


Was demnächst gemacht wird, ist das Inventar samt NPC-Inventar. Dann kann man auch endlich das Tauschen / Ausrauben mit/von NPCs visualisieren, bisher ging das immer über die Konsole.
D.H. wenn man z.B. einen NPC umgebracht hat, erscheint auf der linken Seite sein Inventar, von welchem man Items in sein eigenes droppen kann. Oder alle auf einmal, geht auch.

Wäre das gemacht könnten wir, bereits eine Demo releasen. Die würde aber wohl keinen Kampf beinhalten, wesshalb das wohl nicht so eine gute Idee ist.
Ausserdem sind ja da noch die IAOs, die Interactive Objects. Das sind Objekte wie eine Bank, Schleifstein, Amboss, Lagerfeuer, etc.
Dort stecken wir noch in der Konzept-Phase, ich dachte zwar an ein ähnliches System wie Items, also mit so einem OnUse-Event, aber es ist fraglich ob das genug Freiheiten bieten würde.
Hier müsste man noch alle Punkte durchgehen.

mfG

Item-Box

Samstag, 17. Mai 2008 von peacemaker
So, ich habe mal wieder etwas weitergewerkelt.

Woran? Wie schon letztes Mal gesagt, müsste ja das Inventar neu gemacht werden. Also habe ich das GUI-System um ein Element erweitert: die Item-Boxen. Damit kann man Items (Icons) von einem Kästchen zum anderen drag'n'droppen. Das ganze funktioniert ganz gut, bisher sind mir keine Bugs aufgefallen.

Wer es testen will:
http://tdata.td.funpic.de/_Use...UIItem.exe

Es wäre nett, wenn ihr alle Bugs melden würdet Very Happy
Und achtet nicht allzu sehr auf die Optik, die Farben sind automatisch generiert, die Icons sind in Echtzeit erstellt. Auch gibt es keine Alpha-Effekte, wesshalb die Verschiebe-Version der Items so komisch ausgefallen ist.

mfG

kleine Teamdemo und Items aufsammeln

Mittwoch, 14. Mai 2008 von peacemaker
So, auf zum Nächsten!

Nachdem ich intern eine kleine Techdemo fürs Team gemacht habe, ist mir aufgefallen, wie bequem und cool das ganze Content-System von Tehadon ist. Quest sind sehr einfach und übersichtlich, Eventskripte sowieso. Auch sonst, Dialoge und co. sind sehr bequem. Ich freue mich schon auf die Editing-Phase!
Zur Demo selber gibts nicht viel zu sagen: sie war eher klein, hatte eine mehrteilige Quest und zeige mehrere Systeme. So unter anderem das Questevent-System, das Dialog-System und ein klein wenig das TA-System, wobei die TAs der NPCs noch nicht allzu interessant sind. Das liegt daran, das sie nur herumlaufen und herumstehen können, Dinge wie Interaktive Objekte nutzen liegt noch nicht drin. Ich warte noch auf die Animationen, die aber sicherlich bald eintrudeln werden.

Was war noch? Diese Techdemo hat mir etwas entscheidendes gezeigt: das Inventar bzw. die Strukturierung ist eher Schrott als gut. Klar, das lezte Inventar war noch viel schlimmer, aber dieses hier gefällt mir nicht so. Hat noch ein paar Bugs die mir nicht gefallen, ausserdem sind auch vom Item-System her, neue Dinge hinzugekommen. Neu machen ist unumgänglich, optisch wird sich aber kaum etwas ändern. Eher intern, diese Bugs lasten schwer.
Was auch noch zu tun ist, ist das komplette Text-System generalüberholen. Ich habe diverse fertige Lösungen gefunden, die teilweise sehr schön, schnell und gut waren.
Tja, sonst: man kann herumlaufen, das Kollisionssystem ist mehr schlecht als recht.

Was ich jetzt auch noch integriert habe, ist die Möglichkeit, Items vom Boden auflesen zu können. Das funktioniert fehlerfrei, hat aber noch keine Animation. Items die im Sichtfeld und genug nah sind, werden jetzt auch im Fokus angezeigt.
Hat man ein Item aufgenommen, wird eine sog. OnTake-Funktion (wird beim Erstellen des Items angegeben) ausgeführt. Aber nur, wenn eine vorhanden ist. So kann man dem Spieler anzeigen, wenn er ein besonderes Item gefunden hat. Oder man kann z.B. machen, das wenn er Gift ins Inv nimmt, dieses ihm stetig Leben abziehen. Dieses und noch vieles mehr.

Tja, ab jetzt solls etwas schneller gehen. Die AI-Perceptions werden demnächst neu gemacht, das Pathfinding wieder inplementiert, NPC-ItemUseSystem reingetan.

Tja, was fehlt dann? Partikeleffekte, Bogensystem, vernünftige Kollision, einige Skriptbefehle und so weiter.

mfG

lang ists her

Dienstag, 6. Mai 2008 von peacemaker
Wow, der letzte Artikel ist ja schon sehr alt. Und nein, die Entwicklung ist natürlich nicht stehen geblieben. Ich hatte durch diverse RL-Sachen etwas weniger Zeit, trotzdem konnte ich doch einige Sachen machen.
Wie der ein oder andere vlt weiss, hat einer unserer 3D-Artisten, Domi einen sehr coolen Intenar gemacht sowie animiert. Ich hab jetzt angefangen eine komplett neue Steuerung zu machen und diverse AI-Systeme auf die coolen Animationen anzupassen.
Bisher kann man schon: herumlaufen, waffe ziehen/zurückstecken, in Kampfstellung gehen.
Das Waffe-Ziehen und wieder weg tun ist ganz cool finde ich. Hat man eine Waffe gezogen, geht der Player-Char automatisch in den Kampfmodus, d.H. auch in die entsprechenden Kampfstellungen und Animationen. Das ganze sieht ingame sehr cool aus, evtl. muss mal ein Video davon kommen.

Was auch noch gemacht wurde, ist das Tagesablauf-System der NPCs. Ich hab es komplett neu gemacht. Das alte war gut, ohne Frage, aber es gab ein paar komische Fehler, die ich auch nach stundenlanger Suche nicht finden konnte. Dazu gehört z.B., das NPCs manchmal einfach herumgezuckt sind, weil sie zu verschiedenen Waypoints gleichzeitig gehen mussten. Oder irgendetwas ging komplett durcheinander, NPCs "frassen" sich gegenseitig die TA-Skripte weg. Also habe ich einfach mal Flugs ein neues entwickelt, welches schon wunderbar prächtig funktioniert und dazu noch sehr schnell ist und sehr viel Freiraum bietet.
Die Skripte sehen immer noch sehr ähnlich aus, es hat jedoch jetzt noch ein paar Funktionen mehr gegeben, dazu später mehr.

Des weiteren habe ich mir überlegt, wie man die TAs am Besten macht. Klar, mit nem Editor. Also habe ich schon mal mit nem Konzept begonnen und bin auf folgende idee gekommen: man zeichnet einfach in solchen Blöcken auf einem Zeistrahl die Dinger, die der NPC von wann bis wann wo macht. Natürlich bietet das auch Bequemlichkeiten wie z.B. einen Waypoint anwählen, sodass der Name eingefügt wird, etc.
Hier mal das Konzept-Bild:

user posted image

Ich denke es bedarf keiner Erklärung.

Wie funktionieren nun die TA-Skripte? Wie gesagt, immer noch mit solchen Time-Blöcken, also:
Code: [AUSKLAPPEN]

TA TA_ID
{
 Time "6.30", "9.30"
 {
  NPC_Stand (WP_TOWN_CENTER_01);
 };
};

Diese Methode gilt immer noch.
Jetzt kann man die TA-Skripte auch so aufbauen:
Code: [AUSKLAPPEN]

CreateTA (TA_ID);
AddBlock (09.00,10.00, TA_ID_9_00_10_00);
AddBlock (12.00,15.00,TA_ID_12_00_15_00)

func TA_ID_9_00_10_00 ()
{
 NPC_Stand (WP_TOWN_02);
};

func TA_ID_12_00_15_00 ()
{
 var item iNextItem = NPC_NextItem (ITEM_KIND_FOOD);
 NPC_Eat (iNextItem);
};

Ich find zweiteres etwas unübersichtlicher, aber an gewissen Stellen ist es vielleicht besser.
Demnächst kommen die AI-Perceptions 100% rein. Das ist die Möglichkeit der NPCs zu "sehen". Das ist eigentlich schon drin, nur reagieren sie bisher nur auf den Spieler. Jetzt möchte ich die Möglichkeit reinbauen, das sie auch andere NPCs erkennen können.
Das brauchen sie, um auf diverse Dinge zu reagieren. Bei uns wird es später möglich sein, ganze Banditenlager zu säubern, ohne einmal eine Waffe zu schwingen. Man könnte z.B. für diese Quest ein Rudel Wölfe zu den Banditen locken, und schon geht die Party los. Die NPCs müssen natürlich, sobald sie die Wölfe sehen, darauf reagieren, sie also z.B. anzugreifen, vorher jedoch noch nen kantigen und passenden Spruch abzulassen :biggrin:.

Noch etwas zur Banditenhöhle: so etwas kann man auf viele Wege lösen. Man kann z.B. per Hand auf billigstem Weg reingehen und sie versuchen umzubringen. Das ist relativ schwierig, egal wie stark man ist. Desshalb werden viele Quests auch solchen taktische Möglichkeiten wie die oben erwähnte als eigentlichen Lösungsweg vorziehen.
Man könnte aber auch unter den NPCs Streit auslösen. Reinschleichen, Pfeil abfeuern, dazwischen sollte noch ein Bandit stehen, und schon greifen sie sich an. Oder einfach einen nach dem anderen Rauslocken oder à la Splinter Cell einen nach dem anderen so ins Nirvana schicken.
Solche Dinge sind Bestandteil der AI und ermöglichen ein paar interessante Quests. Wer überlegt, wird wohl am weitesten kommen, wer sich aufs Schwert verlässt nicht.

Unsere Grafiker waren in letzter Zeit noch relativ fleissig, und haben gleich 3 Making-Ofs geschrieben.
http://www.forenberg.de/forum/...eht-t2788/
http://www.forenberg.de/forum/...ers-t2766/
http://www.forenberg.de/forum/...sel-t2785/

Alle anderen Making-Ofs sind wie immer hier zu finden:
http://www.forenberg.de/forum/...ichte-b13/

Und: ihr werdet demnächst mehr sehen. Versprochen. Sicherlich Screenshots, von einer kleinen Location, die ich erstellt habe, aber vlt auch ein Video der NPCs in Action. Darauf wartet der ein oder andere ja sicherlich. Laughing

mfG peacemaker

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