WORDWARVI(6)
๐พ WORDWARVI โ the wordwarvi manual, section 6 (Games) ๐พ
okay bestie, sit DOWN. this is wordwarvi, and yes it's a real thing and yes it's iconic. it's an old school '80s style side scrolling space shoot'em up game. that's the whole vibe. let's go ๐
โจ NAME โจ
wordwarvi โ old school '80's style side scrolling space shoot'em up game. no cap, that's literally the whole job description ๐
๐ SYNOPSIS ๐
wordwarvi [ --bw ] [ --blueprint ] [ --brightsparks ] [ --difficulty
easy|medium|hard|insane|batshit-insane ] [ --explosionfactor n ] [
--fullscreen ] [ --joystick device ] [ --nomusic ] [ --nomissilealarm ] [
--norumble ] [ --nostarfield ] [ --nstars n ] [ --randomize ] [
--randomseed n ] [ --squareexplosions ] [ --rumbledevice device ] [
--sounddevice n ] [ --thicklines ] [ --width w ] [ --height h ] [
--framerate f ] [ --retrogreen ] [ --version ] [ --xmas ]
๐ฆ DESCRIPTION ๐ฆ
wordwarvi, or "Word War vi", is an old school '80's style side scrolling space shoot'em up video game. periodt.
so here's the deal: you pilot your "vi-per" craft through core memory, trying to avoid OS defenses and wipe out the memory hogging emacs processes, AND rescue lost vi-per pilots (.swp files) stranded from crashed vi sessions โ all before heading through the socket to the next node in the cluster to do it all over again. it's giving endless. it's giving cycle. it's giving main character energy for a text editor ๐
๐ธ Options: ๐ธ
--bwโ Render the game in black and white, as if on graph paper. retro but make it homework ๐--blueprintโ Render the game to look like a blueprint. architectural, lowkey stunning ๐๏ธ--brightsparksโ Enables a visual effect for sparks to be rendered bigger and brighter than usual, at the cost of some performance. It is a matter of personal preference whether it looks better or worse. so like, โจaestheticโจ vs fps, you decide bestie--difficulty easy|medium|hard|insane|batshit-insaneโ Sets the difficulty level to one ofeasy,medium,hard,insane, orbatshit-insane. yes the last one is real and yes it's exactly what it sounds like ๐--explosionfactor nโ Produce explosions with the number of sparks multiplied byn. Default is1, integers up to5are permitted. Performance may suffer with large values ofn. This option only has an effect when thesquareexplosionsoption is not in effect. bigger boom = bigger lag, choose your fighter ๐ฅ--framerate fโ Sets the target frame rate tofframes per second. The default is30frames per second. If your computer is too slow to achieve the specified (or default) frame rate at the specified (or default) resolution, decreasing the frame rate may make the game respond better. Likewise, at lower resolutions, higher framerates may be possible, or lower resolutions may make the game perform better at a given frame rate. It should be noted that The game is designed (and tested) to be played at30frames per second. so like,30is the canon framerate, don't fight it too hard ๐ซถ--fullscreenโ Expand the window to fill the screen. This option overrides the--widthand--heightoptions, if either of those are also specified, and scales the graphics to the size of the screen. You can also use theF11key to toggle between fullscreen and windowed mode after the program is started. If the--fullscreenoption is used, then theF11key has no effect. so if you want the F11 toggle, don't pass this flag, bestie. pick a lane ๐--height hโ Sets the window size tohpixels high, scaling all graphics as necessary. The default is600pixels.--joystick joystick-deviceโ Use the specified device nodejoystick-deviceto access the joystick. The default device if this option is not used is/dev/input/js0. If you have more than one joystick, or if your OS presents joysticks at device nodes other than/dev/input/js0, that's what this option is for. ๐น๏ธ--nomusicโ Don't play music, or even decode the music files into memory. Cuts down considerably on memory usage. silence is golden, and also extremely RAM-efficient ๐ง--nomissilealarmโ Don't sound an alarm when a missile locks on to your ship. Some people find the sound of the alarm incredibly annoying. (Alarms are supposed to be annoying.) The audio alarm can also be toggled on and off with the1key. no notes, the parenthetical is doing the heavy lifting ๐ญ--norumbleโ Don't use joystick rumble effects. your hands get a break ๐ซ--nostarfieldโ Don't draw a starfield in the background. empty space, but literally ๐--nstars nโ Controls how many stars are rendered. Valid values fornmust be greater than or equal to zero, and less than or equal to600. so0through600, that's the range, don't test it โญ--randomizeโ Uses the microseconds value of the clock as the random seed for generating terrain, enemy placement etc. If you get tired of the regular levels, and knowing where everything is, this will get you levels that you haven't seen before. surprise me challenge, slay ๐--randomseed nโ Uses the specified value,n, as the random seed for generating terrain, enemy placement etc. This allows access to new levels which you may play again by specifying the same random seed value. The default random seed value the game uses if none is specified is31415927. ooh a pi joke, the devs ate ๐ฅง--squareexplosionsโ Makes explosions square rather than round. By default spark velocities are chosen by simply assigning independent uniformly distributed random angle and velocity (polar coordinates). This results in an explosion which is round in shape. If there aren't too many sparks, you don't really notice. With larger numbers of sparks, this round shape can become apparent. Thesquareexplosionsoptions causes a uniformly distributed random x and y and velocity to be chosen for each spark. This saves the computation of converting polar coordinates to cartesian. The default used to be square explosions, with round explosions available only through the old--roundexplosionsoption. Now round explosions are the default, and the--roundexplosionsoption was inverted and renamed--squareexplosions. okay so this is the lore drop of the page ๐--rumbledevice dโ Use the specified device for rumble effects (XBox 360 wired controller only, and linux 2.6.26 or better required.) The default is/dev/input/event5. Your controller may show up elsewhere, like/dev/input/event6, for example. Also, you will have to (as root)chownthis device node to the user you're running the game as, and do this again after each boot, and each time you hotplug the controller. There is probably a way to getudevto do this for you automatically every time, but I don't know what it is offhand, and it may differ from distro to distro. bestie this one is a journey, the author is being so honest with us ๐ญ--retrogreenโ Does exactly what it sounds like. no further questions, your honor ๐ข--sounddevice nโ Use alternate sound devicen, wherenis an integer. By default, wordwarvi uses the"default"sound device as estimated by the PortAudio library, which is0. You can specify other numbers if you have other sound cards, or a multichannel sound card.--starmotion xโ Controls how the starfield moves. Possible values ofxare'astronomically-correct','wrong','wronger', and'wrongest'. not the accuracy spectrum beingastronomically-correctโwrongest๐๐--thicklinesโ Render everything with extra thick lines. chunky. bold. unbothered. ๐๏ธ--versionโ Print the program's version number and exit.--width wโ Sets the window size towpixels wide, scaling all graphics as necessary. The default is800pixels.--xmasโ Runs the program in xmas mode, if it is not near Christmas. If it is near Christmas, runs the program in non-xmas mode. it's a hater like that ๐๐
๐ Controls: ๐
Arrow keys control movement (or vi's hjkl keys will work too, of course.) of course. it's a vi game. obviously. ๐
Q puts in a quarter, and starts the game. coin-op moment ๐ช
Z fires a laser
C drops chaff (to confuse heat seeking missiles).
B drops bombs.
G drops a gravity bomb, of which you start with 3.
Additionally, a game pad or joystick may be used. I have only tried two controllers, the Microsoft XBox 360 wired controller, and a Logitech Dual Action Rumble USB gamepad. On these, the first (left) joystick controls your ship. For other controls, just press all the buttons to see what they do, as it's not the same from one controller to the next. The rumble effect only works with the XBox 360 wired controller, and then only if you have linux kernel 2.6.26 or better. See also the "--rumbledevice" option. so like, button-mash discovery mode, we've all been there ๐น๏ธโจ
m toggles music on/off.
s toggles sound effects on/off.
1 toggles the audio missile lock-on alarm on/off.
๐ ENEMIES AND OTHER THINGS YOU MAY ENCOUNTER ๐
- Rockets. Avoid hitting them.
- Jets, which fire heat seeking missiles. Avoid the missiles.
- Heat seeking SAMs. Avoid.
- Octo-viruses and tentacles. Shoot lightning. Avoid.
- Blimps (representing emacs). Will shoot heat seeking missiles. Will leak LISP code.
- GDB processes. Will attempt to
ptraceyou with heat seeking probes. Avoid and/or kill. - Cron Jobs. Will shoot projectiles at you. Will attempt to collect the vi
.swpfiles and carry them to caldera of the volcano, Mount/dev/null. ๐ - Fuel tanks. Refuel by hovering over the fuel tanks momentarily.
- Laser cannons. They will shoot laser bolts at you (obviously).
- WINE bottles. Bill Gates's finest warship is outfitted with a giant WINE bottle to enable it to travel through the linux CORE. Beware of viruses which may be living inside. ๐ท
okay that's part 1 bestie, don't go anywhere, there's more coming ๐
๐ FILES ๐
okay bestie, here's where all the game's little treasures live on your disk ๐พโจ
/dev/input/js0โ the joystick device node, aka where your controller's lil vibes come through ๐น๏ธ/dev/input/event5โ the rumble effect device. yes, the rumble. the shake. the drama. ๐ฅ/usr/share/wordwarvi/sounds/*.oggโ all the audio data the game uses, chillin' in here ๐ต~/.wordwarvi/.highscoresโ contains high score data. your legacy, fr fr ๐~/.wordwarvi/.exrcโ this one can customize the default settings for the game ๐
๐ ๏ธ the .exrc file, explained
so the .exrc file is the customization zone. each line of the file controls exactly one aspect of the game. here are all the commands it understands, no cap:
set bwโ render in black and white ๐ค๐คset blueprintโ render in the style of a blueprint ๐set brightsparksโ render sparks brighter than usual โจ (yes, extra)set difficulty=xโ sets the difficulty level. valid values areeasy,medium,hard,insane, andbatshit-insane๐set explosionfactor=nโ produce explosions with the number of sparks multiplied by n. default is1, and integers up to5are permitted. performance may suffer with large values of n. this option only has an effect when thesquareexplosionsoption is not in effect ๐ฅset framerate=nโ attempt to render the game at n frames per second ๐๏ธset fullscreenโ render the game in full screen mode ๐ฅ๏ธset height yโ render the game y pixels high ๐set joystick=devโ use joystick input device dev ๐น๏ธset levelwarp=nโ warp ahead n levels (if compiled in) ๐set nomusicโ do not play, or even decode music data ๐set nomissilealarmโ do not sound alarm for missile lock on ๐ซ๐จset nostarfieldโ do not render the background starfield ๐โset norumbleโ do not use joystick rumble effects ๐ดset nstars=nโ controls how many stars are rendered. valid values for n must be greater than or equal to zero, and less than or equal to600โญset retrogreenโ render in the manner of a vector display from the '70's ๐ (the aesthetic, immaculate)set randomizeโ use a clock generated random seed to initialize levels ๐ฒset randomseed=nโ use the specified random seed to initialize levels ๐ฒset rumbledeviced=dโ use the specified device for rumble effects (XBox 360 wired controller only, and linux 2.6.26 or better required.) the default is/dev/input/event5. your controller may show up elsewhere, like/dev/input/event6, for example. also, you will have to (as root)chownthis device node to the user you're running the game as, and do this again after each boot, and each time you hotplug the controller. there is probably a way to getudevto do this for you automatically every time, but I don't know what it is offhand, and it may differ from distro to distro ๐ญ (yeah. it's giving "manual labour".)set squareexplosionsโ makes explosions rectangular rather than round. see the description of the--squareexplosionsoption for some explanation of why this even exists ๐ฒset sounddevice=nโ use the *n*th sound device for audio output ๐set starmotion=xโ controls how the starfield moves. possible values are'astronomically-correct','wrong','wronger', and'wrongest'๐ (astronomically-correct is for cowards, honestly)set thicklinesโ render everything with extra thick lines โ (chonky. slay.)set width=xโ render the game x pixels wide ๐
๐ฎ map key action
valid actions are:
soundeffect down up left right
missilealarm bomb chaff quarter pause
2x 3x 4x 5x 6x
7x 8x suicide thrust music
fullscreen quit laser none reverse
gift
valid keys are: a-z, A-Z, 0-9, and most printable characters. keypad numerals 0-9 may be specified as kp_0 through kp_9, and function keys f1 through f12 can be specified f1 through f12 (obviously ๐). in addition the following strings may be used to specify the corresponding keys:
space enter return backspace delete
pause scrolllock escape sysreq left
right up down kp_home kp_down
kp_up kp_left kp_right kp_end kp_delete
kp_insert home down end delete
insert
๐ฎ map button n action
maps joystick button n (where 0 <= n <= 9) to the specified action. actions are the same as describe above, with the exception of left, right, up and down, which are not yet implemented due to laziness on my part ๐
๐
in any case, if your joystick has a button pad you want to use to control the motion of the ship (left/right/up/down), most likely it also has some sort of switch to make this pad active instead of one of the sets of x/y joystick axes. (e.g. my Logitech Dual Action Rumble is like that.) if that's the case, then you don't need this feature anyway, as the joystick will map those button presses onto the appropriate axes for you ๐
๐น๏ธ set joystick-[xy]-axis=n
allows specifying different axes for control of the players ship for multi axis joysticks. by default, the first x and first y axes are used (n = 0 for x, n=1 for y). a value of -1 disables control of an axis. see example .exrc file below to find out why you might want to do that ๐
there are pictures at http://smcameron.github.com/wordwarvi which show how the axis numbers and button numbers map to the physical controls for the Microsoft XBox 360 controller and the Logitech Dual Action Rumble controller ๐ธ
๐ Example .exrc file:
set fullscreen
set retrogreen
map z chaff
map x bomb
map c laser
#
# to set up "Defender" style joystick
# controls, vertical motion controlled
# by joystick axis, horizontal motion
# controlled only by "reverse", and
# "thrust" buttons, with x axis joystick
# control disabled.
#
set joystick-x-axis=-1
set joystick-y-axis=0
map button 0 thrust
map button 1 reverse
๐ GOOD LUCK ๐
you'll need it. ๐๐
๐ AUTHOR ๐
written by Stephen M. Cameron ๐ซถ
that's the whole page bestie, we made it ๐ this lil manual is wordwarvi from Jul 2008, and it's section WORDWARVI(6) โ go forth and blow stuff up responsibly, mwah ๐
๐ฆ where this page comes from
- debian bookworm: wordwarvi 1.0.4-2+b1 ยท GPL-2.0-or-later
- debian trixie: wordwarvi 1.0.4-2+b3 ยท GPL-2.0-or-later
- fedora 43: wordwarvi 1.1-23.git6beed31.fc43 ยท GPL-2.0-or-later AND LicenseRef-Callaway-CC-BY AND LicenseRef-Callaway-CC-BY-SA
- fedora 44: wordwarvi 1.1-24.git6beed31.fc44 ยท GPL-2.0-or-later AND LicenseRef-Callaway-CC-BY AND LicenseRef-Callaway-CC-BY-SA
- fedora 44: wordwarvi 1:1.0.4-1.fc44 ยท GPL-2.0-or-later AND LicenseRef-Callaway-CC-BY AND LicenseRef-Callaway-CC-BY-SA
- ubuntu jammy: wordwarvi 1.0.4-2 ยท GPL-2.0-or-later
- ubuntu noble: wordwarvi 1.0.4-2build3 ยท GPL-2.0-or-later
- ubuntu questing: wordwarvi 1.0.4-2build3
- ubuntu resolute: wordwarvi 1.0.4-3 ยท GPL-2.0-or-later
- ubuntu stonking: wordwarvi 1.0.4-3 ยท GPL-2.0-or-later
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms