Veelos'es Bastelecke

  • Hallo zusammen.


    Ich poste hier auch mal woran ich aktuell so bastle:)


    Ich möchte aktuell etwas aktiver in C++ werden. Deshalb habe ich mir zu Beginn eine einfache kleine Aufgabe gestellt:

    Eine Voxel Engine / Minecraft

    Die Anforderungen in kurz:

    - Die Engine soll als Plugin realisiert werden (Damit ich sie später auch wirklich in einem Projekt verwenden kann:))

    - Umsetzung in C++

    - Hohe Performance

    - Multiplayerfähig


    Hier mal der erste Zwischenstand dazu:

    - Welt wird aus mehreren Array's (Chunks) generiert.

    - Die Welt wird mit einem Prozeduralen Mesh mit möglichst wenigen Triangles generiert

    - Blöcke setzen und abbauen

    - Multithreading beim rechnen und erstellen der prozeduralen Meshes:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.


    Als nächstes habe ich vor mich an ein einfaches Inventar zu erstellen und etwas mit Weltgenerierung zu spielen.


    Bin offen für eure Meinungen.


    Gruss Veelos

    • Offizieller Beitrag

    Ich finde es super das du tatsächlich ein Voxelsystem verwendest und nicht einfach nur ganz viele Polygon Cubes aneinander reihest :)


    Voxel müssen ja nicht immer eckig sein wobei das natürlich die performanteste Darstellungsmöglichkeit ist. Vielleicht könntest du noch einbauen das man Voxel außen gebevelt werden und dann man diesen Wert beeinflussen kann.


    Hast du auch Wasser geplannt ?


    Bei der Weltgenerierung wäre für mich vor allem Algorithmus interessant. Für mich ist die Herausforderung dass bei der Generierung ein spannendes Ergebnis dabei rauskommt.

    Statt sinn freien aneinander riehen von Voxeln es zb einen Schluchten Algorithmus gibt oder einen höllen Algorithmus wo man Einstellungen treffen kann.


    Bei Minecraft haben mich diese stark zerklüfteten Terrains gestört, die waren nicht schön zum spielen.

  • Ich finde es super das du tatsächlich ein Voxelsystem verwendest und nicht einfach nur ganz viele Polygon Cubes aneinander reihest :)

    Natürlich. Sonst wärs ja nicht performant;)

    Voxel müssen ja nicht immer eckig sein wobei das natürlich die performanteste Darstellungsmöglichkeit ist. Vielleicht könntest du noch einbauen das man Voxel außen gebevelt werden und dann man diesen Wert beeinflussen kann.

    Neben dem normalen Voxel Algorithmus gibt es noch andere wie zb den Marching Cube Algo. Bis jetzt habe ich aber nicht geplant einen anderen zu verwenden. Ich bin ned ganz sicher was du mit "gebevelt" meinen könntest.:)

    Hast du auch Wasser geplannt ?

    Ja, ist geplant. Ich habe da schon 2-3 Ansätze wie ich das möglichst Effizient implementiert kriege. Dazu kann ich dann gerne etwas mehr schreiben, wenn es dann tatsächlich funktioniert.


    Generierung von Welten habe ich bis jetzt noch nicht so viele Informationen. Komme gerne darauf zurück wenn ich dann etwas mehr darüber weiss.

    • Offizieller Beitrag

    Neben dem normalen Voxel Algorithmus gibt es noch andere wie zb den Marching Cube Algo. Bis jetzt habe ich aber nicht geplant einen anderen zu verwenden. Ich bin ned ganz sicher was du mit "gebevelt" meinen könntest.:)

    Der Marching Cubes basiert soweit ich weiß auf 255 Möglichkeiten wie er eine Isofläche ein Voxel durchlaufen könnte. Basierend auf der Annahme der Voxel Cube hat 8 Ecken.

    Das ist ja das Prinzip was Voxel so performant macht.


    Mit Bevel meine das der würfel dann keine 8 Ecken mehr hätte sondern zb an einem Berg leicht abgerundet ist. Ein Voxel muss kein Quader sein auch könnten sie unterschiedlich hoch sein, so das man einem Berg hochlaufen kann ohne zu springen.

    https://www.sidefx.com/docs/ho…s/sop/polybevel_round.png

    https://forums.unrealengine.co…h?id=1221786&d=1497147731

    https://i.stack.imgur.com/aG0PU.png

  • Mit Bevel meine das der würfel dann keine 8 Ecken mehr hätte sondern zb an einem Berg leicht abgerundet ist. Ein Voxel muss kein Quader sein auch könnten sie unterschiedlich hoch sein, so das man einem Berg hochlaufen kann ohne zu springen.

    https://www.sidefx.com/docs/ho…s/sop/polybevel_round.png

    https://forums.unrealengine.co…h?id=1221786&d=1497147731

    https://i.stack.imgur.com/aG0PU.png

    Achsoo, nein in diese Richtung habe ich mir noch gar keine Gedanken gemacht. Ich denke auch nicht, dass ich mich an das bald ran setzen werde, denn:

    1. Würde das aktuell praktisch meinen ganzen Render Algo über den Haufen werfen.

    2. Mag ich gerade diesen Eckigen Stiel den Minecraft mit sich bringt (hat also für mich persönlich keine hohe Priorität)

    Es kann aber natürlich sein, dass ich zu einem späteren Zeitpunkt auch noch Marching Cubes und auch andere Render Algos einbauen möchte. Dann würde auch sowas sicher mit dabei sein:)

  • Finds coll dass es durch die Waffe mit der man die Sachen abbaut so einen No- MansSky- Style hat!

    Die Waffe eher meiner Faulheit geschuldet. Um etwas rum zu testen habe ich einfach nur das FPS-Template angepasst. Das gehört nicht zum Plugin. Theoretisch kann alles mit der Voxel Welt interagieren, solange es die richtige Actor Component ansteuert.8o