-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathchangelog.txt
More file actions
356 lines (234 loc) · 12.3 KB
/
changelog.txt
File metadata and controls
356 lines (234 loc) · 12.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
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
Change log for Defense Condition game project
Author(s): Ray Gardener (support@daylongraphics.com)
Repository: https://github.com/RayOfDaylon/Defcon
October 10, 2023
Mouse pointer hidden when game starts (can be enabled for debugging in Main map's BeginPlay script).
Pressing Esc at any time in the intro screen exits the game app.
Made shield powerup texture animate better.
Replaced switch statements regarding powerup creation/application with IPowerup methods.
Moved "future work" section of docs.txt to plan.txt.
Normal sound output is done via message mediator instead of GAudio global.
Added shield and double laser cannon powerups.
Powerups spawn at a minimum distance from player (the screen width)
up to half the arena width.
Invincibility powerups spawn at random intervals
in random locations.
Messages system no longer retains redundant messages.
Player ship appears brighter when invincible.
Added invincibility toggle key to Help screen.
Invincibility implemented.
Dual cannon energy and invincibility reduce over time
(but not renewable yet. Use sparingly to avoid getting
creamed in the later missions).
Renamed 'double guns' to 'dual cannon' in the Status panel.
Pressing 'I' toggles invincibility.
Added double guns and invincibility readouts to Status panel.
Still need to get their values to drop over time.
Restored smart bomb radius factor to 1.0.
0.75 was feasible but it just didn't feel fun/cool enough sometimes.
Moved CMaterializationTask from DefconPlayViewBase.cpp to materialization.h/.cpp.
Moved player ship destruction types from DefconPlayViewBase.cpp to playership.h/.cpp.
Moved Particle and ParticleGroups types to new file Common/ParticleGroup.h
Moved HasFlag template function to Daylon namespace in util_core.h.
Added IGameObject::MakeBullet method to abstract which bullet class a game object shoots.
Label of humans readout flashes when abductions are happening.
"Abduction in progress" messages removed except for last human.
Shield readout bar made thinner to match other readouts.
Renamed DURATION_IMPORTANT_MESSAGE to MESSAGE_DURATION_IMPORTANT
and made it a preference. Added MESSAGE_DURATION preference
for normal messages.
Pressing 'O' (not zero) will toggle double guns mode.
When active, pressing Space will fire two laser bolts
instead of one.
Game match stats track single vs. double shots.
Details page for pod includes notes on pod intersection.
#include fix for non-Unity build.
Game object IDs are generated by IMission instead of using static vars.
IMission ctor resets next ID to zero.
Synced to plugin to fix build issues.
Rebased Defcon mediator class to use Daylon::TFastMessageMediator
to get a little performance boost (although negligible at this point
since we don't have many message IDs).
Smartbomb readout uses graphic bar (arcade match) instead of digit.
Human status readout consumes HumanCount messages directly
instead of parent status widget doing it on its behalf.
Bug fix for hidden enemies problem in Yllabian dogfights.
Bug fix for terrain occluding player ship and humans.
Added CFPoint::IsValid to help catch NaN errors.
Pod intersection destroyed by smartbomb destroys
all involved swarmers and doubles explosion debris.
If the intersection didn't exist, then the
pods explode normally and release swarmers.
Added smart bomb radius factor preference to let
the reach of the smart bomb shockwave be customizable.
Assign horizontal direction for pods to alternate
between left/right instead of being chosen randomly,
to avoid cases where a pod intersection forms by
all the pods moving towards it from the same
direction.
Code cleanup (enemy game object instantation).
Holding down Shift key while pressing Tab key will reverse
selection direction in the mission picker screen. It will
also navigate to the previous page in the Details screen.
Pod intersection timer message displayed.
"Smart bomb awarded" message appears when a smart bomb is gained.
"All mission targets destroyed" message now a permanent message
instead of a normal message, so it remains displayed
until the player exits the mission.
User messages now shown using GMessageMediator instead of
directly invoking widget methods.
More code cleanup, "enemy" --> "gameobject", AdjustAbductionStates
now HumanStates, etc.
Adjusted human animation to closer match stride to walking speed.
Adjusted radar panel background, organized material assets better.
Added dark green interlace background to radar panel.
Customized collision force for spacehum, swarmer, munchie,
guppy, hunter, and reformer part.
Changed radar's visible arena section lines to use
arcade style thick rectangle sections.
Added boolean RaderIsPlayerCentric pref which, if false,
arcade matches the radar centricity where the edges of
the visible arena stay fixed in position instead of
the player ship. Technically, a radar would always
have the ship centered, and setting the pref to true
will allow that.
Changed color of play area section dividers from gray to dark red.
Also thickened the stats-radar divider a bit to look closer
in linewidth to the horizontal divider.
Added UTextBlock "TopMessage" to main arena widget,
which now shows the "game paused" message instead of
using the message log. It will also show the planned
"pod intersection" message.
Added help page for humans.
Changed human texture to animated, more detailed version.
Player ship appears redder as its shields weaken.
If all humans are killed and the player ship dies,
the mission ends but the game transitions to the
game over screen, instead of restarting the mission
(which is pointless to play since it's just enemies
without any humans to defend. Even if the next
mission is a dogfight, the mission after that
will be empty of humans).
Shield strength updates use CMessageMediator class,
and shield readout changes color from blue to red
as shields weaken.
Smartbomb count moved from game match to player ship.
Smartbomb count updates use CMessageMediator class.
Human count updates use new CMessageMediator template class
to improve loose coupling.
Finished the new "Humans" readout on the stats panel,
which shows safe humans as green squares, abducted humans
as red squares. The number of squares decreases as
humans are killed.
Arena bog down slowest time factor increased from 0.5 to 0.67;
things got a little too slow when using smart bombs to clear dense areas.
Current mission and god mode moved from game instance to game match.
Player ship, humans, smartbomb count, and score (XP)
moved from CDefconGameInstance to new Defcon::CGameMatch class.
Those items only exist during a match and weren't supposed
to be part of CDefconGameInstance which represents
the entire game application.
Arena bog down preference supported more smoothly and
only by checking debris count. Easy way to test is
to detonate a smartbomb amid a dense group of enemies.
Attempting to detonate a smart bomb when none are
available produces a message and plays the invalid selection sound.
Pressing Tab in the game over screen skips ahead to
introducing the stats, to finish introducing them,
and then to return to the main menu.
Added flashing alert widget to status panel which
appears when a human is being abducted.
Added sprite atlas for reformer enemy on Details screen.
Added player ship to Details screen.
Bullet time feature added (press B). This will probably
be only for debugging and unavailable in Shipping builds.
Pause feature added (press P).
Added sprite atlas for ghost enemy on Details screen.
Stars are occluded by terrain. (arcade mismatch) The arcade game
simply didn't draw stars below the max terrain elevation,
presumably to save CPU cycles by not viz-testing every frame.
Background starfield doesn't require two circumnavigations
to sync the field to the terrain, only one as expected.
Added a Details arena (view) that shows information on
each enemy type. Available by pressing Tab or Enter
after choosing Help from the main menu. Press Tab or Enter
to show the next page, or if you don't want to wait
for the text to finish crawling. Some enemies don't
have pictures (for now) because their appearance is composited
from other textures, and no main texture is available.
Muchies come in different colors instead of always being green (arcade match).
Munchies don't materialize; instead are spawned by Phreds (arcade match).
Rescued humans (returned to ground) emit little hearts to
show their gratitude. The arcade game emitted score tips,
but we don't show score or score tips.
Renamed UDefconPlayViewBase::SettlePlayer to KeepPlayerInView.
The background stars pan at half the speed of the
foreground objects e.g. terrain. The Yllabian dogfight
missions lack terrain so flying can seem slow, but
it's what the original arcade game does.
Entering the stargate before mission end and without any
human abductions in progress moves player ship to the
other side of the planet (apparently this is what the
original arcade game did -- the only way to teleport
randomly was to use the Hyperspace button).
Laser beams use texture atlas that give disintegrating tail
effect similar to arcade game.
Started work on invincibility powerup.
Removed all .cpp code related to unused IGameObject::GetClassname method.
Renamed PlayViewBase::FindHuman to FindNearestHuman.
Dropped explicit Const versions of some methods.
Renamed IGameObject::Move to Tick.
Play arena places the humans, and with a new "humans placed" flag
in game instance, randomizes their x-positions on the first mission
of a new game session.
Converted min/max pref vars to range vars, using the new
Daylon::FRange type and its supporting global functions.
All arguments to IGameObject::Move should now be 'DeltaTime'.
Added secondary explosion texture atlas,
makes enemy destruction more entertaining.
All military missions now use AddEnemySpawnInfo instead of
having big, mostly duplicate code in MakeTargets.
Pressing Esc in the play arena transitions to mission picker
instead of to main menu.
Renamed all references to tasks to use "task" nomenclature,
including the name of the "event" code modules. "Event"
is to mean notifications e.g. input events.
Mission class has a separate task list for enemy creation tasks,
to make it easier for Mission::IsComplete to tell when
no targets are pending creation.
Sprite uninstallation checks if widget is still valid, to prevent
errors logged by Daylon::Uninstall. This happens when
transitioning away from the play arena.
Started moving away from the "hostiles remaining" concept
in CMilitaryMission, in favor of the more reliable
checking of the current wave index and actually counting
the current enemies list to see if any mission-critical
targets remain.
Renamed HostilesRemaining to TargetsRemaining.
All mission classes have to define the MaxWaves member.
Renamed CEvent to CScheduledTask and CEventQueue to
CScheduledTaskList.
Moved gamename.dat resource file to inline C++ code to avoid
problem with packaged builds not including that "asset".
Several old preference items removed.
Lander descent/ascent rate ranged and grow faster with XP.
Lander appearance vertical range increased to upper half of arena.
Smart bomb resupply XP increased to 20,000.
Player ship input handling directly updates its
navigation control state instead of using an
intermediate state array; UpdatePlayerShipInputs removed.
ILiveGameObject's motion physics changed to use
explicit duration instead of computed from current game time.
GameTime() function commented out since we shouldn't use it.
ExplodeObject renamed to DestroyObject; explosion
is a boolean parameter.
Game object processor marks objects as dead and calls
their OnAboutToDie method instead of each object class
doing it in their Explode() method.
Most Explode() method code now uses AddExplosionDebris().
Intro screen moved company name to center, then fades it out
as title collapses around it.
Player ship's max thrust preference increased to make
speed closer to the arcade version.
Global replace of 'int' with 'int32'.
Code cleanup of mapper classes.