Whoop! Web terminal is working! Yeah, baby! Now with colour!

It's working for dungeon, which is great, but it'll clearly work in other contexts. My first thought was a basic bash terminal (I'll need to add some stuff to support vim, but I don't think it's going to be a step-change in difficulty).

I've just realised that I can do the "editor in 1kloc" stuff, /in JavaScript/, in the browser! That's going to be a giggle .

I've got rough ideas of some kind of text/CLI interface for the/a website, but I'm not really sure what I'd want to do with it.

But I'm so chuffed. Using CSS grid has make it so much easier than the alternatives. I don't have to worry about getting stuff in order, like I would with tables, and I don't have to mess with low level font stuff that canvas implies.

So, as is traditional, a list of what next?

  • Scrolling
  • Finish colours
  • More chapters from the roguelike tutorial
  • More monster behaviour
    • Flee at low heath
    • Game of life fungus
    • Flocking bats
    • Patrolling guards
  • More level generation types (rooms and corridors, rather than caves)
  • Light sources
  • Equipment slots (main hand, off hand, body, legs, ...)
  • Quests (or at least tasks)
  • Persistence (save game, non fatal death)
  • Multiplayer (maybe)

I'm fairly sure that I'm going to go for an "anonymous people can't save state" option, at least in the short term, but I'm worried about the whole "managing accounts" thing. If I'm going to run this thing in any kind of public way, I guess I'm putting it on it's own machine, possibly in it's own account somewhere.

I like aws in principal, but I don't like the potentially unlimited costs. I could use Fly.io, or I could rent a second machine from mythic. I should probably think about a name/dns, and a proper skin, if I'm going to "release" the game in any useful way.

Then, of course, monitisation starts creeping in.

Let's not get ahead of myself, yeah?


Funny thing in testing, I was fighting a zombie and a bat stumbled into it and got the last hit, so got a couple of levels (cue genuine laughter).

I think creatures will start tracking who has done them damage and award xp proportionally (modulo attackers staying in some kind of range). Husband suggests bonuses for first/last hit, I'm not entirely sure about that.



So the article on writing functional games (writing games in a functional style, not waiting games that function) said something like update functions should return a list of events. The example in my head is a "died" event that can be intercepted by a potion of resurrection.



Interview tomorrow so of course I'm staying up late the night before. (Brain chemistry/depression/ADHD/insomnia has nothing to do with it).

Been a few good days at work, been working solid days writing code and feeding good about myself. Broke nonprod this afternoon but only for an hour or so, and it was installing an update that people have been asking about for a while.

I think I've cracked the combinations/bag packing problem that Husband gave me (something about fitting enchants to equipment). Turns out I really like the algorithm stuff, it gives my brain a useful workout.

However. I'm going to grab a snack and call it a day. Tomorrow will be here soon enough, I can do the interview and then forget about it (although CS Jobs posted me a "Senior DevOps Engineer" advert that has management responsibilities, I'm a bit tempted by).


Alright gentletheys, that was the interview. Took about forty minutes, four questions, not sure any of them covered the topics the advert said, but I think I coped well enough (I've read the guidelines enough that I can hit the right words, maybe).

Should hear back next week sometime. (Yes, form a certain point of view the job was aimed right at me, but I trust that the panel will judge people fairly, just because the squew is in my favour doesn't make it any better.)


(Posted to Facebook)

Earlier today I again performed the sacred ritual of "The Job Interview".

I suffered the ritual cleansing, daubed myself with unglents said to be pleasing to the Gods (I argued against it, since it was a video call, but Husband wisley suggested it would be a bad idea to insult the Gods on ritual day), and donned the sacred robes (thanks again Maisie for the tie!)

I improvsed poems on the four themes given; 'The Fall of Leaves in Springtime', 'The Emperor's Third Penguin' (that threw me a bit of a curve, I'd ony read up on the First and Fourth Penguins), 'The Use And Practice of Caching in a Hetrogenous Network Environment' (Easy, a standard ABC CBA rhyme scheme), and 'Duty' (Duty always comes up, so I used the poem I prepared last night).

I await the Emperor's messenger who will hopefully bring me the blue coral button that marks one as a 'Senior' developer.

(The interview went well, I think, although I've got quality competition. I should hear back in a week. Its a promotion within my team, looks like it's going to be roughly the same kind of work, but probably with a bit more managent thrown in. +300£/month net) (I am going to be so depressed if I don't get it.)


Working on nouns for 'Goblin Town' (provisional name), and I think that instead of doing some complicated thing trying to guess the articles and the plurals, I should just set them for each noun (so "a cat", "some cats", "an egg", etc)

Although maybe I should also think about the kinds of places that I'm going to find nouns (and it's when I'm outputting lines like "{subject} {verbs} {article} {noun}") (and the article is going to depend on context, "You smile at the bat" vs "You hear a bat in the distance").

Definite article is always 'the', indefinite isn't regular enough for easy rules ("if it starts with a vowel sound then use 'an'" is great, except I haven't found a easy to check for vowel sound types yet), however can just tag nouns as 'a' type or 'an' type (idea: new Noun("a fish"), and then parse out the article at construction time).


I've got a bit blocked on the game - turns out that I don't really want to play a dungeon crawler - and so I'm looking around for the next project.

I'm moving this blog into a database, but that shouldn't take long.

I've been thinking about building c# expressions back end for the Lox interpreter. (I've been thinking about building a CLR bytecode version, but that's a bit hard, I think.)

I kind of want to get the terminal component from the game into some kind of useful shape, at least good enough to run as an actual Linux terminal, but again, that feels more like a task for it's own sake rather than something objectively useful.

Or something. I think I'm just down. Husband says it's because I didn't get the job (and they may have a point), but that doesn't feel right? I think it might be the whole banality of existence thing, but that might be symptom rather than cause



WebGL stuff is going well. I wrote a JavaScript implementation of the Diamond-Square terrain generation algorithm a while back (Not sure when, since the current year ticked over, I think), and had got a far as converting the square mesh to triangles, throwing it at the GPU, and getting pixels on screen, but I ran out of interest/energy while it was still in flatland.

Over this weekend however, I've beaten it into 3d, added lighting, and got an animated camera to "fly" round following the terrain! It looks really cool (well, ish, I'm using "normal per triangle" for the lighting, so triangles look flat, but I'm not convinced. On the other hand, normal per vertex would be a bunch of extra work).

I've even got as far as applying a tourus transform (to the position stuff, at least), but I'm having problems getting the camera in the right place.

I've got a couple of things to try next. First is to move the torus transform into the vertex shader. Second is to transform the eye, target, up vectors of lookat (I think I've only tried transforming eye).

Interestingly, those ideas are incompatible - either I can do the transforms in JavaScript (on the CPU) of in GLSL (on the GPU), bit not both.

Anyway. time for sleep. I wonder if the GPU can do trig?


(Just a follow up, not only can GPUs to trig, they can do them in hardware as fast as everything else! Neat!)


Built (well, assembled) a new piece of furniture for the study, an IKEA Kallax 'storage unit'. It's not quite a set of shelves (ok, it is exactly a set of shelves), designed to take 30 cm (roughly) cubic boxes (or other 'inserts'; there's a set of drawers, a cupboard with a door, and a third party set of thin shelves for paper).

It's a bit more imposing than I'd imagined. Also, I really should get photos working.


I was going to be all whiney about "hitting a complexity wall" in my flight sim, but then I realised: I wasn't writing a flight sim! I was writing a terrain generator, and that's working great!

I do want to write a flight sim (or at least, some kind of game where the control system is kind of aircrafty), so I should think about that, but I should start with a blank sheet and build it up properly.

Mostly, the choice I need to make is how much of the low level graphics stuff do I want to do, and how much can/should/do I want to hand over to a library (twgl and three.jshttps://threejs.org/ are the current options).



To remember your current position in the blog, this page must store some data in this browser.

Are you OK with that?