0% found this document useful (0 votes)
42 views14 pages

Game Document 1

Uploaded by

api-727895293
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
42 views14 pages

Game Document 1

Uploaded by

api-727895293
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 14

GUARDIAN OF THE

LITTLE WOODS

UXG2165 & UXG2520


Assignment 3

Team Chupa Chups


Joanna Lim Wen Yi
Kwek Ye Jin
IN A NUTSHELL
Game Objective
You are playing as a guardian in a forest, trying to clear out slime-
infested areas.

Backstory
A forest guardian in training, with the guidance of his master, is tasked
to clear slime-infested areas in Little Woods in order to protect its
forest home.

Game Systems Implemented

Enemy system Enemy Waves System Weapon Class


Avatar System
System

Dialogue System Player Analytics Save/Load System Skill Tree System


System

CutsceneIndex Currency Drop System Currency System


System

List of Assumptions
Assuming that systems are scalable.
Assuming that "-1", "-2", < > , [ ] in the json files are placeholder texts.
CORE GAME LOOP

Choose character Defeat


(appearance + class) Start of wave
Enemies

Earn

Currencies

Unlock End of
new wave wave

Upgrade

Get Weapon /
Stronger Stats
Results in
USER SCENARIOS

Goes to last scene /


Start Load Game Game Scene

Goes through
Start Game New Game Pregame1
Dialogue

Goes through Choose


Reaches
Pregame2 Character and
Game Scene
Dialogue Class

Complete Wave Complete Wave


Start Wave 1
1 1

Continue on Upgrade
Earned Gems
to next wave Skills
SYSTEM BACKEND

Avatar + Weapon Class System

Gives the player the base stats to start in the game.

Based on whichever weapon the player selects, it will give the current
avatar stats buffs in terms of addition.

Enemy + Enemy Waves System

The enemy system provides the basic stats and images of each slime.

When the enemy wave ID is called, it will match the enemy wave ID
against the enemyWave system and put all the same enemyWaveID into
a list.

It will then check the list's enemyID against the enemy system, and if the
enemy ID matches, it will take note of the number of enemies needed to
be spawn (numOfEnemies), and the duration between each enemy
spawning (enemySpawnDelay).

The enemies will then be spawned accordingly.


SYSTEM BACKEND

Enemy + Enemy Wave + Currency +


Currency Drop System

When an enemy dies, the currency drop system will first check against
the enemyWave ID. If it matches, it will then check for the enemy ID. If
the enemy ID matches then, it will calculate the chances of its currency
dropping.

It will check if the random value meets the chance value. If it does, it will
randomly generate a qty value between MinQty and MaxQty.

To show the currency dropping to let the player know that they have
auto-collected something, the currency ID in the currency drop system
will be checked against the currency ID in the currency system. If it
matches, it will get the currencyImg (served as a image path) to spawn
the currency.

The amount of times the currency will be spawned is based on the qty
value.
SYSTEM BACKEND

CutsceneIndex System + Dialogue System

To aid the Dialogue system and some other functions, a CutsceneIndex


table is created according to the build settings of the game.

It contains the cutsceneIndex, cutsceneId and cutsceneName.


The index goes according to the scene index in the game, while the
cutsceneName is the scene name. the cutsceneId would be used as a
better identification of the cutscenes.

This table is used in Dialogue System to search for the cutscene-


specific dialogues that should be displayed on the screen. There are
two parts to the dialogue system, split into two scenes in "PREGAME1"
and "PREGAME2", with a choose character scene in the middle.
In PREGAME1, the dialogue system is just a simple conversation
between two characters without requiring any dynamic data.

In the PREGAME2, dynamic data is required, hence, players must pick


a character in the ChooseCharacterScene before the dialogue
continues and the dynamic data would be retrieved and replaced in
the dialogue system.
SYSTEM BACKEND

Dialogue System

For the dialogue system, the variables are dialogueId, nextDialogueId,


cutsceneId, currentSpeaker, leftSpeaker, rightSpeaker, leftAvatarId,
rightAvatarId, dialogueText and dialogueChoices.

Example:

the dialogueId and nextDialogueId would be the ones in control of the


iteration through the dialogues, while the cutsceneId sorts out the
different dialogue that should appear on screen in that scene.

After the first step is completed, the next would be the data population.
the word "avatarName" in the system would be filled dynamically by
retrieving the avatarName in the PlayerProgress.

the leftAvatarId and rightAvatarId are used to search for the exact Id
stored in the Avatar table to retrieve the image of the character. If "-1" is
found, it means that it is supposed to be filled with the player chosen
avatarId, and hence, the program would retrieve it from the
PlayerProgress.

Next, the dialogueText would be displayed and the < > tags - namely the
avatarName or the enemyId, would be retrieved from relevant tables
and be replaced accordingly.
SYSTEM BACKEND

Dialogue System - Dialogue Choices

Typically, the dialogueChoices would be left as blank - "". In the event


where there are dialogue choices to be made, it would be filled with a
string.

For example: "dialogueChoices": "What should I do then??


#40013@Um... do I really have to get myself involved? I'm already
traumatised by these slimes...#40014".

The long concatenated string is split into 4 pieces of information,


choice A's text, choice A's nextDialogueId, choice B's text and choice
B's nextDialogueId. They are used for displaying the choices in the
prompt and navigating to the next dialogue based on their Ids.

For choice A, the dialogueId sequence would be 40012, 40013, 40019,


40020.... while in choice B, the dialogueId sequence is: 40012, 40014,
40015.... before they continuing with the dialogue lines available.
SYSTEM BACKEND

Save/Load System Pt.1

Throughout the gameplay, the Save/Load system will be keeping track of


the player's progress.

Whenever a new scene appears, it will track the current scene via its
name, so that when the player loads the game up again, it will display the
scene where the player last left off with the exception of the slime wave
scene (it will lead the player back to the game scene).

It also keeps track of the player's chosen avatar and weapon IDs, their
respective images as well as all the stats combined. The stats will be
updated whenever the player buys a skill.

It also keeps track of the player's collected currencies and displays them
in the game scene. The currencies will be adjusted accordingly when the
player collects more or spends them on skills.

It also keeps track of three lists - unlocked skills, unlocked slime waves
and completed dialogues.

Storing bought skillIDs into the unlocked skills list help keep track of the
skills the player already bought.

Unlocked slime waves list helps keep track of when a slime wave is
completed, which helps let the game know if the slime wave is to be
unlocked or not when the player loads up the game.
SYSTEM BACKEND

Save/Load System Pt.2

For completed dialogues list, every time a dialogue scene is completed,


it will be added to this list. As we plan that in the future, every time a
player completes a slime wave for the first time, a dialogue scene will
play out to progress through the story's narrative.

This will help check if that particular scene needs to be played out when
the player completes a slime wave.
SYSTEM BACKEND

Save/Load System + Skill Tree System

It will first check against the chosen weaponClass ID in Save/Load


system, and if the weaponClass ID in the SkillTree system matches, it will
get the skills that have the matched weaponClass ID.

From there, it will load the skillTreeImg to display the skills, and the rest
of the data to display for purchasing of skills.

When a skill is bought, the skill ID will be added to the list of


unlockedSkills in the Save/Load system. This will be checked every time
the player buys a skill so that the player do not buy the skill again.

A bought skill will then split the affectedStats by '@', and from there, it
will check the Save/Load system for data that have the same names as
the affectedStats.

It will then check if the skillTreeType to know if the skill is of passive or


active type. If passive, it will multiply the matched stats with the
itemStats.

Active skill will be applied by checking against its ID against the SkillTree
system. If matched, it will check if the player has unlocked the skill or
not. If yes, the skill be be initiated. If not, it will not be initiated.
SYSTEM BACKEND

Player Analytics System

When the player clicks on a slime wave, it will pass the enemyWave ID to
not only the wave initiation script to initiate the correct slime wave, but
it will also be passed to the player analytics to keep track.

Throughout the slime wave, the player analytics will keep track of the
number of enemies defeated, along with the battle time, damage taken
and currency collected.

Currency collected will be formatted into a string in this format -


"currencyID1#currencyID1Quantity@". '@' is the separation for the
different currencies the player may have collected.

When the slime wave has been successfully or unsuccessfully


completed, the data will be shown on a level result screen. At the same
time, it will be saved into a JSON file via application.PersistentDataPath.
DIALOGUE SYSTEM

Core features

The core feature of the game's dialogue system would be the branching
feature, as shown previously. The player would be required to choose a
response to the NPC's request to train him to be the next forest guardian
to protect the Little Woods from the threatening slimes.

The truth of the matter would be that both of these choices would
eventually lead to the same path, and this availability to make a choice
adds to player interaction and gives an illusion of freedom in the game.

To add some dynamics, the avatar name is changeable according to the


character chosen, and when mentioning the enemy - the green slime
would appear for that specific line of dialogue.

For User experience wise, greying out non-speaking characters,


background music and the typewriter effect for the text are applied, and
a "Press enter to continue" prompt would disappear and appear again if
there is no input detected after a period of time.

You might also like