Categories
Game Design Game Development Geek / Technical Personal Development Post-mortem

Freshly Squeezed Post-mortem: The Dungeon Under My House

After 20 months of development, I’ve decided to put on hold further work on my non-violent, first-person role-playing game The Dungeon Under My House, what was supposed to be my second Freshly Squeezed Entertainment project.

The Dungeon Under My House

It’s a decision that makes me both sad and glad. I really liked this project and I enjoyed working on it and the idea of what it could become when it is finished, but as a solo indie game developer who is working very, very part-time, it is taking me too long, and from my very rough estimates that are probably very optimistic, I’d have at least a year of work left.

That’s a long time, and I need to be more prolific if I want to succeed. Maybe in the future if my capacity increases, I’ll return to it. I hope so. I think it was going to be a neat game.

Still, just because the project isn’t going to be finished and released (for now), it doesn’t mean there aren’t lessons that could be learned from it, which is why I’ve decided to write this post-mortem for it!

I hope one day in the not-too-distant future a second post-mortem of the project links back to this one.

EDIT: I have also created a presentation version of the post-mortem.

Information about the Project

The Dungeon Under My House started out as just an idea that I had at the end of October 2022. Now, ideas are a dime a dozen and all, but this idea wouldn’t let me go. I got excited about making a non-violent Wizardry-like first-person dungeon crawler in which you are a child hanging out with friends in your modern day home, only to discover a secret door in your basement that leads to a multilevel dungeon. It turns out that your family comes from a long line of explorers and adventurers.

So each day after school, you pick a subset of your friends (with unique strengths/weaknesses) to go into the dungeon for adventures. Adventures might take multiple days (you are children with bedtimes, after all, so you can only explore for so long), and you can prepare for adventures by raiding the house for supplies.

Encounters require you to use your skills and tools to distract, befriend, scare away, bribe, help, etc the creatures, monsters, or other adventurers you find in the dungeons.

In my head, The Dungeon Under My House would be a cross between Wizardry and The Goonies, in which your friends and your friendships play a huge role. It would also be a Freshly Squeezed Entertainment project, which as a reminder are games meant to be quickly created and given away for free.

The idea behind giving away free games is that I want my games to have as little friction finding their audience as possible, and if enough demand exists for a particular game, perhaps I will create a “deluxe” version for sale. In other words, rather than guess at what random strangers might want based on trends and fads, I’m trying to find and get faster feedback from the people who would be interested in playing the kinds of games I am creating.

I started working on the project in earnest in November of 2022, with the hope that it would be a six month project, but anticipating that it might take me as long as a year.

Ha. Haha.

I don’t know why I was so optimistic. This was a big project, and I’ve never worked on and completed an RPG before, nor did I sit down to scope out the project to figure out how to fit it all within six to 12 months. But more on that later.

What Went Right

  1. Creating a design document gave the project a North Star

    Obviously I’m not a believer in creating 1,000 page tomes as a game design document, but I found that not creating a game design document at all for Toy Factory Fixer resulted in a lot of wasted time.

    So I created a document that is mostly based off of Rosa Carbó-Mascarell’s Game Design template, which you can find here: https://rosacarbo.notion.site/Game-design-template-0132383574dd4c2dbff5d14e3a90761c

    I found it very helpful to identify the core design pillars, the theme and mood I was looking for, and general activities the player would participate in.

    I anticipated that the design might change a bit. For instance, I originally thought the idea of designing your own adventure plans and then executing them was going to be a key part of the game play. I envisioned being at the titular house marking up the map with objectives, then entering the dungeon trying to achieve those objectives. As the project progressed, I could drop this set of features easily as it wasn’t strictly core to what the game needed to be.

    But other things stayed the same. The game was always set in a sleepy modern-day suburb, so I never had to waste any time wondering about medieval or fantasy themes fitting in.

    And the core pillar of non-violence helped me steer away from having any sense of a threat to the physical safety of the characters in the game. In my document, I wrote:

    There should be no attacking or threat of attacks, no abuse, no physical or psychological danger, and no killing.
    – So can there be threats that aren’t related to physical/bodily harm?

    And then I listed out ideas of threats to property (theft, vandalism, etc), relationships (break-ups, loneliness, hurt feelings), and information (secrets, lies, incomplete knowledge).

    The document got updated periodically as I needed to jot down parts of the design I hadn’t anticipated, so it wasn’t like I wrote the design once and forgot about it or pretended that I needed to stick strictly to it. It was a living document that I kept open on my computer any time I was working on the game.

    And having all of my design notes and decisions in one place definitely helped me know what forward progress looked like.

  2. Creating cheap prototypes and mock-ups sped up decision-making

    The beginning of a project is always exciting, when anything and everything can be possible, but at some point I need to make decisions that take the project in a certain direction and necessarily cut off other options.

    The design doc helped make some decisions quite easy as mentioned above, but other decisions involved choices that weren’t necessarily right or wrong for the project.

    For instance, knowing that I wanted the game to have a 1st-person view in the dungeon, the question came up: what angle should the camera be at?

    A simple solution is: centered! It would be simple, but it might look boring and uninteresting. Having the imaginary camera higher up and looking down more would show more of the current dungeon tile while also giving the impression that the ceiling is lower or that the player is taller. And having the camera lower would maybe be a more appropriate vantage point for the young children who would be the main characters in the game, but it might prevent the player from being able to see as much.

    At the time, I was planning on using old-style tiles to simulate the three-dimensionality of the dungeon, so creating mock-up art for each angle sounded quite tedious.

    Instead, I used a physical prototype. I took an old shoe box, printed out some dungeon wall image and taped it to the back of the box, then placed some wooden figures in it. Then I took pictures from various angles to get a sense of how it would feel.

    The Dungeon Under My House - cheap and fast prototyping

    The Dungeon Under My House - cheap and fast prototyping

    The Dungeon Under My House - cheap and fast prototyping

    It took me only a few minutes to create, and I learned right away which one I liked best.

    There were also many ways I could show things on the screen, and even if I didn’t know what might be eventually on the screen in the end, I could at least start somewhere. So I created this mockup:

    The Dungeon Under My House - preproduction mock-up

    And I found that doing so helped me figure out where I thought some UI elements would work best. The downside is that I realized very quickly that my mock-up didn’t anticipate the on-screen controls that would be necessary for the mobile version, so I tried another mock-up:

    The Dungeon Under My House - preproduction mock-up

    The latest actual in-game shot shows that I tried a combination approach in the end:

    The Dungeon Under My House - latest dungeon view

    One of the next features I would have worked on would have been the in-game map on the HUD, and so I was already anticipating needing to rearrange and resize various controls, but I know exactly where I want that map to live.

  3. Looking for reference art helped me create a cohesive, “real” world.

    I knew I wanted the game to feel light-hearted and family-friendly. I wanted to have stylized, cartoony art, so photorealistic art wasn’t what I wanted at all, nor did I want a gritty and dark theme.

    I’m primarily a software developer, but I know enough about art that having good reference material helps a lot.

    So I spent time looking into dungeons, sewers, caves, coal mines, and all sorts of things that could act as a dungeon hidden under a sleepy suburb.

    I was disappointed to learn that most real world dungeons were not much more than pits to keep prisoners in, but I was delighted to learn that the Paris has a sewer museum! I even learned that here in Iowa the Wastewater Reclamation Authority has a website that describes how their facilities work AND THAT YOU CAN REQUEST A TOUR!

    And I was very interested to learn of Derinkuyu, Türkiye’s underground city that was rediscovered when someone found a tunnel behind a wall in his home a few decades ago.

    Meanwhile, the other part of the game would take place in the house, so I tried finding art related to various rooms: bathrooms, dining rooms, living rooms. A website about the living rooms of various 90s television sitcoms helped. The living room in my game has a staircase leading up because of course it did: that’s how the rooms on TV look!

    When I found a neat cross-view of a house that had a dollhouse look to it, I knew that I wanted that look for my game.

    Simple house view

    Besides looking for environment art references, I also spent time looking for character art references. Various cartoons, comics, anime, video games, and even clipart examples of children that I thought seemed promising ended up in a large document. I even had some animals, because I hadn’t quite figured out whether or not all of the characters in the game would be human.

    And with a game featuring people, I needed them to look distinct. Clothing store websites feature all sorts of child models, so I found quite a few neat looking outfits, which helped inform the clothing customization options that I added to the game.

    Now, I could have done whatever I wanted. The existence of games featuring sprawling dungeons despite the lack of a real-world equivalent means that it is already OK not to stick to reality. But having a basis for the “reality” of my game’s environments and characters helps sell the reality better than if I used my untrained artistic abilities to freehand everything with no good rhyme or reason.

    Something non-artists might not know: it’s not cheating to use references to inform your art. Use them!

  4. Planning only one thing upfront to work on each week

    This one is kind of a mental health thing for me, but it is a deliberate change from how I ran my previous projects that I think worked out well.

    I ran my project on a weekly cadence. Each Sunday, I would write a blog post about the previous week as a development update, then I would plan the coming week’s sprint.

    In the past, I would kind of mix up my sprint plan with my larger planning, and so I would pick a collection of features to work on, usually features that I think go well together. That is, once all of these are done, I would feel like a significant piece of the game would be done.

    The problem was that sometimes one of those features big quite a lot to work on. Breaking it down into tasks, I’d maybe get a small subset of the tasks done.

    So when I would write my weekly devlog blog post, I would report my progress by saying something like the following from the Freshly Squeezed report of Sprint 42 of Toy Factory Fixer:

    Sprint 42: Training levels

    Planned and Completed:

    • Make sewing worker unique

    Planned and Incomplete:

    • Show tooltips during game based on triggers
    • Create floor training levels/tutorial

    Imagine weeks of saying “I planned to do X, Y, and Z, and I only did X” and you can see why I said it was kind of a mental health thing for me.

    Even if I didn’t mean to say I would get all of these things done in a single week, it still looked like I wasn’t getting things done, and it can be demoralizing.

    And of course, it is hard to predict when things would get done if I kept lying to myself. Not finishing these items means I can’t start working on the next items, and if I do this for weeks in a row, then if I was hoping to get the next item after Z finished by a certain date, well, I can’t even promise I’ll have capacity to start it by then.

    So for this project, I made sure to only plan one feature. Then, I either finish the feature and start unplanned work next before the end of the sprint, or I have only the planned work that is incomplete.

    By and large, it felt better. I no longer felt like I was behind, which is weird because I am my own boss and the feeling came from the accidental promise I was making by listing a bunch of planned work that I wasn’t actually trying to meet. It also helped me avoid deluding myself that a bunch of work would suddenly occur in a single week.

  5. Creating devlog videos to attract more potential fans

    I’ve always written about my game development. This blog started in 2005, after all.

    But sharing my weekly devlog blog posts on social media only gets so much traction these days. Adding devlog videos might increase the likelihood that someone finds out about the games I am working on. It’s another opportunity for someone to discover GBGames and TDUMH.

    So I started making a weekly devlog video. Here’s my first one, published on October 3rd of 2023:

    Oh, that’s rough. You don’t have to watch it.

    YouTube said it has 20 views total.

    In fact, for the next few months, my videos would get about 6 to 35 views each. That’s not a lot, but you know, YouTube is very algorithm-heavy, there’s a lot of other videos being made continuously, my own videos don’t have amazing production values, etc.

    So I spent some time looking into best practices. I started creating custom thumbnails instead of using a random frame from the video that YouTube chose, and I even bought a new microphone to replace the ancient one I’ve had since forever (I think I got it when Windows 95 was the latest thing).

    With catchier thumbnails (I refuse to do a “stupid YouTube face” thumbnail no matter how effective) and a less tinny, much sexier voice, my videos started getting a couple hundred views as well as regular comments.

    Creating the videos each and every week was hard work, even with the low production values. I would write a script, create some video clips of various new features or progress I’ve made on the project, then record myself talking through the update. In the end, I would produce a video that is only a few minutes long.

    While I always tracked how long it took to write a blog post, one day I decided to track how long it took me to create a video from start to end, and I realized that it could take me about 1.5 hours.

    Remember how I said that I am working very, very part-time? I don’t have 1.5 hours to create a video each week! It eats into the time to actually make something for me to show off in the video in the first place!

    So I cut back to only creating a video once a month or two. One benefit is that I have more to show in a given video. Here’s the most recent one that I published at the beginning of this month, and you can tell that is definitely smoother, as I have gotten into a groove creating them in a consistent way:

    And another benefit is that while it takes me longer to make each new video, I feel more comfortable with batching all of that time together once in awhile.

    Obviously the videos are not bringing in thousands of customers, but I do think that it has helped me to increase awareness with a few people about what I am doing, much more than my blog and social media posts alone. As a bonus, it gives me practice with using tools such as OBS Studio, and I can also create animated GIFs more easily.

What Went Wrong

  1. Not creating a real schedule resulted in a non-stop treadmill of development.

    Definitely my biggest mistake was not creating a schedule for this project.

    When I made Toytles: Leaf Raking, I created a road map. It was an optimistic road map in that I anticipated creating the initial release of the game in three months but the actual release didn’t occur until the eighth month of development.

    But the road map was still helpful to create as it helped me nail down as much of the project as I could upfront. I knew that estimates are likely to be way off, but I don’t think I appreciated knowing as much as I did about my project.

    When I worked on Toy Factory Fixer, I didn’t create a road map. I think I had read something about how road maps are awkward in modern development because it implies being able to believe in accurate estimates and also believing that you could know exactly what a project would look like at the end from the beginning.

    In Agile software development, you expect to be able to adapt to changing market conditions, changing stakeholder demands, and changing realities. The road map is a relic of old-style plans that presume you can nail down requirements up front.

    So I skipped the roadmap, and that project lasted a year. What I remember was that it was supposed to be a one month project, and each month I “hoped” that I would finally be finished with it.

    In hindsight, I don’t know why I ever expected to be finished each month because I do not remember doing any work to figure out the full scope of the project until near the end. Maybe it was because I believed my feature backlog was exhaustive and was always surprised as I added to it?

    For TDUMH, I once again skipped the road map, and I didn’t even pretend my backlog was complete. I basically came up with what I thought was a good first pass, and I fully expected that I would learn about the nature of the project as I worked on it.

    I could be responsive, changing and updating my plan regularly.

    And frankly? This works just fine. I could work on the project at the pace I am at indefinitely, and eventually the game would be finished.

    At the same time, I did nothing to try to figure out how to fit this project into a six month period, which is what I wanted it to be. But merely wanting Toy Factory Fixer to be a one month project wasn’t enough, either.

    So I had a conflict that I wasn’t addressing: my business expected me to release games more frequently, and my management of the project had me working as if I could take forever to release the project if I wanted to.

    At some point in the last few months I realized that I needed to figure out how much work was left on the project, and with my very rough estimates, I’ve decided what was left was way too long.

    And I think if I knew it upfront, I might have tried to make a smaller version of the game.

  2. Not prioritizing the work well wasted my time.

    Even early on I knew that by making the game non-violent, I would need to replace all of the compelling combat-related mechanics such as health, weapons, armor, attacks, etc with something equally or more compelling. My goal was to emphasize conversation and knowledge-acquisition.

    The thing is, I didn’t know what it would look like.

    A branching dialogue tree wasn’t going to cut it. I didn’t want to make a rigid story or a visual novel. I wanted something more dynamic and flexible, that required the player to make more interesting decisions than choosing between a handful of pre-written options.

    In short, I wanted the conversations to BE the main game play.

    And yet, instead of spending time prototyping conversation systems and UIs and researching existing games that do interesting things with conversation mechanics, I worked on character customization.

    The Dungeon Under My House - new character customization

    The Dungeon Under My House - character customization

    I justified it to myself. I really, really wanted the player to feel like they could see their friends and family, or maybe a fantasy version of who they wish their friends and family were, in the game. It seemed important at the time.

    And I worked on creating the first person dungeon view, first by trying to create tiles, and then creating a raycasting renderer, and then profiling it and debugging it to see if I can get it to be performant each time I made a change that slowed it down.

    In hindsight, I should have realized that the first-person aspect of the game, as nice a thrown-back as it was to the kinds of old-school RPGs I wanted to remind the player of, was not necessary or fundamental. A top-down overhead view would have been faster and easier to implement. Character customization turned out to be tedious work, which I didn’t anticipate when I started, and perhaps for this project I should have created concrete, unchangeable characters if only because it would have been faster.

    And the main reason I wish I had done those parts of the game so much faster is so I could focus the bulk of my time on the more interesting game play that I was trying to create with conversations and personalities and knowledge acquisition. Instead, after 20 months, the systems in place feel clunky and limited, and I knew I still needed to expect to spend considerable time on experimenting and figuring out this core part of the game.

    It would be one thing if I spent only a little time on non-core things. Spending 20 months on a project might have been more palatable if I had spent a large amount of that time coming up with new game play, but as it is, I feel like I could have used my time better.

  3. Not quitting earlier meant missing opportunities to publish more frequently.

    This one is kind of related to the previous points. If my goal is to release a game in six months, I should hear alarm bells in my head when I hit the six month point and not have a game anywhere near finished.

    In fact, those alarm bells should have been heard long before six months passed, because I should have an idea how much of the game was finished versus how much is left to do and be able to figure out how confident I felt about getting the remainder of the work completed in the time left.

    Instead, as I said before, I could work indefinitely on my project, inspecting and adapting as I go, and given my limited capacity, I wasn’t investing time to inspect the health of the project as a whole. I did not treat the six month deadline as a real deadline so much as a soft suggestion, which didn’t help give me a sense of urgency or a reason to worry.

    Toy Factory Fixer’s initial release was in 2021. I didn’t start TDUMH until 2022 with an expectation that I would release it in 2023. Even if I had succeeded, that is already a long time between game releases, at least for my business goals. Taking longer than six months means even more delays for accomplishing those goals.

    Maybe if I would have put the project on hold or canceled it in 2023, I could have used the time since then to figure out a smaller scoped game. Maybe by now I would have released at least one, perhaps two or even three more games.

    Better late than never, but I should be more protective of my time. I am getting too old too fast, so it isn’t just my business goals I’m worried about.

  4. Waiting so long to use freely available UI elements made my game look amateurish

    When I started working on the project, I slapped art together to get something on the screen as quickly as possible.

    The main menu’s buttons, for instance, looked like this:

    Freshly Squeezed Entertainment game #2's title screen mock-up

    Just colored rectangles. They are functional and easy to create.

    I also tried to add a little bit of detail to them to make them better, but it was still very basic:

    The Dungeon Under My House - old title screen with placeholder buttons

    Between taking screenshots and making videos, I had a lot of footage of the game with these placeholder UI elements.

    Which is unfortunate, because the entire point of publishing footage of the game was to get people interested, and I was basically saying, “Here’s this ugly amateur thing for you to not waste your time with.”

    It was only recently that I decided to use buttons from the free Kenney UI Pack, and after adjusting some font colors and sizes, the buttons on the screen looked way better.

    The Dungeon Under My House - title screen with new buttons

    What’s weird is that I had no problem using existing UI art. I already used icons from Game-icons.net in various places, and I already knew about free assets from Kenney.

    So I’m not sure what took me so long to get around to it other than a sense that other things were more important to work on.

Lessons Learned

  1. I should take advantage of good art assets earlier.

    I should definitely start my next project with great looking icons and buttons, especially if they are going to be displayed on the screen a lot and they’ll be some of the first things seen in screenshots and videos.

    While I still like providing my own art in general, and I don’t think I should fill my game entirely with free sprites and icons, using fantastic, ready-made resources such the Kenney UI Pack makes the game look way better than I could on my own and in a much faster time period. I should really need to justify not using them rather than the other way around.

    And if game UI icons and assets make sense to bring in early, what about sound effects and music? I usually leave those until late in the project, and perhaps it makes sense to have placeholder audio at least.

  2. If I want to release more frequently, then I need to make a schedule.

    Open ended projects are a luxury I can’t afford.

    As I said above, it isn’t as if I couldn’t keep working on my project the way I have been. I know each week I make a little progress, I can inspect and adapt as I go, and one day I’ll work on the last bit of progress and call it done.

    But my business strategy ostensibly requires me to release my games much, much more quickly. Until I can increase my capacity to work on my projects, my projects will need to be scoped much, much smaller so that I can get them done in a reasonable time.

    I still expect that I’ll need to inspect and adapt, that I can’t possibly anticipate everything, but I’ll have a better idea of what needs to go into a project plan for a small game than a big one.

    So simultaneously knowing as much about a project as I can will help me create a realistic schedule, and a schedule with deadlines should help me limit how much a project can be.

  3. With my limited capacity, I need to ruthlessly prioritize the work.

    I like to be purposeful, which means that each project I work on isn’t just a random collection of cool-sounding features. When I create a game, I like to identify some core part of it that is the reason it needs to exist now instead of some other project.

    For TDUMH, I wanted to make a non-violent dungeon crawler, and what I should have done was figure out exactly what I needed to focus on to make it work. I already mentioned above that not having combat in the game isn’t enough, as I needed some compelling game play to replace it.

    If I were to start again today, I think I would realize that I need to prioritize prototypes related to conversation and knowledge-acquisition mechanics as early as I could. Maybe I could have decided then that a party-based RPG would be too big of a project, but what if I applied the same focus on conversation and knowledge-acquisition to a game that consisted of nothing but a small room and two or three people, and maybe a few objects?

    I might have been able to put together a game in a much shorter period of time, and I could always use it as a building block for my next project.

    Since I instead worked on things that shouldn’t have been prioritized, I still need to figure out compelling game play because right now I just have customizable characters and a dungeon to traverse but not a whole lot else.

    Even if I had more capacity, I still would want to prioritize my time much better, if only to make sure that I am releasing games sooner than later.

    For the early stages of my next project, I should spend time trying to identify the dependencies between different features and systems. I did a light list for TDUMH, in fact, but it wasn’t something I paid much attention to, and well, here I am wishing I had done more.

  4. I should continue to seek out opportunities to promote my work.

    People have asked me why I still try to sell Toytles: Leaf Raking after all these years. Why don’t I just drop it and forget it and move on?

    And my main objection to that reasoning is that it isn’t as if lots of people saw the game and thought, “Nah.”

    So I try to promote it and sell it because people by and large haven’t had a chance to reject it yet.

    Like most indies, obscurity is my main obstacle to success.

    For TDUMH, I found that sharing screenshots, posting weekly progress reports, and publishing videos means I am giving more potential fans a chance to find out that my games exist.

    Some of those people become fans who start to ask about details, but I don’t know where the next fan will come from. Maybe they’ll find my blog post because someone shared it. Maybe they will be perusing YouTube and the algorithms will manage to place my video in their feed at the right time. Maybe they’ll see one of my screenshots posted on social media.

    Most of my time is spent on game development, but it doesn’t take much time at all to capture in-development screenshots that I can then easily use in blog posts, videos, and posts on social media. There’s no excuse to not tell people what I am working on more frequently and in more ways.

    Plus, making games with an audience is a bit more motivating than listening to crickets.

  5. It’s easy for me to keep my nose to the grindstone.

    Each week, I plan the work for the next sprint, and then each day I succeed more often than not to make steady progress.

    On average last year I worked about 7.5 hours per week, and this year I’ve been trying to hit 7 hours per week as well.

    As much as I would love to make more time for development, given my life priorities and obligations, this pace is doable for me. I rarely find myself exhausted or burnt out by it.

    Maybe that sounds silly, but the hours add up, and each hour I work on my game is an hour I’m not spending time with my family. Until I quit my day job and free up a significant source of hours, this pace is my reality.

    That said, I have shown that if I set myself in a direction, I can continue plodding along until I’m finished. I stick with things, and I can keep focused on the same task. These are good things!

    The challenge is to make sure I check in on myself to ensure that direction is still a good one and course-correct as needed.

    I’m used to focusing on the current sprint’s tasks, then planning the next sprint. I’ll need to start looking at any given sprint as part of a whole, asking myself how far along do I think I am and how much more is there to do. And I’ll need to be honest. If I already have X tasks to do in Y weeks, and I discover an X+1th task, it very likely means I’m working for more than Y weeks if I think it needs to be done. Which means I’ll need to be sure that it is something that “needs” to be done and not just a really appealing nice-to-have.

    These frequent project health check-ins should help me lift my nose up from the grindstone periodically, mainly to make sure I’m using the right grindstone.

Conclusion

As excited as I was about The Dungeon Under My House, it ended up being too big of a project for me at this time.

I’m not new to game development. I’ve been creating games for many years. Still, this project reminded me of my limits, and if I am honest, it humbled me a bit.

I do believe that if I kept going the way I had been going, the game would eventually be finished, but it would take me way too long to get there. At least, too long for my overall business goals.

The opportunity cost is too great when I could be releasing smaller games and building an audience during that same time. So as painful as it might be to have to part ways with this project for now (and potentially forever? I hope not), it’s not a hard decision to make.

After 20 months of development, even though I won’t be shipping this project, I am glad I can take stock and glean some insights from it.

I know this analysis will help me greatly with my next project. If I could sum up the lessons, it would be that it isn’t enough to keep moving forward because I also need to ensure the destination isn’t too far away.

I hope this post-mortem helps you, too. Let me know if it did!

Stay curious!

Want to learn when I release updates to Toytles: Leaf Raking, Toy Factory Fixer, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and get full color PDFs of the Toytles: Leaf Raking and Toy Factory Fixer Player’s Guides for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: iOS SDK Updates and Scoping the Current Project

Last time, I reported that I was working on iOS SDK updates for my existing projects, which required taking a short break from The Dungeon Under My House, my non-violent, first-person role-playing game and my second Freshly Squeezed Entertainment project.

iOS build automation

So as I said last time, much of my iOS port work tended to be manual, partly because Apple development environments are so bizarrely different from everyone else’s, and partly because Apple seems to strongly discourage build automation.

Well, sort of.

See, I made the mistake of thinking that build automation is the same as everywhere else: you write scripts using command line tools, and then you can specify configurations and kick off builds whenever you want.

But last week I found out that the reason why I couldn’t find much info about using xcodebuild is because it was buried in the docs for using the Xcode Cloud. “Oohhhh, of course! You’re supposed to do it the Apple way!”

Well, whatever, I’m not planning on using their Cloud services, and I’ve figured out much of what I need to do with CMake and xcodebuild as it is.

In fact, I think I am at the point when I can run a single script to generate an Xcode project and then build it and install it on a simulator to test it, and a different variation of the script to build and archive and upload to the App Store for validation and potentially preparing for publication. Nice!

Of course, as I said, I have an old Mac Mini that runs an old version of Xcode, so when I try to do so, I get a fun error:

Asset validation failed. SDK version issue. This app was built with the iOS 16.2 SDK. All iOS and iPadOS apps must be built with the iOS 17 SDK or later, included in Xcode 15 or later, in order to be uploaded to App Store Connect or submitted for distribution.

BUT what this error also tells me is that I’m probably ready to use Mac in Cloud.

Mac in Cloud offers a Pay-as-you-go plan. While I could have gotten the day by day plan, I decided to go with the hour by hour plan because my own development efforts match it better. Some days I only get an hour of game development in, and it would feel wasteful to have access to 24 hours and use such a small part of it.

What I didn’t anticipate was that I found myself not logging in to make progress because this past week I found myself struggling to find an hour that I knew wouldn’t be interrupted. My desire not to waste my limited hours conflicted with the need to make forward progress and my own time capacity.

It didn’t help that when I finally tried to log into the Mac in Cloud instance that I kept getting an error message. When I contacted help, they offered no help (other than a screenshot that indicated that they had logged into my account successfully) and instead offered help related to connecting to the server in the first place. Obviously if I got as far as the login screen and error messages, then I didn’t have an issue connecting, right?

But I clicked the link they provided, which took me to the same place, and I couldn’t login still.

So I decided to finally get a screenshot, and…suddenly I could log in? I must have been typing my username and password wrong this whole time?

And of course, by this time, I didn’t have the hour to take advantage of anymore, so I wasted a session. B-(

Anyway, I expect I’ll make the time this week, and hopefully building with the latest Xcode and SDKs won’t pop up too many surprises to debug and address.

The Dungeon Under My House scope

Meanwhile, I’ve been slowly plodding along with The Dungeon Under My House (TDUMH), and I recently decided to figure out just how much work is left.

You might be thinking: wait, you don’t know?

No, I don’t. No one really knows how big a project is at the start. You can pretend to know, but often your initial project plan misses things, sometimes very big things, and so you find yourself working on things you didn’t know you would be working on.

So my approach to this project was to try to identify some major features upfront, but also to be flexible enough to handle the addition of new features as I recognize their need.

As you may remember (since I bring it up a lot!), I’m a very, very part-time indie game developer. Between family, a day job, and other obligations, I only spend so much time on game development.

On average this year, I have done around 7 hours of game development in a week. Some days I do multiple hours, and some days (usually weekends) I do almost none. Even some weeks have very few hours while others have more to make up for them. In other words, my productivity is uneven.

As much as I would like more time to work on game development, I currently can’t see sacrificing other priorities in my life to make it happen. Given my capacity, I’ve found my plodding efforts are fairly sustainable. I feel like I could keep up this pace forever.

However, I know this project has been in development for a very long time. At least, calendar time. The actual amount of time spent working on it probably works out to a bit over 650 hours, although I don’t keep track of time spent on individual project, so any chunks of hours working on my previous game updates aren’t separated from these numbers. But most of the time is definitely focused on TDUMH, so let’s pretend 650 is a good rough number.

If this was a full-time effort for me, 650 hours works out to a little over 16 weeks, or ~4 months. That’s not bad. Another 6-8 months, and I can this project being not only finished but also highly polished.

But since it isn’t a full-time effort, those 650 hours are spread out over 20 months. I’ve spent 20 months of my life on slowly adding features and creating the game content to take advantage of those features, and I don’t have a game anywhere near releasable.

When I started this project, my intention was for it to be a six-month project. Not a six-month full-time project. A six-month project at my current game development pace.

It’s not great being 20 months into a six-month project with no sense of how many months are left.

So when I wasn’t working on iOS SDK build updates, I was spending time trying to identify all of the remaining work for TDUMH. I’m not finished with the scoping work yet, but I can say that there is quite a lot left to do.

Once I get a much more solid sense of it, I can make a decision about the future of TDUMH. My goal is to release games more frequently than I am, stay tuned!

Thanks for reading!

Want to learn when I release The Dungeon Under My House, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: iOS SDK Updates (and Rant)

In my last report, I updated the buttons to significantly improve the look and feel of The Dungeon Under My House, my non-violent, first-person role-playing game and my second Freshly Squeezed Entertainment project.

While much of last week was spent attending to other tasks, such as creating a devlog video about the last two months of progress, I did spend a little time on automating my iOS builds for Toytles: Leaf Raking and Toy Factory Fixer.

New mobile requirements

This work is generally applicable to all of my projects, not just The Dungeon Under My House, but it will benefit as well.

I like to ensure my game is available on as many devices and platforms as possible, so I write cross-platform code, avoiding proprietary technology as much as possible. By doing so, I am able to publish my games for Linux, Mac, Windows, iOS, and Android.

Unfortunately, Apple and Google like to update their requirements for keeping your apps in their stores, even if your game hasn’t changed.

For Google Play, it’s not so terrible: I simply get the latest NDK and SDK and build, fixing whatever little changes might be required that usually doesn’t affect my game’s code so much as the various Android-specific scripts and configuration. And I can do it on my normal development computer, which is a Dell PC I bought in 2013 running Ubuntu that has had some of the internal hardware upgraded and still works just fine.

But for the App Store, I cannot easily do the same. In fact, not only does Apple require that apps need to support iOS SDK 17, but that the apps must be built with Xcode 15, which means it needs to run on an Apple computer.

Apple Developer Program requirements

Both iOS SDK 17 and Xcode 15 were released about a year ago, and both are free. What’s the big deal?

Well, unlike previous updated requirements, this one comes with baggage.

See, I have a Mac Mini. I bought it in 2017, and despite it being fairly underutilized and otherwise perfectly working hardware, it’s old enough now to be considered officially “vintage”.

If you’re not familiar with Apple hardware life cycles, vintage means Apple stopped selling the product between 5 and 7 years ago, which limits how much support they provide for it.

In this Mac’s case, it stopped getting OS updates after macOS Monterey, which means the latest Xcode available to me is definitely NOT Xcode 15.

Next year, my Mac Mini will be considered “obsolete” because it will be after 7 years since they last sold that model of Mac Mini.

Ok fine, I just need to buy a new Mac, right?

Well, I’ll get to that. But first, the computer I have still processes bits and bytes just fine, and so I’m more than a little frustrated that Apple’s policies are forcing me to abandon the as-already-mentioned perfectly working hardware.

Yet Apple won’t provide new OS updates to this machine, which means no Xcode updates, which means I cannot use this perfectly working hardware to create and publish apps in the App Store anymore.

You know, if Apple sales were a real money-maker for me, I could see the investment in a new computer being a no-brainer cost of doing business. But they aren’t.

In fact, between paying $700 for the Mac, $400 for the iPhone SE to act as a test device (which of course is also now vintage), plus $170 for a used iPhone 7 to act as a second test device when I couldn’t reproduce an issue on the SE that was being reported to me from a customer, plus $100+/year for the Apple Developer program since 2019, I’ve spent a lot of money to ensure my games can be available on the App Store as it is.

In return, I can say that I’ve only earned back a total of a little over $100.

To be clear, that amount is the total since my first sale on the App Store in 2020.

I have not earned back my investment the same way I have with the one-time Google Play $25 developer program fee.

Now, you can say that I should be doing more promotion, that I should make the game more attractive, and it is my fault and such, and you’re probably right.

But it still makes me wonder why I should spend hundreds more for a new computer just because Apple insists that I need to use one.

Which is why I signed up for Mac in Cloud’s services. If I can successfully build and publish my games through THEIR modern Mac, I can pay significantly less than the price of a new Mac that Apple will call vintage within a few short years, and the only thing I need to worry about is testing on a real device.

The real challenge is that my iOS development up until now has been fairly manual.

I have a CMake file that allows me to generate an Xcode project. For some time I had pieces that I still had to update in Xcode such as adding images to the resources folder and setting up code signing, but eventually I updated my CMake files and other configuration to set those automatically, too. The only thing left that I did in Xcode was building and archiving the project, then uploading to the App Store to publish it.

But I’ve never liked feeling like I need to use Xcode. Almost all information and help out there assumes you are building through the IDE for some reason.

While I don’t find it to be a very fun IDE to use, the main concern is that I like scripting and automation better. Having a script you run to build your games can be a more consistent experience, and I don’t need to worry about forgetting how to do something when the scripted command is in version control.

So my work this past week has been trying to figure out how to automate the building of my project with xcode-build. I’m doing this work on my Mac Mini, because again, it is otherwise perfectly working hardware, but also because I don’t need to use up my Mac in Cloud hours.

Once I get it figured out on my own Mac, then I’ll switch to using the Mac in Cloud service, where I expect I’ll run into minor Apple-specific configuration requirements that I’ll only discover when Apple rejects my app for not having them or when Xcode 15 turns some optional configuration into a requirement.

Wish me luck. I hope it won’t take me long, and if Mac in Cloud works, the price is much more affordable, but I am wondering if next year’s $100/year Apple developer program fee will be worth it, and we’ll see how my efforts to sell my game in the coming year work out to change the equation.

Thanks for reading!

Want to learn when I release The Dungeon Under My House, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Video Progress Report: Giving Items, Sleeping, and UI Improvements

Here’s the latest Freshly Squeezed Progress Report video, with footage covering the last couple of months of development, including this past week’s report: Improving the UI

Enjoy! And let me know what you think by replying below!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Improving the UI

Last week, I reported that I had fixed a number of defects and finished working with quantified items allowing the player to distribute snacks to other characters in The Dungeon Under My House, my non-violent, first-person role-playing game and my second Freshly Squeezed Entertainment project.

I needed to switch my efforts to supporting other projects but first I decided to tackle something that makes a substantial difference to the look and feel of the game.

Sprint 2024-31: UI – buttons

Planned and complete:

  • Improve UI buttons shapes/images

If you’ve been following along from the beginning, you know that I’ve had some placeholder buttons in place.

Freshly Squeezed Entertainment game #2's title screen mock-up

Here’s what it looked like last week, which is what it has looked like for months after I did a slight improvement by creating the outline, but I was never happy with it:

The Dungeon Under My House - old title screen with placeholder buttons

And here’s what it looks like today:

The Dungeon Under My House - title screen with new buttons

I decided to take advantage of the Kenney UI Pack, part of the many free assets created for game developers to use in their games. Why haven’t I been doing this sooner?

I took a button that I liked, modified it so that it can represent different button states, and now this lifeless interaction:

The Dungeon Under My House - moving quantified items between inventory slots

instead looks like this:

The Dungeon Under My House - moving quantified items between inventory slots

Seeing it in action really helps explain how much of an improvement this small change made.

I also realized that it would help to have fonts that contrast better with the button’s color, so I tweaked some of my UI helper code to allow me to specify the font color, and I think it is definitely better.

What do you think?

The GIF doesn’t seem to make it clear each time the button is pressed, but I think that’s more due to the frames being dropped because in-game it looks fine.

After this small yet impactful change, I started to work on my existing games. Basically, Apple requires new and updated apps to be built with Xcode 15 and use at least iOS SDK 17, and my current Mac Mini is too old to support the latest Mac OS which is why I can’t run Xcode 15.

So I signed up for Mac in Cloud which offers access to an M1-based Mac Mini and development environment that I can remote into, and it lets me pay for hours instead of days. That’s great, because as someone who works very, very part-time, who sometimes only works an hour a day on my projects, I don’t need to feel like I’m wasting my money.

Still, I do need to make sure that I make those hours count, so I’m currently updating my games to use the latest libSDL2 and related libraries. By and large it is straightforward and everything is compatible, but of course the main sticking point is that Apple has new requirements that the library might not yet support.

I’m still investigating, but I know a lot of effort is being put into libSDL3, so it isn’t clear to me yet if libSDL2 will be able to support the latest App Store requirements.

And I’ll see how complicated this work is and if I think it might be worth it going forward. My apps haven’t actually changed, yet I have to go through this effort just to keep them up in the App Store, and I’m not sure if it is worth it.

I’ve been paying ~$100/year for the privilege of being in the Apple Developer program, which allows me to publish to the App Store, but I am not making anywhere near that from the App Store, and unless my marketing efforts start to change the numbers substantially, I’m just paying to lose money, which makes this annual porting effort questionable as a business activity.

Thanks for reading!

Want to learn when I release The Dungeon Under My House, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Distributing Sandwiches

In last week’s report, I made it possible to see furniture inventory previews such as Snacks on the Kitchen Counter and started the work of handling quantified inventory items in The Dungeon Under My House, my non-violent, first-person role-playing game and my second Freshly Squeezed Entertainment project.

I finished the quantified item work this week.

Sprint 2024-30: Giving quantified items

Planned and complete:

  • Allow player to give/take arbitrary number of multi-quantity item

Unplanned and complete:

  • Defect: Items added to inventory by command go missing after load
  • Defect: Inventory preview renders in same spot on screen despite room transition animation
  • Defect: Dungeon won’t render upon first entering
  • Defect: Loading in dungeon seems to use previous move/turn state instead of latest

Sometimes seemingly simple things take quite a bit of effort to make happen.

In this case, I already had a way to transfer quantified items such as Snacks from furniture to the party’s inventory. I wanted to reuse the interface to give an item to another character, but it required a lot more work to make happen.

The Dungeon Under My House - moving quantified items between inventory slots

As I said last time, giving items is a two-step process.

First you select what you want to give. Then there is an attempt to give the item, and the receiver either accepts it or rejects it, currently based on their own Inventory’s capacity.

So unlike swapping out an item from a Furniture’s Inventory, which is immediate, there are edge cases to handle with giving quantified items.

For example, let’s say I have an Inventory slot with six sandwiches. I could give a character all six of the sandwiches I have in my Inventory. In that case, if they reject the gift, then I get all of the sandwiches back.

I could also give only one sandwich, keeping the rest myself. If they reject that gift, then the sandwich should be returned to the same slot that has the other five sandwiches. However, if I had my sandwiches split across two slots, then which slot does the sandwich get returned to? Ideally it would be returned to the slot that I swapped it out from originally.

And there are similar Inventory management concerns for other cases.

All this is to say that it took me some effort. I had to make changes to the Inventory and Item code to help make it easier, plus some code related to the menus involved with giving and swapping Items. Then testing to make sure I didn’t miss any edge cases and solving for the ones I discovered I had missed.

And of course, not introducing new problems, such as discovering that I accidentally made it possible to either completely lose the sandwiches or duplicate them. There should only be six total sandwiches in the game:

The Dungeon Under My House - duplicating sandwiches

But once I got it all working, I could hand out snacks to the Explorer’s Club, which finishes the Snack Quest (official quests aren’t in the game yet):

The Dungeon Under My House - snacks for everyone!

One thing I did discover is that handing out individual sandwiches to everybody was tedious. I need to eventually look into a “Divvy it up” command to split things up faster.

Otherwise, I fixed a number of defects, the trickiest of which was finding out why entering the dungeon the first time would show a black screen instead of the inside of the dungeon. I thought it was an order of operations problem in that the dungeon was rendering before lighting was calculated or something like that.

It turned out that the player’s position upon entering the dungeon was initializing to position (0, 0), so that’s what would be rendered. In the map, that position is out of bounds at the moment, so there is no lighting, no walls, nothing. So the dungeon renders, and then to be efficient, it won’t rerender until something changes.

But the problem was that right after the dungeon renders, my code sets the position properly to the location of the ladder leading back into the house, but it does so in a way that bypasses the “something has changed” logic.

The problem is that player’s the initial dungeon location depends on the dungeon being loaded to find that ladder’s location, which did, in fact, require changing the order of operations for loading a game so that the dungeon was loaded first, then the game’s variable data (such as the party’s dungeon position) is initialized, then if the game needs to overwrite that data from a save file, it does so.

Anyway, I’m glad that issue is fixed. It was annoying.

Thanks for reading!

Want to learn when I release The Dungeon Under My House, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Seeing Snacks on the Counter

Last time, I reported that I had finished the work of giving an item to another character and adding a trigger that produces an item in a furniture’s inventory in The Dungeon Under My House, my non-violent, first-person role-playing game and my second Freshly Squeezed Entertainment project.

I then wanted to make it possible to see such items when they are available.

Sprint 2024-29: Preview furniture in a location

Planned and complete:

  • Show item on counter on actual counter in kitchen

Unplanned and complete:

  • Defect: Crash when trying to add items to inventory after load

Unplanned and incomplete:

  • Allow player to give/take arbitrary number of multi-quantity item

A Furniture object can have an Inventory, and when it comes to things like drawers and fridges, it makes sense that you have to open them before you can see what’s available.

But after you give the Pickle Jar to your parents in the kitchen, they make snacks and put them on the counter.

And after this past week’s efforts, I’m happy to say that you can now see what’s on the counter without having to open up the Kitchen Counter furniture view.

The Dungeon Under My House - snacks visible on the counter

I created a FurniturePreview object, which renders on the screen whenever you are in a room with a Furniture object that has one associated with it.

While testing, I realized that I had some issues with persistence. First, I couldn’t figure out why the snacks weren’t appearing on the counter despite everything looking right, but debugging showed me that when I load the game from a save file, it wasn’t overwriting the default inventories but instead appending the saved ones after the default ones. So I addressed that issue.

But I also discovered that the snacks were disappearing once they were added to the counter if I immediately load the game afterwards. Basically, once an item gets added to a furniture, I needed to save the game. I decided to log the defect and address it after the work i was doing on multi-quantity items.

Before, moving items from one inventory slot to another was an all or nothing deal. It makes sense for single items like the Flashlight, but Snacks are quantified. So I added an interface to allow the player to choose a quantity.

The Dungeon Under My House - moving quantified items between inventory slots

The trick here is that I don’t have any real way to keep track of the transaction, so it comes to this interface, it is immediate. That is, if you decide to swap snacks with an inventory, the inventories update in real-time.

The interface for giving items to another character, however, is a bit different. Instead of immediately giving the item, it is a two-stage process.

First, you choose what you want to give. Then, you attempt to give the item, and if the other character has space in their inventory, they’ll accept it. Otherwise, the item stays in your inventory.

With non-quantified items, the item doesn’t actually leave the inventory of the party until after it is confirmed that the other character has room to receive it.

So I ended the week trying to figure out how to allow the player to choose to give an arbitrary number of a quantified item to another character in a way that is both intuitive for the player and isn’t ridiculous to code. Ultimately I decided to create a Give Item scratchpad inventory. That is, it is an inventory with the purpose of temporarily managing the giving of items.

Effectively, you are swapping immediately with this temporary inventory, then when the gift giving is confirmed, the other character receives it from the temporary inventory, but if the gift is rejected, then the party receives the temporary inventory back.

Of course, it is important to make sure it is returned to the correct character’s inventory slot, and now you can sorta see why game design can be challenging. B-)

Thanks for reading!

Want to learn when I release The Dungeon Under My House, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Giving Items

In last week’s report, I finished creating the pickle jar, sped up the perceived loading of the game, and started the work of enabling the player to give items to another character in The Dungeon Under My House, my non-violent, first-person role-playing game and my second Freshly Squeezed Entertainment project.

I continued working on the feature of giving items.

Sprint 2024-28: Giving Items

Planned and complete:

  • Give items to entity

Unplanned and complete:

  • Show quantities of items in inventory

Unplanned and incomplete:

  • Show item on counter on actual counter in kitchen

Last time, I was trying to figure out what giving an item should look like. That is, I had concerns about manipulating inventory contents and dealing with situations in which the inventories are too full.

Ultimately I decided to allow the player to select an item from the party’s HUD, then attempt to give the item to the other character.

The Dungeon Under My House - giving a jar of pickles

If the other character has room, then they accept it.

The Dungeon Under My House - accepting an item

Even if you ended up giving them nothing, but doing so is kind of rude.

The Dungeon Under My House - accepting nothing

If they don’t have room in their inventory, then no items change hands and they say they can’t take the item.

I will eventually need to add definite and indefinite articles to the scripting code sooner rather than later. These conversations sound too stilted and awkward.

Meanwhile, I also added a trigger to start a specific script when you give your parents the jar of pickles.

The Dungeon Under My House - triggered script after receiving particular item

I created a new kitchen counter Furniture object, which has room for one Item, and that scripted sequence adds snacks to the inventory of that Furniture.

The Dungeon Under My House - snacks

You can see that there are actually 6 snacks available. This is the first item that has a quantity associated with it.

Right now, you can only take all of them at once, but I want to work on allowing the player to choose to take only one if they want.

Specifically it would be great to hand out the sandwiches to each member of the Explorer’s Club, ultimately finishing the Snack Quest. And of course eventually I’ll make Quests a formal part of the game, too. B-)

The next thing I am working on is showing the snacks on the kitchen counter so you can tell an item is there to collect. I can see this same feature being applied to shelving and cabinets to allow the player to see what is available in some Furniture without having to open it first, if it makes sense for the contents to be visible.

Thanks for reading!

Want to learn when I release The Dungeon Under My House, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Faster Startup Times

Last time, I reported that I showed an indicator when a friend had something to say to you and started creating a new trigger criteria based on item acquisition for The Dungeon Under My House, my non-violent, first-person role-playing game and my second Freshly Squeezed Entertainment project.

I finished the item acquisition trigger work, then worked on improving startup times.

Sprint 2024-27: What to do with the pickles?

Planned and complete:

  • Trigger intro script when pickle jar acquired

Unplanned and complete:

  • Defect: Game startup takes too long

Unplanned and incomplete:

  • Give items to entity

I basically needed to draw a pickle jar and get it into the game, so I did so:

The Dungeon Under My House - obtaining the pickle jar

Next, I realized that starting up the game was needlessly slow. A lot of media assets getting loaded upfront means the game runs quickly when you finally get to it, but there was no reason to load everything if you didn’t need everything. Plus, I don’t remember what the load time should be on mobile devices, but I think you get dinged by the app store reviewers if the game doesn’t start up quickly.

And on the main menu, you need hardly anything at all. I wrote a few hundred lines of code and spent time trying to get the various parts coordinated to avoid crashes, which mainly involved not trying to draw the dungeon before the dungeon assets were loaded.

But now the main menu is almost immediately available. When you start a new game, only the media related to the house and the customizable characters are loaded.

And when you enter the dungeon the first time, the dungeon-related media is loaded.

The main tricky part was handling two scenarios: loading the game when the player is in the house, and loading the game when the player was in the dungeon. The latter required all of the art assets to be loaded at once.

Actually that is strictly not true. I could always load the house-related media the first time you return to the house if you loaded while in the dungeon. I might revisit this issue in the future.

But for now, the main thing I’ve accomplished is deferring media loading until needed. While the load time hasn’t changed, what has changed is perception. The game starts up and you are immediately on the main menu, ready to start, and even if the game begins loading when you actually start a new game from the main menu, by this point you as the player are invested enough to tolerate a bit of loading.

And of course once the media has been loaded, you don’t have to load it again for the rest of your play session.

Finally, by the end of the week, I was working on the ability to give an item to another entity, and I am reminded that game design is hard.

The Dungeon Under My House - now with a Give Item button

I have created a Give Item button by combining two images from https://game-icons.net/. I hope it reads well.

So I envisioned you would click on the middle button, which would open up something similar to the Furniture inventory screen to allow you to give an item to another character.

Currently inventory management only occurs with furniture, and the way it works is that the furniture inventory is centered, and the party’s inventory is at the bottom of the screen.

The Dungeon Under My House - furniture inventory interaction

Originally I thought I would let you select a party member’s item and say “Give” but then I have to worry about whether or not the receiver has open slots of inventory, how to respond, etc.

And then I thought, “What if the receiver’s inventory is on screen like the furniture inventory?” but then it would be possible to take things from the other person, right? That seems strange when you just said you were going to give something to them instead.

Also, what if they don’t want to give it away? Do things need to be “locked” so you can’t take but can give?

So I’ll figure it out this week and let you know next time what I decided.

Thanks for reading!

Want to learn when I release The Dungeon Under My House, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!

Categories
Game Design Game Development Geek / Technical

Freshly Squeezed Progress Report: Conversation Indicators

In my last report, I finished adding stamina to the characters you can have in your party and optimized in-dungeon rendering in The Dungeon Under My House, my non-violent, first-person role-playing game and my second Freshly Squeezed Entertainment project.

Sprints 2024-25 and 2024-26: Conversation topic indicators

Planned and complete:

  • Show indicator when Friend has something to say

Unplanned and incomplete:

  • Trigger intro script when pickle jar acquired

I’ve been trying to put myself into the mind of a brand new player figuring out how to play this game, which has helped me see ways to enhance the game in small yet impactful ways.

Before now, if you were to start playing the game, you would have a quick bit of scripted dialogue, and then it would dump you unceremoniously into the bedroom, and it would be up to you to figure out what to do.

And it didn’t sit well with me because I was asking too much of a hypothetical new player: knowing to click on a particular character on the screen as opposed to one of the other characters or to one of the more obvious button-looking buttons, then knowing to click on the Ask button, then knowing what topic to pick.

So I decided to provide some guidance in the form of an indicator that says, “This character has something to say to you!”

The Dungeon Under My House - intro conversation indicator

This iteration was still clunky, I realized. In real life, if you see someone who clearly has something to say to you, you wouldn’t say, “Hold on. First, let me ask you something” and hope you picked the topic they wanted to discuss.

So I streamlined it. If a character has something they want to say to you, they will launch into it immediately when you click on that character.

Now, after you hear that you should talk to Pat to start their induction ceremony into the Explorer’s Club, there’s a very obvious question: which one of the six characters on the screen is Pat?

By this point, you would likely notice that Francis should match the look of the character in the bottom party HUD, and you have met Sam who urgently needed to talk to you from the outset.

So how do you figure out who Pat is?

Well, one thing I did to help is provide a “What do you want to do with XYZ?” box when you click on a character to interact with them.

The Dungeon Under My House - what do you want to do with Pat?

Without it, you had to click once more on either the Ask or Tell button to get their name.

Now, I COULD make it so that immediately after talking to Sam you see Pat has a speech bubble over their head, but I think I like the idea that you have to essentially do some trial and error and get acclimated to who is who in the process.

Also while playtesting, I discovered that when you click on the shelves in the basement, it always plays the intro script that shows how the secret door appears. There was a simple way to address it, but it was a hack fixing a hack, so I ultimately decided to create a new type of trigger criteria.

When you acquire the jar of pickles off of the basement shelves, THEN the script would kick off.

The Dungeon Under My House - acquiring the jar of pickles

And once the script runs, it disables that trigger, so the script won’t run a second time. Whew!

Now, you might notice something: where are the pickles?

Well, the original drawing of the jar of pickles on the shelf was tiny, and I didn’t think it would work well for an actual item.

The Dungeon Under My House - low-res pickle jar

So I am currently applying my limited artistic talents to make something a bit better:

The Dungeon Under My House - hi-res pickle jar

And while I am sure I could have thrown this in, by the end of the week I was not able to dedicate the time to more game development, so you’ll just have to imagine that jar being in the animated GIF above, as I’m sure by the time you read this I will have that time to make it a reality.

Awkwardly, I keep finding myself wondering what to work on next, mainly because I have a lot of questions about the directions this project can go in. I simultaneously want to answer those questions, which I expect to look like a lot of thinking and writing, and I want to ensure that the project keeps moving forward in tangible ways, which looks a lot more like coding, drawing, and creating maps.

Which of course makes me want the time to do both.

Thanks for reading!

Want to learn when I release The Dungeon Under My House, or about future Freshly Squeezed games I am creating? Sign up for the GBGames Curiosities newsletter, and download the full color Player’s Guides to my existing and future games for free!