Push Global Game Jam game to playable status
superrodan GameDev DK30 New Year 2023 3 4
Description
I started a game called “The Roottrees are Dead” during the most recent global game jam. It is heavily inspired by Obra Dinn, so it is essentially one big puzzle. Instead of it being about solving murders, it’s about piecing together a very large family tree using context clues and by doing research on the most prominent members. The player starts with a list of names and leads, as well as a blank family tree. They must follow the leads, collect photos of the family members, and then place them on the tree in the right position with the correct names and occupations.
I have created a final update below that covers a portion of the time period from the end of the DK30 until the release of the game. It also includes a link to the game.
The original DK30 project covered this: I am slowly but surely making progress on it, but would definitely like to have a first playable version for testing by the end of the month. This means pushing the mechanics to my intended version (a lot of them are still hacky versions left over from it being a game jam game) and more importantly, testing and iterating the puzzle content of the game, since many leads take the player down different paths of the tree, and I need to make sure every required piece of the puzzle can be found somehow.
Recent Updates
This is my final update here. Just before the new season of DK30 began I released my game, The Roottrees are Dead. I’m going to use this post to summarize what changed between then and now (why it took so long), and also create a bit of a postmortem that gives you some insight into the outcome of all of my changes!
The biggest changes since 6 months ago (the last time I updated here) were in the overarching story of the game (the meta/presentation), and in the UI/UX of the game.
Story
The story of the game changed massively between then and now. Talking about a game’s story while avoiding spoilers tends to be difficult so I’ll keep this section somewhat brief and vague. My first version of the game was built entirely around solving individual mysteries. There was a wrapper to the whole thing, but it was not very well thought out.
Something the very first playtesters asked was “Why am I doing this?”. I was hoping “Because its a puzzle and fun to solve?” would be enough, but with the game taking about 8 or more hours to complete, it all felt quite daunting, with no real break or change in pacing. It was hard to stay motivated, and I didn’t have a great ending in mind other than “You did the thing!”
I spent a significant amount of time tuning and rewriting pieces of my story to change that. During this time I got pretty lucky! A lot of the smaller pieces were fitting together with just the tiniest bit of rewriting here and there to create new motivations. The hardest part in terms of actual programming was creating a framing device that interrupts the gameplay every once in a while in interesting ways that didn’t feel too repetitive, and reminds the player constantly of why they are playing.
UI/UX
All of the changes with the way the player interacts with the game came directly from a series of many playtests. The below section is pretty long and contains a spoiler-free deep dive into a specific feature in the game and its evolution. I could probably write as much about some others as well, this game has been an adventure. But the one listed here was definitely the most monumental change, and so to me it was sort of the “magic feature.”
Background
My story has a lot of moving parts, and sometimes the connections you make to solve the mysteries aren’t easy to see at first. Some of them are much easier the second time around, with new context. This made the game way too hard. People who completed it with hints all tended to agree that the core puzzles felt right once they knew what to focus on, but the fact that they needed an additional push to focus on those things from the developer was clearly a problem. So I decided to turn the “hints” into a feature.
The Problem
Imagine the player has a picture with two people on it. One of the people, who is clearly the focus of the picture (Let’s call them Sean), is an important part of the game. Finding them leads to completing a large section of the game. The other person is not the focus of the picture (Let’s call them Despy) and is an optional character that the player does not need to place to beat the game. But, because Despy and Sean are in the same picture, it’s clear they are connected. So the player places Sean and then, with a minimal amount of effort, Despy too. Everything seems great and the player moves on.
The problem comes later in the game, when now the player realized they never placed Sheriff. Let’s say the hypothetical puzzle solution is braindead simple. You simply search for Despy and doing so just says “Sheriff, Sean, and Despy are part of the notorious Cat Dad gang” So you know they’re linked. This extremely easy puzzle becomes nearly impossible, however, because Despy was “locked in” earlier. To the player, Despy is “done”, and they’d never find Sheriff.
Solution 1: Completion Mark
I had to find a way to tell people that things weren’t “done” being used. My first attempt to do this was to just mark things that the player had exhausted of usefulness. So… there would be no “it’s safe to ignore this” marker on the picture of Sean and Despy until Sheriff was also found. The mark looked like this (bottom right of the picture):
The problem with the mark became clear pretty quick: Too much evidence is connected to a lot of people. It took a long time before that marker ever appeared on anything, and people weren’t looking for it once it did, because it was pretty much never there the entire game until near the end anyways, and it wasn’t accompanied by any announcement.
Solution 2: Importance Ranking
My first instinct was to simply invert the marker so it would disappear once there was no more to find… but before I managed to do that, the next evolution came directly from a playtester’s suggestion. They said “Why don’t you, instead of a check mark, have a countdown of how many people are left connected to some evidence. If its higher than what I expect, clearly the evidence is still important. And if its a really high number I should definitely look at it.” To me, this was a revelation. I wish I had thought of it. I pivoted immediately, added it in, and did some more playtests.
The new system marked every piece of evidence with an “importance” value. This was the number of people a piece of evidence could help with. So the picture of Sean and Despy would start with 3, even though there are only two people in it. Once Sean and Despy were locked in, it would still show 1 (Sheriff).
It looked kind of like this:
Importance worked quite well… except for in one specific situation, in which it actually made the game way worse! Occasionally, some of my players weren’t finding large parts of the story because of this system. Imagine a player guessed where Sheriff went before they ever found the picture of Sean and Despy. The picture of Sean and Despy would say 2 (Because Sheriff was already found) and then 0 after Sean and Despy were placed.
Remember how they were all part of the Cat Dad gang? Maybe knowing the name of the gang is important. But because of this system, it would become impossible to find the name of the gang. The game was literally telling players that they found everything they needed to with the picture. Of course they’d never look at it again. (I would have had the same problem with the first implementation, but it just wasn’t good enough for me to ever get to the point where the problem became clear.)
Solution 3: Intuition
The current implementation of this system is much more nebulous to the player, but it works a lot better. Under the hood, the numbers now include not only the people associated with the evidence, but “discoveries” that the player can make with the evidence.
So, to go back to the Sheriff and Despy well one last time, imagine if searching for Despy leads to Sheriff and the Cat Dad Gang. The number on the picture would include 3 for the people in it, and extra numbers for the Cat Dad Gang and things associated with them as well.
What’s interesting is that if the player searches for the Cat Dad Gang and finds something, the number is transferred from the picture to the new discovery. So if a player thinks “Why does this picture still have 3 on it?”, the moment they search “Cat Dad Gang”, they find a wanted poster and all of a sudden the picture dropped from 3 to 0 and the Wanted Poster has a 2 on it instead.
This system does what it set out to do. Instead of outright telling the player “this is the number of people you can find”, I have reframed the number as their “intuition” as a detective (another playtester suggestion). Players see high numbers on evidence that they thought they already solved, even when they found all the people involved. When they return to it, they can still find more things, which leads to new numbers… and the numbers never lie.
“Regrets”
Calling this section regrets is a bit clickbaity. Every creative project has flaws or pieces here and there that could be improved. It’s a common saying that “Games are not released… they escape.” The biggest issue for me was always finding the balance in what to fix before I let it escape.
Balancing my Fears
There was a very real possibility I spent a ton of time and energy and invested in this game and then released it and then very few people would take the time to check it out. Any time I decided to make a change to the game I had to think “I’m releasing a free game that potentially only my friends are going to play, and half of them are already playtesting it. Is it worth my time to start over on X feature?”
The issues that I would have changed are nearly all symptoms of how this game started (as a game jam game) and how the core state machine and logic that runs all of it was created over a weekend and then added to over and over. There are a few major pieces of the game that are leftover from that version and would have taken way more effort than I would have liked to have spend if the game didn’t get traction. (The biggest of these are the “dropdowns” for names that the player must use to fill in the tree.)
Unexpected Problems
Worse than the problems I knew about but chose to live with, are the problems I couldn’t know about. I wouldn’t call them regrets really, because they’re not things I can personally fix as far as I’m aware. My game has a few unforseen bugs in it due to the fact that it’s being run in WebGL instead of as an exe. Some of them are pretty nasty.
For example, the game can be interfered with by adblockers for whatever reason, occasionally causing people to lose their save. Additionally, itchio made a change to their backend server on November 17 that caused everyone who started playing before the change to lose their save if they refreshed the page after. That one took a while to track down.
Any time you lose progress, it can be intensely frustrating, and I’ve been trying to help people affected by it find ways around it. I’ve had pretty good success doing so, but every time it happens it hurts me a little bit right in the soul. Still, there’s little I can do about it other than recommend people turn off their adblocker. (But that bug affects so few people that I don’t know if I should do that.)
Results and Reception
The game has been out for just over a month as of writing this. I started by marketing it myself via discords and reddit and other forums that I thought would have an ideal audience. One of the people I shared it with (a game developer who made an awesome puzzle game called Stuffo the Puzzle Bot you should really check out https://store.steampowered.com/app/1068460/Stuffo_the_Puzzle_Bot/) tweeted it out and tagged the “thinky games” organization. They retweeted it and added to their monthly newsletter. These two events helped begin the game’s momentum. Then, I got two more major bumps. First, when I was featured on a youtube channel called icely that plays puzzle games, and second, when a writer named William Hughes at the AVClub reviewed my game positively.
This is my current “views” chart as of December 10. The green sections are when I was shared somewhere mentioned above. Each created a significant increase in views of my itchio page.
Because of all of the outside sources that have been kind enough to help share my game, it has now WIDELY surpassed any possible expectation I could have had. If you asked me what would have made me happy before I launched, 1000 views/plays was my “dream scenario.” According to itchio, over 20k people have clicked the “play button”. (There is no way for me to know how many followed through)
The fact that its free definitely helped, but nearly all the feedback has been wonderfully kind, somehow even when people run into the horrible problems with the game I mentioned above. And the true magic for me, anyways, is that people who enjoy it have managed to share it to so many random places.
Once a day or two I google it to see where it has spread to, and I’ve been pleasantly surprised. Besides the newsletters and articles I’ve mentioned above, I’ve found results on foreign social media, on a rockpapershotgun article, on 4chan, in two different podcasts, and it was even featured on itchio’s youtube channel (where they choose a trending game and post a short playthrough video every day or so.) It has been completed by a few smaller streamers on twitch and youtube, and at one point a streamer played it to an audience of over 1k people as part of a segment where they check out demos.
The time and effort I spent on the story and interface have seemingly helped quite a lot. Generally, the majority of people who beat the game get all the way through the game without needing significant outside help other than the intuition system. And often times, the hints and pushes for the people who have trouble involves reminding them of intuition numbers. I’ve also had many compliments about how all of the story ties together with the search and ending. If either of those two pieces did not have as much time spent on them, I believe the game may have failed. But as it stands now, I’m humbled and honored by how much people have been enjoying it.
I had to show up and edit this today (December 21) because I learned that William Hughes from the AVClub REALLY liked my game. AvClub put my game on their top 20 games of the year list. I don’t know how to feel about that, other than amazed and flabbergasted. https://www.avclub.com/the-best-games-of-2023-1851110743/slides/17
If you’d like to play the game yourself, you can check it out here:
I’m about to go on vacation and since my last update I’ve added one new minor feature as well as a ton of bug fixes. I made those last two changes I talked about but after watching my playtesters struggle with one specific thing that I thought I had addressed, I’ve been thinking about new mechanics.
Outer Wilds’s “map” (I won’t spoil anything, just a nice polish thing they do) has something that tells you when you haven’t fully explored a place yet. It doesn’t tell you what you missed, just that there is something you missed. So that way, you could go somewhere, check it out, and then think you were done, but check the map and realize you need to go back and search for something else.
I believe I need to incorporate something similar with the evidence in my game, that marks off once you’ve found everything connected to a certain piece of evidence. The problem with implementing something like that is that there are a LOT of interconnected pieces, so I’m not sure how I’d go about doing it right. I have a weird feeling that everything will just constantly say you haven’t finished with it.
I will work on that when back from vacation.
I guess I’m in weekly update mode as opposed to daily update mode.
In the last week I expanded the note taking section to include much more functionality and polish. I also added something to serve as a reminder to the player that a certain resource is available to them after they find it once.
I also fixed an endless number of typos but there are also always more. Because I’m working in text windows in the inspector, I don’t get notification that I’ve made spelling errors or have extra spaces. So playtesters have been finding a LOT of that.
In addition to all of that, I got a working version of the mid-game cutscene in for now, reworked the ending a little bit, and did a ton of small polish stuff here and there. I also added a reminder of the cutscene for players that close the game and come back and don’t remember exactly what was said.
I have a small piece of functionality that involves solving a puzzle within the puzzle that I plan to tackle in the next week, and there’s one specific mechanic that I need to explain a little better. After tackling those two things, I think I’m done with everything that came out of my playtests.
The reviews so far are split right down the middle. One half of my playtesters absolutely seem to be knocking it out of the park and having a great time. They even wanted to play on their own without me prompting, and after about 3-3.5 hours are a bit more than halfway done.
The other set of playtesters didn’t get as into it and I don’t want to pressure them to play a game that’s not their style so I’m going to wait to see if they pick it up again on their own and if not, no harm done. I already got a lot of workable feedback from what they have done. I’m also trying to find a way to grab people quicker and I have some ideas.
Lastly, I started a bit of work on audio, but nothing concrete yet. That will be the final huge task to conquer when I get back from a vacation I plan to take in early May.
It’s been a week since I’ve made an update, but I have been toiling away and making progress. The ending is nearly complete, all of the images were finished tonight and just need to be added tomorrow. That’s about two hours of work to get working in a very satisfying way I’d say.
I have also added a note-taking section at the request of a playtester, and added a few new articles and re-worded some things to create a stronger conclusion. This was a few days of work but I’m happy with how it came out. You can now highlight text and copy it to your notes quite easily.
I still have yet to add the mid-game radio cutscene. I’m shuffling my feet a little bit because I don’t have a clear vision in my head of how I want to work.
The first draft of the entire ending is in and working. I haven’t tested if it can be triggered the “right” way, I’ve only done it the debug way. But it unlocked the special part of the chart, let me fill it in, took the information that I entered, reacted to it, played the cutscene and then gave me a thanks for playing screen.
In the meantime I also have saving working at much more regular intervals. Any time the player makes a change to the chart, the game should save. This means that now, it will be playable in WEBGL format. (It wasn’t before because the game used to only save when you closed the .exe which never happened in a web window)
The reason I did that, was because as part of the final flow I’d like the player to be able to fill in the last few optional bits of the chart if they’d like. So once they watch the ending they can restart the game, fill in anything they have outstanding, and finish it again to update their progress. To get that working, I needed to save the game partway through the cutscene so I figured I’d just get it all working as intended anyways.
While playing through the ending a few times, I have also discovered a few more hints I want to add to stick the landing. My biggest concern right now is that the ending won’t have any “significance”. There is one “special” section on the chart that’s more like what I would call a “sherlock holmes-ian” mystery. It requires putting information together in somewhat roundabout ways to complete.
The significance of that point is only talked about during the ending, however. I really need to sell halfway through the game a small shift in the player’s priority, so they know in advance what I’m going to ask them to do. I have a way to help with that but it will require some additional writing. And I’m not sure its enough to make the ending work as a “Wow that was cool” moment.
That said, I also feel like Obra Dinn had the same flow. I won’t spoil anything, but Obra Dinn was incredible and I highly enjoyed it, but to me anywyas, the “endgame” content didn’t have any huge significance to me compared to how locked off it was. It was more of an “explanation” for some missing info in the story and I think that’s similar to what I have. If I hadn’t seen it, I would have enjoyed the game just as much, even if it wouldn’t have felt as complete.
I hope that at the minimum, I can achieve that with my ending.
It’s been a long weekend for me. I had time off work for Easter and spent a lot of it working on the game.
I have the entire finale written, the flow planned, and began to implement the special cutscene it requires. I also rewrote a few key points in the story to support it a bit more.
I will need some new art, but as the art comes from one of my playtesters, I don’t want to spoil them by asking for it just yet. Speaking of playtesters, I have been testing with three different people, and receiving feedback. I addressed much of it in two different “on the fly” patches. I feel like the game is definitely better because of it.
Hopefully in the next few days the ending cutscene will be implemented entirely and I can test it myself a bunch.
I also have a mid-game “news report” to implement. I am not looking forward to that, the first one was a pain. Even though to the player, this is identical, I can’t exactly copy and paste the code easily, since the first one is part of a bigger class. (I did not have any idea I’d ever want a second one) Still, I’ll see what I can do.
Once those two major bits are in, I’ll send them to my playtesters for feedback and hopefully by then, the last thing to work on will be audio.
I will be pretty happy to release this game into the wild. It has been over two months since the Game Jam where I started it. Most of the time I finish implementing the core experience of my game jam games within a month after the jam being done. But this one has been a project that myself and other people are more excited about than previous games. I feel there is a risk to rushing the last bit, so I want to be sure its ready.
I didn’t mean to do much tonight but then I ended up working for about 3 hours worth on some of the stuff on my previous list.
I got the new interstitial working, as well as fixing the annoying bug.
I also started the key on the chart, but am going to test with some people before I add to it. I want to ask people what’s obvious and what isn’t.
Speaking of which, I sent the build to two new people for testing without me watching over their shoulder. Hopefully all goes well!
Tonight, after the successful stream show today I am taking the night off from writing any code, playing a lot of dota 2, and instead planning what the next week or two holds.
I have plans for the ending, but it will take some special preparation, including a spot on the chart that works unlike any other spot, as well as a dialogue section at the end.
So my entire task list seems to be:
- About halfway through the game, add a new “cutscene” used later to add some mystery/wonder.
- About two thirds of the way in, change the interstitial to require four correct names instead of five
- This is because the number of names is 49, and I would like the game to not have a weird number that causes problems. So, 3 will be done in the tutorial, then 10 more matches of 3 will lead to 33, and then for the final 16 names the player will have to get matches of four instead of three.
- Fix an annoying bug that allows the player to move the chart unexpectedly while trying to use the scroll wheel
- Create the special point on the chart and unlock it only at the correct time (after all the other names are finished)
- Create some kind of ending cutscene and congratulations/thanks for playing.
- Create a bit of a key on the chart that serves as a reminder of these things.
AAAAAAAAAH.
Yesterday I wrote “I think each of those things will be another 30 minutes of testing”.
I have now spent 3 hours tonight getting them working. There were a lot of bugs, and I had to rewrite part of the state machine for my tutorial and intro, but now its generally set.
The player can exit the game at any time. When they return, all of their chart entries have everything saved, this means names, portraits, and jobs. Additionally, if a chart point is already locked in as correct, it runs the logic to remove those pictures and names from the pool correctly to not cause weird duplication bugs. The game also now knows whether or not the player watched the opening cutscene (before the title screen), and if so, lets them skip straight to the title screen. It ALSO knows whether they completed the tutorial, and if so, gets right into the action after the title screen.
This time, and I really mean it this time, I think there’s only a half an hour left to get this stretch goal finished. I just need to copy and paste the code I wrote tonight and VERY carefully change it to apply to the array of optional elements on the chart instead of the array of required elements of the chart. Because the optional entries and required entries are essentially the same, but exist in different arrays, the code I wrote tonight should work with very minimal tweaking. We’ll see.
So far so good. Currently, names are saving, and once the player finishes the tutorial, they don’t ever have to watch the intro cutscene or see the tutorial text ever again.
Tomorrow I should be able to piggyback off of the names and add portraits and jobs, and lastly, which things are complete. I think each of those things will be another 30 minutes of testing, and then it’ll all be set.
Over the weekend I’ve started implementing save data. Currently, all the player’s unlocked and used evidence is being stored and loaded when the player starts. This was marked as a stretch goal for week 4, which I predictably didn’t get to, but writing these updates is kind of nice and allows me to think as I recap, so I decided to keep doing it.
I’ve never worked on a save/load system like this before (that writes to an external file), so I had to follow a tutorial pretty heavily, but now that the bones of it are done I can generally pass whatever info I want in, and its working pretty well.
The true test will be to store all of the changes the player has made on their chart, since that code is complicated, and what they set in one point technically affects all affects the other chart points. I have to create a loop that essentially goes through each chart point, sets it to what it needs to be, but as it does, to make sure to update the other chart points correctly before moving onto the next one.
I imagine it will take a few hours
I have started work on how I want the game to end. Originally, the plan was to just end it when you got all the names. I have decided to make one final name that’s the hardest of them all, and that the player needs to type it in. It will stay locked until every other name is also filled in. (Unlike the rest which they choose from dropdowns). I do not plan to change the build to accommodate this yet as I would prefer to have a few more people play it in its current state first. But, tonight I did a few extra hints towards the “final name”.
In the meantime, the puzzle is done. I feel it is ready to be tested with a few different people who have never seen it, so I would consider my original goal with this DK30 to be complete.
Next steps will definitely be to add saving and loading. As much as everything technically functions, my playtests these past few weeks have shown me that the game will take multiple hours to complete. It feels like a significant meaty amount of content. So asking people to play it in one sitting is unfair.
Oh my god I’m such a fool. Such a foolish fool!
To let you know why the game was crashing I must first tell you how the tutorial I followed told me to see if a dropdown value was changing. As I started the game, each object with a dropdown would have a function in its Start() to assign itself a listener that saw when it changed. That listener, for the rest of time, would call a function if the dropdown changed. Makes sense.
And now that you know what the tutorial told me to do, let me tell you what I actually did. I added a listener to the object, like I was supposed to… I just did it in my Update function rather than on Start. So, every frame forever, every chart point would assign itself an additional new listener. If the game ran at a steady 30FPS (Which I know it ran WAY faster than that at times) there would be at least 32 million listeners made by the time the game crashed about 3 hours in. I can’t believe it actually lasted as long as it did, actually.
Thanks to Unity’s debugging tools (which also crashed a lot while trying to debug this because by the time I felt the memory test would work it was already really bogged down) I managed to fix this… but not before tonight’s playtest.
On that note, I did a three hour playtest tonight, before the game crashed. It went well! I have been using one tester for the past few weeks, and tonight they got more than halfway through the game using the notes they’ve been taking (Last time they completed about a fifth).
My next playtest will need to be with someone new. Also, I have confirmed that also my entire puzzle is technically beatable. I just need to make the game have an ending when the player does it… I have one idea, but haven’t figured out how to make it feel as good as I want it to. I did accomplish my goal of getting the first playable entirely finished. I might try to throw an ending together tomorrow to really sell it, however.
I’ve hit a somewhat major snag. Last night I tested the entire game to make sure every possible person could be filled in and works, and the further I got filling in the chart, the more the game slowed down. I have no idea why, but there seems to be some kind of memory leak because windows was complaining a whole lot that Unity was using more and more memory as it went.
I am not a very good programmer, and I’m not even sure where to begin to diagnose what I’m doing wrong. I have a guess, and will start there.
It’s an entirely 2d UI based game, so I figure maybe it has something to do with all the special code to make the chart work. I wrote it during the jam and there were some really weird moments I ran into with the dropdown code and some recursive elements. Changing one dropdown trigger the dropdown change for all of the other dropdowns, which, even though I was doing in code, would “change” the dropdown which would trigger the dropdown change code for all the dropdowns, which would again trigger it for all of them, etc.
I thought I fixed all that in a very simple way but I feel like maybe I overlooked it a little somehow during the code that “locks” things and removes them from the dropdowns?
Anyways, this is somewhat discouraging because the game is so simple that unless its a recursion error like I mentioned before, I have no idea what could be so memory intensive and cause such massive slowdown.
In good news, I have the entire puzzle tested, and I believe it should be solvable. There is only one hint I want to make more clear, and I don’t have a good idea for it yet, but if the player searches for a very specific thing, it is find-able. I just need to hint towards that thing better.
Implemented all of the puzzle elements from yesterday’s notes… Also got caught up in adding some final photos and other pieces that felt like they would have fallen through the cracks otherwise (even though all of them are optional).
Tomorrow I need to finish going through the spreadsheet so I can do the last bit of puzzle tweaking on Wednesday before the playtest.
Two days worth of updates. Last night after doing a lot of miscellaneous little polish here and there, and adding in some additional pictures and other content I forgot to write an update here. I also fixed a lot of little bugs and one big one. The biggest one was that an optional name being marked as “correct” wasn’t removing it from the pool. Not sure how that happened without me noticing it before, but I fixed it pretty easily.
There is still one very annoying bug that has come up in all of the playtests, where scrolling through lists with the mouse wheel also activates the scroll functionality on the entire chart, which zooms it in and out. I want to fix it, but I still feel that the story takes precedence since the bug is more like a small inconvenience and finishing the puzzle is necessary for my final playtest before the end of the 30 days.
So, to continue working on the puzzle, tonight I didn’t even open the editor, but instead returned to tackling my spreadsheet and making some hardcore plans of where to fill in some pieces or make some clues more apparent. Every time I found a deficiency I took a note of how to fix it and marked the sheet. Nearly all of these will require just a few more words of context here or there.
For example, there were two people who the player knew were siblings and could even place on the chart by name AND fill in their job, but had no way to know which photos to use from a group shot. Those two siblings both have glasses in the group shot, which is something that I just needed to make sure to put into writing somewhere. Once I do that, they are “complete”.
Right now, at my stopping point tonight I’m halfway through the chart and found 8 deficiencies. All 8 I have plans to fix. Because the chart is in alphabetical order, most of the people I’ve been tackling are not blood relatives. (I haven’t reached the R section yet, where all of the Roottrees are). I actually think once I hit the Rs, may be less problems, since a lot of them are what I’ve been focusing most of my effort on.
We’ll see
Did some additional playtesting today. Added an entirely new set of hints that lead the player to better identify two optional people and one required person. I also have an additional required person that I want to connect to it, but I need to add a few more searchable terms to get that working tomorrow.
There are definitely some leaps of logic in the game, and I don’t know how much of that to tolerate. As an example, there’s a certain resource mentioned a few times in passing, and I’ve written the text almost so it seems like it is just “flavor text”, but it is mentioned a few times. If the player catches on and searches for it, they can find a lot of stuff. I am hoping the moment they think to do it once, it kind of unleashes an entirely new set of ways to identify new leads.
But… I need them to do it the first time and I don’t know how forceful to be with my suggestions to do so. That seems to be where the balance is going to come in for a lot of these hints. Enough that the player feels its their idea to do something, rather than being told directly to do it.
Anyways, tomorrow will be another day to figure out how to push this further.
Forgot to post an update last night, but like I mentioned before, I essentially continued cranking away at the overall mystery.
I have a large spreadsheet that I call the “method” spreadsheet that I’ve slowly been filling in, which is sort of a shorthand “here’s the path you need to take to find someone’s information.” There are a lot of small pieces missing but I’m adding them in one at a time.
Last night I also added dotted lines and made some small edits to the title screen and interstitial.
I am going to have someone try the game tonight, mostly with a focus on seeing what things they search for and find. This weekend is the last major weekend I have to work on this before the end of the month. I’ll try to have the whole mystery completely obtainable by Wednesday, which is the last time I’m going to test it before making some final changes. At some point I also have to make the game actually finish when you win. That sounds like a task for thursday and friday.
Tonight I polished up the chart like I intended. I also played through the game a bit and fixed a lot of small miscellaneous things here and there. I made some clues more apparent and even found a few new places to place clues.
Most of my updates for the next week are likely going to go exactly like this.
Tomorrow I do want to make some of the lines on my chart “dotted”, which is actually kinda hard the way its built. Because there are so few of them, I might just suck it up and do it the dumbest and slowest, but easiest way I can think of.
Last night I did a few hours of work in preparation for another playtest today. I ended up forgetting to post here until I was in bed so I figured I’d roll it into tonight’s update.
Then, today, I made a build and actually did a playtest for about an hour and a half with someone. During the playtest there were a few bugs that I was able to catch in real time and guide them around, but generally things went pretty well. I got to see the notes that the player was taking, and hear their thought process…
There were a few things they said that gave me good ideas for puzzle hints, and a few important hints they did NOT pick up on that I need to find a way to hammer a bit harder.
I scheduled another playtest for a week from now. In the meantime I have everything I planned to get into the game into the game somewhat, so now its a matter of filling in the gaps and fixing things that need to be clarified. There are also some polish features I purposely left until later, but it actually seems like I should get them done for next time since they would help with some questions that arose.
I’m feeling optimistic about finishing what I wanted to get done by the end of the month
Another night, another lack of significant progress. Last night I did a lot of busy work but didn’t chip away at the entire game as much as I hoped. Tonight I did even less,but it was because of a lack of time.
I had a few hours set aside to continue last night’s work, but then something came up on a different project that involves people other than myself and I spent 2 hours working on that.
Feeling the need to cross something off my list for this project before bed, I did re-work one piece of photo evidence, and made an “evolved” version of that same evidence that the player can stumble across if they do even more searching. I also thought pretty intently about how to link two specific pieces of evidences to the rest of the mystery. I think I figured both of them out.
I want to test again later this week, and at this point I’m somewhat resigned to the idea that the test will reveal major flaws. But its important that at the very least everything I’ve thought of to search so far can be searched. Breaking that down, the major pieces are:
- At least ten to fifteen more internet search keywords
- At leas sixteen other searches
- Reworking one thread to include references to the name of an in-game resource that hopefully the player searches for.
- Reworking a second thread to include references to add two new photos to the player’s collection organically.
Didn’t get as much done tonight as I had hoped. Spent all of it entering data, and as per usual, as I did I checked my facts against my own timeline and found some things I wanted to clarify or hint at.
Still, managed to pad out one of the threads the player can pull at. Any amount helps.
I spent a lot of time tonight getting the photo evidence that I’ve been recently adding to the game hooked up to the game mechanics. It’s super tedious because its built on tech I made for the game jam and I didn’t have a better way to think about doing it. But it meant that for every face in the game (I think I hooked about 30 of them up tonight) I would have to trial and error the hitbox’s size with x and y scale as well as its X and Y positions for clicking into position over the photo. That took something like 2 hours. I still have one more small section to go.
I also made a nice little header for my chart that not only makes it look more polished, but gives the player some basic information I’m not sure how they’d get otherwise.
After this the last bunch of content dumps involve the search engines. I think by mid next week all the content I know I needed up until this point will be in game and I can personally test all of the paths to see if I can fill in every piece of evidence.
I think I’ll have a 60 percent success rate, meaning 40 percent of the things the player needs will have no reasonable method to find. Then I will need to start focusing on what information is missing and how to get it to players.
Tonight I spent an hour and a half on additional photo evidence. I decided to present one piece of evidence a certain way, then scrapped it entirely and went a different direction which I think is more interesting.
Tomorrow I have some more to do. A lot of my updates will be very similar to this for the next week or so before I can test the game again. There’s content not in the game that needs to be, and until I think I’m done with this step its all about getting it in there.
While working in photoshop, I figured out how to get some other tricky evidence to the player… sort of. Essentially I know what I want them to discover and what the evidence IS, but need to find a way to tie it to the rest of the puzzle organically. I have an idea but it’s not solid yet.
If a lot of the above sounds cryptic, I apologize. If I go into too much detail, it sort of gives away how puzzle pieces work.
Tonight, I had wanted to spend some time on additional photo evidence, but instead I modified how some of the back end of the search results are stored. It’s an arrray, and before tonight, all of the array pieces in the inspector were just showing numbers “Entry 0, Entry 1”, etc.
So I added a name field that isn’t used in the game, but just for inspector purposes and spent some time organizing and doing data entry.
Whenever I add anything to the game from my notes I always find myself inventing two or three other things that would come up organically if this was a real family of these people. I also rewrite things to try to create a cohesive timeline. I find it fun to do so much worldbuilding, but its also a TON of writing that I’m not sure helps me in the end.
Adding in some dead ends to certain aspects of the story is great, but too many of them might get frustrating. I’ll have to try to be more careful about that.
I did work on the beginnings of the story this evening after testing the tutorial with someone who had never seen the game before. They uncovered a few bugs in how my search was working… as well as some bugs in my logic for how people would react to certain clues and come to certain conclusions.
I quickly fixed a lot of those issues (mostly by removing red herrings I didn’t know were red herrings and pointing more directly to the first few clues) and then tested it with someone else. They managed to complete the tutorial much closer to how I expected, but they also did have some idea of how things were supposed to work, so they may have had a small advantage.
Over the next few days I plan to essentially do a lot of data entry. My game’s puzzle exists partially in a spreadsheet, partially on a miro board, partially in a notepad file where I write down any ideas I have during off-hours, and partially in my head when it comes to ideas I’ve forgotten to write down.
All of these things need to be cobbled together and added to the content the player can discover in-game. This will be time consuming, and as I go I will undoubtedly find new connections and ways to uncover some of the things I have not already. For example, I have already changed two characters names in the last two days to create what I hope will be a more interesting moment of discovery, made a few characters more explicitly easy to find so that the player has a few more easy moments of progress amongst the difficult ones, and thought of a new way to unveil some art that will solve a problem I’ve been toiling over in the back of my head. (I need to make some new art to get that one to work)
I am slightly worried the player will become overwhelmed in one of a few ways. Some of my clue paths lead to a lot of info at once. In my defense, this is ALSO how I felt while playing Obra Dinn. There were definitely a few sequences in Obra Dinn where it would send me from scene to scene to scene without much of a recovery time in my mental state between. My game has the added benefit/detriment of letting the player make their own path through the evidence. So while there are likely a lot of leads at any point the player can explore, unlike in Obra Dinn they can choose to exhaust one full line of investigation before moving onto the next at their own pace.
The other way the game will be overwhelming is the sheer number of entry points on the chart when the player first exits the tutorial. I contemplated trying to break the game down in a natural way past the tutorial to create “chapters”, where the chart doesn’t unveil all at once, but I’m not sure I have the necessary time or drive to find a way to make it feel like an organic break where the player isn’t searching for a bunch of stuff they can’t use until later.
Just getting the entire puzzle to work with clues that form a satisfying path and allow the player to have a-ha moments will take a large amount of effort, and I want players that discover something to be able to put it into use immediately if they think they know how.
I look forward to my next test with real players, though it will have to be after I spend time getting the content ready. Maybe by the end of the week.
Tonight I finished the pieces of the tutorial that I mentioned yesterday (not including the optional polish)
I also tested the potential bug and it wasn’t a problem. Like I thought might happen, the unlocks happened but were hidden, so the player would get them later.
I’ve added in a few of the search results necessary for the tutorial to work. I’m trying to be careful about what terms lead to what information, to avoid overwhelming the player, and to add a bunch of contingencies for the first few search terms to guarantee the player finds what I want them to very easily.
I will need to test this with real people soon to be sure.
I essentially finished the first pass of the tutorial tonight. There are a few tiny things I need to fix (which should take me less than an hour to handle all of them) and some polish I could add, (but probably won’t before testing it.)
What’s next up is for me to add in one additional helper that explains how to uncover new photos to put on the chart. I didn’t do it tonight because I haven’t decided where to put it yet. I’m considering just making it part of the UI permanently instead of a tutorial helper.
Before I can truly test the tutorial on people, I need to move partially into week 3 goals, at least a little. Mostly because if I want to test the first puzzles in the game (which solving ends the tutorial) the solutions need to exist… which they currently do not, except on paper.
I also just realized while typing this that I may have created a bug with the tutorial. I will need to test it tomorrow: I have purposely locked out some elements of the game until the tutorial is over. To be more specific, the game has multiple types of evidence, and some types of evidence are completely hidden until after the tutorial is complete… but all evidence is unlocked by searching for things online.
So, as part of the tutorial I need the player to be able to search for anything, so I need to think about what happens if the player searches for something that unlocks evidence before its possible to view that evidence.
I doubt this is actually a problem I have to worry too much about, because this should never happen naturally (but never underestimate people’s ability to do something unnatural on purpose or even accidentally). Second, I believe the game should handle that organically already (because the evidence isn’t completely OFF, its just hidden.) SO hopefully if they unlock new evidence, it will be waiting for them once the tutorial is over.
Still, I didn’t think of this issue with the tutorial until just now, so there will likely be other edge cases I need to consider as well.
I’m quite happy with the opening of the game now, and how its all shaping up. I can’t wait to show it off to friends.
Tonight I made a significant amount of progress, since I had essentially four or five hours to work. I finished the polish I wanted to get done yesterday, then began work on concepting out and implementing the section where you get told what to do.
I did end up going with a text bubble system but also ended up spending a lot more effort on the art than I expected I would, because I was worried if I didn’t it would come across as confusing, cheap, or boring. Or all three.
Now, when you press play in the game, it walks you through the opening narration, then title screen, then the “intro”, and it finally takes you to gameplay. I even managed to lock some of the gameplay that’s not part of the tutorial.
Next step is to lock the rest of the gameplay, and to create a small tutorial overlay that guides the player through what they are seeing. This will only exist for the first three solves, then disappear. The four main rules in it are the following:
- Fill in the names, pictures, and occupations, of the three Roottree sisters.
- Siblings join the family tree left to right, from oldest to youngest.
- You can view all the evidence in your posession in the top right corner.
- You can use the internet from the bottom left corner.
I THINK with just those four instructions, plus maybe one tiny one I need to add when they get to a different screen, people should very easily be able to navigate the game. And because the first three solves are intentionally very easy, but do require you to use multiple mechanics, hopefully its enough to get them started without any additional tutorials for the entire rest of the game.
Solving the first three names will bring up the interstitial I worked on last week, and after that I also do need to reveal of the full scope of the chart. This will likely re-use the tech I made for the intro, bookending the tutorial with some mild story.
I would estimate I’m about two thirds done with week 2, but the last third might be more work than I expect. We’ll see!
Tonight I had less time than I usually do (like I mentioned earlier in the week) but I did still manage to get some significant work in. The opening cutscene now fades the images I created in and out one at a time with the timing that I want, and accompanied by the voiceover and subtitles, I think it works as well as I can expect to create a moody intro on a budget.
It’s nothing award winning, but it essentially turned out how I pictured which is always nice. The one additional polish thing I need to do with this section is create one last image. There is a section during the narration where it stays on one image a bit too long, and that shouldn’t bee to hard to remedy with how I built it. It’s not a huge deal, but it will always bug me forever if I don’t fix it.
The opening narration give you backstory on the world you’re living in, and the significant event that starts the whole process, then displays the game’s title. That takes about 35 seconds.
Up next is getting the “here’s why you’re involved and what you have to do about it” section done. It’s essentially a “knock at your door” followed by three lines of text that I want to present in a quick, non boring way, before getting right into the gameplay.
I didn’t plan to add a voiceover for the three lines, because I don’t want to force players to listen to any more dialogue after the intro, but at the same time I don’t have a great idea in mind for how to present it. I’ll work on that tomorrow. My best idea is short speech bubbles the player can dismiss one at a time.
Forgot to update this last night, but I did make some progress. I worked on the still images necessary to get the opening cutscene to look nice. It’s not anything mindblowing, but there will be an opening narration with a focus on subtitles accompanied by a blurry image of a reporter on TV in the background. Putting those images together in a way I was happy with took me a few hours.
I also created a very basic slideshow player script that will handle showing these images in order with a very slight zoom over time.
After implementing it, I realized I definitely need at least one more image to fill out the “report”, there is too long of a gap during one section, so I will work on that tonight as well as getting the subtitles to work.
Not much progress tonight. Unfortunately I have something like 8 hours less time this week than last week, so whatever time I have I have to spend wisely.
I did manage to record a temporary voiceover that will serve for my timing for the opening, but that’s not really a significant amount of work.
I got a lot of little things done tonight. I added a bit more polish to the interstitial, including getting the percentage to work. I fixed some bugs with the chart, where you were able to change names in some cases after they were already locked in. I also added an additional visual component to locked names to make it easier to tell they were locked. Lastly, I fixed some visual bugs with the evidence viewer that have been driving me crazy so that it would properly display sprites with different ratios. For ease of use I’ve been keeping all of my images the same size, but with one or two exceptions, so I can now handle those exceptions on an individual basis.
At this point, all the major features are done with the exception of the tutorial, which I have slated for week 2. I did not accomplish my week 1 goal of “all currently known photo asset contents” in the game, but I did create them all in photoshop (as far as I know). Additional evidence creation and adding will most definitely come with week 3 and 4’s work. I’ve been putting it off because for the photos I do NOT yet have in the game, I wanted to think more about how the player finds the things in question.
I think I’m going to hold off on that and move directly to the week 2 goal of getting my “story” and intro and one time tutorials in place. Mostly because I want to have people test the first two minutes or so of the game to make sure nothing is missing, and I don’t need to change any major functionality.
Alright, so last night I didn’t get anything done, but tonight I was able to pick up where I left off with the interstitial.
I managed to get the screen mostly hooked up and working (triggering when it was supposed to) within about 30 minutes, and like I expected, there were some bugs. Generally, the three main portraits worked great. The timing was way off, but that was a super quick fix just changing some numbers around.
The hard to solve problem came from all of the extra portraits and names. When I tried to get them to display in the screen, nothing seemed to work. It was like the game wasn’t passing info in at all, it was basically telling me that none of my names were correct even though I knew they were.
After some debugging I realized it wasn’t a problem with the screen itself, but the fact that in my inspector I never told the dropdowns for the bonus names what names to expect. as correct… so all of my checks were checking against empty data.
Once I got that fixed, it still wasn’t working, and I had to do some additional debugging. Now it was passing along data, but the data still never matched what I expected. The dropdown would be set to a name like “Tommy Sheridan” and then the check would say it was sending along “Penelope Tessa-Greene”.
For some background, every section in my game where you can enter a name is a dropdown list. The way unity handles dropdown lists, each individual list has its own pool of options and an index saying which option is selected. This game has something like 100 dropdown lists that, to keep data management reasonable, all pull their options from a central pool. That way, when you change one dropdown list, it updates the central pool and then all of the others understand what to do and how to react.
It took me a while to track this down, but it turned out to be a bug in the order I was doing things in. Behind the scenes, my game logic was detecting the names in the dropdowns were correct, then removing them from that central pool (so the player couldn’t choose them again later, since they were “locked”). This would update every single dropdown to no longer include the name in question.
Only then was it was trying to send along what names were currently in the dropdowns… but this was after they had already been removed from the dropdown. So behind the scenes it was essentially saying “hey, in this dropdown send the name in index 24”, which was now not the right name (because what was there had been deleted). That’s why when I was trying to send Tommy Sheridan it was instead sending Penelope Tessa-Greene, because the names were alphabetical by last name, and that was the next one in the list
I had already solved this bug a long time ago with my main dropdowns, but it never got extended to these secondary name dropdowns since they have their own special logic. So once I copied and pasted that code over, it all worked.
Now, the interstitial screen is 90% of the way there. It looks nice, has a relatively finalized timing presentation, but its missing one piece of data that I want to include: The player’s overall progress towards game completion. That should be pretty easy to include, but I have yet to do that calculation anywhere yet so I’ll need to write some new code tomorrow.
I added some visual language to my new “Extra photos” that matches the other photos in the game. Now, when they are locked, they appear locked. I need to do the same with the extra names, but I decided to save that for another time.
I also began working on my interstitial that pops up whenever the player makes progress. Just like in Obra Dinn it tells the player what three things have been marked correct. I’m about halfway done with that. The skeleton of the entire screen is built, as well as the visuals.
I have a mini state machine set up to populate the info on the screen, then reveal those things one at a time in a satisfying manner. All of that is theoretically working, but the timing is very likely off and there are very likely bugs here and there because right now I’m working in code only. I haven’t actually watched the popup in action yet.
I could watch it with fake data, but I figured I might as well wait, get it working tomorrow, and test it with the actual data it should be using. It’s a bit tricky because while the interstitial always comes up after three main things are correct, I also have the “extra” photos I talked about in yesterday’s update, and I want it to inform the player those are locked as well.
I have decided that since technically the list could contain anywhere from 1 to 9 or so extra photos, as well as dozens of names (this is unlikely, but possible if the player decides to fill in a bunch of side names all at once for some reason), I will always show the main three things front and center in a consistent way, and then cycle through the other unlocks quickly afterwards. By cycling through the names/pictures one at a time in quick succession I don’t have to bother trying to create a list that can show as many or as few elements as I need. Hopefully, this will also re-emphasize that the extra unlocks are not actually necessary, since they should feel more like bonuses.
Next up (likely tomorrow evening) I will integrate this new interstitial into my main state machine. Currently, when the main state machine detects three things are correct, it locks those three things. But now, with the addition of this interstitial, it will need to not immediately lock them, but instead collect the info from the chart (what pictures, names, and jobs the people have) and send that info to the interstitial. Only once the interstitial plays and blocks the screen will I actually want to lock them.
I imagine it will take minimal effort to take the two halves of the code I’ve written and send the right sprites and strings to it from my main state machine, and a bit more effort to hook up all my gameobjects in the inspector so that the right things are turning on and off at the right time, but then an hour or more to playtest it a few times to watch the timing, and to throw a bunch of extra data at it in a variety of combinations and situations. I’m sure to have missed something.
If the first time I run it, the information all populates correctly and doesn’t break, I’ll be very surprised because it means that I missed nothing and thought of everything, which… doesn’t usually happen.
My game is about placing names and photos onto a complicated family tree correctly, and as you do, the names and photos disappear from your inventory and “Lock” into the tree. This is similar to Obra Dinn, but instead of identifying people on a boat you’re identifying relatives of someone who has recently died.
One thing that has been bugging me is that the player will occasionally collect more than one picture of the same person. This is essentially required for the picture collecting mechanics to remain consistent (otherwise sometimes you click on a face and it works and sometimes you click on a face and it does nothing).
What I originally intended and thought would be most fun, was that the most recent picture of the person in question would be the only acceptable answer. I chose most recent specifically because with the way the story is shaping up, the most recent picture is sometimes more difficult to find than the famous “historical” ones.
Unfortunately, even though that might make the puzzle the most interesting, I think that is too complicated and arbitrary. A player who has the right person on the chart, but has not found the “most recent” photo of that person might think they have the person entirely wrong if the chart is not “locking”, especially if they have no idea that there is a more recent photo available.
Another thing to consider is that one element of the game is that the more of the chart you fill in, the less photos you should have in your inventory. This allows process of elimination closer to the end of the game. If there are a bunch of redundant extra photos of the same people at different ages in the inventory left over at the end of the game, that kind of sucks. Everything the player collects should have a place that it belongs.
So what I’ve done to clean up this system is to add some “extra portrait” slots that only appear when someone on the chart is considered fully correct. So for example, if I have completely filled out the info for three family members, but one of them has three possible pictures hidden throughout the game, this would unlock two much smaller, clearly secondary slots for that family member. These are optional slots that the player does not need to fill in to finish the game, but can use to clean up their inventory by removing redundant pictures. I’ve been meaning to implement this for a while, but have been putting it off because it raised an additional question:
If the player fills in these extra picture slots correctly, how do we know when to actually remove the pictures from their inventory? Even though the slot they are adding them to appears “complete” I don’t want to do it immediately, because then the player is incentivized to cycle all of their current pictures through their extra slots one at a time until they get something right. I don’t want a feature where the most obvious way to interact with it is trial and error.
Today I think I finally decided on how I’m going to handle the answer. Whenever the player makes progress through the game by filling in three slots on the chart, I will then assess every single “extra” slot on the chart. These will be listed as “bonus locks” and remove the pictures from the inventory.
Stumbling across this idea also helped me to solve an additional VERY similar issue I’ve been having. Just like portraits, there are a lot of extra names in the game (of non blood relatives, like people who married into the family). These names are able to be filled in on the chart but don’t count towards progress. SO… I’ll treat them the same way. During the “bonus locks” phase whenever the player makes progress, I will lock extra names and extra photographs. This means that by the end of the game, all names and pictures CAN fit into the chart in a way that removes them from your inventory. I really like how clean this ends up by the end.
I made this technically functional tonight (the bonus phase detects what else to lock and locks it), but it still needs basic polish. There is nothing on the chart marking that these extra portraits as correct, so the player has no feedback.
I will work on that tomorrow.
Tonight I set it up so that when you add a photo to your inventory from a different source, that different source marks the photo having been collected. This will come in handy, when players look through their photos they will now know at a glance what they have and haven’t collected.
I also worked on two and a half pieces of photo content. All photo content is generated via Midjourney and then heavily edited. Although I probably won’t post too many images here in the future, since they essentially are spoilers, I was happy with how this one turned out:
Estimated Timeframe
Mar 1st - Mar 31st
Week 1 Goal
Additional iteration to the mechanics and polish of the current mechanics to push them to intended quality. All currently known photo asset contents in the game.
Mechanics Necessary
- Photos should be marked when added to the inventory
- When three correct answers are received, add an interstitial
Week 2 Goal
First time user experience and tutorial elements implemented.
Mechanics Necessary:
- Opening “cutscene” text and blocking of content
- One time tutorial overlays for the first few minutes
Week 3 Goal
Internal bug testing and puzzle playtesting build for self testing. Iteration on the main puzzle based on said playtesting
Tests Determine:
- Where the holes are in the ability to finish filling out the chart completely
Week 4 Goal
Filling in additional storytelling and writing content to patch holes in the puzzle. (A continuation of the last week, I imagine it will take a while to finish)
If by some miracle I have additional time:
- Sound and Music
- Save State