forked from chocolate-doom/chocolate-doom
-
Notifications
You must be signed in to change notification settings - Fork 5
/
TODO.psdoom-ng
173 lines (167 loc) · 8.93 KB
/
TODO.psdoom-ng
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
Here are a few ideas to improve this process manager:
N == not planned
? == possible, but not planned and/or is it necessary?
- == not started, but planned
O == in progress
X == done AFAIK
X-display last 7 characters of process name rather than first 7
ie: '/sbin/mingetty' would appear as 'ingetty' rather than '/sbin/m'
X-make text disappear when entire pid monster sprite is obstructed
X-make text 'float' with the monster (adjust y-value of print)
X-pid monsters don't count towards end-level 'kills' percent
X-pid monsters don't spawn in/on other things
N-toggle monster inter-fighting (ie. CacoDemon vs Imp on(default)/off )
N-toggle monster intra-fighting (ie. Human vs Human on(default)/off
Demon vs Demon on/off(default) )
X-OR as an alternative to the above 2, have pid monsters only take damage
from a player
O-command line flag to allow pid monsters to be damaged normally
(-nopssafety)
X-better process management:
N-non-blocking process manager so pauses aren't as noticable
NOTE: pauses would still be there with the non-blocking
process manager - tested by disabling pr_poll() call
and running a sh script on a seperate terminal that
called 'ps' every 5 seconds: pauses were still noticable
X-if a process is killed/removed outside xdoom, remove it from xdoom
X-update process names (ie. mingetty --> -bash after login )
?-compare pid monster name to incoming name and copy the name
as a result of that comparison
NOTE: right now, the name update happens to every pid monster
every time the ps list is updated. would adding a check
to see if the name needs to change speed things up? in other
words, how much faster is strncmp() than memcpy()?
X-if a process monster is killed in doom, but the actual process doesn't
die on the machine, resurrect the monster's body like the archvile
does; if we can't raise the monster, remove the body and respawn the
monster
X-gracefully handle save and restore
X-only re-nice a monster the first time it is damaged
?-OR with successive damages, get the process' priority, and re-nice
to 2(?) more than the current level until it reaches 20 (the maximum)
NOTE: must be careful about shotgun and other rapid-file or
multiple damage weapons because one could re-nice monsters
to +20 really fast
X-customized level map for managing processes
NOTE: *any* level that has 3 1024x1024 areas for monster spawning such
that the bottom left coordinates of the squares are at (0,0);
(2048,0); and (4096,0), respectively, will work
NOTE: current custom level details and decorations may need tweaking
X-if the custom level isn't (or can't) be loaded, use stock E1M1 in
doom 1 (or MAP01 in doom 2) for process management
X-custom level loads automatically, like xdoom.wad. the custom doom 1
map must be named psdoom1.wad and the custom doom 2 map named
psdoom2.wad for the automatic loading to happen
X-command line flag to disable automatic loading of custom level; manage
processes on stock E1M1 or MAP01
(-nopslev)
?-custom level for shareware doom (psdooms.wad); must get permission
from id software before doing this
X-game acts like normal xdoom if not playing on E1M1/MAP01 or if playing
any 'Plutonia Experiment' or 'TNT - Evilution' level
X-command line flag to entirely disable 'ps' portion of the program
(-nopsmon)
X-command line flag to disable actual re-nice and kill of processes
(-nopsact)
X-command line flag to make 'no monsters' persistant across new
games and warping
(-nomonsters.) == no monsters, period :-)
X-pid monster spawning not affected by '-nomonsters' or '-nomonsters.'
command line flags
X-command line flag to respawn items like in -altdeath games
(-respawnitems)
X-this flag should have no effect in demo recording or playback; it
would mess up the demo timing
X-command line flags for determining which user processes to spawn
X-command line flag to cause every username to be added to the list of
users whose processes to display
(-psallusers)
X-command line flag to cause specified usernames to be added to the
list of users whose processes to display -- without any supplied
username(s), assume current user
(-psuser [username1[ username2...]])
X-command line flag to cause specified usernames to be added to the
list of users whose processes not to display -- without any
supplied username(s), assume current user
(-psnotuser [username1[ username2...]])
X-if none of the userlist-related command line flags are given, the
program defaults to showing only the current user's processes if
not running the program as root -- root sees all processes by
default -- current username is determined by looking at the
environment variables PSDOOMUSER, LOGNAME, USER, and USERNAME in
that order
X-ensure that demo playing and recording do not use the 'ps' portion of
the program
X-the demo that plays immediately after ending a game (options->end game)
on a level with pid monsters is messed up; fix it
?-use c functions like setpriority() and kill() rather than the
system() call (would this speed things up significantly?)
--put command line options into an in-game menu
--ability to have multi-admin netgames
--ability to administer processes on a machine other than the one running
psdoom
--more general format for custom level areas for pid monster spawning
--'PSINFO' lump in wads tells engine where to spawn pid monsters and on
what level(s)
--current behavior is used if no PSINFO lumps are given
NOTE: format of this textual lump is sorta in my head: one lump
specifies all maps and coordinates -- ExMy or MAPxx lines
seperate coordinate grouping lines within the lump
{ExMy or MAPxx}, {R, A, or U} (one of these lines per level)
* to denote which map the info is for and the method by which
processes are placed in the spawnboxes of that level
* 'R' tells psdoom to spawn pid monsters in a
round-robin-esque manner among the given spawnboxes:
pid #'s are mod'ed by the total number of spawnboxes on
that level and the pid monster is spawned in the resulting
numbered box
ie. pid# 1432 is being spawned on a level with 5 boxes:
1432%5 = 2; pid monster will be spawned in the third
(0, 1, 2) box listed in the lump
* 'A' tells psdoom to use the relative area of the spawnboxes
to determine the chances of spawning a pid monster in each
* 'U' tells psdoom that there are user-specified percentages
for determining chances of pid monster spawning for the
spawnboxes
{x, y, dx, dy, nn} (one or more of these lines per level)
* a point of origin and the length of the sides for a box (in
doom map units) on that level for processes to spawn in
* the final argument is a field that is only used if the 'U'
flag is given above: it gives the percent chance of a pid
monster spawning in this spawnbox
* if the running total of user-specified percentages becomes
greater than 100%, the remaining spawnboxes will not have
monsters spawn in them
* if the nn is not there for a given area, the remaining
part up to 100% is assigned to that spawnbox
--make pid monsters less aggressive towards (afraid of?) player
--pid text is not placed well when screen is not at largest or second
largest size; fix it
--more info about processes
--monster type reflects cpu/mem usage
--more text information (space limited)
NOTE: perhaps could print more info as the monster gets closer
and takes up more of the view
--shutdown/reboot machine with psdoom*.wad level exit switch(s)
NOTE: need to make a custom texture to notify user of this interface
--type of weapon determines what signal to send with the kill command
on monster death (eg. pistol=kill -1, shotgun=kill -2, ...
plasma & BFG=kill -9 ???)
NOTE: rocket launcher probably not a good choice because of collateral
damage (maybe protect pid monsters?)
O-modify xdlaunch (ps-xdlaunch) to run ps-xdoom
O-add psdoom-specific command line flags to ps-xdlaunch
--incorporate the Back Orifice port of psdoom
--command line flag to use Back Orifice rather than local admining
(-psbo)
O-support multiple operating systems (the ones xdoom supports)
--freebsd
X-linux
--openserver 5
--unixware 2
--unixware 7
O-solaris
--aix
O-use ~/.psdoom rather than ~/.xdoom for savegames, config files, etc
O-add references to psdoom in startup header text, X resources, and window
title bar