Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
{ "name": "Level One", "cells": [ [ { "groundTexture": "grass", "obstacles": [ { "x": 0, "y": -1, "type": "static", "model": "fence", "rotation": 90 } ], "triggers": [], "worldObjects": [ { "type": "player", "model": "player", "rotation": 90 } ] }, { "groundTexture": "grass", "obstacles": [ { "x": 0, "y": 0, "type": "static", "model": "tree", "rotation": 0 } ], "triggers": [], "worldObjects": [] } ], [ { "groundTexture": "grass", "obstacles": [], "triggers": [ { "x": 0, "y": 0, "type": "death", "model": "campfire", "rotation": 0 } ], "worldObjects": [] }, { "groundTexture": "grass", "obstacles": [], "triggers": [], "worldObjects": [] } ] ] } |
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Welches Ziel verfolgst du damit, die Level in Dateien abzulegen? Ich frage, weil es Vor- und Nachteile mit sich bringt. Sofern du die Vorteile nicht wirklich brauchst, solltest du aufgrund der Nachteile vielleicht doch lieber dazu übergehen, die Level in Szenen zu definieren, da du dort mehr Freiheiten hast und nicht in solche Probleme rennst, wie "wie handhabe ich Häuser?"
In den meisten Gridbasierten Spielen hat man meist einerseits den regulären Teil, wo für jedes Feld auch ein Wert definiert sein muss (Tilemaps), als auch einen "irregulären" Teil, also bspw. Objekte, die nicht in einem Raster/einem Array von Arrays abgelegt sind, sondern in einer Liste mit der zusätzlichen Information der Position und Größe. (Beim Game Boy Advance, um ein Beispiel zu nennen, hätte man die Layer, die 8x8 Tiles beinhalten, und Sprites, die unabhängig der Layer und Pixel-genau positioniert werden können und Breite und Höhe zwischen 8 und 64 Pixel haben können, also 1 bis 8 Felder.)
Zu den Typen: welche Wertebereiche haben diese? Im Beispiel sehe ich "static" für obstacles, "death" für Trigger und "player" für WorldObjects. Um zu wissen, was das beste Design für das Levelformat ist, muss bekannt sein, was dieses unterstützten muss. Die Animationen sollten aus dem model entnommen werden können.
Zur Namenswahl: häufig wird auch "Mob" (für Movable Object) für Objekte verwendet, die sich nicht am Grid orientieren (und nicht statisch sind). Sollten Obstacles auch mal nicht statisch sein, könnte es vielleicht sinnvoll sein, keine Unterscheidung zwischen Obstacles und WorldObjects vorzunehmen. Trigger können auch nur solange getrennt betrachtet werden, wie es immer Bereiche sind, in die man reinläuft, um etwas auszulösen. Allerdings ist auch hier eine Abgrenzung schwierig, weil es mal bspw. bewegliche Objekte geben kann, die intern wie Trigger gehandhabt werden müssen (bspw. ein Hase der gefangen werden soll).
Welches Ziel verfolgst du damit, die Level in Dateien abzulegen? Ich frage, weil es Vor- und Nachteile mit sich bringt. Sofern du die Vorteile nicht wirklich brauchst, solltest du aufgrund der Nachteile vielleicht doch lieber dazu übergehen, die Level in Szenen zu definieren, da du dort mehr Freiheiten hast und nicht in solche Probleme rennst, wie "wie handhabe ich Häuser?"
Eigentlich ist der einzige Grund Bequemlichkeit, da es wahrscheinlich ca. 100 Level geben könnte. Außerdem muss der Erschaffer des Levels dann nicht mühsam alles per Hand reinziehen und kann über die Datei schneller Änderungen vornehmen.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Ich habe das Gefühl, dass du zu viel offen halten willst, weil du noch nicht weißt, was dir vielleicht in den Sinn kommen könnte, statt genau dort weiterzumachen und dir zu überlegen, was du genau brauchen wirst.
Werbeanzeige