Chatty 2


So, continuing work on dialogue system.

I did a bit of research and it became clear to me that a huge box full of text and 6 or 7 clickable choices is probably information overload. That was cool in the Nineties, but more modern games have done a lot to refine the way we deliver dialogue in games (Mass Effect series, Deus Ex: Human Revolution are two examples.)

The main thing where we made progress is this:

Seperate choices from plain talk.

This means there is a difference between interactive and non-interactive dialogue pages.

There is also a variation of types of choices (multiple choice, yes/no choice, choice affects player alignment etc.)

And finally, recent games have a tendency to minimize the amount of choices vs talk. Deus Ex: Human Revolution does this to the point where many dialogues will only include a single choice for the player to make. Everything else is practically just a cutscene.

So there is a spectrum where a game can fall between “lots of player choice” (old RPGs such as Baldur’s Gate mark this end of the scale) and “lots of non-interactive (more cinematic) dialogue” (as in recent games.)

The upside of the cinematic approach is that conversations have more of a natural flow and that dialogue is a smaller part of the game compared to e.g. shooting people in the face. For some games, this is right.

The upside of more choices is the opposite; dialogue becomes a major interactive system, and narrative becomes potentially more player driven (as long as the options make sense.)

SJ will probably fall somewhere in the middle. Have fewer options but make each one count.

My current test case dialogue clearly has some redundant choices in it; in the above image, if you look closely, the “I’ll do it” option is redundant. In other words, if the player wasn’t interested, they would not even click on the “why would I do that” option!

The doodad in the middle has several functions that I’ll not dive into. Suffice to say it is an indicator.

I’m not done with dialogue yet by far. Creating a dialogue system is a science, and it ideally interlocks with several other game systems. So I might yet end up with something totally different.

Getting chatty


I’m currently working on NPC dialogue. Players will be able to participate in a branching dialogue with certain NPCs. To this end, I have designed a scripting language for dialogue files.

The scripts are inspired by those used for interactive fiction games / interactive novels. They are written in such a way that they are both easy to author and easy to translate.

Currently, the scripting side is well developed; touching a trigger or character initiates dialogue; parsing the scripts from SSQC basically works (string buffers); and strings are being sent to CSQC for rendering. Next up is programming the actual display part in the CSQC GUI code, which is why I created a mockup. I’ll need positions for the background and each line in percent of the screen size, and the only way to get those is applying a good old fashioned tape measure. It’s done like this for all CSQC displays in SJ.

Stuff is subject to change, especially the background.

Here’s an example snippet from a dialogue script:


Dialogues can be as much as 10 levels deep and 10 – 12 lines can be displayed per page.

The player will receive quests via dialogue (except the main questline, which auto-activates in the first level and daisy-chains from there.)

As far as I know, FTE has full support for UTF-8 which will become interesting once translations are made (there will be at least English, German and Danish versions.) Strings from code can be translated, too, by GNU gettext.

I’ve been putting branching dialogues off for a long time, because I was unsure how to display them – an old idea was to use a console object (FTE can display multiple consoles and they also support links.) Well, it somehow fell into place now and I guess consoles can still be useful elsewhere.

I have to thank Spike, as usual, and this time also Sharkbanana (who is working on a game using FTE as well) for a pile of grizzly programmer wisdom. I’m sure I can be a nuisance sometimes. Programming stuff like this robs me of my last nerve and only large doses of metal music will ease the throbbing brain ache. \m/



I’ve been checking out the recent git version of MyPaint (the free digital painting app.) There’s a bunch of new stuff – a dark theme, new icons, and the layer etc. windows now automatically dock into a neat sidebar. There’s a new panel at the bottom of the window that relates some additional information, including possible keyboard shortcuts (zoom, rotate canvas, pick colour etc.) The colour swatches on the bottom left are kinda useful – you can use the left swatch to pick a different value of your current colour (lighter/darker) with the stylus which is nice. Of course there are also various colour pickers and a scratchpad.

MyPaint currently has an experimental branch with support for layer groups and, finally, layer masks. So these features are coming. There is also a new bucket fill tool, and I spotted a lock-transparent-pixels feature which is implemented as a blend mode on the brushes. Very handy for masking operations. There are also many new layer blend modes – the list seems to be nearly complete now.

The line/curve/ellipse tools are more visible in the toolbar and related keyboard shortcuts (turn a line into a curve, rotate an ellipse etc) are better explained. The brush settings window has been redesigned, so creating your own brushes should be simpler. A pretty nice new brush package has been included.


The major thing MyPaint is missing are selections. So I’m not sure why there is a bucket fill tool now, which would typically be used to fill a selection. Oh well. They aren’t indispensable for concept art with a plain background anyway, since it’s possible to just paint yourself a mask like I did here (the white) and there is also alpha lock for quick “masking.” Or you could just use temporary layers.

I believe I mentioned the HCY colour wheel (hue chroma luma), the support for loading and creating Gimp palettes, and the very cool gamut mask feature in an earlier post. This is pro stuff and a joy to work with. The colour picker that displays a realtime preview swatch while you move the stylus over the image is pretty cool as well. And last but not least, the git version now supports vector layers(!) which a lot of people will like.

Current git version is still a bit crashy, but I hope for a stable version 1.2 soon.

Ubuntu (and Arch) users have it easy – they can just install the mypaint-testing package to get a very stable git version; Windows users will have to jump through a few hoops unfortunately. The stable Windows version is ancient.

I did a comparison between MyPaint and Krita as well, and while the latter does bring selections and a text tool (which will please comic artists) there is no doubt in my mind that MyPaint still takes the cake for concept art and illustration because it’s smaller, leaner, faster and more user friendly. MyPaint seems to put more of a focus on its core drawing/painting/brush engine functionality.

Krita failed to support pressure sensitivity with my Ubuntu and Wacom tablet, while MyPaint does this out of the box. Krita’s UI is comparatively cluttered and seems overloaded with features. I’m not sure why e.g. special effects filters are necessary at all for digital painting. Something that really bugged me about Krita was having to go through a fullscreen “New file” dialog after every lengthy startup. By comparison, MyPaint simply displays its default endless canvas after an instantaneous startup.

For open source digital painting, the combination of MyPaint and GIMP Paint Studio still looks unbeatable – for what MyPaint can’t do (marquee selections, copy merged, free transform, text, gradients), you can depend on the heavy artillery of GIMP. The two apps interact perfectly via the Open Raster format (meaning layers etc. stay intact) and GIMP can read/export PSD files.

Still, options are great – I’m glad to see the Krita kickstarter was very successful. Free digital painting has come a long way. The only major Photoshop features still missing from GIMP/MyPaint, as far as I’m aware, are clipping masks (though Krita has those), adjustment layers, and an easy way to record macros (Krita does those, I think.) The various dev teams are also talking to each other – for example, MyPaint’s (excellent) brush engine can be loaded into Krita and is scheduled for inclusion in future GIMP versions. 16 bit colour support is also coming to GIMP.

Good times for free painting.

Bonus: I was recently made aware of this outstanding digital painting tutorial playlist. I can’t recommend this enough. Best of all, it is free.

Fair Weed


Tribal faction coming to life. Here’s the Shaman. Gone back to pencil, too. <3

Goat people gone trippin’ yo, Great Su return!



Weirdest enemy in SJ so far.

Some factions needed spicing up, so I designed some new types. We have a Tribal Matron, this Order Deacon and … the Afflicted.

I also decided to introduce ranks and veterancy.

The menus are largely written. It was a good thing doing it now, because I came up with a bunch of gameplay modifiers while I did it. There might be permadeath in SJ – optionally.

Anyway. This guy was so weird, I had to post him. He’ll be awesome. Dunno why I went and inked him, I did start with the usual pencil sketch but messed it up, so that might be why. I also needed a clearer idea of him. Game design can be fun sometimes.

Speak Friend and enter


Jumping, shooting and collecting loot is all well and good, but in Scout’s Journey, the stakes are higher than that.

I haven’t talked about this part of the core gameplay mechanics much, although they’re basically functional. Let’s just say this magic stuff has something to do with winning the game.

My first attempt at a magic circle looked a terrible lot like something out of some popular action RPG. I think this slightly more mature replacement is much closer to what Scout’s Journey is about. Drawing these kinds of textures is immensely fun.

So in a way, here’s a look past the locks and bolts into the heart of the game.

The menu, please


I currently find myself working on Scout’s Journey’s menus (placeholder art shown.) Originally I wanted to do them in MenuQC, since gnounc had shown me some pretty clear-written MenuQC code a while back, but Spike convinced me to do it in CSQC instead. The upside of that, of course, is that the menus simply use the existing SJ GUI code, including the mouse pointer. Any menu is then only an extension of already-existing code.

The “secrets” to doing a CSQC menu are few:

  • set pr_csqc_formenus 1
  • run the initial game menu when the client is not connected (serverkey(“constate”) == “disconnected”)
  • seize the togglemenu command from CSQC (registercommand(“togglemenu”) / CSQC_ConsoleCommand)
  • disable the rest of your GUI in disconnected state.

The rest works exactly the same as any mouse-driven CSQC GUI. I plan to flesh out the menus over time, include a startup logo screen, and add some of the music that I already created.


As might be obvious, Scout’s Journey is now using a dedicated colour palette. This should make the colours seem a lot more coherent and harmonic across the game. To create my palette, I actually went and painted out almost 30 colour lines in Mypaint using a gamut mask to limit the available base colours (great feature by the way.)

I got this idea (and many others) from a number of art books which I’m currently reading, including “Color and Light” by James Gurney and “Drawing on the Right Side of the Brain” by Betty Edwards. My aim is to improve my classical art skills in order to become a better overall game artist and designer. I’m also improving my anatomy knowledge to help with character modelling.

The books really have a lot of information that’s not generally available on the internet.

Apart from that I really should get to finishing the quest system and the rest of the GUI panels, and perhaps implement the hub system.

I also still have an eye on GLSL shaders.


Get every new post delivered to your Inbox.

Join 46 other followers