[Unity/C#]BloxelFoam

    • Release

    Es gibt 27 Antworten in diesem Thema. Der letzte Beitrag () ist von ThuCommix.

      [Unity/C#]BloxelFoam

      Da Minecraftklone groß in Mode gekommen sind und viele
      davon auch in Unity umgesetzt wurden habe ich mir gedacht
      mal meinen eigenen zu basteln. Ausgelegt auf Performance und
      vielfältige Möglichkeiten. Das ganze ist aktuell in einm Stadium indem man es
      zwar spielen kann es aber noch nciht so wirklich Funktionen/Spielinhalte gibt. Vorenthalten wollte ich es euch trotzdem nicht, evtl. gibt
      es ja die ein oder andere Idee für Landschaften oder Features.
      Inspiriert wurde das ganze u.a natürlich von Minecraft und AliveDevils Voxel Spiel (>>Guckst du hier<<)

      Name des Programms:
      BloxelFoam Prototype

      Beschreibung:
      Aktuelle Features sind:
      • relativ hohe Performance (ausser beim Abbauen oder Bauen sowie beim Chunk nachladen)
      • Chunk System
      • Biome (Wüste, Wald o.ä)
      • Verschieden Geländearten (Flachland, Berge etc.)
      • Verformbare Blöcke

      Geplant:
      • Besseres Gelände
      • Inventar
      • [Eure Ideen]
      • Blöcke mit verschieden Formen

      Screenshot(s):
      • --> Anhang

      Verwendete Programmiersprache und IDE:
      • Unity 4
      • MonoDevelop
      Systemanforderungen:
      • Grafikkarte mit >256MB Speicher
      • Mind. 2GB Arbeitspeicher
      • Mind. 2-Kern CPU
      Download:

      Lizenz/Weitergabe:
      Unity Lizenz + macht was ihr wollt damit.
      Bilder
      • 1.png

        472,71 kB, 1.023×702, 335 mal angesehen
      • 2.png

        505,31 kB, 1.023×702, 234 mal angesehen
      • 3.png

        786,86 kB, 1.023×702, 236 mal angesehen
      • 4.png

        645,5 kB, 1.023×702, 232 mal angesehen
      Dateien
      "yippieh! it compiles - ship it!"

      Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „paulkoch95“ ()

      So hab mal en Update rausgehauen, es ist nun so das ich die Brushes aus der Landschaft gneommen habe, die Biome nun drinn sind und ich daran arbeite das Kanten ein wenig angeglichen werden damit alles in allem die Sache ein wenig Landschaftlicher aussieht, ich werde mich nun daran machen die Landschaft an sich einigermassen brauchbar zu gestalten.
      Screenshots und neuer Download im Beitrag
      Ich freue mich über jegliche Art von Feddback.
      Paul
      "yippieh! it compiles - ship it!"
      @J-F: Da hast du natürlich recht, aktuell ist es nur leider so das ich beim setzen eines Blockes einmal die Map neu durchgehen muss damit der Block beim rendern dann auch wirklich verschwindet, jeddoch habe ich aktuell keine Ahnung wie ich das effizient lösen soll....
      Ich glaube sowieso das ich den Renderprozess nochmal neu mache um evtl. Designfehler auszuräumen.
      Danke auch für dein Feedback und auch das von iEi.
      mfg
      "yippieh! it compiles - ship it!"
      Pro Chunk ein VertexBuffer anlegen. Den bei Block Changes updaten. Somit muss nur ein Chunk geupdatet werden. So einen Chunk kannst du natürlich auch noch weiter unterteilen.
      Die Idee ist nicht schlecht, auch weil ich aktuell neue Chunks nur so aneinander pappe und Chunks die ausser Reichweite sind trotzdem noch zeichne (Was sich aber erst bei einigen tausend Chunks bemerkbar macht). Aktuell guck ich ob ich es schaffe mein System soweit umzustellen oder ob es nicht klüger ist ausgehend von dieser Idee nochmal von vorne anzufangen. Ich denk mal drüber nach, danke aber schonmal für die Idee.
      mfg
      Paul
      "yippieh! it compiles - ship it!"
      Sieht schonma geil aus =D
      Könnte echt was draus werden.

      Aber bitte lass es nicht zu einem weiteren Minecraft klon werden sondern lass deine eigenen Ideen einfließen
      Öhm, nein das sollte nicht so sein, kannst du mal einen Screenshot anhängseln? Nein ich habe nicht vor es zu einem Minecraftklon werden zu lassen, es soll mehr um wirkliche Baukreativität gehen, sowie aktuell mit den verschiedenen Formen der Blöcke die man mittlerweile auch schon selbst im Nachhinein ändern kann..^^ Die Sache ist nur die das ich evtl. nochmal von vorne anfange um das System noch ein bisschen sauberer zu halten..^^
      mfg
      "yippieh! it compiles - ship it!"
      Hmm, das kann nur an Unity liegen, ich konnte den Fehler bisher nicht reproduzieren. Ich bin auch kein grosser Fan von Unity jedoch ist die Engine ziemlich stark und ich spare mir elendiges Gerechne für Physik und 3D darstelllung..^^
      mfg
      "yippieh! it compiles - ship it!"
      Ich habe ausgehend von Mangafreaks Idee nochmal am Chunk laden gebastelt,was die gewünschte Performance brachte, dabei ist nun aber das Problem aufgetreten das Chunk übergänge beim nachladen oft nicht mit dem nebenstehenden Chunk passend generieren was teilweise wie die Farlands von Minecraft aussah wenn das jemandem was sagt. Mal sehen ob ich bis morgen ne neue Version rausbringen kann, diesmal mit der Möglichkeit die Form der Blöcke im nachinnein zu ändern und einem einigermassen funktionierenden Chunksystem.
      mfg
      "yippieh! it compiles - ship it!"

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „paulkoch95“ ()

      Ui, yeah, we got an Update over here!

      Folgendes ist neu/anders:
      • Bau/Abbautasten einmal invertiert (Ist jetzt so wie in Minecraft)
      • Man kan jetzt beim hovern über einen Block und drehen des Mausrades die Form des Blockes verändern. (Shift und Mausrad verändern den Block von unten)
      • Weniger Lags beim Bauen und Abbauen (Allerdings geht durch das Verändern der Blockform ein wenig Performance verloren)
      • Wieder ein paar "Bäume" in der Landschaft
      Hier der Download >>BloxelFoam2sneakpeak2.7z<<

      mfg
      "yippieh! it compiles - ship it!"
      Sieht vielversprechend aus, es gibt da allerdings ein paar Sachen, an die musst du dich unbedingt nochmal ransetzen.

      Hier werden die Blöcke abgerundet, obwohl sich ein anderer Block über ihnen befindet. Das sieht sehr komisch aus.


      Außerdem solltest du was gegen diese gelben Striche machen, die bei entfernteren Blöcken entstehen. Da könnte z.B. AntiAliasing helfen.


      Es werden sehr merkwürdige schwebende Gebilde generiert, sind die Absicht?



      Es wäre auch schön, wenn du ein Ingame-Menü einbauen könntest, oder zumindest eine Option einbaust, damit man im Fullscreen das Programm beenden kann, ohne raustabben zu müssen.
      Die Steuerung ist auch noch verbesserungswürdig, sie fühlt sich sehr "schwammig" an, und das Springen wirkt eher wie Fliegen.
      Erstmal danke für dein ausführliches Feedback bzw. für das testen.
      Der Bug bei den Bergen ist mir bekannt, das passiert auch bei den komischen Gebilden etc. liegt daran das ich da bisher noch kein Augnemerk drauf gelegt habe da bisher bsp. die Chunklade probleme wichtiger waren.
      Die Sache mit den gelben Strichen ist ein Unity Bug, evtl. könnte ich da was tun aber ich habe da bisher noch keine Lösung gefunden (evtl. ein Problem mit den Uvs in größerer Entfernung).
      Diese Gebilde sind zum Teil Absicht, die Kugel sollte bsp. nicht fliegen, das sind aktuell Platzhalter für Seen und Bäume.
      Ein Ingame Menü wird wohl erstmal nicht kommen aber ich werd schleunigst mal ne Beenden Taste einbauen.
      mfg
      paul
      "yippieh! it compiles - ship it!"
      So, dank code.google.com/p/simplexnoise…name=simplexnoise_1_0.zip gibt es Fortschritte in der neueren Engine.
      Hier ein kleiner Ausschnitt, es handelt sich um Simplex Noise, ein Grund dafür ist auch das Unitys von Haus aus kommendes Perlin Noise leider ein wenig unbrauchbar ist....
      mfg
      paul
      Bilder
      • newSneakPeak.PNG

        54,82 kB, 852×395, 171 mal angesehen
      "yippieh! it compiles - ship it!"
      Respekt, dass du versuchst ein "Voxel"-PoC mit Unity zu machen.
      Allerdings gibts da das ein oder andere Problem.
      a) Unity.
      Ich will die Entscheidung der Engine nicht in Frage stellen, nur würde ich gerne wissen "warum". Unity wurde eigentlich für statische Meshes, statische Welten für schnelle Spiele erstellt. Ich würde Unity u.U. nur für ein PoC (Proof of Concept) verwenden, da es nichts besseres als eine eigene Implementierung gibt. Unity ist von sich aus nicht in der Lage eine so dynamische Welt zu verwalten, da bestimmte Dinge nicht richtig implementiert sind, wenn man sich an der Engine vorbeischleicht. (Stelle dich auf die Schnittstelle von vier Blöcken und setze dann jeweils einen Block auf diese Blöcke und du lockst dich aus der Welt.) Die Einstellung der Playerkamera ist falsch gesetzt: ich kann keine 90° nach oben gucken -> fix das, sonst ist die Bedienung extrem beschissen.
      Die Physik der Engine ist ebenfalls "meh". Spring gegen einen Block, sodass du mit dem abgerundeten Teil der Spielerkollision darauf aufkommst und springe nochmal -> du wirst zurückgeworfen.
      b) der Voxel-Algorithmus.
      Der Algorithmus ist vmtl. von dir, oder?
      Wenn ja
      , dann respekt, ist zwar schon etwas, aber dennoch ungünstig. Nimm entweder richtig Blöcke oder verschwende deine Zeit nicht mit der Implementierung eines eigenen Algorithmus und nutz einen, der sich schon bewiesen hat (Marching Cubes).

      Wenn nein
      , dann sollte es für dich kein Problem sein, Marching Cubes zu kopieren und in deiner Engine zu nutzen.

      Es gibt nichts schlimmeres als Algorithmen, die Müll produzieren.
      c) die Chunks.
      Lag Spike hier, Framedrop da und Ruckler. Warum? Weil die Chunks synchron erstellt und gepuffert werden. Lass das, machs asynchron.
      d) Unity.
      Ich komme immernoch nicht damit klar, dass man sowas mit Unity macht -.-

      Das ist mein/e Standpunkt und Kritik zu deinem Spiel, wobei ichs eher als PoC eines Voxel-Algorithmus definieren würde. Ich rate dir, nimm DirectX und machs von Grund auf neu. Mit Unity wirst du am Ende nicht wirklich weit kommen, da es, wie ich bereits sagte, nicht für dynamische Szenerie gemacht wurde (ich habe Unity crashen lassen, weil ich ein Sich-Selbst-Kopierendes-Skript hatte, welches auf einen Block gebunden war ...).