Werden wir Helden für einen Tag

Home | About | Archive

MASHINA G is released, or a blog post about the German language

Posted on Aug 22, 2024 by Chung-hong Chan

The game MASHINA G, my second game, has been released on itch.io as Alpha. It is available for free. Except the physics engine, the whole game was developed in 96 hours for GMTK Game Jam. There is no hope that the game could win 1. But I think the most important aspect of any game jam is skill improvement. And the development of MASHINA G certainly makes me a slightly better game developer.

Previous on this blog: My recent spiritual retreat: Writing a video game, PIKR-033 is released and some thoughts

Due to the short development time of 96 hours, I reused also code, sound, settings, and artistic style (that imaginary communist retrofuturistic vibe) from my previous game PIKR-033. However, the genre is totally different. This time it’s a twin-stick shooter. Last time I said it’s easier to program a puzzle game. This time I had to confront physics and AI. But man, both are super hard!

Physics

Programming physics is difficult, even for the unrealistic world of the game. Programming this was testing my mathematical knowledge that I had not used for decades: trigonometry and geometry. As simple as the typical Secondary School question like: “You are now at the point (x1, y1) and you are moving to the southwest at the speed of 3 pixel per second. What will be your position in 1 second?” 2, I needed to think and rethink how to calculate things like this programmatically. Another thing was collision detection. I have already used an external library for that. But even with that, it was still difficult.

Physics was the only subject I failed in my A-Level exam. Mostly it was due to my complete failure to grasp classical mechanics and rigid body physics. I am now confronting the demon from my youth.

AI

The game barely has any AI and therefore the foes are barely intelligent, except being able to move to another direction when collide with the wall or each other and shoot aimlessly every few seconds. Their behavior is mostly random. And your behavior does not affect theirs. So, no aiming and no pursuing.

The original idea was to have different behavioral profiles. But well, 96 hours.

SPOILER ALERT, SPOILER ALERT, SPOILER ALERT

The ending of PIKR-033 hints that there are other computers and MASHINA G is one of them. The original working title of the game was Die G-Maschine (The G Machine). I think the Russian translation (Машина G) suits the narrative. The translation is weird because there is Cyrillic equivalent of G (Г, or Ge/He). But I did not call the game Машина Г because the G has its own meaning: Genus. The word is used in both Latin and German. But I think it’s easy to understand to say it in English: Grammatical Gender. Yeah, Der Die Das.

Машина Г cannot communicate this because the Russian word for Grammatical Gender is Род (transliteration is “Rod”). But MASHINA R is weird. So I would stick with the weird translation of MASHINA G. Again, it suits the narrative. I did not have time to develop the back story and put it in the game (There is also a “MORE” mode like PIKR-033, but it cannot be activated for now). But this time, the fictional computer was supposed to be developed in the former GDR for exporting to the Soviet Union. It was supposed to be a machine to be used to train KGB (КГБ) agents who would be stationed in Dresden and working with the Stasi. In case you don’t know, Vladimir Putin was one of these agents from 1985 to 1990. He can speak very good German despite the Russian accent. An example of this was his speech (after 02:30) at the German Bundestag in 2001 3.


Robotron:2084

The Robotron:2084 / Smash TV-like shooting game in MASHINA G is actually just a decoy. Under the hood, it’s a language learning game like Duolingo. I don’t want to make this point super explicit on the itch.io page because it would impose the association of poor quality educational games, if the game is not bad quality enough.

Many German learners struggle with the grammatical gender. It is easy to dismiss this by saying German speakers can usually understand you well enough even when you totally mess up the grammatical gender. It is true that people can usually understand a sentence like Ich habe die Onkel das Apfel gegeben (even Ich habe la Onkel l’Apfel gegeben, or even Ich habe Onkel Apfel gegeben). We can somehow know that “uncle” (Onkel) is the dative object (indirect object) and “apple” (Apfel) is the accusative object (direct object) because of the typical word order. But we don’t know if there is one uncle or many uncles. Also, perhaps I want to say “I give the uncle to the apple” 4 instead. Clarity aside, it would be quite bad to say a sentence like this in an exam. Or maybe also in a job interview.

I think it has something to do with the way we learn German as a third language. At the beginning, we learn a new noun this way, e.g. Bus. The Grammatical Gender is usually an afterthought. For example, Duolingo encourages this afterthought way of learning German nouns as it does not list the gender of a noun.


Die Abend, Der Abendessen, and Das Abenteuer, Duo?

The mental model of a typical German self-learner usually does not store a German word together with its Grammatical Gender. The recommend way is to always remember a noun with its nominative definite article, e.g. Der Bus. It works, but boring. Later in my journey, I find it much more interesting to learn a noun by constructing a sentence such as Ich esse … (I eat…) which asks for accusative. I can surely remember the grammatical gender of Bus, Straßenbahn, and Flugzeug if my mental model says Ich esse einen Bus, Ich esse eine Straßenbahn and Ich esse ein Flugzeug. Another way is to associate nouns with the same Grammatical Gender together. My usual association is Der Vampir, Die Katze, and Das Schaf. For example, a bus with a lot of vampires. A tram with a lot of cats. An airplane with a lot of sheep. Even with these associations, the earlier memory cannot be completely undone. If you present me with a German noun, I can only get its grammatical gender correct in perhaps 85% of the time. Not bad, but neither good. I think that even native German speakers cannot get it 100% correct due to dialectical variations etc. I often see in quiz shows on German TV asking questions about the grammatical gender of a noun in combination of the often wrong determination of accusative and dative cases.

On the contrary, as a gamer I find that I can remember a lot of things about a game. Especially JRPG. I can remember what this particular item is for, where I can buy this particular item for how much, where I can fight this particular monster to get this particular item, which monster is vulnerable to which attack, getting which object can trigger what particular event, which event is after which another event, etc etc. If you think about it this way, it is impossible that we are struggling to remember the Grammatical Gender of some thousand or so German nouns. Only if we frame it as a (hopefully fun) game, of course 5.


Ikaruga

My main reference is the game Ikaruga (斑鳩). The foes in Ikaruga are either in black or white color. You can also switch between black and white color and shoot bullets in the chosen color. You and your foes are vulnerable to the bullets in the opposite color. But the same color bullets do not hurt you, instead they help you.

My think was: Instead of two colors, what if we have three colors representing the three grammatical genders (Blue is musculine, red is feminine, and yellow is neuter)? Also, unlike Ikaruga, what if you cannot tell the vulnerability of your foes, basically German nouns, by the visual appearance? In the game, your foes are vulnerable to the same color (unlike Ikaruga). Therefore, you have to shoot the noun Apfel with blue bullets to damage it. I think that is the fun part. By saying vulnerability to colors (not the Genus of Apfel), that’s the reason I can obscure the educational nature of the game. If you see this simply as a game, one would learn the Genus in a sublime way. In the future, I will add a spaced repetition element to the game to make the educational effect much better.

Let’s talk more about the nouns. My first attempt was to use a random word list I found, until I found many frustrating errors in the list (Der Lebensmittel?) while I playtested the game. Then, I switched to the Wortschatz Goethe-Zertifikat. Originally in some PDFs). Luckily, DWDS (Digitales Wörterbuch der deutschen Sprache) provides those lists in a machine-readable json format. Very nice!

After selecting all nouns, there are slightly over 1700 words. I deleted two words from the list: Geschwindigkeitsbeschränkung (speed limit) is absurdly long 6. Another word is Leiter, because it has two meanings depending on the Grammatical Gender: Der Leiter means the male leader, die Leiter means the ladder. Actually, more words could be trimmed. For example, according DWDS Butter can be die Butter or der Butter. I think in Standard German (Hochdeutsch) it should be die Butter. For example, Duden only gives this result. But according to the dictionary of my regional dialect (Pälzisch), that’s der Butter. For these cases, I keep the standard German version. But I might make more adjustments.

But anyway, the words in the game are the ones you should know as a B1 German speaker. So, if you don’t know any of the words, that means…

In conclusion, there are still a lot of things to be done for the game. Please only consider the game to be an alpha release.


  1. To be honest, I don’t feel the game 100% fits the theme of the game jam (Built to scale). The statement I made about the fit was a farce. Another issue is that winning a game jam, especially this one, can also be a popularity contest. I don’t have any popularity in the gamedev space. I don’t even want to use the official communication channel (which is the proprietary Discord) to promote my game. Anyway, I just wanted to use the game jam to give me a reason to develop the game and practice. Also, to distant myself from my work. 

  2. No, the answer is not (x1-3, y1-3) in a Cartesian coordinate system. That would be moving faster than 3 pixels per second. Instead, you are traveling not in half-pi dividable radians (or 0°, 90°, 180°, 270°), but 1.25 radians (225°). Therefore your traveling distance should be the hypotenuse of a right angle. To find it out, you have to use the Pythagorean theorem as well as using inverse sine and inverse cosine functions to find out the adjacent (the change in the X asis) and opposite (the change in the Y axis) sides of the right triangle based on the two other angles in the right triangle. BTW, the coordinate system of my game engine is not Cartesian. 

  3. I think he has completely betrayed what he said in the super pro Europe speech. 

  4. Dem Apfel habe ich den Onkel gegeben. If I gave the uncle to a lot of apples: Ich habe den Äpfeln den Onkel gegeben

  5. Yes, you can frame it also as a stack of Anki flashcards. But is that fun? 

  6. I think the Germans also think that this word is absurdly long and therefore in the political discussion about restricting the speed on the Autobahn, they say (das) Tempolimit. BTW, the second longest word in the list, which I have kept, is Vorstellungsgespräch (Job interview). I think it’s also long (20 characters), but not crazily long (28 characters). 


Powered by Jekyll and profdr theme