Quick progress update

·

·

Sorry I’ve been so quiet. I’m very good at concentrating, but I’m really bad at stopping!

Plus the stuff going on in America and the rest of the world at the moment is quite wearing – I’m sure many of you feel the same. All of the things I was worried were going to happen are, in fact, now happening, except they’re even worse than I’d expected (and much worse than many people yet realize). My friend works for the federal government in Washington – at least, she still had a job as recently as half an hour ago – and hence a lot of this stuff – the random mass firings, the utter chaos, the ignorant, authoritarian bosses, the sheer cruelty of it all – is hitting a bit close to home.

Anyway, I’m in no mood to debate politics – I’m just saying that I’m feeling a bit overwhelmed, and that’s partly why I haven’t had the chance to post much, lately.

Back to the topic. I’ve been working hard on two things. The first is a rewrite of the affect layer in the creature’s brains. There’s not much point in me trying to explain what I’ve done, because you’d have to know a lot about how phantasian brains work to be able to see the relevance, and I haven’t had time to tell you about that yet! But basically, the neurons in the affect layer are there so that creatures can learn how they feel when they are in a certain state under certain conditions, and I’d discovered that a lot of the time they were recording the right information but in the wrong location. It’s no wonder they didn’t seem to learn much!

This turned out to be because sometimes the reinforcement doesn’t arrive until they’ve changed to a different state – for instance it takes a little while for the chemistry to catch up. So I needed to reinforce these recent states as well as or instead of the current one. But to make it extra awkward, sometimes it’s the other way round, and I need to reinforce states that haven’t even been entered yet. If a creature hears a scary noise, for instance, they need to shift their attention and look at the source of the sound before they can know which object probably scared them. But by that time the event is already over. I’m sure our own brains have to resolve all sorts of timing problems like these, and there are actually some neat examples of it going wrong, but just because I know that something can be done, doesn’t mean I can figure out a way to do it.

Anyway, I think I’ve probably sorted this out well enough for now. And while I was there, I decided to change the way that learning happens in these neurons. I’ve shifted over to using my STM/LTM approach (a cheap way to get both short-term and long-term memory). Funnily enough, the last time I used this method was in Creatures, many years ago, and it still seems right now, even though these neurons grow in a very different way. I won’t go into the details, but imagine you’re a bear and you put your hand into a hole in a tree, hoping to find honey, except instead you get stung by a bee. If you learn from this experience too strongly, you’ll never put your hand into a hole again, and thus never get any honey. But if you learn it too weakly, you’ll just do it all over again while the bee is still in there. It’s important to be able to forget, but not forget entirely. STM/LTM solves this quite nicely.

The other thing I’ve been working on is the user interface. There is nothing about Unity that drives me more insane than the user interface APIs! The ‘new’ GUI display stuff is very powerful but also rather like using a sledgehammer to crack a nut, given that most Unity games are simple platformers. Meanwhile, the ‘new’ control input API seemed to be abandoned several years ago, although in the past few weeks it looks like someone is back working on it again. Their code, however, is still stuffed full of “FIX THIS!” and “How on earth are we going to do that?” comments. Maybe they’ll finish it one day.

The reason I started work on the UI is that I hoped to make it possible for people to reconfigure the keys and other controls they use to move around the world, select things, etc. Some people are using desktop machines, while others have laptops, perhaps with awkward trackpads and certain keys only accessible by holding down FN. Some have non-Windows devices, and one day I might even make it available on XBox. Not to mention the nightmare of VR headsets and controllers (it looks fantastic in VR, but there are many problems to solve and there isn’t yet much demand). So a one-size fits all approach to the user-interface was not ideal.

Unfortunately, it’s not going to be easy, even if I make things reconfigurable. The WASD keys are digital, of course, while a mouse is analogue, but it’s a very different style of analogue from a joystick, which is different again from the thumbstick on a gamepad. Trying to patch multiple functions into multiple controllers of very different kinds is more involved than it looks and hard for a user. With great power comes great responsibility, and so the more flexible I make it, the less likely it is that anyone will ever go to the trouble of using it.

But one consequence of trying to add more configurability was that the user interface is clearly going to get more complex over time, and it’s already getting quite cluttered, especially if you include all the tools I need myself. Beyond a certain point, all those buttons and sliders and check boxes start to feel overwhelming for little benefit.

At this point, many complex applications fall back on using a command line interface, because then they can add as many commands as they like without cluttering up the UI in the slightest. But unless you use that software all the time, it’s quite easy to forget the command syntax. Even with menus and dialog boxes it can be a nightmare. I work in Jetbrains Rider most of the time, which has hundreds of different commands. Every now and then, I have to switch to Blender, or Substance Painter, or SpeedTree, or Photoshop… By the time I’ve got back up to speed on that equally complex application, I’ve completely forgotten how to do anything in Rider!

Anyway, what I’m currently aiming for is a hybrid of a command line interface and cascading menus, so that you can either click or type, or even use a mixture of both. I think it should end up fairly clean, compact, contextual, self-documenting and easy to learn, yet still allow power users to do more involved things and me to debug the system. Want a weather forecast? Type in WEATHER FORECAST, or just W F, or click on WEATHER and then FORECAST. Or just silently ignore this without it getting in your way, and go check the weather station in the world instead. Want to chat to a friend? Type CHAT JENNY and start saying something. Want to change the key that slides the player to the left? Type (or click) SET KEYBOARD SLIDELEFT A.

Of course, I can’t please everyone, and it certainly won’t look a bit like a cute platform game UI, but sometimes you just have to make a decision and put in the effort, then see how it turns out. I have no idea how to make it work in VR yet, because then there’s no screen and you can’t type, but the cascading menu approach should at least help with that.

I still need a couple more weeks to finish coding this, but when I get the bulk of it working, I’ll post a new build and you can try it out. After that I’ll try to get back to some actual world-building.

Lord knows, I’d certainly like to escape from this one!


5 4 votes
Article Rating
Subscribe
Notify of
50 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments

Brain Map Wiring

To see full size, click on image and Open Image in New Tab.

General

Moving with the mouse: Hold down right button to look/turn. While the right butt

Glossary of genetics terms

Editing this encyclopedia

Change log

The Simbiosis simulator

Building user mods

Physicality

Information at the software level.

Plant life

Frampton Gurney

Neuroscience

Introduction goes here

Biochemistry

Virtuality

This section of the Encyclopedia is concerned with the virtual world: Frampton G

Biology

Phantasia are much simpler than the animals we find in the natural world, but th

Reproduction

This article is about reproduction from a genetics perspective. See elsewhere fo

Sexes and sex chromosomes

We’ve just seen how reproduction sifts and selects among pairs of alleles,

Dominant versus recessive genes

For any given location on a chromosome pair, we find two versions of a gene – on

In-game help

This section contains the online help for various objects in the game. You can b

Genetics

Phantasians are defined by genes – hundreds of them! Each gene creates som

Encyclopedia Phantasia

Welcome to the Encyclopedia Phantasia. Here you will find detailed information a

Chat Icon Close Icon