← Material Library

Let's Play: Ancient Greek Punishment: Teaches Typing

Completed

By Pippin Barr

Type! Type the boulder up the hill! Type the eagle away from your liver! Type, damn you! It’s Mavis Beacon Teaches Typing in the depths of Hades! Feel the burn of your repetitive strain injuries!

Let's Play: Ancient Greek Punishment: Teaches Typing is yet another new edition in the Let's Play: Ancient Greek Punishment series, focusing on a retelling of five (kind of) mythological punishments. In Teaches Typing you learn to type in this helpfully Sisyphean environment. It's like Mavis Beacon, but in Hades.

Timeline

commitFeb 25, 2019, 00:36Pippin Barr
96b0652Initial commit

? This is essentially a commit of the final code of Inversion Edition with the process and press emptied out and name changes

? Inversion Edition does a lot of what I need already so I'm just going to commit the code as is and edit it rather than try to start from scratch. Or at least that's my initial thought for now. All the atlas stuff etc. should be fine? We'll see, don't overthink it bud.

The initial thinking

So as I start writing this all I can say is that I thought of the "Teaches Typing" extension to the "franchise" while in the bath, and didn't think more about it than the name. It just seems like a great candidate for a variation on the formula of the game, a classic mechanic to introduce, and a nice chance to revisit a typing game, which I haven't done since Safety Instructions in 2011.

The obvious mechanic: discrete words

The most basic, and therefore probably not quite right, idea that jumps into my head is just to change the basic input from button-mashing to typing a specific verb that represents the action. So in Prometheus you type "STRUGGLE" and he struggles to dislodge the eagle once it's typed correctly. In Sisyphus you type "PUSH" and he pushes on the boulder. In Tantalus you type "APPLE"(?) And he reaches for the apple.

That would work and is certainly the easiest translation from one to the other. You could add some variance to it by having the word you're typing change, so "STRUGGLE" "WRITHE" "SQUIRM" "STRAIN" and so on. Synonyms. Could conceivably have tons of synonyms?

I think this would be a perfectly reasonable approach to the game, pretty basic, but reasonable. It matches the "teaches typing" mandate in that especially if you have multiple synonyms you can't get comfortable. It ties the typing directly to an action in a discrete way, which strikes me as good.

Storytelling through continuous typing

Another route would be continuous typing rather than discrete words. In this case you'd need some kind of text that you're typing, and there are different candidates for this I guess...

  • Retelling the myth itself by typing it out (repeatedly I suppose), potentially fairly elaborate, could be length.
  • Typing out some kind of inner monologue of the character in question (something I did in the Nightmare Mode of Safety Instructions), a potential for comic writing etc. on my side, perhaps less "austere" than I could want
  • Typing out something completely unrelated (that would be kiiiind of hilarious), or tangentially related, like a text about the physics of rolling, say, for Sisyphus, or the uses of fire by humans for Prometheus. There's something nice to that

In these kinds of cases I guess the point would be that for as long as you continuously and successfully type, the character would perform their action (Sisyphus pushes, Prometheus struggles, Danaids fetch water, etc.). This wouldn't actually work for Tantalus, who has a choice of what he's going to reach for, but perhaps in that instance you could have two texts (one about apples and one about water).

There's an appeal to this mode because it allows for more expressive texts and thus more interest for the player in terms of performance. There's the issue that because it's non-discrete you're never really directly enacting the struggle, but rather supporting it in an almost secondary way, providing fuel for the struggle or something.

Discrete actions within storytelling?

One hybrid mode could be that you have a continuous text, but it's a text that contains regular synonyms for the action in question, either just jammed in there or actually integrated into the text or even weirdly replacing regular words in the text. This way the event in question would only happen when you complete typing the action word, and the rest of the typing it about reaching the next action word. They could be signified differently with colour or something to clarify.

But it's definitely a bit more complex than I immediately love.

Thunder stealing from Oral Tradition?

Because I know I want to have an Oral Tradition Edition with voice recognition, I have a kind of competition over textual input (whether vocal or keyboard) that I have to be aware of. In the case of Oral Tradition it seems like I'll be asking these same questions, though in the context of what it makes sense to say. It could be that single words (possibly including synonyms) are going to make the most sense here because voice recognition isn't the most reliable and saying long sentences could be asking for trouble.

At any rate, I do need to be aware of that tension.

What Would Mavis Beacon Do?

Obviously the "Teaches Typing" in the title comes from Mavis Beacon, so what do the levels look like in that software? What do you do? I remember a car racing game, but what was I actually typing while that was happening? Let's see...

"Brazen gazelles quickly examined the forward jeep. The brown dog quickly jumped over the lazy fox. Will the kind judge squelch the five or six brazen nymphs?"

This sort of suggests that Mavis Beacon might even procedurally generate? Or at least has a bunch of phrases presumably designed to be difficult to type, distributed around the keyboard, and so forth. Importantly(?) the phrases are pretty nonsense-y and not connected to the context of a car race. So I guess nonsense is an option?

It's not very satisfying though, given that it kind of abdicates the connection between typing and action. Or rather, in Mavis Beacon it's just typing speed that counts, not actually the thing you're typing which is arbitrary. Fair enough.

So what do you want to try?

Well,

a) I can just implement a ton of the game without having to actually decide exactly what you're meant to be typing... the basic premise will be the same, type some predetermined text in order to perform the key actions.

b) I'm kind of into the idea of using the Mavis Beacon racing game as the core concept, which would mean having text "in the sky" that you're supposed to type.

c) I'm also therefore into the idea of a longer text rather than something brief, because of not wanting to steal the simpler idea from Oral Tradition, and because I think it creates more room for something to actually do while you play the game.

d) I suspect that if the text is semi-interesting to read as you type then maybe it's not even so bad if it doesn't have discrete actions? Another option though would be that each sentence is just some kind of generated expression of what you're doing? Using Tracery or something similar to create repetitious but varied statements of the action in question. "Push the boulder. Push on the boulder. Push the stone. Roll the stone. Resist the stone." etc. But that already looks pretty fucking boring.

e) Okay so is it that you type a continuous text and that the character just does its thing for as long as you maintain constant typing? Seems reasonable and is the most flexible in terms of the text. The simplest version is that ever n characters it performs the correct action where it's discrete (e.g. Prometheus) and otherwise some minimum wpm in order to maintain the effort required (all the others). Actually maybe just a minimum wpm for all of them, it's very Mavis, and for Prometheus the correct wpm represents continuous struggle.

f) What happens when you finish the text? It just starts up again? Should it be an entire novel's worth of stuff? Could I do some weird version of a novel where I replace a bunch of stuff to create a novel about the specific task in question? How hard would that actually be? Kind of funny concept.

g) Why am I writing this inane lettered list?

h) Well I guess the next step is to let this marinade and work on the technology side for a bit, then return to it.

Here's what we're going to do

Each game is played by typing a longer text (unsure how long) and the action component is determined by maintaining a specific WPM as per Mavis Beacon.

To make this work I need to

  • Implement the basic idea of typing as input
  • Track WPM
  • Cause the appropriate actions to start/pause based on WPM
  • Figure out what kind of text will be the most fun thing to type in
  • Work out what happens if you exhaust the text (if that's something possible)
  • Markov chains on relevant texts to generate infinite fucked up texts about the myth in question???

Research Questions v1

This is getting vaguely more tricky I think as I produce multiple versions of the game in a row. But still...

The meta-question of cumulative repetition and variation

Every addition to the series (this is the seventh iteration on the punishment idea) clearly contributes to a larger investigation around what it means to make the "same game" multiple times. It's related as always to other approaches to this I've had as with PONGS and BREAKSOUT very particularly, but also in terms of SNAKISMS and Sibilant Snakelikes where there still that idea of variation within a theme on the same base game.

Specifically I guess there's the ongoing question of what it means for it to be the "same game". This is especially true when you compare UI Edition with the others perhaps.

Cumulatively there's this story of varying different ideas within the game. Whether it's presentation (e.g. Art Edition), interface style (e.g. UI Edition), input modality (e.g. Teaches Typing), (computer) agency (e.g. CPU Edition), player role (e.g. Inversion Edition). In doing this exploration I like to think we're exposing different elements of what a game "is" to explicit examination because of the changes made - you can think more about the impact of aesthetics if you see the "same" thing done in multiple ways. You can think more about agency if you see the "same" thing with and without it. You can think more about the nature of role play if you see the same thing from different roles. You can think more about the "feel" of input if you see the same thing with distinct input types.

So I think this is becoming the larger value of the series in general. Over time it builds into a kind of "game studies" of its own, with the ability to actually "live" or play through the game studies concept in question and therefore to develop opinions and feelings outside theorisation. It's possible that theory could be interesting to apply and examine in this light, but I somewhat feel like that's a job for other people.

Further exploring hybridization

Chogue was an explicit experiment in hybridization, but I think Teaches Typing is a nice example of an informal version of this. The name came first and effectively implied the idea of a hybrid. Initially it was intended just as a cute signalling of the type of input, but already in the design process it's seemed more and more clear that a more explicit mirroring of Mavis Beacon is a positive way to approach the design, and as such this is a (simple) hybrid form. Instead of a car race we have an infinite punishment.

Typing as expression of agency and narrative

I've made two typing games to date. Safety Instructions using typing as a stressful element, not unlike Mavis Beacon but more in terms of discrete timed bursts of typing tied to critical moments. It's also narrative in the sense that it supports the visuals. In Nightmare! mode I allowed it to also become more of a storytelling element with a different voice. In Eveline typing is literalised - you're typing because the character in the game is typing. And then even further in the final version your typing is actually your typing - it's explicitly a creative act with you (the player) as creator and thus responsible. So those are different forms of agency and narrative that typing has had.

With Typing Edition here I think it's a bit of a combination. The typing is a stressor in that you're supposed to keep up a specific speed in order to carry out some specific punishment task (or to resist one in the case of Prometheus) - this applies to the extent you treat the game as a game that you want to do well at in an uncritical way, and I think something like a WPM counter will emphasise that element further.

The typing here can also be a form of storytelling as in Eveline, a way to reveal a story as you go along. In this case I currently imagine revealing a narrative version of the mythological punishment itself (though this isn't set at the time of writing). It's a further drive to participate, perhaps, because you want to know what's going on. There's some kind of opportunity here to either create a moment of tension when the story loops (if that's what happens) or to explore the idea of an infinitely generated text about the punishment, which would then mirror the punishment itself in a different mode.

In my first journal entry I've also already fretted about the agency question - if you don't type specific words and have the action carried out, your agency is kind of more a continuous force like a wind blowing? You're more a source of energy for a character to continue I suppose - which really mirrors the Mavis Beacon approach to agency - you don't steer or drive the car, you basic provide the gas/velocity through your typing. So your agency is highly restricted relative to the more complex activity represented, but it's still relevant and crucial.

commitMar 1, 2019, 16:39Pippin Barr
a2edde1Got a primitive version of Sisyphus working

? Sisyphus pushes the stone when the WPM is above a threshold, he loses ground when it's below, he comes to a stop correctly at the bottom, he is propelled down if he reaches the top, etc. That all seems to be behaving itself

? The text to type scrolls along with a cursor marking the current character to type. There are two separate texts which allows me to infinitely scroll them. This would work with Markov for instance if I go in that direction. I calculate the width of a character by averaging across the full string of text and it seems accurate enough (frustratingly there is some variance per character).

? The wpm is currently being calculated per word against an average of the last five words. It's pretty dynamic, but it still feels very slightly weird and it means that if you stop typing the WPM stays the same, which needs fixing.

? Nothing too design-y to think about yet, it seems to me that the majority of the design thinking may revolve around the text content itself - the rest is just me trying to get a nice typing experience going. Which pleasingly will apply to all the separate levels, so that's something. If I were awesome maybe I would use OO to create specific typing scenes with the appropriate methods prebaked.

commitMar 1, 2019, 23:06Pippin Barr
23c889aGot a better feeling WPM calculation and corresponding responsiveness in animation

? Fiddling around for quite a while with different approaches to calculating WPM dynamically while they type. Current version involves assuming an average word length and counting a "word" per characters typed that meet that amount, the calculating a WPM on an interval based on the characters typed during that interval. And then averaging across the last five (or whatever) WPMs to get something a little more stable. Currently it seems responsive enough? I'm realising as I type this my word length should maybe be 6 instead of 5 because 5 is the average word length, but I want to pay attention to spaces, which shouldn't be counted as word length. So I'll do that now.

? This is getting there in terms of game feel now which is a relief. I'm running into the issue that I'm really quite a fast typist (not setting land speed records, but when it's a text I know I believe I can hit as much as 150WPM or something) and if I tune the game for me it's going to be stupidly impossible for most people. Currently setting the minimum WPM to 30 which seems embarrassing but might let hunt-and-peckers get there? Or should I have difficulty levels to make up for it? That would make sense probably. 20WPM for abjectly bad typists, 80WPM for okay, and around 120WPM for fast? Something like that?

Sisyphus works; texts and difficulty; voice and person; wpm display; tantalus's two texts

So at this point I've implemented a fairly playable version of Sisyphus in which you can type the words, they scroll by (infinitely), your WPM is recorded, and if it've above a threshold then the animation moves forward, if not you stop or lose your place.

early-sisyphus

The texts? The difficulty levels?

Most obviously absent from this version is the text itself. Which is true for all the levels. And it's really does seem like this is the key 'design' question to be addressed here in a way. There's no major need to design the typing interface because we're just taking 'best practice' from Mavis Beacon.

An additional part here is if I'm having difficulty levels then I might want to have distinct texts per level, in part to make them actually more or less difficult, but perhaps also to reward higher level players with "better" texts?

A simple division

  • Easy mode (low WPM) would have simple declarative sentences reflecting the specific action being taken. Could use Tracery to construct them so they're a bit more interesting/varied over time. Or could go all out and just have it be the exact same phrase over and over again.
  • Normal mode (medium WPM) would maybe have an actual text (or Tracery) with actual sentences that maybe have more narrative content? Subclauses? Digressions about the emotions of the actions...?
  • Hard mode (high WPM) would maybe where I could think about a Markov chain? Collect together multiple texts about the mythology in question and then Markov them for a series of sentences?
  • Nightmare mode (ridiculous WPM?) would be what? The full text of Camus' essay? Is this necessary? Maybe I'll end up thinking of something. What about something as silly as "push push push push push" but with a really high WPM threshold?

The voice and person

  • "I push the boulder." - The question of person is something here... I quite like first person now that I've written it.)
  • "Sisypus pushed the boulder." - A kind of narrator role which is sort of meta and amusin, not unlike a Stanley Parable feeling to it. (Which is, itself, kind of Sisyphean - though finite.)
  • "He pushed the boulder." - More impersonal (easier to type than 'Sisyphus')
  • "When pushing a boulder, it's best not to think too much about..." - Kind of situational, extending the story outward to other ideas
  • "Sisyphus wondered whether he was happy"

A lot of this depends on the "sophistication" of the text, whether it's just declarative or actually a story or philosophy etc.

Displaying the WPM?

Need to think about where to display the WPM and how to display the threshold? Something like '75/100 WPM'? And thus also '120/100 WPM' if above it. Or the WPM and the threshold separate beneath it? And for Tantalus with the two texts I guess just all the twice?

WPM could go green on success I guess, though it would break the pretty strict color palette the game has.

Should the WPM be attached to the figure of the character? So moving through the space with them? Or more just diagnostic.

Where does Mavis display it? In the car race it's displayed as the odometer on the car of course. So it's very in world. In the more banal typing experiences it's expressed at the end of the lesson rather than live during play.

So for now I think more of a traditional style?

How will this end up conflicting with/fighting for space with the other textual elements from the original game(s) like the stats I display in each case? Tricky tricky. Will just have to see.

Tantalus's two texts

Tantalus is the one level where you need to be able to choose between two options (apple versus water). And therefore there need to be two texts, one of which you type to reach up and one of which you type to reach down. Which is fine, but - how do you police which one is being typed? Specifically, what happens if the texts end up aligned (for a single letter or more) at some point (which will absolutely happen). In this case the default behaviour of the code right now would be that both texts would advance, and then you wouldn't really be able to choose which option to opt for? Or rather, I guess it would still work because a single character (or two) isn't enough to raise the WPM high enough for the threshold, but even so you don't really want the incorrect text to even move?

One option is just "oh well" and you leave it alone. Assuming you don't get too much lining up, it shouldn't affect the gameplay itself, it would just be visually displeasing because you wouldn't have intended to enter a character into the other text, but still I guess you did.

Another option would be that you choose which one you're typing before you start typing it, through some kind of selection option. But this seems like it immediately introduces a gross amount of UI that isn't really very nice to think about.

Another option would be that the "selected" text alternates on its own and only sticks if you start typing (WPM > 0). If your WPM hits zero it goes back to alternating. But again there feels like there's no reason for this and it requires extra UI and thus thinking by the player.

Another option would be that a text only really starts scrolling if you type three or more characters in a row correctly? This would be a bit arbitrary but would at least allow you to type the one you intended a bit more intelligently. Maybe during that initial phase before it's "chosen" it highlights the characters and then, once you've locked into one, it starts the scrolling, but then subsides if you hit 0 WPM and reperforms the trick. It's still extra UI but it might make sense.

So there's a definite issue here and a decision has to be made. Those are the solutions I can imagine for now.

commitMar 3, 2019, 19:17Pippin Barr
b72d5e3Created a class to handle typing input and calculate WPM etc. so that the various games can just use that

? Some technical fiddling around, but it's basically just the same code I already had configured around a bit. Should help matters.

Serious text design exercise with a happy outcome

Still puzzling over the texts. I've now produced attempts for each of the three levels:

Beginner involves a Tracery that builds simple descriptions of the action in question, like "Slowly push the boulder up the hill" and variations. I worry that these are kind of overkill for this easy level and that it might be more effective/interesting to have it be a single word over and over like "push" as a funny use of typing in this simplest case.

Intermediate involves a Tracery that builds "I will not..." sentences that reference the misdeeds of the character in question. It's pretty effective and even kind of educational to learn about what the person did rather than fixating on the symbolism of their punishment, so quite like that about this. I guess it's my favorite. On the other hand I do have a concern that outside Sisyphus there may not be enough material for it. Sisyphus did so much shit and is so famous, I'm worried the others might not live up to it. But it should be okay?

Advanced currently involves literally typing in Camus's essay about Sisyphus (just the little section of it called The Myth of Sisyphus actually). I experimented with a Markov Chain variation too, which leads to sort of nonsense-y stuff which, I mean I guess it's fine. However I'm concerned because... Camus didn't write an essay about every mythological punishment just this one, so it's too special a case I imagine. (Now I wonder... what about a final unlockable where you get to be Camus just writing the Sisyphus myth over and over on a type-writer? Ha ha? Maybe I like this. - MDMA-wise by the way, this literally just came up - mostly at the thought of discarding Camus from the way I'd understood the game, but wanting to conserve him.)

So you can see I have some concerns. But I also have relatively okay solutions?

  • Beginner can be a single word like "push" I think. Or maybe 10 of push and then 10 of shove and 10 of roll etc. That will actually look quite Mavis Beacon-y!! push shove roll shove shove roll shove roll push push push. Hmm! Nice word bra.

  • Intermediate is pretty cool and I'll try to have faith I can preserve the same idea for the other myths.

  • Advanced is a bit broken, but my key insight here is, I think, the idea that what you're typing in is about what you're trying to do. I may have mentioned this elsewhere or it may have just been a fever dream in the bathtub, but I think there's something to this. So Tantalus has texts about apples and water. Zeno has texts about... finish lines? Races won? Flags? Ha ha. Sisyphus has texts about... the tops of hills??? Prometheus has texts about breaking free of chains? Escape artists? Heh heh heh. Fuck yeah. Danaids have texts about baths. So I mean, this is pretty fucking good. Just a question of where these texts come from. Whether it's some kind of iconic text you type over and over. Or is it literally a Wikipedia entry? Or is it something else?

  • Nightmare could be being Albert Camus writing the Myth of Sisyphus. Maybe you write the whole thing out, and then the page blows away, or it gets stolen, or burned, and so you have to start again? I mean, yeah that's fucking good. And then it could be greyed out at the bottom of the screen until you've tried all levels at beginner or something? Oh yeah. This is a thing. This is a happening thing. Or maybe you have to play Sisyphus as all three levels to unlock Camus. Ah that's fun.

Okay, this was a good talk we had you and I.

More text thoughts

Spoke to my programming class about the project yesterday to solicit some thoughts from them on what kinds of text there could be. Main suggestions:

  • Some kind of internal monologue. Allows a kind of access to the experience of the situation, also potentially a greater range of ideas and tangents, brings the player closer to the character perhaps.
  • Something factual, reporting on the myth itself from something like Wikipedia or similar. A distanced perspective. A punishment for the player because it's boring/dry?
  • Something about the things the character is being punished for rather than the punishment. Hadn't really thought of this. Sisyphus is being punished because he plotted to kill his brother, perhaps killed his guests, etc. So this would be a way of reliving the crimes committed that led to the punishment meted out.
  • A form could be like the punishment lines written out on a blackboard. "I will not seduce my niece. I will not murder travellers. I will not plot the murder of my brother." Etc. Could be a funny option for the middle difficulty. Has an infinity built into it. Kind of weird/amusing to have to write something like this for Zeno, who isn't technically one of the myths.

Seems to me that the punishment on the blackboard is funny for either the basic version or the medium. The most basic version could perhaps be fairly literal instructions (maybe with Tracery) concerning performing the action involved. "Push the boulder. Push the rock. Push.". Then the middle one can be punishment on the blackboard with reference to history. The hard one can be... well I don't know, maybe that's an opportunity for Markov chaining surreality?

In which case I'm a little bit ready to produce a proper Sisyphus I suppose.

Plus I suppose I have to think about menu systems in light of needing to to select difficulties. Shouldn't be so hard though.

Hades hades hades. Suck bite suck bite.

commitMar 6, 2019, 20:24Pippin Barr
b72b855Implemented difficulty menu and beginner difficulty for Sisyphus (with Tracery)

? Difficulty menu right now is truly hideous of course, but I can come back to that later on

? Beginner difficulty involves a tracery-generated set of sentences that just describe the act of pushing with various synonyms for each part of speech. It's varied and allows you some variance. But as I type this I actually begin to wonder about beginner mode just being waaaaay simpler. Like literally "Push the boulder. Push the boulder. Push the boulder." over and over again. And then maybe Tracery is applied to intermediate to generate lines of penance? I mean, what's the actual advantage to this generative stuff? It's variety in terms of the typing (and thus I suppose a better typing tutor!) but isn't strictly necessary to the punitive nature of things? The messaging could be stronger with something simpler. Or at least a really simple one like "push the boulder" tells a particular kind of interactive story that's kind of interesting and worth having?

commitMar 6, 2019, 20:44Pippin Barr
eae52ffAdded a version of the intermediate level for Sisyphus

? Generates a Tracery grammar that describes Sisyphus myriade sins and has you write "I will not..." lines based on them. Still makes me think I need to simplify the beginner version back to something totally repetitive now. Also very slightly makes me wonder whether this should be the advanced level? Bit concerned about the possibilities around Markov in connection with each of the myths... just the danger it'll be secretly really fucking boring? Like, yeah I could use Camus for Sisyphus, but then for everything else? Unless I do some hilarious word substitution and all of them are based on the essay? Whooooa...

commitMar 6, 2019, 21:01Pippin Barr
7669344Made a basic version of advanced Sisyphus with (the main Sisyphus-specific part of) Camus's essay as the text

? Having done this I'm no longer very confident that it makes sense to use Markov to remix this particular text (it's so specific and doesn't actually play all the well with Markov of in the first place, unless perhaps I use a really low order Markov that yields Camus-generated nonsense?). I'm not really sure the word-replace approach will yield texts that make any sense for any of the other levels, though I haven't looked closely at this yet. I mean, it's a serious piece of writing, hard to just fuck around with it.

? Definitely some light worrying right now that this thing is fucking tedious. But then... I mean... it is tedious, that's at least someone the point right? I'm not trying to create literary genius am I? Am I? AM I?

Sisyphus's advanced text? Mountaineering?

Just sat down with Sisyphus and changed his beginner text (now it's just like push roll shove shove roll roll shove push push etc.).

Then I was going to "just do" his advanced text, but ran into various issues that I discussed with Rilla and just want to list here so I have a record of the thinking process.

  • If it's going to be Markoved then I need a significant body of text, and would need to be okay with some nonsense-y stuff, which I'm not 100% sure I am. Markov could work if I had something like an entire novel about mountain-climbing or something. But even then it wouldn't be so ideal because many/most of the sentences produced wouldn't necessary lock into the core ideas.
  • This makes me think non-Markov might be better, but if non-Markov then I run into the issue (if it is one) of a potentially non-infinite text. If it's, say, a Wikipedia entry on mountains, then that's linear and has an end. The obvious thing is that you reach the end and begin typing it out again, and it's possible that's fine (and it's possible nobody would ever type the whole stupid thing in and so the problem would never be encountered - but that's not how we roll).
  • The point of the text (going with the ideas for the other characters) has been some kind of technical/factual text about the object of obsession/torment I suppose. Or alternatively the goal. If obsession/torment then the boulder becomes plauisble as a topic of interest. If the goal, then I guess something like "successful mountain ascents" is a thing. Wikipedia has the stats on successful ascents of Everest for instance, so you could imagine doing something with that? Stats on successful ascents of the big seven mountains or something? Very, very dry texts that would be, and maybe not as interesting to type.
  • A text on Everest or some other mountain as symbolic of Sisyphus's task, referencing the idea of people using Everest as a metaphor for a difficult or quasi-impossible task? Everest has a very substantial Wikipedia entry for the record. Is it kind of too specific to a particular mountain though?
  • Mountain Climbing as an idea? Because mountain climbing is about reaching the top? "Mountaineering" has a major entry in Wikipedia.
  • Think we're getting somewhere. Maybe I start with Mountaineering and see how that feels.
  • (Note this is mostly "just" problematic for Sisyphus - I think I have some good leads for the others.)
commitMar 7, 2019, 16:11Pippin Barr
08bfb90Changed beginner over to simple verbs

? As per process journal I like this especially because it looks a lot more like Mavis Beacon's beginner typing exercises, which tend to just repeat simple words without any attempt at actual sense-making between them.

commitMar 7, 2019, 22:18Pippin Barr
f135efaAdded wikipedia text for Hill to advanced Sisyphus

? It's really quite satisfying and I think it kind of works. I think it conveys the idea that the hill is sort of the objective/obsession of Sisyphus as he pushes, and that it becomes the metaphorical hill the player is "reaching for" via their typing. I think it's good enough to test.

? That leaves me with SFX, some UI, and then we're looking pretty good for testing?

commitMar 9, 2019, 23:40Pippin Barr
8addcf9Added good/bad SFX for typing, greyed out text when input disabled

? Basically some feedback stuff to make the game make more sense while you're playing it. Unsurprisingly it makes a pretty big difference in terms of understanding what's going on, particularly when the input gets disabled. The whole thing holds together much more like an actual game now I suppose? I suppose? Seems to right?

? Not much to say about it though, one of those necessities. Does mean that I have a pretty much fully testable level of the game to show to people and get feedback before I plunge on and implement the rest of them.

Camus sketch

camus-sketch

Spent a tiny bit of time mocking this up and it allowed me to think through how a bunch of things might look. It's kind of important not to get too caught up in fancy animations given the tiny number of people who will bother with this so my thought is

  • Hands move while typing, typing sounds
  • At a certain word count (300 or so) you get a "page complete!" notification, and the pile of pages to the right of the typewriter increases (but this wouldn't be every time because they're so thick). In fact there can just be a "pages written" bit somewhere to deal with that. So long as the player realises they are accumulating pages.
  • When there's a mistake the bad sound plays and then the stack of paper is shifted to the trash, which can literally be tweening stuff I think, and making sure the trash can hide/take any size of paper
  • When there's a mistake I guess you need to "add" the most recent page to the pile? Nah, probably not, unless there's only one page (they haven't finished a page) in which case we should add one to the pile first, then trash it.
  • And that's it
  • Plus the victory arms if he finishes
  • The swoop down as the pages go into the trash, and then the text resets for you to start all over again

I think that'll work.

Post-Sisyphus, How Do You Do Camus?

Post-Sisyphus

At this stage I have what I think is a fully implemented Sisyphus barring some tweaks here and there. And thus I have kind of the model for the other levels, all of which have exactly the same mechanics as Sisyphus and so 'just' need to be put together in the same way.

In the end with Sisyphus I went with "hill" as the kind of object he's obsessed with. The only issue with it (and with this idea in general) is the non-infinite nature of the text in question. So that when you finish the text it will just cycle around. Which I suppose is fine in the end, but just has this very slight catch of not being clever enough? Even though there's a very real sense in which it's totally representative of the punishment - you 'finish' the task only to find that the task must be repeated anyway.

Anyway this leaves me with a straight shot for the rest of them except...

How Do You Do Camus?

So there's this idea of a special mode unlocked by playing Sisyphus where you get a Camus mode. In that mode it would be something like

  • Scene of Camus (the usual representation of a character from this world) sitting at a typewriter (I guess it has to be side-on)
  • The text to type at the top is just Camus's essay The Myth of Sisyphus
  • There is the sound of typing as you type obviously, and some kind of simple animation if it makes sense
  • In terms of endings you either:
    • Type in the full essay and it begins again (kind of boring)
    • Type but whenever you make a mistake the whole thing gets reset (kind of funny to literally blame it on the player - could overlay the incorrect character so it's clear that you fucked it up?)
    • Type but at some point there's an actual mistake in the text you're supposed to type, which you then type in because you have to, but which causes failure
  • In the two 'failed' cases we need some way to indicate that the mistake (or 'mistake') requires Camus to start the essay over from the beginning (and note that in the case where the play can make a mistake of their own you'd still need to account for a perfect run, in which case they win? or it just repeats?)
  • Does it need to be on a typewriter? I guess it does for the sense of permanence
  • If it's the user-error then it seems like it would be pretty funny to let them "win", but perhaps to introduce a minimum WPM they have to type the whole text in (100WPM say). So it's possible to do it but incredibly hard? Or even just 80? Or perhaps no need for a limit like that actually.
  • Okay I'm sold on the user-error one. So you have to type the entire essay perfectly, but at whatever speed you like. And if you finish you win.
  • If you make a mistake he should tear the paper out of the typewriter and throw it away? How do you indicate it's a failure?
  • Definitely need a little arm raise celebration when he finishes!
  • Quite probably to solve the 'what does it look like on failure I'll need to draw it up a bit eh
commitMar 11, 2019, 18:26Pippin Barr
b700db4Reduced minimum WPMs, removed 'failures' stat from Sisyphus

? After testing with J+M it was pretty clear that the WPMs were too high for mere mortals to play. Even 30WPM is quite high for a lot of people. Frankly even 20 is (which is what Beginner is now). I guess I could just remove the WPM limit altogether for a beginning? Just anything over 0 is enough to keep it moving? And then Intermediate more like 40 and advanced up at 80. Maybe that's nice.

? With these changes I feel like I'm most of the way toward saying Sisyphus is done. Maybe one unanswered question is just the repetition of the Hill text in Advanced since it's not an infinite text. I'll probably keep worrying about that for a while.

commitMar 25, 2019, 00:09Pippin Barr
f476407Tidied Sisyphus to allow more generic typing input, created Texts.js to store texts, got Prometheus going

? A chunk of the work was about making all the games easier to code by separating out the data and making the typing input a bit smarter in terms of what it could handle (now it's tracery grammars or arrays of strings)

? Getting Prometheus working was... not very interesting, it works now. I'm using tweens everywhere. The intermediate texts maybe need more variety. The advanced texts is Wikipedia on Escapology which is, I think, quite funny.

Prometheus and Zeno and the future

Post Sisyphus I went ahead and did Prometheus. His advanced text is about Escapology which I quite enjoy. And Zeno is underway without too much trouble, with an advanced text about Geometric Series (aka a potential mathematical refutation of his Paradox, oh the irony). Basically the game is pretty satisfying at this point and the differentiation between the three levels works really well in my opinion, definitely well enough. Maybe the only vague sticking point is just the current default action of repeating the advanced text after it ends which isn't quiiiiiite perfectly satisfying, though I think I'd arguing it's totally good enough (not least because I'm going to go ahead and assume zero people will type a full advanced text into the game). Plus at a fundamental level the text repeating is just like the punishment. I guess I'm just saying I wish I had some next-level interactive joke to handle that scenario? Maybe there is one and maybe I'll think of it.

Overall it's progressing smoothly, and I feel like I'm using Phaser better than ever (tweens have become a major thing along with use of callbacks to facilitate much smoother code). No problems foreseen with Zeno nor any of the others and just Camus as brand new code to write at some point. Once it's done it's done. Very very outside chance I could finish this month? Potentially I could finish the game but release in April? Something like that. And: whatever. I could probably finish and release two or three in April in that case?

This is kind of boring for "process", but it's just going fine and this is definitely one of the least redesign-y versions of the game, so it's not surprising there aren't buckets of design insight.

commitMar 25, 2019, 21:08Pippin Barr
4929ba8Most basic Zeno working

? Added the texts, notably the advanced text is the entry for "Geometric Series" from Wikipedia (https://en.wikipedia.org/wiki/Geometric_series) with a couple of edits for sense. A fair bit of work translating the nicely formatted math stuff into horrible ascii typeable texts, but it's kind of hilarious. Not least because the page explicitly mentioned geometric series as a response to Zeno's paradox. Fun. And Zeno having to type in a whole lot of math is a great punishment.

? Zeno can run to the half-way point and get pushed back with anims. The main remaining stuff is the text for the half ways and also just tuning the speeds etc. But a good chunk of the way there.

commitMar 27, 2019, 19:09Pippin Barr
0a00e88Zeno variable speed implemented

? Zeno's animation speed and actual speed over distance are now dynamically connected to how far he has to run, so he goes faster and fast over time. It's not perfectly related (he doesn't go twice as fast each time) but it does give the feeling of the actual space being diminished even as it's reflected in the same visual distance on the screen.

commitMar 28, 2019, 14:38Pippin Barr
bd6cfdaImplemented Danaids

? Weirdly seem to have done all of this in a single commit which wasn't intentional. Clearly it's not that amazing because it's the same process as elsewhere, but still.

? Texts this time around were challenging? The basic verbs are kind of tricky because you engage in at least three distinct kinds of actions (filling a bucket, moving/running, filling a bath), as well as the implied desired verb of actually bathing. So I felt a bit stuck with that one and ended up with a bit of a mashup which I don't know is right. "fill" "pour" "wash". Similarly I struggled a bit with the intermediate because there's not quite as much information - the Danaids are apparently most of all known for killing their husbands on their wedding night, which doesn't make for a huge amount of generative grammar material. The compromise here (which I think is kind of great) is that I found the names of every husband (there are fifty) and included them, so it's very repetitive (more like lines on a chalk board than the others) but very historically "accurate". The advanced was pretty easy - the Wikipedia entry on "Bathing". Ha ha.

? Other than that I think it's overall smooth. Realised it was important to disable typing while the water is being poured because it's not an interruptable action and also because it allows the comic timing of the bath emptying to actually register properly which is satisfying.

commitMar 28, 2019, 15:23Pippin Barr
7b87820Tantalus works (without specific texts for intermediate or advanced yet)

? Got the bones of the thing working. Some irksome stuff around the ways the different animations are composed (with some zoomed in and some not) which kind of sucked, but I got there the good old fashioned hacky way. Probably ought to have fixed it properly, but I did... not.

? The two different texts at the same time works surprisingly okay. Occasionally you'll end up typing a character that's relevant to both, but I think that's fine and fits with how it work and doesn't actually interrupt your WPM unless it distracts you, so probably not really a problem.

? I'm wondering as I type this whether I even really need a severe minimum WPM for any of the levels? Is it perhaps just enough that the text itself is more advanced, not that you have to type it in more quickly?

commitMar 28, 2019, 16:06Pippin Barr
32323e7Implemented Tantalus texts

? They work, they are funny.

commitMar 28, 2019, 19:44Pippin Barr
c564fc7Semi-awkward semi-genius fix of confusion between texts for Tantalus

? Because Tantalus involves simultaneous texts it's possible to end up in a situation where you can't tell which one the player is typing for. This is most obvious at the beginning of an intermedia run because both texts will begin with "I will not", making it impossible to know in those moments which text they intend. It's not the end of the world, but I would feel bad if they're intently typing one text only to see the animation play for the other. Betrayal.

? The solution is to have the upper text in upper case and the lower text in lower case. GET IT? get it? I mean, it's kind of terrible on some level, and such a hack, but it also kind of fits into both the metaphor of the game itself (the upper thing and the lower thing) and even with the spirit of Mavis Beacon who I can easily imagine having a typing test for upper case typing and another for lower case. So the whole thing actually kind of sits together in the end. A hack that can be explained relatively well, even if it was never actually the plan.

commitMar 28, 2019, 21:08Pippin Barr
a43bdc4Fixed problem with dual texts in Tantalus reporting other text as "wrong" (with buzzer)

? Basically just by crudely handling the keypress outside the textInput class for that one instance so that I can check whether EITHER of them is correct before issuing a buzzer. Kind of gross and led to gross code but we'll all live.

? Also fixed the Danaids' cursor colour which was wrong.

commitMar 29, 2019, 20:23Pippin Barr
9e07e88Implemented much of Camus

? You can typing the text and it works and he types.

? You can make a mistake and his work goes into the trash can.

Research Questions v2

Okay well I'm impressed by the stuff above, it's way more detailed than I remember actually writing about. I think it still holds water having actually largely finished the game at this point. What else...

Centrality of the text

The text selection turned out to be the major activity in some ways, with the rest being details. I ended up with basic verbs for beginner, grammars that produce repentance sentences for intermediate, and Wikipedia entries for advanced. I like how that went, especially how they provide really quite different relationships between player, avatar, text.

  • Beginner is a kind of direct idea of almost treating each word as a "button" you press to perform an action. "Push" for Sisyphus for instance. It's very straightforward, a verb you type to perform that action.
  • Intermediate gets at the idea of punishment explicitly, giving us sort of an internal monologue, or perhaps an additional layer of punishment on top of the physical act, where the character has to acknowledge the terrible things it has done. This also has the nice effect of being vaguely educational if you don't know the myth in the first place - you get some idea of who this is and why they're in hell.
  • Advanced is much more meta and gets at the idea of punishment through an overwhelming text to type through, and specifically one which is "about" the thing the character desires (escape, an apple, a bath), taunting them by forcing them to dwell on it, even as the punishment they're acting out (through the text) makes it inaccessible
  • And then there's Nightmare for Camus, which is just a bit of fun at the end there, but which is a nice idea I think - to punish Camus for his idea that Sisyphus, who is unhappy by definition, might be happy. A kind of "see how you like it then" moment for Camus, some realism against his idealism?

"Finished"

Wow I guess I've been doing this faster than I thought. We're here (less than 6 days later) and I've finished Zeno, Daniads, Tantalus, and Camus. I mean, that's in no small part because it isn't actually very complex to produce each level after I set the specific 'tone' with Sisyphus. Most of the programming thinking was done.

With the exception of Camus, which has a different structure which I'm pretty happy with all told.

  • You're typing the famous essay
  • If you make a single error, he hangs his head and all the pages are swept into the trash
  • If you finish the entire essay, he raises his arms in victory, but then the pages are swept into the trash, and he droops, then begins the whole essay again

I'm really quite happy with that, it has some good comic timing involved, and is a funny 'reward' for anyone who bothers to type in the entire Camus essay (also known as: nobody).

In the end I think all the levels are pretty strong reimaginings of the original game in the context of typing. I'm pleased with the different difficulty level text selections overall, though I'll want to do at least one more pass through them before releasing it properly. The advanced texts are perfect, I think, it's just beginner and intermediate that need some work.

I might jump over to research questions to see if I have any thoughts about that...

commitMar 30, 2019, 18:39Pippin Barr
cfe69f5Finished Camus implementation

? Added victory sequence in which you finish the essay, he raises his arms in triumph, and then the text is swept into the trash and he has to start again. Wonderful.

commitMar 30, 2019, 18:54Pippin Barr
60209baAdded Camus unlock and Nightmare difficulty selection

? Now stores in localStorage whether you've tried all three Sisyphuses before it lets you run Camus and gives you a little unlock message.

? Camus only has one difficulty setting, which is NIGHTMARE. Har har.

commitMar 30, 2019, 19:51Pippin Barr
50874c4Made most of a press kit (also updated todos)
commitMar 31, 2019, 23:29Pippin Barr
458c6cfAdjusted WPM usage and UI, reviewed texts

? Most important design decision here was to remove the concept of a minimal WPM for action in any level at all. Now it's just if you have any typing speed above 1 WPM you're all good, which is still not utterly trivial if you hunt and peck. To compensate a little bit for proper typists, any typo/mistake brings your WPM all the way to 0 instantly, so that there's some sense of difficulty at higher proficiencies. Now it's the texts themselves that represent the level of advancement, which I think is okay. It's a little bit of a betrayal of Mavis, but not a terrible one.

? The UI was frustrating mostly in its inconsistency, so I adopted a basic principle of aligning the W of WPM with the cursor it applies to, which is somewhat arbitrary but at least makes all the levels look like they're doing the same thing, and it's good enough. Also aligned right so that the numbers proceed out to the right rather than moving the WPM text itself.

? Reviewed all the input texts and decided I basically think they work rather well.

commitApr 1, 2019, 01:53Pippin Barr
bb65e5eActually remembered to animate branch and water in Tantalus

? Idiot.

commitApr 1, 2019, 02:02Pippin Barr
45747c7Added GIFs to press kit, finalised press kit, fixed Tantalus background color

? It's so embarrassing that there are editions of the game out there where Tantalus and Danaids have the same background colour. Rookie stuff.

commitApr 1, 2019, 02:08Pippin Barr
d87db27Crediting testers
commitApr 8, 2019, 14:46Pippin Barr
c5e5c03Bugfix: hyphen key wasn't working in Firefox

? Seems to have been a problem with Phaser's keyboard handler. Replacing that listener with document.addEventListener solved the problem. (May be a "feature" for all I know, but I don't care enough to find out, just glad it wasn't too hard to find.)

Closing Statement - What Would Mavis Beacon Do? Punish you.

Let's Play: Ancient Greek Punishment: Teaches Typing is the seventh game in my Ancient Greek Punishment series and the third "edition" this year (along with the Inversion Edition and the UI Edition). While I used to create versions of the game every now and then, this year I've developed a real interest in only making variations on this core theme for a while. As with past projects like PONGS and SNAKISMS, I find a great deal of value in these sorts of exercises in style. In particular, there's a real opportunity to think about form rather than content, and so many of the games in the series allow for reflection on retelling the punishments in different interactive forms or with formal variation of the core rules of play, ultimately a kind of research project. (Note: throughout this text, I'll be linking chiefly to process materials generated as part of the project in its code repository.)

mavis-beacon

The key reference for Teaches Typing is the educational software Mavis Beacon Teaches Typing, a touchstone from my childhood and the reason I can touch-type today. Mavis Beacon has a particular mode in which your typing speed determines the driving speed of a racing car - I found it thrilling (make of that what you will). As such, Teaches Typing adopts the central idea of typing representing your agency in a non-typing activity directly from Mavis Beacon: you type in order to carry out your punishment. Mavis Beacon also lends the basic idea of the text you type scrolling in a single line at the top of the screen, and thus pretty much solves any addition user-interface design I might have grappled with. So the question became: What Would Mavis Beacon Do?

safety-instructions-eveline

Working with a pre-existing game structure (Let's Play: Ancient Greek Punishment) and a pre-existing interface style (typing input and display as per Mavis Beacon) meant that I was left chiefly with the question of the meaning of the act of typing. I've worked on previous typing games in which the typing represented the actions being carried out (Safety Instructions) or quite literally represented typing (Eveline). With Teaches Typing I already had the actions defined (Sisyphus pushing a boulder, Prometheus struggling in his chains, etc.), so the question became how to position a text in relationship to that agency. Should the typing directly represent the action itself? Should it be about the punishment? Should it metaphorical represent the punishment? What voice should the text use?

sisyphus-teaches-typing

After spending considerable time going back and forth on the "perfect" kind of typing activity to represent punishment (such as an infinite text generated with Markov chains), I realized that Mavis Beacon had the answer again: beginner, intermediate, and advanced levels of play that could each reflect different relationships between typing and myth. At the beginner level, the player would just type action words that represented the action being carried out, direct agency almost like button-presses. So Sisyphus requires typing "push" for instance, very much in keeping with Mavis Beacon's simplest typing exercises (see also, commit 08bfb90). (Note: this worked well for very focused single-action punishments, but was somewhat complicated by the diversity of actions in Danaids.)

prometheus-teaches-typing

The intermediate level involves a focus on writing as a punishment in itself by taking on the form of "writing lines" as per Bart Simpson in the opening sequence of The Simpsons. In fact this idea came from the students in my introductory programming course at Concordia University, thanks everyone! The player writes an endless sequence of "I will not..." sentences, each of which refers back to the transgressions that led to the particular mythological character's torment in Hades. Prometheus writes "I will not steal fire" and "I will not help humanity", for example. This doubles back nicely to the "educational" mode of the game by giving the player some level of knowledge about these myths. (The Danaids version even "teaches" you the names of all 49 murdered husbands of the Danaids!)

zeno-teaches-typing

The advanced version of the game presented an opportunity to be a bit more associative. The advanced texts needed to be the most complex to type and I ended up selecting texts from Wikipedia. Here, though, the connection between text and punishment is more indirect: each text is an entry about the punished character's "object of desire" or "object of opposition". Sisyphus involves typing the entry for Hill, while the Danaids must write about Bathing and Zeno must write about Geometric Series.

The resulting game allows for a very different relationship to the myths from previous editions in the series. Prior to this the myths have formed a funny, but ultimately highly cartoonish foundation for hopeless interactions. With Teaches Typing, however, the textual focus allows a much "higher-resolution" examination of the punishments, their basis in myth, and their underlying meaning. As I sought to explore with Eveline, typing is also very much about reading, and reading presents the opportunity to examine the ideas underlying both the myths and the player actions associated with them.

And that's ultimately the huge value of pursuing these kinds of exercises in style: by cutting away the vast majority of design decisions, you're left to think that much more closely about what remains. That's right: Mavis Beacon belongs in the Greek Pantheon.