A large part of the appeal of observing a platypus go about its affairs rests in the way it whimsically and erratically changes the focus of its attention according to some set of rules that only it understands...
They don't seem to be going anywhere in particular, but they are always in a hurry to get there. And occasionally they'll stop abruptly to investigate something interesting, then bound away with a playful somersault or bob up to the surface.
Recreating the platypus' personality in a game means finding a way to convincingly represent its sense of curiosity. Getting this to feel fluid and natural is important, because connected to curiosity is another core tenet of the game – the player can't control the platypus directly. Having control would break the spell – it is the tension of knowing your actions have influence, without always knowing how, why or when, that sustains interest. To succeed in this game means gradually coming to understand how the curiosity mechanic actually works, which is to enter the imaginative world of the platypus for a while and experience things from its perspective.
There are a few important principles to designing the curiosity mechanic, then:
- Platypus defaults to being interested in things. If it can't find something to be interested in nearby, it will go look for something.
- Platypus' attention is intense but short-lived. No matter how curious it is at first, it will quickly get bored and move onto something else for a while. It will probably come back later though to see what has changed.
- Platypus notices changes in its environment and likes to investigate these. After a certain amount of time, everything old becomes new again and ripe for re-investigation.
- Some kinds of things are more interesting to Platypus than others, especially if they move or are alive.
- Platypus will keep going in any and all directions until it needs to recharge, either for air or a rest.
Designing the Curiosity Meter
For the first attempt, I decided to represent curiosity as a numeric value. Platypus is naturally curious, so he starts being receptive to player actions and his curiosity will always gradually recharge. The player’s actions each incur a cost to curiosity, the amount of which depends on the type of action, how frequently the action is performed and what other actions have been performed recently.
For example, one of the most basic actions the player can perform is clicking the water’s surface to attract Platypus’ attention. When the player clicks the water’s surface, Platypus will usually come over to investigate – this will usually be the first in a chain of actions to influence what Platypus does. However, if the player clicks the water’s surface too often in quick succession, Platypus will lose interest and ignore the player until his curiosity has sufficiently recharged.
The idea was to not show the Curiosity Meter directly represented in the game, so the actual mechanic would be invisible to the player, but to show a subtle visual effect when Platypus’ Curiosity Meter is fully recharged. This idea is influenced by the minimalist UI of one of my favourite indie games – Kingdom – where the player is given almost no direct instructions or explanation of how the game works, but gradually comes to discover these through nuanced environmental cues, such as discovering you can recharge your horse's energy by stopping to let it eat grass, but that building reinforced barricades on dirt can stop grass growing there, leaving you vulnerable if you need to get away in a hurry. Kingdom is a game about experimentation and failing often – the fun is in trying out what works and what doesn't and figuring out what you'll do differently next time.
The initial idea for Platypuzzler gameplay was that Platypus would swim around being interested in things and the player would click to grab its attention, which would usually cause it to come over to where you clicked. The aim was to direct the platypus around the level to collect some kind of reward. But the player would have to avoid stringing too many clicks together, else the platypus would lose interest and go off to do its own thing. But there might be a turtle swimming around the level which Platypus would follow. So instead the player could let the platypus follow the turtle for a while and then click to grab its attention at an opportune moment. Other objects in the level such as a big fish might act as curiosity sinks that the platypus would be mightily attracted to and that would make it difficult for the player to sustain its attention. In this way, the player would have to learn to leverage Platypus' natural curiosity to minimise clicks and intervene only when necessary to keep the platypus' attention without it losing interest. The following graphic shows a prototype level design based on this concept.
We actually built this level as a playable prototype – I'll discuss how that went and the challenges of designing good gameplay in another post. In actually making a playable level however, I had to revisit some assumptions about how the curiosity meter itself would work.
The way I originally conceived it, the curiosity value would start at, say, 30. The player's actions would cause it to increase, while objects in the environment would cause it to decrease, creating a kind of tug of war of interest. But if curiosity reached an upper threshold (say, 60), then the platypus would lose interest in the player for a while, whereas if objects in the environment got it down to 0 the platypus would suddenly become more responsive to the player.
In practice, this didn't make a lot of sense and didn't help to capture the way Platypus shifts its attention between different objects of interest. I quickly realised that the platypus needed to have an independent curiosity value attached to each source of interest, including the player. Curiosity would start at 0 for each object and gradually rise up to some threshold of boredom, after which Platypus would no longer be interested until curiosity decayed back to 0 and cleared the boredom flag. Platypus would be attracted to whatever object had the highest curiosity value, but which was not set to Bored. The following graphic shows some examples of how this would work.
Each object has a unique Curiosity multiplier and Boredom threshold and holds an updating Curiosity value. Precise values would need to be arrived at through playtesting, but the included graphic provides some starting examples:
Typical values include:
- Ambient Curiosity (+x per second)
- Event Curiosity (+x per event)
- Boredom Threshold (set to x)
- Ambient Decay (-x per second)
- Decay When Bored (-x per second)
A curiosity event could include a player mouse-click, or a pocket of bubbles that streams every x seconds.
We added Air and Energy counters as well, which meant Platypus would return to the shore if it ran out of either. This would have the additional effect of clearing all Boredom flags.
We also added a radius of effect around Platypus that would trigger curiosity, and included code to make Platypus swim to random points on the map in case there were no objects in radius generating curiosity.
The overall effect proved quite compelling. Platypus seemed to move around with a life of its own, clearing taking an interest in particular objects for a while and then moving on, but not according to any discernible pattern (unless you looked at the heads-up testing display that showed the underlying values and focus target, of course!)
Despite having only an early and rough prototype, we had managed to recreate some of platypus' personality and character. Unfortunately, as a game it was frustrating as hell to play and no fun for the player. We'll talk more about that next time and I'll post a playable build so you can see for yourself what I mean.