So, I forgot to post this yesterday – the latest Eidolon update. It’s been going reasonably well. It’s still Way Buggy, still slow, still only partially completed for even ‘implemented’ functionality, but it’s coming together. I won’t show a video for this one because it’s probably easier[1] to show some images of where we are. This is where I had gotten to last week – I’d implemented some simple placeholder representation of NPCs in the environment, and put in some light sources. So this is what we got:


Yeah, this is the point that I thought ‘This is really going to work’.

The little skellingtons are NPCs. The skellington with an Afro is me, looking over at the client (which is controlled by my Draconius account). The day/night cycle now is actually quite effective in building a sense of place – you can still see the streets in the night, but not quite as well. The graphical display permits something that isn’t possible in text to a meaningful extent – representations of distant pools of light. With this, if you see a an NPC 10 rooms away down a long street, you’ll see the dim light and know that’s probably a player, not a zombie.

I decided that I’m almost certainly not going to have models for all kinds of NPCs since it would give a significant advantage to client users to be able to see what’s ahead of themYou can do that in text, but it’s awkward to do. Nobody should get a significant advantage from using the client – yes, I know I just said that you can see light sources at a distance, but that’s going to smooth out as an issue as time goes by. You’ll see something more abstract than distinct 3D models – not the skeletons, but something else. I suspect you’ll only be able to see a few too in any room – if more than X NPCs are in a room you’ll just see some kind of distant crowd.

Yesterday, I worked on implementing some of the game commands, giving you a way to explore your character. Those icons underneath the wellbeing bars are, in order, ‘score’, ‘inventory’, ‘skills’ and ‘who’.


You can use those to start interacting with the world underneath. This is Score (at least for now):


Oh, you can also drag windows around. This is inventory (after some window rearranging):


The red bits are links – click on an object to get its long description, and a list of commands that you can perform on it. Click on those and you’ll do the thing you want in the game. Skills is a bit of a mess just now, so we’ll skip over than, and look instead at ‘who’, which works the same way as the inventory:


A lot has been done under the hood to tidy up the XML parsing and make it so that it’s not a pain in the back-hole to work with. You don’t get to see that here, but what you do get to see is the key interface to making things happen in the world – the Meeple tray (just above the long description).


It turned out that having 3D models in your room was a nightmare to work with – not in terms of code, but in terms of pure playability. It’s telling perhaps that other fixed 3D dungeon crawler games only have you interacting with NPCs in the *next* room. It was too hard to get them in front of you and clickable, and too hard to distinguish what was what. So instead, I decided to go with something a little more convenient – a series of icons that shows what’s in the room with you. These are, from left to right, a creator (me), a human NPC, a cat, and some non-living object. The key thing you can do with this though is right click to bring up the context menu. I’ve moved the meeple tray into the centre of the screen to show the popup more clearly:


If you click on those, you’ll execute the commands in game. If I click the look button for example, I see this in my old antique[2] MUD client as:

Draconius Hugofingerer[3] looks at you.

Click consider, and I see:

Draconius Hugofingerer[3] considers you.

That’s it, that’s numberwang – this creates the final evidence that this interface can work in all significant respects. There are no future potential road blacks, this is happening. Perhaps not exactly in this form, and certainly not in this *style* (no work at all has been done on making this look pretty). But all of the key things line up and everything else is inevitable.

I don’t want this to come across as the client being more finished than it is – there are still metric butt-loads of work left to do before we even get to the polishing and tidying up. But we’re now considerably beyond where the ugly old Java client got to. Months of diligent labour are still in my future just to implement core features and more to make it all beautiful. But make no mistake people, this is happening.



[1] And certainly quicker. Yeesh, Youtube uploading is so slow)
[2] A more elegant interface for a more civilized world.
[3] An inside joke.  In every possible sense.