Tabletop Spiele - Aufbau des Spielfeldes bei unregelmäßigen Feldern

  • Hallöchen,


    anderes Genre, neu Probleme.

    Ich habe mich mal gedanklich an ein Tabletop gewagt.

    Auf dem Angehängten Bild kann man zwei Teile des Spielfeldes erkennen. Diese sind blau und rot umrandet. Diese sind nur beispielhaft für das Problem.

    In dem Spiel kann jeder, natürlich der Reihe nach, seine Spielfigur bewegen. Immer nur ein Feld nach dem anderen. Wären die Felder immer gleich groß, könnte man ganz einfach die einzelnen Levelteile via 2D-Array in einem Grid spawnen lassen.

    Jetzt sind aber auf jedem großen Feld noch zusätzliche Räume. Je nach Feld liegen die an verschiedenen Positionen und sind auch unterschiedlich groß.

    Die kleinen Räume an sich sind aber fest auf dem großen Feld!

    Betrachtet man beide großen Felder, kann man Zebra-Streifen auf den Straßen erkennen. Diese grenzen auch ein Feld ab. Problematik hier ist, dass mehrere große Felder zusammen ein Feld ergeben, auf welchem der Spieler seine Figur platzieren kann. Ich hoffe das ist einigermaßen verständlich.


    Deswegen kann ich die Nummer mit dem Grid vergessen.


    Aus diesem Grund habe ich mir überlegt, das Level an sich ganz normal im Editor zu Bauen. An den Stellen wo die einzelnen Felder sind, an welchen die Spielfiguren platziert werden können, bzw zu welchen man seine Figur verschieben kann, würde ich einfach Collision Boxen einfügen. Einfach als Actor und dann vier Linetrace dazu. Für jede Richtung einen.

    Der Gedanke dahinter ist, dass zu Beginn jeder Phase durch die Collisionbox erkannt wird, wo der am Zug befindliche Spieler ist, es gibt kurz einen Linetrace in jede Richtung und die Nachbarfelder werden "aktiviert". Das Verschieben der Spielfigur ist dann möglich.


    Allerding wird das echt ätzen, da ich dann wirklich jedes Szenario (die Felder werden für das jeweilige Szenario immer neu angeordnet) in einem neuen Level erstellen und muss. Unendlicher Aufwand.


    Alternativ baue ich kein ganzes Level, sondern nur die einzelnen Felder in einem anderen Format. Also besagte "Zebrastreifen-Feld" als ganzes und die kleinen Räume auf der Karte als eines, etc. Collision und Linetraces kommen dann direkt auf das jeweilige Feld. Das müsste ich dann allerdings in einem einzelnen Actor machen. Da ich Assets nutze, müsste ich in jedem Actor etliche Static Meshes hinzufügen. Unendlich Aufwand. Ich habe das mal mit einem 3D Memory Spiel gemacht. War nicht schön und es war deutlich einfach gestaltet.


    Hat jemand von euch eine bessere Idee wie ich das mit den einzelnen Feldern machen könnte?

    Habe mir schon überlegt das ganze zu Blender zu exportieren, da das Feld samt Assets zu basteln und es zurück in die UE4 zu packen. Aber wirklich sinnvoll erscheint mir das auch nicht.


    Ich sehe gerade, dass bei dem oberen Feld im Bild ein Fehler entstanden ist. Dieses sollte natürlich umgehen rot umrandet sein.

    • Offizieller Beitrag

    Immer nur ein Feld nach dem anderen. Wären die Felder immer gleich groß, könnte man ganz einfach die einzelnen Levelteile via 2D-Array in einem Grid spawnen lassen.

    Ich kenne die Regeln nicht. Aber mein Gedanke wäre es, es genau so zu machen.

    Du unterteilst das gesamte Spielfeld in das möglichst kleinste Spielfeld. Es definiert zugleich die Grid Größe.


    Allerding wird das echt ätzen, da ich dann wirklich jedes Szenario (die Felder werden für das jeweilige Szenario immer neu angeordnet)


    Jedes Spielfeld bekommt beim Spawn (Random oder Fest) Automatisch einen Collider.


    • Bei kleinen Spielfelder ist der Collider etwas größer wie das Spielfeld so das du der Collider immer das nachbar Spielfeld berührt.
    • Bei größeren Felder ist der Collider mindestens so groß wie das Spielfeld und ein bisschen größer.

    Jetzt kannst du den Nachbar jedes Spielfeldes ermittelt. Du weißt ob der nachbar ein großes Feld oder ein kleines Feld ist bzw mittelgroßes Feld ist.


    Problem: Du weißt jetzt nicht wo welches Feld liegt.

    Ich könnte mir vorstellen das du deswegen noch weitere Collider an jeder Kante anbringst. So das jedes Spielfeld insgesamt 5 Collider hat. Je Seite (4) + der Große (1)


    Jetzt weißt du nicht nur welchen Nachbar jedes Feld hat sondern auch welches Feld zb auf der Linkenseite liegt oder welches Feld überhalb des feldes liegt.


    Alternativ könnten du einen Cast ein eine Richtung schießen und prüfen welches Feld du Triffst. Ist der Cast Länger könntest du beispielsweise auch prüfen welches Feld das übernächste Feld ist.

  • Erstmal Danke für deine Ideen.

    Ich denke beide Varianten, Linetrace und Collider in einem großen Collider sollten eigentlich gehen. Evtl. Sogar eine Kombination aus beiden. Wird die Praxis zeigen.

    Auch sollte ein Gridsystem funktionieren, da jedes Spielfeldteil an sich identisch groß ist.

    Jetzt muss ich das nurboch hinbekommen mit der ausgestaltung der Spielfelder.

    Zwar könnte ich die zu Beginn jedes Spiels mittels Array spawnen lassen, jedoch wird das dann echt ätzend mit der Fehlersuche, weil ich dazu immer im laufenden Spiel sein muss.

    Gibt es die Möglichkeit dies bereits im editor zu erschaffen? Also 2D Grid mit den gespawnten Spielfeldern?

    • Offizieller Beitrag

    Zwar könnte ich die zu Beginn jedes Spiels mittels Array spawnen lassen, jedoch wird das dann echt ätzend mit der Fehlersuche, weil ich dazu immer im laufenden Spiel sein muss.

    Gibt es die Möglichkeit dies bereits im editor zu erschaffen? Also 2D Grid mit den gespawnten Spielfeldern?

    Ich bin mir nicht sicher ob ich deine Frage richtig verstehe:


    Du willst das Spiel Feld generieren lassen dies aber nicht im Playmode sondern bereits im Viewport bevor das Spiel überhaupt läuft ?


    Du könntest dir mal die Editor Widgets anschauen. Damit kannst dir ein Viewport Widget basteln mit dem solche Generatoren außerhalb des playmodes realisieren kannst.


    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.