Hello there , I am working on a project in my free time called " The Cube Project " , this name may or not be the actual name of the project in the end , but for now i guess this will be the nickname of the project. Basically, i have a simple goal, i want to make a game , similar to the way Minecraft works, with the blocks, but i want to make a more realistic alternative, one which follows how humans developed, how humans created tools from the natural sources of stone and wood, i want to be able to simulate this in a block genre because these seem like a good way to start.
I am going to be making this game with the Unity 3D Game Engine, mainly because of how user friendly and extremely easy it is to put a project together with full control of what happens. I have used Unity for a few years now, i have not however completed a project fully yet, so this will be the first project i dedicate my time to complete. I will be using the C# programming in unity, mainly because of how much more powerful it is over the Boo / Javascript alternative which unity offers. For the Voxel engine side of the game, i have already experimented and successfully made many examples of Voxel terrain which runs well. Recently, I managed to re-write my code to make it even more optimized, allowing me to use block updates many times a second.
So for now, i shall be developing the project in my spare time, which at the moment is pretty much all of my time, Its the summer holidays and i don't have much to do :)
Thanks for reading this and i hope you keep up to date with the progress of the game!
Me and my brother actually had a VERY similar idea, but I have no way to code yet. Basically, I wanted to make a game where the world looks and generates like Minecraft, but the difference being physics added in along with smaller blocks and character customization that actually affects your dude. I'd love it if we could somehow work together on something, considering your idea seems similar to my own. The only difference between our ideas is that you seem to want to stick to actually working and bending things like in real life. I'm not opposed to that idea, and not saying you should change it, but I had a different thing in mind. If you are also interested in working together, I could tell you more details, preferably privately.
ReplyDeleteLike I said above, I'd like to keep in touch, not just with how progress is going on your project, but I'd like to work together with someone to get more or less my idea done. Best of luck to you on your project, and hopefully we can do something together if you would like.
P.S. this is my first time ever on Blogspot, so I don't know how contact information works, or if this is the best way to ask for partnership.
Let me clarify this a bit. I'm not actually asking for us to work together on one thing at the same time, I'm kinda asking for tips on getting to more or less where you are now as far as your programming goes. I've got no idea where to start, but I have a VERY clear idea of what I want to make. I was hoping that someone with a similar goal, you, would be willing to give me a few tips.
DeleteAlso, is there any way around loading a world in chunks? Couldn't it load a specified number of blocks in a polygon shape around your character instead? Because that is kinda what I would rather do for my own project, if there is a way to do it without 16x16 chunks.
Hello there, thanks for commenting * your the first commenter ! *
ReplyDeleteChunks are basically the containers for the world, that is necessary no matter what, the thing what makes every voxel game different is how the chunks are actually filled with data. If you can make a formula to do it, you can make it into a voxel game, i am not sure what the formula is but you can indeed create what you need to, what i do for mine is generate noise and get values dependant on the height of the chunk.
Are you planning on making this game with Unity?
I would say "yay" because I was first commenter, except the reason is not because I was quick to do so. Instead everyone else that may have seen this was either not interested or was too lazy. For lack of better terms. Assuming others have seen this before I did, since I came here from a Planet Minecraft forum post.
DeleteYes I do plan on making it with Unity (4.2 free if possible), as thats pretty much the only source I found informationabout making a Voxel game on. Other than starting from complete scratch that is.
As far as programming actually goes, I have no idea how or what to do. But I have a curriculum that teaches C# for complete noobs and I have access to knowledge sources for Unity, C#, and Voxel game creating. I honestly have no knowledge of code other than fake gravity. I do however know EXACTLY what I want to make, and am prepared to take a long time doing it f I have to. I'd really appreciate tips in any form you can give, however complex they may be. So far you are the first person I've asked for help from.
So are chunks locked as 16x16 Voxels? Or can they be any integer I choose? Again, I'm a total noob to this stuff. But if possible, I'd like my "chunks" to be 1x1 and in the shape of an Isosceles Triangle, where the "odd" angle is where the player is located, and this triangle would shift according to veiw. Also having load speeds a priority over graphics.
P.S. Just something I found comical. Windows 8/Google autocorrect Knows Pixel, Voxel, and Pixels, but not Voxels. So when I typed "Voxels" it only gave me "Pixels" as an option.
This comment has been removed by the author.
DeleteUnity is the best option you will have as a beginner programmer because it has lots of built in features to assist you with your programming, it is also built on the Mono framework making compile times only a fraction of a second ( i compile 3,000 lines in less than a second ) , if you were to compare this to UDK ( Unreal Development Kit ) you would be talking 5-10 minutes per compile, making UDK bad for beginner programmers, also i tried using C++ only myself and i found myself having more trouble with programming the Open GL stuff than actually getting onto my game.
DeleteUnity is a really good program for beginners because it has a huge amount of free resources, you can literally make anything you want in Unity, its just that you may need the Pro version to optimize it, this is because the free version does not allow for key optimization tools such as occlusion culling and real time shadows, as well as a built-in path finding system.
Overall, i think unity IS the tool to start out with, it will help you a lot more, you will progress faster with it, however the limitations of the free version may restrict you.
As for the Voxel engine, imagine the world as a grid of chunks, these chunks make up the world, like sectors which join to make up world. The reason we have chunks is because it allows us to unload / load certain parts of the world and update only their meshes instead of updating the entire world every time something updates. Chunks do not limit you to anything, they just split up your data into groups.
Like i stated before, it only matters how you fill that data, you can use Marching cubes, or whatever you want, you just need the formula to create that data and fill it in. Imagine the chunks as a grid of points, these points are being filled in when a block is there, and when they are air blocks, they are empty, this is when you render a face.
My block class has a block ID and a block render type, these two variables let me control whether a block should be rendered or not, to actually render them, i use a loop which checks every block in the chunk, for each block i check up, down, left, right, front and back. If there is an air block at any of these directions, it will render the face. This is the basics of how a Voxel engine works.
I hope this helped a little more :)
I still have one question. I have not actually done any work in this field yet, but is it possible to have each face of a cube have 10x10 pixels, instead of a multiple of 8? If not, is it possible to have 40x40, aka 8x5 by 8x5 (multiple of 8)? Because it is a big thing for my game to use 10 pixel cubes. In Minecraft there are two measurements. One in Meters (blocks), the other in default pixels (1/16th of a block/meter). In my game, I want the measurements to be in blocks and in pixels as well, but instead of pixel measurement being 1/16th of a block, I want it to be 1/10th of a block. VERY important to me. I was thinking of using 40x40 cubes if 10x10 was not possible, that way I could replicate 10x10 by using 4x4 pixel squares along the surface of the cube, 10 of them in each direction. Are either of those even possible?
DeleteYou dont scale the world in pixels, the textures are scaled to your world, in unity, whatever scale you set on an object, the image will try scale towards it, also it is important to use " point " textures and not bilinear / trilinear because they blend the texture, that is if you want it to have a minecraft style, as for texture sizes, you really should not worry about it, it is more about getting the game working , also none power of two textures are not recommended, they take longer to calculate ( power of 2 is 8 , 16 , 32 , 64 , 128 , 256 , 512 , 1024 , 2048 , 4096 , 8192 ..... ). Trust me, dont worry about these things, just try and actually make your game work first, however you should have a clear idea of what you want to make in the end.
DeleteThis comment has been removed by the author.
Deletethis idea will be VERY hard to do , mainly because of the sheer amount of polygons you have to use, it will be possible, but it will be MUCH much harder to do, also, 2x2 and 4x4 can be used too, but theyre kinda too small for any detail.
DeleteAlso, 10x10x10 little blocks per block = 1000 blocks, if you were to store this data, you would be basically using 1kb PER BLOCK, if you have a single chunk the size of my games chunks ( 8x32x8 ) and then work it out, it makes each chunk 2mb , that is pretty huge, for chunk data anyway, and now, think about how many chunks are loaded at once, ( 16x5x16 in my game ) which would mean that you are using 2560 MB of RAM for the currently loaded world. it really would not be possible to do it very easily, 2GB of data PER loaded chunk range means you would fill up any data store very quickly.
DeleteI think you should think about your game idea technically and see if it is possible before considering making it.
This comment has been removed by the author.
DeleteThis comment has been removed by the author.
DeleteDo you think you could give me some tips on how to minimize the size of the code? Also on how to keep RAM usage low?
ReplyDeletethe size of your code does not really matter, the most important thing is how optimized your code is, removing useless variables and trying you hardest to make everything run as fast as you can, think of obvious things first such as whether or not you should hold variables in memory, you want to keep as little at a time in memory and stream things into memory if you ever need to load anything big, streaming it in reduces massive hiccups in the graphical loop and allows for a much higher FPS while still having the same results, i managed to turn my chunk loading from dropping from 60 fps to 13 fps and managed to optimize it so the player almost always stays above 30fps , which is your minimum goal, ALWAYS try to keep above 30fps.
Delete