Joshua Bossie

The driftwood will remind him about eternity

  • Restoring a Village, Weeks 3 & 4

    Hello Villagers!

    You’ll likely notice that I missed last week. But can you guess why? I don’t think you can, because it is one of the most unlikeliest things to happen.

    Yeah. My entire house got COVID… again. 

    Again! It hadn’t even been a full month yet! Is that even allowed?

    Well, as much as I hate to do this, I am forced to once again make the hard decision to…

    …announce a release date!!

    Did I fool you? That’s right, baby! No more delays, no more tales of woe, no more excuses.

    I am beyond thrilled to announce that the oft-discussed but much delayed v1.1 finally has a release date: Monday, October 30th!

    So yes, COVID sucks, but this time around I was able to huddle with my blanket and mug of TheraFlu and just cranked through my to-do list day by day. It was like one of those perks from Fallout where your stats increase if you’re sick with radiation poisoning.

    Now the Big Board sitting around 90% complete, so I’m giving myself a 10(ish) day buffer to finish that last 10% and test the heck out of it. No launch disasters this time!

    I didn’t want to announce anything until I was absolutely, positively confident. And, well, I am confident. Finally.

    Look for a trailer next weekend and a weeklong sale to celebrate. I’m planning on one last weekly update prior to the 30th to outline what additions and changes you can expect.

    And I’ll try my best not to go for the COVID hat trick. But no promises.

  • Restoring a Village, Week 2

    tl;dr

    Not even COVID can stop this train, though it gave a good run for it.

    The best part of this week – beyond being able to implement missing Kickstarter backer rewards – was the creation of The Big Board, which will track our progress towards v1.1. We are still on schedule for an October release.

    Previous Restoring a Village: Week 0, Week 1

    The Good

    Creation of The Big Board

    By far the biggest accomplishment was creating The Big Board.

    Every single task I have left to do on v1.1 is listed, categorized, and now tracked via The Big Board. When the bottom line reaches the left side we’re ready for release. Not all tasks are weighted equally (for example, art and writing issues are generally much easier than code / testing tasks, etc.), but it’s good as a rough guide.

    Code Refactor refers to slower and more measured manual code migration from the corrupted source. Features include testing / implementing / reimplementing features of the game.

    Feedback and Bugs are similar to each other. Both have been reported by players and testers in the last year, but the latter are defects, while the former represent suggestions or ideas to improve the game.

    Finally we have Art / Graphics / UI and Dialogue / Writing. They are probably self explanatory.

    Kickstarter Rewards Implemented

    All the missing Kickstarter rewards have been implemented into the game. About 30% in total were missing, which is too many though thankfully less than I feared.

    There are a number of backers who never got back to me, or perhaps their responses were eaten up by KS’s survey tool or email. In any case, as far as I’m concerned there’s no time limit. If you never sent me anything, or if you did but it’s still not in the game as of v1.1, then please reach out and I’ll get you sorted.

    The Bad

    First Day Blues

    I discovered a number of crashes that could arise on your first and second day in the village. The reason has to do with the scheduler: villager schedules are purposefully simplified so nothing goofy happens while you’re trying to meet everyone.

    But the scheduler wasn’t playing nice with everyone, especially visitors, which could result in a seemingly random crash depending on the time of day and the visitor who was trying to barge in. Thankfully it’s fixed now, but what a mess that was.

    Technical Slog 2: Electric Slogaloo

    The technical slog continued through this week and I’m ready for it to end.

    The Weird

    Terrible Night for a Curse

    Sometime last year I was joking with some friends and family that Village Monsters was cursed. Seemed like whenever I began to work on the game in earnest, something bad would happen in the real world to yank me away from it.

    Last week I made the formal announcement on Kickstarter and Steam that development has resumed, and what happens? Myself and nearly everyone I know gets COVID. The curse is nothing if not consistent!

    Thankfully everyone is fine. For the two kids it was just a bad cold, and for me it was an issue of extreme joint paint, a sore throat, and a killer headache.

    The weirdest part is that getting COVID in 2023 feels very… othering. Absolutely nobody wants to deal with COVID anymore, and that includes doctors and nurses who seemed generally annoyed about answering questions.

    But I suppose that’s a subject for another time.

  • Restoring a Village, Week 1

    tl;dr

    Everything is still on schedule for an October release for v1.1, aka the reboot, the restoration, the redo. Still gotta nail that name.

    This past week has been mostly a technical slog as I get back in the saddle. It’s necessary but slow going work.

    Previous Restoring a Village: Week 0

    The Good

    Flyswatting, aka fixing the small (but annoying) things
    First thing I did was update GameMaker and look at all the errors, warnings and “suggestions” it made to me. There were… a lot.

    Most of these are false positives or can be ignored, but going through them and fixing them was a really useful way to get back in the swing of things. The code base is now much more robust and should be less prone to breaking as I continue to bring it up to release condition.

    Music and sound compression
    One of the “small” bugs ended up turning into a bigger but worthwhile fix: many sound files (including music) were being incorrectly converted into a different format and then back again. This resulted in both crunchier sounds and audio bugs. It’s fixed now!

    The Bad

    Slow Going
    I had hoped this part would go faster. I know that it’s all so necessary and important to dig my way out of my self-inflicted hole. But I had hoped to be able to show off more things, while 80% of the screenshots I took this week are all of code or bugs. Blech.

    Missing Kickstarter Rewards
    While auditing something unrelated, I noticed that one of the Kickstarter backer messages wasn’t where I knew it should be. I went and checked and found that many of them are in fact missing.

    I added almost all the KS backer rewards during a two week stretch in early 2022. Most were just text appends and I hadn’t noticed their absence among all the other missing or corrupted files.

    This is a huge oversight and was not intentional. I’ll need to re-add these items by hand and it is a priority to fix in this next week.

    The Weird

    The Curse… is real?
    My wife and I have joked (well, “joked”) that Village Monsters is cursed somehow, as every time I go to work on it again something bad happens to pull me away from it. That hadn’t happened yet… until yesterday.

    I had planned on posting this yesterday, Sunday, but had to delay it because one of my kids is sick. Turns out he has COVID and an ear infection. The Curse strikes again.

    Thankfully he should be fine, as he’s vaccinated and loves the pink antibacterial meds – it’s probably a net positive for him. But I mention it so that we can plot another datapoint for proving the Curse is real.

    When bad weather crashes the title screen.
    Depending on the (in-game) season the weather on the title screen changes. However, some update or other changed how particle systems work when destroyed, and the punchline is this: bad weather could crash the game before it even started. That’s fixed now.

  • Restoring a Village, Week 0

    I’ve been putting off writing this post for far too long. That probably goes without saying, eh?

    So let’s jump right to the good news: active development has resumed on Village Monsters! The fabled v1.1 will release this October. Yes, that’s next month.

    More details, a new trailer, and a firm release date will follow soon.

    If that’s all you’re interested in knowing then you’re good to go! But for the sake of accountability I wanted to explain myself. I owe you all that much. Keep on reading to understand what’s been going on.

    (Note: This post contains no new info on VM itself, no new screenshots, etc. I thought that’d muddy the waters too much.)

    tl;dr

    Over the last year I’ve had the worst luck imaginable in my personal life. Eventually, I was forced to focus on my family’s health over working on projects until I got my head above water.

    It Rains

    I’ve mentioned a lot of this stuff previously – here, on Twitter, via emails and DMs – but it’s been long enough that I felt I should put it all down on paper from the beginning. Let’s revisit March 2022 and the disastrous release that was v1.0.

    It all began, unbeknownst to me at the time, with a bug in my version control software introduced months before release. Version control let’s you maintain and organize the huge amount of code changes you make to a project; I use git and SourceTree. It’s very important even for solo devs.

    I did not discover this bug until the day before release when I created the final “build” of v1.0, which basically means creating the files that let’s you play the game. Instead of taking 10-15 minutes and spitting out the necessary files, GameMaker instead ran for hours and then silently failed and froze my entire computer. Not good.

    The nasty part was that Git said everything looked good, and GameMaker showed no errors, not even when the build process failed. The only clue pointing at my source control was that my directories were full of junk files that coincided with times I’d push / pull from my remote git repository. It seemed that GameMaker was “choking” on these junk files when it came time to build the game.

    Of course I had backups – local and online – and went through them slowly to find a “good” copy of the game that’d build successfully. I did find one… but it was many months old. I had been crunching for weeks on v1.0, and all that work was lost. I’d have to do it all over again.

    I should have done the rational thing and delayed the release so I could fully examine and fix the problem programmatically. I’m not an expert on git or source control in general, so the problem may have had a simple solution if I had time to dig at it.

    Instead I panicked and attempted to fix everything by hand using the old backup from my laptop and manual “cherry picks” from git. I pulled multiple all-nighters and worked 16 hour days in an attempt to release and fix the game simultaneously.

    This was a very silly idea and made a bad situation much worse. Now my codebase – which was already a delicate house of cards – was full of errors, half-fixes, copy / paste mistakes, hardcoded data, etc. etc. A total mess, and even months later the game was still broken regardless of how many patches I shoved out there.

    I had the plan for a v1.1, a reboot of sorts to get everything back on track. I just needed a good chunk of time to work on it. Instead, I got much less.

    It Pours

    Separate to all this, my family was dealing with its own (unrelated) major stresses and problems. These had been building up prior to the release, and had resulted in some major shifts in my life and schedule to accommodate.

    But the situation became untenable after the difficult birth (and even harder infancy) of my son in the summer of 2022. This was unfortunately around the time I was first designing v1.1 and planning what a “redo” release might look like.

    Suddenly I was put into a position where I had to choose between family and work. I put it off as long as I could and tried to juggle between the two priorities in my life. But turns out I stink at juggling, and I was dropping things more than I was catching them.

    I ultimately throttled back my work to the barest minimum so I could focus on my family. I figured a break of a month or two would let me stabilize my own life so I’d be able to focus on stabilizing VM.

    Of course it didn’t work like that. The problems somehow kept adding on, some urgent and very scary, others minor but extremely tedious, and Village Monsters became more and more distant down my priority list. I never fully stopped working, but I wasn’t putting in enough time to get a release out.

    Now What?

    It has been a very, very long year. But things are better now.

    I’m now 3000 miles away from where I was this time last year. I’m on my same desktop, using my same keyboard and monitor, but everything else is different.

    We’re in the process of moving closer to our relatives – turns out you really miss being around your safety net when crap hits the fan. However, this means means going back from Seattle to New England. It’s an ongoing process, but we have a good (albeit temporary) setup now where I can work.

    It feels good to work on VM again, though it’s a bit like waking up from a deep sleep after throwing a very irresponsible party. I vaguely recognize the comfortable shapes of my house under all the trash and broken furniture, but putting it back together won’t be easy.

    But it’s doable, and I left myself in a good place before hitting pause, so I’m able to start from 70% as opposed to 0%.

    I’m also using this opportunity to reevaluate things. To be frank, I may end up turning indie vidcon development back into a side effort, and not my main career. I’m still defining what exactly that means and I’m currently exploring all my options. It won’t effect v1.1, but it may change future releases of VM or any other titles I may work on. We’ll see.

    Anyway! You can look forward to more progress updates here and on Twitter (…X?), and I can pinky promise that v1.1 will be ready by October. A monster month for a monster game. Seems as good of a fit as any.

    See you soon, villagers!

  • Book Review: The Lions of Al-Rassan

    The Lions of Al-Rassan, by Guy Gavriel Kay

    Lions of Al-Rassan is one of the best fantasy books I’ve ever read, and I say this even though I’m not entirely convinced it is fantasy.

    Whatever its genre, it tells the tale of Moorish Spain and events leading to the Reconquista, but through the lens of the fantastical. The major powers and players are sufficiently mixed up and layered with new details to make it clear this is not earth (there are two moons in the sky!) and it’s not a historical account , but things are also immediately recognizable, even as an American. Instead of Christians, Muslims and Jewish peoples, you have the Jaddites, Asharites, and the Kindath – with all the same customs, stereotypes, challenges, and desires. It’s a little weird, to tell the truth, but more on that later.

    Thankfully, it is much more than just a fantastical retelling of Cantar de mio Cid. At the heart of Lions of Al-Rassan are the lives and personal stories of impossibly powerful, emotional, and clever men and women. There’s The Captain himself, Rodrigo Belmonte, a genius tactician and leader of the strongest band of Jaddites on the peninsula. Opposing, or allied, with him is Ammar ibn Khairan, an Asharite poet, advisor to kings, killer of kings, and lovable rogue. Finally there’s the woman that stands between them, Jehane bet Ishak, a Kindath doctor whose life is defined equally by love, war, and medicine.

    These three heroes are the pillars of the book, with themselves and the people that follow and love them serving as a metaphor for the mishmash of cultures and the inevitable conflict arising on the peninsula itself.

    Al-Rassan is a ticking timebomb of external pressures and irreconcilable differences, but there is a compelling argument made by its characters that it doesn’t have to be. There’s a dream shared by many characters that conflict is not inevitable, that it is possible to blend disparate cultures (in some cases quite literally) to create something new, better, but fragile. This struggle is the source of its many emotional highs and lows.

    I don’t think I’ve ever read a more human book, especially in the fantasy genre. Characters frequently stop and appreciate beauty, celebrate companionship, weep at tragedy, and profess respect for their friends and rivals.

    The key here is that, with few exceptions, there are no evil men. There are competing and incompatible cultures, religions, and political systems, but humans are human, and their shared likenesses are as important as their differences. These are crafty and intelligent men having crafty and intelligent conversations with each other, even in conflict. You end up sympathizing with everyone, even going so far as hoping, naively, that they somehow all get what they want.

    They won’t, of course. One of the greatest themes running throughout the book is that these men would be great and lifelong friends if not for just one small problem – the tragedy being that these “small” problems are often the most defining parts of their lives.

    It is a nearly flawless book, though there are a few problems I couldn’t get past.

    I’ve read plenty of books that straddle the line between fantasy and historical fiction, but this is the first time it’s been a source of distraction. Events and characters are so close to their real world counterparts – often with comically referential names, titles, or descriptions – yet at the same time are very clearly not.

    I kept wishing that the book fully committed to fantasy or history.

    Take the three major religions as example. Going by their descriptions, you’d likely say they are sufficiently fantastical: the Jaddites worship the sun as god, the Kindath worship the two moons, twin sisters of the sun god, and the Asharites worship not the gods but the stars and the human prophet who preached their glory.

    And yet when you read of their cultures, practices, and so on, you’ll quickly find they are literally Christians, Jews, and Muslims. The Kindath (Jews) are called the Wanderers, valued for their skills and trades when times are good, but immediately blamed, persecuted, segregated, expelled, and labeled as sorcerers and baby eaters when times are bad. It’s not subtle!

    It’s also not a bad thing, necessarily, because the fantastical framing is as good of a teacher as any historical drama would be. And yet… it remains distracting, taking me away from its world and putting me back in my own.

    More distracting are the names of its characters: Rodrigo “The Captain” Belmonte is of course El Cid himself, Rodrigo “The Lord” Diaz. The character of Ammar ibn Khairan is based on a man named Muhammad ibn Ammar. A major city in the book is named Silveness (Seville), ruled by the khalifate (caliphate), which eventually falls and is replaced by the Almalik (Almoravid) dynasty.

    Both book and reality contain a Sancho the Fat, yet they are different people… sorta?

    On more mundane annoyances, there are a number of writing ‘tricks’ that Guy Gavriel Kay goes back to a few too many times.

    Often – too often – there will be a scene in which an important event is viewed through the perspective of one of the characters. It will then end on a cliffhanger – like a character’s death, not yet named – and then the perspective shifts. Sometimes the cliffhanger is resolved, but more often than not this trick happens a 2nd or even 3rd time, or the time frame jumps suddenly and you’re left to infer what happened before the book eventually just tells you.

    The writing is very clearly aware that it’s dangling the reveal in front of you, and it’ll purposefully lead you down false conclusions to stretch out the tension even more. Once you notice the trick it’s hard not to get impatient or even frustrated by it.

    There are also a number of repetitive words and phrases that grate after a time – people can only talk about “dissembling” or “diverting” so many times before it becomes irksome – but they’re minor.

    Indeed, all of its problems and distractions are minor when compared with the work as a whole. They are primarily noted only because the rest of the work is so phenomenal that even the smallest error stands out of place.

    It’s a remarkable book, one that should be on the shelves of every fantasy fan, and it’s made me a Guy Gavriel Kay for life. Just don’t read it too close to taking a test or quiz on the history of Spain, because it will cause you to fail spectacularly.

  • State of the Village, vol. 4 – Backed Up & Running

    Hello Villagers!

    I have mentioned before my terrible luck this past year, especially when it has coincided with Village Monsters stuff.

    So it wasn’t surprising to me when my entire family came down with the flu the literal day I published the last dev log. 2+ weeks of sickness, including an incredibly grumpy 3 month old? No surprises there!

    “Ha! This time I knew it was coming, so it doesn’t bother me at all. Now it’s out of the way and I’ll have a funny anecdote for the next dev log!”

    Then, thanks to school starting, we all got sick again. I am unsure which gods I angered or what my offense was, but I am very ready for this curse to be lifted.

    Still, the journey continues. Work has resumed on Village Monsters, and I have plenty of news to share, so let’s get to it.

    What’s The Latest?

    • The tools have been updated, the source code recompiled, and the debugger is chugging away once again. We’re back up and running, baby!
    • All feedback and bug reports reported since May (post-baby) have been logged, prioritized, and in many cases fixed
    • All reported crashes and blocker bugs have been confirmed fixed
    • Village Monsters v1.1 will launch this October. For real. No redos this time.

    It has taken me a great deal of effort to get back up to speed, especially with all the gross distractions in the real world, but I am pleased with where I’m at now.

    One idea I toyed with was splitting the work into two releases: one with priority bugfixes (crashes) I could get out soon, and then another, larger update that focuses on the more content-heavy things sometime later.

    However, I decided against it. Village Monsters is not a live service game, and it didn’t seem like there would be much of a benefit to that. I also worry about the confusion of saying “it’s fixed!” while also promising that more fixes are coming.

    The plan is to treat October as a relaunch of sorts and making v1.1 what v1.0 should have been. It’s somewhat riskier (as all big launches are), and it requires more waiting, but I think it’s the right move given the choices.

    I can’t go back in time and redo the disastrous launch, but I can try to at least make up for it. It’s like when you burn dinner while entertaining guests; it sucks, it’s embarrassing, but people still need to eat, so climb out the window and go grab some burgers.

    Until next time!

  • State of the Village, vol. 3 – Precious Little Sleep

    Hello Villagers!

    Hello again. It’s been a while!

    If it’s seemed like I dropped off the face of the earth for the last few months… that’s because I did. In fact, I’ve barely left my own living room since May.

    Long story short, my 2nd son, Arlo, was born on May 17th. In fact, I was in the middle of writing a dev diary the exact moment my wife’s water broke.

    Note the timestamp. I never did get to sleep that night… nor have I slept since.

    Arlo is our 2nd kid, so we had a plan for what ‘paternity leave’ looked like. Or so we thought. I never imagined I’d be gone for months, and I certainly never wanted to disappear altogether.

    In truth, this has been a very hard time for my family. I don’t feel comfortable sharing everything, but Arlo has had a heartbreakingly difficult start to his short life. We were in survival mode, and there was no room left for anything else.

    I am so incredibly sorry to have been gone for so long. To release Village Monsters in such a sorry state – only to seemingly leave before I finished fixing things – is unacceptable.

    However, I had to prioritize my family over everything else.

    The good news is that things have finally calmed down, Arlo is happy and healthy, and I’m finally ready to get back to work in earnest.

    Thank you so much for bearing with me during these difficult times.

    State of v1.1

    Work has resumed on v1.1, but it’s going to take some time to ramp back up to full speed and knock off the rust.

    I’ve created a new public Trello board after the previous one was eaten by Atlassian. I’ll update this board daily so you can keep track of my progress.

    In addition, I’ll be resuming live streams over at my Twitch channel starting next week. Keep an eye out on Twitter for the schedule.

    I wish I could provide a more concrete schedule given how long it’s been, but history has shown that’s not wise. I’m bad enough at making plans, but I also have supremely bad luck whenever I commit to something.

    If nothing else, I can promise that – barring any unforeseen circumstances – this should be the last son I sire while developing Village Monsters.

    Until next time, villagers!