Posts by red51

A new update is now available, introducing "Points of interest" and many more changes!
Latest hotfix: 0.9 (2025-11-04)

    Probably it is possible to have some sort of delay for these changes, and after some time values will smoothly become game controlled again if the plugin will not update them again.

    Or it can be possible to get default values calculated by the game and operate them on plugin side

    Getting the default values is a bit tricky, because that's solely calculated client-side atm... so reading these values from the client require a callback, which is a bit cumbersome to use but also has some overhead (especially when reading this frequently)...


    Having some delay for the changes is probably better, but that also requires the plugin to override the values frequently (resulting in some overhead again due to the sync packets that need to be sent to the client)...


    Not sure if it's maybe sufficient to have a way to set a relative value instead. E.g. a color the fog gets multiplied with. So if the player goes into a cave (which makes the fog darker automatically), that would also affect the color set by the plugin. In addition to the "multiply" mode, we could also add an "additive" or "overwrite" mode to add or overwrite the color (maybe with a "weighting" parameter to control how much it should overwrite the game values) :thinking:


    Or alternatively we may use a concept similar to Unitys HDRP volumes: We may add a similar object to the API where you could overwrite fog data, lighting, colors etc, then you could set a weighting for this volume and a priority. Such a volume could be either local (defined by an Area), or global (then the priority and weighting controls how much your settings should overwrite the default values of the game) ^^


    Probably it can be a custom function that will look for LOD component in GameObject and if it found one will change it or put into internal list to control later (for example when setting are changed). If the function will be not called the LOD will stay same as in prefab, and when called it will be synchronized with the game

    Oh, basically you could add an LOD component already, it should at least work with the LOD bias graphics setting. But unlike vanilla elements, it does not get culled if out of view bounds...


    Maybe we could add a setting where you could determine if the game object should be always visible or bound to the view distance (or detail view distance) ;)


    That's good, so we will be able to override built-in definitions, but what about completely custom? Like new types of wether or objects?

    You will also be able to create new definitions that way :) However, for custom items, there is some additional information required (to handle animations etc properly).


    Looks like events will be more compatible with each other, while custom module should be a bit faster. If the system will have events then different plugins can apply their own changes to world separately: for example one plugin can alter cave generation and another one can change ocean. If this will be done in modules they should be somehow connected with each other and "know" about changes done by other plugins, otherwise there will be only one plugin that can change world in the pack

    Custom world gen modules would be indeed faster, but may be also a bit trickier to use (especially if there are multiple plugins which register their world gen modules). In case of events, that wouldn't be a big issue at all, because if multiple plugins listen for that event, they will automatically see changes done by other plugins (depending on the execution order of plugins).


    We have to think about that. Actually we have already done some preparations for a "GenerateWorldPartEvent" some time ago (basically it's in the API, but it's not exposed and not fully functional yet). It's called everytime a new "world part" (which is basically a world section with a size of 512x512 blocks, i.e. 16x16 chunks) is generated. A plugin could use this event to load custom heightmaps, for example, or overwrite terrain materials or plants etc ^^

    In der CSV Datei sollten Informationen enthalten sein die für Konsolenbefehle (item, object ...) wichtig sind,

    für die API / Modder wichtig

    und nützlich für die Wiki z.B. Name oder Beschreibung (falls im Spiel vorhanden)

    Hmm... ich bin mir ehrlich gesagt noch nicht ganz sicher, welche Informationen die CSV Datei genau enthalten soll^^ Kannst du mir die Daten evtl. auflisten oder mir einen Beispieleintrag zeigen? ^^

    Es geht hauptsächlich um die Wandfackeln, die jetzt möglicherweise erst beim Annhähern sichtbarer werden?

    Wie gesagt, daran hat sich nichts geändert. Es geht bei der Änderung nicht um das eigentliche Licht, was die Fackeln von sich geben, sondern nur um die visuelle Flamme ;)

    Guter Hinweis, das werden wir mit dem nächsten Update ändern ;) Dann wird - sobald das Event von einem Plugin verwendet wird - die Meldung nicht mehr ausgegeben. Zusätzlich wird das InputEvent dann auch Cancellable, d.h. wenn man das Event optional abbricht, dann werden auch die eingebauten Commands nicht mehr abgearbeitet (falls man zB lieber sein eigenes Handling möchte)^^

    1. Ability to control some post effects for players - fog color, fog intensity and ambient light. This will make possible custom underground and underwater rendering, probably some custom effects on specific biomes and so on.

    It's our intention to expose that to the API, but we're still not 100% sure how the game should handle that specifically (because these values may change depending on the player position and the weather).


    Maybe it's sufficient if the API just gets an option to override that? I.e. setting the fog intensity through the API prevents the game from changing that value anymore...

    Probably it's indeed necessary to have this setting per player (instead of a global World method) ^^


    2. Ability to attach same LOD parameters to assets as the game uses with same distances. This should make plugin graphics configurable together with game graphics and will make LOD configuration easier.

    Not sure how such an API should look like... maybe the game could cull these elements automatically (depending on the view distance settings), but the API may get a method to override the view distance (maybe set a relative factor)?


    3. Custom definitions. I think that it was planned earlier (and probably for final API version), so I just included it here. This will be a really powerful feature that will finally make custom things possible.

    Yes, that's definitely planned :) The idea is that you could change any field in a definition class, then call "synchronize()" to sync the changes with the server and the clients. This may look like this:


    Java: Note: This doesn't work yet!
    //Make a workbench weak
    Objects.ObjectDefinition def = Definitions.getObjectDefinition("workbench");
    def.strength = 1;
    def.synchronize();


    Basically any field from our internal definitions are exposed to the API, so you could change anything that way.


    But this isn't implemented yet. The methods are already in place, but they don't work atm.. but it's on our to-do list ;)


    4. Different world generation events to change and modify ho chunks are generated and populated

    This is also planned ;) We're still not 100% sure if it's better to have events (when a chunk or world part is generated) or a way to implement and register a custom world generator module (where you could just override methods like "getTerrain()" or "getChunk()") :thinking:

    1. wäre es möglich mit der neuen API für Unity Version

    eine Möglichkeit zu bekommen eigene Konsolenbefehle einzubauen ?

    Ich meine die Konsole die ich mit ^ aufmache und nicht über Chat und PlayerCommandEvent

    Schwieriges Thema :D Derzeit ist es ja so, dass es noch eine Trennung zwischen Spielbefehlen (Konsole) und API Befehlen (Chat) gibt. Aber grundsätzlich wäre es eine Überlegung, über die Konsole auch PlayerCommandEvents zu bekommen. Es müsste dann aber vmtl. zunächst auf den Spieler ein "registerCommand()" o.ä. aufgerufen werden, damit die Konsole diesen Befehl auch kennt und auch optional die Vorschläge (die bei der Eingabe eines Commands auftauchen) anzeigen kann etc.


    Es würde dann wohl auch das PlayerCommandEvent getriggert (das bräuchte noch eine Methode, um herauszufinden, ob der Command aus der Konsole oder dem Chat stammt) :thinking:


    2. kannst Du bitte mehr Befehle wie printkeybindings einbauen ?

    Welchen Befehl bräuchtest du denn konkret? ^^

    dann hast Du wahrscheinlich eine bessere Grafikkarte als ich :D ... ich denke Deine Vermutung wird richtig sein und bei mir deswegen mal diese oder jene Kerze ausgeht.

    Naja, das Spiel geht dann davon aus, dass es sich um eine schwächere Grafikkarte handelt, wenn sie weniger als 2.5 GB VRAM hat oder wenn es sich um einen integrierten Intel HD Grafikadapter handelt ^^


    Wenn ich mich zu Beispiel entscheiden würde, die Sichtweite etwas runter zu setzen, oder Wolken abzuschalten, dann könnt ich doch vermutlich im Gegenzug den Partikeleffekt rauf setzen!? Ich nehme mal an, das passiert ohne die Einstellungsmöglichkeit derzeit nicht automatisch? :thinking: Dann wäre diese Option natürlich super :)

    Ja, auf jeden Fall, daher ist so eine Option natürlich idealerweise in den Einstellungen verfügbar :)


    Jetzt weiß ich wenigstens warum es bei mir in der Stadt dunkler geworden is, dachte an einen Fehler meinerseits gedacht und fragte mich natürlich, ob ich wirklich überall Lampen vergessen habe. :( Ich habe im Mittelalter Wandfackeln gesetzt und es war schlagartig überall viel dunkler.

    Oh, eigentlich sollte das auf das eigentliche Licht keinen Einfluss haben, das wird separat gehandhabt (abhängig von der Licht-Einstellung in den Grafiksettings - das war aber schon vor dem Update so). Es geht also nur um den Partikeleffekt, also die Flamme selbst (die zwar kein Licht von sich gibt, aber natürlich selbst trotzdem im dunkeln sichtbar ist) ;)

    I tested your code. No crash! Function seems to work properly .

    After i tested again my first variant. All worked fine. :thumbup:


    I am not sure why earlier test server crashed many time with exception UNCAUGHT ...

    Hmm... maybe the x or z coordinate was out of bounds? I just realized that the getLODSurfaceLevel() method has no safety checks :wat: The game works with native memory here, so if x or z is out of bounds (i.e. < 0 or >= 32), it accesses an invalid memory address which may result in a hard crash...

    We'll change that with the next update, so the API will just throw a proper exception then^^


    However, if you run into any other crashes (or if the method mentioned above still causes crashes despite using valid indices), please let me know ;)

    Danke für die config! Crasht es immer beim Startbildschirm? Oder ist das unterschiedlich?


    Wenn du sonst nicht ins Hauptmenü kommst, probiere ggf. einmal testweise, in der config.properties die Werte Graphic_TextureQualityConstructions und Graphic_TextureQualityTerrain auf 0 zu setzen (die waren vorher jeweils auf 1 gesetzt).

    Crasht es dann immernoch im Startbildschirm? Oder crasht es dann ggf. zu einem anderen Zeitpunkt?


    Falls es erneut crasht, kannst du mir evtl. nochmal eine neue Player.Log-Datei senden? :)

    To get the surface lvl at a certain position, you could use the getLODSurfaceLevel() method of the Chunk class - it returns the elevation at a given position, but only takes terrain into account. For example, if you have a particular world position and want to get the surface elevation, you can use the ChunkUtils, as mentioned by paulevs :



    Moreover what happen if i want to work with a chunk which was not yet generated by server ...

    If the chunk doesn't exist, the server will create a new chunk (but it's only generated into RAM - so unless it gets changed, the server won't save it in the database). So basically the World.getChunk() method never returns null (unless an error occurs). Unfortunately this isn't mentioned in the documentation... we'll change that ;)

    The MeshAsset class is only for procedurally generated meshes (i.e. meshes you want to create from scratch by defining individual vertices). That's why it only has a "create()" method and no "loadFromX()" methods ;)


    You can load "PrefabAssets" from the hard drive directly btw (via "loadFromFile()") - in this case the game accepts .obj, .fbx and .zip files (e.g if you have an fbx file with embedded textures, then you can put the textures into the zip file).


    The problem when loading from the hard drive is that it's a bit tricky to assign textures/materials. However, in the near future, the ModelAsset class will get methods to load models from the hard drive (right now you can only load game models). The ModelAsset can then be used with a Model object.


    Right now it's recommendable to load models through Unity (export them to asset bundles, then load them as Prefab through the API) ;)

    Es scheint erstmal so als ob mann Derzeit Wissen muss was im *.bundle enthalten ist
    Ich habe zwar ein GetAllAssetNames gefunden, aber ich finde keinen Zugang dazu

    Ja, der Pfad zum Asset im Bundle muss bekannt sein ;)

    Eine Funktion zum Auslesen aller Asset Namen können wir aber theoretisch anbieten ^^


    Ist der schon enthalten und wie kann ich derzeit eine einfache OBJ und Texture Laden?

    Du kannst ein PrefabAsset auch direkt von der Festplatte laden (PrefabAsset.loadFromFile()). Dort kann direkt ein .obj oder eine .fbx angegeben werden.


    Wenn du eine .fbx Datei mit eingebetteten Texturen hast, dann kannst du auch alles in eine .zip packen und diese zip dann laden.


    Für das Laden einzelner Modelle ist aber eigentlich das ModelAsset vorgesehen (i.V.m. einem Model Objekt). Leider hat es das aber nicht mehr ganz rein geschafft (wir haben die Priorität erstmal auf Prefabs gelegt, weil damit viel mehr möglich ist). Das werden wir aber voraussichtlich mit dem nächsten Update noch nachreichen. Derzeit kann die Model Klasse nur Modelle des Spiels laden.


    Und bedenke, dass rising-world .Bundle ist NICHT gleich mit Unity AssetBundle, falls Du andere Tools / Scripte benutzt.

    Tatsächlich haben normale Asset Bundles das Problem, dass sie plattformabhängig sind (zumindest sobald sie Materials, Shader oder VFX Effekte o.ä. enthalten) :/ Mit dem mitgelieferten SDK von uns kann man hingegen ein plattformunabhängiges Asset Bundle builden (welches dann sowohl unter Windows als auch Linux und Mac funktioniert). Unity kann das allerdings nicht mehr laden, da die Daten darin natürlich von einem regulären Asset Bundle abweichen^^


    Die Plugin API unterstützt übrigens aber auch das Laden von "klassischen" Asset Bundles (was aber aufgrund der fehlenden Kompatibilität zw. Windows, Linux und Mac nicht empfehlenswert ist) ^^


    Aber scheinbar erreiche ich das garnicht, ich habe auch versucht es Unichtbar zu machen

    Habe ich den Richtiegen Phat erwischt?

    Fehlt noch etwas bei setHG() oder ist zuviel, ich wollte ein Vollbild mache ^^

    Es reicht grundsätzlich, nur style.backgroundImage zu setzen ;) Der Pfad ist aber leider nicht korrekt: Du steuerst ein kleines Bild an, welches momentan vom Spiel ausgeblendet wird (das ist für spätere Zwecke vorgesehen) :saint:


    Das eigentliche Hintergrundbild ist direkt der "loadingLayer" zugewiesen, d.h. darauf musst du das "backgroundImage" überschreiben^^

    möchte das Thema mal hervor kramen .... wie weit ist der MülleimerSlot für den Creativmodus auf der Liste nach oben geruscht ... ich hoffe er kommt bald;

    denn es ist wirklich nervig dafür einen Mülleimer hinstellen zu müssen (passen ja auch nicht immer in die Landschaft)

    Im Zuge der letzten Updates ist das leider tatsächlich etwas in den Hintergrund gerutscht, aber fürs nächste Update sind generell ein paar UI Änderungen geplant, gleichzeitig werden wir dann auch diese Änderung umsetzen :)

    I'm not sure about this :)

    Looks like this still can happen (when player moves and new animals are spawning)

    Thanks for bringing this to my attention! There seem to be indeed some situations where animals may still fall through the ground 8| I'll take a closer look at this issue!


    There is also a bug with UI (plant selection and element shape selection) - if you will open it on the second time it will show wrong place in catalogue with missing icons, and for element shapes it will show not all available shapes. Simple movement of a slider fixes this, so looks like it is a visual bug

    This is unfortunately a bug in Unitys UI Toolkit in the recent Unity versions :/ It no longer updates the scroll position properly (it scrolls to the desired position, but as you can see, the scroll bar on the right thinks it's still at the top) - this also results in certain callbacks not being triggered anymore. Entries which aren't visible atm are hidden (at least their texture is hidden) for reasons of performance, but because they don't get proper callbacks anymore (at least if setting the scroll position from code), they remain hidden until you scroll manually...


    We'll update to the latest Unity version for the next update. If that bug isn't fixed in newer Unity versions, we probably have to find a workaround for this :|

    Das Maßband zu fixieren wäre auf jeden Fall eine vorteilhafte Funktion ;) Wir müssten uns mal überlegen, wie wir sowas am besten umsetzen können... derzeit ist das nämlich noch ans Item gekoppelt. Wir behalten das mal im Hinterkopf :)


    Eine Winkel-Anzeige können wir aber hinzufügen^^