What I’ve Been Playing Feb-March 2021


This is a game that has been recommended to me over and over and is a heavy influence on Coffee Talk, one of my favourite games, so I came into Va11-Hall-A with very high hopes.

VA-11 Hall-A: Cyberpunk Bartender Action on Steam

Mixing Drinks and Changing Lives

Va11-Hall-A is a visual novel with a drink mixing mechanic, which is your main way of interfacing with the story. The drink making felt a little clunky – there tend to be a lot of ingredients to add, and getting it wrong means a completely failed drink and having to start again. In contrast, Coffee Talk’s drink making has fewer ingredients, making the process feel smoother, and every combination makes something, even if it is incorrect. The idea that getting something wrong leads to discovery is really nice, and allows room for experimentation and taking your time – ideas that are inherent in Coffee Talk as a whole. Perhaps then, Va11-Hall-A’s less comfortable experience is also thematic – the game is about working a precarious minimum wage job in a cyberpunk hell future, so a clunky drink making experience that’s easy to go wrong is pretty indicative of the setting.


The story and world are very interesting in this game, but the dialog is strange in some places. I believe that English may not have been the first language of the writers, but I am unsure. I’m inferring this by odd grammar bits like ‘will you’ over ‘are you going to’. Another thing that stood out was the use of Miss Firstname as polite moniker, which is something we tend to see in translations of Asian media as an attempt to localise honorifics that we don’t have in English. I believe the team behind Va11-Hall-A are Venezuelan, so I’m not sure if this is something from Venezuelan culture or if its a deliberate choice that is meant to conjure up a Japanese feel, which is possible considering the anime and cyberpunk aesthetic that drives the design.

Another thing that felt odd, but in retrospect is likely intentional, is the way that we jump straight into conversations about happenings in the world with zero context. This is realistic, and does add to a sense of immersion, but is also confusing, as we try to figure out who factions are or what tech is as characters are talking about their relationships to it. Again, with the cyberpunk theme this must be a deliberate choice, as its reminiscent of the way Gibson writes in Neuromancer – a book that on first reading I hated for this reason, but on further readings became one of my favourite books of all time.

Story and World Building

So far, I haven’t felt particularly engaged in the main story of the bar closing down, nor have I felt attached to the characters. I like the world building though, and am curious to see where things go. In particular the additional world building and story information you get through the blogs and news apps are great, lending realism to the world as it feels like there’s a story outside of you and your customers.

The hacking story, online handles and just some of the way the future is handled feels like a blend between the retro-future visions of the 80’s and the mid 2000’s, which is sort of the future I imagined we’d have during the days of the early internet, so I do like the vibe very much.

There’s a lot I still have to see in Va11-Hall-A, and if more play time changes my opinion on it I’ll write a little more about it. I have feelings about some of the characters I’ve met so far – Dorothy in particular disturbed me – but I don’t feel I can comment until I’ve seen how their arcs go, if in fact that is something they get.

World Of Horror

World of Horror Is a Delightfully Frustrating Struggle to Survive | USgamer

I’m struggling to articulate why I love World of Horror so much. The atmosphere, built with the retro graphics, incredible soundtrack and Junji Ito motifs, is excellent, but there’s more to it than that.

World of Horror’s ability to provide an engaging, frightening story using procedural elements is really something. While the overall story of each mystery is hand authored, the individual events, such as meeting enemies, discovering ancient grimoires and getting lost on the subway are all procedural. This makes the game very replayable, but I also think it works on a thematic level. The unpredictability of the events means that you are always on your toes when playing this game. You can’t see the consequence of an action and reload to make a different choice. You can’t die and then plan to act differently next time. Just like the character in the game, you don’t know what horror will be facing you next and you have to improvise with whatever you have at hand. This powerlessness allows the player to relate to their character, as it is felt both through the eldritch god that looms over the town and through the rougelike nature of the gameplay.

Final Fantasy 9

I’ve been playing through Final Fantasy 9 with my partner, and its been really fun despite some issues I took with the characterization.

What's so good about FINAL FANTASY IX?

I didn’t enjoy Zidane’s attitude towards women. It wasn’t exactly offensive, particularly as the game does have some decent female characters, mostly just cringe and very of its time. ‘Bablicious’ – only in the 90s! It didn’t endear me to the main character much.

I was more concerned about the Quina character, who’s attitude and motivations were completley dissonant to the tone of the events in which I collected them. I understand that this was optional, so I give it some leeway for that, but the other characters were going through stories of war, of missing loved ones, of a return home and Quina was talking about food at every opportunity, using what can only be described as baby talk! Having a character come from a sort of native village using this type of language felt like it was close to touching on some very nasty stereotypes that didn’t sit well with me. I don’t think the food as motivation thing was neccearily bad in itself – travelling the world to try foods isn’t exactly unheard of in the real world – but said person doesn’t need to be portrayed as an imbecile, nor do they have to mention food during dramatic character moments for the rest of the party.

Final Fantasy IX] - Matra Magic (Quina's Blue Magic) - YouTube

Regardless of these issues, I have really been enjoying the game due to its other very cool characters which seem primed to have some good growth, and its unique steampunk/Shakespearian setting.

Andromeda Six Chapter 5

Andromeda Six’s fifth chapter was released a couple of weeks ago. I’ve been waiting for this for a while – things are really heating up in both the central story line and the optional romance, with the ‘lock in’ moment for the romance being offered in this chapter and the crew planning an attack on Zovak.

I feel like I need to preface this with – I love this game. The characters are excellent and, for the most part, the writing are world are solid. It feels far easier to talk about the negatives than the positives and I think I may have been particularly harsh with my opinion on this chapter due to how much I loved the previous ones and how long this had been building for.

The Kiss

We finally get the kiss scene in this chapter, but it feels rushed. I see that there was an attempt for a dramatic moment, with your love interest saving you from the abyss and kissing you in a crumbling building, but the kiss felt like it came out of nowhere. Weeks (months? timeline is unclear…) of banter and getting to know each other and then, a desperate kiss in combat. Now that sounds great if the characters thought they would die then and there, but this came after they save you. I would have much preferred to have the saving us scene, then have the kiss later as the crew are decompressing after their dangerous adventure. This does exist to an extent in the forest scene, which I much preferred.

Open Choices

I wonder if the kiss feels this way because of how open the choices are. At this point, bar a couple of blatantly signposted options that lock routes, I’m still able to romance anyone in the game. From what I can tell, there doesn’t appear to be any kind of underlying system determining affection of the crew for the player, nor tracking the player’s choices. There is a single choice when leaving Cursa that lets you choose who you’re currently crushing for, and it appears this has some affect on dialog, but I think it is the only choice that does.

It is only at this point in the game that you are locked into a romance, and it explicitly tells you this. I’m not sure what I think of that. On one hand, the very clear signposting is helpful. It prevents you getting onto a route that you don’t want, but on the other hand, it is not subtle in the slightest which breaks immersion, reminding the player that this is a game and not real people that you are trying to suss out. In real life, when you’re trying to get someone to like you you try to show them your best self while also trying to learn more about them. This is what I enjoy about the romance aspect of visual novels, and the blatancy of the way options are telegraphed in Andromeda Six takes that away.

It is nice change of pace in comparison to games where you have to redo a lot of content to switch paths, and I do appreciate being able to reload a save and see a bit of content with another character, so its not all bad, its just a little ‘gamey’ for my liking.


Compared to the writing in previous chapters (chapter one’s introduction of Damon is especially good), I felt the actual prose was a little weak. Grammar was off in places, and the text for each of the characters was very similar, which was disappointing considering this is the pivotal moment for the romance part of the plot. It felt almost as if there were a couple of scenes written and they were mixed and matched for each character. Vexx and Damon’s scenes inside the building were effectively the same, with different scenes in the forest. Cal’s scene in the building was slightly different, but the scene in the forest was incredibly similar to Damon’s. The scene in the forest does give the player a little insight into how the love interest is in a relationship, but I think I just wanted more distinction. The valentines DLC does a much better job at this, having similar but not exactly the same events due to the characters being attracted to different parts of a festival, and having them react in their own ways to the idea of a festival centered around love.

Another issue I had was that if you choose Vexx its possible you’ve just found out some very dark things about your shared past. It feels far too soon for my liking. I don’t think that the Vexx romance shouldn’t be in there – friends to enemies to lovers though a redemption arc? Brilliant! But it needs time. There’s a lot of talking and figuring out feelings that needs to be done between the MC and Vexx before I can believe they could get back together.

The other think that irked me is that in every romance option the MC says ‘Do you wish I didn’t kiss you?’ to them.
For one, surely it should be ‘Do you wish I hadn’t kissed you?’? For two, why so down? I’ve had the choice to choose my personality up to this point, and that is not something that I would have had my character say. This moment should be happy and instead it reeks of insecure otome protagonist – we’d managed to avoid that up until this point! Have some confidence traveller!

Overall however, I love Andromeda Six and I’m looking forward to the next chapter. I get the impression the game may be wrapping up soon, so exited to see how it concludes!


I’ve finally got a Switch! I saw that Famicom Detective Club was being remade for it, and I needed to get one. Until that comes out though, I’ve got a whole bunch of Otomes to play.

Collar X Malice :: Official Site | Just another Aksys Games Network site

The first of these is CollarXMalice, a mystery dating sim about a mysterious terrorist group terrorizing Shinjinku. So far I’ve played two of the routes. As far as I can tell, the content is very different between routes, with the heroine investigating a different aspect of the mystery alongside a different love interest in each one. Playing all of them seems to be the key to solving the crime overall. I like this approach, as it gives incentive to playing different routes beyond just experiencing the content with different characters. I like visual novels that have clearly been designed with replayability from the offset.

Choice Design and Replayability

Talking of replayability, CollarXMalice has a lot of good comfort options for making playing content you’ve seen before less hassle than it tends to be in other games. The skip function is genuinely fast, and the player can play with speed and content options to decide what to skip and how fast. It offers a history panel, as most VNs do, but offers the ability to skip back to anything in that history – a great option if you’re not a save scum type but want to make a different choice. In addition, once a route has been cleared, the option to start from later chapters in that route is available from the main menu.

Collar x Malice: Unlimited Review - Review - Nintendo World Report

The game does have a lot of dead ends though. Giving both early out game overs and multiple endings and routes gives us a lot of different content to discover, however most of the death endings don’t feel meaningful or interesting in a way that impacts the overall story. Mostly its a case of go the wrong way, follow the wrong person and end up murdered. One could argue this is a way to show how dangerous Shinjinku has become under the lift of the weapons ban, however this is never stressed and it often feels like it was the heroine’s fault for going somewhere dangerous. This is not only not a message I like, but it actively conflicts with the vison I wanted to have of the main character as a cop who could handle herself.

These endings are not well telegraphed. While I may have bemoaned Andromeda Six for its too obvious messaging of choice consequences, CollarXMalice goes too far in the other direction. Following the wrong person can lead to a fairly long section that only leads to death. One of the deaths in Kei’s route did foreshadow the villain of Mineo’s route, which is cool in hindsight, but didn’t feel good at the time.

The general wording of choices was also vague, and I wonder if this was also the case in the original Japanese or if its something that’s happened in translation. For example, there was an option where the main character is discussing what could happen if it turns out her and another character are not on the same side. The options are ‘I don’t want to run from him’ or ‘I don’t want him to shoot me’. I read it as ‘I don’t want to leave him’ or ‘I don’t want to be shot’, but the true meaning of the first statement was that the heroine was telling him to shoot her if necessary. The question was really asking if the heroine was willing to die for the greater good, feeding into the broader theme of greater good and the police system vs individual liberties. Dealing with serious topics like this is great, and its a little disappointing that unclear choices prevented me from expressing opinions on it.

Another slightly odd thing is trigger mode. As mentioned above, the main character doesn’t get to use her weapon often, so when she does its a big deal. Trigger mode appears when she can shoot, but it fails to appear if the ‘affection points’ with your love interest are too low. These points are displayed on a separate menu from the main game, which is easy to miss. There is a small ‘affection up’ UI element that appears when you make the choice, but I wasn’t aware until I googled it that this was actually a stat I could track as a player.

Collar X Malice Coming to PlayStation Vita Later This Year - Gameranx

Even if this was well communicated to the player though, the mechanic doesn’t make sense. There is no thematic connection between how much affection your love interest has for you and your ability to hit a target. The love interest is normally the one directing you to shoot, but this stat doesn’t convey the trust you have in them, its all about their attitude towards the main character and how often you made choices they liked. When trigger mode fails to activate, she automatically misses. A guy didn’t like you enough so you missed your target? Mixing combat and social stats can be very successful – see Persona 4 and 5 – but there’s no justification that makes this one work. I’d rather have seen the affection points lead to a platonic ending, where the duo were still great investigation partners, but not in a romantic relationship. Conversely, the game could have replaced affection points with detective points, increasing every time you made a correct deduction. This could then inform trigger mode, as you know which target to hit.

Story, World and Character

So far I’ve really enjoyed the main story and mystery. The slight horror bent to a detective story is right up my alley, and it combines Japanese ‘death game’ style horror alongside engaging twists and turns over multiple related cases. The world is also engaging, with the police station, bars and streets presenting a cool depiction of Japanese working life. Most of the otome games I’ve played have been set in high schools or magical worlds, so this slightly more adult, grounded world was nice to see.

Unfortunately, that’s where the adult feeling ends. Despite being a police officer, the main character does at times feel like a typical teenage otome protagonist. The game goes to lengths during the opening to show her during target practice and this really excited me, but she is then scared and falters every time combat comes up during the main storyline, being side-lined to show off how badass her love interest is. While there is a degree of battle-couple style fighting together near the end of each story, I’d have liked the heroine to be more on par with the boys in terms of policing and combat prowess.

She doesn’t match the love interests in terms of detective work either, though this does appear to be variable between routes and I do hold out hope that others may be better. Though they were appealing love interests, I found myself more jealous of than attracted to the main band of detectives. I wanted to be a badass hacker cop or an ex-division one detective AND date guys who were just as cool. While the fish out of water heroine can be a fun way to introduce a player to a fantastical world, in a more grounded one that character type is far less appealing.


Parts of the romance in this game are fantastic – seeing the characters learn and grow alongside each other. In particular, the slow burn of distrust, to reluctant work partners, to friends of Mineo’s route was fantastic. It felt realistic and not forced – there was no love at first sight, just the slow realisation that these were two people who had similar attitudes and things in common.

Damn it, Damien! — Bae in Review: Mineo Enomoto, Collar x Malice

There was great drama in Kei’s route, with him being unsure of which side the heroine is on and this being used to push and pull them apart. Unfortunately, his bizarre death wish was off-putting, and when we finally realise where his strange beliefs come from, they are solved in an instant via the power of love. This game doesn’t shy away from complex topics, but I think this was one that needed a lot more nuance to be handled correctly. This route also had you investigating a stalking case and brought up some excellent points about stalking and the Japanese justice system, all while including a love interest that literally followed you without your knowledge. At first I thought this was purposeful and was going to used to prove a point or as a source of conflict but it was never addressed. In the end it just came off as incredibly tone deaf.

Collar X Malice Opening Movie [English, PSV, Full 1080p HD] - YouTube

There are some odd attitudes towards romance in this game that, again, wouldn’t be out of place in a game featuring teenagers. In Kei’s route the heroine thought that he was only interested in her platonically, despite him telling her multiple times he was interested, and in Mineo’s route it says she’s never kissed someone before. While I’m sure there are plenty of adults in this situation, its not the majority and if I’m playing an adult I’d rather she’d have a more adult attitude. I’m 27 – I want a character I can relate to!

I really liked the side characters in the game. Having work friends and a conflict to resolve with her brother makes her feel like more is going on in her life than just the main plot, and its good to see a main character than has a support system outside of just the romanceable characters.

Unity For Dummies

Its me, I’m the dummy.

I wanted to get out of Ren’Py for game making. As much as I love it, I’d like to create some narrative based games that don’t rely so heavily on the visual novel format. I chose Unity with C# as I’ve been wanting to learn a little more code and C# is a pretty good skill to have on hand for my technical art day job too!

The game I had in mind revolves around using random cards to build up a spooky haunted house exploration story, much like World of Horror or Betrayal at House on the Hill. I’ve got some game design stuff that I’ll share in another post.

I sort of rushed right ahead into this, then realised that Unity doesn’t work in the way I’m used to with regard to classes and data storage. (I’ve used it professionally, but only as an artist.) Being in python mostly I’m used to just defining a bunch of classes and functions and using them whenever and wherever I want to. Unity is a lot more strict on what types of classes can be used where and how things should be structured.

The video below was a nice intro to how classes work in Unity – super simple stuff, but exactly what I needed. It shows how to make a constructor using the same name as the class, which was one of the things I was unsure about as I’m used to Python’s __init__ function.

My first task was to populate some UI text using predefined card objects, and I needed a card class, a dictionary of all existing cards and something to handle populating the text.

At first, I made three classes, all as monobehaviours, as is the default, and everything broke! Monobehaviour classes are designed to be attached to GameObjects, not to be created inside other scripts. As an alternative to monobehaviours, you can use a ScriptableObject – a data container that stores unchanging data, create your own super class or not have it derive from anything. For data with no behaviour, a struct is also an option.

In the end, I made a struct to hold the card data, a ScriptableObject to hold the dictionary of cards, that also contained adding and removal functionality, and a Monobehaviour attached to the main canvas that handed picking a random element from the dictionary and populating the UI fields with it.

Created with Coggle.it

The next step with this is to work out how to create card objects outside of runtime, and how to populate the dictionary with these. It looks like ScriptableObjects can be created as .asset files and used in editor, so I’m going to look into this as an option. Ideally, I’d love a tool that is aimed at narrative designers that lets them not only fill in the content, but create choices and localise text – that’s getting well ahead of myself though!

Choice of Games


I’ve played a few Choice of Games titles recently and really enjoyed them, so figured I’d try my hand at choiceScript, their proprietary scripting language for creating games. I don’t have much to write about the language itself, as it was fairly easy and has a lot of similarities to ren’py. I’m much more interested in the design philosophy of the company, which I’ll cover when talking about their style guide.

To test it out, I made a wee intro about a high school paranormal investigation club which, since I enjoyed making it, I intend to develop at least one chapter of.

Style Guide

The choice of games style guide is here.

I particularly like how there is an emphasis on mechanics mattering and being story appropriate, diversity and player expression. All things I love!

Conventions in Choice of Games

I had a look through the Choice of Games I’d previously played to get a feel for the writing style and how choices are presented.

Generally, it seems that they are written in second person, present tense, with the choices in first person present tense. It’s as if a narrator is talking and the player is replying. Past tense is used in flashback scenes that determine character traits.

Different games present their choices in different ways. Choice of romance uses a lot of questions, sometimes without diegetic context, such as:

‘Are you a daughter or a son?’

Creme de la Creme doesn’t really ask questions – you just pick the next thing that happens.

“Your father straightens the collar of your coat. “
“Remember you’ll always be our son”

This lets the player choose what other characters do and say in addition to their own actions.

Vampire the masqurade presents some choices as incomplete sentences with ellipses.

“drove from city to city learning to do what you loved, which was…”

What I’ve Been Playing Dec 2020 – Jan 2021

I had been doing monthly ‘What I’ve Been Playing’ posts over on my now defunct narrative design blog, which served as a nice way for me to articulate what I enjoyed/thought worked about the games I’ve been playing and served as a bit of shorthand analysis. Though I wasn’t making the most astute observations – I am still fairly new to the narrative design side of game development – it served as a good incentive to ‘play like a designer’. (I do play games like a tech artist, but that mostly consists of zooming in on textures and trying to eyeball framerate issues…)

I’ll do one for February soon, but in the meantime, here’s my thoughts from December through January. Unlike the other posts I’ve moved over, this isn’t edited so proceed with caution, I guess?


Choice of Romance

Choice of Romance is an interactive fiction piece using the Choice of Games engine. I really enjoyed this, though it felt a little short – I have sequels to play though!

The opening to this game was great – we are thrust straight into the action with a barn fire that sets up a pastoral setting, the fact you have siblings and that there’s magic in the world. It also allows the player a choice that shows part of their personality.

One thing that’s excellent about all the choice of games I’ve played so far is the character customisation. They allow you to play as multiple genders, customise your look and pick a name from a list of setting appropriate names.

The way these choices are presented are very nice. For example, when you decide what you want out of your forthcoming adventure, you make a wish on a butterfly, and when you decide your eye colour you are looking in the mirror. They are small elements, but these make the choices feel immersive and part of the narrative, rather than like using a character creator at the start of a game. Its nice to not have these all lumped in together – you don’t get a full description of a character at the start of a book – but is wise to keep them near to the beginning before the player has a picture of the character in their head.

Having a description of what your character looks like, despite there being no sprite or model for them is really cool. It brings me into the story if I have a strong image of who I am playing as. I tend not to play as myself in these, but play them multiple times as different characters.

I was slightly disappointed that you could only play as straight or gay for the romances and that there was no bi option, but the choice of the main character’s sexuality determines the gender of the love interests, so I see why it was done this way.

Same character, different gender is something I’ve encountered a couple of times in Choice of Games and it is a really interesting concept. The character’s speech, actions and much of their description is the same but their pronouns are changed. This is great for catering to people who want to play as different sexualities, but its also incredibly interesting in terms of how the character is seen and their social dynamics.

There was one character in this game who was described as unattractive, boring and rich. They are the safe but unromantic marriage option; the person you marry out of duty not love. When I played as a straight man, she seemed someone to be pitied, a little desperate but harmless. When I played as a straight woman, he seemed creepy and predatory. They had exactly the same dialog.

I figured this was to do with social expectations and my own internal biases, but couldn’t figure out if it was the gender of the love interest or the gender of my player character that was swaying my opinion. As such, I decided to see how she came across when I played as a lesbian woman. She was somewhere in the middle – she seemed less harmless, but the pity came through too.

This is far too complex an issue to tackle in a wee blog most about games I’ve been playing, but overall it came down to the idea that as women we are socialised to have our guard up and be on the lookout for potential violence, especially coming from men. Even in this fictional gender neutral setting, my own learned behaviours are coming through.

Whether this is a right or wrong thing to think, many people do think this way, so considering the wider social views on my characters, both in the real world and in their fictional world, could add something to my writing.

On a completely different subject, I thought the pacing of the story was interesting. Some events, even entire months were glossed over, where other moments were seen in great detail. This is something I’ve struggled with in my own work so would like to practice.

Speaking of practice, I’d like to try out a character creation segment for myself, and possibly even give the Choice of Games engine a go, as I’ve enjoyed everything I’ve played from it so far!


Perfumare is a dark fantasy visual novel available on itch.io.

Like Choice of Romance, Perfrumare doesn’t show you your player character, but allows you to choose your gender and clothing choice, this time while looking through a shop window. Its another nice, natural hook that allows the player to define themselves.

The AD in this game is great. Chromatic aberration on everything is such a mood. The sound is also great. There’s no music, but the ambient sfx really sets the mood.

This game had a really excellent writing style. I liked the longer sentences and strong use of similes for description. I’m struggling to find the words for why these are so good, so I’m just going to dump some of my favourite excerpts here.

“His eyes lock with yours, just as the door snaps open, with a long, deep rasp that brings you back to reality with a start.”

“Just when you thought it couldn’t get any worse, a pungent oder of death reaches your nose, heavy like steel and clogging like ash.”

“Something stirs in your mind, blaring like raid sirens; an echo of screams and endless darkness.”

“There’s a click of the floor button being chosen, then the ping and glide of the door, the humming noise of working machinery, the shift of the ground.”

“But the dizziness returns tenfold, knocking you off your feet so unexpectedly you smack your knee against the bed frame in your haste to stay standing.”

Obey Me!

This game was a mistake.

Obey Me has been advertised and recommended to me a lot, as I’ve downloaded dating games and other ‘girly’ games on mobile. The pestering broke me down and I figured I’d give it a go, thinking it was a visual novel/dating sim.

It is not.

It is a card collecting, gatcha, dance game with some visual novel story sections and a messaging app.

In its defence, this game is incredibly polished, has excellent Japanese voice acting and, despite its proclivity to spam you with notifications, doesn’t actually prompt you to spend money very often. If you are after a card collecting, gatcha, dance game, I think you’d be quite happy, but, like many mobile games, that is not what it is advertised as.

Now, it does have many romance elements – it has the aforementioned visual novel and messenger elements, alongside a gift giving and touch system not unlike the skinship system in Tokimeki Memorial Girl’s Side – a game that I will defend with my dying breath. However, the issue was that you know nothing about these men. You are thrown into their world, given a quick introduction to some of them based on deadly sin archetypes (not necessarily a bad thing – give me a well written trope any day) and, that’s it. You can now give them gifts and touch them. It felt weird, and non-consensual. I know these are pictures on a screen, yet I felt like a creep just touching this man’s hair who I knew nothing about beyond ‘hot demon boy’. I think moments like that need to feel earned and come from a place where its clear both characters want it in order to feel like a nice bit of romance gaming and not some creepy objectification thing.

Beyond this, I had to do a lot of dancing to get to any plot, much of which was not interesting. It appears to be slice of life so far, which is great when you have interesting and engaging characters, but not so much when you know very little about said characters. I also found the writing to be somewhat awkward, with unnatural sounding dialog, which I believe is probably down to translation.

I’m uninstalling this before I’m complied to play more. Despite thoroughly disliking this game, I seem to keep being drawn by these push notifications.


The Uncle That Works For Nintendo


The Uncle Who Works for Nintendo' is your childhood insecurities made  creepy flesh - The Verge

I’d had this sitting in my itch ‘To Play’ collection for ages, and had forgotten why I’d added it. I was expecting a short, silly horror game without much substance and I was proved wrong delightfully.

I went back and explored every option here in order to learn how the game worked and get every ending. It being short to run through once was much appreciated here!

The premise involves being a kid and staying over at your friend’s house. She boasts about her uncle who works at Nintendo, you talk about school, fight or stay friends. Depending on how you speak to your friend, and how much you probe her inner thoughts, you can realize that there’s something sinister about her uncle, who is arriving at midnight. Why has everyone forgotten her brother ever existed, and what price did she have to pay for all these new video game consoles?

Tugging on nostalgia, it invokes that kid at school who always had some outrageous boast, alongside featuring a creepypasta/urban legend type feel. I’m a sucker for nostaliga and internet horror, but there’s something more about this game that makes it so good.

Gameplay wise, its a choice based game; however the addition of optional elements that seemingly provide flavor text, but are later revealed to change the options the player has available to them, elevates its complexity. It also features time management, as the clock counts down to the uncle’s arrival. In playthroughs after the first, the player will be trying to figure out how to make the most of this time to give them new options when the uncle arrives, or trying to leave before that happens.

The game is just excellent aesthetically too. The sound is fantastically spooky, the writing quality is good and the abstract visuals, which I’ve seen used unsuccessfully in a fair few visual novels, work well in complementing the abstract terror that is the uncle.

Vampire The Masquerade: Night Road

Vampire: The Masquerade - Night Road Revs Up the World of Darkness

This is a Choice of Games book based on the ttrpg.

The setting was very interesting, and while I don’t remember there being a lot of descriptive text, I did come away with a rich picture of the world.

I enjoyed the game, however I got a very sudden ending, which I suspect may have been down to mechanics and stats not being appropriately telegraphed or tutorialised. I understand a tutorial is not very immersive and is the last thing you want in a game like this, but as far as I can tell it was using mechanics from the tabletop game, which are significantly more complex than a typical Choice of Game.

Part of me thinks discovering how the stats work through play is a good thing (though would be better if your character was as green as you), but the shock ending where I was going about my tasks and unknown folk just burst into my apartment and killed me was really dissapointing, especially as I wasn’t able to save the game. All my hard work, just gone. Now – that could be saying something! About the fleeting nature of life, random acts of cruelty but honestly, as much as message is important, tragedy has to be cathartic, and that was just unearned and locked me out of my experience.

I believe there is a Storyteller Mode which displays stats, so I may try the game this way and see how I feel about it.


Monsterhearts 2 - Buried Without Ceremony

This one is a tabletop rpg. I believe there’s a lot of overlap between IF and RPGs, so figured I’d talk about it!

The low-prep, improvisational nature of this one is quite new to me. I normally run D&D with a heinous amount of prep – think writing an entire source book prior to playing a run shot. I think this is good for me as a storyteller to get used to thinking on my feet a little more. Having said that, the best way to be able to improvise well in a way that makes sense and ties together nicely is, in my optinion, having a solid grasp on your world, so I did spend time prepping the location and its key factions. Having these factions make moves against each other in the background, regardless of player interaction, puts them at the center of a thriving world and means there’s always some kind of danger to walk into.

Talking of danger, one of my critiques of my story is the constant escalation. There was a running joke that we were just playing Riverdale, and I do feel like our session shared the common criticisms of that show! Things went from ‘who’s going to the party’ to ‘a character’s parent has been murdered and a gang is taking over the town’ very quickly.

In terms of the game system itself, I really enjoy how the rules convey typical teenage experiences, and the focus on relationship building over combat. Its also rules-lite which is absolutely my jam. Nothing like a maths session to break immersion! (Looking at you level 15 D&D campaign.)

In particular, the seating chart, where the group collaboratively builds NPCs, is a delight. Keeping track of 15 NPCs during game is not though – and even then I struggled to have a character for every situation. We’re playing a new setting soon, so I hope we’ll be able to include more diversity in the NPC dynamics to make sure they fit every potential situation.

Final Fantasy XIV

Legacy FFXIV Title | Final Fantasy XIV | Know Your Meme

MMOs are a genre of game that I have always loved the idea of and never actually enjoyed. I partly blame the mythos developed around them by the ‘we got stuck in the game’ style stories I saw a lot as a young person – Digimon and .Hack come to mind, but by the time I was playing these games, I already had a picture of a much richer experience than I would actually receive. I imagined I’d meet new people who I’d form bonds with for life, that hanging out with them in the game would be as fulfilling as a real life friendship. I imagined I’d be a hero, standing out from others in the game and joining in on massive events.

Perhaps if I ever got to raids/dungeons/high level content in these games I would get a glimpse of something akin to what I imagined an MMO would be, but the grind to get there is far too long for someone conscious of their time (they say, writing a blog post about video games… ;)).

There’s just nothing exciting about killing 10 wolves, or clearing a cellar of rats. I believe the true fantasy here is not being a hero, but having easily managed tasks that can be ticked off a to do list. How many of us have a constant to do list and feel like its never done? The whole thing, at this level at least, feels very passive. Click the button, get the task done, get the level up music. Almost skinnerbox like.

While I understand that there’s a strong appeal in a game like this, especially to those who just need to tune out, its not why I play games. Playing FFXIV was fine, but I don’t want to spend my time on fine. I’m just as passive watching a TV show, and then I’m getting drama, I’m getting a story. I’m just very driven by those concepts when engaging with media.

Being a story gamer though, I am loathe to admit that I skipped a great deal of the dialog. I just don’t want to sit and listen to why ‘S’hojobi’ (The names in this game are…something.) needs me to kill rats. Its not engaging. It doesn’t lead to a larger plot point, it doesn’t teach you anything about her as a character. She’s just a to do list deliverer.

I’m still considering playing more to see if its any different at high levels and in a group, but I’m not sold. If anything, I’ve found the imagined experience elsewhere – what was that initial description but a game of D&D?

Ambiguity in Text as Interaction

I’ve seen the idea that every choice in a branching narrative must be meaningful or ‘do something’ floating around, and it doesn’t sit well with me. I really like choices that don’t functionally do anything, but allow me to express myself as a player and get to know/create the character that I’m roleplaying.

The video below has a lot of great points about interactive fiction, but what interested me most was the idea of ambiguity in the text as it reinforces my thoughts on this topic. Ambiguity lets the player shape the story by filling in parts by themselves, while serving the writer because it allows the same text to take on differing meaning without the need for additional content or code.

Heather explains why it’s a good thing to have choices that don’t affect the gameplay on a mechanical level nor show the player entirely new pieces of text. Small bits of flavor or backstory, especially where it relates to the character and their life, can entirely re-contextualize scenes for the player, leading them to make different choices. As in the example in the video, while the player will always have to fight the enemy captain, whether that person is a true enemy, a friendly rival or a lover-turned-enemy completely changes the emotions surrounding the fight and thus leads the player to a different experience. I’d certainly be playing three times over to experience the plot from those perspectives!

Mechanics as Theme and Aesthetics of Play

Mechanics as Theme

On the back of my choiceScript experiments, I started thinking about expanding the idea I was using to test the language and what stats I would use. I don’t want to try and force a story around a set of mechanics because the story won’t be very strong, nor do I want to try and add stats and choices to an existing story because then the stats won’t be particularly meaningful and there will be an obviously canon set of choices. What I want to do is to start with theme, genre and atmosphere and build a set of mechanics and narrative goals that align with these. I’m thinking of it more in the way I design content when I’m GMing a ttrpg than writing a novel or designing a video game.

Stats should:

  • Represent player’s relationship to their world
  • Be important for gameplay and have consequences
  • Express who the pc is as a person
  • Express the ideas and themes of the narrative

Mechanics and story should be so intertwined that you can’t separate them – one without the other is significantly weaker.https://www.youtube.com/embed/f5I6uo39ujQ?version=3&rel=1&showsearch=0&showinfo=1&iv_load_policy=1&fs=1&hl=en&autohide=2&wmode=transparent

This extra credits video expands on the topic of mechanics carrying their own sperate – often opposing – meaning from the narrative themes. As an example it uses Pokemon. The plot appears rather fluffy – being friends with the Pokémon as your cute animal friends, but the mechanic is essentially about forcing animals to fight each other. You get rewarded for winning battles in exp and money. This is the sort of thing I want to avoid.

Aesthetics of Play

Another Extra Credits video talks about Mechanics, Dynamics, Aesthetics – a paper I’m pretty sure I read about six years ago for uni, but I’m just riffing off the video here.

Mechanics = Rules and systems
Dynamics = Actual play
Aesthetics = Reason to play

Genre is explicitly defined by aesthetics in other mediums. It appears that game genres are mechanically focused, but really we are defined by aesthetics too.

For example, portal is a puzzle game, though it functions as an FPS. Fallout is an RPG though it also functions as an FPS. The genre truly defines what you’re getting out of the experience, rather than the physical mechanic.

Personally, I used to think that games should be defined by two genres – their narrative and mechanic genres. So ‘action shooter’ or ‘romance visual novel’. There’s some redundancy to this however – in the examples I’ve provided, the mechanics and narrative generally do go together and follow expected conventions. This format also adds to the perceived divide between mechanics and narrative, which undermines both game design and criticism – mechanics are a story tool and if they do not support the narrative themes of the game they are not successful.

As an example, if you used this two genre idea and had a ‘romance shooter’ – how does that even work? You’re posing your MC as a lover, then they gun down a bunch of people? Even if it’s to save the one they love, the message is irreparably changed by the mechanics. Killing one person to save the one you love is dramatic and shows how far you’d go. Mowing down armies just says that human life is worthless in this world and/or the MC is a psychopath.

Conversely, I worry that thinking like this just reinforces tired genre conventions. If the mechanics and the story must match, do we not get anything new? Its one I back and forth on.

Core Aesthetics:

  • Sense Pleasure – Good music, art etc.
  • Fantasy – Step into a role you can’t/don’t perform in real life.
  • Narrative – Game as drama.
  • Challenge – Joy in overcoming obstacles.
  • Fellowship – Social gaming.
  • Competition – Expansion of social gaming that is combinative.
  • Discovery – Uncovering the new, either through environment or mechanics.
  • Expression – Creative expression.
  • Abrigation – Pastime, disengagement.

Genres generally share a core aesthetic.

CoG will have narrative as the main aesthetic, with creation and discovery as secondary elements.

What Makes a Good Character Introduction?

This is a port of a couple of posts posted on my old narrative design blog, focusing on what makes the player connect with a character when they first meet them. I use two characters from the sci-fi drama/romance visual novel Andromeda Six.


Damon The Assassin - Andromeda Six Ch 1 - YouTube

Before we meet this character we hear a lot about him – that he’s an assassin who plays with knives and calls himself a spy, but also that he talks bigger than he is, and Bash can hear him coming from a mile away. This gives the player an image of the character before meeting him – a dark, dangerous assassin, but perhaps someone with a bit of an ego who isn’t taken as seriously as they’d like. For those that play these types of games often, the writing invokes the ‘Bad Boy’ trope. Whether this is played straight or subverted is yet to be seen, however players who like this sort of character will already be warming up to him.

Damon’s first line is interrupting Bash as he gossips about him. This shows us from the offset that Damon is no stranger to confrontation and that he relays a certain outward self-confidence.

Saw me what?

He follows this up with clear sarcasm. This is probably why I like the guy so much – one after my own heart!

Delightful. Please, don’t let me stop you.

Before he is given a chance to say more, his body language and the way he looks at the player character is described. Getting some physicality in there is really nice and helps transport the player into the story – we can imagine the movement as if blocking out a play.

The use of the word ‘prey’ is clearly pandering to a certain audience, but from what I’ve seen of the fan community, Damon is the most popular character, so the devs really knew who they were making this for! I’m in this audience myself so…can’t argue!

Damon is leaning nonchalantly against the wall

cold stare…makes me feel I’m not so much a guest on this ship but his prey

The player character then wonders if he really is an assassin, calling back to what Bash said earlier and introducing a mystery around the character. Getting drawn into the story of a mysterious character and trying to find out more about them is an excellent hook.

I wonder if he really is an assassin.

I feel a slinking presence behind me, dark and ominous and entirely dangerous.

After this, Damon warns the player not to interrupt a conversation happening on the bridge. He calls them little and stupid, shifting him towards antagonistic and shifting the power dynamic between him and the player. Despite this – he was giving them a helpful warning, which might suggest that he has their best interests at heart. This small glimpse of kindness in an otherwise mean character is a complete gift to the players who want to romance a ‘scoundrel with a heart of gold’. We also get another little physical detail in that his voice is described as raspy.

Looks like our little stowaway has lost more than just her memory, You’d be pretty stupid to interrupt that conversation.

The player does not reply to his comment about the conversation, and he responds with:

What’s the matter, cat got your tounge?

It then describes his grin as ‘wide and wolfish’, coming back to the animal metaphor we got when the player was described as his prey.

We then get a little plot from him – we find out about another character and his opinions on them. He goes off on a story about a tiger which is not entirely relevant but does show character. Mostly, it leads into this line:

Had big fluffy doe eyes, kind of like you.

Considering we have this context of ‘prey’ – this is excellent. He’s flirting.

An interesting follow up to the reams of description is this line:

I’m sure you like what you see, but its rude to stare.

It brings the necessary descriptive elements and moment to moment gameplay together, making the present tense writing feel more real and develops player presence a bit. This would probably be obvious and annoying if it happened everytime a character was described, but for a character like Damon who would call you out, its excellent.

We are then given a choice that sets up whether the main character has any initial interest.
One option lets us ask why he thinks he can intimidate us, shooting him down, and the other sets up a flirtatious argument that will become the norm for interaction with Damon. I like the idea of letting the player make an initial assessment of the character, whether just for the player’s headcanon or to use mechanically to drive the narrative later on.

Regardless of what you say, Damon gets into your space, with some more nice character description and flirty, yet antagonistic, dialog. When the player calls him out on messing with them, he shows his true colours and confesses that he really only wanted to save them from the captain’s wrath, elaborating on the ‘scoundrel with a heart of gold’ trope I mentioned earlier.

Overall, we see that Damon is a sarcastic, antagonistic, domineering flirt who – despite it all -has the player’s best interests at heart. His motivation in this scene was to prevent the player from interrupting the captain. I like that he has his own motivation here and its not a clear ‘introduce the character’ segment – it makes for a much more interesting glimpse into who Damon is.


June is a very different character archetype from Damon. The first time the player meets him is also in the opening of the game, so the scene has to pull more weight in terms of establishing the world and player character.

We get a very small amount of narration before we meet June. All we know about our character is that we are unaware of where we are and that we feel unwell.

June appears, and we see his sprite alongside his theme music. The music and art do a lot here. As his theme’s baseline is reminicent of a banjo and he has a gun strapped to his chest, we get a cowboy/gunslinger vibe before he has any dialog. Despite this, we see a surpised, soft expression, which undermines some of the steryotypes about this type of character.

The first thing we have described about June is his height – both an important character detail as is revealed later – and something a lot of people are into romantically.

His first lines are apologetic and kind, showing that politeness is one of the defining characteristics of the character.

Oh, I didn’t know you were awake…Apologies, I should’ve knocked.”

We get some description of his mannerisms, describing the way he sits in the chair. We are in bed at this point, so him sitting down brings us to an even level. Had he remained standing, he would have come across as powerful or intimidating and that isn’t the vibe the designers intended for June. Even though it isn’t seen in a visual novel style game, blocking is still important.

He asks the main character how they are, again affirming his polite and kind nature.

“How are you feeling?”

After this we seen an early appraisal of him from the main character. The kindness and safe feeling that June gives off is more explicitly told to the player.

“gentle half-smile…casual posture”

“pistols…nothing in his demeanour that suggests he intends to use them.”

“He certainly doesn’t look like he’s here to harm me.”

We get some early hints of romance after this, describing him as warm.

“something I like about them. Something…warm.”

He then worries about the main character, yet again showing his demeanor and alluding to plot things.

“I was worried about you after…”

This leads into the player learning they have amnesia, and a section about them trying to get their memory back.

I used a similar device in my Sarriah opening, but what works here is that it is done fairly slowly. In my opening the player asks what happened and Sarriah immedatly assumes they have amnesia – that doesn’t make a lot of sense. In Andromeda Six it is gradual. The player asks where they are, June introduces himself and the ship and then asks the player to introduce themselves. When they fail to do so, we realise they have amnesia.

He then takes the player through some breathing exercises (again, because he cares – we really know this by now) and reveals how the player was found and where. There are no assumtions made about who the player is, which leads well into the main plot. Again, this is where my introduction fell flat, as I had Sarriah just assume the player was part of a worker’s rebellion. Her assumtion is fitting of her character, but it needs to be drawn out significantly rather than magic leaps of logic.

Back to June, we get some more hints of romance as he helps the player to stand. We get a lot of descrription about how the main character feels in his grip, and some typical romance physical contact.

“…concern dripping from him.”

“June offers his hand to help me stand, and when I take it his skin is surpisingly warm, a stark contrast to the cold metal walls.”

“Despire the rougness of his skin, tha callouses on his fingers, his touch is gentle.”

“…a strong arm wraps around my waist, holding me up.”

“…golden tan. About the strength I can feel under the fabric of his clothes.”

The player is given the option to flirt as part of this segment, which leads to June being very embarassed. This reaction is very fitting to the character, helps establish your character (would you flirt with someone you just met when severley injured?), and gets the notion that this character is a love interest across early.

Overall, we see that June is a sweetheart who cares about the player’s wellbeing – not because he’s attracted to them, as is implied with Damon, – but because he’s a good person. His motivation in the scene is simply to check on the player, but it doesn’t come across as a simple meet the character because its very much in his nature to do so.

It feels decidedly less forumlic than Damon’s introduction, though that may be because I pay attention to Damon-like characers because I have a type…

If we were to boil meeting June down to a forumla it would be:

  • Introduce the character with some dialog typical of their main personality.
  • Show the character’s body language.
  • Have some plot.
  • Have some flirting and physical description.
  • Give the player a chance to comment on how much they like the character.

This is similar to Damon, but with more plot and none of the ‘what do others think vs what do you think’ parts. This shows that hearing other character’s opinions of the character before you meet them, while interesting, isn’t necessary, and might be something that is only needed for characters who’s internal natures differ from the front they put up.

Diabolus in Musica Postmortem

Diabolus in Musica is a horror visual novel I made in a month for the Second Annual Spooktober Visual Novel Jam hosted by DevTalk+.

In this article I’m going to discuss what went right, what went wrong and my plans for future development. I’m also going to include some critique of the work – I’d originally planned a separate post for this but I’m finding it difficult to separate the two.


Everyone’s favourite topic – scope! I’ve generally gotten better at scope over the past couple of projects I’ve done – because I’ve actually finished them! This jam lasted a month and all materials barring concept work had to be done within the time frame.

With Diabolus in Musica, the actual amount of content I aimed to deliver within the timeframe was well scoped. My initial plan of five character routes was immediately taken to two, and when I realised I was running out of time I cut the number of endings from four to three, ensuring the remaining content would actually be finished.

All five characters – only two have routes within the game.

However, I wouldn’t call the project well scoped. The story I wanted to tell didn’t fit well into the one month creation period. It needed time to breathe that I couldn’t give it. The audience needed to see how the mc’s relationship to their five friends developed – how they met, how they became friends and how the relationships changed as it became clear that mc was no more than fodder for Niccolo’s plans.

My major influences were books where the plot and themes revolve around characters who at first seem glamourous, untouchable and admirable, but through the eyes of a naïve outsider, the reader learns the dark truths behind the glamor. This sort of tale just can’t be told over a half hour visual novel. I needed a far larger project to convey my meaning and create an engaging experience.

Based on the positive responses from friends I’m considering maybe continuing the project in the new year, but I want to finish up other projects and see how the streamers from the jam react first.

Time Management

I had absolutely zero time management for this project. I worked on it whenever I felt like it, got distracted and did things like try to write my own particle system which was abandoned, and spent more time on the sequences I liked than the ones I was less keen on. It was a bit of a disaster that led to a hurried last week.

There’s a lot of value in playing around and experimenting, but not when you have a deadline!

The last time I did a game in a month I spend an hour on it every morning before work, then a little more at weekends. This was a good pace and one I’m going to employ for further projects with this time frame. I do think a month is a good amount of time – its enough that you don’t crunch, is long enough to make a complete product but also short enough that if it doesn’t work or you don’t finish it wasn’t a waste of your time.

Another note on time management is that that last game jam was completed in March. For obvious reasons my mental fortitude was significantly higher at the time, and that had no small impact on getting the game done.


My general pipeline for working on visual novels has been…not to have one? I write all my dialog directly into my IDE and add expressions, effects and sound at the same time.

From talking to other VN devs it appears this isn’t common practice, and most write their dialog and narration in a separate screenwriting program or in something like twine before then copying into their game code.

This isn’t to say I don’t plan anything – I have outlines and diagrams on paper but its all fairly loose.

I’d like to try planning in an external editor and see how this affects my process and productivity.

Another issue with my pipe for this was file organisation. Because this game was more route based and less linear than my others, rather than numbering each scene and separating them out, I made files for each of the characters. This was beyond confusing and I wouldn’t take this approach again.

Writing and Characterisation

Something that I felt undermined the overall quality of the game, in conjunction with making it more difficult to write, was that both my mc and the characters they interacted with lacked consistency. This was in both personality and tone/word use.

The expositionary narration and the actual character’s dialog didn’t match up.

When I was writing January Edwards: PI, I had some strong characters who had been bouncing around in my head for a while, so I had a good idea of how they would talk and react to situations. With Dream Dilemma, the characters were less defined but they were heavily based on archetypes and the game had a theme of density vs willingness to make your own decisions, so I got away with a lack of depth or solidity in their characterisation. I’m now realising that I did a lot with DD to make it easy for myself!

I think if I had made this a longer project as mentioned above, I would been able to develop the characters though additional scene writing and them just living in my head over time. I suppose with this sort of timeline my best bet would have been to make some upfront decisions about speech patterns, basic personality, etc. that would then be used throughout.

The largest issue with character was with Niccolo – I would have liked to set him up as shy and awkward, then drip feed his true nature to the player, so they feel like they work out he’s bad just as the game reveals it.

Niccolo goes from sad boi to pure evil in 2 seconds.

Another thing I picked up on during editing was that my labelling for choices was inconsistent. When the mc wasn’t going to say much I usually used the actual line, but when it was longer I condensed it into something like ‘disagree’. In future I think I’d like to choose either a description approach or a shortened version of the character speech approach and stick to that.

One of the choices in the game where what you say is condensed.

It seems that most visual novels speak in second person, addressing the player as you, and are in present tense. I used first person past tense, just because its the way I’m most familiar with writing. This made some things tricky – especially when the player character was surprised or wondering about the future. I think I’d like to try a second person, present tense approach next time!

Art Direction and Use of Assets

I felt that the game lacked a cohesive art direction. It wasn’t bad, or jarring, just unspectacular and lacking in identity. The use of generic, paid-for assets meant that none of the art was created with the themes of the game in mind, nor was it created cohesively. Because I used an asset pack for the backgrounds and a single tool for the characters, there was at least a shared vision between each of these elements.

The character sprites all used the same pose. This is a limitation of the software I used to create them. An improvement would have either been to commission/team up with an artist, use different stock assets that were more disparate or make the art myself.

Its very obvious when characters stand next to one another.

The single commonality seems to be that everything is very blue. This is largely due to the background art and the night-time setting. It makes things too dark, makes locations hard to distinguish from small screenshots and gifs and just gives a depressing air which isn’t what I want to put across. In future games I’d like to have a strong colour scheme that is representative of the themes, tone and genre of the game.

So much navy!

One last thing that I think would have improved things overall is replacing the newspaper clipping end scenes with CGs involving the characters. While I think the newspaper is a neat device, it wasn’t thematically appropriate to the game – where had newspapers appeared before the ending? Nowhere. Where had the idea of reporting and news been in the story? Nowhere. In my detective game that might have worked, but not here.

A neat device, but not appropriate for the game.

CGs also appeal to the type of audience this game was for. A CG of Haydn waiting in the rain or the player leaning in to kiss Niccolo before the big reveal would have driven excitement for the characters and upped the romantic tensions of the game.

The one thing I really liked about the art was the dust particle and the lightning effects. It would be nice to be able to put that amount of polish into all scenes! Generally that’s going to need more time or more people.

Cohesion Between Art and Writing

There are a couple of instances in the game where the art doesn’t match the writing. For example, the hallway made the school feel Japanese and the chairs in the final performance hall didn’t look like you could be restrained to one.

Because the art was fixed, the writing should have taken its ques from the art so that the game felt like a better whole. Alternatively, I could have made my own art or teamed up with an artist, though both of those opinions have considerable impact on scope and production methodology. One of the biggest motivators for me is seeing finished art in the game immediately as it feels like a ‘real project’ and because I have an art background but haven’t flexed those muscles in quite some time there tends to be some confidence barriers that slow me down.

Code and Mechanics

I don’t have an awful lot to say on code – the mechanics of this game were very simple and didn’t do anything beyond the base capabilities of ren’py.

I did at one point attempt to write a particle manager but I scrapped it very quickly – if I want to write things like this they need to be factored into the plan at the start so I have additional time.

One very interesting thing that I did learn from a couple of art bugs however was that I’ve been using hide/show images incorrectly the whole time I’ve been using ren’py – that was a surprise for sure. I had been hiding and showing every image as it appeared, and using file names directly in the show/hide statements without defining them as image variable types. Looking forward to less buggy games now that I know how to use one of the most basic and commonly used functions properly!

From the ren’py documentation.

The Future

There’s a lot of takeaways from this project, but I think the main one is that in order to improve the quality of my games, I need to improve the art. Either I need to dust off that ol’ art degree and draw something myself, or I need to form a team with an artist.

Overall the strongest element of the game appeared to be the writing, which is surprising for me as I have no formal training in that area like I do with art and code.

I’m also interested in creating games with slightly deeper mechanics, so might work on something a little more design/code heavy in the future.

First things first though – some well deserved relaxation, then finishing the January Edwards demo!

VHS Video Material Tutorial

I made this VHS Video shader in unreal as part of the first shader challange for the Technically Speaking discord. Our theme was ‘Retro’ and I may have been toying with ideas relating to an FMV game, so decided to throw the two ideas together.

In the spirit of sharing knowledge that the server is built on, I’ve written a tutorial below on how I set it up.

For anyone who prefers to see the source, the project files can be found here. Unzip these folders and copy them into the content folder of your project.

Feel free to comment on here or message me on twitter if you have any questions about the setup or how to do things. 🙂

I’ve also set up a ko-fi now, so if you get some use out of this and have pennies to spare, a tip would be much appreciated!

Buy Me a Coffee at ko-fi.com


Video Texture

Start off by importing a video texture and creating a basic unlit material that uses it. Then make a blueprint that opens your imported media source on level start.

Instructions on how to import, setup and use a video texture in level can be found on the unreal documentation page, so I’m not going to cover it here, but feel free to reach out with any questions!

Video Texture on a Sphere

The video was just a silly horror-esqe clip I took with my phone, looking at the creepiest things I could find in my house. The quality of the video doesn’t matter – not only is the video going to be down-ressed in further steps, but low quality makes it more old-school!


In order to really give the video an old school feel, we’re going to add some loss of focus that takes the sharpness out of the image. (Thanks to Simon for this suggestion!)

This one is a little bit of a cheat – rather than writing your own function, grab the SpiralBlur-Texture node. If this doesn’t accept an external texture sample as an input, grab the custom node from inside and use that directly in your graph.

The Spiral Blur Node
Blurring Logic Using Custom Node From Spiral Blur

Convert the inputs to this node into scalar parameters. I found the values below worked well. A very small distance, but very large number of distance steps gives us a substantial amount of blur but keeps the coherence of the image together.

Blur Scalar Parameters in A Material Instance

This blur looks great, but we don’t want our camera out of focus the whole time! To fix this, we’re going to lerp the original image and the blurred image, using a modulo operator to switch between them.

Modulo (the Fmod node in unreal) returns the remainder of a division. So the modulo of 4 and 2 is 0, where the modulo of 5 and 2 is 1.

Fmod Node

By getting the modulo of Time and a scalar parameter, we create an uneven oscillation of values. This produces a more natural look than a wave function. By rounding this, we create a jarring switch between the two which suits the VHS look well.

The difference between modulo and a sine wave.

You can now use the scalar parameter to control how often you see each version of the image. A value like 2 will evaluate to 0 often, whereas a value like 5 will be more likely to have a remainder so will come out as 1 or above. You can see how the output scales in the gif above.

I put the normal image in my A slot and the blurred image in my B slot and then, because I was seeing the blurred image more often than the non-blurred one, stuck in a one minus to flip the values around (one minus returns 1 – the input value). This was mostly put in there from a graph neatness perspective so feel free to skip this or to change the order of your inputs in your own graph!

The two samples plus the lerp between them.
The material on a sphere with the modulo input set to 2 to make it easier to see!

The dark patches appearing on the gif above are where the result of our modulo is a negative number. Personally I think it adds to the effect, but if you’d rather get rid of it, a saturate node before the lerp will do the trick. (Saturate clamps between 0-1 in a single ALU instruction, where the Clamp node may represent more than one instruction on some hardware.)

UV Manipulation

Now that we have a nice blurry image, we’re going to make some edits to the UVs to add stretching, chromatic aberration and an era appropriate resolution!


The resolution of a VHS is 333×430, so our video should reflect this. I’ve explained this down-res technique in a previous post, however that was in hlsl, so I’ll go over it again for unreal.

Create a scalar parameter or constant for your X and Y resolutions and set them to 333 and 430 respectively. Append them to create a float2 value, then floor this.

Multiply your texture coord with this to create a grid of your image. Once the grid is created, floor it, then divide by the resolution. This will take your tiling back down, but because of the floor, it will be clamped to the grid we initially created.

Stages of the maths for lowering the resolution.
Nodes for lowering the resolution.

This can then be used as as the UV input for your video texture.

The shader with various resolutions.


The next thing we’re going to add is an occasional stretch of the image.
This is created by multiplying the Y resolution with a lerp between a sine wave and 1.

We use a sine wave so that every time we see the stretch it will be in a slightly different position. Create a parameter for stretch speed, then multiply this with time. Get the sine of this, and we have a basic wave.

Next, multiply this by 0.5, then add 0.5. This takes our wave from -1 -> 1 space into 0 -> 1 space ( -1 * 0.5 = – 0. 5, + 0.5 = 0 then 1 * 0.5 = 0.5, + 0.5 = 1).

Finally, multiply this with another scalar parameter to control the strength of our wave.

For the interpolator, we’re going to use the same modulo logic we used for the blurring. Create a new scalar parameter for how often we want to see the stretched version, modulo that with time, then round it.

Chromatic Aberration

Our final uv tweak is chromatic aberration. This is when we get red and blue around the edges of our image as the channels are offset from one another.

To do this, we are going to replace our single sample for the non-blurred version of the texture with three new samples, two of which are offset.

Take the UVs we made as a result of resolution changes, and add a scalar parameter to it for the offset. Append this with a 1 in the y, then input this as the uv for the first texture.

Take the UVs as they are for the second texture.

For the third, multiply the offset parameter by -1, then add it to the UVs and append this with 1 in the y.

Once these are setup, take the R from the first texture, the G from the second and the B from the third and append these to make a final color. This can then be input to the lerp with the blur.

Node setup for chromatic aberration.
Chromatic aberration on a sphere.

Image Effects

Now that we’ve finished playing around with our UVs and base image, we can start to add the static and other image effects that will make the shader instantly recognisable as being a VHS style video.

For these effects you’ll need a channel packed texture with scanlines, a block of white and the date/time. I recommend putting the date/time on G, scanlines on R and white block on B, to take advantage of differing compression quality between channels.

My texture – do as I say, not as I do! Putting the block on G was a poor choice here.

If you’re using Photoshop, I’d recommend using a scatter brush, then motion blur, then add noise to create the scanlines effect.


The first thing we’re going to do is take the output of the lerp between the blurred and normal video and add some adjustments. Add a power and multiply node, then create parameters for these. The power lets us adjust the gamma of our image and the multiply gives us a color tint.

On a sphere with gamma significantly increased.


The next thing we’re going to add is a grain effect. This will be multiplied with the output of our adjustments.

Rather than a texture, grab the simplex noise node. We’re going to lerp between noise and one minus noise so that the position of the visible noise changes. (As we’re multiplying, only black areas will be visible.)

The interpolator is a rounded sine wave, so add Time multiplied by a new scalar parameter for the speed, then get this sine of this. Multiply and add by 0.5 as we covered above, then round it so we only get -1, 0 or 1 values.

After this, add another parameter for strength, reverse it using one minus and add it to the lerp. We reverse this because the grain becomes stronger as there is less white in it, but this doesn’t make a whole lot of sense to a user, so this is there to make the inputs more clean. This can then be multiplied by our adjustment output.

Sphere with the grain added – lower gamma makes this easier to see.
Output of the grain.


The next thing you want to add are scanlines. This is where the texture we made earlier comes in. Take the white block channel of your texture, multiply it by a constant float 2 of 1, 75 in order to create a number of thinner lines. Then use the panner node to move this in the y direction. I left these as constants, but feel free to add parameters for speed and tiling!

Multiply this with the grain and adjustments.

Nodes for scanlines.
With the lines on – we’re almost done!


The next effect we’ll add is static. These are the long static bands that really sell a VHS feel.

Like the scanlines, we’re using our texture with a panner, but we have a bit of logic on the coordinates and speed to vary things a little.

Start by taking the scanline channel of your texture and plugging a panner node into it.

For the coordinate, we’re going to create a sin wave that is used to scale the texture up and down. Multiply Time by a scalar parameter for your speed, then get the sine of this and multiply it with another parameter for the amplitude. I’ve called the amp ‘variation’ because it changes how large and therefore how different from the original the texture becomes. Multiply this by your texture coordinate and you have a scanline that scales up and down!

For the speed, we want to pan in the y but not the x, so put down an append node with a constant of 0 in x. Multiply the wave by a new speed parameter (not the same as the scaling speed – coherence creates a less glitchy look), then put this in the y slot. This gives us an ociliating speed.

Add the texture sample to your grain and scanline multiplication.

Static lines added to the effect.

This looks cool, but its no good if it says on screen forever. Multiply this with yet another variation on the modulo that we’ve used for other effects.

Nodes for the static effect.
Less frequent scanlines using modulo.


The last thing we’re going to do is add a date/time overlay. Just take the date/time channel from your texture and add it to the previous effects.

After this, you can add a multiplier to the whole effect for a stronger emissive glow.

Overlay nodes.


And we’re done! Here’s a screenshot of the parameters I had and the settings I used in the final video above.



While this wasn’t really intended to be particularly performant or made with a games application in mind, I’d encourage everyone to be aware of how their shaders affect GPU timing and memory!

This is fairly low on instructions and samples, even with with number of times we sampled the video texture.

Looking at the stats, it took ~0.3ms at runtime, which in my opinion is acceptable even if the video wasn’t the main focus of the scene. If we were using this in a game aiming for 60fps I’d perhaps have some reservation, with 0.3ms being


Video textures cannot be streamed like regular textures. You can generate mips for them, but they don’t have the same behaviour, so we need to consider that our video will be loaded at all times.

My runtime non streaming memory with this in the scene was 130 MB. That’s a huge amount of memory for a single texture. If this is the singular focus of the scene, it might be okay, but if we’re having this in a larger level it starts to become a concern.

There are a couple of options for making this cheaper if you want to use this technique in a game:

  • Make the video shorter – my video was fairly long
  • Make the video smaller – I just used whatever the default res on my phone was then changed it in the shader, your source video could be low res.
  • If you can’t afford video at all – make an atlas texture out of stills and run through them in the shader.

That’s it! Thanks for reading, and have fun making spooky VHS effects – ’tis the Halloween season after all!

Ren’py Tidbits

I’ve been a little dead on this blog latley as I’ve been focusing on a ren’py project that didn’t really have a lot of tech art related topics to write about.

The demo for that project can be found here for anyone who likes solving detective mysteries!

I’m working on it more, as well as another prototype, so figured I’d post about a couple of neat tidbits I’ve done.

Dialog Blips

In order for this to work, the text speed needs to be slow. The speed of the text can be changed on line 122 of options.rpy. It is 0 by default, which makes the text appear instantly. Larger numbers will make the text appear more slowly.

default preferences.text_cps = 15

The blips are implemented by providing a callback function to the character when it is created.

define e = Character(“Eileen”, callback = dialog_beep)

When the callback is called, it is given an event argument which tells us when the callback occurred. For the dialog, we use show done and slow done, which are when text is shown and when an entire line of slow text are finished showing, respectively. What we’re doing here is playing a sound when the text starts displaying, looping that sound, then stopping it when the dialog line finishes.

Because there is a slight pause between each beep, it gives the impression that the words and beeps are connected, but really we’re just displaying some text slowly and looping a beep sound until the text is finished displaying.

def dialog_beep (event, interact=True, **kwargs):
if not interact:

if event == “show_done”:
renpy.sound.play(“audio/beep.wav”, loop=True)
elif event == “slow_done”:

More info can be found on the ren’py documentation.

Handling Screen Variables

I’ve been working on a new prototype that relies heavily on custom screens which has a couple of gotchas in terms of when variables are updated and refreshed.

A hacky fix for some issues can be to refresh the screen by restarting the interaction.


Another thing to note is that variables set in screens should use the SetScreenVariable method rather than just being set manually, as this will cause the whole screen to be updated appropriately.

SetScreenVariable(“number_pressed”, number_pressed + str(i+1))

Hiding the Say Screen

I haven’t found a non-hacky way to do this yet, but in order to hide the say screen and only interact though my custom screen, I used the pause function after displaying my screen. As it refreshes its interactions separate from the say screen, we don’t get blocked from interacting by the pause.

label start:
show screen remote()
$ renpy.pause()