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.