eigene Objekte TEil1: Packs und Definition.txt
4 verfasser
Seite 1 von 1
eigene Objekte TEil1: Packs und Definition.txt
Eigene Objekte Teil 1: Packs und Definition.txt
joa, da ich denke, das mein oder mein und alras Tutorial zur Flint-Erstellung vielleicht etwas zu viel auf einmal war, und ich nicht glaube, das euch eine Textur pro Objekt reicht, hab ich mir gadacht eine vllt. 3-Teilige Tutorialreihe fürs Erstellen und Einbinden von eigenen Objekten zu schreiben, damit es in nächster Zeit vielleicht mehr so schöne Packs wie das kakerlakepack gibt
also:
ok fangen wir ganz am Anfang an:der Aufbau von Packs und Szenarien
Beide werden in anderen Ordnern gespeichert und im Gegensatz zu Clonk Rage funktionieren auch keine Packs, die innerhalb von Szenarien sind.
Also immer Packs im GWX\Packs erstellen und Szenarien im Ordner GWX\Szenarien!
Objekte müssen selbstverständlich immer in Packs erstelt werden.Objekte werden von gwX als solche gesehen und debuggt, wenn sie eine definition.txt besitzen, wenn kein Script vorhanden ist,kommt zwar ein Fehler, aber das Spiel wird normal(nur ohne dieses Objekt,weil alle Funktionen, die das Objekt sichtbar machen, in der script.txt stehn(müssen))gestartet.
Kommen wir nun also zur Definition.txt
Erstellt also eine neue Textdatei und nennt sie definition
Grundsätzlich ähnelt sie der defcore.txt aus Clonk Rage, also gilt für das setzen von Eigenschaftswerten, die auf die ich gleich noch genauer eingehe:
gravity=1
Der Unterschied zur DefCore aus Clonk Rage ist allerdings, dass die Datei wesentlich weniger Werte besitzt, und Eigenschaften wie "verschiebbar","steuerbar(R drücken)","aufnehmbar" in der script Datei und nich der definitions Datei gelöst werden.
Hier eine Übersicht der Eigensachften, und was sie bedeuten:theorethisch können alle Eigenschaften weggelassen werden, was allerdings bei manchen keinen Sinn macht
gravity Wenn 1, Verhält sich das Objekt gemäß der Schwerkraft, Wenn 0,wird die Richtung im Flug nur durch Kollisionen mit anderen Objketen geändert
friction Gibt an, wie weit das Objekt bei einem Aufprall wieder zurück fliegt(ein gutes Beispiel zum Verstehen ist ein Flummi), Standartwert ist 0,Höchstwert ist 100
mass Gibt das Gewicht das Objektes an,also wie weit das Objekt fliegt, wenn man es wirft,Standartwert(z.B. beim Stein) ist 100,bei 0 ist das objekt unbeweglich,gut um zum Beispiel die Wurfweite eines Schneeballs zu erhöhen
reserve Gibt an, wie viele Locals(kommt im Script) im Script benutzt werden
name Ein guter Name für das Objekt, zum Beispiel für "trägt NAME in der hand"
desc Eine Beschreibung für das Objekt, wird zum Beispiel im Kaufmenü angezeigt, sollte nicht zuuu lang sein
vertices Gibt die anzahl der Kollisionskugeln, oder Vierecken an
vertexx X-Position des MittelPunkts der Vertices, mehrere Werte werden durch "," getrennt(Wenn ich zeit hab, mach ich auch noch mal ein Vertice Tutorial
vertexy Y...
vertexz Z...
vertexr Radius der Vertex-Kugel(Radius=Durchmesser : 2), bei viereckigem Vertex Die hälfte der Breite und Tiefe(Grundfläche von viereckigen Vertices können nur Quadrate sein
vertexh Wenn nicht angegeben oder 0, Kugel Vertex, wenn angegeben die Hälfter der Höhe des Vertex
zum Schluss noch ein Beispiel: ein eigentlich normales Objekt,mit der Größe eines Steins oder Flints,das leerdings etwas weiter fliegt als ein Stein oder Flint
So, das wärs mit dem ersten Tutorial,weitere folgen
Eigene Objekte Teil 2: die Script.txt
So, seit dem letzten Tutorial könnt ihr jetzt (zumindest wahrscheinlich, bei Fragen könnt ihr einfach in diesem Threath oder oder bei Scripting & Hilfe posten) die "definition.txt" erstellen. Leider (oder auch nicht, gwx-script ist seeehr schnell, und dadurch, dass sehr viel im script geregelt wird, kann man auch sehr große Änderungen innerhalb eines Objekts durchführen, ohne dass man ein 2tes machen muss) ist das nur der 1ste Teil, den man brauch, um ein schönes Objekt zu erstellen.Der zweite ist wie schon erwähnt eben die script.txt
In ihr wird geregelt:
1.Das Verhalten des Objekts, wenn es z.B. ein anderes berührt, oder eine Taste gedrückt wurde
2.Das Aussehen des Objekts, also welches Bild (Textur) auf das Model bei welchem Material gelegt werden soll
3.Von welchem Objekt das Objekt aufgenmmen werden kann
in der definition.txt werden also nur die physikalischen Eigenschaften und die Vertices geregelt.
gucken wir uns doch einmal den Script eines Steines an:
so, das war der Gesamte, fangen wir bei der ersten Funktion an:
Funktionen sind in gwx allgemein so aufgebaut:
cdecl stein_load[/code] Hier beginnt die Funktion, die sachen die du also in den {...} Klammern hast, werden ausgeführt, wenn das Objekt am Anfang geladen wird
Ohne das laden kann das Objekt die Bilder und Modell-Dateien nicht nutzen und anzeigen, und es werden fehler kommen, also immer dran denken, alle Ressourcen in objekt_load zu laden.Die Endungen der Ressource (also z.B. .3ds, .png oder .jpg) muss/darf man nicht dahinter schreiben, deswegen düfen 2 Bilder oder Modelle nie den selben Name haben.
so schwer war das doch garnicht :), nun zur 2ten Funktion
wenn man also eine Textur auf das gesamte Modell legen will, gilt allgemein:
die Objekt_Hit Funktion wird immer ausgeführt, wenn das Objekt auf den Boden oder andere Objekte stößt
Wenn das passiert, und o2 (getroffenes OBJEKT) nicht(<>) 0 ist, wird dem getroffenen Objekt Geschwindigkeit des Steins durch 2 Schaden hinzugefügt.
Ja, schon fast fertig mit der Scripterklärung, nur noch eins:
HIER IST ERSTMAL BAUSTELLE, ES WIRD WEITERGEARBEITET
joa, da ich denke, das mein oder mein und alras Tutorial zur Flint-Erstellung vielleicht etwas zu viel auf einmal war, und ich nicht glaube, das euch eine Textur pro Objekt reicht, hab ich mir gadacht eine vllt. 3-Teilige Tutorialreihe fürs Erstellen und Einbinden von eigenen Objekten zu schreiben, damit es in nächster Zeit vielleicht mehr so schöne Packs wie das kakerlakepack gibt
also:
ok fangen wir ganz am Anfang an:der Aufbau von Packs und Szenarien
Beide werden in anderen Ordnern gespeichert und im Gegensatz zu Clonk Rage funktionieren auch keine Packs, die innerhalb von Szenarien sind.
Also immer Packs im GWX\Packs erstellen und Szenarien im Ordner GWX\Szenarien!
Objekte müssen selbstverständlich immer in Packs erstelt werden.Objekte werden von gwX als solche gesehen und debuggt, wenn sie eine definition.txt besitzen, wenn kein Script vorhanden ist,kommt zwar ein Fehler, aber das Spiel wird normal(nur ohne dieses Objekt,weil alle Funktionen, die das Objekt sichtbar machen, in der script.txt stehn(müssen))gestartet.
Kommen wir nun also zur Definition.txt
Erstellt also eine neue Textdatei und nennt sie definition
Grundsätzlich ähnelt sie der defcore.txt aus Clonk Rage, also gilt für das setzen von Eigenschaftswerten, die auf die ich gleich noch genauer eingehe:
- Code:
Eigenschaft=Wert
gravity=1
Der Unterschied zur DefCore aus Clonk Rage ist allerdings, dass die Datei wesentlich weniger Werte besitzt, und Eigenschaften wie "verschiebbar","steuerbar(R drücken)","aufnehmbar" in der script Datei und nich der definitions Datei gelöst werden.
Hier eine Übersicht der Eigensachften, und was sie bedeuten:theorethisch können alle Eigenschaften weggelassen werden, was allerdings bei manchen keinen Sinn macht
gravity Wenn 1, Verhält sich das Objekt gemäß der Schwerkraft, Wenn 0,wird die Richtung im Flug nur durch Kollisionen mit anderen Objketen geändert
friction Gibt an, wie weit das Objekt bei einem Aufprall wieder zurück fliegt(ein gutes Beispiel zum Verstehen ist ein Flummi), Standartwert ist 0,Höchstwert ist 100
mass Gibt das Gewicht das Objektes an,also wie weit das Objekt fliegt, wenn man es wirft,Standartwert(z.B. beim Stein) ist 100,bei 0 ist das objekt unbeweglich,gut um zum Beispiel die Wurfweite eines Schneeballs zu erhöhen
reserve Gibt an, wie viele Locals(kommt im Script) im Script benutzt werden
name Ein guter Name für das Objekt, zum Beispiel für "trägt NAME in der hand"
desc Eine Beschreibung für das Objekt, wird zum Beispiel im Kaufmenü angezeigt, sollte nicht zuuu lang sein
vertices Gibt die anzahl der Kollisionskugeln, oder Vierecken an
vertexx X-Position des MittelPunkts der Vertices, mehrere Werte werden durch "," getrennt(Wenn ich zeit hab, mach ich auch noch mal ein Vertice Tutorial
vertexy Y...
vertexz Z...
vertexr Radius der Vertex-Kugel(Radius=Durchmesser : 2), bei viereckigem Vertex Die hälfte der Breite und Tiefe(Grundfläche von viereckigen Vertices können nur Quadrate sein
vertexh Wenn nicht angegeben oder 0, Kugel Vertex, wenn angegeben die Hälfter der Höhe des Vertex
zum Schluss noch ein Beispiel: ein eigentlich normales Objekt,mit der Größe eines Steins oder Flints,das leerdings etwas weiter fliegt als ein Stein oder Flint
- Code:
gravity=1
mass=200
name=tollerStein
desc=ein tolles Objekt
vertices=1
vertexx=0 //kann weggelassen werden
vertexy=0 //kann weggelassen werden
vertexz=0 //kann weggelassen werden
vertexr=100
vertexh=0 //kann weggelassen werden
So, das wärs mit dem ersten Tutorial,weitere folgen
Eigene Objekte Teil 2: die Script.txt
So, seit dem letzten Tutorial könnt ihr jetzt (zumindest wahrscheinlich, bei Fragen könnt ihr einfach in diesem Threath oder oder bei Scripting & Hilfe posten) die "definition.txt" erstellen. Leider (oder auch nicht, gwx-script ist seeehr schnell, und dadurch, dass sehr viel im script geregelt wird, kann man auch sehr große Änderungen innerhalb eines Objekts durchführen, ohne dass man ein 2tes machen muss) ist das nur der 1ste Teil, den man brauch, um ein schönes Objekt zu erstellen.Der zweite ist wie schon erwähnt eben die script.txt
In ihr wird geregelt:
1.Das Verhalten des Objekts, wenn es z.B. ein anderes berührt, oder eine Taste gedrückt wurde
2.Das Aussehen des Objekts, also welches Bild (Textur) auf das Model bei welchem Material gelegt werden soll
3.Von welchem Objekt das Objekt aufgenmmen werden kann
in der definition.txt werden also nur die physikalischen Eigenschaften und die Vertices geregelt.
gucken wir uns doch einmal den Script eines Steines an:
- Code:
cdecl stein_load
{
loadmodel("model_stein");
loadtexture("stein_textur");
loadtexture("stein_titel");
}
cdecl stein_render(o)
{
//defaultrender(o);
glscale(200,200,200);
glenable(gl_texture_2d);
glbindtexture(gl_texture_2d,getid("stein_textur"));
gluseshader(getid("bump"));
glcalllist(getid("model_stein"));
}
cdecl stein_hit(o,o2)
{
if(o2<>0){dodamage(o2,length(getspeed(o))/2);};
}
cdecl stein_intern(t)
{
if(t=getid("clonk")){return 1;};
if(t=getid("geld")){return 1};
if(t=getid("menuitem")){return getid("stein_titel")};
}
so, das war der Gesamte, fangen wir bei der ersten Funktion an:
Funktionen sind in gwx allgemein so aufgebaut:
- Code:
Name des Ordners, in dem die definition.txt und die script.txt drin sind(=Name des Objekts)_(Unterstrich)Name der Funtion diese Objektes
- Code:
Clonk_Render
- Code:
Flint_Hit
cdecl stein_load[/code] Hier beginnt die Funktion, die sachen die du also in den {...} Klammern hast, werden ausgeführt, wenn das Objekt am Anfang geladen wird
- Code:
{
- Code:
loadmodel("model_stein");
- Code:
loadtexture("stein_textur");
loadtexture("stein_titel");
Ohne das laden kann das Objekt die Bilder und Modell-Dateien nicht nutzen und anzeigen, und es werden fehler kommen, also immer dran denken, alle Ressourcen in objekt_load zu laden.Die Endungen der Ressource (also z.B. .3ds, .png oder .jpg) muss/darf man nicht dahinter schreiben, deswegen düfen 2 Bilder oder Modelle nie den selben Name haben.
- Code:
}
so schwer war das doch garnicht :), nun zur 2ten Funktion
- Code:
cdecl stein_render(o)
{
//defaultrender(o);
glscale(200,200,200);
glenable(gl_texture_2d);
glbindtexture(gl_texture_2d,getid("stein_textur"));
gluseshader(getid("bump"));
glcalllist(getid("model_stein"));
}
- Code:
cdecl stein_render(o)
- Code:
{
- Code:
glscale(200,200,200);
- Code:
glenable(gl_texture_2d);
- Code:
glbindtexture(gl_texture_2d,getid("stein_textur"));
- Code:
gluseshader(getid("bump"));
- Code:
glcalllist(getid("model_stein"));
- Code:
}
wenn man also eine Textur auf das gesamte Modell legen will, gilt allgemein:
- Code:
{
glscale(100,100,100); //normale Modellgröße, kann auch ganz weggelassen werden, wenn alle Werte 100 % sind
glenable(gl_texture_2d);
glbindtexture(gl_texture_2d,getid("TEXTUR"));
glcalllist(getid("MODELL"));
}
- Code:
cdecl stein_hit(o,o2)
{
if(o2<>0){dodamage(o2,length(getspeed(o))/2);};
}
die Objekt_Hit Funktion wird immer ausgeführt, wenn das Objekt auf den Boden oder andere Objekte stößt
Wenn das passiert, und o2 (getroffenes OBJEKT) nicht(<>) 0 ist, wird dem getroffenen Objekt Geschwindigkeit des Steins durch 2 Schaden hinzugefügt.
Ja, schon fast fertig mit der Scripterklärung, nur noch eins:
- Code:
cdecl stein_intern(t)
{
if(t=getid("clonk")){return 1;};
if(t=getid("geld")){return 1};
if(t=getid("menuitem")){return getid("stein_titel")};
}
- Code:
cdecl stein_intern(t)
- Code:
{
- Code:
if(t=getid("clonk")){return 1;};
- Code:
if(t=getid("geld")){return 1};
- Code:
if(t=getid("menuitem")){return getid("stein_titel")};
- Code:
}
HIER IST ERSTMAL BAUSTELLE, ES WIRD WEITERGEARBEITET
Zuletzt von !cORe!trike994 am Sa 9 Mai 2009 - 12:05 bearbeitet; insgesamt 4-mal bearbeitet
Re: eigene Objekte TEil1: Packs und Definition.txt
Super.
Wenn ich Zeit hab und alle 3 Tutorials zusammen fertig sind, werd ich das TUT in die Entwicklerdoku reinpacken. (Verher natürlich GROSS-und kleinschreibung ändern und Rehctschrebfeler korigirn )
Wenn ich Zeit hab und alle 3 Tutorials zusammen fertig sind, werd ich das TUT in die Entwicklerdoku reinpacken. (Verher natürlich GROSS-und kleinschreibung ändern und Rehctschrebfeler korigirn )
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: eigene Objekte TEil1: Packs und Definition.txt
jo, hab so schon 2 stunden dran gesessen, sry
dange für das lob
dange für das lob
Re: eigene Objekte TEil1: Packs und Definition.txt
ach..öhm..ich hab den 1sten script teil hinzugefügt *uff*
Re: eigene Objekte TEil1: Packs und Definition.txt
Ich glaub irgendwann sammeln wir alle diese Tuts bzw. alle Zwischentuts, die ich im Downloadbereich angedeutet hab und machen die für gwX-Fans als online-Doku.
Wichtig ist vor allem, dass wir immer neue Scripter für gwX gewinnen, danke Trike für den guten Anfang.
Wichtig ist vor allem, dass wir immer neue Scripter für gwX gewinnen, danke Trike für den guten Anfang.
Carli- Admin
- Anzahl der Beiträge : 1001
Anmeldedatum : 02.01.09
Re: eigene Objekte TEil1: Packs und Definition.txt
Ich C++ gelehrnt früher und deswegen kann ich schon einiges^^
Ich find die tut verdamt gut^^
Ich find die tut verdamt gut^^
[Alex- Anzahl der Beiträge : 6
Anmeldedatum : 28.01.09
Re: eigene Objekte TEil1: Packs und Definition.txt
Ich finds auch sehr informativ werd mal probieren mit nem model von nem kumpel n zap zu basteln
Seite 1 von 1
Befugnisse in diesem Forum
Sie können in diesem Forum nicht antworten
|
|