Hi, I’m currently making a game, as of yet, I have only made one model. But I’d like to get the issue of procedurally generating the world during gameplay out of the way first, I want to make this so it’s random. I want my approach to be similar to the approach to Minecraft, but I don’t want it to be voxel, I want a low-poly style world with randomly generated dungeons, cities and castles. If anyone knows good tutorials or can offer some kind of resource to help me achieve this, it would be greatly appreciated.
To my knowledge, something on that scale and on that level of detail has never been done before. “Sir, You Are Being Hunted” is the closest things that comes to mind, but as you can tell from reading their development blog that it was a substantial undertaken.
I’m not saying that it can’t be done or that you’re not capable of doing it, but I’m saying that you should probably consider reducing your scope if this is your first game.
Good luck.
To be fair, I couldn’t do it, but I was thinking terrain in the style of cube world, I guess I could settle for voxel, and just have low-poly models. But thanks anyway.
Minecraft?
Look into libNoise. This is a reliable noise generator that you can use to do many things with. This accompanied with .net’s Random number sequences can give you a good start. However, creating an infinite world unto it’s self is a big undertaking.
-
Generate the noise model which you are going to use for your maps. Create a system where you generate Terrain models based on the size and scale that will make generating them quick. (say 64x64, chunky, but fast) In this generation, you need to compensate for areas where roads are, buildings towns and such, so that you can make them flat enough to generate them.
-
using .net’s Random numbers, Generate cities, towns dungeon entrances based on the above process. City generation will be a pain, as well you will need to texture everything correctly. Roads and road sequences will have to be laid out in a way where they will be infinite.
-
population will be the next part. You will need to also setup a population system for generic encounters in your world. Dungeons, cities and towns are easily populated as they are all finite. Terrain will not be.
Its a big task, and being that this is your second post in the forum, I doubt you are going to have all the skills to put it together.
So my better suggestion is to start small.
Oh, btw, using a combination of filters in libNoise will give you some really good effects, however, it will never replace a hand built finite world.
From the OPs first post:
And even if voxels were an option when I posted an answer, I don’t think that Minecraft, to quote the OP again, creates “randomly generated dungeons, cities and castles.”
Yeah the jump from doing randomly generated terrain to randomly generated dungeons/cities/castles is incredibly huge. Terrain can be done with a simple Perlin/Simplex noise generator and the meshes get pieced together as you move around. That was basically the first thing I did using Unity… and then I got to the same situation that you’re probably at right now, which is “so now what?” The terrain was endless, but boring. I could’ve spent months creating a world generator that randomly placed trees in ways that felt natural and made building blocks for houses etc. but I reduced the scope of my project dramatically and now I can focus on a game that’s actually fun.
You are right, I don’t have the skills to be honest, but I’m hoping to find out how to do each piece at a time. So hopefully it’ll all come together, I want to get this out the way first, as I’m sure it could possibly be the hardest part. Thanks for the help, I’ll look libNoise up.
It does, except dungeons, villages and strongholds.
I am trying to do something similar. I am trying to make a generated cube map for a boardgame (randomly genrated doesn’t matter). But I don’t want to create each tile and script each. god. damn. tile. It would take forever. So I am trying to find a way to duplicate a cube and make like a 10x10 map.
I have no idea how I would do that.