JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=e89bcf39ad0417b387b142545919506dMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Tutorial zu Leveleditor
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Zyrian
Super JLI'ler



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

BeitragVerfasst am: 04.04.2004, 12:07    Titel: Tutorial zu Leveleditor Antworten mit Zitat

Hi,

da ich selber keinen Ansatz dafür hab, wollt ich fragen, ob ihr vielleicht ein Tutorial für eine Art 2D-Leveleditor kennt. Geht nur um die Grundzüge, also wie sich das generell realisieren lässt usw. Dass ich das komplett nachher anpassen muss is sowieso klar.
Hat jemand was?

MFG
Chris
_________________
Schau mir in die Augen, Kleines.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.04.2004, 13:03    Titel: Antworten mit Zitat

Ich hab schon des öfteren 2D Leveleditoren programmiert. Die Farge ist: Was für ein 2D Spiel?


Du müstest erst einmal wissen, was du für eine Engine benuzt. In einem jump and Run kannst du das Level z. B in ein Array speicher:

00000000000
00xxx000000
00xxxxxxxxx

so z. B.

Oder du kannst einzelne Objekte mit ihrer Position speicher:

3 Block an 3, 3
8 Block an 3,4

damit legst du dann das Dateiformat fest. Und den Eidotr musst du dann für das Dateiformat entsprechend porrgrammieren.

Schreibt doch einfach mal genau, wie das Spiel aussehen soll, dann kann ich dir sagen, wie ich es umsetzten würde.
_________________
https://jonathank.de/games/
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: 04.04.2004, 18:34    Titel: Antworten mit Zitat

Danke für die schnelle Antwort (:

Also, ->hier<- ist ein Screenshot aus meinem aktuellen Projekt, was noch in einem sehr frühem stadium ist.

Bisher hab ich die karte mit so einer datei geladen:

Code:

g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 w2 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 w1 k1 w3 w3 w3 w3 w3 w3 w3 w3 w3 w3 w3 #
g1 g1 g1 k2 w4 w4 w4 w4 w4 w4 w4 w4 w4 w4 w4 w4 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #
g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 g1 #


und objekte hab ich in einer weiteren datei so gesetzt:
Code:

#
Tr 4    <-- Art des Objekts mit Anzahl
232 111 <-- Koordinaten
1500 1000
789 987
1005 666
#
Br 2
70 80
100 100
#
St 3
1026 456
402 568
800 544
#



MFG
Chris
_________________
Schau mir in die Augen, Kleines.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.04.2004, 20:54    Titel: Antworten mit Zitat

Hast du eine Text oder eine Binärdatei?

Ich würds mit ner Binärdatei machn:

Code:

char Level[100][100];
char Tile="g";
if(Mausklick)
{
Level[CursorX/32][CursorY/32]=Tile;
}
if(Taste "1")
{
Tile="g";
}
if(Taste "2")
{
Tile="w"
}


Die Mausposition durch 32 zu teilen ist erforderlich, damit du das richtige Kästchen erwischts (wenn diese 32x32 groß sind)

fürs speicher dann einfach:
Code:

FILE* Datei=fopen("level1.lev", "w");
fwrite(&Level, sizeof(Level), 1, Datei);
fclose(Datei);

Die Ladenfunktion sieht genauso aus nur mit fread()

Wenn du jetz noch die Objetke in die Datei haben willst:

Im Editor würde ich eine STD Liste machen:

Code:
struct Objekt
{
int XPos;
int YPos;
int Typ
}

list<Objket> Objektliste


Du speicherst dann einfach in einer int-Varaiable, was für ein Objekt erstellt wird (ähnlich wie char Tile). Dann z. B. bei rechten Mausbutton, erstellst du das Objekt:
Code:

Objekt nObjekt;
nObjekt.XPos=CursorX;
nObjekt.YPos=CursorY;
nObjekt.Typ=Typ;
Objektliste.push_Bakc(nObjekt)


Diese Liste musst du dann mit in die Leveldatei schreiben:
Als erstes schreibst du die größe (Objektliste.size()) ind ie Datei, dann gehst du die Liste durch und schreibst mit fwrite() jedes einzelne Objekt aus der Liste in die Datei. Beim laden liest du als erstes wieder die Größe der Liste und gehst dann in einer Schleife in der Datei weiter.

Die Dateistruktur sieht dannn folgendermaßen aus:

char Levle[100][100];
int Anzhal Objekte;
Objekt[AnzahlObjekte]

du kannst natürlich auch für jeden Objekttyp eine eigene Liste machen. Du must nur am Anfang die Größe der Liste speichern, da du ja nich mit feof() Testen kannst, ob die Datei zu ende ist, wenn die Objektliste nicht bis zum ende der Datei reicht.
_________________
https://jonathank.de/games/
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: 04.04.2004, 21:26    Titel: Antworten mit Zitat

Thx für die Hinweise. Sieht richtig gut aus (:

Hast du deine Editoren mit MFC gemacht oder mit der WinAPI?
_________________
Schau mir in die Augen, Kleines.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.04.2004, 22:41    Titel: Antworten mit Zitat

Weiß nicht so genau:

WinAPI ist doch so ne Srt komischer Assistent, mit dem man nervige Sachen wie Fenster erstellen und so machen kann.

Und MFC ist das ganz normale Visual C++?

Ich hab jedenfalls alles mit VC++
Projekt->Neu->LeeresProjekt
und dann alles selbst eingegeben. (den Quellcode der WinMain hab ich aus dem Buch)
_________________
https://jonathank.de/games/
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: 04.04.2004, 22:50    Titel: Antworten mit Zitat

Also MFC ist dieser "komische Assistent" Wink der einem so die Grundklamotten wie die Fenstererstellung abnimmt und wo man per Drag&Drop Schaltflächen, Beschriftungsfelder etc. setzen kann, und die dann später im Code mit einer Funktion belegen kann.

Die WinAPI ohne MFC ist das, womit du das wohl immer gemacht hast, also direkt per Codeeingabe und nicht mit vorigem Design des Dialogfensters bzw. SDI oder MDI Anwendung.

#C
_________________
Schau mir in die Augen, Kleines.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 04.04.2004, 22:53    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
Weiß nicht so genau:

WinAPI ist doch so ne Srt komischer Assistent, mit dem man nervige Sachen wie Fenster erstellen und so machen kann.

Und MFC ist das ganz normale Visual C++?

Ich hab jedenfalls alles mit VC++
Projekt->Neu->LeeresProjekt
und dann alles selbst eingegeben. (den Quellcode der WinMain hab ich aus dem Buch)
Dann benutzt du augenscheinlich kein MFC.
Wenn du sagst, dass du den Code selber schreibst.
Wenn man ein neues Projekt anfängt, kann man sich aussuchen, was es werden soll. Unter anderem auch MFC AppWizard...
In Visual C++ gibt es nämlich einen Haufen Assistenten(Klassenassistent...), die einem bei der MFC-Programmierung unter die Arme greifen.

Ich mag aber kein MFC, weil es manchmal ziemlich umständlich sein kann auf manche Funktionen zuzugreifen. Razz
Ich find die "normale" Win 32 Programmierung einfacher.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.04.2004, 22:57    Titel: Antworten mit Zitat

OK
ich hab mich damit halt noch nie befasst.
Ich benutze immer Win-32 Anwendung und dann Leeres Projekt
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 04.04.2004, 23:00    Titel: Antworten mit Zitat

Zyrian hat Folgendes geschrieben:
Also MFC ist dieser "komische Assistent" Wink der einem so die Grundklamotten wie die Fenstererstellung abnimmt und wo man per Drag&Drop Schaltflächen, Beschriftungsfelder etc. setzen kann, und die dann später im Code mit einer Funktion belegen kann.
Man kann bei der Win 32 Programmierung (ohne MFC) auch Dialog-Ressourcen für sein Programm verwenden. Wink

Einfach ein Dialogfenster als Ressource dem Projekt hinzufügen.
Dann designen.
dann dann per CreateDialog während der Initialisierung laden.

Natürlich muss der MessageHandler noch entsprechend eingerichtet werden....

Ist aber im Prinzip ganz einfach. Cool
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Zyrian
Super JLI'ler



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

BeitragVerfasst am: 04.04.2004, 23:15    Titel: Antworten mit Zitat

hm naja ich hab mich damit noch nie wirklich befasst Wink

also:

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


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 05.04.2004, 08:32    Titel: Antworten mit Zitat

Buddy Jesus aus Dogma ;D

MFC ist die Abkürzung für Microsoft Foundation Classes. Das ist ein Haufen von Wrapperklassen für alle möglichen WinAPI Funktionen. Meiner Meinung nach zu groß, unübersichtlich und überladen.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.04.2004, 08:50    Titel: Antworten mit Zitat

Wir sollten vieleciht nicht zu sehr vom Thema abschweifen. Was ich ehrlich gesagt ein bisschen komisch finde, ist das so viele Threads immer wieder vom Thema abkommen. Wenn wir uns über MFC unterhalten wollen, sollten wir einen neuen Thread veröffentlichen und in diesem nur die Frage über den Leveleditor klären.

Ich finde dieses Forum sehr gut aber meine, das es durch unnötige Abschweifungen ein bisschen unübersichtlich ist. Das hier ist ein Forum, kein Chatroom.

(nicht böse sein, ist nur meine Meinung)
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Hazel
JLI MVP
JLI MVP


Alter: 39
Anmeldedatum: 19.07.2002
Beiträge: 1761

Medaillen: Keine

BeitragVerfasst am: 05.04.2004, 09:03    Titel: Antworten mit Zitat

Ja du hast natürlich recht aber wenn du dir mal anschaust wieviele _aktive_ Mitglieder wir nur haben ist das schon in Ordnung. Es wird wenig gepostet und ich denke mal, dass jeder jeden Thread gut mitlesen kann.

Zum Editor: Ich würde in der Entwicklungsphase die Dateien im Textformat abspeichern. Da lassen sich einfacher Bugs finden und kleine Änderungen vornehmen. Später solltest du sie aber binär speichern weil sie sonst zuviel Platz wegnehmen.
_________________
*click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.04.2004, 10:18    Titel: Antworten mit Zitat

Meinst du Bugs von der Sorte, das die Speicherfunktion die Datei nicht richtig speichert? Und das man um das zu überprüfen einfach die Textdatei öffnet und sieht, was er da für einen Blödsinn reingeschrieben hat?
Naja, is vieleicht nützlich aber wenn man später auf Binärdateien umsteigt, muss man doch die Speicher und Ladenfunktion neu schreiben. Ist ja schon ein kleiner Unterschied. Und dann weiß man wieder nicht, ob die jetztkorrekt arbeitet. Von daher finde ich es unsinnig, schon zu Planen mitten in der Entwicklung das Levelformat zu ändern. Ich würd direkt Binär nehmen.

Wenn du so Bugs meinst, bei denen man Fehler beim Levelbauen hatte: Man sollte im Editor vieleicht einfach ein paar Funktionen einbauen, mit denen man die einfach beheben kann. Also komfortabler als im Texteditor.

Den Vorteil von Textdateien sehe ich nur darin, dass man sie einfach mit dem Texteditor bearbeiten kann. Daher kann man sie gut nutzen um z. B. Textmeldungen oder so zu speichern. Denn dann müsste man ja um einen Editor für Textmeldungen zu programmieren quasi Notepad nachprogrammieren. Wenn man aber was anders als Texte speichern will, ist ein selbstprogrammierter Editor eigentlich immer komfortabler als Notepad.

Ich hab nur mal Text statt Binär benutz als ich keine Lust hatte erst einen Editor zu schreiben. Dann hab ich später auch nicht mehr auf Binär umgestellt.
_________________
https://jonathank.de/games/
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 1, 2  Weiter
Seite 1 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