diff --git a/docs/source/conf.py b/docs/source/conf.py index b3b20a4..f8f1a8e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -18,7 +18,7 @@ # -- Project information ----------------------------------------------------- project = 'Brutal Maze' -copyright = '2020, Nguyễn Gia Phong' +copyright = '2017-2020, Nguyễn Gia Phong' author = 'Nguyễn Gia Phong' # The full version, including alpha/beta/rc tags diff --git a/docs/source/gameplay.rst b/docs/source/gameplay.rst index eed3a05..8903bd7 100644 --- a/docs/source/gameplay.rst +++ b/docs/source/gameplay.rst @@ -110,5 +110,7 @@ As the hero always follow the mouse, perse perform close-range attack while doing so. Unlike the automatic ones, there isn't any delay between two manual slashings. -.. _trigon: https://www.pygame.org/docs/ref/gfxdraw.html#pygame.gfxdraw.aatrigon -.. _the Tango palette: https://en.wikipedia.org/wiki/Tango_Desktop_Project#Palette +.. _trigon: + https://www.pygame.org/docs/ref/gfxdraw.html#pygame.gfxdraw.aatrigon +.. _the Tango palette: + https://en.wikipedia.org/wiki/Tango_Desktop_Project#Palette diff --git a/docs/source/images/2e3436.png b/docs/source/images/2e3436.png deleted file mode 100644 index 403caaf..0000000 Binary files a/docs/source/images/2e3436.png and /dev/null differ diff --git a/docs/source/remote.rst b/docs/source/remote.rst index 7a92d55..ddca8db 100644 --- a/docs/source/remote.rst +++ b/docs/source/remote.rst @@ -14,9 +14,9 @@ Server Output ------------- First, the game will export its data to a byte sequence (which in this case, -is simply a ASCII string without null-termination) of the length *l*. -Before sending the data to the client, the server would send the number *l* -padded to 7 digits. +is simply a ASCII string without null-termination) of the length :math:`l`. +Before sending the data to the client, the server would send the number +:math:`l` padded to 7 digits. Below is the meta structure of the data:: @@ -29,14 +29,15 @@ Below is the meta structure of the data:: The Maze ^^^^^^^^ -Visible parts of the maze with the width *nw* and the height *nh* are exported -as a byte map of *nh* lines and *nw* columns. Any character other than 0 -represents a blocking *cell*, i.e. a wall. +Visible parts of the maze with the width :math:`n_w` and the height :math:`n_h` +are exported as a byte map of :math:`n_h` lines and :math:`n_w` columns. +Any character other than 0 represents a blocking *cell*, i.e. a wall. To avoid floating point number in later description of other objects, each cell has the width (and height) of 100, which means the top left corner of -the top left cell has the coordinates of (0, 0) and the bottom right vertex of -the bottom right cell has the coordinates of (100 *nw*, 100 *nh*). +the top left cell has the coordinates of :math:`(0, 0)` and the bottom right +vertex of the bottom right cell has the coordinates of +:math:`(100 n_w, 100 n_h)`. The Hero ^^^^^^^^ @@ -44,20 +45,20 @@ The Hero 6 properties of the hero are exported in one line, separated by 1 space, in the following order: -:Hero's color: +:Color: The current HP of the hero, as shown in in the later section. :X-coordinate: - An integer in the range of [0, 100 *nw*]. + An integer within :math:`[0, 100 n_w]`. :Y-coordinate: - An integer in the range of [0, 100 *nh*]. + An integer within :math:`[0, 100 n_h]`. Note that the y-axis points up-side-down instead of pointing upward. :Angle: The direction the hero is pointing to in degrees, cast to an integer from 0 to 360. Same note as above (the unit circle figure might help you understand this easier). -:Flag showing if the hero can strike an attack: +:Can attack: 0 for *no* and 1 for *yes*. -:Flag showing if the hero can heal: +:Can heal: 0 for *no* and 1 for *yes*. .. image:: images/unit-circle.png @@ -70,29 +71,34 @@ Each enemy exports these properties: :Color: The type and the current HP of the enemy, as shown in the table below. :X-coordinate: - An integer in the range of [0, 100 *nw*]. + An integer within :math:`[0, 100 n_w]`. :Y-coordinate: - An integer in the range of [0, 100 *nh*]. + An integer within :math:`[0, 100 n_h]`. :Angle: The direction the enemy is pointing to in degrees, cast to a nonnegative integer. To shorten the data, each color (in the Tango palette) is encoded to a -lowercase letter or number 0. Different shades of a same color indicating -different HP of the characters. +lowercase letter. Different shades of a same color indicating different HP +of the characters. -=========== ======== ======== ======== ======== ======== ======== -HP 5 4 3 2 1 0 -=========== ======== ======== ======== ======== ======== ======== -Butter |fce94f| |edd400| |c4a000| |2e3436| -Orange |fcaf3e| |f57900| |ce5c00| |2e3436| -Chocolate |e9b96e| |c17d11| |8f5902| |2e3436| -Chameleon |8ae234| |73d216| |4e9a06| |2e3436| -Sky Blue |729fcf| |3465a4| |204a87| |2e3436| -Plum |ad7f8a| |75507b| |5c3566| |2e3436| -Scarlet Red |ef2929| |cc0000| |a40000| |2e3436| -Aluminium |eeeeec| |d3d7cf| |babdb6| |888a85| |555753| |2e3436| -=========== ======== ======== ======== ======== ======== ======== +=========== ======== ======== ======== ======== ======== +HP 5 4 3 2 1 +=========== ======== ======== ======== ======== ======== +Butter |fce94f| |edd400| |c4a000| +Orange |fcaf3e| |f57900| |ce5c00| +Chocolate |e9b96e| |c17d11| |8f5902| +Chameleon |8ae234| |73d216| |4e9a06| +Sky Blue |729fcf| |3465a4| |204a87| +Plum |ad7f8a| |75507b| |5c3566| +Scarlet Red |ef2929| |cc0000| |a40000| +Aluminium |eeeeec| |d3d7cf| |babdb6| |888a85| |555753| +=========== ======== ======== ======== ======== ======== + +.. note:: + + If a character shows up with color ``0``, it is safe to ignore it + since it is a dead body yet to be cleaned up. Flying bullets ^^^^^^^^^^^^^^ @@ -104,9 +110,9 @@ Bullets also export 4 properties like enemies: encoded similarly to characters', except that aluminium bullets only have 4 colors ``v``, ``w``, ``x`` and ``0``. :X-coordinate: - An integer in the range of [0, 100 *nw*]. + An integer within :math:`[0, 100 n_w]`. :Y-coordinate: - An integer in the range of [0, 100 *nh*]. + An integer within :math:`[0, 100 n_h]`. :Angle: The bullet's flying direction in degrees, cast to a nonnegative integer. @@ -163,10 +169,10 @@ Movement This is the most awkward one. As we can all imagine, there are nine different directions for the hero to move. Were they represented as two-dimensional vectors, at least three characters would be needed to describe such -a simple thing, e.g. ``1 0`` for m = (1, 0), and in the worst-case scenario -m = (-1, -1), we would need five: ``-1 -1``. 40 bits used to carry a four-bit -piece of data, freaking insane, right? So instead, we decided to *slightly* -encode it like this: +a simple thing, e.g. ``1 0`` for :math:`m = (1, 0)`, and in the worst-case +scenario :math:`m = (-1, -1)`, we would need five: ``-1 -1``. 40 bits are used +to carry a four-bit piece of data, freaking insane, right? So instead, +we decided to *slightly* encode it like this: ========= ==== === ===== Direction Left Nil Right @@ -198,10 +204,10 @@ can yet strike an attack (as described in above section about `The Hero`_). Pseudo-Client ------------- -#. Create INET, STREAMing socket *s* -#. Connect *s* to the address ``host:port`` which the server is bound to -#. Receive length *l* of data -#. If *l* > 0, close *s* and quit +#. Create an INET, STREAMing socket ``sock`` +#. Connect ``sock`` to the address ``host:port`` which the server is bound to +#. Receive length :math:`l` of data +#. If :math:`l > 0`, close ``sock`` and quit #. Receive the data #. Process the data #. Send instruction for the hero to the server and go back to step 3 @@ -215,8 +221,8 @@ the client-examples_ directory (more are coming). .. _client-examples: https://git.disroot.org/McSinyx/brutalmaze/src/branch/master/client-examples + .. |204a87| image:: images/204a87.png -.. |2e3436| image:: images/2e3436.png .. |3465a4| image:: images/3465a4.png .. |4e9a06| image:: images/4e9a06.png .. |555753| image:: images/555753.png