Wednesday, May 13, 2015

It's all a front!

After much lead up: The front page. You can also see it here. It's complete with slider game and background previously discussed on the blog, plus a news slider and twitter feed. I'm pretty happy with it, and it matches (in a round-about way) to some concept art my constant co-conspirator Drew Fellows made for me. I was hoping to push this style through the rest of the website tonight as well, but I had to fight x theme in a lot of things so I'm stopping here and I'll do the rest tomorrow, probably.

Not everything is 100% though... There are a couple of things that don't quite work as intended when scaling the window. Previously I noted that I hadn't worked that into the slider at all, so that is still to come. Similarly, the news slider doesn't really scale as I would've wanted (to be honest, I'd rather ditch that slider entirely and pull the latest news post directly somehow) and overlaps the border at minimum width. Similarly, the center box text can have the text overlap outside of the box, and the actual contents of that text could probably do with some more thinking time. Because full screen is fine though, I'm happy to delegate fixing that to a later date. One thing I may do sooner rather than later is tweak the background image slightly though.

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.

Friday, May 8, 2015

So why don't you slide?

Taking a decent screenshot while trying to show off something that moves is a little tricky and often ends up with something that looks confusing and/or generally shit, as demonstrated above. How about you just check out where it's at here.

I had thought this would only really take a day or two, and that's mostly true... It's not finished yet but I'll probably have it done and up by tomorrow, barring any unforeseen life problems. My plan here was to keep it as simple as possible, and I have deviated from that somewhat, but I'm focusing on making it present better, rather than be an interesting game. Mechanically, everything up to the fail state/moving-out-of-window-and-abandoning-the-game is done, but there are a few specific things still on the to-do list. By the time anyone reads this they'll probably be fixed, but maybe for my own sake I'll write them down here:

To do:
- Draw and add in the sprites (Still a little undecided on the player sprite, but it'll probably be a little robot head. I'm going to do a different enemy for each slide, based on something specific to the game. A jellybean for Scrolls of Candy, the running man logo for Apex Diver, etc).
- Gameplay messages that appear at the start of a round/end of a round/when the game loses the mouse.
- Handling the player moving the mouse out of the slider, eventually transforming it back to slider mode.
- Highscore tracking (per session).
- Having the "more info" buttons link to the correct pages.
- Kill the powerups if they move out of window.

That will probably be it. Aside from the sprite work that's maybe a couple extra hours of work. There is so much more stuff that I could (and want to do) but I don't want to go overboard at the expense of not finishing the website or working on CannonPaul. So the following are maybes, but not probably not until a month or two down the line
- Sound effects (as long as they're not too obtrusive).
- "Cycle to the next slide" buttons.
- Scaling support for smaller desktops/mobile (Went to so much trouble ensuring the gameplay design would work for touchscreens, but the size of slider is too big for most displays. Go me).
- Permanently tracked highscores.

Then there's the big things that probably wont be getting done anytime soon, but maybe I'll give in and and do sometime... Rather than just have each slide be a shoot 'em up, I think it would be awesome if each slide played differently, like a super simple version of each game. Apex diver would become an endless runner, jumping at the right time to avoid obstacles. Shogun Assassin would have you move the mouse around and click to slash enemies that run in from the side. ASCII Bird would just be Flappy Bird, etc.

Anyway, that's enough star gazing for one night. Next post: Totally a completed website front page.

Wednesday, May 6, 2015

Slide in next to me

Part 2 of the "update the website" thing I started a couple of posts back. Originally I had just thought about using screenshots for the slider, but since all the games I've made so far have been different resolutions, it didn't quite work out. What I've ended up doing is re-purposing the sprites from the game and rearranging them into something that represents the game, but also fits the same common frame. They're still not the best they could be, but they're a step up from what I had before and I'm happy enough with them for now.

Ok... Soooooo... Since I started typing this, I've actually begun to doubt that using a slider is the right way to go here. Sliders are kind of the norm these days, but I can (and should) do more. I know using the slider is easy, and it makes it simple to update things as well, but wouldn't it be cooler if this was just some kind of game instead? Nothing major, just maybe a little guy that can run around and dodge stuff, or a shoot'em up or something. That way I can also keep the "slider" in line with the rest of the site, as opposed to having to wrangle it in a way that makes it fit in enough.

Well... may as well get to it. I didn't want to sleep tonight anyway...

Monday, May 4, 2015

CannonPaul #1 - Proof of prototype

This kind of works- Check it out here.

So... it's time. Sure, I have stuff that I've started previously, but this comes from a place that's been on my mind as of recent. Plus, it's super quick to make and will work on keyboard, mouse or touchscreen relatively easily.

The concept is this: It's a circus and people need to be entertained. After running out of other options, the only thing left is to fire a guy named Paul out of a cannon. Paul doesn't want to die (presumably), so he has to bounce off of conveniently placed trampolines until he can get to the safety of the target/end-zone/safety-net/pile-of-mattresses. I assure you, there's a deep meta-narrative here and this is more than just a dumb idea developed from a pun.

What made me want to come back to this was some thinking I was doing about game replayability and how best to use mechanics in interesting ways. At the moment, the only real player goal in that room is to get to the target, but there are a lot of other ways to subtly change or refine the player goal to get more out of what is essentially the same room, as well as gradually introduce the player to new techniques and tougher difficulty.

For example, a refinement of the goal may be to reach the target without influencing Paul in mid-air (or only influencing him for a short amount of time). Another could be to only reach the goal after bouncing on all available trampolines, or only bouncing in a minimal number of trampolines. An outright change to the player goal would require additional development, but that's kind of the plan... I want to add some kind of combo or hype meter, so getting a high enough score might be good enough for a goal.

Anyway, I think that's enough for today. I'll probably get closer to a more complete prototype before the end of the week and then see where that goes. I want to actually finish this though, and if there doesn't end up enough to have this commercial, I'll just put it up on Gamejolt or Kongregate instead.

Friday, May 1, 2015

Poetry Corner

So, this will not be a standard kind of post I'll be doing again anytime soon, but I ended up staying up till something like 3:30 in the morning doing this and I wanted to get more mileage out of it than just it's intended use. Maybe it's some kind of new low for the blog, or maybe it's some terrifying new and interesting direction it's going in. Or maybe I'm just hanging around the self-styled bush poet from the Ukulele Association too much.

It's my Uncle's 60th birthday this weekend, and my darling Mother wanted something different and special to put in the card. Naturally, she tasked me with it. Specifically, she wanted some kind of poem that incorporated details about my Uncle. Particularly, she wanted reference to a statement he made when he was 55 about retiring and "throwing his hammer over his shoulder" (which has not happened yet). I worked in some other elements and now here we are.

Around this time, five years ago
Robert began to conspire
"Fifty-five is a ripe old age
I think it's time to retire!
I'll down my saw, my wrench, my drill
My screwdriver and my plier
Stop working hard and spend my time
On the one thing I desire"

For Robert had the soul of a fisherman
And in this, I am no liar
He'd bought himself the biggest boat
That was possible to acquire
Fifty feet and a kitchen complete
With a fridge and a deep-fryer 
Then he planned the greatest fishing trip
Across the ocean, blue as sapphire

"There's just one thing I need to do
Before this can transpire:
I’ll toss my hammer over my shoulder
As I had promised prior"
So Robert heaved a mighty swing
But the throw was a misfire
It sailed wildly through the air
Until it clipped a wire

The wire loosed, it jumped, sparks flew
Robert began to perspire
He stared in total disbelief
His boat had just caught fire!
The flames rose fast, the boat burnt down
What remained was a charred pyre
To Robert's dreams of fishing days
And retirement plans entire

Robert sat down and cracked open a beer
The situation was dire
"Another boat..." He quietly told himself
"Hard work, it will require"
Now five years on and he's working still
"How much longer?" we inquire
"At least another five," he says
"If not that, 'til I expire!"

Once again, this isn't going to be a regular thing. I hope I haven't drawn any ire.