1958:Dancing with Fear post-mortem

Cover1958: Dancing with Fear is a parser-based interactive fiction, where you play as Salomé Vélez, a disgraced cabaret star helping a spy infiltrate a glamorous jet set party in a Caribbean republic during the Cold War. All throughout that dangerous night, the player has to negotiate the obstacles of her mission as well as the memories of her past that the events awake, and finally sort her loyalties and decide whose side she is ultimately. And by the way, you can play it here.

Dancing with Fear was my entry at the 2017 Interactive Fiction Competition, where it placed 8th out of 79 games –  and then it went on to win Best Setting at the XYZZY Awards 2017.

I am quite happy with how it turned out, and I’d like to share why I came to write it and how, what worked and what didn’t, and comment on a few lessons I learned making it.

So put on some Benny Moré, grab a daiquirí and come along.


The original idea for Dancing with Fear came one late evening in Cambridge, listening to Los Panchos while working on a translation. When I was a kid my mother would play boleros on a record player while she ironed clothes, so boleros always remind me of her, and also of a family trip to Cuba in the late 90s.

Bolero lyrics have a dramatic, over-the-top quality about them. Love is always unfathomably tragic or utterly happy, women are delightful creatures or inescapable perdition, and there’s a generous helping of passive-aggressiveness alongside the stylised passion and despair. The always convey a very definite picture of what was socially expected of men and women in their historic context. Although the genre is much older, by this combination of personal circumstances they always remind me of Cuba during the 50s-60s, the personal tragedies of their romantic protagonists enmeshed with the political struggles of the era.

So Salomé started out as a female protagonist in an opulent but dangerous setting. It had to be a foreboding night, “pregnant with ill omens”, in which a lot was secretly at stake for her. The political angle was clear once I discarded the 30s-40s, which would have placed the emphasis on the run-up to WW2, and moved to the 50s and thus the Cold War. I am more familiar with the former period, but I felt it was inelegant to “force” a very European affair such as WW2 upon Puerto Duquesa. Latin America in general and the Caribbean in particular have their own long story of political struggle without needing to ask them what did they do during *our* war. It seemed much more organic to build the political plot around a homebrew revolution.

I am pretty much a character-driven writer. I tend to start out with a character and derive everything from her. She had to do some spying in a very high-class milieu, so a key question is whether she naturally fits in there (themes: traitor to her class, rebel daughter, idealist elitist, perhaps an intellectual, etc.) or whether she’s lower-class and crashing the party (themes: class struggle, imposter syndrome, keeping appearances, fears of being unmasked, a more precarious situation). I went for the latter mostly out of sympathy and because I felt there was more drama there.

The lyrics to the bolero Flor de azalea that open and bookend the game read “like the foam, carried away by the mighty river, life has dragged you in its avalanche…”, which is a line that was always on my mind when writing Salomé, a woman battered by life and circumstance, trying to take back control, to find the “protection and shelter” of the last verse, at the end. Dancing with Fear is the abridged story of a woman who has spent her life waltzing with misfortune, the tale of two revolutions. One is political and external, the other one is personal and internal – her own fight to wrestle control of her own life from misery, exploitation and the selfishness of the men she’s crossed paths with.

(Incidentally, the first version of the title was actually “Waltzing With Fear in Our Hearts”, taken from a line in Mark Knopfler’s Secondary Waltz. But I was getting my musical references mixed and it seemed overlong, so I simplified it to the final version.)

And Salomé’s past brings us to the flashbacks.

The flashbacks

The flashbacks were originally designed as little explanations of key points of her experience, info dumps to explain her opinions and behaviour and how she got there and what her stakes were. They grew bigger and more relevant to the plot, and instead of cutting them out to detract from the main action, I reformulated the whole story around them. The “point” of Dancing with Fear is not just that fateful night of 1958 where the story begins, but the personal process that has brought Salomé to that brink, to that turning point. Thinking of the story in these terms helped me design the story as a whole, instead of a central scene that gets sidetracked from time to time.

For instance, the first flashback that I designed and which I considered crucial was set the night before the party, with Salomé in a hotel room stealing the invitation to said party from the sleeping journalist. While this scene seemed relevant to explain how Salomé’s handler learns about the soirée and how did she manage to infiltrate it, once I changed the focus from That Night to Salomé’s broader story, this flashback seemed completely irrelevant. Do we need to be shown that she has seduced, drugged and robbed this particular character? Does that tell us something that we didn’t know about her? I’d rather let the player see how she ended up working for Sokolov, or the hardships of her teen years, or the cycle of her rise and fall from grace.

(Incidentally, I had envisioned Sokolov appearing at some point, either in a flashback or towards the conclusions. He’s the whole reason Salomé is risking her life, he needs to appear, right? Well, in the end time constraints and narrative economy worked together, and Sokolov remaining an unseen figure fits well with her shadow puppeteer quality. If I was to write it again with more time I’d still keep him off-camera, as all great masterminds should be.)

Once the hotel scene was cut out, the others fell in place quickly. Given how we meet Salomé as a has-been, we needed to see her at her heyday (the Enjoyado Club), and her fall (a certain institution in Santa Clara de Floresta). The “origins” one was the last flashback, and was inspired by a chapter of She is Cuba: A Genealogy of the Mulata Body by Melissa Blanco Borelli, a book I came across while researching. It focuses on the experience of mulata taxi dancers during the era, which struck me as a fitting professional beginning for Salomé, as well as providing excellent socioeconomic context.

The use of Spanish

I had no idea whether a story set in a stand-in for Cuba would resonate with anyone, perhaps alienating what I imagine as a predominantly Anglo-Saxon audience, and worse yet, I was uneasy about the abundance of Spanish in it. A couple of testers commented upon it, and how as non-speakers it tended to put them in ‘non-engaging mode’. That led to a slight culling in the total count of Spanish sentences in the final text. A reviewer made an interesting critique of my use of Spanish, regarding what did it really stand for within the game context. Since the protagonist is primarily Spanish-speaking, wouldn’t Spanish dialogues be rendered in *English*, so as to reflect her ability to naturally understand it? So perhaps the Spanish bits should actually signal the use of *English* in the game, to simulate in the English-speaking player the psychological effect of hearing a half-understood language?

In a particularly interesting contrast pointed out by one player, there is a scene where drunken American sailors are trying to speak Spanish. Their attempts are rendered in broken English, to make clear just how bad their knowledge of the language is, and to reflect their disdain for the local culture, but it can easily be taken at face value as English speakers unable to speak their own language. In contrast, one of the “ambiance” pieces of dialog that Salomé can overhear at the party is from two NPCs overtly discussing her appearance, explicitly saying she can’t understand them because they are talking in English. Perhaps contradictorily, here the use of English is meant to signify the *actual use of English* by English-speaking and probably monolingual NPCs. But here my point as an author is precisely to point out the awkwardness and offensive nature of the situation, by making sure the player understands the lewd remarks addressed at their character by NPCs who feel free to make them because she won’t be able to understand, adding a layer of racism to the inherent misogyny of the situation.

All in all, I have played pretty freely with language and culture, and mostly it has seemed to work in conveying the narrative I had in mind.

At the end of the day, many reviewers emphasised how much the setting added to the experience, referencing explicitly the bits in Spanish as reaffirming the Latinx identity of the characters. Which brings us to the “Latinxness” of the whole thing.

Culture, gender, politics

Writing about Others is always dicey.

In Dancing with Fear, Salomé is a woman, a mulata, a Puerto Duquesan (read Cuban), and almost illiterate. Hence I do not share gender, ethnicity, culture or class with my protagonist. Since these are events in living memory, I had to be more careful than when writing about, say, Bronze Age cults. The closest connection I can claim to Salomé is language and a certain cultural affinity based on a similar general cultural background (i.e. a baseline Catholic, patriarchal, mostly capitalistic society, where 1950s Puerto Duquesa as an analog of Batista’s Cuba could be equated with the late-Francoist Spain remnants that echoed through my childhood). The only tricks I know are a lot of research, loads of empathy, and an unrelenting sympathy for my characters.

A dancer in 1950s Tropicana

It’s also a well-trodden path in terms of cultural appropriation and/or exploitation. The rumberas film genre is one of the closest inspirations for Dancing with Fear, as are the Golden Age Hollywood films of the 40s and 50s. When they are set in “exotic” locations as the Caribbean (I’m thinking of Rita Hayworth in Affair in Trinidad), they deal with the culture and native characters in the expectedly patronising way. Even in Cuba itself during the age of Dancing with Fear, cultural exploitation was common currency. The mock-Taíno costumes of Salomé are directly inspired by the ones used at the Tropicana and other Havana clubs (which are the model for the Enjoyado, which by the way means “bejewelled” and not “annoyed” as some comical autotranslate feature had it). My intention was to use those elements to add layers to the story of Salomé: of her own exploitation, as taxi dancer and pawn in other’s games, but also of the overall Puertoducal society – the showgirl costumes drawing from indigenous cultures and the “casino-country for wealthy foreigners” situation of pre-revolutionary Puerto Duquesa, but also the hypocrisy of policemen and politicos who wax patriotic about the greatness of the country and its freedom from the evil Spanish, only to connive with shady figures which are obvious agents for another imperial power.

Liliana, the only other female character with which Salomé can bond, is nevertheless awkwardly reaching across the chasm of their social and educational differences. Liliana’s version of the revolution might be well-meant but she has a hard time trying to prove to a working-class woman that she actually understands her exploitation, and probably crashes on the issue of Salomé’s job. Sincerely revolutionary as Liliana is, her moral puritanism regarding dancing as a spectacle is as much Catholic as it could be Communist. Coming from her class and having never been a taxi dancer, a “commodified female body”, she has little to answer her cellmate’s “Will I be considered at least two steps removed from whoredom, instead of one?” except high-minded doctrine.

Maybe this fracture line between the two only women is the most tragical in Salomé’s story, since the men (in true bolero fashion) she always expected to be a disappointment.

Development, figures and a rant about scene design

Dancing with Fear took roughly 10 (very long) days to code and write – a deceptive figure, since everything had been designed theoretically on paper first, specially the puzzlier bits.

The total source code runs to ~37K words (by far the largest IF I’ve written so far), of which ~3K are legacy code that I copypaste into new projects with some minimal modifications, mostly flavour text suitable for chorus girls, Minoan priestesses, kabuki actresses, and the many more protagonists ending in “-esses” to come. The legacy code mainly deals with standard replies for unauthorised actions, parser errors and the like. I normally assume about 70% of that total wordcount is actual on-screen text visible for the player (as opposed to code), but the way Inform works means it would be a major pain to extract and wordcount it, so don’t let me fool you, it’s actually anyone’s guess.

The hint command uses the scenes system to determine exactly at what point in the game the player is, in order to give an à propos hint. It took approximately 2K words and a whole day to code, and it would have been crazily out of scope if I hadn’t had the scenes properly figured out first (as it happened in Ariadne in Aeaea). Finding a way to not die while doing the hint system was one of the major motivations behind the design of my scenes system, and it turned out to be a good idea for more reasons than one.

How to cause a scene (or twenty) in Inform 7

The scenes system is based on the paradigm that there must always be a scene running, and that scene must be divided into as many subscenes as necessary. I mostly stick to the idea that any significant change in states a new subscene. It’s crucial that the whole game is covered by scenes, and that the whole of a given scene is covered with whatever sub-scenes it contains – there must be no “cracks” through which the story could slip, at no time should the player/action fall into a sceneless limbo. Because a lot of conditions depend on exactly what point in the story the player is at, e.g. NPC dialogs, whether the player is allowed to perform certain actions or not, whether rooms are enterable, etc.

In Dancing with Fear, each one of the flashbacks is a scene called e.g. Prison, and within it sub-scenes labelled PrisonSub1, PrisonSub2, etc. The overall Prison and PrisonSub1 being simultaneously, but PrisoSub1 extends only until the player discovers a certain secret. During PrisonSub1 the player is not allowed to wake up her cellmate, because we want the player to focus on the POC and her predicament, and we know once the NPC is awakened the focus of player attention will shift to the other woman. Once the secret is discovered and we are ready to move on to the dialog, PrisonSub1 ends and PrisonSub2 begins. Now the player is allowed to interact with her cellmate. PrisonSub2 extends until a substantial shift in the relationship between the two women occurs, at which point we trigger the end of PrisonSub2 and the beginning of PrisonSub3, which carries with itself a few changes in conditions (like descriptions of the cellmate to reflect the changes in rapport, descriptions of the cell as it’s not daytime, etc.).

A corollary to this approach to scenes is that their triggering conditions need to be standardised. The Inform 7 documentation encourages authors to use sui generis trigger conditions such as “when the player has the folder” or “when the time since the bell struck is 69 turns”, which is a really bad idea if your game has more than just a few scenes. Keeping track of a few dozen one-off conditions is a pain and liable to crash as soon as author or player introduce any slight change (what if the folder is in another room, or inside a container, or the player takes it and drops it?). All my scenes can be “unready, ready or done” – they all start when they are “ready” and finish when “done”. It might sound like a small thing, but nomenclature is important when dealing with a story that happens in a cinematic way, and thus needs to track states and plot twists.


This is my usual sin, and it didn’t get any better with Dancing with Fear. Once again I have to recognise the amazing work my testers did, and once again I must apologise to them for making them work with very rudimentary versions of the game. Most of them had to play builds were the lovingly crafted flashback sequences of the final version were in the “OK, so this is a WIP flashback, a cool puzzle will go here, just kiss this guy to move on to the next scene” phase. This is obviously not ideal to get good feedback on puzzles and mechanics, and absolutely useless for feedback on the prose that just wasn’t there. One more time, this was down to time constraints, and while the finished thing mostly lived up to standards, I could have gotten much more out of their feedback if alphas had been finished sooner and tester would have been able to play more finished versions. Mea maxima culpa.

I’d like to single out a few of my collaborators for their awesomeness above and beyond the call of tester duty. Ara Carrasco created the most stunning cover art I’ve ever boasted, a Caribbean version of the classic Gilda film poster. Marie Vibbert provided invaluable advice about the popular dancing styles of the age, a key element of the game, as well as on the wardrobe of miss Vélez, which informed not only dialogs and descriptions but also a few puzzles that rely on the manipulation of clothes. Andrew Schulz and Brian Rushton gave tremendous amounts of encouragement as well as excellent testing insights, Florencia Minuzzi had unique takes on my use of Spanish quotes and Matthew Holland told me I didn’t know how to use testers, which is a fair assessment of my development style, or lack thereof.

So all I can say is I’ll try to do better in the next projects, guys, if you’d still play my games?


Guys…? Guys?!?!?

Play 1958: Dancing with Fear here