forked from NirlekaPlay/asymptote-engine
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPLAN.txt
More file actions
156 lines (148 loc) · 8.3 KB
/
PLAN.txt
File metadata and controls
156 lines (148 loc) · 8.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
Project Asymptote Engine Design Document
1. Detection.
This section will define one of the core mechanics of the Asymptote
Engine and that is how NPCs and Cameras detect suspicious activities
For the engine's demo, we will base the detection mechanic from
Operators.
a. Detectable Entities. These are objects and events that can be
detected by NPCs and Cameras. For the demo, this only includes, in
order of lower priority to higher priority:
i. Suspicious sounds. This includes suppressed gunshots heard
from afar;
ii. Players with the Disguised status;
iii. Players with the Minor Trespassing status;
iv. Players with the Minor Suspicious status;
v. Players with the Major Trespassing status;
vi. Players with the Criminal Suspicious status;
vii. Dead bodies;
ix. Dangerous items. These include Players with the Dangerous
Item status and placed C4 explosives; and
x. Players with the Armed status, being shot at or damaged, or
alarming sounds which includes gunshots and explosions.
b. Detection Priority. The detection priority of each detectable
entities is listed in subsection (a) of this section. Each Agent
can only detect one entity and of the highest priority. When an
Agent detected an entity, any other detectable entity with lower
priority from the already detected entity will not get detected.
For example, a Guard detected a Player with the Minor Trespassing
status. The Detection value of that Player is 1. Entities with
lower priority compared to the current detected entity, such as
suspicious sounds, are ignored. And higher priority entities will
only get detected.
c. Detection Speed. This dictates the time expressed in seconds on how
a detectable entity becomes fully detected. For this demo, the base
detection speed should be 1.25 seconds. When detecting detectable
entities, that detected entity can multiply that detection speed.
i. Dead bodies have a detection speed multiplier of 2.
ii. Players with the Armed status have a detetcion speed multiplier
of 1.5.
iii. Players with the Criminal Suspicious and the Major Trespassing
status have a detection speed multiplier of 1.25.
iv. Players with the Disguised status have a detection speed
multiplier of 0.625.
d. Detection Independence. Detection value are unique to every
detectable entities and to every Agent. For example, if an Agent
detects a Player with the Minor Trespassing status and reaches 90%
from getting detected, but notices another higher priority entity
or event such as a Player with the Armed status, the Agent will
focus on said higher priority entity from 0%, while the previously
detected entity starts to decay.
i. Disclaimer. This does not mean that Players with changing
statuses are detected as a completly seperate entity. For
example: If a Player is seen with a Minor Trespassing status,
detection value reaches 70%, and goes out of sight, and no
then the detection value decays. After some time, it drops to
65%, but the Player gets spotted again with the same status.
Then detection will continue from 65%. And when the Player
pulls out a weapon, applying the Armed status to the Player,
then it will start using that status detection speed
multiplier and raise the detection from 65%.
e. Detection Decay. Detection progress decays 1% every 0.045 seconds.
f. Detection Value Representation. Detection value shall be
represented from 0.0 to 1.0.
g. Detection of Player Statuses. Despite Players can perform numerous
suspicious activities at the same time and thus having different
suspicious statuses, the detection priority still applies.
i. For example, Players that is Trespassing and also having a
weapon visible, they will have both the Minor Trespassing
status and the Armed status. If within an NPC or Camera
detection range, the detection Agent will detect the Player
with the highest priority status. So in this scenario, that
would be the Armed status. And if one or more Player have the
same priority, the Agent will choose the closest one.
h. Player Status Visibility and Audibility. Guard are able to 'hear'
Players if they are trespassing, either Minor Trespassing or Major
Trespassing. And are the only Player Statuses that Guards are able
to hear. So if a Player has the Minor Trespassing status and also
the Armed status, if the Player is not in view of a Guard but is
within said Guard hearing range, the Guard will only detect the
hearable status, in this scenario is the Minor Trespassing status
and not the Armed status.
i. Quick Detection.
2. Actual Story.
The Player can choose between 2 characters or more characters chosen
by the Studio. For the tutorial level, the Character is tasked to
assassinate the equipment vendor Dean. With the mission coordinator
being one of the Trainers of Plasma Security Division, chosen by the
Studio.
a. Required components for this mission:
i. Trespassing mechanics.
ii. Doors, locked with keys and keycards.
iii. Guard AI, patrols and propper reactions
to events and Player actions. Which now
should only include:
1. Both minor and major trespasses;
2. Gunshots;
3. Getting hurt;
4. Dead bodies; and
5. Disguises.
iv. Alert levels. Which raise from
1. Calm
2. Normal
3. Alert
4. Searching
5. Lockdown
3. The Killhouse.
The Player is greeted by the Trainer with unspecified affiliation named
Alice. Alice will guide the Player through the already developed
stealth mechanics of the engine.
a. Chapter 1. Use More Guns. Alice guides the Player through the
handling of guns and ammunition. The Player will be instructed to
take the FB Beryl, get the ammunition from the nearby ammo box, and
shoot the wooden targets.
b. Chapter 2. The 'Asymptote' Part. Alice will now guide the Player
through the basic detection mechanics of the engine. This will
introduce the Player to:
i. The player status bar. Which shows the Player's current
statuses in order of priority from left to right;
ii. Trespassing zones. Zones (internally programmed as 'Cells')
can give you the minor trespassing status, and the major
trespassing status;
iii. Disguises. A disguise can make you not have certain
trespassing statuses depending on the zone's configured
penalties; and
iv. Detection. A detection bar will show pointing towards the
detecting Agent and will fill up to show how close is to
detecting the Player. If the Player does get detected, simply
allows them to try again.
4. Objective system.
For now, let's just make a simple objective system. For the dean
assasination mission, we will only have these simple objectives:
a. "Find a way to get up stairs". Starting at the 3rd floor, The Player
can steal a keycard from the guards, or shut off the power to get to
the stairs.
b. "Access the penthouse". The Player needs to access Dean's penthouse
either via infiltrating using disguises or breaking in.
c. "Kill the target". If the Player is on the 6th floor, they need to
kill the target (Dean). After thats done...
d. "Exfiltrate". The Player can now leave and finish the mission.
5. Philosphy.
Our objective system must be easily restartable. For development, it
must be declarative. For example, the developer puts in a Part or other
instances then set the attributes to dictate its functions.
a. Established systems. We have an expression parser and states. Global
and local respectively. For example, a `TriggerZone` can have an
attribute named "EnabledCondition" which can be an expression. e.g.
"!Mission_AlarmRaised && Mission_AlertLevel >= 1", an attribute named
"Variable" that sets a global or client state that is set to `true` when
an entity enters.