- #60 Graphics (Jam) 4.32
- #103 Theme (Jam) 3.75
- #139 Mood (Jam) 3.60
- #168 Overall (Jam) 3.55
- #168 Innovation (Jam) 3.46
- #231 Humor (Jam) 2.80
- #246 Audio (Jam) 3.36
- #338 Fun (Jam) 3.11
- #1319 Coolness 47%
Thought I'd posted these but evidently not. These are the ratings out of 5.0 we got for a variety of categories, based on votes from other Ludum Dare contestants. We were also given our placing out of the 1045 jam games.
Spirit Shift was made in 3 days for the Ludum Dare 30 game jam, based on the theme of 'connected worlds'. After a couple of hours of discussion we worked out what we were going to make: an infinite runner where the player can (and has to) phase-shift between worlds rapidly. Since this was the core mechanic of the game we wanted it to look fluid and not confuse the player. I had done some GameMaker tutorials a few years prior and remembered a little about having multiple viewports, so I knew it would be possible and a lot easier than coding it by hand. It took a day and a half. Tunnel visionOnce I'd done a couple of GML tutorials and read through some of the documentation (something I'd be doing a lot of over the jam), I got some basic platforms generating and moving across the screen. Turns out GameMaker doesn't support having multiple rooms active, so I ended up having 3 separate 'lanes' spaced vertically across a single room. When the player shifted worlds it would just be a case of moving them up or down to the appropriate lane. After mucking about with views for a while I knocked up the following prototype: This is how we originally pictured the world portals. The idea was that you'd almost be going through a tunnel, as each world shift caused the next one to expand out and fill the screen. At this point the shifting only worked the first time, so in the following demo video I have to restart the program each time: The main (yellow) world expands out of view, the next (cyan) world expands to take its place, the last (green) world follows suit, and a temporary fourth view expands from nothing in the centre to take last place. At least, that's what seems to be happening. In truth GameMaker doesn't allow a viewport to be larger than the window, so to get the main view to expand I actually keep it the same size and shrink the game area it represents, essentially zooming in. Having now worked it out, this trick became very useful later on. A world of problemsWith the prototype in place we started working through the design issues apparent in the way I was doing things so far.
The sticking point is that second problem: it's still ugly. The artists on the team were (rightly) concerned about what the backgrounds were going to look like overlapping in that way, or if we would even want backgrounds with a system like this. A fresh perspectiveAfter some more discussion we agreed on a kind of roulette system, mocked-up here by one of the artists: Not only is this much better aesthetically, it actually improves the gameplay too. Since each viewport has the same width but different heights, I had to widen the area of the game world shown in each port in order to preserve aspect ratio. This had the knock-on effect of allowing the player to see further ahead in the world they're about to shift to, helping them plan ahead. The final breakdown for the portal heights had the main port taking 5/8ths of the window height, the next port with 2/8ths (1/4) and the last one with 1/8th. These are roughly the same proportions as the mock-up. The only downside to this approach was that it made transitions more complicated: I now had to morph not only the viewports but the areas they represented too. Here's what happens when the player shifts:
In much the same way that GameMaker doesn't allow viewports to be larger than the window, it also doesn't allow them to occupy space outside the window. A 'sliding' viewport is actually vertically shrinking or expanding while zooming in or out. This is functionally similar to the expansion zoom trick from earlier. As one of my lecturers likes to say: in graphics programming, everything is a hack. Above is a screenshot from the final game. Below is some footage of the transitions, with the time per transition increased fourfold for clarity. Below that is gameplay of the final game, so you can see how it ended up. The last thing I'll say about the viewports is that whenever you shift you're actually discarding that world and generating a new one at the top. Having a temporary fourth lane was too much hassle for a jam game, so once the transition is complete you can actually see the new world pop in over the old one at the top. Since the backgrounds are detailed and the player isn't focusing on the top of the window at that time, I think we get away with it. Look out for it in the videos below. I participated in the Ludum Dare 30 game jam with some friends of mine. It's the first jam I've taken part in and I thoroughly enjoyed it. I was part of a team of four; myself and Rachel Crawford handled the programming while Tobias Cook and Cameron Moore handled art and animation. The theme for the jam was 'connected worlds' and the game we ended up making is Spirit Shift - a multidimensional infinite runner. Blurb: Control the spirit forms of three worlds and use your Shift power to escape the collapse. Use your Dash power to blast through obstacles and don't forget to Shift again before time runs out! If you dash through an obstacle you can dash and jump again in mid air. It was extremely fun participating in a game jam and working with such a good team. I'm really proud of what we ended up with after just 72 short, intense hours. I'm sure I'll be writing several posts about Spirit Shift in the near future, but for now have some gameplay footage and screenshots - and of course check out the game! It's free! |
THIS WEBSITE IS ABANDONED. GO HERE INSTEAD:
|