Friday, November 17, 2017

The Programming Loop

You need a library that does something. Here's what happens:-

1. Start writing a library, e.g. a networking library for a game.
2. Use Google and ask for help online when there's invariably a problem to solve.
3. Most people suggest using an existing library.
4. Start using an existing library.
5. Realise that this library either has a bug in it, or isn't straightforward to use.
7. Use Google and ask for help online when there's invariably a problem to solve.
8. Decide it's hard work using someone else's code, so start to write your own library.
9. Start again from 1.

Tuesday, August 01, 2017

You're probably best...

...following my Twitter feed to find out what I'm up to.  Who's got time to write a blog post these days? And who's got time to read them?

However, if you're interested, I'm currently developing Killer Crates.

Sunday, June 25, 2017

Physics Platformer

This uses JBox2D for the physics.  This post is just a dump for hosting images at the moment, but I'll add something soon.  Until then, the source is available at

Friday, June 16, 2017

Databases - The difference between MSSQL and MySQL


Windows and MSSQL:-
* Download SQL Server 2016 (the free version presumably)
* Get message that SQL 2016 won't work on Windows 2007
* Install SQL Server 2007 (once you've found the correct link)
* Download MSSQL Management Studio (once you've found the correct link)
* Try and restore database backup
* Get message that backup was created with SQL Server v 10.5 and I am running 10.0.4
* Try and find out how to upgrade to SQL 10.5.
* Download SQL Server 2008 *R2*
* Try and restore database backup
* Still says version number is too low
* Uninstall SQL Server 2008 after assuming it would upgrade and not install side-by-side
* Try and restore database backup
* Profit!

Linux & MySQL:-
* sudo apt-get install mysql-server
* mysql --user me --passwordmypwd  < datafile.sql

Tuesday, June 13, 2017

Multiplayer Platformer

After playing the excellent game Lovers in a Dangerous Spacetime on the PS4, which is a same-screen multiplayer co-op platformer, I decided to have a go myself at making a multiplayer game.

This involved working out how to read PS4 controllers.  Once I'd managed to do this in Java using some source code I found on the internet, I ripped apart one of my old Android platformers and refactored it into a PC game.

To make it even more special, and so that more than one player would stay in the screen, I implemented a zoom in/out feature.

The game currently has two gameplay modes: A simple "race" mode where the winner is the first person to get to the end, and a "race" mode, where the last player standing is the winner; players are elimiated when they get caught by the end of the screen.

Full source code is available here:

Monday, March 27, 2017

More Adventures in Open Source

As I invariably slowly lose interest in my latest programming project, I decided a solution to my loss of programming mojo would be to contribute to a well-established open-source project, which already has good assets, a community, and a completed quality game that I might want to play as well as help develop.  Since I've also decided to start using other languages, it would help me decide which new language to start with.

So after a lot of Googling trying to find potential such projects, I came across a few.  Let's see how I got on:-

1) Teeworlds
This is a multiplayer 2D platformer with guns.  Unfortunately, on my 2Ghz laptop, the opening screen (a simple background and a box for me to enter my name) was too processor-intensive for even the mouse pointer to move at more than 1 frame-per-second.  God only knows how slow the actual game would be, if I could get to play it.  It looks very good though, so I was a bit disappointed.

2) XPilot
This is quite an old game (at least 10 years); it's a multiplayer Thrust variant.  The game was a bit jerky considering the simple graphics (even connecting to my local server) but the main problem was that none of the 20+ public server had any players online.  This is the big problem with multi-player games; they live and die by the players.  Once people slowly stop playing it, it doesn't matter how good the game is, it just slowly dies (assuming it had any players to begin with).

3) Unvanquished
I only include this here because it looks great, but doesn't seem to have anyone playing it.  It's sad to see that a game that looks so good and, if it plays as well as Tremulous did, plays well, should be struggling to find players.

More coming soon....

Friday, March 24, 2017

Moving on from Java

After some consideration, I've decided to do all my game development in another language from now on, although I've not decided which yet.  This is for a few reasons:-

1) No native executable
I've never had an issue with Java's speed; the whole "C/++ is faster argument is irrelevant.  However, sometimes you just want to release an executable for the target platform without end users needing to install Java first.  How come there's no simple option to compile Java to an executable yet?

2) I Can't run 3D
The primary Java library for 3D (and most advanced graphics) is LWJGL, which although excellent, is unable to run on my laptop due to hardware limitations ("Cannot create window.." or something).  This means that I can't use JMonkeyEngine or LibGDX.  However, even something like WebGL will run 3D quite happily at a decent framerate on the same laptop.

3) No decent open source games
I periodically browse the web looking for an open source game written in Java that I can help contribute to, and I'm yet to find one that's almost complete and with a community.  Most seem to be in C/C++.  And there's certainly no "big" open-source flagship games written in Java.

4) Java is the defacto choice for Android apps, but the Play store is so swamped that getting anything noticed on there is impossible; and developing for Android makes things exponentially harder due to all the different devices that need to be catered for, and the constantly changing APIs.  Even Google can't manage to create apps that don't crash periodically.

Don't get me wrong, Java is technically my favourite language; it's clean, relatively straightforward and powerful, and has lots of helpful libraries.  But regarding open-source games, it's nowhere to be seen.

Monday, March 13, 2017

Sensible Soccer

I was watching one of the excellent Kim Justice videos the other day, this one being about Sensible Soccer.  (If you like watching videos about games, especially of the retro variety, then I thoroughly recommend his channel).  It got me thinking, how come no-one has remade Sensi for the modern day?  After all, there are thousands of "retro remakes", and this game was incredibly popular back in the day.

Needless to say, someone has.  (In this day and age, it's impossible to find something that someone hasn't already done, especially with regard to games).  It's virtually identical to the original, but with all new updated teams, online play, plus presumably loads of other modern improvements.  However, the main aspect of the game - kicking the ball around - remains as great as ever.  Which makes me curious why this game isn't more well known?  I guess that in this day and age, there is so much going on it's very hard for anything to get noticed.

The only "issue" I could find was a problem I had actually starting a game: the menu options are selected with Enter - apart from the one that selects "Start Game"!  I spent a while pressing every button on the keyboard, and also going through every other menu option, since I assumed I must have selected something that prevented the game from starting.  There was very little documentation (that I could find).  In the end I had to join the Chat channel and ask.  It turns out that Ctrl (which is the default "fire button" in the game) is used for this single menu option.  It would be a shame if this obstacle put off any other potential new players to this great game.

Friday, March 10, 2017

Forum Nazis

Why do forum moderators always feel like they need to stamp their authority when there's no reason to?  Users don't get paid to post messages, we do it usually to help other people and have a debate.  Unfortunately I've recently encoutered a sudden bout of forum nazi-ism on a few forums, where a moderator has shut down discussion and/or deleted posts with no obvious reason that I can see.

Stack Overflow seems to be the worst, presumably because there's thousands of wannabe moderators.  They're very strict with the rules (especially with what can and cannot be asked) and if you dare to ask something that's not allowed (or seemingly not allowed) you will be downvoted and your question probably closed.  Do you need an online compiler since your computer is too slow?  Then go somewhere else.  Are you a beginner at programming?  Then go somewhere else; answering easy questions is beneath them and you'll just get downvoted, along with a few unhelpful comments.  (It's interesting to note that often the questions that are closed as being "of-topic" usually get high votes).

Even the normally friendly World of Spectrum forums seems to have acquired a forum-Nazi.  I recently posted a link to a BBC article about the doomed ZX Vega.  The next day I couldn't find it.  I posted it again, also mentioning that the original seems to have disappeared.  I got the terse reply saying "It's been moved", and that discussions was closed, making me unable to reply asking why or where to.  Why close it?  Is WoS running out of disk space?  Or is WoS somehow linked to the shady goings-on with the Vega?

And don't even think about posting to the Subreddit "Explain Like I'm 5" without prefixing your title with "ELI5:", or your post will be deleted immediately by a computer.  Presumably it's beyond the job of a computer to automatically do this, and they'd prefer to get humans to do it.  I don't know why they feel that their subreddit is so important the posts need differentiating from all the others.

Moderators are often required for when arguments get out of hand, but unfortunately, some of them seem to feel that a moderator's job is to control the discussions, or even just create arbitary rules to give them a sense of power.

Spaceship Roguelike

Full source at

Tuesday, February 21, 2017

Tips for keeping interested

When developing a game, as other amateur game developers will testify, it's very easy to lose interest.  This can be for several reasons.  Here I'm going to codify some tips to help prevent this:-

1) Make it procedurally generated, so it's different to play each time.

2) Make it actually fun to play.

3) Make it single player with an AI.

Thursday, January 26, 2017

Sole Collector

Here's a screenshot. I tested the physics using skulls.  And here's a video:-

And now it's available to download.  You'll need Java of course, but doesn't everyone have that?

Monday, January 09, 2017

Unnamed Horror Game

My newest project is going to be a 3D Horror Game.  I think 3D is the way to go (hello 1995!) these days; it may be harder, but for me at least, simple 2D games just don't interest me, and certainly don't interest my kids who are my main audience.  With this in mind I thought a horror game that scares them would be fun.

Here's the very first video.  it's just me walking around:-

It's written in Java using the excellent JMonkeyEngine for the 3D.  I did have a look at using LibGDX which is also very good.  However, for the physics aspect at least, it was just a "leaky" wrapper for Bullet.  Bullet is written in C, and so even in Java it seemed to be a case of remembering to dispose of objects and other things I'd hoped to never have to do again.

Friday, January 06, 2017

Tips for Software Developer Recruiters

I've had quite a few Software Developer jobs, been an interviewee even more times, and sometimes even been the interviewer.  This is a brief rundown of some tips that I've picked up along the way to avoid wasting both the interviewers and interviewees time, and help you get the right people.

1) Read This

For the love of God, read this before you do any interviews.

2) Be flexible with interview times

...preferrably holding them out of hours.  A consciencous interviewee who already has a job doesn't want to risk endangering that job, or waste their holiday allocation, or go through the minefield of taking time of work, if they can help it. 

You will make it so much easier for potential recruits if you can do the interview out of hours, or in some way make it as easy as possible for them to get to the interview without disrupting their current job.

3) Test their development skills by getting them to develop something

Software development is about developing software, not about knowing the definition of Dependency Injection or what the definition is of each of the method modifiers available in your chosen language.  There is so much to know in Software Development the no single person can know everything, and by asking specific quiz questions, you're turning the interview into a lottery (for both you and the interviewee) where the "winner" is determined by who was lucky enough to have recently read the specific fact that you asked them.

Go through the process of developing software with them.  Allow them to use Google and Stack Overflow, and discuss their code as they write it.  Allow them to use technologies they are experienced in (or claim to be experienced in).  In short, get them to carry out a microcosm of what the actual job would be.

4) Look for Passion

Good software developers love programming, whether it's part of their job or their hobby at home (or anywhere outside their job).  I'm always wary of an interviewee who doesn't write code at home.  If they do, don't worry or expect that it's actually any good; most hobby development is just for fun, and once it stops being fun it gets abandoned.  The fact that they do it is the only important thing.