xpuyopuyo
xpuyopuyo(o)                                         xpuyopuyo(o)



NAME
       xpuyopuyo - A tetris-like puzzle game for X11.

       This manpage agrees with version 0.9.5 of xpuyopuyo.

SYNOPSIS
       xpuyopuyo

       xpuyopuyo [options]

       xpuyopuyo --help

DESCRIPTION
       Xpuyopuyo is a Tetris-like puzzle game where you strive to
       match up four ``blobs'' of the  same  color.   Each  match
       gives  you points, and also dumps gray rocks on your oppo-
       nent which are irritating and troublesome to get  rid  of.
       Multiple matches at one time score more points, and result
       in more rocks being dumped on the opponent (much to  their
       dismay).  First person to fill up their screen with puyop-
       uyo blobs loses.

       The game features an AI, and is capable of  single-player,
       human-human  play,  human-AI  gameplay,  or AI-AI gameplay
       (demo mode).  It will keep track of the  total  number  of
       matches  each  player  recieves,  and  the  number of sin-
       gle-matches, double-matches, triple-matches, etc. as well.

       We ported it overnight to Linux, so we could play whenever
       we felt like. The AI's evolved more slowly;  the  original
       implementation took a week to develop.  The current imple-
       mentation is evolved using genetic algorithms; more  docu-
       mentation  on  this  is  available in the distribution.  I
       always welcome new AI rules, or suggestions to improve the
       AI.

       This version is modelled on several other versions we have
       seen around; the original (which I have not had the oppor-
       tunity  to  play)  is  made  by  Compile,  http://www.com-
       pile.co.jp./.

       I release this so others may enjoy it. If this game causes
       someone  out  their  to  flame/flunk  out of college, then
       apologies but it's the game's fault, not  mine  :).  Addi-
       tional information, documentation is available in the dis-
       tribution.

GAMEPLAY
       The idea is to match up colored blobs together.   A  match
       is  any  chain  of 4 or more blobs of the same color, that
       are adjacent to each other (up,  down,  right,  or  left).
       The game gives you a playing piece with two colored blobs,
       which you can move around the playing field and rotate  as
       it  falls  to  the  ground.  In gameplay, it is similar to
       Tetris.

       You get points for  completing  a  match,  and  all  blobs
       involved  in  the  match  will  disappear.  Larger matches
       (matches of more than 4 blobs) and multiple matches at the
       same time score much more points.

       Also,  if  you  are in a 2-player game, then several rocks
       will be dumped on your opponent when you complete a match.
       Rocks  have no color; a chain of rocks does not complete a
       match.  However, any rock adjacent  to  a  match  will  be
       eliminated.  Again, larger matches and multiple matches at
       the same time will cause more rocks to be dumped onto  the
       opponent.

       (The  truly  unfortunate  may  discover the indestructible
       rock or other forms of evil rocks.  You are  truly  fortu-
       nate if you survive such an encounter.)

       The game ends when you fill up your playing field.  So try
       to keep the playing field as low  as  possible.   See  the
       options below for some of the features of the game you can
       enable.

COMMAND SWITCHES
       Many of xpuyopuyo's options may be configured by the  com-
       mand line.  A summary and description of available options
       is below.  Note, that some options might not be available,
       depending  on  how  you built xpuyopuyo.  To see a list of
       supported options, run xpuyopuyo --help.  Options are pro-
       cessed in the order they are read; later options can clob-
       ber earlier options, so it's good to make  the  difficulty
       option the first one.

       General options:

       -h, --help
              Display a summary of the options available.

       --insanity
              This is insanity, Max!  Or what if it's genius?

       -1, --oneplayer
              Select  one player game.  No rocks in this version.
              Either player's controls will work in this mode.

       -2, --twoplayer
              Select two player game, human versus human.  Player
              1's  controls  are  on the keyboard, and player 2's
              are in the numeric keypad (this may be  configured,
              however).

       -a, --aiplayer
              Select  two  player  game,  human  versus computer.
              Either player's controls will work  for  the  human
              player.

       -d, --demo
              Select  two  player game, computer versus computer.
              Fun to setup two different AI's against each  other
              and watch them go (the current longest running demo
              game I've seen was 57 hours long, and that was only
              ended  by  a bug in the timer code which caused one
              of the AI's to pause.  By the time I  noticed  what
              had  happened,  the other AI had racked up an unbe-
              lievable 6,000 rocks against  his  frozen  opponent
              ...).

       -e, --easy
              Easy gameplay. Enables options for easier gameplay.
              This option is currently equivalent  to  --noaidrop
              -number=4 --nullify --noindestructibles.

       -m, --medium
              Medium  gameplay.  Enables  more  difficult  round.
              Currently, this is  equivalent  to  the  following:
              --aidrop -number=5 --nullify --indestructibles.

       -H, --hard
              Hard  gameplay. Enables the most difficult of game-
              play.  Currently, this is equivalent to the follow-
              ing:  --aidrop  -number=6  --nonullify --indestruc-
              tibles.  Later options can override the options set
              by -e, -m, or -H.

       -n, --number=n
              Specify  the  number  of colors to use.  This value
              can range from 4 to 6.  The default is set  by  the
              difficulty level.

       -t, --restart
              This  is  a  toggle  option.  Automatically restart
              after a ``Game Over''.  Useful when  combined  with
              the  -d  flag.   The inversion of this flag is -/t,
              --norestart.

       -T, --tutorial
              This is a toggle option.  Enable tutorial mode.  In
              tutorial  mode, an AI will assist you by choosing a
              move it thinks is appropriate.  You may still  con-
              trol  the  piece  with  the  player  controls.  The
              inversion of this flag is -/T, --notutorial.

       --theme name
              Select a theme to use on startup.  The  default  is
              ``default''.

       --tooltips
              This  is  a  toggle option.  When set, tooltips are
              displayed.  The default is for this flag to be set.
              To turn off tooltips, use --notooltips.

       --quiet
              This  is  a  toggle option.  When set, no output is
              printed to stdout.  The default is for this flag to
              be cleared.  To turn off quiet use --noquiet.

       Sound Options:

       -S, --sound
              This  is  a  toggle  option  that enables music and
              sound effects.  The inversion of this flag is  -/S,
              --nosound.

       --hqmixer
              This  is  a  toggle  option that enables use of the
              high quality mixer provided by  mikmod.   Depending
              on   your  soundcard,  this  may  have  no  effect.
              Defaults to off, to turn off  high  quality  mixing
              use --nohqmixer.

       --effects
              This is a toggle option that enables sound effects.
              Defaults to on when sound is  supported.   To  turn
              off sound effects use --noeffects.

       Advanced Options:

       --width=n
              Specify  the  width  of  the  playing  field.   The
              default is 6.

       --height=n
              Specify the  height  of  the  playing  field.   The
              default is 14.

       --match=n
              Specify the number of blobs in a chain required for
              a match.  The default is  4.   For  more  difficult
              gameplay, increase this value.

       -U, --nullify
              This  is  a toggle option.  When on, your rocks can
              nullify the opponents rocks.  During the game, when
              you  complete  a  match rocks are sent to the oppo-
              nent, but they do  not  fall  until  their  playing
              piece  lands.   In the meantime, if they accumulate
              any rocks against you, the  rocks  may  instead  be
              used to nullify the rocks accumulated against them.
              If this option is off, then all rocks that are sent
              will  fall  on  the  opponent  -- eventually.  This
              option is on in easier gameplay; the  inversion  of
              this flag is -/U, --nonullify.

       -I, --indestructibles
              This is a toggle option.  When on, "indestructible"
              blocks are allowed in the game.  If a player  accu-
              mulates  a large number of matches at once (a quin-
              tuple-match is usually enough), then in addition to
              several rows of rocks being dumped on the opponent,
              an indestructible block will also fall on the oppo-
              nent.   This rock cannot be destroyed, and the best
              the opponent can do is try to get it  down  to  the
              bottom  of  the  screen where it is at least out of
              the way.  This mode of gameplay can make life  very
              interesting,  indeed.   This  is  only  enabled  by
              default on hard difficulty; the inverwsion of  this
              flag is -/I, --noindestructibles.

       Player Options:

       -s, --speed=n
              Set the speed for falling blocks for the player, in
              milliseconds per drop.  The default  is  determined
              by difficulty level.  A typical value is 350.

       -A, --accel=n
              Set  the  acceleration  of  the speed over time, in
              percentage of time lost per  minute.   This  speeds
              the  game  up  over  time.  An acceleration is only
              enabled  on  the  harder  difficulty  levels.   The
              acceleration  is  a  floating-point value between 0
              and 1.

       AI Options:

       -r, --airule2=n
              Select the AI rule  for  the  right  player.   This
              option  is  better set in the user interface, under
              the AI menu.  n must be an integer value.  If n  is
              random then a random AI is chosen.

       -R, --airule1=n
              Select  the  AI  rule  for  the  left player.  This
              option is better set in the user  interface,  under
              the  AI menu.  n must be an integer value.  If n is
              random then a random AI is chosen.

       -c, --aiscore
              This is a toggle option.  This is a  debug  option,
              and  is  better  left  turned off.  If set, the "AI
              score" is displayed instead of the  next  piece  in
              the main game.  The AI score is the ranking for the
              current move; higher scores mean the  AI  judged  a
              particular  move  to  be "better".  Note that since
              each AI has its own ideas  on  what  makes  a  good
              move, this score is highly dependent on the mindset
              of the selected AI.  There's not even  any  attempt
              to  normalise  the  AI  score  with scores from its
              peers.  So this number cannot be meaningfully  com-
              pared with scores for other AI's.  The inversion of
              this option is -/c, --noaiscore.

       -i, --aidrop
              This is a toggle option.  If set, the AI is allowed
              to  drop  pieces  when  the  human opponent drops a
              piece.  This allows the AI to keep  up  with  human
              players,  and  makes  for  a more challenging game.
              This option is on by default on  higher  difficulty
              levels; the inversion of this is -/i, --noaidrop.

       Network Options:

       --server
              This  starts  a  new  server.   The  server has the
              advantage of being able to set  the  game  options.
              It  will  wait for a connection from a client, then
              the game may begin.  The server will listen on  the
              default port unless --port is also given.

       --client=server
              This connects to the server specified.  The connec-
              tion will be made to the default port on the server
              given, unless the --port option is also given.

       --port=n
              This  specifies an alternate port than the default,
              for network games.

       --networkai
              Enables AI in a network game.  This is intended for
              debugging  only.   This  is  a  toggle  option; its
              inverse is --nonetworkai.

       Tournament Options:

       The tournament options are for AI breeding mode only,  and
       are  not well documented.  They are: -z, --tournament, -Z,
       --hypertournament, and -Y

       In the GTK version, there will be exactly  one  indestruc-
       tible block in the About box.  Curious, don't you think?

PLAYER CONTROLS
       The  player  controls  are configurable in the game.  They
       may be viewed and/or redefined in the Options  menu.   You
       can  define  up  to three keys per action per player.  The
       actions are left, right, rotate, and drop.

       Note, that when you assign keys, key combinations are  not
       allowed,  and  you  should  probably  avoid  attempting to
       assign a modifier key.  The keys Enter, P, and Escape will
       restart  the  current game, pause a game, and end the cur-
       rent game (respectively) unless you assign these keys to a
       player  control.   If you assign these keys as player con-
       trols, you can still use Ctrl-R,  Ctrl-Z,  and  Ctrl-P  to
       perform the same actions.

       When in single-player or human-AI mode, you may use either
       player's controls to control your game field.

NETWORK GAMEPLAY
       Network gameplay is much like  normal  2-player  gameplay,
       except  you  must first setup a network connection between
       two games.  One xpuyopuyo game will act as a  server,  and
       the  other  will  act  as  a client.  First, on the server
       side, select the Network menu, Server and  click  Ok  (you
       may  change  the port to listen to, if you like).  Then on
       the client side, select the  Network,  Client  Connection.
       Enter  the  machine name of the server and the port number
       to use (if you changed it in the server) and click Ok.

       To begin a network game, both players must select New Game
       in  the  Game menu.  The game will wait until both players
       are ready before starting the game.

AI GAMEPLAY
       AI's are created using Genetic Algorithms.   The  flexible
       formulas allow the AI to take advantage of certain scenar-
       ios, and allow the AI to  weight  them  accordingly.   The
       rules  are changing constantly as the AI evolves, and sug-
       gestions on new rules  are  welcome.  A  general  list  of
       strategies  follows  (not sorted in any particular order).
       The AI checks every possible move with the  current  piece
       and  uses  the  rules it evolved to determine which is the
       best move.

       Distance from top of playing field
              We don't want the AI to stack up all its pieces  at
              the top of the screen.

       Hard limit to the height of structures
              As  much  as  we don't like height, we really don't
              want the AI building things within the top four  or
              so  rows  of the field.  This rule carries a lot of
              weight in all AI personalities.

       Opportunity to complete a match

       Bonus to complete several matches at once
              The AI decides this by simulating what would happen
              if it put the game piece in various locations.

       Penalty for blocking a potential match
              For  example,  covering  a hole with three blobs of
              the same color already present).  Some AI's  choose
              to  break  this  rule  more than others; in general
              these AI's tend to get more multiple-matches (often
              triples or quadruples).

       Eliminating rocks
              Some  AI's  consider  it  a small benefit to try to
              eliminate as many rocks as possible.  If the AI has
              a  choice of two matches, the deciding factor could
              be in which one eliminates more rocks.

FILES
       ~/.xpuyopuyo/airule.*
              A list of AI rules.  To reset the AI rules  to  the
              defaults, remove these files.

       ~/.xpuyopuyo/config
              Configuration  options for xpuyopuyo.  All of these
              options can be set from the interface, there should
              be no need to edit this file directly.

       ~/.xpuyopuyo/highscores
              High scores for xpuyopuyo.

       ~/.xpuyopuyo/userkeys
              User-defined keys for player controls.

       xpuyopuyo.txt
              Manual  page  for  xpuyopuyo.  This is installed to
              your local share directory, and used  for  the  on-
              line help system.

       copying.txt
              Copy  of  the  GPL. This is installed to your local
              share directory, and used for the on-line help sys-
              tem.

SEE ALSO
       The  xpuyopuyo home page at <http://chaos2.org/xpuyopuyo>.
       There is also additional documentation  in  the  distribu-
       tion, under the doc/ directory.

AUTHORS
       xpuyopuyo    was    written    by   Justin   David   Smith
       <justins(s)chaos2.org>,  and  the  original  images  were
       designed  by  Owen  Aftreth.   The  first  GTK version was
       ported by Havoc Pennington.

       This  manual  page   written   by   Justin   David   Smith
       <justins(s)chaos2.org>.   Copyright(t)  1999,2000  Justin
       David Smith.

       (Please do not list these e-mail addresses on webpages, or
       list them in other packages, without contacting us first.)



Justin David Smith          March 2000               xpuyopuyo(o)