Dave McKay

Linux and programming geek; freelance technology journalist and data protection and privacy consultant. Not afraid of a side-hustle.

How I Write : My End-to-End Process

An interesting question came up on Mastodon, asking people to describe their writing process. I write for a living. Most of my writing is for technical websites, but I also accept private commissions for businesses. Just in case my writing process is of use or interest to anyone else, I thought I'd describe it here. Typically my articles are what we call explainers. They do what they say. They describe a process to the reader. For me, usually this is how to use a Linux command, or how to achi...
Read post

The Cherry G80-3000N TKL RGB Keyboard

There is little it would seem, that generates so much passion and enthusiasm among those who write for a living as the topic of keyboards. For programmers it is a topic of religious fervour second only to the editor they use. Programmers need accuracy first and speed second. Authors and journalists want speed first, and accuracy second. They want to belt out a draft and then let spellcheck take care of the typos. I'm a programmer and a journalist. I greatly prefer mechanical keyboards. The keyb...
Read post

New TAF Metrics - More Progress

TAF will now collect information on every command entered by the players throught the duration of a game.. This includes: The number of the command (1 .. X, where X is the last command). The command string, as entered by the user. The time when the command was entered (relative to the start time of the game). The amount of time between this command and the previous command (the "thinking" time between the commands). Whether the command was successful or not. TAF can export this information...
Read post

New TAF Metrics - Some Progress

My thinking about the new metrics is that I can record the number of seconds since the start of the game as a timestamp for when each command is entered. I'll also record the time since the last command was entered. This gives me a time-line of when each command was entered and a ready-made log of the intervals between the commands. These are both recorded in the trace window preceded by a token/label. These can be easily pulled out of the log file of a game using the Linux grep command and,...
Read post

Bye Bye Atom, Hello Sublime Text

There's very little that starts heated arguments in the Linux communities quite like a discussion about text editors. For a comparatively unexciting application such as an editor-it lets you type text, right?-the passion and energy that people bring to the defence of their favourite editor is really something to behold. Perhaps even more surprising though, is the sheer amount of vitriol and vocal hate they'll dump on their most detested editors. And if that happens to be an editor you like and...
Read post

A Meaningful Metric?

I'm toying with the idea of making the score at the end of the game more meaningful. Currently it gives you a figure based on the completion of puzzles, the places within the game that have been visited, and so on. It's all to do with the things that you've done in the game. I'm thinking whether there is a way to take the way you've played into account. How many wrong guesses, how long you paused between moves, and so on. Perhaps something that can take into account the hesitancy with which a...
Read post

A Test Drive In More Ways Than One - Part Two

The test drive of TAF with a captive audience of family members didn't go according to plan. In fact, it didn't go to any plan. It didn't happen at all. My mother-in-law tested positive with COVID-19 on Monday. We'd already spent Saturday and Sunday in her company. It wasn't long before we all fell like flies. My wife, myself, my sister-in-law, brother-in-law, their son, etc. etc. We all contracted COVID-19. Instead of a pleasant week on the beautiful Island of Lewis and Harris, we self-isolat...
Read post

A Test Drive In More Ways Than One - Part One

After a long haul from North Wales to an overnight stop in Perth, then onward travel to Ullapool and a two and a half hour ferry crossing we're finally here: back on the Isle of Lewis and Harris, to see family. It was a test drive for the new (to me) car, a 12-month old Kia Rio 2 ISG, navigating by means of Waze on my phone linked via Android Auto to the 7" head unit in the car. The car was perfect, Waze was amazing. Also astonishing was the drive from Perth to Aviemore. Once we cleared Perth...
Read post

Why Virtual Escape Rooms Are Better

There's a whole bunch of reasons that virtual escape rooms are a better team building exercise than physical escape rooms. They're moderator-led sessions, so you get feedback on the team's interactions and a transcript of the team's game play. Because a virtual escape room can involve activities that you can't do in real life, the team really needs to think outside of the box. They're the most cost-effective way to conduct enough sessions to put all of your staff through a session. We come t...
Read post

TAF-Specific Web Page on dpocompliance.co.uk

I added a page to the dpocompliance.co.uk website dedicated to the text adventure framework, TAF. More accurately, i added a web page talking about how using TAF for team building exercises could benefit businesses. For example, because they'd be person-led, moderated sessions and TAF can produce a transcript of an entire session, I can give feedback that isn't available in other team building exercises. ...
Read post

Lean, Mean, Gaming Machine

I compiled TAF today without any of the debug information. Basically that just means removing the -g option from the CFLAGS line of the makefile: CFLAGS = -Wall -g `pkg-config --cflags gtk+-3.0` TAF compiled to an executable binary of just 130 KB! Yes, that's kilobytes. Sometimes I amaze myself :) Actually, sometimes the gcc compiler amazes me. Even after all these years. ...
Read post

TAF is on the Main DPO Compliance Website

I updated the website for my business today, and added two brief references to TAF, as a service that I can provide to businesses. What I'm offering is in-person moderated virtual escape rooms and other interactive fiction-based team building sessions. To do: I need to improve carousel banner image of TAF, and add a more detailed blog post. ...
Read post

Mutable Set Dressings

I was play-testing a game today and realised there was a need for some more functionality in the TAF program. Set Dressings are items within a game that don't really affect the game play in the way that problems and objects do. Instead, set dressings provide texture and atmosphere to a game, and add layers of detail to locations. They may hold clues or information that let the player deduce something, but's as far as they go in terms of game play. Their main purpose is to provide background de...
Read post

The Numeric Keypad

The numeric keypad acts as a controller for a subset of the commands. It makes entering movement commands and some other common commands very simple. Key Command / Carrying * Peek - Close Trace window + Open Trace window 8 North 2 South 4 West 6 East 7 Northwest 9 Northeast 1 Southwest 3 Southeast 5 Up 0 Down . .time You'll find that these map onto the numeric keypad in such a way that the number keys 'point' in the direction of the movement command they're ...
Read post

Mindmap of the Main TAF Game Elements

This is a mindmap of the major elements of a TAF game. It was created with the free and open source minder application. ...
Read post

User Interface - The Three Windows

TAF uses a very simple user interface. It doesn't require anything overly-complicated. Anything too sophisticated will get in the way of the intended look, feel , and atmosphere I'm trying to achieve. Main Window The main action takes place in one window. The aesthetic is a throw-back or homage to the era of green screen visual display units that were in vogue when the first text-based adventure games were created. The text is coloured as close as possible to the actual shade of green that...
Read post

Game Files and the GDL

Games are defined using the Game Definition Language, GDL. Each game is held in a plain text file. The "keywords" of the GDL language are called attributes. There are over 50 different attributes. They either define something within the game, or define a characteristic of something that has already been defined. There are ten groups of attributes: General Game Details Attributes Place Attributes Object Attributes Problem Attributes Alias Attributes Clue Attributes Set Dressing Attributes D...
Read post

Game Architecture

TAF is developed in, and runs on, Linux. It is programmed in C, and is compiled with the gcc compiler. It is a lean, fast program. The compiled binary is under 200 KB in size! TAF is a GTK+ application, making use of the GTK toolkit for its windowing capabilities. The colours and fonts for the program windows are defined in a CSS file called themes.css. /* set the font and colour for the text view in the main window */ #game_view { font: 24px "DejaVu Sans Mono"; color: #33F33F; } /* set ...
Read post

Giving Commands to TAF - Aliases

Game authors are free to use any words in the solution string for a problem. This provides a creative freedom to the authors. They can use any command that makes sense to the internal logic of their game. They’re not restricted to using the built-in commands that come with the TAF software. This game-specific set of commands is known as the game vocabulary. Perhaps a game calls for “magical” or archaic command words, or perhaps a game strives to use as close to modern, natural language as possi...
Read post

Giving Commands to TAF - System Commands

System commands are commands that usually—but not entirely exclusively—control TAF itself, rather than the game play. Loading a game, closing TAF down, or turning sound effects off and on are the types of things you can do with system commands. In moderator-led sessions, such as virtual escape rooms, the moderator will fInd some system commands make hosting and controlling the event easier. In turn, that improves the experience for the team of “captives”. System Commands begin with a full stop...
Read post

Giving Commands to TAF - User Commands

Game play is achieved by entering commands. These tell TAF what you're trying to do. If the command makes sense for the situation you're in, TAF will carry out that command in the game, and tell you the results of your actions. These are the built in user commands. Games authors can add their own commands, and as many of them as they need, when they write their games. Commands can be entered in full, or the abbreviation for each command can be used. Command Abbreviation Behaviour north ...
Read post

The Game Vocabulary

To interact with TAF you must provide commands. Some commands will load games, save,games, and allow with the TAF program itself. These are called system commands. Commands that interact with the currently loaded game are called user commands. These commands allow the player to perform actions such as moving around the landscape of the game and interacting with objects and problems. System commands are built into TAF. There's a selection of user commands built into TAF too, but these are sup...
Read post

How It All Hangs Together

A game is built out of many flexible building blocks. By "many" I mean unlimited. Or at least, limited only by the capacity of your computer's memory. Locations Locations are all of the places within a game that the player can go to or travel through. They form the landscape of the game. They can be anything and everything from windswept moors to broom cupboards, or from Post Offices to pyramids. In fact, they can be - literally - any combination of any types of place that you can imagine. T...
Read post

Anatomy of a Game: Images

It is possible to have TAF show an image to the player. Images can be shown for: Objects Problems Set Dressings Whilst this is a functionality that TAF has, I don’t actually like it that much! I dislike it for two main reasons. As they play, a player is building a mental map of the landscape of the game, and a mental image of each item in the game. Asking to see an image of an item and being presented with something that looks nothing even similar to what they expected is a jarring experie...
Read post

The Anatomy of a Game: Sound Effects

Problems can have sound effects associated with them. When the problem is solved the sound effect is played. These are a great way to signal success to the player—if they hear something, they’ve solved the problem—and they can add some atmosphere, realism, or humour to the proceedings. Transition descriptions can optionally have sound effects associated with them too. ...
Read post

The Anatomy of a Game: Detailed Descriptions

Detailed Descriptions Detailed descriptions provide an in-depth look at an item within the game. They can be provided for : The current location Objects Problems Set Dressings Locations, objects and problems provide their own short descriptions of themselves, but detailed descriptions take that to another level. If a player in a real-world escape room is looking for clues or inspiration they can pick up anything in the room and examine it, whether it is directly involved in the game play or...
Read post

The Anatomy of a Game: Set Dressings

Anything mentioned in the description of a location or problem may be something that the player wants to know more about. In an escape room game for example, the player will want to examine everything in the room in case it provides them with clues or helpful information. Things that are mentioned in passing like fireplaces, furniture, pictures on the wall, or any other background item can be examined by the player if a set dressing is created for it. A set dressing establishes a sort of “labe...
Read post

The Anatomy of a Game: Clues

A player can ask for a clue if they don’t know what to do next or how to solve a problem. Whether there are any clues available to the player depends on several factors. Firstly, did the game author write any clues into the game? Secondly, if they did, has the player exhausted the supply of clues for the item they’re asking about? If the game author so chooses, clues may be provided for: Problems Set Dressings Locations Of course, not every problem nor set dressing may have clues associated...
Read post

The Anatomy of a Game: Problems

Problems Problems are the heart of the puzzles and obstacles that you need to solve or overcome in order to progress through a game. They are flexible and powerful, but reasonably simple to set up. Solving a problem usually has some affect that allows the game play to move forward. It might make a new direction of travel appear by opening a hidden door. It might make an object appear that will be useful to you later in the game. It might simply reveal some information that you can use later in...
Read post

The Anatomy of a Game: Objects

If all you could do in a game is wander around the landscape, it’d quickly become a tedious experience. Objects are one of the things you can interact with in a game. Objects can be in a location. When you go to that location you can see the object. Sometimes a game will require something to happen before the object can be seen. Perhaps a chest must be unlocked or a secret panel opened before the object is revealed. Objects can be carried. You can take an object using the take command, and you...
Read post