New Project -- YAVE: Yet Another Voxel Engine

YAVE
Yet Another Voxel Engine

6/21/2016: Blocks come in any color you like, as long as you like grey.

About
YAVE is my attempt to introduce more sophisticated real-time rendering techniques into the realm of Minecraft-style games. The goal for now is to produce an impressive tech demo. I am not planning on turning YAVE into a fully featured game or library, but who knows what will happen?

I currently do not have a day job. I am watching HMH and working on YAVE (and the occasional smaller-scale project) in order to hone my skills in graphics and game programming. I will usually dedicate at least 15 hours a week towards this project.

For YAVE, I am focusing on tech features that I believe will make for more engaging presentation in next-gen voxel games. Here are some of my goals (not promises):
- Very large game worlds (> 2000 voxels tall) with very fast movement speeds (> 100 voxels per second)
- Average-case optimizations such as Occlusion Culling and terrain LOD
- An emphasis on optimization for high end machines, especially those with SSDs
- Lights with a large radius of effect (think Stadium lights)
- Fancier lighting in indoor environments
- 3D sound
- Pathfinding
- More handcrafted world generation, at the cost of generating the world all at once.
- One top secret feature which I have prototyped, but which won't come to YAVE for quite some time

Conversely, there are some features which I certainly will not be adding to YAVE in the short term:
- Collision detection/physics
- AI
- NPCs/Enemies
- Asset Loading
- UI
- Multiplayer
- Gameplay
- Meshing for sloped blocks (with all due respect to STB)

Finally, I believe that voxel games should have an art style embraces the restricted "canvas" that a voxel game presents, and doesn't try to give a realistic presentation to fundamentally unreal worlds. Therefore, instead of looking like this, I'm hoping that my demo for YAVE will emulate the look of artistically confident low-poly games from the PS1 and PS2 eras, such as Mega Man Legends or Wind Waker.

I believe this set of goals distinguishes YAVE from the other voxel game projects out there. Voxels have a incredibly wide range of gameplay applications, so I believe there's enough room out there for a few more voxel games. Lastly, there's one specific and crucial difference between OBBG and YAVE, and that is that I am significantly less experienced than Mr. Barrett.

Streams
I'm going to hold a stream this Thursday (5/26) at 4PM PST, in which I'll demonstrate what I currently have. None of it will be surprising to anyone who has been following OBBG or voxel game development in general, but you have to start somewhere. From there, I plan to establish a regular streaming schedule. Because I consider myself a student of game programming, these streams will also serve as code reviews, in which I can discuss problems I'm working on, and viewers can suggest improvements to the code. It would be wonderful if a veteran programmer or two could occasionally attend.
I will archive streams, but I am undecided about putting them online.

Source Code
Since I am not wealthy, and YAVE is a bit more than a hobby project for me, I do not plan to post the source code in a public repository. However, don't hesitate to email [email protected] if you want to take a peek at the source code for whatever reason.

How do I support this project?
Come to the streams! I will not accept any money until at least one Killer Feature is complete.

Do you want to make this one of the Handmade Network Projects?
Yes. I just emailed Abner.

Edited by Oswald Hurlem on
Got some Ambient Occlusion, lighting, and light dispersion set up. That's more or less what Minecraft's got, although clearly there will be some knobs I'll need to tune later on down the line in order to make it look less... inky.

Next up is making a Time of Day system which will have the sunlight going at different angles than straight down. YAVE might be able to do angles along the North-South axis and even have the sun set at due Northeast for when it's wintertime. I have an interesting solution in mind for this and it will merit an explanation.

Edited by Oswald Hurlem on
This is so rad man. I want some more insight on the code what APIs and junk are you using, and all that stuff!
strangezak
This is so rad man. I want some more insight on the code what APIs and junk are you using, and all that stuff!


I'm just using SDL + OpenGL. I'll put some implementation details up soon, but if you have any specific questions, ask away.
That's really impressive - is that top shot running 67fps? That's a really impressive number of voxels being rendered if so :) Looks great - nice AO also!
What's a good time for you two to watch a stream? Just about any time after noon PST any day works for me.
I'm on GMT, so 12:00 PST is 19:00 for me. That works - if it's between 12 - 2pm PST I'll tune in :)
This week I've been busy, but next week will be more free.

Edited by xcodedave on
I'll stream Friday at noon this week.

For the past week I've been working to make it so the terrain and its mesh representation can be paged to the hard drive. Very large worlds are now possible, although there I will need to replace some floats with doubles and dramatically speed up the world generation code before this aspect of the game is ready for prime time.

Next up for me is adding some debug features, such as primitive drawing and a camera that can be someplace other than where the player is.

Edited by Oswald Hurlem on