Project for programming class

KittyAlana b8a915176d Update 'annotated_code.md' 4 years ago
src ba1c388c2a Update 'src/interaction.py' 4 years ago
.gitignore 294ae8511e Initial commit 4 years ago
LICENSE 294ae8511e Initial commit 4 years ago
README.md 96349f2005 Update 'README.md' 4 years ago
annotated_code.md b8a915176d Update 'annotated_code.md' 4 years ago

README.md

Text game for programming class

VISION

Ultimately, this game seeks to evoke a specific emotional reaction for the player; our goal is for our player to experience intense feelings of empathy for our characters, and better understand the dynamics of (specifically, non-pacifist) activism. On a longer term, this game would have fulfilled its true purpose if it helps people gain a better recognition of their true values. The project presented at time of evaluation should be regarded as a proof of concept.

Throughout the game, the character is presented with objects. The character does not have the power to navigate freely, and is only moved as a result of their interactions. This reduces frustration and mimics realistic dynamics. Humans rarely walk around aimlessly, and generally have a reason if not destination for travel. The game is driven primarily by dialogue, and interactions with NPCs is the main driving force of the game. Ultimately, the storyline is determined by object interactions. The character also has a continuous internal monologue which the player can choose to guide and interact with. Interactions with self operate with the same mechanics as external interaction.

For more on this project, please see https://docs.google.com/presentation/d/1EX07NZhaIdzw-J_GU5XUXH0BCr7qCgClYlMd-MvtvvE/edit?usp=drive_web&ouid=114022604549535608506

PROCESS

The most difficult part of this project is the establishment of a consistent and immersive storyline. It is a difficult task for a game to truly have a meaningful emotional impact on its player. However the game has been about soliciting complex and meaningful emotional reactions from the player since its conception. The game does not intend to be technically complex nor impressive; in fact, the program specifications make it abundantly clear that this will be a simple text-based game. It has been decided that the play time will be relatively short to allow for thoughtful design, following the notion of quality over quantity.

STRENGTHS IN ORGANIZATION

There have been zero conflict within the development team of one person, and despite incorporating the voices of all team members equally in a non-hierarchical manner, decisions were made rapidly and unanimously in every occasion. Communication within the one person has been incredibly effective, and an internal survey shows that 100% of the development team believes their voices were heard in the development of this project. Further, all team members have expended absolutely equal effort on this project.

WEAKNESSES IN ORGANIZATION

The development team remained chronically behind schedule, and is often panicked about reaching deadlines. Working code was not produced until 7 hours before due.

The development team attempted to solve it's time management problems with caffeine consumption and logging out of social media. It was effective, these measures should have been implemented earlier.

DEVELOPMENT TIMELINE (REFLECTIVE)

All work completed by Alana unless stated otherwise.

November 8, 2018:

Finalization of TRISOFT branding
Brainstorming

November 12, 2018:

Development of TRISOFT approval document, including:
    -Problem layout
    -Game setting description
    -Target audience specification
    -Storyline description

November 13, 2018:

Completion of development schedule, finalization of approval presentation for standards compliance

November 14~Dec 6:

Storyline brainstorming (No recorded work for this section).

Dec 6~7 (Overnight Sprint Development):

Completion of programming algorithm specification

Dec 7 (Overnight Sprint Development):

Programming

JOURNALING Nov 8, 2018:

An aesthetically pleasing logo has been created. 
I have a general idea of where I want to take this project, and the rough goals.

Nov 12, 2018:

A standards-compliant approval request presentation has been completed. This includes a full description of problems, game setting, target audience, and a rough description of the storyline.

Nov 13, 2018:

Urgent fixes to presentation: standards non compliance. A development schedule has been added to patch.

Nov 14, 2018:

Presentation delivered to Mr. Stevens, behind schedule by one day. 

December 6, 2018:

Started work on programming algorithm specification behind schedule. Due to the circumstances of this project, it is also the storyline specification.

December 7, 2018:

Programming algorithm specification is completed behind schedule. 
Programming begins.

December 11, 2018:

Programming Finalizes.
Problems:
    -Non-compiling code
        -Function calls not recognized
        -Loops were not breaking when they were supposed to
        -Classes were used unnecessarily
        -Indentation levels exceeded style guide specifcations
        -Git commit history was cluttered
        -Imports unrecognized in noninteractive.py
        -slow_type.slow_type() froze while printing
        -Newline character was not appended to the end of "=" divisors
        -Dialogues appeared cluttered
        -Last section of noninteractive dialogue was not executed
Fix:
    -Multi-hour Debugging
        -Fixed typoes
        -Discovered misuse of .lower() function, fixed
        -Functions were taken out of classes and used without them
        -Refactored code to reduce nested conditionals
        -Attempted to rebase commits, write better commit messages
        -Fixed typoes
        -Added flush to print lines
        -Added newline character
        -Added newline characters at the start of noninteractive dialogue lines
        -Patched off-by-one error in main.py

STORY FLOW: Gameplay (Pseudocode Outline Before Implementation):

Self dialogue
prompt user interaction:
Process user interaction.
Continue dialogue with interactionType influence
After interactions, interrupt self dialogue with “external” element

External element is interactive object (NPC)
Dialogue(picked type), introduce plot line
    Have you heard of (new legislation)?:
        Prompt response
        Record response
    Respond to user input
Continue with self dialogue
Self dialogue draws attention to external element (crying child)
Interact with crying child (Ignore, Help up?)
Rest of code not implemented as of date
If tier B:
    (Talk to? (Tier C)):
        Child: Scared, nowhere to stay
        Take with you? (C), leave? (B)
If leave
See riots, self dialogue, interactions determine participation
    Interactions: "Look" function, and then talk to any character. 
    Character interactions occur as previously described. May make friends.
If take child:
    Ignore riots, comfort child, find place to stay
    Continuous conversation with child.

Game ends by showing player all choices they made throughout the game (unimplemented as of date).