Probably a good start would be to look at: http://www.youtube.com/user/AlwaysGeeky?feature=watch
Its a youtube series of somebody making a voxel engine/ game .
Its a series of articles with a bit of code.
It seems that you can:
- use C# with a graphics wrapper like SlimDX. No new language to learn so hopefully it would be faster to write code and see progress.
- use C++ with DirectX 11/OpenGL/Some graphics wrapper. Probably the performance could be better (if you know what you are doing) but it would initially be quite frustrating. Plus more things to learn at the same time = more frustrating / easier to give up.
To start a voxel engine, just render a 3D cube. Then render more of them. Figure out how to store them and build it up from there.
A good idea would be to have some kind of game in mind while you build the voxel engine. This gives a couple of benefits:
- No bloated code. You would know exactly the minimum requirements of the engine and what it should do. Faster developement time.
- Gives you something to work towards. Easier to see the progress you are making = more motivation to continue.
- You will be making progress on the game simultaneously which makes the engine applicable. Extra motivation. Hopefully speeds up development.
(In my opinion just start making the game. The engine will be the reusable parts of the game. Just making an engine with no real purpuse can lead to long development with messy code. When you actually try to use it to make something, you would probably have build too complex of a solution.)
The most important thing is to start. Just get coding. When you get to a specific problem, try to see if you can figure it out. If not working after a while, THEN look for resources how to fix it.