There and Back Again

Welcome to day one of full-time development of BONES of the LOST GOD! A few weeks ago, I resigned from my web developer/devops role at Unnamed Small eCommerce Company, worked out my notice, and left, just so I could be here today, starting work on BotLG full time. This is it. This is what I do now; work full-time on this browser-based game that’s a love letter to old-school tabletop RPGs, text adventures, and party-based RPGs of yesteryear.

In a hole in the ground there lived a hobbit. Not a nasty, dirty, wet hole, filled with the ends of worms and an oozy smell, nor yet a dry, bare, sandy hole with nothing in it to sit down on or to eat; it was a hobbit-hole, and that means comfort.

I’m working from my own little hobbit-hole, sat at my little desk in the living room. I have my small curated selection of RPG handbooks to my left; a sleepy cat to my right; a mug of tea; lofi hip hop beats to relax/study to playing in the background, and my IDE of choice fired up and cursor blinking. I had wanted to start the week with a Twitch stream, or perhaps a podcast, but in a cruel twist of fate, I’m currently full of cold and less than presentable. So we’ll save that for another time.

Today I’m going to mainly downloading things, configuring things, composer installing things, setting up my Trello board of things-to-do, and getting started with a bit more of a professional attitude. Character (PC and NPC) creation needs finishing off, and in the spirit of NaMuBuMo, I want to work on my location editor.

Wish me luck.

If you want to learn a little more about BotLG, there's a brief synopsis of the project and my goals up on my Patreon page. I'd love you to take a look, and if you're interested, throw in your support alongside the other brave and virtuous souls already subscribed.

Mapping BotLG

It’s October now, so that means NaMuBuMo is upon us! This seems like a perfect excuse to take some time to plot out the world of BONES of the LOST GOD; luckily, I have some geography already, from it’s first incarnation as a play by mail game. I’ve started a Twine project to help with the mapping, more for the editor’s layout and connection tools:

There’s a lot more stuff in Rooksfoot that needs adding — the forge-shrine to Phaestus, Myxile’s Menagerie, the various Guild Houses, the offices of the Statistique, the Temple of Anama, the Halls of the Stone-Blood Fists, Froome’s the chemists, Wilson & Co., (a cheese shop of some good standing), and I’m sure a bunch of other places that got mentioned once in passing.

That’s great and all — Rooksfoot is the main hub location after all — but it’s also a little daunting given that BotLG is now a lot more graphical, with each location having a couple of sentences of description, but more significantly, a tiled map to explore (complete with fog of war and line of sight). I’ve made a start on a graphical map editor, and, while not strictly in the spirit of NaMuBuMo, I’ll be using some time this month to also work on that.

I can lean on some procedural generation to create some of the maps — the forests, for example, and some of the more dungeon-like content (like the Rat’s Nest, and the eventual procedural dungeon beneath The Skull), but I think much of the city will end up being hand-made. I’m thinking I can use a traditional dungeon generator to dig out room shapes, and then re-connect them with wider passageways and hand-decorate them to produce some sections of the city; but to really do justice to some of the more “iconic” locations, like the ribcage arena, I’ll be making those from scratch.

A few new sprites

I’ve been doing some edits to Quale’s Scroll-o-Sprites to create some new creatures, I’m particularly pleased with the cat wizard and horse soldier. The bear-man is also kind of interesting; it makes me wonder if I could eventually come up with something to represent an owlbear.

I’m thinking of chopping the sprite sheet up further into heads and bodies, to see if I can create something like the system Pokemon Fusion uses, but that’s a job for another day.

Upcoming game jams

There are two game jam events coming up in the next couple of months that are of distinct interest to me. Next month, the Mud Coder’s Guild are holding a month-long jam in association with the folks at Written Realms, the first National Mud Building Month (or namubumo, if you’d rather).

NaMuBuMo challenges you to create 100 MUD rooms (or substantive locations) in 31 days, mirroring the long-running NaNoWriMo novel-writing challenge:

Writing up 100 rooms in 31 days doesn’t sound quite as daunting as 50,000 words over 30 days but making an interesting world in those 100 rooms (or more) within that month will be more challenging than one might suspect. Like NaNoWriMo participants are expected to craft this world within the confines of the given month, concept to completion. There is no one holding you to that or any other rule but yourself, of course, and there is nothing to gain other than personal satisfaction.

Secondly, November will bring 2019’s Procjam. It’s always a great event:

The goal is to Make Something That Makes Something – that could be a videogame with procedural generation in, or maybe an artwork that uses generative systems somehow, or a physical card deck that randomly creates Shakespeare plots – whatever you like, whatever makes you excited to make things. As usual, we encourage you to make it your own by starting early, finishing late, or adapting the times to make it healthier for you. We can’t wait to see what you’ll make!

This year’s announcement post from long-time organiser Mike Cook contains some further news; after this year he’ll be stepping down and is looking for volunteers to take over the reins.

Tiny constraints

Yesterday I dashed off a quick, flippant tweet about developing mobile-accessible web apps and ultimately how folks in past managed so much with so little:

sometimes I catch myself thinking URGH making this RPG work on mobile is so painful, maybe I won’t bother. Then I remember what folks managed with a 320×200 display and less processing power than a hairdryer

@rumorsmatrix

It’s true, though. Sometimes I struggle working out how to fit everything I want onto the screen, even in full desktop mode, and then I’m shamed by what was accomplished with just a display measuring just 320×200 pixels back in the day; a screen that makes even the most conservative of viewport settings seem positively generous.

Pathfinding, redux

This evening I got pathfinding working around a larger, scrolling map. I thought this would be best demonstrated in motion, so here’s a little YouTube video of it in action:

I had to turn the sprites down to 32×32 from 64×64, as the view seemed too claustrophobic that zoomed in. This has some unfortunate knock-on effects for the mobile client — I think at 32×32 the tiles will be too small to accurately tap on — but I’ll tackle that another day.

Numbers getting bigger

Here’s a fascinating article on the math behind incremental games; Numbers Getting Bigger: The Design and Math of Incremental Games, by Alexander King.

Each line represents a different building, with cost on the y-axis and income rate on the x-axis (both logarithmic scales)

You know what it all boils down to? It’s this handy formula:

Price = Base Cost × Multiplier(#Owned)

It works particularly well, psychologically, if the multiplier is set between 1.07 and 1.15. Less than that and you progress too quickly to enjoy each new upgrade, and much larger than that and the game bogs down and feels like a tedious grind. Somewhere between 1.07 and 1.15 is the sweet spot, used by many, many idle/incremental games.

And me, too.

What makes “Clicker Games” good?

Here’s a nice little YouTube video from RealityEscape on what makes a clicker game good:

Just in case the name didn’t give it away, Bones of the Idle has a strong idle/clicker component. When you’re gathering materials

There’s a few points raised that I want to briefly talk about in the context of Bones‘ design:

Ascension

I kind of have a system in mind for “ascension”, whereby players will be able to retire characters in exchange for a regular offline income. You get to start over with a new character, and every day you’ll receive some income and items based on all your retired character’s skills. Potentially these retirees will appear in the game as NPCs.

Autoclickers and scripting

I don’t care, in general. The client is written in Javascript and executed in the browser, so there’s only so much I can do to stop people using the developer console to script things. All the important stuff is server-side and validated there, but there’ll still be little shortcuts dedicated students of Javascript could uncover. I just have to minimise what scripters can get away with, and try not to sweat the small stuff.

Monetisation

Bones of the Idle is free to play, and there’s no adverts. It’s also not going to be nagging you to spend money. However, my time has value, and I’m not adverse to money. I set up a Ko-fi page here, where people can chip in with donations if they feel the game is worth it.

If I ever add anything resembling micro transactions — in general I have no issues with them, when done well — I’d have them be ethical, not lootboxes, and definitely not pay-to-win.

Point of view

Last night was the inaugural meeting of my new after school study club, and it was a very cosy, pleasant experience. We went around the table and talked about our various works-in-progress, discussed the merits of various database/model frameworks, and eventually settled down to work on our individual projects.

I spent the time getting field-of-view and fog-of-war working in Bones of the Idle. I already had some code from an earlier JS roguelike project to hand, so with a bit of refactoring I was able to slot that into place:

There is nothing insignificant in the world. It all depends on the point of view” — Goethe

The darker areas around the edges represent tiles the player has seen before, but currently cannot see (fog of war), with brighter tiles they can currently see surrounding them. As you can see, their field of view isn’t a perfect circle, as it’s being obscured by the nearby trees.

Now that the player can be placed on the map (which in turn can be larger than the view port, a new feature over the previous code base), the next obvious step is to re-implement pathfinding and get them moving around and scrolling. I still want that to be verified server-side, so again I’m hoping to take the existing code I already have, give it a polish, and drop it in place.

Two new beginnings

Today is the first of August, and that marks two new things starting for me. Firstly, it’s the beginning of the 2019 Blaugust blogging challenge, which sees bloggers of all kinds banding together to create content for their sites throughout August. The greatest goal a Blaugust participant aims for is one new post per day, but any amount of activity is rightly celebrated by the incredibly friendly community. All of my Blaugust posts here can be found under the tag #blaugust2019.

Unofficial mascot of the After School Study Club

Perhaps more excitingly, this evening will be the first meeting of new club I’ve set up. One of the hardest parts of working on Bones of the Idle is actually finding the time to do so. By the time I’ve spent the day at work coding, then commuted home and settled down, often I find my energy and enthusiasm waning.

In wondering how to combat this, I struck upon the idea of carving out a few hours regularly for working on projects like this in a different environment. And so, after consulting with my manager, the After School Study Club was born. I’ve arranged for some interested colleagues and I to stay behind after work for a couple of hours every other week, to work on, share, and get feedback on whatever personal or professional projects they have in progress.

I’m hoping that some people will also volunteer to give little informal talks or workshops on new technologies and things they’ve learnt, but mainly I want a relaxed, supportive environment to geek out and work on passion projects, if only for a few hours at a time. If nothing else, it’s a bit of progress and a spotlight to show off every two weeks, and that can’t be bad.

Wish us luck!