R09: Authoring "Endgame: Singularity"

  • Due Feb 2, 2020 at 11:59pm
  • Points 4
  • Questions 4
  • Available until Jul 13, 2020 at 8am
  • Time Limit None

Instructions

In this reading assignment, you'll make sense of an unfamiliar formal authoring language and use that understanding to answer detailed questions about the gameplay of a game you've never played. You won't even need to play it as part of this reading assignment.

If you are reading a Choose-Your-Own-Adventure book and you get tired of re-playing the experience from the beginning each time, you can simply switch to reading the book linearly. You'll encounter all of the content seen in all possible playthroughs of the story (and sometimes even some extra content), but it won't make as much sense as if you were following the rules of the game. We can do the same thing for videogames!

Watch this 15-minute review of a peculiar, non-commercial, open-source game called Endgame: Singularity (let's call it ES) https://www.youtube.com/watch?v=suqkkfCeiqE Links to an external site. You can ignore the part about saving graphics settings, but I do want you to have some familiarity with the game's fictional premise and core mechanics (establishing bases, researching techs, avoiding suspicion). Despite the clunky looks, the balance of systems and authored narrative content in this game is actually quite engrossing.

--

Watch the video now before proceeding.

--

Conveniently for us, the complete source for ES is online here: https://github.com/singularity/singularity Links to an external site.

Although the game started development in 2005, the game is still under development in 2020.

From an authoring perspective, the part we care about is in this "data" folder: https://github.com/singularity/singularity/tree/master/singularity/data Links to an external site.Unlike in most of our class projects, you'll find that the authored data is scattered across several different files.

ES is mostly programmed in the Python programming language, but large chunks of the game's systems and narrative are authored (coded) in another language. Most of the lore of the fictional universe is written in the language of ConfigParser (a data language somewhat simpler than YAML and JSON: https://docs.python.org/3/library/configparser.html Links to an external site.). The ConfigParser language was not quite expressive enough for the ES developers, so they needed to document the specialized ways in which they represented lists: https://github.com/singularity/singularity/blob/master/docs/devel/data_files.rst#the-special-_list-suffix Links to an external site.This custom language (more of a dialect) is specific to the ES project, but it is similar to the kind of thing you might need to invent for yourself or your teams in the future.

Looking at https://github.com/singularity/singularity/blob/master/singularity/data/tasks_str.dat Links to an external site.for example, even without playing through the game, we might guess that the AI (protagonist) can't take on "Intermediate Jobs" until it has developed the ability to place phone calls (perhaps related to the "Voice Synthesis" tech). (Sound familiar? Let Google book you a haircut Links to an external site.). In fact, looking at another file https://github.com/singularity/singularity/blob/master/singularity/data/tasks.dat Links to an external site.we can see where the author has directly stated that the "Intermediate Jobs" task lists the "Voice Synthesis" tech as a prerequisite.

Let's see what else we can learn about the game while practicing our reading skills in this project-specific data language.

Only registered, enrolled users can take graded quizzes