Posts by Kassa

    Ich weiss woran es lag.


    Ich habe immer nur positive density Variablen ausgerechnet mit der density Funktion. Hier ein Beispiel:

    Muss ich wohl rausfinden wie ich eine ordentliche glatte Density-Funktion erstelle für die Voxel-Map.


    Edit: Hat geklappt hiermit ^^:


    if (y < Mathf.Floor(height))
    {
    value = 1.0f;
    }
    else if (y == Mathf.Floor(height))
    {
    value = (height % 1.0f);
    }
    else if (y == Mathf.Ceil(height))
    {
    value = -(1.0f - (height % 1.0f));
    }



    Cool, danke für die Antwort. Ich finde das originale Marching Cubes geht noch recht einfach zu implementieren. Was ich aber komisch finde ist das meine Terrains immer blockig werden. Also so Stufen-artig.
    Also selbst wenn ich zum Beispiel als Density-Funktion habe:


    height = x * 0.01f + 15.0f;


    Und dann als density Funktion:


    if (height < 15.0f) density = 1.0f
    else if (Mathf.Floor(height) == 15.0f) density = height % 1.0f;


    Dann müsste er mir ja immer wenn die Höhe über 15.0f ist den density Wert geben, der sich jedes mal um 0.01f erhöht. Also praktisch müsste jeder Punkt x dann bis zu 15.0f aufgefüllt werden und darüber hinaus dann nur mit 0.01f Schritten langsam höher werden. Was er dann aber bei mir macht ist dass er praktisch alles rundet auf 0 und 1. Also praktisch bleibt das Terrain dann immer bei mir gleich hoch und macht dann nur einen Schritt wenn es einen gewissen Density Wert überschreitet. Das sieht man ja auch oben im Bild, das ist Perlin Noise und da macht er dann auch einfach einen Schritt.


    Ich habe da auch mehrere Interpolation Funktionen probiert, eigtl. die üblichen die auch überall so benutzt um empfohlen werden, aber irgendwie will es einfach nicht. Weisst du eventuell womit das zu tuen hat? Hattest du das Problem auch am Anfang?


    Und benutzt du irgendwie kleinere Werte für die Zellgröße als 1? Also ist bei dir eine Zelle 1.0fx1.0fx1.0f groß oder muss man das vielleicht halbieren damit das "glatter" wird? Aber dann müsste man ja auch die doppelte Anzahl an Voxels laden. Und irgendwie wäre es ja dann trotzdem auch Stufen-artig, nur halt kleinere Stufen.


    Bei Transvoxel habe ich dieses Stufen-Problem komischerweise genauso wie bei der Lösung von Paul Bourke (hatte ich auch schonmal ausprobiert).

    Vorweg die Frage stellt sich eher direkt an red51, da ich denke mir wird kein anderer helfen können. ^^


    Ich versuche gerade in Unity Transvoxel zu implementieren. Ich habe mir auch das originale Papier von Eric Lengyel durchgelesen, aber irgendwie reicht mir das nicht um es auch implementieren zu können.
    In der PluginAPI von Rising World sehe ich, dass es auch LOD Chunks gibt, also müsste das Spiel ja auch irgendeinen LOD Algorhithmus haben für Marching Cubes.
    Da die Unity Version ja mittlerweile auch schon ein Terrain hat müsste das ja auch schon komplett implementiert sein mitterweile in Unity und C#.
    Hättest du vielleicht irgendwelche Hinweise wie ich es schaffe es wirklich auch umzusetzen? Irgendwie fühle ich mich einfach nur ratlos, suche echt schon seit Monaten auf Google (eigtl. sogar schon seit über einem Jahr) und ich bekomme es einfach nicht hin und fühle mich nur frustriert. Irgendwie stößt man nur auf zusammengeschusterte Source Codes die nicht funktionieren (die Source Codes kann man aber auch an einer Hand abzählen) oder man trifft auch Tutorials/Artikel die im Grunde die Implementierung komplett auslassen. Also im Grunde muss man es irgendwie einfach selbst wissen wie es geht. Aber ich befürchte wenn ich es selbst rausfinden will sitze ich noch 2 Jahre daran.
    Ich frag mich einfach nur wie du es damals schon so schnell geschafft hast das umzusetzen? Hattest du da irgendwelche Resourcen oder hast du dir es einfach selber ausgedacht oder bist du einfach intelligent genug dafür und ich verstehe es einfach nur nicht? ^^


    Würde mich total über Hilfe freuen, ich könnte jeden Tag meinen Kopf gegen die Wand hauen bei jedem erneuten Versuch.


    Mein letzter Versuch war das hier zu Unity zu konvertieren: https://github.com/BinaryConst…NA/tree/master/Transvoxel
    Die Tabellen lassen sich natürlich leicht übertragen. Aber der SurfaceExtractor ist schonwieder grausam zu entschlüsseln. Vor allem wenn es losgeht mit irgendwelchen Byte-Operationen für Variablen die keine ordentlichen Namen haben, nur einzelne Buchstaben. Ich könnte echt nur heulen.


    Hier was ich schon habe als Code (wenigstens etwas davon hinbekommen ^^): https://pastebin.com/BHuryGF1


    Gibt es eine Möglichkeit im Survival Modus auch Büsche, Blumenbüschel (nicht nur einzelne Blumen) oder andere Gräser (gelbe Gräser usw) zu platzieren? Falls es nur über Konsole und mit Adminrechten geht, was muss ich da machen, damit ich die Sachen platzieren kann? Kann ich sie mir vielleicht ins Inventar cheaten?

    Wenn ich über ein Plugin eine Pflanze ins Spiel lade, dann habe ich ja bei der Pflanze als Model einfach nur Vierecke die dann mit einer Blatt-Textur belegt sind mit einem unsichtbaren Hintergrund.
    Ich habe dann Unsichtbarkeit aktiviert und es ging auch, aber wenn man sich das Blatt dann anschaut und hinter der Pflanze Gras ist, dann sieht man genau an der Stelle wo die Textur transparent ist das Gras nichtmehr. Ist das Problem bereits bekannt?

    question is this the same platform RUST runs on? I left Rust because of all the hackers. Is this new platform going to open up RW to a bunch of hackers?

    Don't worry. Unity is an awesome engine. Just as with any other engine or programming language, it is not about the engine or language, it's about the developer. Unity is basically just a C# Framework with an Editor. It's all about the developer.
    And look at Empyrion Galactic Survival, RimWorld, The Forest. All these games had incredible amount of updates and very frequently. I think using Unity will make the game development progress a lot faster.
    Unity is really a huge timesaver and you can actually focus on game features instead of doing tedious work that has no real value on the surface. And Unity actually gets hundreds of bug reports daily, they are a huge company. This means the engine runs extremely stable and efficient because the engine gets tested by thousands of users in every possible way. And the Unity developers are very responsive to bug reports.
    I'm absolutely sure that when the Unity version of Rising World is released, we will see a lot more progress than right now with the game. And not just more frequent, but actually larger updates with much more content.

    Ich habe derzeit den Eindruck das Sandboxgames und Survivalgames derzeit wie Pilze aus dem Boden schießen.

    Kann ich ehrlich gesagt absolut garnicht bestätigen. Eher im Gegenteil. Ich habe das Gefühl das Sandbox-Spiele fast komplett aus dem Trend sind. Suche einfach mal bei Steam nach den Tags: Sandbox, Survival, Voxel - Und dann sortiere nach Release Date. Da findest du absolut garnichts. Das einzige war vielleicht noch Alchemists Awakening. Aber ansonsten gabs ausser Space Engineers, Empyrion Galactical Survival und 7 Days To Die nichts weiter (und diese Spiele sind echt schon ewig in Entwicklung).
    Ich wünschte diese Art Spiel würde wie Pilze aus dem Boden schießen, aber es ist absolut garnicht so.
    Besonders so ein Spiel wie Rising World was sich eher auf Natur konzentriert statt auf Sci-Fi. Und die anderen Voxel Games sind auch oft nicht realistisch, sondern blockig oder cartoonig.
    Es ist eigtl. ein Wunder dass Rising World so unbekannt ist. Ich denke mal die Leute brauchen einfach Action und schöne Grafik. Ich denke das ist eher das Ding wieso Rising World nicht so bekannt ist. Gibt ja genug Spiele die total lanweiliges Sandbox haben, aber trotzdem viele Spieler haben, weil man eben rumballern kann im Multiplayer.

    Was wird dann aus der Java Version, wird die vielleicht Open-Source nach Unity Release?
    Und meine Meinung ist dass du schon das richtige tust red51, ich hoffe dass die neue Engine viele Türen öffnet und dass du auch mehr finanziellen Erfolg haben wirst (hochverdient).

    Update (1.0.1)


    - Feature: Corncobs will now be removed from both the inventory and quickslots instead of just the inventory. So it does not matter anymore where you have your corncobs placed.
    - Change: Animals now spawn directly inside of the other animal instead of 2 meters above. Doesn't really matter but it might otherwise cause issues when there are blocks above.
    - Bugfix: When you didn't have 8 corncobs in your hand the animal would not breed. Now the amount of corncobs in your hand does not matter.
    - General code clean-up


    Source Code & Download can be found in the first post.

    Hi,


    This is my first complete plugin. Of course I'm open to suggestions and if you find any errors please let me know and I'll fix them. I will update the plugin whenever there is a good new idea or if I have to fix a bug. (But I'm pretty sure my plugin will work flawless).


    The plugin works both in Singleplayer and Multiplayer on Servers.
    The download link is in the attachment. Just unzip the folder into your plugins folder. Make sure the folder structure is "plugins/AnimalFarming/AnimalFarming.jar".


    Download: Download the .zip file from the attachment at the bottom of the post.
    Installation: How to install/run a plugin
    Source Code (1.0.1): https://pastebin.com/knYNwEXp


    So what can this plugin do?


    Farmable Animals


    You can lure and breed the following animals:
    Cows, Pigs, Chickens, Goats, Rabbits, Deers and Sheep


    Luring Animals


    To lure an animal you have to hold a carrot equipped in your hand, stand in front of the animal, look at the animal and press the Interaction Key ("F" by default, the same key used for sheering sheep or collecting plants). The animal wont eat your carrot, but it will move to the location you were standing when you pressed F. In practice you need to look at the animal standing in interaction range (same as sheering sheep) and move backwards while keep pressing F on the animal so it will move to your locations. Just try in the game and you'll notice that it's pretty self-explaining.


    Breeding Animals


    To breed an animal you have to have 64 corncobs anywhere in your inventory/slotbar. Hold a corncob in your hand and press F (Interaction Key) on the animal. The plugin will search your inventory and slotbar for all corncobs and remove 64 of them. All the other corncobs will stay untouched. (The stack size or position of the corncobs in your inventory doesn't matter, it will just remove 64 of them whereever they are, just in case if your are worrying about bugs. I made sure everything works fine.)

    Screenshots


    1) Luring an animal with a carrot by pressing F



    2) Just cloned/bred a second cow with a corncob in my hand and pressing F, while having 64 corncobs in my inventory.




    Download & Install


    1) Go to https://www.jetbrains.com/idea/download/#section=windows and download the free & open-source "Community" Edition of IntelliJ IDEA and install the software.
    2) Go to https://www.oracle.com/technet…k8-downloads-2133151.html and download & install the Java Software Development Kit 8 for Windows x64 (jdk-8u211-windows-x64.exe or newer).
    3) Create a "Java Libraries" folder on your hard drive and create a new folder called "RisingWorldAPI" inside.
    4) Go to Plugin Discussion and open the pinned "API Changelog" thread. Scroll down to the latest post with the newest "Latest Download" link and download the .zip file into the "Java Libraries/RisingWorldAPI" folder.
    5) Extract the .zip file. Your RisingWorldAPI folder should now contain a "javadoc.zip" file and a "PluginAPI.jar" file.


    Setup


    1) Create a new project.


    2) Make sure the "Project SDK" is set to Java 1.8, leave everything else as it is and click "Next".



    3) Leave everything as it is and click "Next".




    4) Name your project, then create and select a project folder with the same name.




    5) The project has been created. Now click on "File" > "Project Structure..."




    6) Check again if Project SDK is set to 1.8, change it if it is not.




    7) Go to "Libraries", click on the + icon and select "Java".




    8) Select the "Java Libraries/RisingWorldAPI/PluginAPI.jar" file and press "Ok".




    9) Leave everything as it is and press "Ok".




    10) This is how it should look now.



    11) Go to "Artifacts", press the + icon and select "JAR" > "From modules with dependencies..."


    12) In the "Main Class" text box enter the name of your main class. E.g. if your plugin is called WorldEditing, your main class is called "worldEditing.WorldEditing" (<packageName>.<ClassName>). Leave everything else as it is and press "Ok".


    13) Right click on "Extracted PluginAPI.jar" and remove it. It doesn't have to be in the final .jar because it is already loaded in the game.


    14) Go to "Modules" > "Paths" and then click the + icon under "JavaDoc". Add the "Java Libraries/RisingWorldAPI/javadoc.zip" file and press "Ok". Then press "Ok" in the Project Structure window to apply the settings.


    15) Right click on "src" in your Project files and select "New" > "Package".


    16) Name it after your plugin with first letter low. (e.g. for MyPlugin name it myPlugin or for TestPlugin name it testPlugin)


    17) Click on the "myPlugin" package you just created and select "New" > "Java Class".


    18) Name the Class after your Plugin, but with capital letter first. E.g. for MyPlugin name it MyPlugin, for TestPlugin name it TestPlugin.


    18.2) Now you have your main plugin class file and can start to code.


    19) Right click on "src" again and create a new package.


    20) Name it "resources".


    21) Right click on "resources" and create a "New" > "File".


    22) Name it "plugin.yml". Look up another thread to figure out what to code into the "plugin.yml"


    23) To build a ".jar" file you have to press "Build" > "Build Artifacts..." and select "Build" under Action.


    Hi,


    I don't have finished a complete Plugin yet, so I will use this thread to post some plugin snippets others might want to use for study or to use in their own plugins. I will update this thread whenever I have something interesting to post, instead of creating new threads.


    Please feel free to ask questions or share improvements or if you spot any errors in the code snippets.


    Tools / Software


    SQLite Viewer (can open .db files and show the contents of the database): https://sqlitebrowser.org/dl/


    Attribute Database


    Code (Version of 8th of July 2019, 07:30): https://pastebin.com/JUubhvN9


    My first snippet is a small attribute database system. You can define attribute keys in the "attribute_keys" array and it will store the attribute values in an SQLite file located in the <plugin_folder>/database/ folder, named as "storage.db".
    The database table "attributes" stores the players UID (SteamID), the key of the attribute and the value of the attribute. On Player Spawn the attributes will be loaded from the database into the Server RAM. Then you can use setAttribute() or increaseAttribute() to alter the value of the attributes everywhere (in any function you wish).
    You can then use storeAttributes() to store the attributes saved in the RAM into the Database (should be called from an autosave function, not yet implemented).
    There is also an example function included in which the "strength" attribute increases by 1 everytime the player destroys a tree.