Wednesday, January 4, 2023

Tuesday, January 3, 2023

New Year, New Post

Was 2022 a bust for anyone else?

I don't keep track of how my years go, but 2022 really felt like a low point after a few years of achieving quite a lot. 

I didn't make it through the pandemic unscathed, but I did keep learning, improving and generally progressing during the lockdowns and general chaos that was the last 3 years. That sense of progression came to a halt in 2022, and with it came some other challenges that further derailed me (which I wont go into... this isn't a pity post).

I did take some steps to course-correct in the last quarter of the year, and towards the end of the year I came across the concept of "Learning In Public" (best summed up by swyx here: The concept was interesting to me for two reasons:
  1. It seemed like a good way to encourage myself out of my rut and back into a process of learning and continual improvement.
  2. It reminded me of what I used to do on this blog oh so many years ago (this was an all-purpose project blog after all).
So in the spirit of learning in public, I'm going to give this another try. I'm not sure if I'm going to be posting here long term, but it fits the intent for now. 

I'm also not sure if this is specifically going to be posts about learning things, or its going to be a way of sharing what I'm doing, but I'll work out it as I go.  

Similarly, a lot's changed for me since the last two posts (in 2018, four years ago) and the steadyish stream of posts before that (2015, which is wild). I've gone corporate. I'm a shill for the man. I'm a bunch of spare parts in a suit. 

In short, I sold out. 

One of my regrets from last year was that I don't do anything creative anymore. I aim to rectify that, but there's probably going to be some broader development/design content, some more business focused content, and potentially more random unrelated content that only makes sense to me. 

It's all about learning new things. It's also about trying new things. 

I have drawn a little again since the new year started, and I will also probably highlight the couple of creative things I've done that didn't make the blog. Expect that soon. Maybe. 

So, for the umpteenth time - just like the first post back in 2008... How long can I keep this up?

Thursday, April 5, 2018

#BeerSK - Post Mortem

I had intended for the #lowrezjam to be a singular excursion, as I knew that some projects at work were about to ramp up. However, twitter alerted me to Bar SK's first birthday celebration and accompanying game jam. I've always been interested in Bar SK; It's a bar in Melbourne that's themed around game development, particularly experimental games. I haven't been yet, but it's definitely on my bucket list.

The rules for this jam were more focused on technical requirements to fit their setup, but the general theme was beer and Bar SK itself. While unofficial, there had also been a growing trend around "trashgames", a niche of intentionally/unintentionally rough/punk/'bad"/unfinished/'quick games that had somehow also grown into a secondary theme.

Timeframe for this jam was about a week, but it ended up being a pretty busy week at work, so I only really managed to have about 1-2 nights and a weekend to get things done. This was a pretty quick and cool jam, and aside from any feedback I might've gotten if I had managed to visit the bar that night, there's not a lot to follow up on, so I'll keep this brief...


- I got a lot done in very little time! I think the majority of the gameplay was programmed in a night, and most of the art done in a night and a half. While there's not a lot to the game itself, and the loop does kind of end pretty abruptly, and it's not really clear what the goal is initially, it stands out as looking unique and offers a different experience to most of the other games in the jam.

- Aesthetically I think it turned out pretty good. I would've liked to have spent a bit more time on the UI and maybe the beer, but generally, it stood out and made for some good gifs.


- The sound is absolutely trash. I had no idea what to do and couldn't find anything to match so I think I ended up just making a bunch of mouth noises for everything.

- I didn't really think hard enough about the core gameplay before building it... I had a pretty clear vision in my head about catching beer and glasses colliding; I managed to capture almost exactly what I had in my head in that regard. However, I was going for something competitive but it never really felt like you had that much control/there wasn't really enough challenge. Instead, I pivoted into the game being more of a "compatibility test" thing, but it would've been better if I could've communicated that better.


Pretty sure it was something like:
Day 1 - Core gameplay
Day 2, 3 & 4 - Nothing
Day 5 - Art
Day 6 - Art, title screen, score screen, gameplay loop
Day 7 - Sound effects, tap movement patterns


As I said before: I'm pretty happy with how this turned out. I would've loved to have been there on the night to see it in action (still hoping to get there some day), but I've seen it in the one of the photos from the night. A screenshot from Beer Buds is also used as the header image for the Bar SK Beer Club meetings, so that's pretty cool too.

Will definitely consider getting involved again for the 2nd birthday party.

Monday, March 26, 2018

#LowRezJam 2017 - Post Mortem

Seeing as it's been longer than 6 months ago, and I've had significant time to reflect, it's probably time to do the post-mortem for this game. Around August I was both extremely busy and extremely frustrated and wanted something small I could complete and get some satisfaction from. By sheer coincidence, a new #LowRezJam had started around the same time. I'd made Shogun Assassin, my most successful jam game, at the first #LowRezJam. The jam had already been going for a week when I started, but I still had about a week (including 2 sets of weekends), so I was confident I could get something out. 

That something was "50yd. Fight!!". You can play it here.

As with the previous #LowRezJam, the only rule is that you have to make a game that fits a tiny resolution. While the first jam was 32 x 32 pixels, this jam had increased that to 64 x 64 pixels. Theme, engine and anything else is left to developer's choice.

I can't remember exactly why I was in a mindset to make a tower defense game, but I think around that time I might have binged on a couple of random ones I picked up in a Humble Bundle. The genre definitely came before the theme/concept though. Originally enemies were going to be zombies, but I knew I needed to try a little harder. Thus, the premier evolution of ballsports as we know it was born. 

While I'm pretty happy with what I manged to do over a week (while still completing my regular work), I don't feel there's a need to write a novel over this. I'll summarise the rest of this post-mortem.

The Good 

- I've still got it! I was worried my ability to do rapid development had dulled, since it wasn't as much a part of my role at work anymore. However, I still feel like a completed a lot for the time I had and it was great being able to tweet visible progress (almost) nightly.

- Concept and theming was interesting and different. I'm unlikely to do anything more with this, but I do feel like there's a lot of potential that could be built upon. 

- There are some issues and design quirks, but otherwise this is pretty complete and feature packed for a weeks worth of work. There are four deadly turrets and four unique enemies, built-in instructions and intro/end screens.

The Bad

- The core loop is kind of broken. While having 12 quarters was intentional (as per normal football rules), it ends up looping back around forever. I was hoping the procedural generation for enemy waves would eventually end up making enemies too hard to kill, but...

- I had no time to really balance things. The turrets themselves are somewhat balanced and have their own unique strength and weaknesses, but the upgrade system effectively breaks that. The upgrade system itself is pretty poorly implemented and hard to describe to players. Looking back on it I wish I had just taken it out, even if it did mean an upper limit to how far players could get and less strategy.

- The pathing system does some crazy things. Initially, I was pretty happy that I managed to learn pathing in GameMaker Studio in a night or two, but the basic system has some kinks in it that can cause some wacky behaviour. It's still playable, but if I had the time I might have tried writing my own pathing algorithms instead. 

- No sound. No time.

- Saddest of all, I broke the one rule of the Jam: things don't always match the 64 x 64 pixel resolution. I had noticed GMS doing some weird sub-pixel placement when spraying blood early on, I didn't end up fixing all of it. I baffled how it happened at all, but it's still disappointing. 

The Ugly

Keeping track of time was the last thing on my mind for this jam. Based on my twitter history though:

Night 1 & 2 - Pathing, spawning, turret placement
Night 3 - Enemy damage & gore, turret sensors & firing
Night 4 - Waves, money, health, UI
Night 5 & 6 - New turret and enemy type
Night 7 - Sprites & animation
Night 8 & 9 - Title & end screens, instructions, UI uplift
Night 10 - New enemies, new turrets, general polish

A Fistful of Dollars

I'm happy with what I made for this jam, but I am a little disappointed in the resulting scores. I've obviously got to take the low score for sound on the chin, but I don't think the sub-pixel placement was really that noticeable. There were a lot of great entries for this Jam, so I'm OK with not breaking into the top 50, but general lack of reviews is another thing that was kind of disappointing.

For next time:
- Be sure to add something sound-wise.
- Maybe make something that's quicker to complete. Game Jam's aren't the time to be looking for value via quantity.
- Maybe it was sports/strategy that stopped people from trying the game? Maybe using a title screen instead of gameplay in the entry thumbnail had a negative effect too? Gore seems to be fine though. Many of the top entries were violent/bloody.
- Maybe just make a platformer... That seems to be the evergreen choice.

Tuesday, October 27, 2015

My baby takes the morning

I drew a train. It was super exhausting. Also I haven't blogged for a while, so may as well try and get back into the habbit. Realistically though, we all know I can't post much until after this project is complete.

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.