XONIX(6x)

πŸ’– XONIX πŸ’–

okay so bestie, gather round, because we're talking about xonix β€” an actual game, in your terminal, from the 6x manual section. no cap. it's giving retro arcade but make it X11. πŸŽ€


✨ SYNOPSIS ✨

xonix [ -toolkitoption ... ]

that's it. that's the whole vibe. you just run it and you're in. πŸ’…


🌸 DESCRIPTION 🌸

so the xonix application is made of two main characters: the playing area, and a status display sitting right below it. main character energy from both of them, honestly.

the status display is your little dashboard, and it shows the current values for:

  • level πŸ‘‘
  • filled area, as a percent
  • number of players (aka your lifes)
  • elapsed time

now. the playing area has several regions and you need to know all of them, so let's go:

  • the brown region β€” at first it's literally just the border β€” is the ``filled region''. this is where the player can move, and the player starts out in the top left corner.
  • ⚠️ beware of the bouncing yellow eater(s). they also move across filled regions, and if they hit the player, a life will go away. no thoughts, just grief.
  • the flyers can only bounce across the green (the so-called empty) area in the middle. they stay in their lane, iykyk.

so the purpose of the game β€” the whole point, the assignment, the mission β€” is to move the player across the empty region. while you do that, the player leaves his way behind him in a brown color so you can see exactly where he came along. then you finally cut off a piece of unfilled region by moving him back to some filled region. that's the slay. πŸ¦‹

if the player itself, or the (not-yet-filled) way, gets hit by a flyer, a life will be lost again. 😭 protect both, bestie.

once the player's way reaches another part of filled region, the way and all adjacent unfilled regions that don't have a flyer in them will be filled in turn. and one level is completed as soon as 75 % of the originally unfilled area has been filled this way. periodt.

here's the difficulty ramp, and it is NOT playing:

  • every level, there will be one flyer more. πŸ’€
  • every second level, an additional player will be granted. 🫢
  • every fifth level, an additional eater will be fired off. πŸ”₯

the default keys to move the player around are the arrow keys. this can be changed in the app-defaults file, however β€” as well as the timeout between single steps, which defaults to 50 ms, equal to 20 moves per second.

the default keys to immediately quit the game are Q and Escape. hitting P, or iconizing the window with the window manager, will pause the game; de-iconizing will continue it.

there's also a high-score file, /var/cache/xonix/xonix.scores. it records the top ten xonix players for that machine. and as a special compile-time option, a mail is sent to the previous xonix score leader when he's lost his first rank. rip to him specifically. πŸ’Œ


πŸŽ€ WIDGETS πŸŽ€

Xonix uses the X Toolkit and the Athena Widget Set. below is the widget structure of the xonix application β€” indentation indicates the hierarchical structure, the widget class name is given first, followed by the widget instance name. study it, it's iconic:

     Xonix  xonix
          VendorShellExt  shellext
          Form  container
               MenuButton  game_button
               Canvas  canvas
               Form  status
                    Form  level
                         Label  lev_label
                         Label  lev_d10
                         Label  lev_d1
                    Form  percentage
                         Label  perc_label
                         Label  perc_d10
                         Label  perc_d1
                    Form  runner
                         Label  run_label
                         Label  run_d10
                         Label  run_d1
                    Form  time
                         Label  time_label
                         Label  mins_d10
                         Label  mins_d1
                         Label  time_colon
                         Label  secs_d10
                         Label  secs_d1
               SimpleMenu  game_menu
                    SmeBSB  about
                    SmeLine  game_l1
                    SmeBSB  quit
          TransientShell  about_shell
               VendorShellExt  shellext
               Box  about_box
                    Label  about_msg
                    Command  about_done
          TransientShell  gameover_shell
               VendorShellExt  shellext
               Box  gameover_box
                    Label  gameover_msg
                    Box  gameover_buttonbox
                         Command  gameover_iknow
                         Command  gameover_goon

⭐ OPTIONS ⭐

  • all the standard toolkit options apply.
honestly though, it's not particularly useful to attempt forcing any geometry. don't fight it, bestie, just let it be. πŸ™ˆ

πŸ’œ AUTHORS πŸ’œ

the original xonix game has been seen somewhere on an old PC/XT clone. this one is a reimplementation from scratch, done by Torsten Schoenitz, who started the project on a Macintosh. the X11 support has been written by Joerg Wunsch, with the pleasant help by Alfredo Herrera Hernandez. legends only. πŸ‘‘


🌈 BUGS 🌈

  • source code comments are still mostly in German. πŸ‡©πŸ‡ͺ
  • some files require the unusual tab width of 4 in order to be displayed correctly.

it should be possible to pass some parameters from the command line as well (e.g. the time step value), which is currently only possible by the back-door via the -xrm toolkit option.

mail any suggestions to <joerg_wunsch@uriah.heep.sax.de>. πŸ“¬


and that's the whole page, bestie β€” this was XONIX(6x), literally the manual section 6x, fr fr. go fill that region. 75 % or nothing. πŸ¦‹βœ¨πŸ’–

πŸ“¦ where this page comes from