Hexagonal Based Procedurally Generated Voxel Terrain
Overview
The idea of the project is to implement a voxel terrain that
has been procedurally generated. A voxel
represents a value on a grid in three dimensional space and I will represent
them in the world as hexagonal blocks. I will create small voxels so that when
generated they will create a rounder more realistic version of a world.
The world I will generate will be limited to a set size that
is defined at the start of the program. This size limit will be relatively
large, but not full planet size. As a small game play feature I will implement
removing and adding voxels to and from the terrain. I will create the world in
a way so that there are no inaccessible areas to the world and cave systems.
Motivation / Rationale
My motivation for wanting to do this project is that
Procedural Generation is a topic that I am very interested in and would like to
further study and develop my knowledge on the subject. My interest in the subject has been developed
by interest in recent games that use procedural generation as a main feature.
The main games that are my inspiration for the project are
'Minecraft' and 'Ace of Spades'. Both games feature a 3D procedurally generated
voxel terrain, but differ in that they use cubes to represent their voxels.
However I feel both games feature a very jagged terrain, so my design of using
a smaller voxel will give the look of a smoother terrain, whilst keeping the
essence of the style.
Other games that I am interested in, but aren't directly
related to the project include 'Terraria', 'Dwarf Fortress', 'Sir, You Are
Being Hunted', 'Starbound' and 'No Mans Sky'. All of these games feature
procedurally generated levels, but don't use the voxel style I am using. The
procedural level generation used in these games is my main interest, as it
allows the game to give the player a completely different experience on each
play through, which I think is a really good concept in games that don't focus
on a story, like my main influences.
Technical Overview
For this project I will implement algorithms to procedurally
generate a voxel based terrain that have rules that will determine whether or
not the terrain that has been generated is realistic. This will mean not having
inaccessible areas of the world. To help create this I will use c# within unity
3d. By using unity 3d I will be able to use the mesh class unity have to create
the polygons I will be using to represent the voxels.
I will use Perlin Noise to generate a height map that will
allow me to give height to the world I am creating. This will also allow room
for cave systems, and overhangs. For research into Perlin noise, I will use the
book 'Texturing and Modeling: A Procedural Approach' (Ebert et al., 2002, p.
72). This book will be helpful to me for this project as it is co-written by
Ken Perlin, the creator of Perlin Noise. I will also use the journal article
'Controlled Procedural Terrain Generation Using Software Agents' (Doran and
Parberry, 2010). This will be useful research into terrain generation. Another
journal article I will use is 'Efficient generation of simple polygons for
characterizing the shape of a set of points in the plane' (Duckham et al.,
2008). This article will be helpful to me for generating the polygons I will use
to represent the voxels. After getting a
terrain created I will implement a feature that allows the user to remove
voxels from the world, as well as placing a voxel in the world.
For the project I will use a Rapid Application Development
method, this will allow me to develop a series of prototypes ranging through
the different stages of the project. By using this method, I can split the
project into smaller stages which makes the project more manageable. Due to the
nature of this project, the ethical issues are minimal. There are a few issues relating the use of
unity as third party software. Because unity is available to use for free, this
means that I will not be able to make a profit in excess of US$100,000 in the
future. I will need to be careful with copyright as well if I decide to use
free resources for texturing.
Project Deliverables
For my project deliverables, I intend to create a fully
working demo of an editable procedurally generated voxel terrain. This will be
delivered as an executable file built via unity that has been created for
windows. Along with the demo, I will include the unity project file that
includes the source code I have written.
Project Plan
I plan to spend the first 5 weeks after submitting my
proposal to research and develop solutions that will help me to implement my
final solution. This period will include testing algorithms with code solutions
so that I can be sure I'm heading in the correct direction. I will also use
this time to focus on other modules so that I don't fall behind when the
implementation phase of the project starts. The start of December through to
mid-February will be the implementation phase. This time will be when I
actually implement my solution. This will be the most intensive phase, so I
will spend more time focused on the project. During the last few weeks of the
module I will spend time testing and evaluating the final product. This will be
done in an effort to find any bugs and fix them before the end of the module.
As well as finding bugs, I will use this time to start writing my report so
that I'm not left with having to write the report in the last 2 weeks.
Activity Title
|
Start Date
|
End Date
|
Notes
|
Proposal
|
29/09/2014
|
24/10/2014
|
Focusing on other modules, so that I don’t fall behind
|
Research & Design
|
24/10/2014
|
01/12/2014
|
·
Focusing on other modules, so that I don’t
fall behind.
·
Creating Several Prototypes testing algorithms
I will use in the final implementation
|
Implementation
|
01/12/2014
|
08/02/2015
|
This will be main focus
|
Testing & Evaluation
|
16/02/2015
|
27/02/2015
|
Start to focus on writing report
|
Report
|
02/03/2015
|
13/03/2015
|
Project Submitted 06/03/2015
|
References
Ebert, D., Musgrave, F. K., Peachey, D., Perlin, K., Worley,
S.. (2002) Texturing and modeling: a procedural approach, 3rd edn. Morgan Kaufmann.
Doran, J. & Parberry, I.
(2010) "Controlled Procedural Terrain Generation Using Software
Agents", IEEE Transactions on
Computational Intelligence and AI in Games, vol. 1, no. 2, pp. 111-119.
Duckham, M., Kulik, L., Worboys,
M. & Galton, A. (2008) "Efficient generation of simple polygons for
characterizing the shape of a set of points in the plane", Pattern Recognition, vol. 41, no. 10,
pp. 3224-3236.
No comments:
Post a Comment