Showing posts with label code. Show all posts
Showing posts with label code. Show all posts

Friday, 18 March 2016

I Stepped on a Performance Landmine

Today I finally got to the bottom of a strange case of the jitters that Blackshift would often come down with on Windows.

I'd just rewritten my profiling code, because it's time to get serious about performance, and here is the graph it presented me with. Can you see the problem?


Friday, 5 February 2016

The Bgfx Renderer: A Story In Pictures

A Visual History of the Integration of the BGFX Renderer into Blackshift

Wednesday, 30 November 2011

Tool tips

I should let you guys know, I'm cheating a bit. I've only just started this dev blog, but I've been working on the game for a few weeks now. Hey, if I made a blog for every half-assed project I started there would just be blogs everywhere. Here's what I have so far:


Yes, those are placeholder graphics. 3D modelling isn't my strong point, but I could do a bit better than that if I tried. I'm going for the punk rock aesthetic here, by the way, and doing everything myself — so the stuff I'm good at will be good, and the stuff I'm bad at will feel charmingly home-made. It's win-win.

Anyway, in this post I'm going to talk about the decisions I've made so far, which amount to what I'm making and what tools I'm using to make it with. I might get a bit technical, so I hope you're cool with that. In general this blog will be of most use to you if you are (1) me, or (2) a fellow starving indie game developer hoping to find your way in this wicked world.

So! Blackshift will be a grid-based abstract action/puzzle game where you explore mazes and interact with various doors, switches, robots, magnets and so on. There'll be items to use, bullets to shoot and maybe a sneaky laser or two. There'll be about a dozen enemies with simple movement patterns. There will be copious explosions.

There's a certain sort of 'mechanical' feel I'm going for. I don't want to use a scripting language; I want to make it possible to build interesting and intricate levels just by snapping tiles together like Lego. Speaking of which, there definitely needs to be a user-friendly level editor and an online level repository. Online stuff is fun, and an optional online element functions as a sort of DRM without being invasive.

Sounds pretty ambitious, huh? Well, yes it is. It's a spare time project, and I'm just (...one...) one man. Still think I can do it though. Especially with this blog. I've decided blogs are brilliant. Welcome to 2005, right? Give me a few more years and I'll understand Twitter. Without further ado, here's all the stuff I'm using to make Blackshift:


If you haven't heard of it, Ogre is a rather nice open-source graphics engine. It's not a full game engine; it only does graphics. It's like a higher-level OpenGL. It wouldn't make sense to shell out for something like Unity for this project, since it does so much I don't need. So Ogre it is. As a bonus, you get to use British spelling when calling its API, which is quirky and fun.


Blender is a really nice little 3D modeller, and by little I mean large and sprawling, and by nice I mean free. To be fair, it's really not far behind the  £1000+ commercial modelling suites in terms of functionality; you just have to  find that functionality using your mouse, all of your keyboard, and an IRC client.


I find music hard for the same reason I find 3D modelling hard: I'm trying to do something artistic but I have to do it by holding Shift and Alt and clicking on fiddly little widgets. Ableton Live is not my ideal music software, but it's the best I've used.

Original author unknown

There's a whole world of exciting programming languages to try out but when it comes down to it, for games, you know you can rely on C++. Despite the archaic 1970s linker model, the perverse syntax and the infuriating lack of anything resembling a module system, it still manages to be a very good language to write games in.

One other language I did consider is Lisp, which I like because you never have to write any boilerplate or repeat yourself. In fact, if you do it right, your code quite literally writes itself. One day someone will invent a non-ridiculous syntax for Lisp and people will just instantly start writing better software.


I used to be a jEdit man, but jEdit doesn't seem to be so well maintained these days. Like C++, Vim can feel a bit olde-worlde, but it's survived this long and it's still maintained, so you know it's solid. And it's pretty damn ergonomic.

While we're talking about editors, I realize Emacs is better, it just physically hurts my hands to use it.