You may have thought I’d given up by now – over a month without an update – but despite seeing such incredible similar indie projects as Infinity Universe (well worth checking out for the crazy scale – over 7 years of dev! and multitude of tech posts), and Salvation Prophecy (also awesome, and actually released), I’m still working on the game. Granted, I haven’t done as much as I would have liked, but then I never do.
Seeing the great projects linked above has filled me with amazement for how much one person can do, as well as depressed me by showing me how much I have left to learn. So I’ll try and keep the scope of this game pretty low, as I don’t want to be working on it forever! I also started watching the first season of Firefly, which I’m loving, but can’t believe how Mr Whedon stole half my ideas before I’d had them! Seriously though, that is almost exactly how I’d pictured the state of civilisation in my far-fetched fantasies about this game.
Ok, here’s some stuff I did in the last month in pretty much chronological order:
- learned some of Zbrush 4R2 and figured out a new, better modelling workflow (along with 3ds max), which I’ll put up a video of in the future. It’ll be useful for any 3d modelling project, really, not just games. Did some spaceships with it.
- Improvised and recorded a sum of around 10 minutes of guitar “music” for the game – who’d have thought your skills degenerate so much after a year of not playing? Tried out FL Studio.
- Messed around a bit with Ogre, read articles/book on game programming, a bit of C++.
- Started a clean framework for the game, using http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Advanced+Ogre+Framework&structure=Tutorials
- Started learning shader programming – all that maths screws with my head. The pain is not alleviated with this complicated (for me anyway) free book GPU Gems 2
A 2-pass planet-y shader. Quite simple, I suppose; the atmosphere pass expands the vertices along their normals, and then colours using a “falloff” like pattern (if you’re used to max’s material system), and there’s a basic blinn shader as pass 2. Unfortunately the way I implemented the atmosphere (writing colour without depth) means it doesn’t work in Ogre when I ported it over. But I knew I’d have to re-write it anyway! I want to figure out a way of doing procedural noise-based planet textures – I’m pretty sure you can do lots of the work on the GPU. It seems everywhere I go for this sort of thing, this guy pops up as being a colleague of the writer: Inigo Quilez. I first came across him about a year ago; he seems to be a total genius having read the majority of his stuff!
Ok that’s enough for now. If you want any detail that I might be able to provide, don’t hesitate to ask.
I’ve been using Ogre for a few days now, just going through the tutorials on the website and messing around, and I really like it. After the pain of programming a uni project directly in OpenGL, I was kind of dreading how much work it would be just to get a model into a real-time renderer. As an analogy, imagine wanting to cook a nice meal, and having to build the oven first – you know what you want the oven to be able to do, but actually going about it is a slow and painful process.
However, with Ogre 3D, the oven is built for you! If I don’t want to, I never need to go into quaternion maths, building a scene hierarchy system, frame listeners or any of the other complex engine necessities. After years of using 3dsmax, I found the Ogre workflow really simple and straightforward. There are lots of nice features and it seems robust. It is not too bloated in my opinion either – although the set-up process was rather long. The tutorials on the wiki website are really easy to read and learn from, although one was unable to compile on my computer. http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Tutorials
Here are some screenshots of the demo scene I just made (having done Tutorials 1-6), using some example media and my own ships/ space-station:
You can read the code I wrote to create the scene shown in the screenshots here: http://www.evernote.com/shard/s121/sh/58d7c731-1507-4e4d-9e3d-8c9b14ef2005/71b5b5d250ca72c7173b8478e5b66395 – there’s exponential fog, texture shadows, a spotlight, a skydome, and some C++ structures like for loops to get me back into the flow! If you know some C++ and are somewhat familiar with making 3D graphics, I think the code’s pretty short and easy to read.
The structure of getting models into the engine takes some getting used to. There is a human-readable .scene file (which can be exported from Max, Maya, Blender, etc) and a dotSceneParser class. What this means is that scenes can be altered from within the .scene file, .mesh files and .material files without you having to recompile the source code. It’s amazing that you can use Max as your game editor almost, placing lights and objects, without having to constantly recompile your C++ code!
Here’s a screenshot of the “Easy Ogre Exporter” open-source Max plugin, http://www.ogre3d.org/tikiwiki/Easy+Ogre+Exporter, which is a really nice and simple way to get max scenes into the .scene format:
I had a really enjoyable few days taking it slow and learning all about Ogre – I don’t want to get disenfranchised by jumping in to making the game too quickly and doing everything wrong. Also I bought a load of expensive computer parts to make a new system, which will speed some things up a lot compared to working on my laptop – compiling and running the game takes about a minute, and those minutes sure add up. Hopefully I’ll start making the actual game soon though.
This blog is an account of developing a 3D PC game. I intend to work on it (the blog and the game) over the summer, which for me starts in 3 weeks when my exams finish. Blog posts will probably not be regular – hopefully that will be due to my addiction to developing the game rather than a lack of progress!
The game is a smuggling in space simulation. The majority of the game will be flying a spaceship in 3rd person. The controls will be keyboard and mouse based, and intricate enough to be enjoyable to fly and fight. Visual design will be semi-realistic futuristic (like mass effect, star wars, sins of a solar empire) but as I am only one person, the 3d art quality may have to be sacrificed to allow me to concentrate on programming.
The programming will take up the majority of this blog and my time. I would like to use C++, but regarding game engines/ APIs, I haven’t made a choice yet. I am tempted to write systems implementing OpenGL, but this may be too much work, so I will look at other engines as well. I don’t have much experience at all, and am trying to get to grips with this book, which is fantastic but a slow read for me: http://www.amazon.com/Game-Programming-Gems-Series-v/dp/1584502339.
Please get in touch if you have anything to say, including ideas for features, opinions, or just telling me I’m doing it wrong! Thanks for checking this out,