[conquest] Conquest 8.1.2ng1 development snapshot is available
Jon Trulson
jon at radscan.com
Thu Jan 5 19:12:21 MST 2006
at:
http://radscan.com/conquest/conquest-8.1.2ng1.src.tar.gz
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
planets.
- 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
recording.
- 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.
Textures:
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
Conquest.
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:
AARRGGBB
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
contents:
texture {
name "vbg"
filename "my_better_vbg"
}
Then place your my_better_vbg.tga file into ~/.conquest/img/ .
That's the gist of textures.
Planets:
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
time.
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
time.
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'.
conqinit:
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.
examples:
$ 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
errors/warnings.
$ 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
reason.
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