Level-Editor

MOEP_BIBER

Aktives Mitglied
Hey Leute,
ich bin gerade mein erstes Jump n Run - Sidescroll Game zu programmieren und jetzt bin ich schön langsam soweit, dass ich mein erstes Level bauen will.

Wie geht man das mit dem Level-Editor am besten an?
Von Hand als Code schreiben, kommt für mich nicht in Frage, da ich denke der Aufwand für nen Level-Editor lohnt sich schon nach dem zweiten oder dritten Level.

Meine Idee war folgende:
ich merke mir die positionen von mousepressed und mousereleased und zeichne dort Rectangles und füge diese Rectangles in eine ArrayList ein.
Anhand dieser Rectangles bau ich dann mit irgendeinem GrafikProgramm n level.

Ist es intelligenter alles in Rechtecke mit gleicher Größe zu unterteilen und so weiterzumachen?
Wie haut das mit dem unterteilen dann hin?

MfG MOEP
 
Zuletzt bearbeitet von einem Moderator:
S

SlaterB

Gast
was du mit Rectangles meinst ist ganz schön unklar, wenn das Thema einfach nur Level-Editor ist und niemand weiß ob es eine Landkarte, einen Gebäudegrundriss oder sonstwas in 2D oder 3D mit Bäumen, Autos oder Tomaten machen willst..,
wenn man aber an Tetris-Steine denkt, dann kommt die Aufteilung in Rechtecke bzw. Quadrate schon ziemlich gut hin,
kannst ja vorher auf karierten Papier aufmalen welche Gegenstand wieviele Kästchen belegt

derart einfache Strukturen mit dann exakter Platzierung auf Kooridinaten in der Welt sind für den Anfang gewiss leicher zu implementieren als vieles andere,
ja, unbedingt
 

Kr0e

Gesperrter Benutzer
Jenachdem welches Format du benutzt, wäre "Tiled" etwas für dich. DAs ist ein TileMap-Editor mit einem offenen Speicherstandard...
 

MOEP_BIBER

Aktives Mitglied
Hm, ich will mir lieber selber nen Level-Editor schreiben.
Nur damit ich das auch mal gemacht hab ;)
Funktioiert auch schon soweit, jedoch weiß ich noch nicht wie ich alles in so gleich große Blöcke unterteilen kann.
Hat jemand nen Tipp/Link für mich?
 

Ralph-Uwe

Bekanntes Mitglied
Hi,

schreibe ein Klasse, die alle notwendigen Parameter eine Objektes enthält.
Fülle Instanzen der Klasse mit Deinen Werten.
speichere alle Objekte eines Levels in einer Collection.
Schreibe die Collection auf Festplatte ... fertig ist Level 1.

So habe ich es bei meinem Spiel gemacht.

Viel Erfolg
 

Apo

Bekanntes Mitglied
Was weißst du nicht genau? Ich habe für mein Jump'n'Run auch einen einfachen Editor geschrieben. Und der ist auch Tilebasiert mit einer bestimmten Größe. Und sowas wie "Röhren" nehmen dann halt 2x2 Tiles ein. Oder wie meinst du das?
 

MOEP_BIBER

Aktives Mitglied
Ja genau so ähnlich wollte ich das auch machen.
Kann man sich irgendwo deinen source code anschaun?
Bzw das mit den tiles und evtl der code wo die collisions gecheckt werden, da mein collisioncheck verdammt kompliziert und nicht allzu verlässlich ist.

Vielen Dank schonmal.

ps: Wie lange hast du für das game gebraucht?
Also nur das game ohne das mit den bots usw.
Ich schreib mittlerweile seit ner Woche an meinem ersten Game und hab noch nicht einen Gegner implementiert^^
 

Kr0e

Gesperrter Benutzer
Eine Woche ist nicht viel, wenn man noch nicht so viel Erfahrung hat...

Ich weiß allerdings nicht so richtig, wo dein Problem ist... Was ist denn an deiner Kollisionserkennung so komplex ?
Eigentlcih ist das ziemlich simpel, sonfern du jetzt keine Collision-Trees brauchst :D -> Bei mehr als 1000 Objekten z.B.^^

Mach es doch iwie so:

Java:
Shape[] shapes;

for(int i = 0; i < shapes.length-1; i++) 
    for(int j = i+1; j < shapes.length; j++)
        if(shapes[i].collidesWith(shapes[j]) {
             shapes[i].onCollision(shapes[j]);
             shapes[j].onCollision(shapes[i]);
        }


Fertigt... onCollision sollen callback Methoden sein, damit die Shapes auch merken, wenn sie kollidieren. Und ob 2 Polygone sich schneiden kannst du mit der Shape-Klasse von java.awt.* machen...


Gruß,

Chris
 

MOEP_BIBER

Aktives Mitglied
Ich mach das Ganze mit Rectangles.intersect();
Mein Problem besteht darin, dass ich wissen muss, WIE er kollidiert.
Also ob er rechts, links, oben oder unten kollidiert.
Das hab ich ziemlich kompliziert mit Rectangle.getX() und Rectangle.getWidth() usw usw. in sehr vielen if-Verschachtelungen gemacht.
Geht das irgendwie simpler?
Also dass man weiß welche Seiten kollidieren?
 

Kr0e

Gesperrter Benutzer
Hi,

eigentlich brauch man dafür Vektoren und MAtrizen... Damit kann man leicht anhand der Mittelpunktdifferenzen die Seiten die betroffen sind ermitteln...
 

Kr0e

Gesperrter Benutzer
Das ist Mathe 12. Klasse... Vlt auf iwelchen Matheseiten... Stichworte: Vektorrechnung und MAtrizenrechnung (Lineare Algebra!)
 

MOEP_BIBER

Aktives Mitglied
Ich kann Vektorrechnung genau so wie Matritzenrechnung, aber ich weiß nicht inwiefern mir das mit meinem CollisionTest weiterhelfen soll.
Codebeispiel wäre sehr hilfreich =)
 

Kr0e

Gesperrter Benutzer
Naja nimm doch einfach die einfache Methode... das ist immer die Beste :D


Schau mal, du hast doch deine "intersects"-Methode. So, damit kannst du feststellen, wenn etwas kollidiert, dann würde ich einfach die Geschwindigkeit nehmen, von deinem Objekt. Das ist ja quasi ein 2d Vektor, welcher dir die Richtung, die dein Objekt sich bewegt, weist ;)

Immer nur Codebeispiele wirkt unkreativ. Wenn du ein bissel Ahnung von MAthe hast und bereits von Rectagnle.intersects() bescheid weißt, dann ist doch der Rest ein Kinderspiel...
 

Ähnliche Java Themen


Oben