|
My name is David Maletz, and I am a self-proclaimed masochistic programmer. Why am I a masochistic programmer? Because whenever I have a choice between using an existing utility or creating the utility myself from scratch, I almost always choose the latter. Determining what tools to use, and what tools not to use is critical for all game and software development. Choosing the right tool could save months, perhaps even years of development time, but the wrong tool could come with a poorly documented API, bugs or the have the wrong tools and utilities. A smart programmer carefully chooses his tools and learns how to use them well. I prefer to make my own tools, reinventing the wheel, and making it better. Why? Partially for the learning experience. Every tool I write gives me hands on experience with the inner workings of that tool. However, the main reason is because that's just who I am, the masochistic programmer. And isn't it fitting that I am now working in game engine development?
I wont go into details about my history in my first post, but to put it briefly, I'm a graduated computer science major who has been programming, and developing computer games since I was 12 and have made (and failed to make) many games. One of the failures I'm most proud of is Aero Empire, as even though it was not completed, I learned a lot while making it, and was also the first time I tried making a game with a large team. I also enjoy telling people about the pseudo 3D maze-crawler RPG I wrote entirely in x86 assembly code, but that's another story. In graduate school, I developed rendering algorithms and wrote papers as a research assistant (my portrait image is a screenshot from an interactive algorithm I developed), but decided I preferred hands on development to research.
 A screenshot from the indie game Aero Empire.
After graduating from college, I decided that I should make a game engine. I've had plenty of experience making the utilities games need because, as a masochist, I have written them from scratch more than once. I also have a lot of experience with advanced rendering algorithms because of my time as a graphics researcher. And making a game engine satisfies my desire to design and program all of the utilities from square one, exactly how I think they should be (to be honest, I use external libraries for model and texture import and export, although I did write a DDS texture import/export tool from scratch as I couldn't find a free one that fit my needs).
I have been working on a game engine for six months now, and am just finishing up the core, which includes just about everything needed for general scene management and rendering with plenty of utilities to make things easy. The core is designed to be incredibly flexible and dynamic, and has integrated animations, accurate collision detection and instancing. It's pretty interesting - but a long way from completion. It doesn't have any rendering effects yet, so it renders basic phong shaded models. A game engine is a lot of work for one programmer, but as the self-proclaimed masochistic programmer, I look forward to doing it all from scratch, and even torture myself with writing good documentation.
Anyways, I'll continue to post updates with more masochistic coding, interesting thoughts that come up during development, and even news on some small game projects I'm making on the side.
|
My first engine, which I wrote years ago, was DirectX 9 based and got me my first jobs in the industry.
It was quite cool but a bit rubbish in certain aspects, and not very portable because heavily linked to direct3d calls.
Now, after few years of experience both on PC and console I've decided that quitting my job and starting up my own indie label was the right thing to do. I've many indie friends and collegues and we use to share a lot of knowledge on a small community of developers at indievault.it (it's a bit like an italian speaking tigsource). Not many of us are doing their own tools, these years seems over, I remember in ~2000-2003 everyone and their mom were doing 3d engines :)
Now the vast majority settle to Unity or UDK (mostly Unity because UDK is often overkill and has high fees for commercial products), few users that are more skilled follows the C++ way, generally using Ogre 3D.
I'm working on my game engine and it's been about four months, I have a nice importexport pipeline that converts models in my own format (both ascii or binary), another file format for defining materials + parser and the engine is all cool and modular, I have two main rendering modules (DirectX9 and OpenGL renderer), a physics module that implements Bullet, an older one with PhysX adapted from my older engine and I'm writing the main tools now (maplevel editor that imports raw .obj, .fbx, .x and let me create new entities, assigncreate materials, lights and so on).
I'm quite happy about it and I plan to get a console devkit in the next months. It's a lot of work but it's totally worth it. People talking about reinventing the wheel are often people that spend the same amount of time learning Unity without the benefits you have in the end, both in experience and in usefulness of the tools.
In programming in general you learn how something works only when you do it by yourself, many people using blackboxes like Unity could improve a lot their programming skills just hanging around a bit with the DirectX SDK.
Good luck!
Your story about your first game engine brought me back to my first engine which was also too API dependent (OpenGL in my case), to the point that I had to make explicit OpenGL calls in the game code for most rendering purposes. The main problem with my first game engine was that it was not designed as a stand alone engine, but as the main tool for a game I was making at the time. This made the engine work well for that game, but ended up not flexible enough to work for other games. With my current game engine, I've designed it from the ground up as a game engine, not linked to any game, and am making it versatile enough to create any kind of game.
In any case, even if the time of writing tools is over, I'll continue making tools at my own pace, and perhaps even bring some competition to Unity and the UDK. That is just who I am - the masochistic programmer.
Anyways, glad to hear from a masochistic comrade, and good luck on finishing up your game engine. Definitely send me a link when you have something uploaded.
I too am building a game engine from scratch with the following answers to my questions: Yes, Mac/iOS, Objective-C/MacRuby, 4+ years. Good luck to you and I hope to see more developments in the future!
As for your questions, right now I am working on the engine alone, although later I am considering bringing on more programmers to work on tools and will need artists to create tech demos. The engine is multi-platform, right now it works on windows (XP, Vista and 7, both 32-bit and 64-bit) and linux (tested on ubuntu 32-bit), but the engine is designed to be easy to port to other platforms, and I plan to add Mac, android, iPhone and console support eventually. The engine is written in C++ (with a C++ scripting language which can be compiled into the executable in release mode and cg shading language). I have been working on the engine for six months, so it is still in early development with only the core finished.
How is your engine progressing? Are you planning on a release soon? What effects do you have?
Good luck to you too, and I'll be sure to post developments in the future.
Nice to see someone else crazy enough to try making their own engine and actually having success at it. It's endearing and encouraging. Again, best of luck with your engine, I'll be watching for updates!