Wednesday, May 06, 2020

Investigating WebVR and WebXR

After buying an Ocuus Go, it was only a mater of time before I started looking into the easiest way to develop my own games for it, and WebGL definitely seems the way to go.  Of course, this opens up the next question: what framework to use to implement WebGL?

Anyway, here's a few things I've learnt that might save other people a lot of time:-

Thursday, April 16, 2020

Announcing Chrono Cup - Quantum League Remake

I read about Quantum League just a few days ago, and it sounds like a really good game mechanic.  I've been looking to try and implement some kind of "time" mechanic in games for years, going all the way back to the 80's since I read about a game that the legend that is Julain Gollop wrote (the name escapes me now).

Anyway, after reading about Quantum League, and being between projects, I decided to see if I could re-purpose my split-screen FPS engine to implement the rewind and play effect.  It was quite a mental challenge, but here is the result:-

I've come up with the name Chrono Cup for it, until I think of something better.  And please ignore the simple placeholder graphics.  Hey, I've only been working on this for 2 days!

If you don't know how Quantum League works, basiecally you play an FPS-style game for 15 seconds.  Then time rewinds back to the start, and you do it again; however this time, a "ghost" plays out your actions from the first phase.  Then it rewinds for a 3rd time, and you have two "ghosts".

This may sound good albeit simple at first, but it potentially leads to lots of interesting twists, since (for example) the ghosts bullets still have an effect as long as the ghosts aren't killed.  So if you can kill a player/ghost who shot you the first time, you won't die, so your ghosts will be alive for longer in a later phase!

More coming soon....

Monday, April 06, 2020

Visual Studio is a bug-ridden pile of crap

Let's start a new project and add a class to it:-

Oh, we don't seem to have the option to add a class file to the project.  Maybe the project properties are wrong.  Let's have a look.

Oh, we get a nice error.  Looks like I'm not the only person with this problem.  You would have thought after all these years, Microsoft would be able to write a piece of software that wasn't bug-ridden crap.

And while we're on the subject, why does Paint not have an Edit menu, like every other normal program in the known universe?  And does MS SQL Server need pointless extra services to work, like Server Browser?

Thursday, March 12, 2020

Split-Screen Multiplayer Engine

So I've been developing a split-screen multiplayer FPS engine using LibGDX.  It can handle up to 4 players.

Since (like most hobby developers) I can lose interest in a single project very quickly, this project contains several different games.  The first game was a remake of the classic game 3D Monster Maze.  However, I'm also working on a game of Tag, a Tower Defence game, a driving game, an FTL-type game and several others.

Source is here:

Early example video here (Monster Maze level):

Tuesday, January 28, 2020

How to be Terrible at Overwatch

This is something I wrote about a year ago.  It's unfinished (or "work-in-progress") but I thought I'd out it here for now.

After all, what's the point of playing as part of a team and winning the game when, even though you probably killed more players than anyone else, the game result will only mention that you were on the objective for 3 minutes, which impresses no-one.  It doesn't matter if your team loses as long as you're on that leaderboard with the most medals!


Work Solo

After you've been killed (along with probably several of your team), don't bother waiting for others to re-spawn and attack en-masse: just charge straight back into the match and get those kills in while you can.

Know where the battle really is

Okay, it's a payload mission.  But (if you're attacking) leave the boring task of moving the payload to other weaker members.  If you can keep a single enemy busy by fighting them in a far flung corner of the map, nowhere near the payload, that's got to be a good thing. And if you're defending, then the further back you can push the enemy the better.  It's not like any of them will be able to sneak past you without you noticing.  Leave moving the payload to the n00bs who are probably cont as good as you.

Team make-up

Stick rigidly to your favourite character, regardless of the makeup of your opposition; that way you get lots of practise at using them.  Don't be tempted to be a healer, they can hardly do any damage.



Make sure that you use his ultimate as soon as you have it.  Even if you've found a great spot to mow down the enemy, use your ultimate and charge right into the middle of the battle with your cannon firing.


This ultimate is ideal for getting revenge on a single enemy who's really annoyed you.  Just walk up to them a press the Suicide Ultimate button.  You will die yourself of course, but it's a small price to pay for revenge.


If you haven't tried this trick before: here's something that the other people on your team will find hilarious: when attacking, just a second before the spawn point opens, build an ice wall right in front of exit.  Brilliant!


One thing that impresses every player, and gets you a few more kills (maybe), is when you play as Mercy, rather than heal, show your skill by shooting enemies with your pistol instead.

If you do feel the need to heal, just concentrate on one single player, ideally a tank who has lots of health anyway.  Also, don't bother resurrecting anyone, as it will probably get you killed.

Another good tactic with Mercy is to select her at the start of the game, but then change just after everyone has left the spawn point.  It will take players a few minutes to realise they don't have a healer on the team.

Thursday, January 02, 2020

Reading PS4 controllers on a Raspberry Pi in Java

I recently had a go at trying to get a LibGDX to run on a Raspberry Pi.  Any project.  Unfortunately I failed.  (If you've succeeded, please let me know, but from what I could glean from googling, no-one has succeeded yet.).

So instead I tried to get some Java code working that could read PS4 controllers/gamepads on a Raspberry Pi.  My aim is to use the Pi as a mini-gaming-console, so I can keep it near our big TV and create some simple co-op games that I could play with my kids, rather than drag them over to a small laptop with its small screen.

And I succeeded!  By standing in the shoulders of giants (in this case, the JInput authors) and finding the native JInput modules compiled for AMD, it seems to work.

The repo is here: .  Currently only tested with PS4 gamepads.  Let me know if it works for you.

Wednesday, October 23, 2019

Recreating Speccy Games in 3D

I've decided to have a go at recreating some classic Spectrum games in 3D, with the eventual aim of stringing them all together into one big epic adventure.

Here's the first one:-