174 lines
8.9 KiB
Plaintext
174 lines
8.9 KiB
Plaintext
![]() |
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
|