Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mapsystem (https://www.delphipraxis.net/92094-mapsystem.html)

Neutral General 14. Mai 2007 14:50


Mapsystem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

Ich bin derzeit ein Spiel am programmieren und suche im Moment die beste Möglichkeit meine Levels zu speichern. Das ganze soll eine Mischung von RPG und Adventure werden. Und da gibts dann halt ne Menge Räume und in den Räumen stehen Möbel und Tische, Stühle usw und auf den Tischen liegt vielleicht auch etwas, das man eventuell auch aufheben kann usw... Was vielleicht noch nicht unwichtig wäre: Das komplette Spiel findet Indoor statt. Es wird wahrscheinlich keine Levels draußen geben...

Ich hätte da auch noch eine zweite Frage: Wie macht man das mit der Kollision... Also generell ja kein Problem aber wenn ich jetzt ne Wand hab dann soll mein Spieler ja nicht kollidieren wenn er mit den Haaren die Wand berührt (das wäre ja wenn er noch 2 Meter von der Wand entfernt steht) sondern halt wenn er direkt davor steht... Hab euch da mal was in den Anhang gepackt... Wie macht man das am besten? Ich benutze die Andorra2D Engine...

Gruß
Neutral General

Neutral General 15. Mai 2007 12:29

Re: Mapsystem
 
Es sind zwar noch nicht ganz 24h rum aber ich bin grad kurz daheim.
Findet sich niemand der mir da ein paar Ratschläge geben könnte ? ;)

OregonGhost 15. Mai 2007 12:43

Re: Mapsystem
 
Nimm doch für die Kollisionsprüfung ein kleines Rechteck (oder einen Kreis) um die Füße deiner Figur und nur die Basisfläche der Wand.

freak4fun 15. Mai 2007 12:44

Re: Mapsystem
 
Da du kein Stück Code zeigst kann man da nicht viel zu sagen ...
Zur Kollision: Prüfe nicht auf Top des Figurbildes, sondern auf zB Top - Height + 2 oder so bei der Auwärtsbewegeung oder so öhnlich. Damit sollte das gehen. :gruebel:
Zur Speicherung ... wie haste denn dei Spielfeld aufgeteilt?

MfG
freak

matashen 15. Mai 2007 13:37

Re: Mapsystem
 
So wie es OregonGhost vorschlägt wirds normalerweise gemacht. Man nehme das Shape das gezeigt werden soll und Bildchen (Kreis, Dreiek, Schatten der Figur, etc) mit dessen man die Kollosion berechnet, damits einfach bleibt sollte das Bildchen für die Kollision die gleiche größe wie das Mainshape haben.

Zu der Frage des Speichern: Ganz nach belieben! Du solltest dir Vieleicht erstmal Gedanken über die Datenstruktur machen die du in deinem Programm verwendest. Wie du das ganze dann ablegst ist geschmackssache. Zum Beispiel XML oder über einfache textdaten, CVS Tabellen ... ...

Gruß Matashen

igel457 15. Mai 2007 13:54

Re: Mapsystem
 
XML finde ich eigentlich nicht schlecht. Du kannst das ja so aufbauen:
Code:
<map>
<tile id="gras" x="0" y="0" z="-1" w="64" h="64">
  <object id="baum" x="5" y="5" z="-1">
    <object id="vogelnest" />
  </object>
</tile>
<tile id="weg" x="0" y="0" z="-1" w="64" h="64" />
</map>

3_of_8 15. Mai 2007 14:20

Re: Mapsystem
 
XML hat meiner Meinung nach viel zu viel Overhead. Ich würde mehrere Layer nehmen: Einen Ground-Layer für den Boden, einen Upper-Layer für Objekte auf dem Boden. Diese Layer speicherst du als array of array of Byte (Word, Cardinal) und assoziierst das sie mit einer Grafiktabelle. Darüber kommen dann nur noch Objekte, die sich bewegen sollen als Klasseninstanzen, die du dann serialisiert speicherst.

matashen 15. Mai 2007 14:25

Re: Mapsystem
 
Zitat:

XML hat meiner Meinung nach viel zu viel Overhead.

Zitat:

XML finde ich eigentlich nicht schlecht
Wie ich in meinem Beitrag schon erwähnte, das ist Geschmackssache :-D

Viel wichtiger ist die Struktur die du in deinem Programm einbaust. Das Abspeichern...wie gesagt Geschmackssache.

Gruß Matthias

DGL-luke 15. Mai 2007 14:39

Re: Mapsystem
 
... und Performancesache. Eine binäre Datei ist schnell interpretiert, bei XML ist das schwieriger und man schleppt noch den Parser mit.

Neutral General 15. Mai 2007 16:53

Re: Mapsystem
 
Ok danke für die Antworten. Naja das Problem ist ja wie ich bemerkt habe als ich nochmal drüber nachgedacht habe die Wand vorne... Wobei ich die eigentlich auch weglassen könnte eventuell... weil da würde diese Kollision mit den Füßen ja wieder nicht funktionieren..

Wie ich die Levels abspeichere muss ich mal sehn... Aber ich glaube ich machs nicht mit XML... Wahrscheinlich wirds wieder binär gespeichert - wie auch immer werd ich noch entscheiden...

Gruß
Neutral General


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz