Lizz and I have broken up

Lizz and I have come to a difficult decision after both admitting to what has been there under the surface li: we’ve been drifting apart for a while now.

We chose to give things a good last try a couple of weeks ago. We celebrated our second year of going out with each other during this time. It was nice to reach such a long time, but we both realised that it still wasn’t working.

We had a conversation about everything recently and decided that we’d both prefer to have an amicable break-up now while we’re still friends than run the risk of leaving it for too long and end up hating each other. The next few weeks are going to be stressful for both of us, but we both think it’s the right thing to do, and that’s the important thing.

It’s always sad when a relationship comes to an end, but I feel like at least with us doing things this way both of us can be satisfied by the fact that we’re not arguing, and we’re resolving our issues with consideration for each other.

So yeah, two years together and it was a hell of a lot of fun! There are lots of fond memories there for me.

Some random highlights off the top of my head

  • Buying a house together
  • Going on holiday to various places
  • A first date at a science museum (we’re so cool)
  • Lots of gigs
  • Both of us getting new jobs
  • Living in one room, sleeping on an inflatable mattress just to be together
  • Trips to Ikea, buying so much furniture before checking it would fit in the car
  • Inside jokes like “Two slices”

There are far too many other things to list in full.

Sky Remote Recorder update for Android

I made some changes to my Sky remote record app for Android available on the market today. The changes are fairly basic, and are mostly there to make the user experience a bit better.

For example, if your recording fails then you receive a screen where you can choose to test your login details on Sky’s website to make sure you’ve got them correct, you can also view the help on my site, or open the preferences to change your username and/or password.

The update will make it much easier for people to be sure their details are correct and solve any problems they may encounter when setting up remote record requests with Sky.

How to Solve a Mystery in a Film

Before I begin I just want to point out that this post contains spoilers for a couple of movies that are worth watching: Drag Me To Hell, and Horsemen. Read this after you’ve seen them to really understand what I’m talking about, and to avoid ruining the movies.

Lots of different types of films contain mysteries, or puzzles for the viewer to solve. Often the viewer is not required to actually solve these puzzles because they will be presented to the viewer as the story progresses. Using some of the information that you get early on in a film it is often quite simple to come up with accurate conclusions.

Usually, the information given is quite small. It could be a small habit that a character has that doesn’t receive much focus but later gives away a secret identity. Often the information is just something that strikes you as a bit odd when it happens, can be considered insignificant to the story, and is therefore forgotten until later on.

A good example of the latter can be found in the movie Drag Me To Hell. The lead character visits her boyfriend and part of the scene is dedicated to her presenting him with a coin for his collection. This is quite a strange thing to include in a movie, and therefore it is quite likely that it has significance. What makes it more unusual is that the boyfriend takes the coin and places it in a blank envelope. Who does that?

DragMeToHell

Later on in the movie the scene is forgotten because it is deemed to be unimportant. The lead character takes a cursed button (yeah, lame, I know) and puts it in an envelope. As the lead character and her boyfriend are driving along the envelope is dropped and the lead character freaks out until she finally picks up an envelope. Yes, you guessed it, the envelopes got switched. Only, nobody notices this because the act of the boyfriend placing the coin in the envelope appeared to be such an insignificant detail at the time.

The lead character gives the envelope to a dead gypsy in a ridiculously fast filling watery grave in order to remove the curse, and then goes about her life feeling like everything is fine. The next day her boyfriend meets her at the train station and produces the button which he found in the envelope that he thought contained his coin. Suddenly everyone remembers that the boyfriend put the coin in an envelope, and that the two items would be roughly the same size and weight.

The ending of the film was obvious from the moment the button was put in an envelope, but it requires that you notice the details and don’t forget the things that strike you as a bit odd. Why would a horror film take the time to show you that the lead character’s boyfriend collects coins? Why have him put the coin in an envelope?

Another example can be found in the movie Horsemen starring Dennis Quaid. A woman is murdered and the protagonist is a detective in charge of the case. He turns up to the house and discovers that the murdered woman has three children. When our protagonist sees the children it is apparent that 2 are white, and the eldest one is Asian. A fellow officer tells our protagonist that the eldest one has was adopted, and the protagonist ironically thanks the officer for the tip.

Horsemen

Later on it is discovered that the Asian girl is actually complicit in the murder. This should really be quite obvious to anyone watching the film, but it’s easy to disregard a detail as insignificant. Why would the writer of the story bother to add the detail that one of the children was adopted, and make it so obvious by having the child be of a different race? Because the detail is what helps to solve the mystery in the movie!

Essentially all you have to do while watching a film is think “Why am I being shown this weird little detail?” Don’t forget the things you’ve noticed, and try to link them together. More often than not the entire puzzle can be solved long before the end of the film.

Bring It! – Bullet Time

One of the most important parts of the entire game is the ability to shoot at the bad guys. For this you’ll definitely be needing some bullets (and I’ll get to the bad guys soon).

I thought adding bullet sprites would be quite complicated because it would involve finding the angle to be fired at, the start position based on the position and rotation of the character sprite, but that turned out to be quite simple in the end.

Rather than use any complicated mathematics I determined that the centre of the character sprite is something that won’t change because the character is on top of a non-moving tower. I modified the Sprite.java file in the Rokon files to include centreX and centreY values. If I eventually let the character sprite move then I will need to make sure that value gets updated, but that’s a very minor issue.

I create the bullet sprite when the user presses the trackball button, or the centre of the directional pad if that’s what the device has. The bullet sprite appears at the centre of the character sprite and has X and Y velocity applied to it like so:

bulletSprite.setVelocityX((float)Math.sin(
  Math.toRadians(arrowSprite.getRotation()))*100);

bulletSprite.setVelocityY((float)-Math.cos(
  Math.toRadians(arrowSprite.getRotation()))*100);

This gets the bullet moving in the direction the character sprite is pointing as is demonstrated in the video.

The next thing on my list is creating some bad guys that can get hit by the bullets. I imagine that’ll be more complicated than I think at the moment, but I hope to be proved wrong. 🙂

Bring It! – Getting started

To begin developing my game I downloaded the latest Android SDK and set up Eclipse as explained in great (and hopefully up-to-date) detail on Google’s instructions page.

Once this was working I got the latest version of the Rokon game engine and extracted it into my workspace folder. I imported the existing project into Eclipse and added my own class to the list. I copied one of the examples into my own class and then removed the com.rokon.examples class and files. I changed all references of the com.rokon.examples class to my own class in files like the AndroidManifest.xml file. I missed a few places at first, but Eclipse is pretty good at telling you what’s wrong. I found it helpful to clean the project using the Project->Clean menu item to make sure no errors were left over from before certain changes.

Once I had eradicated all errors from Eclipse I ran the source in an Android Virtual Device. To my immense surprise it was working!

I went into the code and started to strip out all the bits I didn’t want. I kept one sprite around, but changed the sprite texture to my own arrow, and made it considerably smaller.

That was all pretty easy, and I thought things were going to well until I realised that I now needed to get down to the harder stuff. The user would need to aim in different directions from one point, so I needed a way for the person to change the angle. My first thought was to use the scroll ball that appears on most HTC devices these days. I thought that might be a bit of a problem though, because I was planning on using the scroll ball press as the trigger, and that might lead to people accidentally pressing it when they didn’t want to.

I decided that it would be cool to have the character point towards where the user pressed on the screen. The problem with that is that code is required to work out what angle to rotate the character by depending on where the character is, and where the player has pressed on the screen. I managed to find various little bits and pieces online that helped me come up with a decent solution.

That looks very complicated, but it’s not that bad, really. The angle is worked out using the position of the centre of the sprite and the position of the press on the screen. I’d explain it in more detail, but that might take a while. You may notice the +90 near the end of the rotation line. Unfortunately that’s a bit of a hack to add 90 degrees of rotation to whatever angle is given to me. It works, so I’m fine with that for now.

Now when I run the “game” I see an arrow on the screen. If I press on the screen then the arrow points at where I pressed. If I move my finger while it’s pressed then the arrow follows my finger around. A good start to coding the actual character.

Now to climb the rest of the mountain!

Bring It! – Android Game

I decided that I wanted to get a bit more into Android development, and I decided to go with a game this time. I have made a game for Android before, well, a kind of puzzle more than a game. It’s called Petals Around the Rose, and it basically just sits and waits for user input before anything happens. So it’s not a real-time game. This next game is going to be very different.

My aim is to make a game called Bring It! that is along the lines of the tower defence games you see quite a lot of, but with elements of games like More Rooms by Sean Cooper and Burn Zombie Burn by Doublesix Games to it.

The player will control a single character in a tower and will begin the game with a basic weapon. Waves of creatures will begin to invade and try to reach the character, and the player must kill all of these creatures. As the waves progress the creatures will get stronger, and/or come in different numbers. The player will have the ability to earn better weapons, or upgrades for current weapons. There may also be the possibility of moving to other towers depending on the level. The towers will not all be the same and will differ in strengths and weaknesses.

I am writing the game (for the time being) in Java, using the Rokon engine for Android. This uses OpenGL to create and manage the graphics.

I have never written a real-time game before. I have never written anything using OpenGL, or any other similar library. I have only ever written two things in Java. These are the hurdles I have to overcome to get a working game.

I plan to document my progress here. 🙂