[conquest] Conquest 8.1.2ng1 development snapshot is available

Jon Trulson jon at radscan.com
Thu Jan 5 19:12:21 MST 2006



 	It's 8.3MB :)

 	This version is a development snapshot - not quite ready for 
prime-time, so the announcement of it will only go to this list, and will 
not be linked to from the website.

 	It features a few rather massive changes, including the new 
artwork/textures and iconhud from Cataboligne and a rework of texture
management and planet init handling (custom Universe anyone?).

 	Enjoy, and send Cat (on this list) any comments regarding the new 
graphics :)

 	Here's the somewhat lengthy release notes:

8.1.2ng1 (snapshot release)  1/05/2006

         - This is a development 'snapshot' version of Conquest.  It is
           intended to allow people to check it out, specifically the
           new icon hud from Cat.

           Distribution maintainers should probably avoid this release,
           as there is still alot of work to do before becoming an
           'official' dev release.

         - This version incorporates Cataboligne's massive artwork
           patch.  Among them:

           - new ship textures
           - team specific photon torpedos and phaser textures
           - team specific LR tactical grids
           - doomsday fires an anti-proton beam at unfortunate
           - original 8.1.2 Conquest included 37 textures.  This version
             includes 173 textures.  The src tarball got a little
             bigger :)

           This also includes the new 'icon hud' functionality, which
           promises to be the future default hud, once the kinks are
           worked out.

           The nature and size of this patch required that I redo the
           texture handling code in Conquest from scratch.  This stuff
           is described in more detail below.

           If you want to see the new IconHUD, go into User Options,
           and on page 2 will be some new options for configuring the
           icon hud.  Have phun, and send any comments to the list.

           There is still alot of work to be done with this code,
           including adding back the animation capability Cat provided
           (which could not work with the new texture code and had to
           be omitted).

           Known problems:

           - the icon hud does not size/scale properly

           - The icon hud uses alot of textures, the decal stuff will
             probably need to be redone.

           - when switching to the new hud and back to the old one, the
             hud geometry might get screwed up.   If you restart, you
             should be back to normal.

         - User config data (~/.conquestrc) is now stored in a new
           ~/.conquest/ directory.  The files that can currently be
           present in this directory are:

           conquestrc           # used to be ~/.conquestrc
           conquest.log         # what it says
           img/                 # directory containing user textures
                                  (.tga) files.
           *.trc                # user supplied texture definition files.

           If you already had a ~/.conquestrc with your settings in it,
           simply copy it into ~/.conquest/conquestrc before starting
           the game.

         - conquestgl will now emit it's log entries to stderr as well
           so that gl users might see something useful if something
           breaks :)

         - planet and texture configuration and intialization have been
           completely rewritten through the new CQI infrastructure.

         - texture loader now supports compressed tga files.

         - fix server recordings so they include TORPEVENT
           packets. These were only being recorded for clinet
           recordings.  This is important when rendering the new
           'directional' torp graphics Cat added when playing back a

         - this version includes all of the bug fixes in 8.1.2.

The following are some 'devnotes' that describe in a little more
detail the conqinitrc and texturesrc changes and formats.


        The old hardcoded texture filenames and integer index stuff in
        the original conquestgl proved to be, unsustainable :) Cat's
        patches extended ConquestGL's texture handling significantly,
        but there were still issues.  Texture configuration, loading
        and resolution have been completely reworked in this version of

        All textures that can be used in conquest are specified in a
        global 'texturesrc' file located in the main etc/ dir of a
        conquest installation.  Additional textures can be specified in
        a users ~/.conquest/*.trc files.

        Each texture is specified like:

        Simplest form:

                 texture {
                   name         "star"       # required

        Textures are referenced in conquest by this name during setup.
        The name should never change - they have been created to easily
        find textures for a given object, team, and shiptype for example.
        The image file loaded in this case would be 'star.tga'.

        You can also optionally specify a filename (if it's different
        from 'name'), and you can optionally specify a color (which would
        be normally be used as part of a texture animation).  So a more
        complex one with all values specified looks like:

                texture {
                  name         "conqlogoF"
                  filename     "conq-fed"    # optional, defaults to name
                  color        "ffe6e6e6"    # optional

                This is the federation conquest logo.  Inside conquest,
                when this texture should be rendered, conquest will
                simply look for textures with a name 'conquestlogoT'
                where 'T' is the first char of the team name.  You can
                change the filename to whatever you want and conquest
                will still find it, since all textures are referenced
                by the 'name' field.

                The 'color' is specified as a hex encoded 32 bit
                unsigned quantity that represent a pixel color.  The
                format is:


                A = alpha
                R = red
                G = green
                b = blue

        When conquest starts, it will load/parse this file so it has a
        complete texture list in the cqiTextures[] array (which is
        dynamically allocated).

        When LoadTextures() is called, it will simply go through this
        cqiTextures array and load each texture it can.

        For things like drawing planets, ships, etc, the texture id's
        are looked up the first time they are referenced from the
        GLTextures array and saved away for future use, eliminating the
        need to search for textures when rendering - it's just a direct
        lookup which is alot faster.

        Users can override texture definitions as well.  After
        conquestgl parses the main texturesrc file, it will then load
        and parse any *.trc files it finds in your ~/.conquest/
        directory.  These files have the same format as texturesrc.
        Textures can be provided in a user's ~/.conquest/img/
        directory, which will also be searched when texture loading
        starts.  So for example, if you absolutely hate the vbg (Viewer
        Backgroud) texture, you could make it what ever you want by
        creating a ~/.conquest/pick_a_name.trc file with the following

          texture {
            name "vbg"
            filename "my_better_vbg"

          Then place your my_better_vbg.tga file into ~/.conquest/img/ .

        That's the gist of textures.


        The planets are also handled differently. They are now all
        loaded from the global conqinitrc file.  There are also
        'global', and 'shiptype' sections in this file which,
        currently, should never be changed until the protocol and
        common block are changed to support it.  But the planet sections
        can be edited at will.

        Here's an example for Jinx:

               planet {
                 name        "Jinx"
                 primary     "Syrinx"
                 angle       304.393088
                 velocity    7.500000
                 radius      2600.000000
                 ptype       "M"
                 pteam       "S"
                 armies      153
                 visible     "yes"
                 core        "yes"
                 homeplanet  "no"
                 xcoord      -19392.238383
                 ycoord      -11831.705377
                 size        300
                 color       "ffe6e6e6"

       'size' is specified in CU's (Conquest Units of measurement).

        You can optionally have a 'texname' parameter that specifies
        the texture to use to display a planet, but this should almost
        never be done.  The default rules (described below) for
        finding a planet texture are generally the best choice.

        If 'angle' is negative, a random value will be chosen at parse

        The 'armies' field can accept two numbers as well, representing
        the min and max values to use to generate a random value.

              armies 20 100

              Will choose a random army value between 20 and 100 at parse

        The downside here is that it is currently not possible to
        define a planets orbital characteristics to be dependant on
        another planet (other than it's primary).  I do not consider
        this a loss... You may disagree :)

        Planet textures in the game are selected for a planet using the
        following rules:

        1. see if one was specified in the conqinitrc entry for
           the planet, if so, use it.  This should usually not be done
           except in special cases.

        2. see if a texture exists with the same name as the planet, if
           so use it.

        3. if all else fails, use the default textures 'classm',
           classd', 'star' etc.

        So in general, you never really need to specify a texture for a
        planet in conqinitrc.  If you want a specific texture to be
        displayed for a planet, just create a texture and add an entry
        for it in the texturesrc (or a user .trc) file uning the
        planet's name as the texture 'name'.


       There is a new executable called conqinit.  conqinit can be used
       to test the new parser, as well as to generate a texdata.h file
       based on texturesrc data, and generate a initdata.h file based on
       conqinitrc data.

       These initdata.h and texdata.h files contain defaults for the
       planets and textures compiled directly into conquest in the event
       the respective conquestrc and texturesrc file could not be found
       or successfully read on startup.


       $ conqinit

         Simply parses the global conqinitrc file and exits, reporting
         any errors, warnings, etc.

       $ conqinit -f <file>

         Does the same thing but parses <file>.

       $ conqinit -t

         parses the default texturesrc file and exits, reporting any

       $ conqinit -t -f <file>

         does the samething but parses <file> instead, and treats it
         like a file in texturesrc format.

       $ conqinit -f <file> -h >conqinit.h

         parses <file> as a conqinitrc file and generates a conqinit.h
         file that can be compiled into conquest to specify 'last-ditch'
         defaults in case the normal files could not be parsed for some

       Note, you should never have to gen any .h files, the parser runs
       when conquest starts up and will always use the data it found if
       it can.  Validated texdata.h and initdata.h files are supplied
       in the conquest distribution and should not really be modified
       unless you know what you are doing.

      For the future:

      - Animations.  The way I intend to do this is to allow up to 3
        animation types to be related to a texture by extending the texture
        specification to include:

               anim  "animation name"

               and then an animation would be specified like so:

               animation {
                  name "animation name"
                  texanim {
                           .... texture anim data

                  colanim {
                           .... color animation data

                  geoanim {
                           .... geometry anim data

               animations will be 'executed' via the main renderNode()
               function and be fairly autonomous with respect to the
               primary rendering node.

        Once this is done, then we can re-add some of the animation Cat
        made into the game.

Jon Trulson    mailto:jon at radscan.com
ID: 1A9A2B09, FP: C23F328A721264E7 B6188192EC733962
PGP keys at http://radscan.com/~jon/PGPKeys.txt
#include <std/disclaimer.h>
"I am Nomad." -Nomad

More information about the Conquest mailing list