JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Levelloader
Gehe zu Seite Zurück  1, 2
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 30.12.2003, 13:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 30.12.2003, 14:31    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 30.12.2003, 21:55    Titel: Antworten mit Zitat

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 Razz
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Zyrian
Super JLI'ler



Anmeldedatum: 30.08.2003
Beiträge: 321
Wohnort: Essen
Medaillen: Keine

BeitragVerfasst am: 07.01.2004, 20:06    Titel: Antworten mit Zitat

Hi nochmal,

also, das hier ist quasi mein erster Testversuch Confused :

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. Embarassed
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 Wink)

Was hättet ihr generell für Verbesserungsvorschläge?

MFG
Chris
_________________
Schau mir in die Augen, Kleines.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 07.01.2004, 21:43    Titel: Antworten mit Zitat

// 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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Zyrian
Super JLI'ler



Anmeldedatum: 30.08.2003
Beiträge: 321
Wohnort: Essen
Medaillen: Keine

BeitragVerfasst am: 07.01.2004, 22:11    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 08.01.2004, 00:00    Titel: Antworten mit Zitat

Smile

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Zyrian
Super JLI'ler



Anmeldedatum: 30.08.2003
Beiträge: 321
Wohnort: Essen
Medaillen: Keine

BeitragVerfasst am: 08.01.2004, 20:14    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 08.01.2004, 20:53    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite Zurück  1, 2
Seite 2 von 2

 
Gehe zu:  
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

Impressum