MVE Part 0 - What the %$* is MVE?
Hello everyone! This is my second post here and I'd just like to thank you for all the great feedback I got after the first one! While the last post somehow just came out naturally, I had a much harder time finding a topic for my second article on this great blog.
Write about the stuff you like to do, I thought and came to the conclusion that it might be good to create something and drop a few lines about that. Then I read a piece on the importance of personal projects and what can be done in 2k lines of C and the ideas started to float around my head. I also took a step back to reconsider the point I tried to make in my first post: It's not hard to get started programming game related stuff - just do it!
Somehow all this stuff clicked together and made me start a pet project. Ladies and gentlemen, I present to you:
The Minimum Viable Engine
*Insert record scratch noise here*
There, I said it. The big bad "E" word. But there's a reason why that particular word is crossed out in the title. No I'm not going to build a full engine nor will I ever be able to do so on my own in one lifetime. If you want an engine, go have a look at what id, DICE, Epic, Unity and all the others are building. Their stuff is amazing and deserves a lot of respect, but again - that's not what I will try to do.
My time is limited, so I will try to create some kind of a working miniature model. I want to build something that conceptually does what the real thing achieves, but in a way that might not be fully featured but is smaller in scale and easier to understand. This is the reason why I will stick to the following rules and limitations:
- Develop in tiny steps: I want to keep this managable and in a scale that allows me to explain what I did (and why) in a way that is easy to understand.
- Develop in C: This is just for fun. I like writing code in C and I like its distinction between data and algorithms. I don't say that it is superior to other languages nor do I want to force it onto someone. It's simply a choice out of personal preference.
- Reuse, don't reinvent: I put a link to a blog article on minimalistic C libraries in the opening paragraphs - now you see where this is going. Out of pure curiosity I want to try putting as many of these small libraries together before rolling my own implementation. This is also my central question in this experiment: Can I build some simplistic scene management, renderering and resource management by putting some of these libraries together?
So what have you got?
Not too much yet. Have a look at it yourself. Just the bare bones of a project, but enough to blog about. I put together Lua, libpez and GLEW and added a SCons script for building on Mac and Windows. Sorry about Linux - I'll setup a VM and get the build going there too at a later point.
I know this is the earliest possible point to for presenting a project, but even at this early state there is some interesting stuff going on under the hood. The Mac developers among you might want to take a look at my modifications to the libpez code, which I packed into the functions PezOpenWindow() and PezInitMenu(). This may be useful if you ever want to create an application window and main menu without using interface builder...
To be continued...
This might turn out to be actually good or even a complete failure, but whichever way this project might be taking, I won't be shy to write about my progress, findings and epic fails here on #AltDevBlogADay. I also want to invite you to come with me on this little journey. Comment, critizise and contribute. Help me and everyone reading these articles to become a better game developer!
Coming up next: Configuration