Posted October 21, 2022 by JamesBrill
#casual #devlog #postmortem #mobile #android
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?
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?
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'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.
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:
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.
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!