#26 Player modifiers/powerups
Welcome to the twenty-sixth devlog!
This time I want to talk about player powerups (or “modifiers”).
When I started development on this game, I never thought I would be implementing these powerups. I can’t remember even thinking about them, and if I did, I likely dismissed the idea out of hand.
Why would I need powerups in a couch co-op game about delivering packages? What could their functionality even be?
Fast forward a few months of development … and powerups are one of the first mechanics introduced and explained in the game.
What happened? Why did I decide to do this? And how could I adapt powerups for a co-op game? Well, read on, read on!
For those of you who don't like reading, I'll also be recording video devlogs from now on. This is my first time doing this, so please excuse me if things are boring or unclear, I'm still very much learning:
The problem of simplicity
In previous devlogs, I explained (numerous times) how I simplified the game massively over the course of a few weeks.
The first version of the game taught moving, jumping, grabbing, and many other mechanics in level 1.
The current version of the game only teaches one button – movement – for the whole first world.
But with that simplicity comes a problem: if all you can do is move, how will you control packages? How will you get to higher areas of the level? How can I keep levels engaging if you have one button?
That’s when the idea of powerups surfaced, more specifically the glue powerup (or the magnet powerup, in earlier versions).
The idea was simple: if you receive the powerup, packages will stick to you. This gives you great control over packages and even allows you to transport multiple packages simultaneously! (As you might be able to see, when you hold a package, you also "swerve" a little more, making you slightly harder to control. This was a nice side-effect from allowing the physics engine to handle this whole system.)
When I tested this mechanic, I immediately knew I had something. Sticking yourself to objects is somehow an inherently fun thing to do :p It also had some nice side effects: multiple people could stick to the same package, which means you could e.g. transport large packages together.
There’s no “I” in “team”
The default mechanic for powerups in almost all games, is that you walk onto something (or into something), and suddenly receive the power-up.
That’s also the first implementation I used. But, completely unexpected of course, that didn’t lead to interesting gameplay. Why would you cooperate, if you can do everything by yourself?
After thinking for some time, and reading some research papers on co-op games (to my surprise, they do exist), the solution came to me: you can only give other players powerups!
I split powerups into two separate zones: the giver and the receiver. The golden rule is:
Whenever a player stands on the giver, all players currently standing on a receiver immediately receive the corresponding powerup.
This is the tutorial graphic I use in-game to teach this:
The first advantage was obvious: players needed to rely on each other. They needed to communicate when they wanted to receive (or were ready to give) a power-up.
But a second advantage also appeared: it simplified level design (and the code to maintain the system). Whenever you stand on any giver, it signals all receivers. I don’t need to create intricate connections within the level, I don’t need another icon or interface to show which giver is connected with which receiver.
Instead, I can plop down a few zones, and everything is handled automatically.
Arr, there be problems
In this system, however, there was another golden rule:
Whenever you receive a modifier, you keep the modifier until someone removes it.
To remove a modifier, I just added another giver-zone: the “eraser”. (The icon I created was a garbage bin, but should have been an eraser in hindsight :p)
I thought this was a very smart idea. It wasn’t.
I worked on a few more levels, did a playtest, and this revealed the following problems:
- By introducing two different zones in one level (the glue and the eraser), things became confusing and overwhelming. My playtesters were confused for 30 seconds and then asked me to explain the system. When I did, they said “oh, yeah, that’s what I already thought, but the garbage bin icon made me confused!”
- The extra zone didn’t make the game any more fun. It just added an extra step, extra complexity, extra clutter in the level.
In later levels, I simply didn’t have the space to add an eraser zone, which is what made me take the decision to change the system.
The new golden rule
The new golden rule?
Whenever you receive a modifier, you keep the modifier for 15 seconds, then it fades away automatically.
Such a simple change, but it makes a big difference. I need less space, I need to explain one fewer mechanic, and it enhances cooperation again. (Because modifiers automatically fade away, you can’t assign roles to players: “okay, you will be the glued person, I will be the one doing the rest” Now roles need to be assigned on the fly.)
The icons and 3D models for the powerups are CERTAINLY not the final design. I probably want to keep the icon transparent (as it is currently), because that means it won’t obstruct view so much. And I like the particle/shader effects on the zones. But I don’t really know how to design them yet or what style to choose. So, for now, it’s just a cylinder (for the giver) and a rectangle (for the receiver) :p
There are a few remaining doubts about the system. For example: currently, the system only triggers when you enter the giver-zone. But … what if you’re already standing on it, and something changes? Should it also trigger? Or does that make the system too easy/too immediate? (Because players could just stand on the zone the whole level, and do nothing else, and it would work fine. That would be boring.)
The answers to these doubts will hopefully become apparent after a few more playtests, and if anything changes, I’ll be sure to write an update.
Plans for powerups
I don’t like implementing a system just for one level, or just for a small mechanic. So, before I wrote the whole powerup system, I asked myself: “how many interesting powerups can I come up with?”
And the list was just long enough to make this feature worthwhile. Some of the powerups I have in mind are:
- Lighter/Heavier: I originally used this for a catapult level. If one player was heaver, it could jump on the catapult and easily shoot another player (who is lighter) across the whole map! But there’s more applications than that
- Stronger: if you’re stronger, you can lift more packages simultaneously, or simply lift heavier objects. (In later levels, you will be able to grab almost anything, even rocks or vehicles.)
- Disguises: there are hints of many genres in this game, and one of them is the “stealth” genre. I already have a level (in the upcoming update) with camera’s you need to avoid. In a later level, players will need a disguise to pass a certain gate/checkpoint, and the powerup system is ideal for that.
If you have any cool ideas for powerups, be sure to let me know!
Hopefully this was an interesting read. Maybe you even learnt something you can apply to your own projects :)
I’m currently working hard on getting version 0.3 ready for release, but there are some major things I need to solve before I feel confident in releasing a new major version. Hopefully I can release it within a week or so. (It’s one of those updates where MASSIVE changes were made behind the scenes, but I don’t have a ton of nice visuals or footage to show for it. The frustrating ones :p)
I’m also working on creating some solid platforms for myself. Right now, anyone who’s interested in this game (or my work in general), has nowhere to go. My website (pandaqi.com) is a tutorial website I launched many years ago, which isn’t really helpful. My portfolio is only in Dutch (my native language).
So, I’m currently redesigning my websites and portfolio to make them THE go-to place for information about my work. And I’m setting things up for creating videos on my YouTube channel. When version 0.3 releases, I’ll probably also do a video devlog about it.
Until next devlog,
Get Package Party
Leave a comment
Log in with itch.io to leave a comment.