Monday, May 11, 2015

Slide into oblivion

Check it out here in the meantime.

I wouldn't say the slider project ended up spiraling out of control, but I ended up doing more with it than I was originally intending. In terms of scope, it's about the same level of simplicity (aside from a couple of small additions), but it's more a case of exploring and learning some additional aspects of GameMaker I hadn't looked at previously. While I promised a front page reveal last week, I think I'm going to do a mini post-mortem on the slider first, because a) it's always a good idea to review something when you're done with it and b) due to some of those unforeseen circumstances I ran over time.

The Good

It does everything a slider should, plus more. I really like the transitions on mouse over, and I'm pretty happy in general with how the interactivity works. The game itself is nothing special, but it's not meant to be... This was always more about creating a fun, surprising gimmick than anything mechanically interesting. For what it is, it works smoothly and should be engaging enough for a minute or two.

In terms of graphics, I'm happy enough with most of it. The backgrounds look better than what I've got up at the moment, and other elements work well while whizzing around and make for a nice representation of the games on show. I'm not as happy about the robot head though, I felt the pressure to get it done and ended up sticking with the first thing I did. It's fine for the moment though. Similarly, all of the effects were added at the last minute and could use some refinement in the future.

Lastly, I made pretty good use of the time I had... This was about a weekend jam's worth of work I guess. As I said before, I learnt a few new aspects with this project. In particular: in-game blending, window/canvas elements, modifying and tracking the mouse cursor, and web-specific stuff like url linking. Further to that, while it's not great productivity wise, I tried coding a lot of specific, similar things in different ways to see what worked/what worked better. It was good practise at least.

The Bad

As with a few of the other projects I've done, I lost a lot of time trying to do something the hard way (or trying to do something that can't really be done). The big thing here was monitoring the mouse. It works fine when the mouse is over it, but the HTML canvas doesn't track the mouse if it moves outside of it. This was apparently possible in an older version of Gamemaker, and their are functions that are kind of supposed to track mouse position that way, but they don't work now. There may be a way to imbed something on the page that can send a variable back into the game (since it's all HTML5) but I don't really have the time to look into it at the moment.

Dumbing it down a little, using mouseover for the background sprite wouldn't work, because the edges of the sprite were the edges of the canvas, so what I ended up doing was using a large invisible object that leaves a border of about 5-10 pixels  (can't remember at the moment) around the outside of the canvas. This catches most mouse movement and doesn't feel too intrusive to the player (hopefully). It's not perfect though...The mouse can still move so fast it'll miss these borders all together if the player is all over the place. I tried a couple of other things but the only thing that really worked was a timer that measured when the player wasn't moving. It didn't work great, so I just left it as is for the moment.

The kicker for all this is just how pointless it may be. The whole concept of a game in a browser window that's controlled solely by mouse position is so specific and peculiar that I'm not sure it's going to be a problem for any other project. I am liking this idea of just hiding games everywhere on my website though, so who knows... maybe it'll come in handy in the future. Right now though, it's my white whale.

The other bad stuff is only minor. As above, some of the visuals are a little undercooked and there could be a lot more flair generally everywhere. From a gameplay design perspective it's a little amateur... There's not a lot of variance, and there's not a lot of guidance or feedback to the player. Worst of this is probably the powerup balls. It's not especially clear what they are or if they're good or bad. The effect they have isn't especially noticable at first either. In terms of difficulty scaling, it's way too slow at the start and then becomes more difficult all of a sudden. Then it just stays at that level. As before though, this whole project is supposed to be a novelty rather than a serious, engaging game... I still feel I can do better though.

The Ugly

I wasn't really keeping track but it was something like this:
1 evening - Background + sliding behaviour, zoom in, basic player movement, firing
1 evening - Enemy behaviour, background rumble, explosions/particles, powerups, mouse tracking, Scoring
1 evening - Fail states, on screen messages, linking, handling losing focus, resetting, testing
1 evening - Sprites, sprite reworks, sprite blending, other little effects, testing and fixing

There's probably a couple of other things I'm missing but I think that's about it. While I was working on it it felt like I was powering through it a lot quicker than I guess I was.

A Fistful of Dollars

I kind of covered the things I learn earlier on... Also I'm tired. I should get more sleep, that's what I've learnt.

A Few Dollars More

I'm going to keep updating this as I do more games. There's a lot I can do but I think first things will be:
- Split the enemies up into separate objects and add more to them (animation, effects, etc). Have them move differently and different things.
- More and bigger effects, different firing styles, etc. The more things moving the better.
- More information and variance in that information. It's not hard to have a few different ways of saying the same thing and alternating between them.
- Maybe randomize the background order (or starting background).
- Transition between backgrounds while playing, include a mashup stage that spawns all different kinds of enemies.
- Add left and right buttons to scroll between backgrounds (not while playing)
- Scale the slider size with browser window width (may be harder than I'm expecting considering the mouse problems I had).
- Local score-keeping via cookies.
- Hide some secrets in there somewhere.
- Sleep more.

No comments:

Post a Comment