Monday, 9 December 2019

UFO is done... Thank #$&% for that!

UFO is done, and you can download it from my page through the widget below:

This game has been a monumental pain to develop. I know I said that working in Game Maker tends to feel a bit easy for me, but I've had nothing but nightmares using it to make this game. Perhaps it was the way I was doing things, but I just ended up fighting with one problem after another all the way through the development process.

The first issue was trying to find an convincing way of making the room wrap seamless. Game Maker uses things called rooms to construct the levels and there's a pretty easy way to get something to wrap around the edge and appear on the other side, but it's not seamless. What you get is a jump from one edge to the other and then all the enemies would chase from one end of the level to the other to catch up with you. This wasn't what I wanted, so I came up with the idea of essentially making the UFO stand still in the room, aside from moving a bit to the left of right of the screen, and have everything else controlled by a velocity variable to make them move instead of the player. This was all working fine with the scenery objects and things that don't look like they're moving, like mountains and trees, but the helicopters, tanks and other enemies were a real headache to get working correctly, as you had to deduct their movement speed from their overall velocity to give the impression that they were moving independently of everything else.

I learned later on that I could use the normal room wrap and have a series of "ghosts" for the UFO and enemy objects that could, with the use of views, give the impression of a seamless wrap around when the objects get to the edge of the room. This would have been much easier to do as I'd just need to give everything pretty ordinary movement patterns, but I'd already gotten pretty far with it as it was, and I didn't feel much like re-writing things at that point. Also, my brain was pretty much mashed by the overly complicated way that I'd done it, and the ghosts system was refusing to compute in my head. Thinking about it now, I could have done away with the room wrap altogether and set the game in a valley with hillsides blocking the edges of the room. That would have solved a heck of a lot of problems!

The biggest issue I had with the way I'd done the object movement was with an enemy that I called a Catcher. This enemy, like in Defender, would appear at random points in the room and move down to pick up one of the lifeforms on the ground (people in Defender and Sheep in UFO) it would then move up to the top of the screen and become a mutant. It would work fine in the test level, but when I put it in the game all sorts of screwy stuff would happen with sheep who were not actually being picked up by this object suddenly deciding that they'd fly up into the air all of their own accord, and once they did this you couldn't collect them with your UFO as it was having a weird effect on the collision detection. It was all a bit weird, and I've not managed to find a good fix for it, so the Catcher is currently missing from the game.

So, UFO is out, but I want to add to it. Mainly I want to put back the missing Catcher enemy and tidy up a few of the slightly untidy ends. To do this I'll be releasing an updated version of the game, but I'm not going to be working on it until the new year. I feel a bit drained at the moment, so I'm going to take a break for Christmas, recharge my batteries and come back to it in January/February. I might even get to implement the ghost movement for the enemies and UFO to make the room wrap move a bit better and solve some of the games issues. I also have the updated version of Retr0ids to do, but this is a much, much easier project.

In the meantime, though, version 1.0 of UFO is done, so I hope you enjoy it and I'll see you all in the new year when I'm feeling a bit stronger.

No comments:

Post a Comment