If you aren't a programmer, here's a little sample of what we do to make games for you.
Today, at long last, I fixed a bug that goes back to Christmas 2014. The bug first appeared right after I updated the renderer
for better performance. One of the things that that change added was a hard limit to the number of shader programs the Lair engine could support: 4096. I figured that should be lots since I only had a few hundred shaders even with permutations. One afternoon while cruising over Miranda, the game halted because it had hit the limit of shader programs. I was shocked. But when I looked into it the reason became readily apparent: I never released shader programs from materials when they were unloaded. It was a simple oversight, quickly rectified with this little bit of code:
void Pass::ShutdownProgram( void )
if ( mProgramId == 0 )
if ( mGeometryShaderId != 0 )
mGlShaders->DetachShader( mProgramId, mGeometryShaderId );
mGlShaders->DestroyShader( mGeometryShaderId );
mGeometryShaderId = 0;
if ( mVertexShaderId != 0 )
mGlShaders->DetachShader( mProgramId, mVertexShaderId );
mGlShaders->DestroyShader( mVertexShaderId );
mVertexShaderId = 0;
if ( mPixelShaderId != 0 )
mGlShaders->DetachShader( mProgramId, mPixelShaderId );
mGlShaders->DestroyShader( mPixelShaderId );
mPixelShaderId = 0;
mGlShaders->DestroyProgram( mProgramId );
mProgramId = 0;
Now I was destroying the shaders and programs when they were no longer needed. Problem solved.
Then the Bad Bug
This started as a comment in reply to Tripleskit
but then I wanted to add a picture so...When will this game be accessible for open/close beta/alpha?
Ahh, when. The ever-present question. With just me to do the work, not a team of 300, or even 10, things happen a little more gradually than they do with bigger projects.
I posted this on screenshotsaturday.com
yesterday. I took it while finishing up unit movement when I noticed that flowers offer a bit of of camoflage which isn't an element in any of the RTS games I've played in the past. If you wanted, you could change your player color to match the flowers to blend even better. I'm not sure if that will become a thing or not, I just thought it was interesting.
Movement is looking pretty good now. Not perfect, but I'm running out of things I can do to improve it. I have one bug left that I started work on last evening and Monday I'm moving on to polishing combat.
I haven't had anything new and exciting to blog about lately because mainly I've been fixing and finishing things since the middle of January. Some people like to be fancy and call it "technical debt," I just call it "finishing stuff."
I read that awful interview with Peter Molyneux last week at Rock, Paper, Shotgun
and one thing he said really made me empathize with the situation he finds himself in. It's something I think many people really don't appreciate and it went by pretty fast in that unbelievably long article. I'm not here to defend 22Cans.
They've messed up on a grand scale. But I think that one thing he said is worth taking a further moment to consider:"Anything that involves creativity, you may think it should be a defined process, but it's not. And the reason that it's not a defined process is that the people who work on it aren't robots, and you can't predict whether someone is going to be brilliant and you give them a piece of code to do and they do it in a day, or whether they're going to take a month to do it, and that's the problem with creativity. Being creative is a very, very unpredictable force, and you try your best. You try your best to predict these things but very often you can be wrong." - Peter Molyneux.
I've done a lot of software development. It mostly goes like this: analyze the problem, work out a solution, estimate the tasks, run through them one at a time, do a QA pass, and you have a finished software "something". I'm actually pretty good at estimating that sort of work and ran on or slightly-under budget on whatever I did. If you're making business software or an annual sports title, or a tetris clone, you can
predict with reasonable certainty when things will be done.
Now try to do something that nobody has ever done before. Make a God game with extensive interactivity of every object in the world and emergent systems. Make an RTS that lets not four or 8 players play together, but thousands, operating not one, but hundreds of in-game avatars in real-time on a map not a few hundred metres on a side, but hundreds of kilometres on a side. You have 16 milliseconds and 1KB/second bandwidth in each direction. Go!
To take a break from moving the deck chairs about with unit movement, I took a couple of afternoons off to develop a second biome.
This next screenshot is from about half-way through development of the new biome. It includes the new terrain textures as well as one of the giant crystal formations. It wasn't complete yet, but there was something I liked about this shot.
A lot of my textures come from cgtextures.com
but in this case, I was looking for black gravel textures and I completely struck out there. I got an idea to go to the pet store for fish tank gravel in different sizes and materials to photograph. $27 later I had five different samples. I shot those outside in a cookie sheet lined with black paper. I made a cliff-face texture from some photos I took of burnt driftwood last summer and I was done.
The new biome also needed new terrain props. My wife showed me some cool rock candy crystals which gave me the idea to check out the Unity Asset store where I found these nice crystals
. The rocks are from the same company that did the rocks in the Ash Flats biome.
Once I had all that in, I decided I didn't want to re-use the purple and yellow flowers, so I spent 3 hours with GIMP carefully cutting red flowers and stems out of a couple photos I took last summer. After tweaking crystal sizes and fixing all the floating props I think it turned out pretty well.
Tonight I played Dragon Age Inquisition for 40 minutes. In that time I killed an alcove full of spiders, went through a cave of spiders, got chased by a bear, killed a giant and closed one rift by avoiding combat entirely. I've played about 20 hours of Dragon Age Inquisition so far and I'm so disappointed.
I loved Dragon Age Origins. It (also Mass Effect) is perfection in the form of a giant branching story punctuated with carefully designed scripted battles. Add gear progression, crafting, and characters you can really care about, and I spend hundreds of hours on those games.
Miranda as it was. Before The Burning
I found this image tonight. I do so little art, but I made this planet in Blender for an earlier version of the trailer, and I thought it turned out quite well.
I demoed The Imperial Realm::Miranda
to about twenty people tonight at Full Indie
demo night. I wasn't sure I was going to show the game when I went down there, but I found an open table with power, brought out the business cards and started talking to a lot of really nice people.
Holy sh** Is The Highest Praise
I got quite a few "holy sh**"'s tonight which is really the highest praise you can get. Usually it was when I pointed out my base on the map and then zoomed out to show the whole map.
It's been a few years since I've shown anything in public so it was fun to go through the process of figuring out how to best demo Miranda. I got a good laugh from one fellow who pointed out "that you can always tell when its someone from marketing doing a demo and when it is one of the developers, because marketing glosses over bugs, and developers point them out." I think I'm a hybrid, I only mention bugs if its really obvious, like big black buildings in the middle of the screen.
If anyone ever tells you sorting your meshes by material and minimizing redundant calls in OpenGL isn't worth your while, they're wrong.
Frame rates have been slowly decreasing as I've been adding new content. Recently my 2GHz Core i7 with NVidia GeForce GT 555M had hit an all-time low framerate of around 50FPS. I needed to do something to crank those framerates back up so players with lower-spec machines would have a chance.
The obvious candidate was the way my renderer handled materials. It didn't really do enough to tell if materials that had different settings were otherwise identical (same textures/shaders.) And it did nothing to reduce redundant state changes, happily changing shader and every rendering setting at the end of each material even if the next material used all the same settings.
I've been adding tutorial elements as I come up with them (red arrows on UI while playing, tooltips.) Eventually I plan to replace the "wall of text" on the layout screen with voiceover. Does anyone know of games with really good tutorial ...
I think that heat map it is an awesome idea, i must admit during the play test i did struggle to put down buildings etc, one thing i would recommend is a good tutorial at the start of the game, i have seen games that had lots of potential come and ...
That "Dementors" screenshot looks like it would actually be an awesome animation for something equally sinister. Any ideas for a chemical or biological warfare superweapon, maybe? Or maybe some really nasty volcanic vents?
Thanks! I don't have a specific date in mind (I think by now I have thoroughly proven that I am terrible at dates) however the TODO list is down to: trailer, test weekend, press, store, early access.
I had the good fortune to play on one of the test weekends, cant wait for this to be available to get my teeth into properly, any ideas on a time line for a release or is it sit and wait, which is kinda fun too ;-)
Keep up the awesome work !!