-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BlockDefinitions umlagern #216
Comments
Ich bin immer noch der Meinung, dass das aktuelle System grade ganz gut läuft und das es wichtigere Dinge gibt, die anstehen. Im Code ist schon alles formal definiert. Drei Punkte, die mir eingefallen sind und evtl. mit solchen Dateien nicht mehr (so einfach) gehen:
Zu den Formaten:
Mir fehlt außerdem noch in den Angaben die Zuweisungen von Texturen auf Blockseiten, die Dichte (evtl. Später für Gewicht im Inventar verwendet) und andere physikalische Eigenschaften, die evtl. für Interaktionen mit Werkzeugen wichtig werden und zur Zeit in den PhysicalProperties vorhanden sind. Damit wäre das schon etwas viel und unübersichtlich. Was mir aber so als Mittelweg eingefallen ist: BlockDefinitions sind keine eigenen Typen mehr, sondern nur noch Instanzen der (dann nicht mehr abstrakten) Basisklasse BlockDefinition. Damit sind die drei oberen Punkte weiterhin machbar. |
Beispiel Dateien, json und xml |
Das einzige Problem das ich sehe ist die Hit Funktion. |
Nicht nur die Hit-Funktion, auch jede sonstige Logik wäre schwer. Na ja, und wir müssten einen zweiten, Namespace-unabhängigen Weg zum Laden von Texturen einführen (oder an den Standard-Namespace der Erweiterungs-Assembly binden) |
Hätte vllt. eine passable Idee. ist zwar weder fertig noch ausgereift aber es könnte gehe, was meint ihr? |
die IDs für resourcen werden erst zur Runtime festgelegt, natürlich nur einmal, aber abhängig von Mods u.ä. somit würde das wenig Sinn ergeben das hier reinzuschreiben. |
Die ID war eher so gedacht das die Extension dann weiß welcher Block bzw. Resource das ist und welche Methode dafür aufgerufen werden soll... Jo das mit dem WorldGen ist auf jeden Fall einleuchtender. Dann sollten wir aber die Resourcen zuerst in den WordGen laden damit er sie anschließend wenn der Block tatsächlich verarbeitet wird (über die Blockposition) verteilen kann?
Es kann alles geändert werden, sofern es sinnvoll ist ^^ |
Ja eine Blockdefinition kann von mir aus theoretisch bestimmte Dinge eingrenzen, wie z.B. Schnee kann kein Eisen enthalten, aber Aluminium(ergibt kein Sinn aber ist nur ein Beispiel), was dann ja auch Teil der BlockDefinition wäre, der WorldGen bekommt ebenfalls die BlockDefinitions. Ich meine die Blockdefinitions könnten von mir aus auch noch ein PostProcessing über die vom WorldGen gelieferten Daten machen. nene ich meinte damit nicht, dass man ein Binäres format hat(außer dass ich gerne ein Binäres Format hätte zum Cachen, aber da ist ja das Anfangsformat egal). |
Ja dann ist die Frage ob der User das File per Hand Editieren können darf bzw. kann oder soll oder was auch immer oder das quasi gemanaged im Spiel abläuft mit einer wunderschönen graphischen Oberfläche. Bei Dichte und Masse geb ich dir vollkommen recht, PostProcess NEEEEED. |
@HierGibtEsDrachen Also ich muss ganz ehrlich sagen, dass ich JSON immer selber schreiben kann, auch ohne Tool oder Fancy Editor. Notepad von Windows reicht vollkommen aus. Bei XML ohne einen guten Editor bin ich aufgeschmissen, da schleichen sich so schnell Fehler ein und man muss so viel mehr tippen. Vermutlich ist das eine persönliche Meinung, aber das ist scheinbar auch dein Argument. |
Was ich noch sagen wollte zu diesem leidigen Thema... xml, json, binary oder Digitalisierung von jvbsl Gedanken? Warum nicht alles auf einmal, dann kann sich der User immer noch entscheiden was er machen will! Es wird meiner Meinung nach nicht schlimmer wenn man mehr Features hat. Wir bräuchten um die Ressourcen vernünftig berechnen zu können eine Datenbank mit Element bzw. Stoffen und ich meine nicht die BlockDefinitions, dass reicht nicht den eine Definition definiert einen Block und die Definition existiert ohne Kontext. Könnte über ein eingebautes Periodensystem gehen, Was ich noch sagen muss. Eine Kennung für ausgelagerte Definitions muss auf jeden Fall her. Momentan ist es so, dass die Definition zur Runtime eine ID bekommt, und damit kann gearbeitet werden sobald das ganze ins Rollen gekommen ist. Allerdings ist es momentan so das sich der Complexplenetgenerator die ID über den Type der Definition wieder raus holt. Das geht noch solange es nur eine Extension gibt bzw. alle Extensions nur ihr eigenes Zeug verwenden. Ich könnte damit leben wenn die Definitions eine Art festes Token bekommen, am besten einen string da ist die viel fallt schier unendlich, über die Ingame auf eine unbekannte Definition verwiesen werden kann. Dadurch könnten Definitions in eine Datenbank ausgelagert werden die Extension unabhängig ist. Notfalls zieht man sie sich vom Server und speichert lokal ab. Was die Logik in den Definitionen angeht bin ich der Meinung das diese ausgelagert werden kann und und diesem Zusammenhang aus sollte. |
Hallo,m Ich bin jetzt nämlich für yaml als Format, weil ab der Version 1.2 von Yaml ist Json eine echte Untermenge und damit könnte ein Parser beides ohne Probleme parsen. |
Der Vorschlag gefällt mir @CsharpLassi. Vor allem ist das ein schöner Kompromiss. YAML ist sehr einfach in seiner Grundstruktur, das bekommt quasi jeder hin, und wenn man mehr was objektorientiertes braucht bzw. was komplexeres kann man einfach json mit in die Datei nehmen. Das ist klasse. |
Warscheinlich wäre es sinnvoller nicht für jeden Block eine eigene Definition-Klasse anzulegen, sondern einmal eine grundlegende Definition festzulegen und dann eine Liste in form einer Textdatei zu haben, in der alle Blöcke samt grundlegenden Eigenschaften definiert sind.
Zu grundlegende Eigenschaften würde ich u.A. Folgendes zählen:
Für Blöcke mit speziellen Eigenschaften und/oder speziellem Verhalten könnten dann "Instance-Klassen" angelegt werden. Die Blöcke werden dabei aber weiterhin in den Textdateien definiert.
BTW: Für Items ein ähnliches System?
**EDIT: Doch kein CSV? **
INFO: Mir schwebt dabei KEIN JSON vor! Das wird bei vielen Blöcken schnell relativ unübersichtlich.
Ich wäre da eher für eine Art "CSV" mit einer Zeile pro Block
Vielleicht etwas in Richtung
octoawesome:basics:block:wool:white,Weiße Wolle,wool_white.png,10,false,octoawesome:basics:item:wool:white,true
Ist das sinnvoll?
The text was updated successfully, but these errors were encountered: