The Pros and Cons of building from scratch - The birth of the coffee shop game

So, before we get into the ramblings of recent times, let's give you the cliffnotes so far;

  • Simple City is being shelved. I love the concept, I couldn't make it fun. Maybe I'll come back to it, who knows.
  • I've moved primarily over to Godot now, it's a nicer engine and although GDScript is a tricky bastard, I'll learn.
  • I'm still a software engineer for a fintech, which means the joy of commuting, working far too much, and not getting to work on stuff at home.

The saying "The best way of getting started is to start" is a double edged sword. Yes, you need to kick yourself up the arse and actually get moving on something for it to take shape, however if your approach is to get started in all the wrong ways, you'll spend weeks unpicking what you spent days building. This is doubly true at the very start of a project as if you build it wrong as a foundational part of everything you'll build on top of it, it becomes a key dependency that you'll have to spend so much effort undoing, you may as well start from scratch. With that in mind, and the decision to scrap Simple City burned into my skull like a mark of minor grievance for anything that looks like a game, I wanted to start work on something new, fresh, different, and something I could personally attach to. I bloody love management games, including city builders, but I am not a civil engineer or a city planner. I'm a software developer, and figured I'd rather build something representative of me than something that I just happen to enjoy. So, of course, the logical answer is to build a coffee shop game... Wait, no it's not. It's not the logical next step at all. Fuck it, I'm doing it anyway.

You see, if there's one thing you'll find in every developer office, it's a coffee machine. For one reason or another, developers need their bean water and I am no different. I'm somewhat of a coffee snob. There's very few things in this world I'm snobby about but coffee is one of them. The joke about aspiring authors and screenwriters sitting in a Starbucks sipping at something that vaguely resembles a milkshake and lamenting over a Macbook with an empty word document on it has been replaced in recent years by the same setting of a Starbucks and the same milkshake coffee concoction sat on the table, but now instead of a semi-smart dressed writer with a barber shop haircut and a blank word document, it's a scraggly looking person in a hoodie and shorts, and the Macbook, now covered with a swath of unmatching stickers in place of the polished metal look, instead shows a terminal window, a ridiculously modified version of VS Code, and a janky app written in whatever this week's hot new JS framework is. Hilariously, this is the era I grew up in. Just as this became the more frequent joke, I was indeed that unkempt teenager in a hoodie (though I never wore shorts) with a terminal window open, sat in a coffee shop. When I was doing A Levels and university, it wasn't uncommon for me to have breaks between classes that were too short to warrant travelling home, but too long to just stay on campus. As I developed a taste for coffee, I found coffee shops I liked and then basically became a resident. To the point that during college, I was on first name terms with every member of staff at the local Pret. Then during university, I worked in a greasy spoon cafe in central London. I became friends with our regulars and slowly learned about their lives as they learned about mine. While sat pondering the failure of Simple City, I found myself desperate for something more relatable. It wasn't until my weekly trudge of a commute where I was greeted with several people holding coffee cups and the fact I couldn't hold my phone landscape on the tube due to space constraints that I had the idea. A coffee shop management game, but built for vertical displays.

So, what's the gameplay?

This section gets a bit rambly. I promise there is a game dev point buried in here.

Now, building for vertical displays is something I'd later come to second guess as I watched the clusterfuck that is Apple's latest terms of service war with the EU slowly begin to cripple small mobile devs, but a coffee shop game. How? Well, my mind went to a cat cafe because if you haven't been to one yet, I strongly recommend it. Don't get fooled by the idea of the kitten lounge. The adult cats are far more fun to be with. Kittens just tend to sleep. So I thought that a cat cafe manager game would be fun. Turns out, I was right. So right in fact, that there was already a hell of a lot of options for games like that already on various platforms. There goes that idea. So as I sat in another coffee shop in our town centre and waited for my beloved partner to finish getting their hair done, I found myself wondering "What dictates the kind of coffee shop that exists?" As I said, I've done time in a greasy spoon style cafe that was frequented by office workers who were in need of a quick warm meal, as well as the local tradesmen and labourers, and the elderly who lived in the area. I was sat in something modern, accented by brickwork walls and furniture that was designed to look thrifted yet somehow expensive at the same time. We're all familiar with a Starbucks/Costa/Pret and the style of drinks they offer as well as how every single one of them looks the same. What drives each piece of commercial real estate to look like it does or serve the drinks it does. In reality, there's probably a whole mess of various spreadsheets and equations to determine this but for me, the answer was obvious. Customers. The type of customer you focus on defines the menu and the entire style of the shop. Well. There's my key decision in how to branch my game's story. The type of drinks and food you serve defines how happy you make a customer, and the number of customers of a demographic that are happy defines the upgrade path for the shop. Makes sense? I told you there'd be a point at the end of this.

So, I had a method of progression. Now a decision was to be made about the actual style of the game. Did I want it to be purely management, and focus on the bean-counting aspect of stock management and accounting, or did I want to go elsewhere? Well, initially my intention was to focus on the management and even as I began to develop concepts, this was my approach. Then I started thinking. I thought back to the various people I'd met on both sides of the counter at cafes and realised that even though I fucking love my bean water, the reason I kept going back to places as a customer or the bits that made working in a cafe fun was the people. I mean, I didn't bother going back to a cafe if the coffee was dreadful but as long as it was passable and the company was good, I'd go back. This had a chance to be a game where your story was totally irrelevant, but the stories of the people who come into the coffee shop can be the focus. So, narrative based it is.

Based on this, I had an idea of the kind of game this would be now. The main character doesn't matter. It's a weird concept for a game as the concept for most games is that the main character is the player insert, but with this approach, you have the chance to tell a million stories if you want. When thinking about this, my mind went to "Papers, Please" and how you saw and heard stories of all the people entering the country.

Mechanics

In my mind, a coffee shop game will have a lot of the more simple mechanics.

  • Crafting - The player has to be able to make the drinks
  • Inventory - Kind of ties in with crafting, but you've gotta store the things you make drinks from
  • Shopping - Gotta buy your ingredients
  • Upgrades - As I said, you need to figure out what kind of coffee shop you're going to be

These are just the key functions BEFORE I get into the narrative portion, which involves dialog, choices, relationships with NPCs. That in itself will be a nightmare. So focusing on the functions above, 3 of the 4 of them depend on items and inventory. That's where I started.

Like any modern programmer, I thought that there must be an asset or package to help me do this, and I was right but I was also wrong. There were a few Godot asset packages for inventories, and for crafting, but none of them quite did exactly what I wanted. There were a few key things I needed. The one that was killer for me was the ability to define entire objects in JSON, or some other text based data notation. When you're looking at a coffee shop, there is a LOT of items to exist and I didn't want to spend forever making them in Godot. Similarly, if I want to add a new item, I don't want to have to define it in a lot of code. I want it to be generatable on the fly. The other issue I had was that I could find inventory systems that were so close to fitting my needs, but they didn't have a coupled crafting system. Even then, there was no guarantee I'd be able to bend it to my will. Take the idea of making a latte for instance, fairly simple part of the game when you think about it. For crafting, it's just milk and a coffee shot. Well, what if you had 3 different kinds of coffee beans. Do you write a recipe for each kind of bean? No, it's a category. What about a latte with a flavoured syrup? You could add any flavour syrup and it'd still be a latte, but you don't want to write out a recipe for every kind of syrup you use. Sure, I could spend a long amount of time studying the package code, but by the time I understood it well enough to start bending it to my will and adding a crafting system, I could learn far more about Godot by building an all in one package. Fuck me, am I really becoming an asset maker?

Yes. Yes I am. My first Godot release will not be Simple City but remade in Godot. It will not be this masterful simulation of the modern coffee house. It'll be an inventory and crafting system. That's what I'm working on right now. It's on Github, the repo is "Craftventory2D". It's going to be my focus for now. Once I'm happy it can do what I want, I'll trial it as part of developing my game. Once I've trialled it and am happy with it, I'll release it. That's the plan. Assets. Who'd have thought I would have found a way to turn game dev into another of my daily exercises in reusable code. Building assets. Besides, my manager recently described me as "an asset to the team". I told him he was only off by 2 letters.

Next Post Previous Post