Game Development Updates

I’ve been sharing a lot on Twitter about the progress I’ve made on my game, but I wanted to also share some deeper thoughts on it, and start trying to actually keep a log of what I’m doing here in a more easily digested format. This post may not actually be that, but if I don’t do a short weekly dev log update next week, someone call me out on it πŸ˜‰

While I originally started it in 2019, I took a short break in January to spend some time focusing on photography and cooking. As a parent, it’s kind of impossible to have too many hobbies at one time, there just isn’t enough free time in a day 😁 Then the dumpster fire that is 2020 happened, and it wasn’t until this fall that I had the energy and time to devote to picking the game back up.

When I left off in Dec 2019, I had actually completed a fair amount of work:

  • Character movement, the player character being animated while walking, colliding into solid objects
  • Quest System with one NPC who gave the quests
  • Dialog system
  • Player Inventory which involved moving items around, stacking the items, transferring items between Player and NPC
  • Chests that could hold items
  • Enemy object that would hurt the Player and cause them to bounce back
  • Save/Load files
  • and probably a lot of other things I’m forgetting.

At the end of August, I decided to pick it back up again.

(Yes, I know August isn’t 6 months after December, I thought I had done more work after December but I was wrong)

I started working off my original plan, which was a game where the Player actually took the role of one of the NPCs, and ran the shop in the game – while still taking on the typical RPG game mechanic of doing quests for NPCs and revealing a story – but it would be done through other NPCs. I started working on it and after about a week, got to the point where I was going to code the main gameplay mechanic, where the NPCs would appear to buy/sell items in the Player’s shop.

This is not a new idea, there’s tons of games based around selling items, the newest one I’ve seen that was popular and cute was the Pokemon Cafe game for mobile phones. Pokemon come in and order food and drinks, and the player does a mini-game to create the item. That’s the majority of the gameplay – and customers are constantly coming, so all you do is play the mini-game over and over. These work great on mobile, because you can play a few rounds quickly during a commercial break, riding an elevator, etc. I struggled to come up with a way to introduce this mechanic into my game, which was not meant to be played just a few minutes at a time, I had planned on having a lot of other gameplay – which became incompatible with this shop-running mechanic. The only way to include the shop running part just didn’t work.

I talked about it with a few people, and decided I needed to think more about what kind of game I wanted to make. I made a list of things I liked in video games, how I like to play games, and what ideas and values I wanted to include. I had an entire story I had created, which I still wanted to use.

After making my list, what I knew I wanted to make was a game that has a story and allows the player to advance the story and unlock gameplay at their own pace, allowing you to choose how to spend your time in the game. I really enjoy games with a lot of customization, creating and building aspects, lots of different things to complete, and many characters.

I also knew it was important to me to create something that had an emphasis on exploration, creation, and relationships, and was non-violent. My original concept had included enemies that you attacked, and I decided to remove that. While I have nothing against video games with violence β€” I’ve played and enjoyed games with plenty of different degrees of violence, from the very mild cartoon violence in Stardew Valley, to Grand Theft Auto, Halo, etc β€” I am very much anti-violence in real life, and felt it was insincere and against my values to include that in my own work.

After working on my new outline, I got back to work coding 😁 Over the next 10 days, I accomplished:

  • Room transitions with a fade-in/fade-out effect, which place the player in the correct relative spot
  • A cutscene system which disables player movement, and has reusable scripts for various actions
  • Very simple NPC pathing
  • Updated inventory system to make certain items “not stackable”
  • Created Tool items which the player can use to interact with various obstacles in their environment
  • Random obstacle spawning
  • A cooking system that uses ingredients from the inventory to create cooked food as new items, based on coded recipes
  • Updated inventory system to limit the maximum size of a stack to 99 items
  • Created a “DevTools” that allows me to tinker with settings to more easily jump to parts of the game I want to test
  • Created a pet dog NPC which follows the Player
  • Player can pet the dog 🐢❀️

At that point, I created a Trello board and started documenting what else I wanted to do, because I was starting to feel overwhelmed and having trouble deciding what to work on next, because my ambitions are huge.

I started seeing a lot of posts on reddit, twitter, from indie devs who had finished their games. Almost all of them were “I spent 2,3,4, even 5 or 6 years working on my game full-time, and it’s finally done!” This was devastating. I can’t work full time on this project, I have a family and am the primary earner. (I also really enjoy my job, I don’t want to stop doing that work).

I got pretty upset, thinking why should I even bother with this β€” if I spend 2 years working on this part time, which means using essentially ALL of my free time and I’m only halfway done, or a third done, I’m not going to be able to finish it. I can’t devote years to a project and not have a finished product at the end. I have read so much advice that says to make your game smaller, to shoot for a lower bar, but I just can’t get behind that at this point. I know what I want to make, and it isn’t a small project.

As a mother, I often feel a lot of guilt about spending time on my own hobbies, and I think this is something all moms feel – our society often tells us we should cherish every possible second with our children, and if you aren’t using your free time to enrich your children’s lives with craft projects from Pinterest, if you aren’t making home cooked healthy meals three times a day, if you want time away from your family, that you’re a neglectful parent who shouldn’t have had kids. I know that’s bullshit, but it’s always still there in the back of my mind.

Once again, my husband stepped in to encourage me. He has always been supportive of me doing whatever makes me happy, and he told me if making the game makes me happy, I should keep doing it, even if I never finish it. He essential said if I work for years on it and don’t have a finished game, so what? That doesn’t erase the time I spent working on it, which is fun for me.

I also noticed that in all of these posts where people had spent years working full time β€” they all did absolutely everything in the game; programming, art, music and sound effects. This is not my goal. While I enjoy creativity and art, I have absolutely no ability to create visual or audio media, nor do I want to. I knew from the beginning I wanted my game to use pixel art, and I was using free assets to make it, but I plan to eventually replace them with new art, which I will pay people to make for me.

A lot of these developers had also started with little to no programming experience. While there has been a big learning curve in me picking up the custom GML language in Game Maker Studio 2 – I have, at this point, over 15 years of experience coding for the web – mostly in PHP and JavaScript (pre Node), SQL, HTML, etc.

Writing in GML is so completely different from what I’m used to – but I already understand major concepts that new programmers will struggle with. I even looked for a unit testing framework for GMS2 pretty much immediately.

I think these two factors β€” already being an experienced programmer, and outsourcing the creative work β€” may in fact make it possible for me to meet my goals in a timeframe that isn’t 5 years πŸ˜‚

Read this thread for the real-time explanation if you’re interested

So I’ve been devoting basically all of my free time to it. I can fit in about 90 minutes before work, and anywhere from 2 to 4 hours in the evenings, then probably 10-15 hours each weekend – while still sometimes cooking dinner πŸ˜‚ My husband was happy to take over a lot of the cooking (or picking up takeaway), which I have done mostly for years because I enjoy cooking β€” but this is something I want to focus on more.

Since then, it’s been another 9 days, and here’s what I’ve completed:

  • Player can place their house in the town wherever they want
  • Created “time/day” system, which increases the time of day in the game at a set rate.
  • Dynamic lighting based on the time of day
  • Added dynamic color to the lighting
  • Made torches illuminate through the dynamic lighting so they emit light at night
  • Made torches toggle on/off
  • Made torches flicker
  • Spent a ton of time designing how the world would be laid out, then created rooms for each new area, and tied them all together with the room transitions (aka doorways)
  • Created a memory leak, then found it and fixed it.
  • Ability to place items down out of inventory, and pick up items
  • Made some items not place-able
  • Made some items droppable, which works different than placed items.
  • Made the player auto-pickup dropped items they walk into
  • Coded the end-of-the-day, when the player has to stop for the day and start the next day. Auto saves the game at this point, including saving the state of all the rooms.
  • Spawn more obstacles at the end of the day, based on the existing obstacles.
  • Dealt with an obnoxious off-by-one error
  • Created a maze area, which generates random mazes (using the Recursive Backtracker algorithm) and random exit placement.
  • Created a puzzle mini-game the player must solve to advance in the maze. Completing the puzzle rewards a gemstone, failure sends you back to the start of the level, with new obstacles spawned.
  • Made the dog moonwalk by accident, but it was awesome looking.
  • Learned about the A* Pathfinding algorithm, discovered that GMS2 includes code to implement it, and made the dog’s following pathfinding 1000% better
  • Made the player able to dig holes to find buried treasure
  • Made the dog choose to wander off if the player isn’t moving, and while wandering he may decide to attack obstacles or dig up treasure.

I’ve also taken a lot of videos to try to share on Twitter, but they either have to be compressed too much or are just too long – and then unfortunately I lost a lot of them with overzealous trash-can cleanup. From now on, I’ll post the videos on here (maybe through YouTube?), because I think it’ll be a great way to see the progress.

Well if you made it this far, I’d love a comment (or you can @me on Twitter), the encouragement I’ve gotten from my friends and other indie devs has made a world of difference.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s