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

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

1

28.07.2016, 15:02

YAML und .NET

Hallo Zusammen,

ich beschäftige mich gerade mit YAML, um aus einer Unity-szene mein eigenes Mapformat zu konvertieren. Die Idee kommt daher, dass ich keinen eigenen Leveleditor (vorerst) bauen möchte und sich die Architektur von Unity und der meiner Engine sehr ähneln. Daher möchte ich ein Cmdline-Tool schreiben, was mir YAML in mein eigenes Mapformat in json umwandelt. Das entwickle ich mit C# mit der Bibliothek YamlDotNet. Dabei ist mir einiges aufgefallen und wollte um eure Erfahrungen bitten.

Kann es sein, dass an sich YAML wirklich übersichtlich zu lesen ist, aber das Parsen durch die Objektbäume furchtbar ist? Zumindest mit der Bibliothek die ich benutze, muss ich ständig mit der Basisklasse YamlNode arbeiten, durch Sequences oder mappings durchiterieren und die key/values wieder casten, weil ich weiß, da müsste jetzt ein Scalar kommen? Irgendwie fühlt sich das "falsch" an.

Ich bin ja hart am überlegen, ob ich yaml erst 1:1 nach json konvertieren lasse und dann einen json-parser nehme, aber vielleicht mache ich konzeptionell etwas falsch? Soweit ich weiß haben wir hier ein paar yaml-Freunde...

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

29.07.2016, 11:49

Gegenfrage: in wie weit soll dir ein Konvertieren in JSON helfen? Wenn du das JSON dann wiederum ausliest, hast du das gleiche Problem mit einer solchen Basisklasse und dem Herumcasten.

Gegenvorschlag: wie wäre es, ein Editor-Script zu schreiben, welches alle GameObjects in der Szene analysiert und dir daraus die Leveldaten generiert, die du haben willst. Die sollte sich auch automatisieren und von der Konsole aus ausführen lassen. So musst du dich auch nicht damit rumschlagen, was nun hinter welcher ID steckt, da Unity das bereits für dich auflösen dürfte. ;)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

3

29.07.2016, 13:41

Wenn dich wirklich nur die API stoert, warum baust du dir nicht einen Wrapper der den Zugriff auf dein Format speziell einfacher gestaltet? Klingt weniger aufwaendig als das erst nach JSON zu konvertieren ;)

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

29.07.2016, 15:11

Wenn dich wirklich nur die API stoert, warum baust du dir nicht einen Wrapper der den Zugriff auf dein Format speziell einfacher gestaltet? Klingt weniger aufwaendig als das erst nach JSON zu konvertieren


Das verstehe ich nicht ganz. Was meinst du mit Wrapper genau?

Gegenfrage: in wie weit soll dir ein Konvertieren in JSON helfen? Wenn du das JSON dann wiederum ausliest, hast du das gleiche Problem mit einer solchen Basisklasse und dem Herumcasten.


Weil ich json irgendwie einfacher zu lesen und zu interpretieren finde. Aber durchaus berechtigte Frage.

Gegenvorschlag: wie wäre es, ein Editor-Script zu schreiben, welches alle GameObjects in der Szene analysiert und dir daraus die Leveldaten generiert, die du haben willst. Die sollte sich auch automatisieren und von der Konsole aus ausführen lassen. So musst du dich auch nicht damit rumschlagen, was nun hinter welcher ID steckt, da Unity das bereits für dich auflösen dürfte.


Das ist eine gute Idee, das schaue ich mir mal an!

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

5

29.07.2016, 17:01

Wenn dich wirklich nur die API stoert, warum baust du dir nicht einen Wrapper der den Zugriff auf dein Format speziell einfacher gestaltet? Klingt weniger aufwaendig als das erst nach JSON zu konvertieren


Das verstehe ich nicht ganz. Was meinst du mit Wrapper genau?

Es klingt als sei dein Problem primaer, dass die API von YamlDotNet ziemlich umstaendlich zu benutzen ist. Das ganze koenntest du loesen indem du deine eigene kleine API auf basis von YamlDotNet schreibst die (zumindestens fuer deinen Verwendungszweck) einfacherer zu verwenden ist, oder aehnlich arbeitet wie die JSON API die du gerne verwenden moechtest.

TrommlBomml

Community-Fossil

  • »TrommlBomml« ist der Autor dieses Themas

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

6

02.08.2016, 10:17

@Xardias: Das ändert leider ja nichts an den Problemen, ich muss ja trotzdem die Yaml-Lib mit ihren Schnittstellen so benutzen.

Und ich habe erstmal den Weg Unity Editor Script verfolgt und gestern Abend einen Export hinbekommen! Allerdings haut da was mit den Transformationen nicht hin, das liegt wohl aber an meinem Versuch, nur die GameObjects mit Meshfilter und den globalen Transformationsproperties zu exportieren.

Danke euch beiden! :)

Werbeanzeige