Du bist nicht angemeldet.

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

1

29.04.2015, 10:25

2D-Charaktere in 3D-Umgebung

Hallo! Ich melde mich hier nach einer längeren Pause wieder.
Mittlerweile bin ich von XNA umgestiegen auf LibGDX. Das hat den Vorteil, dass ich
relativ Betriebssystem-Unabhängig bleibe und sogar ohne viel Aufwand (außer vll die Steuerung) auch auf Mobilgeräte portieren kann.

Prinzipiell sollte die Logik von XNA ja auch LibGDX übertragbar sein, weshalb ich bis jetzt nur die APIs ausgekunschaftet und ein wenig
rumgespielt habe.

Nun möchte ich gerne ein kleines Projekt starten.
Und zwar handelt es sich dabei um ein kleines Spiel (wenn es überhaupt den Status erreicht) das über eine 3D Umgebung verfügt.
D.h. Map, Gebäude und Dekoration (sowie evtl Effekte) sind in 3D gehalten. Im Gegensatz dazu sollen die Charactere, Monster und Items
in 2D dargestellt werden.
Das Problem dabei: Die Tiefen-Regelung.
Bei Pure 2D wäre es ja relativ einfach, da man einfach Layer verwendet die gegenseitig Verdecken können.
In 3D wäre es aufgrund des Z-Buffers einfach.

Im 2D/3D weiß ich jedoch nicht wie ich das anstellen soll.

Ein paar Infos vll noch, die Helfen könnten, das Problem einzugrenzen:

Die Charaktere sollen definitiv in 2D sein. Dabei bekommt ein 2D Charakter 8 Richtungen.
Wenn die Kamera sich also um den Charakter dreht wird, je nach Orientierung des Charakters und Winkel zwischen OrientierungsVektor und Kamera-Sprite-Vektor ein neues Charakter-Sprite geladen um ihn sich mitdrehen zu lassen.

Die Kamera lässt sich also frei drehen. Der Winkel zum Terrain soll sich jedoch nicht verändern lassen.

Ein paar Lösungen habe ich mir zwar ausgedacht, nur wird keine davon zu 100% klappen.

1. Für die 3D-Welt Layers herstellen, um den Charakter dahinter zu verstecken.
Dem würde aber die sich drehende Kamera im Wege stehen, da, wenn der Charakter perspektiv zunächst hinter einem Objekt steht und ich die Kamera drehe, der Charakter über die Layers immer noch verdeckt werden würde.

2. Ein Plane, die mit dem Charakter-Sprite texturiert wird. Die könnte problemlos hinter anderen Objekten versteckt werden.
Dabei gibt es aber 2 Probleme.
1. Die Durchsichtigkeit des Planes an stellen, wo das Sprite auch durchsichtig sein sollte.
2. Müsste sich das Plane auch drehen, sollte sich die Kamera um den Charakter drehen. Zusätzlich müssten sich auch alle anderen Charaktere drehen, was natürlich zu Performance-Einbußen führen könnte

Ich hoffe ihr versteht mein Problem und könnt mir dabei helfen.

Gruß,
JustJim

2

29.04.2015, 11:37

Meinst du sowas: https://code.google.com/p/libgdx-users/wiki/Decals ?

Decals zur Kamera ausrichten ist das Stichwort.
Wenn du das Decal wie eine Sprite animierst bekommst du bewegungen hin.
Die durchsichtigkeit bekommt man mit dem Alphakanal hin.

Nur kurz was mir dazu einfällt.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Hannes« (29.04.2015, 11:44)


3

29.04.2015, 12:34

Oh wow super! Direkt den Nagel auf den Kopf getroffen!
Vor allem weil Decals die LookAt Methode haben :D.

Maaan es ist echt schwer nach Sachen zu suchen, wenn man nicht weiß, wie sie heißen :)

Vielen Dank!

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

29.04.2015, 13:52

Die Lösung für das Transparenz-Problem ist einfach: Sortieren von hinten nach vorn.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

29.04.2015, 14:13

Oh ich habe mir Unity angesehen, aber es war nichts für mich.
Zusammenklicken habe ich nicht mehr gemacht, seit ich mit 11 oder 12 den RPG Maker benutzt habe ;).
Na ja, warum LibGDX?

Eigentlich eher Zufall, als alles andere.
Ursprünglich hatte ich vor ne 2D-Tile-Engine in XNA zu basteln um ein Spiel darüber zu programmieren.
Im Endeffekt wollte ich damit aber auch auf Android gehen. Mein Bruder hat mir da zunächst LWJGL empfohlen und ich habe
darauf hin LibGDX gefunden.

Aber ich schau mir mal SFML an.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

29.04.2015, 14:19

Dann machst Du was falsch, denn genau das ist die richtige Lösung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

7

29.04.2015, 19:56

Aso es gibt auch noch "Unity". Damit kann man klicki bunti spassi ganz fix Spiele machen ohne viel Know-How. Da sowas wie Billboards zu implementieren ist sehr leicht und durch den Editor alles sehr zugänglich.

Kannst du solche Sprüche bitte einfach sein lassen? Außer dummen Diskussionen bringt das nichts, nach Unity wurde hier nie gefragt und wenn du was gegen gewisse Software hast dann benutz sie bitte einfach nicht. Aber genau wegen solchen Aussagen brennen sich in den Köpfen falsche Vorstellungen von bestimmter Software ein und da hat man eben nur Arbeit mit. Also wie gesagt, wenn nicht mal danach gefragt wird, dann behalte es doch bitte einfach für dich. Sollte das jemand völlig anders sehen meldet euch bitte per PN, dann eröffne ich dafür gerne einen Thread.

Für 2D/3D Mix gibt es mittlerweile recht verschiedene Ansätze. Wenn du mal nach "2.5d" suchst wirst du da verschiedene Ergebnisse finden. Du weißt ja an sich schon konkret was du gerne vor hast. Aber vielleicht ist es mal interessant zu gucken welche Ideen es noch gibt um 2D und 3D zu mischen und zu kombinieren.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

8

30.04.2015, 07:08

Also gegen Unity habe ich persönlich nichts. Ich finde die Idee auch recht gut.
Vieles ist schon vorprogrammiert, sodass man sich auf das wesentliche konzentrieren kann.
Ja klar, zusammen klicken geht schon, aber man kann viel tiefer gehen und dieses "klicki klicki" dient
eher der Übersicht um den Prozess möglichst zu vereinfachen.

Ich meine wer mag es nicht, anstatt für eine bestimmte Auflösung 100x einen Wert für PosX und PosY auszuprobieren (sei es für eine Kamera oder ein Objekt), einfach seine Assets in der Welt zu platzieren und dann den Abstand in der Menü leiste noch einmal zu verfeinern?

Mein Problem mit Unity war einfach nur, das es mir zu überladen wirkt, und das hat mich zuerst abgeschreckt.
(Vergleichbar mit dem Umstieg von, sagen wir, einer einfachen 3D-Modelling-App zu Blender)

Wie vorher gesagt. Ich kam von XNA, was von der Struktur her sehr ähnlich zu LibGDX ist. Und LibGDX ist relativ schlank und bietet genau das, was ich für ein paar Projekte brauche.

Für zukünftige Projekte kann das auch wieder anders ausschauen und dann werden ich mich damit sowieso noch einmal beschäftigen.
(Für mich ist nicht die Sprache und die API das Ziel, sondern nur ein Mittel. Habe ich ein anderes Ziel, wechsel ich auch meine Mittel)

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

9

04.05.2015, 10:16

Interessant finde ich, dass bisher kein MonoGame eingeworfen wurde. Ich habe damit noch nicht gearbeitet, allerdings ist das meines Wissens nach eine, zu XNA Schnittstellenkompatible Bibliothek, mit der man auch für andere Plattformen entwickeln kann.

@Bambi:
Das Problem ist aber, dass andere damit negative Dinge verbinden.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige