21/10/22 - Pausing the project and reflections



For most of this year, I've been building an Android game called Infinite Treasure in my spare time. I've posted updates on this devlog and on Twitter. I even spent a couple of hundred pounds on art and music. This week, I submitted a minor update to Google Play - after that, I'm hitting pause on the project. Why?

Why did I make this game?

I've been a software engineer for 8 years now and almost of my side projects have tended to be either games or simulations. I love the idea of creating artificial life that behaves in unexpected and delightful ways, even if it's just an illusion. This year, I particularly wanted to learn how to use a major game engine as all my previous projects were HTML5 web games. While web games play to my strengths as a JavaScript developer, they have limitations that "native" games don't have. So I downloaded Unity and pondered over what my first learning project would be. You can see the birth of Infinite Treasure as a Python project exploring Perlin noise in this Medium article. I transferred this to Unity and decided it would be an Android game as (a) I only have an Android phone and (b) the concept seemed to fit touch well.

Why did I create a game about collecting treasure of varying rarity? For a long time, one of my "shower game ideas" that I often visited was the idea of having collectibles with a random chance of being "rare" or "legendary". Even though that rarity is ultimately meaningless and often exploited for profit in many games that use them, I wanted to capture that thrill of discovering them. To use the Lens of Essential Experience from The Art of Game Design (an excellent book on game design that I'd highly recommend), the experience I wanted my players to have was "I wonder what I will find around the next corner... Ooh, shiny!" In other words, the constant sense of anticipation that drives exploration, interspersed with moments of joy when discovering something special.

I also wanted the experience to be endless, with the experience lulling players into an unbroken flow state. I didn't want to have to design a world to facilitate this experience, but preferred to use some maths to generate that world for me. What better than a large world than an infinite world? So this led me to the technique used to generate the huge worlds in Minecraft: Perlin noise. Instead of generating and storing a huge data structure for the level upfront, it gets generated on-the-fly as the player navigates it. The position and identity of each collectible in the world is deterministic, meaning each location will always have the same item whenever you visit it.

This grew into the Infinite Treasure we have today, which is a kind of never-ending fetch quest in a Google Maps style interface. The question is: does it capture that experience I originally envisioned?

A game of two modes

Early versions of Infinite Treasure had just one mode: "Relax Mode". This had no limits in time or space, just a never-ending set of mini objectives that were essentially fetch quests (e.g. "collect 5 rare gems"). Complete one objective and another would replace it. I went to Twitter for feedback. Early play-testers settled into two camps: the casual players who found it relaxing and the more demanding players that needed something more stimulating. Both groups stated that they needed more of a sense of purpose in the game, some reason to keep playing besides collecting meaningless stuff. A common complaint was not knowing which direction to go in; you can go in any direction forever without any difference in outcome.

I addressed these comments in a couple of ways:

  • I introduced a new mode called "Challenge Mode". This starts you in a fixed location and gives you 25 seconds to score as many points as possible. Collecting rarer items scores more points. A multiplier builds up if you are both fast and accurate, intended to reward skill. The 25 second limit was deliberate to make runs fit into TikTok videos (I had visions of viral marketing effects spreading the word about the game). Scores were shared on a leaderboard so players could be motivated to compete with each other
  • To help give players direction, I added a feature called "Guiding Light". This is a reward for completing objectives that acts as a waypoint on the screen, telling players where the nearest rare item is

The challenge of Challenge Mode

I've received comments since then that Challenge Mode is more stimulating, but is also confusing. It lacks high quality onboarding, relying on sound effects and visual indicators to communicate to the player what style of play will reward them the most. Players get punished for tapping the screen without collecting an item (i.e. missing) - this is the mechanism for rewarding accuracy. When players miss, the screen flashes red and the word "MISS" pops out of their tap location. However, none of these nudges were clear enough for players to naturally "get" the point of the mode - I've had to explain these "rules" to them in order for them to understand what they need to do. This is a design fault on my part. Even when they do get it, the concept just isn't that fun. If anything, trying to scroll around a map and collect items as quickly as possible is quite stressful.

Challenge Mode also clashes with the theme of the rest of the game, which is "relaxation". Peaceful music plays in every menu and level of Relax Mode. Challenge Mode doesn't really fit.

What did I learn from making this game?

  • Rarity is not inherently meaningful. It's not enough for something to be shiny or rarely seen. It needs to grant some kind of status or reward to the player for its discovery to be thrilling. Finding the rarest items in the game gives no badge of honour beyond a rank in a leaderboard. Objectives that demand the collection of rare items offer no greater reward than those that require common items. No ability or upgrade is unlocked by rare items. "Ooh shiny" is only fun if the shiny thing has some genuine value
  • Custom art and music is expensive and should be reserved for later phases when an idea has been validated. I wanted my game to look and sound good from the beginning. I hired an artist from Fiverr and licensed music from myNoise. For just 3 levels, this came to several hundred pounds. I even paid the artist to make assets for my UI. I later replaced much of this with free icons from FlatIcon. I'm still grateful for the artist's contribution as it does make the game look much more attractive and easier to market. But without the compelling gameplay to back it up, these were probably wasted resources that could have been served nearly as well by the Unity Asset Store, something I've yet to explore
  • Bigger isn't necessarily better. I don't think the procedural generation helped make the game more fun. In fact, I think it would have benefited from a bit of curation rather than sheer randomness

Fixing the problems with Infinite Treasure

I have a whole Trello board filled with ideas on how to take this game from "meh" to (maybe) fun. The main concept is to add an XP/levelling system to Relax Mode that feeds players rewards and upgrades - i.e. a sense of progression. Here are some of the ideas in that bucket:

  • Earn XP on each item collected. Earn more for rare items
  • Earn enough XP and you "level up"
  • Levelling up rewards you with coins (yes, this does open the door to microtransactions, but that's not my main intention here)
  • Coins can be spent on upgrades/unlocks in a store
  • Mythic items (the rarest items) could become a currency, perhaps even required for unlocking specific upgrades - i.e. giving them real value
  • Example upgrades:
    • New levels
    • "Giant Finger": taps collect items in a wider radius, making the player's finger seem bigger. This could be upgraded multiple times so that players could get huge pickups with wider "fingers"
    • Mini map: see where the good stuff is like in an FPS
    • Unlockable background colour palettes for levels - e.g. Sour Cherry could be a complimentary red and green
    • "Breadcrumbs": limited item that can be deployed by a player to mark an area they've visited before. Maybe a Guiding Light style effect would trigger when getting near a breadcrumb. Kind of like the shining stones you drop on the floor in Dark Souls to mark where you've been
    • "Soapstone": again borrowing from Dark Souls, messages you can write on the level for other players to read and upvote
    • "Shape drawing": collect items in a circle (or some other shape) to get a bonus
    • Accuracy/speed XP bonuses
    • Access to "ultra mythic" items: collecting these could unlock a special Discord role/sticker

I've considered scrapping Challenge Mode, though I still want to explore its viral marketing potential, perhaps by improving the onboarding to something that holds the player's hand a bit more.

Why I'm pausing development

I didn't plan to make money from this game or have it become a huge success - it was intended as a project for me to learn Unity. It's done that, to some degree, but has limited my knowledge by virtue of it being a simple game. It has no complex animations, lighting effects, 3D, performance challenges, level design, AI, or moving parts. It's static and mobile-only, not too different from a mobile website. I feel like I've been going to the gym for a year but only working out one arm - the rest of my skillset is still undeveloped.

So time for something new! I want to become a more formidable game developer who can build games in more genres and wield a wider range of skills. My strategy is to build a series of "vertical slices": short end-to-end game levels that demonstrate a single concept and force me to learn a new set of skills. I won't be breaking the bank this time either and will be limiting my resources to free or cheap ones that can be found online. I won't necessarily limit myself to Unity either - any game engine is on the table.

This approach is somewhat inspired by the book Range. That book demonstrates the value of building a broad set of skills and knowledge, and give lots of examples of this paying off in the long-term when you can connect those dots in unique and valuable ways, even if it makes you seem slow compared to dedicated specialists in the short-term. I don't want to limit myself to programming (my day job) either, with a mind open to learning animation, sound design, art, whatever is needed. I haves some ideas for some concepts I'd like to build - I will be sharing my progress again on Twitter and on Itch, so watch this space!

As for Infinite Treasure, it's paused for now, but I've not abandoned the possibility of adding the features I listed above to make it genuinely compelling. More importantly, I need to build an audience who can play-test it - I don't want to build it in a vacuum as what sounds fun in my head might not be fun for anyone else. 

See you in the next game development adventure!


Leave a comment

Log in with itch.io to leave a comment.