Program Voxel Minecraft Worlds with C# (Unity 6 Compatible)
- Descrição
- Currículo
- FAQ
- Revisões
All New Content Added for Unity 2020+ and works with Unity 6!
Did you know that there is not one single cube used in Minecraft? Have you ever looked at Minecraft and wondered, “How did they build it?” – a great thing to ponder, it is. If you haven’t and think that programming a whole bunch of cubes is child’s play, then think again. On the surface Minecraft looks as though it would be a simple world to recreate in Unity. Start placing cubes around a scene and see how far you get before the frame-rate grinds to a mind-numbing halt. So wonder and fret no longer, as this course reveals the secrets of programming and rendering procedurally-generated voxel worlds, like Minecraft, with C# in Unity.
In this course, Penny teaches all the invaluable skills you will require to build a blocky world from scratch using her internationally acclaimed teaching style and knowledge from over 30 years working with games and graphics. But hold on tight as you’ll be taken on a journey across the computer graphics realm as it is taught to post-graduate university students. Through detailed descriptions and hands-on workshops examining all you need to know about 3d data structures, building meshes from scratch, using noise algorithms to generate terrain features and caves, and texturing blocks you will be programming your own world in no time.
Learn how to program and work with:
-
voxels
-
custom built polygons and meshes
-
vertices and normals
-
UV mapping
-
texture atlases
-
parallel processing and the Unity Job System
-
Unity’s MeshAPI for parallel mesh creation
-
Perlin noise
-
infinite terrain generation
-
loading and saving data
Contents and Overview
After getting a little experience in why it’s such a bad idea to build a Minecraft type world using cubes, you’ll start following along with Penny, exercise after exercise, toward the end of building your very own and unique blocky terrain.
You’ll begin by dissecting a cube and examining its fundamental parts from vertices, to normals, to texture mapping. Armed with this knowledge, you will then begin writing code that redefines the cube and makes it far more efficient to draw as a terrain component. You’ll then bring these pseudo-cubes together to form chunks, to optimise rendering performance. Once you’ve worked on creating a solid world of chunks you will then learn about smooth noise and a little fractal geometry will be introduced to assist you in carving out realistic landscape features including caves.
With terra-firma to stand on, you’ll next add a player character and start exploring the new world. To prevent you falling off, you will also start working on the logic to build the world around you in real-time, out to infinite boundaries.
When you are done with exploring, it will be time to start digging and building. It’s in this part that you will learn how to add and remove blocks at the click of a button to further mould the terrain to your liking.
Finally, you’ll cover the dynamics of adding flowing water, falling sand and start working on the logic for creating your very own biomes.
What students are saying about this course:
-
Hi! I wanted to thank you and compliment you for the Minecraft Unity course. I’ve been a (web) programmer for 20 years. After so long creating somewhat boring work I’m excited to make games. My interest is in creating procedurally generated, complex worlds. Learning about Minecraft, therefore, seemed like a good idea.
-
Love the amount of detail Penny goes into! Not too little, not too much, she manages to hit the sweet spot that gets you a deep understanding of what’s going on, coupled with the ability to jump in with confidence and start doing things yourself. VERY pleased with my course purchase, and look forward to more by her!
-
Clear, concise, introduction and extension of concepts required to efficiently generate Minecraft style worlds, including Perlin noise and fractal Brownian motion.
-
1WelcomeVídeo Aula
-
2Join the H3D Student CommunityVídeo Aula
H3D has a bustling online student community. Here's how to get involved.
-
3Contacting H3DTexto
How to contact us
-
4FAQsTexto
This lecture discusses the text editor used throughout this course.
-
5VoxelsVídeo Aula
In this lecture students will learn that voxels are data points in three-dimensional arrays. Contrary to popular belief a voxel game world need not be blocky.
-
63D Array and Data ManagementVídeo Aula
In this lecture students will examine the nature of three dimensional data and look at an array that stores it and a nested loop structure that creates it.
-
7Why You Can't Build Minecraft with CubesVídeo Aula
Cube World Challenge
-
8Cube World ChallengeVídeo Aula
-
9Updating to Unity 6Vídeo Aula
While this course was developed in a previous version of Unity, we've tested the projects and they work with Unity 6. This video is a guide to help you adjust your learning in this course to use Unity 6.
-
10The Anatomy of a CubeVídeo Aula
In this lecture students will learn about the data structures that make up a cube structure and how the vertices, normals, UVs and triangles are stored.
-
11How to Build a Quad Part 1Vídeo Aula
-
12How to Build a Quad Part 2Vídeo Aula
In this lecture students will complete building a quad with script and see it displayed on play in the Unity Editor.
-
13How to Build a Cube Part 1Vídeo Aula
-
14How to Build a Cube Part 2Vídeo Aula
In this lecture students will learn how to ensure a quad can be drawn in all 6 locations to make up a cube as well as find out how to move the cube to a different location in 3d space.
-
15Merging Meshes Part 1Vídeo Aula
In this lecture students will learn how to write code that merges mesh data into the one mesh structure.
-
16Merging Meshes Part 2Vídeo Aula
In this lecture students will learn how to use the mesh merging code to create a cube with just one mesh.
-
17Texturing Quads and BlocksVídeo Aula
In this lecture students will learn how to adjust the UV values of a quad to display a tile from a texture atlas.
-
18Creating Block Types and Assigning TexturesVídeo Aula
In this lecture students will learn how to assign a block type and change the texture appropriately.
-
19How to Put a Chunk Together Part 1Vídeo Aula
In this lecture students will learn how to restructure the code to generate multiple blocks that can be used to create a chunk.
-
20How to Put a Chunk Together Part 2Vídeo Aula
In this lecture students will learn how to begin using the Unity Job System to merge the blocks into a single chunk.
-
21How to Put a Chunk Together Part 3Vídeo Aula
In this lecture students will learn how to put together the structure that will be used by the job system to process the mesh.
-
22How to Put a Chunk Together Part 4Vídeo Aula
In this lecture students will complete writing the chunk production code and get to run it for the first time.
-
23Getting to Know the Block NeighboursVídeo Aula
In this lecture students will learn how to test if a block has a solid neighbouring block.
-
24Drawing only Visible QuadsVídeo Aula
In this lecture students will learn how to amend the job system mesh merge to deal with blocks that have no mesh.
-
25Adding AirVídeo Aula
In this lecture students will be challenged to add random air blocks.
-
26The Theory of NoiseVídeo Aula
In this lecture students will learn how Perlin Noise can be used to simulate the heights of a landscape.
-
27Graphing NoiseVídeo Aula
In this lecture students will learn how to build a graph visualiser using a line renderer to display Perlin Noise values.
-
28Fractal Brownian MotionVídeo Aula
In this lecture students will learn about fractal brownian motion and use it to generate a more realistic looking landscape.
-
29Adding Heights to a ChunkVídeo Aula
In this lecture students will be challenged to use Perlin Noise to add height data to a chunk and create their own landscape.
-
30Making Chunk Adjustments for World UseVídeo Aula
In this lecture students will learn how to modify the code in a chunk to consider it's position within the world.
-
31The World ClassVídeo Aula
In this lecture students will learn how to create their first world class that will generate multiple chunks.
-
32Building the World with a Co-routineVídeo Aula
In this lecture students will implement a coroutine to draw the world to enable interacting with it while it is drawing.
-
33Exploring the World on FootVídeo Aula
In this lecture students will bring a First Person Controller into the environment so they can walk around on the terrain.
-
34Loading with a Progress BarVídeo Aula
In this lecture students will learn how to create a progress bar to show
-
35Switching Camera ControlVídeo Aula
In this lecture students will learn how to position the First Person Controller in the landscape above the centre point of the terrain after the world finishes building.
-
36Graphing More Perlin NoiseVídeo Aula
In this lecture we will quickly update the PerlinGrapher tool to allow its further use in defining the heights of the layers we will add to the blocks.
-
37Placing Grass On TopVídeo Aula
In this lecture students will learn how to properly texture a grass block with the three necessary textures for the sides, top and bottom.
-
38Preparing for Multiple LayersVídeo Aula
In this lecture students will rework the Perlin graphing tool to become and input device for creating layers in the landscape.
-
39Adding a Layer with ProbabilityVídeo Aula
In this lecture students will learn how to use probability to determine when a mineral appears within a layer.
-
40Defining a Seam of MineralsVídeo Aula
In this lecture students will learn how to add a layer to the world that is between two Perlin graphs.
-
41Three Dimensional Perlin NoiseVídeo Aula
In this lecture students will learn how to create a method to generate 3D Perlin Noise values.
-
42Graphing 3D Perlin NoiseVídeo Aula
In this lecture students will learn how to create a visualisation tool to allow them to see how a 3D Perlin Noise value looks.
-
43Adding Caves Into the ChunksVídeo Aula
In this lecture students will learn how to integrate the cave generation algorithm into their chunks.
-
44BedrockVídeo Aula
In this lecture students will learn how to place a layer of bedrock across the entire bottom layer of the world.
-
45Building by the ColumnVídeo Aula
In this lecture students will learn how to adjust the code to focus on building chunk columns.
-
46Expanding the World with Player Movement Part 1Vídeo Aula
In this lecture students will put in place data structures and methods to manage the building of new chunks as the player moves around the world.
-
47Expanding the World with Player Movement Part 2Vídeo Aula
In this lecture students will continue adding the code to dynamically generate more of the world as the player moves around.
-
48Expanding the World with Player Movement Part 3Vídeo Aula
In this lecture students will finalise the dynamic building of the chunks that surround the player.
-
49Hiding ChunksVídeo Aula
In this lecture students will learn how to hide chunk columns that don't need to be displayed.
-
50Processing Blocks in ParallelVídeo Aula
In this lecture students will learn how to turn a for loop into a parallel job to speed up the creation of chunk data.
-
51Building in the BackgroundVídeo Aula
In this lecture students will learn how to build a larger world in the background after the initial world has loaded.
-
52Something went wrong on the way to the core.Vídeo Aula
In this lecture students will learn how to generate random values correctly so they work inside parallel script.
-
53Digging Holes Part 1Vídeo Aula
In this lecture students will learn how to grab a hold of the location of a block that is clicked on in the world.
-
54Digging Holes Part 2Vídeo Aula
-
55A Blocking Building MenuVídeo Aula
In this lecture students will learn how to put together a menu of block types in order to select the blocks they want to build.
-
56Building BlocksVídeo Aula
In this lecture students will be challenged to complete the code for adding new blocks into the world.
-
57Building Across ChunksVídeo Aula
In this lecture students will learn how to develop the code to allow building across chunks.
-
58Decals and Secondary UVsVídeo Aula
In this lecture students will learn how secondary UV values will be used to display cracks on blocks and begin coding for an extended mesh data set.
-
59Adding Secondary UVs to a QuadVídeo Aula
In this lecture students will work through the changes required to the Quad and Block code to deal with a second set of UVs.
-
60Parallel Processing of Meshes with Two Sets of UVsVídeo Aula
In this lecture students will learn how to integrate two sets of UV values into parallel mesh processing.
-
61Breaking BlocksVídeo Aula
In this lecture students will learn how to implement differing block health values so different blocks take longer to destroy than others.
-
62Healing BlocksVídeo Aula
In this lecture students will learn how to heal any hit blocks after three seconds.
-
63Serialising World DataVídeo Aula
In this lecture students will discover the data stored in the world that is required for successfully saving a version of the world.
-
64Extracting World DataVídeo Aula
In this lecture students will learn how to extract the data from the world data structures and place it in a serialisable class.
-
65Saving to a FileVídeo Aula
In this lecture students will learn how to save the data from the world into a file on the computer's hard drive.
-
66Reading World Data from FileVídeo Aula
In this lecture students will learn how to read the world data from a file and be challenged to integrate it into the code.
-
67Loading World Data into Chunk DataVídeo Aula
In this lecture the code for loading the chunk data from file and building the chunks from this will be completed.
-
68Loading From File Loading BarVídeo Aula
In this lecture students will be challenged to integrate the loading bar into the loading from file code.
-
69Hiding the Extra WorldVídeo Aula
In this lecture a new save file will be created to store the visibility status of each chunk and reload as required.
-
70Block Neighbours and ChunksVídeo Aula
In this lecture students will rewrite the block neighbour finding code to allow easy access to blocks that are neighbours in different chunks.
-
71Falling BlocksVídeo Aula
In this lecture students will learn how to integrate a new enumerator into the code that will create falling blocks.
-
72Digging BeneathVídeo Aula
In this lecture students will learn how to take into consideration all air blocks as they become available to test if there are falling blocks above that need to be processed.
-
73Fluid BlocksVídeo Aula
In this lecture students will create a method to allow a block type to flow into a neighbour block.
-
74Controlling FlowVídeo Aula
In this lecture students will complete the flow code as well as check if the blocks might flow off the edge of the map.
-
75Planting TreesVídeo Aula
In this lecture students will learn how to use a combination of probability and 3d Perlin Noise to plant trees in the surface of the map.
-
76Growing TreesVídeo Aula
The Tree Designer
-
77A Tree DesignerVídeo Aula
In this lecture students will learn how to use a simple tree designer to plan out the look of their trees and get the code to place in the chunk script to grow them.
-
78The Water TableVídeo Aula
In this lecture students will be challenged to add in a world wide water level to create an ocean effect across the landscape.
-
79Blocks with TransparencyVídeo Aula
In this lecture students will begin splitting the chunk mesh in two; one for solid blocks and one for fluid blocks.
-
80Adjusting for Two Meshes Per ChunkVídeo Aula
In this lecture students will learn how to work with the two meshes per chunk as well as adjust drawing code to get transparency working for water.
-
81UV Scrolling of Water TextureVídeo Aula
-
82Being UnderwaterVídeo Aula
In this lecture students will learn how to apply a post processing layer to change the camera effects when the player character goes underwater.
-
83A Word on BiomesVídeo Aula
In this lecture students will learn how 3d Perlin Noise can be used to create biomes.
-
84Biome Challenge ProjectVídeo Aula
In this lecture students will learn how to put together a map with different biomes and different vegetation.
-
85Some Final Words from PennyVídeo Aula
-
86Where to now?Texto
Description: This link provides further information on the courses you can look at taking based on your interests and skill level.
Content: For details on all Holistic3D courses and how you might progress through them check out this blog posting.
