 |
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
The Lord of Programming Living Legend

Alter: 37 Anmeldedatum: 14.03.2003 Beiträge: 3122
Medaillen: Keine
|
Verfasst am: 30.12.2003, 13:50 Titel: |
|
|
Ein Nachteil kann allerdings sein, dass der Spieler dann wichtige Spieledaten gezielt verändern kann.
PS: Ich verwende die textbasierte Variante auch gerade in meinem RPG. _________________ www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console
Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet... |
|
Nach oben |
|
 |
xardias JLI Master

Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 30.12.2003, 14:31 Titel: |
|
|
Ich bastel an einem Action Jump'n'Run, da benutze ich XML für die Level Dateien. z.B:
Code: | <?xml version="1.0" encoding="iso-8859-1"?>
<GuardianMapFile version="1.1.1">
<Header>
<Script src="path/to/script.amx" />
</Header>
<AuxLayer id="0">
<Bitmap x="0" y="0" w="512" h="512" src="path/to/file.jpg" >
<RepeatX w="128" />
<WrapY h="256" />
<Light x="0" y="0" w="512" h="512" src="path/to/lightfile.jpg" >
<center x="0.5" y="0.5" />
</Light>
</Bitmap>
<Bitmap x="128" y="256" w="32" h="64" src="path/to/file2.jpg" >
<StretchX />
<StretchY />
</Bitmap>
</AuxLayer>
<CollisionLayer>
<Rect x="0" y="0" w="512" h="512" />
<Rect x="128" y="256" w="32" h="64" />
</CollisionLayer>
</GuardianMapFile> |
Das ganze hat den Vorteil, dass man einfach weitere eigenschaften und optionen einbauen kann, wie hier Lichtquelle, oder Blitting eigenschaften.
Man kann das ganze natürlich auch ohne XML in statischer version machen.
Dynamische Objekte, wie spieler oder so habe ich jedoch ganz anders, die sind direkt in einem script drin. Hat den Vorteil, dass man im Script selbst auf die Objekte zugreifen kann, ohne große Suchroutinen.
[EDIT]
Ach ja ganz vergessen. um XML Dateien zu lesen gibt es eine praktische und einfache Lib namens TinyXml: http://www.grinninglizard.com/tinyxml/
Und zum theme Scriptsprache kann ich das hier empfehlen:
http://www.compuphase.com/small.htm
[/EDIt] |
|
Nach oben |
|
 |
TheMillenium Dark JLI'ler
Anmeldedatum: 21.07.2002 Beiträge: 1427 Wohnort: World Medaillen: Keine
|
Verfasst am: 30.12.2003, 21:55 Titel: |
|
|
The Lord of Programming hat Folgendes geschrieben: | Ein Nachteil kann allerdings sein, dass der Spieler dann wichtige Spieledaten gezielt verändern kann.
PS: Ich verwende die textbasierte Variante auch gerade in meinem RPG. |
Da bastelt man sich einfach so ein Clear Scripting Reference Code, ist sowas wie ein CRC-Check. Damit kann man dann sozusagen die Scriptdatei als solche für dein Projekt autorisieren  _________________ The source of all power is in its destiny... |
|
Nach oben |
|
 |
Zyrian Super JLI'ler

Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 07.01.2004, 20:06 Titel: |
|
|
Hi nochmal,
also, das hier ist quasi mein erster Testversuch :
Die Leveldatei:
Code: |
#
Baum 1
500 150
#
Brunnen 1
500 150
#
Stein 4
600 475
250 325
1100 875
500 830
#
|
Und das hier der zugehörige Sourcecode:
Code: |
// File öffnen, Variablen anlegen etc.
while(!input.eof())
{
input >> read; // Lesen der Datei in einer temp. Variablen
if(read != "#")
{
object = read; // Objektnamen speichern
input >> anzahl; // Anzahl der Objekte
while(anzahl > 0)
{
input >> x >> y;
if(object == "Brunnen")
{
SpriteToDraw.Create(SManager.GetSurface(BRUNNEN),32,27,1,1,0);
SpriteToDraw.Draw(Scroll.GetHintergrund(),x,y);
SpriteToDraw.Set(x,y-25);
vecSpritesToDraw.push_back(SpriteToDraw);
KollisionsVec.push_back(SpriteToDraw);
}
if(object == "Stein")
{
SpriteToDraw.Create(SManager.GetSurface(STEIN),36,28,1,1,0);
SpriteToDraw.Draw(Scroll.GetHintergrund(),x,y);
SpriteToDraw.Set(x,y-25);
vecSpritesToDraw.push_back(SpriteToDraw);
KollisionsVec.push_back(SpriteToDraw);
}
if(object == "Baum")
{
SpriteToDraw.Create(SManager.GetSurface(BAUM),60,110,1,1,0);
SpriteToDraw.Draw(Scroll.GetHintergrund(),x,y);
SpriteToDraw.Set(x,y-25);
vecSpritesToDraw.push_back(SpriteToDraw);
KollisionsVec.push_back(SpriteToDraw);
}
anzahl--;
}
}
|
Das is jetzt quasi die Holzhammermethode.
Funktionieren tut es zwar, aber ich denke, das ist nicht das Wahre.
XML kann ich net, das wär für mich persönlich nicht das Wahre (ausserdem ist die Site mit dem XML-Parser grad down, jedenfalls der Teil, wo man ihn downloaden kann )
Was hättet ihr generell für Verbesserungsvorschläge?
MFG
Chris _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 07.01.2004, 21:43 Titel: |
|
|
// File öffnen, Variablen anlegen etc.
Code: |
while(!input.eof())
{
input >> read; // Lesen der Datei in einer temp. Variablen
if(read != "#")
{
object = read; // Objektnamen speichern
input >> anzahl; // Anzahl der Objekte
while(anzahl > 0)
{
CObjectRessource *objectres=GetObjectResourceByName(object);
if(objectres==NULL)
Fehler("Objekt konnte nicht assoziiert werden: %s",object);
input >> x >> y;
SpriteToDraw.Create(SManager.GetSurface(objectres->surface,objectres->width,objectres->height,1,1,0);
SpriteToDraw.Draw(Scroll.GetHintergrund(),x,y);
SpriteToDraw.Set(x,y-25);
vecSpritesToDraw.push_back(SpriteToDraw);
KollisionsVec.push_back(SpriteToDraw);
}
} |
Dazu noch die Klasse CObjectRessource:
Code: |
class CObjectRessource
{
public:
int width,height;
...
};
|
Und die GetObjectResourceByName Function:
Code: |
CObjectRessource* GetObjectResourceByName(char *name)
{
for(int i=0; i<RessourceManager->MaxTemplateObjects; i++)
if(0==strcmp(RessourceManager->templateObject[i].name)
return RessourceManager->templateObject[i];
return NULL;
}
|
Das währe zwar ein wenig mehr schreibarbeit aber auch modularisierter. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Zyrian Super JLI'ler

Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 07.01.2004, 22:11 Titel: |
|
|
Moment, ganz langsam ^^
Ich muss gucken, ob ich das auch alles richtig sehe.
CObjectRessource ist jetzt eine Klasse, in der sämtliche Eigenschaften des Objekts drinstehn, also Höhe, Breite, x und y Koordinaten usw drinstehn? Ich geh davon aus, weil da noch 3 Punkte drin stehn.
Code: | for(int i=0; i<RessourceManager->MaxTemplateObjects; i++)
if(0==strcmp(RessourceManager->templateObject[i].name)
return RessourceManager->templateObject[i];
return NULL;
|
Das versteh ich irgendwie gar nicht. Was für eine Klasse RessourceManager meinst du denn da?
Was soll die Klasse denn eigentlich generell so bringen?
MFG
#C _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 08.01.2004, 00:00 Titel: |
|
|
Die Klasse RessourceManager sorgt normalerweise dafür das alle Daten möglichst schnell und effektiv zur Verfügung gestellt werden. Ich bin mal von kaufbaren Engines ausgegangen dort haben sie alle einen Ressourcenmanager.
Damit meine ich hauptsächlich das du mit dieser Funktion aus deinem datenbestand (BÄUME, STEINE,...) das heraussuchen sollst was gerade gefordert wurde. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Zyrian Super JLI'ler

Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 08.01.2004, 20:14 Titel: |
|
|
Könnte man dafür net theoretisch eine verkettete Liste nehmen, wenns nur erst mal um die Sprites geht, die im gesamten Game vorkommen? Aus der kann man doch auch relativ leicht bestimmte Objekte heraussuchen, was grad gebraucht wird und das dann laden. _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 08.01.2004, 20:53 Titel: |
|
|
natürlich es liegt ganz bei dir, wie du das anlegst. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|