Announcement

Collapse
No announcement yet.

Saving Minecraft like game

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Saving Minecraft like game

    Hello so my question is how can i save a minecraft like game so that all block variables and positions, rotation are saved when i quit and loaded when i play again. thx
    every block is a separate actor.

    #2
    Hey,

    i won't answer the "How to save answer", but i MUST tell you something about the last sentence:

    every block is a separate actor.
    That's a no go. With thousands of blocks you will run into performance issues pretty fast.
    I recommend using either the InstanceStaticMesh Component or thinking about a way like Minecraft did it.

    They are building the meshes by hand (letting the Engine render triangles based on given verts).
    Only visible Block sides are drawn etc. I did a Minecraft game in Unity a few years ago.

    Minecraft is already running poorly (though that's mainly due to Java) and they are only rendering the visible sides
    of each block. So if you place too blocks onto each other, the 2 sides that they meet on aren't drawn.

    I think Minecraft checks if the Block (for each side) is AIR or not. If it's not AIR, then don't draw the side.
    Of course it's not only doing this for AIR, but also for other things that don't completely cover the side.

    So if this, for example, is a chunk of blocks:



    Then this is all that will be rendered. If you now remove a block, the block that sits beneath the one that got destroyed will have an AIR block
    above it and its upper face will be drawn.

    This saves LOTS of performance.
    Open for contracted work | C++/BP (incl. Multiplayer) | Tutoring | VR

    My UE4 Blog/Page with Tutorials and more: Hit me for ALL the things!
    (Including 100+ Pages Multiplayer Network Compendium to get you started.)

    Comment


      #3
      And remember that minecraft uses randomly generated worlds, with a seed.
      In other words, all you need to save is the seed and the blocks the player has changed, (and blocks that have changed, such as water flow) since you can just regenerate the world.
      The only problem is you need to generate the rest of the world each time which can be slow, so I guess experiment.

      I would look into Voxels if I where you.
      -Josh Steinhauer ~ HERO ~ My Blog ~ My Twitter

      Comment


        #4
        I understand the save game object and stuff like that so thx but a question how can i do that thing that you are talking about. I'm quite new to unreal but i also learn very quick. thx for yout reply.

        Comment


          #5
          Yes i know those but i dont want to use them

          Comment


            #6
            how can i do the thing with not rendering not visible sides? i quite new to unreal but i learn fast.

            Comment


              #7
              If you don't use voxels, I'm sorry but your game will be VERY slow. As eXi said, even using voxels (which should speed up game a hundred times faster) is slow. Imagine a 16 x 16 x 256 world. (A single chunk in minecraft) that is 6400 Actors! Not even static meshes! And that's just a single chunk, when minecraft often has hundreds at once!

              Use voxels, my friend. They are your bet!

              (Oh look! A voxel plugin!)
              -Josh Steinhauer ~ HERO ~ My Blog ~ My Twitter

              Comment


                #8
                If you really don't wanna do the voxel thing, what I guess you can do is have six planes arranged into a box. Then to build the world you would loop a bunch of arrays, and every time you place a block you check if a solid block is to the left of the box, and if so, hide the left plane, and so on. (I say solid cause if you had glass you would not hide it)
                -Josh Steinhauer ~ HERO ~ My Blog ~ My Twitter

                Comment


                  #9
                  and when i have voxels is it possible to make like those hopper to chest interactions?
                  i will look at voxels. thx again
                  Last edited by Magic_RB; 02-21-2016, 02:51 PM.

                  Comment


                    #10
                    Oh and also are there any good tutorials on how to make voxels work

                    Comment


                      #11
                      I would suggest you to do something else first in UE4 Starting with something like this is a bit too much I think.

                      And another suggestion for once you start with your minecraft clone: Don't start with a few blocks. Start with having hundreds of thousand of blocks. It's all very easy to do if you only have a few hundred blocks. But it's getting complicated once you have a bigger world (100*100*50 = 500,000). If you start with only a few blocks, you probably have to scrap all your code later and do it all differently.
                      Last edited by John Alcatraz; 02-21-2016, 09:32 PM.
                      Easy to use UMG Mini Map on the UE4 Marketplace.
                      Forum thread: https://forums.unrealengine.com/show...-Plug-and-Play

                      Comment


                        #12
                        Any suggestions with what should i start?

                        Comment


                          #13
                          On something easier. Start out watching the Epic youtube tutorials and following along with some of those and you will learn a lot faster.

                          You can do a minecraft clone using Instanced Static Meshes with a few hundred thousand of them on screen without too many issues, but I still wouldn't advise it, Voxels are definitely the way to go. But since there is no publicly available, free voxelization engine for Unreal then it's most likely beyond your current skill level. So start small and research and wait a while for an easier to use Voxel engine to come out.

                          Comment


                            #14
                            how can i code in that minecraft like this coment for i don't know

                            Comment

                            Working...
                            X