Sign inSign up

defnotgustavom/officer

By defnotgustavom

•Updated over 3 years ago

Image size: ~279KiB. "Papers, please" CLI clone. USER: nobody.

Image
0

3.9K

defnotgustavom/officer repository overview

  • Running:

docker run -it --rm --log-driver none --read-only --net none defnotgustavom/officer


  • Game description:

"Officer" is a story-based RPG (role-playing game) based on the game “Papers please”. Although we have borrowed concepts such as checking documents and secret missions from the original game, the gameplay and story of “Officer” is completely original.

  • Settings:

Year 2077: Earth is opening after 30 years of self-isolation

Location: Earth Border

Role: Border officer, B-263-54

In this game, players take up the position of a border officer to Earth, where it is opened after 30 years of isolation. By cross-referencing the documents presented by visitors and data provided by your superior, players have to approve or disapprove visitors’ entry to the recently opened Earth. As the difficulty rises (weeks elapsed), more details will need to be inspected by the players and more events (secret missions) will be prompted.

  • Basic game rules:

Players will be provided with related information, such as years till expiration and planets to disprove, to cross-reference against this passport. As more weeks have passed, there may be more than one document to check, so players will have to input “A” or “B” to access (print out) different documents. This function can also be used to access the data/documents provided by the superior.

After each week, players’ performance will be evaluated by the time spent and the accuracy of approvals. Players are incentivized to reach a high mark as our rare condition (caused by The Infected blood) requires an expensive medicine (although money will evanually run out no matter how well we perform) and food will take up a majority of our paycheck (starvation can be one of the endings).

  • Events and cases:

Normal encounters: 40% should be disapproved

Week 1)

Introduction to the setting and job. Only humans should be approved. (easy, introducing how to play)

Week 2)

Only: Humans

Aliens with passports from approved countries/ planets with entry passes. (A rebel,alien spy, introduces us to the existence of The Rebellion by handing us a pamphlet.)

Week 3) Only: Humans with passports from approved planets

Aliens with passports from approved countries/ planets with entry passes. (The last case will be an encounter with a rebel.)

A major twist is revealed by a letter from the player’s mother. 300 years ago, Earth was origainlly occupied by the alien species, The Infected, but was since taken away by humans. As victory is often written by the victors, history books has referred to the deportation of “The Infected species” in 1800s as a victory of humans defending their motherland against external aliens powers. Even the name “The Infected” is to associate the species with a negative stigma to further alienate them from Earth.

In the last part of the letter, it is also revealed that the player secretly bears the bloodline of The Infected. The player will then be more incentivized to join the rebellion (secret missions) against humanity, or even feel guilty about prior disapproved entries for The Infected.

Week 4)

Only: Humans with passports from approved planets

Aliens with passports from approved countries/ planets, with approved entry passes. Name is not mentioned on ‘The Wanted” list (The last case will be the encounter to introduce the Earth officials visit)\

Week 5)

Only: Humans with passports from approved planets

Aliens with passports from approved countries/ planets, with approved visas Name is not mentioned on ‘The Wanted” list (Includes the 3 cases) (Gameplay will not be the highlight of this day as to let the story shine.)

  • Endings:
  1. Died in disgrace(1)

Prerequisites: False approved alien entries/ disapproved human entries x times

  • Events:

Died immediately- killed on the spot by superior (will be warning prior to this event)

  1. Died in incompetence

Prerequisites:

Run out of money (poor grades in previous weekss- time, accuracy...)

Events:

Starved in the next week

  1. Died with honor

Prerequisites:

a) Encounter “invitation from assassin” (x approved alien spies entries)

b) Approved all 3 (tbd) Earth officials to Earth

Events:

Awarded medal of honor in week 6

Died in week 7(final week). Killed by Office Kim.

  1. Died in disgrace (2)

Prerequisites:

a) Encounter “invitation from assassin” (x approved alien spies entries)

b) Did not approve all 3 (tbd) Earth officials to Earth

Events:

Officials were ambushed in space by assassins

Died when week 6 ended- killed by superior

  1. Hero’s journey

Prerequisites:

a) Encounter “invitation from assassin” (x approved alien spies entries)

b) Disapproved all 3 (tbd) Earth officials to Earth

Events: All 3 officials were ambushed in space by assassins

Ruling party was overthrown

Rebellion was a success

You were celebrated as a hero.

  1. Died from greed

Prerequisites:

Accepted the bribey in week 3

Events: Killed by Officer Kim for treason.

  1. You cheated... (Easter Egg event)

Prerequisites:

The user manually changed the amount of money in the file (outside of the game).

Events: Game over.

Players may struggle to pick a stand or wish to play out differnet scienarios/endings, so we believe our game has a compelling story and high replayablity. Our game also has different elements of programming that meets the requirements as explained as follows.

List of features

Requirement 1- Generation of random game sets or events

Random game sets:

Entrants’ information including name, passport number, gender will be created in the program and stored into arrays. For each entrant in the game, their information will be randomly drawn from the arrays. False passport information (E.g. not existing country or typo) may also be randomly drawn from the list. For this situation, the player may consider to disapprove of its entry. (60% True, 40% False)

Requirement 2- Data structures for storing game status Array and struct will be used for storing the random cases.

E.G.

struct cases { // Stored into struct cases.h //PP = passport std::string icon; std::string PP_name; std::string PP_gender; std::string PP_birth; std::string PP_issue; std::string PP_country; std::string PP_number;

//EP = entry pass

std::string EP_name;

std::string EP_gender;

std::string EP_birth;

std::string EP_country;

std::string explanation; //For invalid passport or entry-pass

//Return true if no erros occurs in the EP and PP (consistent information)

bool vailidity;

};

record[0].icon = "Human - Male";

record[0].PP_name = "Lian Ho Yeung, Michael";

record[0].PP_gender = "Human - Male";

record[0].PP_birth = "1998-04-22";

record[0].PP_issue = "2043-09-31";

record[0].PP_country = "Earth - China";

record[0].PP_number = "3035714260";

record[0].EP_name = "Lian Ho Yeung, Michael";

record[0].EP_gender = "Human - Male";

record[0].EP_birth = "1998-04-22";

record[0].EP_country = "Earth - China";

record[0].vailidity = true; \

  • Requirement 3- Dynamic memory management

Dynamic array structure will be used to store the probability of the random cases. As some of the game status data will only exist when drawing the cases.

E.G. The p1 variables in icon function , which is a probaility to decide which icon to be printed in the icon function. After using the p1 variables, it will be deleted and release the memory.

  • Requirement 4- File input/output (e.g., for loading/saving game status)

For the end of each week, players can save their gamestatus The save will be stored into a text format file. The format of the game save is “week money wrongattempts” in a line. It is designed not to encrypt deliberately so that the players can get a particular ending of the game. Easter egg endings are also designed for players who modify the money data, gameweek.

Format of the game save is as follow:

5 0 10 (Week, Money, Wrongattempts) in save1.txt

  • Requirement 5- Program codes in multiple files

The program codes will be saved in multiple files based on the different functions. Main file for programming the functions of the main function including start(), exit() when executing the game program.

Gameplay file for programming the main game-play and including the dialogues that provides the introduction and different special rules each week.

Event file for programming some special event that may happen on a particular gameweek. Those event functions will be called on particular game-weeks.

Ending file stores different endings of the game and the functions inside the ending files will be called when the player meets all the prerequisites of the ending.

Saving Load files will involve the saving and loading function of the game status.

Tag summary

Content type

Image

Digest

sha256:99168b415…

Size

306 kB

Last updated

over 3 years ago

docker pull defnotgustavom/officer