Difference between revisions of "HowTo:Edit HUDs"

From VsWiki
Jump to: navigation, search
m (XML Schema)
m
 
(22 intermediate revisions by 7 users not shown)
Line 1: Line 1:
 
{{NAV_Manual |
 
{{NAV_Manual |
| previous=[[HowTo:Edit Mesh Files|Edit Mesh Files]]
+
| previous=[[HowTo:Edit Unit Files|Editing Unit Files]]
| up=[[HowTo]]
+
| up=[[HowTos]]
 
| next=[[HowTo:Create Cockpit in Wings3d|Create a Cockpit in Wings3d]]
 
| next=[[HowTo:Create Cockpit in Wings3d|Create a Cockpit in Wings3d]]
 
}}
 
}}
 +
----
 
{{attention}}
 
{{attention}}
----
+
=Editing or creating a HUD=
= Editing or Creating a HUD =
+
==Image files==
== Image files ==
 
 
* To display your own graphic files in the HUD you can use every image format that is supported by vegastrike (png/jpg/bmp/...).  
 
* To display your own graphic files in the HUD you can use every image format that is supported by vegastrike (png/jpg/bmp/...).  
 
* The sides of the images must have a size that is a power of 2.  
 
* The sides of the images must have a size that is a power of 2.  
  
== The cockpit directory ==
+
==The cockpit directory==
 
The cockpit directory contains all the relevant files that consist of the HUD and cockpit.  These files are:
 
The cockpit directory contains all the relevant files that consist of the HUD and cockpit.  These files are:
* .cpt file - {{fixme}} PROVIDE EXPLANATION OF PURPOSE OF FILE
+
* .cpt file - is the main cockpit definition file and links all the cockpit parts together
 
* .bfxm file - {{fixme}} PROVIDE EXPLANATION OF PURPOSE OF FILE
 
* .bfxm file - {{fixme}} PROVIDE EXPLANATION OF PURPOSE OF FILE
 
* .xmesh file - {{fixme}} PROVIDE EXPLANATION OF PURPOSE OF FILE
 
* .xmesh file - {{fixme}} PROVIDE EXPLANATION OF PURPOSE OF FILE
* .spr files - {{fixme}} PROVIDE EXPLANATION OF PURPOSE OF FILE
+
* .spr files - define the size and position of cockpit elements (gauges, radars, ...) on the screen
  
=== Example ===
+
===Example===
'''../cockpits/disabled-cockpit.cpt'''
+
<code>./cockpits/disabled-cockpit/disabled-cockpit.cpt</code>
=== Structure ===
+
===Structure===
'''disable-cockpit.cpt''' is the name of the subdirectory.
+
<code>disabled-cockpit</code> is the name of the subdirectory.
=== Description ===
+
===Description===
 
All cockpit/HUD information is held under a single directory located as a subdirectory of the '''cockpits''' directory.
 
All cockpit/HUD information is held under a single directory located as a subdirectory of the '''cockpits''' directory.
  
== The ".cpt" file format ==
+
==The ".cpt" file format==
 
{{fixme}} COMPLETE MISSING INFORMATION
 
{{fixme}} COMPLETE MISSING INFORMATION
=== Example ===
+
===Example===
'''disabled-cockpit.cpt'''
+
<code>disabled-cockpit.cpt</code>
  <Cockpit r="0" g=".75" b="1">
+
<pre>
    <Crosshairs file="crosshairs.spr" xcent="0" ycent="0" />  
+
<Cockpit r="0" g=".75" b="1">
    <Radar file="radar.spr" />  
+
  <Crosshairs file="crosshairs.spr" xcent="0" ycent="0" />  
    <RearRadar file="radarr.spr" />  
+
  <Radar file="radar.spr" />  
    <Speed file="radar.spr" xcent="-.23" ycent="-.52" width=".018" height=".036" />  
+
  <RearRadar file="radarr.spr" />  
    <SetSpeed file="radar.spr" xcent=".23" ycent="-.52" width=".018" height=".036" />  
+
  <Speed file="radar.spr" xcent="-.23" ycent="-.52" width=".018" height=".036" />  
    <WARPFIELDSTRENGTH file="radar.spr" xcent="-.23" ycent="-.58" width=".018" height=".036" />  
+
  <SetSpeed file="radar.spr" xcent=".23" ycent="-.52" width=".018" height=".036" />  
  <!--  
+
  <WARPFIELDSTRENGTH file="radar.spr" xcent="-.23" ycent="-.58" width=".018" height=".036" />  
 +
<!--  
 
<ShieldF file="shieldf.spr"/>
 
<ShieldF file="shieldf.spr"/>
 
<ShieldB file="shieldf.spr" xcent="-.3" ycent="-.92" GaugeDown="1"/>
 
<ShieldB file="shieldf.spr" xcent="-.3" ycent="-.92" GaugeDown="1"/>
Line 48: Line 49:
  
  
  -->  
+
-->  
    <Fuel file="fuelstat.spr" GaugeRight="1" xcent="0" ycent="-.6" />  
+
  <Fuel file="fuelstat.spr" GaugeRight="1" xcent="0" ycent="-.6" />  
    <Energy file="blasterpower.spr" GaugeRight="1" />  
+
  <Energy file="blasterpower.spr" GaugeRight="1" />  
    <WarpEnergy file="jumppower.spr" GaugeRight="1" xcent="0" ycent="-.55" />  
+
  <WarpEnergy file="jumppower.spr" GaugeRight="1" xcent="0" ycent="-.55" />  
    <Lock file="locklight.spr" xcent="0" ycent="-.7" />  
+
  <Lock file="locklight.spr" xcent="0" ycent="-.7" />  
    <MissileLock file="locklight.spr" xcent=".04" ycent="-.7" />  
+
  <MissileLock file="locklight.spr" xcent=".04" ycent="-.7" />  
    <ECM file="locklight.spr" xcent="-.04" ycent="-.7" />  
+
  <ECM file="locklight.spr" xcent="-.04" ycent="-.7" />  
    <Auto file="auto.spr" />  
+
  <Auto file="auto.spr" />  
    <Jump file="canjump.spr" />  
+
  <Jump file="canjump.spr" />  
    <Eject file="eject.spr" />  
+
  <Eject file="eject.spr" />  
  <!-- <LeftVDU TextRows="15" TextCols="25" type="Shield  Manifest" file="wvdu.spr" xcent="-.47" ycent="-.75"/>
+
<!-- <LeftVDU TextRows="15" TextCols="25" type="Shield  Manifest" file="wvdu.spr" xcent="-.47" ycent="-.75"/>
  -->  
+
-->  
    <VDU TextRows="30" TextCols="25" type="Weapon Manifest Damage" file="wvdu.spr" xcent="-.8" ycent=".2" />  
+
  <VDU TextRows="30" TextCols="25" type="Weapon Manifest Damage" file="wvdu.spr" xcent="-.8" ycent=".2" />  
    <VDU TextRows="15" TextCols="25" type="Target Comm View TargetManifest Nav" file="rvdu.spr" xcent=".775" ycent="-.75" />  
+
  <VDU TextRows="15" TextCols="25" type="Target Comm View TargetManifest Nav" file="rvdu.spr" xcent=".775" ycent="-.75" />  
    <VDU TextRows="15" TextCols="25" type="Shield Manifest" file="lvdu.spr" xcent="-.775" ycent="-.75" />  
+
  <VDU TextRows="15" TextCols="25" type="Shield Manifest" file="lvdu.spr" xcent="-.775" ycent="-.75" />  
    <VDU TextRows="14" TextCols="100" type="Message" file="mvdu.spr" />  
+
  <VDU TextRows="14" TextCols="100" type="Message" file="mvdu.spr" />  
    <VDU TextRows="30" TextCols="30" type="Objectives" file="objvdu.spr" />  
+
  <VDU TextRows="30" TextCols="30" type="Objectives" file="objvdu.spr" />  
    <FPS file="radar.spr" xcent=".9" ycent=".8" width=".018" height=".036" />  
+
  <FPS file="radar.spr" xcent=".9" ycent=".8" width=".018" height=".036" />  
  </Cockpit>
+
</Cockpit>
 
+
</pre>
=== XML Schema ===
+
===XML Schema===
''This is the information I have gathered from looking at the files.  Where I have placed (?)'s, I am unsure if my information is correct.''
+
''This is the information I have gathered from looking at the files.''
  
 
<code><Cockpit ...> </Cockpit></code> Marks the beginning and end of the cockpit definition
 
<code><Cockpit ...> </Cockpit></code> Marks the beginning and end of the cockpit definition
 
* <code>r="#" g="#" b="#"</code> Specifies percentages of color used for generated elements (text and radar).  Numbers between 0 and 1. Example is for cyan.
 
* <code>r="#" g="#" b="#"</code> Specifies percentages of color used for generated elements (text and radar).  Numbers between 0 and 1. Example is for cyan.
 +
* <code>mesh=""</code> - Mesh file to use for 3D cockpits
 +
* <code>front=""</code> - Sprite file to use for forward-facing view of 2D cockpits
 +
* <code>left=""</code> - Sprite file to use for left-facing view of 2D cockpits
 +
* <code>right=""</code> - Sprite file to use for right-facing view of 2D cockpits
 +
* <code>back=""</code> - Sprite file to use for rear-facing view of 2D cockpits
 +
* <code>ViewOffset="#"</code> - {{fixme}} Horizontal offset within cockpit
 +
* <code>CockpitOffset="#"</code> - {{fixme}} Not certain of the purpose of this option
 +
* The following options are supported in <code>cockpit_xml.cpp</code> (In CVS as of 5/18/2005) and may or may not be functional in the game.
 +
** <code>font=""</code> - Specify the font file to be used
 +
** <code>file=""</code> - {{fixme}} Unknown
 +
** <code>soundfile=""</code> - {{fixme}} Unknown
 +
 
* Sprite definitions
 
* Sprite definitions
 
** Common parameters:
 
** Common parameters:
 
*** <code>file=""</code> - SPR file to use
 
*** <code>file=""</code> - SPR file to use
*** <code>xcent="#" ycent="#"</code> - center along x or y at # (?)
+
*** <code>xcent="#" ycent="#"</code> - center along x or y at # (range is -1.0 to 1.0)
 
*** <code>width="#" height="#"</code> - Set width and height
 
*** <code>width="#" height="#"</code> - Set width and height
*** <code>Gauges - GaugeRight, GaugeLeft, GaugeDown, GaugeUp(?) = "1" - Sets direction that gauges clear from
+
*** For gauges: <code>GaugeRight, GaugeLeft, GaugeDown, GaugeUp(Default) = "1"</code> - Sets direction that gauges clear from (Only one tag possible?).
 
** <code><Crosshairs ... /></code> - Crosshairs sprite
 
** <code><Crosshairs ... /></code> - Crosshairs sprite
 +
*** To tell the engine to actually draw bitmap/sprite crosshairs you need to define<BR/><code><nowiki><var name="draw_rendered_crosshairs" value="false" /></nowiki></code><BR/>in the <code>vegastrike.config</code> file.
 +
** <code><Panel ... /></code> - A fixed sprite, functionally mostly identical to Crosshairs (except layering and procedural rendering option).
 +
*** E.g.: backgrounds for gauges with text "CAPACITOR"/"DRIVES"/"FUEL" in the default ("disabled") cockpit are panels.
 
** <code><Radar ... /></code> - Forward radar
 
** <code><Radar ... /></code> - Forward radar
 
** <code><RearRadar ... /></code> - Rear radar
 
** <code><RearRadar ... /></code> - Rear radar
 
** <code><Speed ... /></code> - Current speed
 
** <code><Speed ... /></code> - Current speed
 
** <code><SetSpeed ... /></code> - Set speed
 
** <code><SetSpeed ... /></code> - Set speed
** <code><WARPFIELDSTRENGTH ... /></code> - Current SPEC multiplier
+
** <code><WARPFIELDSTRENGTH ... /></code> - Current SPEC multiplier.
** <code><Fuel ... /></code> - Fuel gauge
+
** <code><Fuel ... /></code> - Fuel (Gauge)
** <code><Energy ... /></code> - Main (reactor) capacitor level
+
** <code><Energy ... /></code> - Main (reactor) capacitor level. (Gauge)
** <code><WarpEnergy ... /></code> - Warp capacitor level
+
** <code><WarpEnergy ... /></code> - Warp capacitor level. (Gauge)
** <code><Lock ... /></code> - Someone has locked onto you
+
** <code><Lock ... /></code> - Someone has locked onto you.
 
** <code><MissileLock ... /></code> - Someone has gained a missile lock on you
 
** <code><MissileLock ... /></code> - Someone has gained a missile lock on you
** <code><ECM ... /></code> - ECM activated (?)
+
** <code><ECM ... /></code> - ECM activated (Is this when your ECM stops a missile or when an enemy stops your missile?)
 
** <code><Auto ... /></code> - Timeless Autopilot or SPEC mode indicator
 
** <code><Auto ... /></code> - Timeless Autopilot or SPEC mode indicator
 
** <code><Jump ... /></code> - Jump point in range indicator
 
** <code><Jump ... /></code> - Jump point in range indicator
 
** <code><Eject ... /></code> - Critical failure indicator
 
** <code><Eject ... /></code> - Critical failure indicator
** <code><VDU ... /></code> - Video Display Unit (multiple entries allowed)
+
** <code><VDU ... /></code> - Video Display Unit. Multiple entries allowed, in order of appearance assigned to: LVDU, RVDU, MVDU, ULVDU, URVDU, UMVDU. (default Type: Messages)
 
*** Additional parameters:
 
*** Additional parameters:
 
**** <code>TextRows = "#"</code> - Number of rows displayed (Note: If sprite is not large enough, the maximum number of rows possible is displayed)
 
**** <code>TextRows = "#"</code> - Number of rows displayed (Note: If sprite is not large enough, the maximum number of rows possible is displayed)
 
**** <code>TextCols = "#"</code> - Number of characters across displayed
 
**** <code>TextCols = "#"</code> - Number of characters across displayed
 
**** <code>Type = ""</code> - VDU types to display separated by spaces
 
**** <code>Type = ""</code> - VDU types to display separated by spaces
 +
***** <code>Weapon</code> - Displays active guns and missiles
 +
***** <code>Manifest</code> - Displays the content of your cargo hold
 +
***** <code>Damage</code> - Displays the status of your ship and it's systems
 +
***** <code>Target</code> - Displays your target's shields, hull and distance from your ship
 +
***** <code>Comm</code> - Displays your communications options
 +
***** <code>View</code> - Displays a camera view of your target
 +
***** <code>TargetManifest</code> - Displays your target's cargo
 +
***** <code>Nav</code> - Another camera view
 +
***** <code>Shield</code> - Your shield status
 +
***** <code>Message</code> - Incoming and outgoing message display
 +
***** <code>Objectives</code> - Mission objectives
 
** <code><FPS ... /></code> - Simulated Frames per Second
 
** <code><FPS ... /></code> - Simulated Frames per Second
 
** <code><ShieldF ... /></code> - Front Shield Gauge
 
** <code><ShieldF ... /></code> - Front Shield Gauge
Line 104: Line 131:
 
** <code><ShieldL ... /></code> - Left Shield Gauge
 
** <code><ShieldL ... /></code> - Left Shield Gauge
 
** <code><ShieldR ... /></code> - Right Shield Gauge
 
** <code><ShieldR ... /></code> - Right Shield Gauge
 +
** <code><ShieldFRT ... /></code> - Front-Right-Top Shield Gauge
 +
** <code><ShieldBRT ... /></code> - Back-Right-Top Shield Gauge
 +
** <code><ShieldFLT ... /></code> - Front-Left-Top Shield Gauge
 +
** <code><ShieldBRT ... /></code> - Back-Right-Top Shield Gauge
 +
** <code><ShieldFRB ... /></code> - Front-Right-Bottom Shield Gauge
 +
** <code><ShieldBRB ... /></code> - Back-Right-Bottom Shield Gauge
 +
** <code><ShieldFLB ... /></code> - Front-Left-Bottom Shield Gauge
 +
** <code><ShieldBRB ... /></code> - Back-Right-Bottom Shield Gauge
 
** <code><ArmorF ... /></code> - Front Armor Gauge
 
** <code><ArmorF ... /></code> - Front Armor Gauge
 
** <code><ArmorB ... /></code> - Rear Armor Gauge
 
** <code><ArmorB ... /></code> - Rear Armor Gauge
 
** <code><ArmorL ... /></code> - Left Armor Gauge
 
** <code><ArmorL ... /></code> - Left Armor Gauge
 
** <code><ArmorR ... /></code> - Right Armor Gauge
 
** <code><ArmorR ... /></code> - Right Armor Gauge
 +
** <code><ArmorFRT ... /></code> - Front-Right-Top Armor Gauge
 +
** <code><ArmorBRT ... /></code> - Back-Right-Top Armor Gauge
 +
** <code><ArmorFLT ... /></code> - Front-Left-Top Armor Gauge
 +
** <code><ArmorBRT ... /></code> - Back-Right-Top Armor Gauge
 +
** <code><ArmorFRB ... /></code> - Front-Right-Bottom Armor Gauge
 +
** <code><ArmorBRB ... /></code> - Back-Right-Bottom Armor Gauge
 +
** <code><ArmorFLB ... /></code> - Front-Left-Bottom Armor Gauge
 +
** <code><ArmorBRB ... /></code> - Back-Right-Bottom Armor Gauge
 +
 +
** Additional elements found in cockpit_xml.cpp that may or may not be implemented
 +
*** <code><LeftVDU ... /></code> - {{fixme}} Left VDU (default Type: Objectives Manifest Weapon Damage Shield [/WEBCAM] [/NETWORK])
 +
*** <code><RightVDU ... /></code> - {{fixme}} Right VDU (default Type: Target TargetManifest Nav)
 +
*** <code><Collision ... /></code> - {{fixme}} Sprite indicating a collision has occurred.
 
{{fixme}} CORRECTIONS AND ADDITIONAL INFORMATION REQUESTED
 
{{fixme}} CORRECTIONS AND ADDITIONAL INFORMATION REQUESTED
  
=== Description ===
+
* Events (custom cockpit sounds). <code><nowiki><Event .../></nowiki></code>
This is the .cpt file, using the same name as per the directory name.
+
** <code>event="..."</code> - Triggering event. Possible values:
 +
*** <code>WarpReady</code>, <code>WarpUnready</code>, <code>WarpEngaged</code>, <code>WarpDisengaged</code>
 +
*** <code>WarpLoop0</code> ... <code>WarpLoop9</code>
 +
*** <code>WarpSkip0</code> ... <code>WarpSkip9</code>
 +
*** <code>ASAPEngaged</code>, <code>ASAPDisengaged</code>, <code>ASAPDockingAvailable</code>, <code>ASAPDockingEngaged</code>, <code>ASAPDockingDisengaged</code> - autopilot modes.
 +
*** <code>FlightComputerEnabled</code>, <code>FlightComputerDisabled</code> - Flight mode
 +
*** <code>DockAvailable</code>, <code>DockUnavailable</code>, <code>DockFailed</code>
 +
*** <code>JumpAvailable</code>, <code>JumpUnavailable</code>, <code>JumpFailed</code>
 +
*** <code>Lock</code>, <code>MissileLock</code> - lock warning
 +
*** <code>Eject</code> - "Eject!" warning
 +
** <code>soundfile=""</code> - WAV file to use
 +
** <code>looping="false"</code> (bool) - whether it's looping
 +
** <code>gain=""</code> (float) - volume adjustment.
 +
 
 +
 
 +
New gauges have been implemented into SVN as of revision 11767, explanation is required:
 +
*TCNT ==> Turret CoNTrol (OFF/ACTIVE/FAW (FireAtWill) )
 +
*GCNT ==> Governor CoNTrol (Maneuver vs. Travel mode)
 +
*...
 +
 
 +
===Description===
 +
This is the <code>.cpt</code> file, using the same name as per the directory name.
 
{{fixme}} INFORMATION ON STRUCTURE REQUIRED
 
{{fixme}} INFORMATION ON STRUCTURE REQUIRED
  
== The ".spr" file format ==
+
==The ".spr" file format==
 
{{fixme}} REDEFINE INTO EASY TO FOLLOW INSTRUCTIONS
 
{{fixme}} REDEFINE INTO EASY TO FOLLOW INSTRUCTIONS
=== Example ===
+
===Example===
'''./cockpits/disabled-cockpit.cpt/blasterpower.spr'''
+
<code>./cockpits/disabled-cockpit.cpt/blasterpower.spr</code>
cockpit/blasterpower.png cockpit/blasterpower.png
+
<pre>
.25 .09
+
cockpit/blasterpower.png cockpit/blasterpower.png
0 -.5
+
.25 .09
=== Structure ===
+
0 -.5
imagename alphaname
+
</pre>
scaleX scaleY
+
===Structure===
positionX positionY
+
<pre>
 
+
imagename alphaname
=== Description ===
+
scaleX scaleY
* imagename - path to the image to be used (e.g cockpit/blasterpower.png ... this will search in ../textures/cockpit/ for the file blasterpower.png)  
+
positionX positionY
* alphaname - This is the alpha map for the image. It must either be a greyscale .bmp, or a .png (where the png's alpha map is used), even if you are using the alpha-map from the first png, it must also be listed here as the source of the alphamap!  
+
</pre>
* scaleX - Scales the image on the X-Axis (1 = Fullsize, 0.5 = Halfsize, 2 = Doublesize etc)  
+
===Description===
* scaleY - Scales the image on the Y-Axis (see scaleX)  
+
* <code>imagename</code> - path to the image to be used (e.g <code>./cockpit/blasterpower.png</code> ... this will search in <code>./textures/cockpit/</code> for the file <code>blasterpower.png</code>)  
* positionX - Start drawing the image on a relative position specified by positionX  
+
* <code>alphaname</code> - This is the alpha map for the image. It must either be a greyscale <code>.bmp</code>, or a <code>.png</code> (where the png's alpha map is used), even if you are using the alpha-map from the first png, it must also be listed here as the source of the alphamap!  
* positionY - Start drawing the image on a relative position specified by positionY  
+
* <code>scaleX</code> - Scales the image on the X-Axis (1 = Fullsize, 0.5 = Halfsize, 2 = Doublesize etc)  
 +
* <code>scaleY</code> - Scales the image on the Y-Axis (see scaleX)  
 +
* <code>positionX</code> - Start drawing the image on a relative position specified by positionX  
 +
* <code>positionY</code> - Start drawing the image on a relative position specified by positionY  
  
The last four options require some explanation on how Vega Strike 4.01 draws its sprites. First of all, you have to know that the resolution of the image is absolutely irrelevant, as Vega Strike works with relative coordinates and scaling, with (0,0) being the center of the screen. Imageine a picture of exactly one red pixel (1x1) in size, with scaleX=scaleY=1 ,positionX=positionY=0. The result is a red square, whose center is on the center of the screen. It fills the left, the right, the upper and the lower half of the screen. scaleX=scaleY=2 would make it exactly fullscreen. The same applies to positionX and positionY. PositonY=-1 whould start drawing it on the lower half from the center of the screen, whereas PositionY=2 whould completely draw it offscreen.
+
The last four options require some explanation on how Vega Strike 4.01 draws its sprites. First of all, you have to know that the resolution of the image is absolutely irrelevant, as Vega Strike works with relative coordinates and scaling, with (0,0) being the center of the screen. Imagine a picture of exactly one red pixel (1x1) in size, with <code>scaleX=scaleY=1</code> ,<code>positionX=positionY=0</code>. The result is a red square, whose center is on the center of the screen. It fills the left, the right, the upper and the lower half of the screen. <code>scaleX=scaleY=2</code> would make it exactly fullscreen. The same applies to <code>positionX</code> and <code>positionY</code>. <code>PositonY=-1</code> would start drawing it on the lower half from the center of the screen, whereas <code>PositionY=2</code> would completely draw it offscreen.
  
One note regarding negative values in scaleX and scaleY : Vega Strike flips the sprite on that axis, but in the case of gauges like Blasterpower will also start decreasing it flipped (not from the right, but from the left).
+
One note regarding negative values in <code>scaleX</code> and <code>scaleY</code> : Vega Strike flips the sprite on that axis, but in the case of gauges like Blasterpower will also start decreasing it flipped (not from the right, but from the left).
  
 +
=See also=
 +
* Related forum topics/threads
 +
** [http://forums.vega-strike.org/viewtopic.php?t=4143 <nowiki>[Question/Request] Animated sprites and gauges</nowiki>]
 +
** [http://forums.vega-strike.org/viewtopic.php?t=4150 HUD Stuff]
 +
** [http://forums.vega-strike.org/viewtopic.php?t=4137 Press Q To Quit]
 +
** [http://forums.vega-strike.org/viewtopic.php?t=10406 Disabled cockpit HUD shields and armor]
 
----
 
----
 
{{NAV_Manual |
 
{{NAV_Manual |
| previous=[[HowTo:Edit Mesh Files|Edit Mesh Files]]
+
| previous=[[HowTo:Edit Unit Files|Editing Unit Files]]
| up=[[HowTo]]
+
| up=[[HowTos]]
 
| next=[[HowTo:Create Cockpit in Wings3d|Create a Cockpit in Wings3d]]
 
| next=[[HowTo:Create Cockpit in Wings3d|Create a Cockpit in Wings3d]]
 
}}
 
}}
[[Category:HowTo|HUD Editing]]
+
[[Category:HowTos|Edit HUDs]]

Latest revision as of 17:26, 21 July 2013

arrow_left.png Editing Unit Files arrow_up.png HowTos Create a Cockpit in Wings3d arrow_right.png

Editing or creating a HUD

Image files

  • To display your own graphic files in the HUD you can use every image format that is supported by vegastrike (png/jpg/bmp/...).
  • The sides of the images must have a size that is a power of 2.

The cockpit directory

The cockpit directory contains all the relevant files that consist of the HUD and cockpit. These files are:

  • .cpt file - is the main cockpit definition file and links all the cockpit parts together
  • .bfxm file - FIXME PROVIDE EXPLANATION OF PURPOSE OF FILE
  • .xmesh file - FIXME PROVIDE EXPLANATION OF PURPOSE OF FILE
  • .spr files - define the size and position of cockpit elements (gauges, radars, ...) on the screen

Example

./cockpits/disabled-cockpit/disabled-cockpit.cpt

Structure

disabled-cockpit is the name of the subdirectory.

Description

All cockpit/HUD information is held under a single directory located as a subdirectory of the cockpits directory.

The ".cpt" file format

FIXME COMPLETE MISSING INFORMATION

Example

disabled-cockpit.cpt

<Cockpit r="0" g=".75" b="1">
   <Crosshairs file="crosshairs.spr" xcent="0" ycent="0" /> 
   <Radar file="radar.spr" /> 
   <RearRadar file="radarr.spr" /> 
   <Speed file="radar.spr" xcent="-.23" ycent="-.52" width=".018" height=".036" /> 
   <SetSpeed file="radar.spr" xcent=".23" ycent="-.52" width=".018" height=".036" /> 
   <WARPFIELDSTRENGTH file="radar.spr" xcent="-.23" ycent="-.58" width=".018" height=".036" /> 
<!-- 
	<ShieldF file="shieldf.spr"/>
	<ShieldB file="shieldf.spr" xcent="-.3" ycent="-.92" GaugeDown="1"/>
	<ArmorL file="armorl.spr"  GaugeLeft="1"/>
	<ArmorR file="armorl.spr" xcent="-.22" ycent="-.835" GaugeRight="1"/>
	<Hull file="hull.spr" xcent="-.3" ycent="-.835" GaugeUp="1"/>
	<ArmorF file="armorf.spr" />
	<ArmorB file="armorf.spr" xcent="-.3" ycent="-.87"  GaugeDown="1"/>
	<ArmorL file="armorl.spr"  GaugeLeft="1"/>
	<ArmorR file="armorl.spr" xcent="-.22" ycent="-.835" GaugeRight="1"/>


--> 
   <Fuel file="fuelstat.spr" GaugeRight="1" xcent="0" ycent="-.6" /> 
   <Energy file="blasterpower.spr" GaugeRight="1" /> 
   <WarpEnergy file="jumppower.spr" GaugeRight="1" xcent="0" ycent="-.55" /> 
   <Lock file="locklight.spr" xcent="0" ycent="-.7" /> 
   <MissileLock file="locklight.spr" xcent=".04" ycent="-.7" /> 
   <ECM file="locklight.spr" xcent="-.04" ycent="-.7" /> 
   <Auto file="auto.spr" /> 
   <Jump file="canjump.spr" /> 
   <Eject file="eject.spr" /> 
<!-- 	<LeftVDU TextRows="15" TextCols="25" type="Shield  Manifest" file="wvdu.spr" xcent="-.47" ycent="-.75"/>
--> 
   <VDU TextRows="30" TextCols="25" type="Weapon Manifest Damage" file="wvdu.spr" xcent="-.8" ycent=".2" /> 
   <VDU TextRows="15" TextCols="25" type="Target Comm View TargetManifest Nav" file="rvdu.spr" xcent=".775" ycent="-.75" /> 
   <VDU TextRows="15" TextCols="25" type="Shield Manifest" file="lvdu.spr" xcent="-.775" ycent="-.75" /> 
   <VDU TextRows="14" TextCols="100" type="Message" file="mvdu.spr" /> 
   <VDU TextRows="30" TextCols="30" type="Objectives" file="objvdu.spr" /> 
   <FPS file="radar.spr" xcent=".9" ycent=".8" width=".018" height=".036" /> 
</Cockpit>

XML Schema

This is the information I have gathered from looking at the files.

<Cockpit ...> </Cockpit> Marks the beginning and end of the cockpit definition

  • r="#" g="#" b="#" Specifies percentages of color used for generated elements (text and radar). Numbers between 0 and 1. Example is for cyan.
  • mesh="" - Mesh file to use for 3D cockpits
  • front="" - Sprite file to use for forward-facing view of 2D cockpits
  • left="" - Sprite file to use for left-facing view of 2D cockpits
  • right="" - Sprite file to use for right-facing view of 2D cockpits
  • back="" - Sprite file to use for rear-facing view of 2D cockpits
  • ViewOffset="#" - FIXME Horizontal offset within cockpit
  • CockpitOffset="#" - FIXME Not certain of the purpose of this option
  • The following options are supported in cockpit_xml.cpp (In CVS as of 5/18/2005) and may or may not be functional in the game.
    • font="" - Specify the font file to be used
    • file="" - FIXME Unknown
    • soundfile="" - FIXME Unknown
  • Sprite definitions
    • Common parameters:
      • file="" - SPR file to use
      • xcent="#" ycent="#" - center along x or y at # (range is -1.0 to 1.0)
      • width="#" height="#" - Set width and height
      • For gauges: GaugeRight, GaugeLeft, GaugeDown, GaugeUp(Default) = "1" - Sets direction that gauges clear from (Only one tag possible?).
    • <Crosshairs ... /> - Crosshairs sprite
      • To tell the engine to actually draw bitmap/sprite crosshairs you need to define
        <var name="draw_rendered_crosshairs" value="false" />
        in the vegastrike.config file.
    • <Panel ... /> - A fixed sprite, functionally mostly identical to Crosshairs (except layering and procedural rendering option).
      • E.g.: backgrounds for gauges with text "CAPACITOR"/"DRIVES"/"FUEL" in the default ("disabled") cockpit are panels.
    • <Radar ... /> - Forward radar
    • <RearRadar ... /> - Rear radar
    • <Speed ... /> - Current speed
    • <SetSpeed ... /> - Set speed
    • <WARPFIELDSTRENGTH ... /> - Current SPEC multiplier.
    • <Fuel ... /> - Fuel (Gauge)
    • <Energy ... /> - Main (reactor) capacitor level. (Gauge)
    • <WarpEnergy ... /> - Warp capacitor level. (Gauge)
    • <Lock ... /> - Someone has locked onto you.
    • <MissileLock ... /> - Someone has gained a missile lock on you
    • <ECM ... /> - ECM activated (Is this when your ECM stops a missile or when an enemy stops your missile?)
    • <Auto ... /> - Timeless Autopilot or SPEC mode indicator
    • <Jump ... /> - Jump point in range indicator
    • <Eject ... /> - Critical failure indicator
    • <VDU ... /> - Video Display Unit. Multiple entries allowed, in order of appearance assigned to: LVDU, RVDU, MVDU, ULVDU, URVDU, UMVDU. (default Type: Messages)
      • Additional parameters:
        • TextRows = "#" - Number of rows displayed (Note: If sprite is not large enough, the maximum number of rows possible is displayed)
        • TextCols = "#" - Number of characters across displayed
        • Type = "" - VDU types to display separated by spaces
          • Weapon - Displays active guns and missiles
          • Manifest - Displays the content of your cargo hold
          • Damage - Displays the status of your ship and it's systems
          • Target - Displays your target's shields, hull and distance from your ship
          • Comm - Displays your communications options
          • View - Displays a camera view of your target
          • TargetManifest - Displays your target's cargo
          • Nav - Another camera view
          • Shield - Your shield status
          • Message - Incoming and outgoing message display
          • Objectives - Mission objectives
    • <FPS ... /> - Simulated Frames per Second
    • <ShieldF ... /> - Front Shield Gauge
    • <ShieldB ... /> - Rear Shield Gauge
    • <ShieldL ... /> - Left Shield Gauge
    • <ShieldR ... /> - Right Shield Gauge
    • <ShieldFRT ... /> - Front-Right-Top Shield Gauge
    • <ShieldBRT ... /> - Back-Right-Top Shield Gauge
    • <ShieldFLT ... /> - Front-Left-Top Shield Gauge
    • <ShieldBRT ... /> - Back-Right-Top Shield Gauge
    • <ShieldFRB ... /> - Front-Right-Bottom Shield Gauge
    • <ShieldBRB ... /> - Back-Right-Bottom Shield Gauge
    • <ShieldFLB ... /> - Front-Left-Bottom Shield Gauge
    • <ShieldBRB ... /> - Back-Right-Bottom Shield Gauge
    • <ArmorF ... /> - Front Armor Gauge
    • <ArmorB ... /> - Rear Armor Gauge
    • <ArmorL ... /> - Left Armor Gauge
    • <ArmorR ... /> - Right Armor Gauge
    • <ArmorFRT ... /> - Front-Right-Top Armor Gauge
    • <ArmorBRT ... /> - Back-Right-Top Armor Gauge
    • <ArmorFLT ... /> - Front-Left-Top Armor Gauge
    • <ArmorBRT ... /> - Back-Right-Top Armor Gauge
    • <ArmorFRB ... /> - Front-Right-Bottom Armor Gauge
    • <ArmorBRB ... /> - Back-Right-Bottom Armor Gauge
    • <ArmorFLB ... /> - Front-Left-Bottom Armor Gauge
    • <ArmorBRB ... /> - Back-Right-Bottom Armor Gauge
    • Additional elements found in cockpit_xml.cpp that may or may not be implemented
      • <LeftVDU ... /> - FIXME Left VDU (default Type: Objectives Manifest Weapon Damage Shield [/WEBCAM] [/NETWORK])
      • <RightVDU ... /> - FIXME Right VDU (default Type: Target TargetManifest Nav)
      • <Collision ... /> - FIXME Sprite indicating a collision has occurred.

FIXME CORRECTIONS AND ADDITIONAL INFORMATION REQUESTED

  • Events (custom cockpit sounds). <Event .../>
    • event="..." - Triggering event. Possible values:
      • WarpReady, WarpUnready, WarpEngaged, WarpDisengaged
      • WarpLoop0 ... WarpLoop9
      • WarpSkip0 ... WarpSkip9
      • ASAPEngaged, ASAPDisengaged, ASAPDockingAvailable, ASAPDockingEngaged, ASAPDockingDisengaged - autopilot modes.
      • FlightComputerEnabled, FlightComputerDisabled - Flight mode
      • DockAvailable, DockUnavailable, DockFailed
      • JumpAvailable, JumpUnavailable, JumpFailed
      • Lock, MissileLock - lock warning
      • Eject - "Eject!" warning
    • soundfile="" - WAV file to use
    • looping="false" (bool) - whether it's looping
    • gain="" (float) - volume adjustment.


New gauges have been implemented into SVN as of revision 11767, explanation is required:

  • TCNT ==> Turret CoNTrol (OFF/ACTIVE/FAW (FireAtWill) )
  • GCNT ==> Governor CoNTrol (Maneuver vs. Travel mode)
  • ...

Description

This is the .cpt file, using the same name as per the directory name. FIXME INFORMATION ON STRUCTURE REQUIRED

The ".spr" file format

FIXME REDEFINE INTO EASY TO FOLLOW INSTRUCTIONS

Example

./cockpits/disabled-cockpit.cpt/blasterpower.spr

cockpit/blasterpower.png cockpit/blasterpower.png
.25 .09
0 -.5

Structure

imagename alphaname
scaleX scaleY
positionX positionY

Description

  • imagename - path to the image to be used (e.g ./cockpit/blasterpower.png ... this will search in ./textures/cockpit/ for the file blasterpower.png)
  • alphaname - This is the alpha map for the image. It must either be a greyscale .bmp, or a .png (where the png's alpha map is used), even if you are using the alpha-map from the first png, it must also be listed here as the source of the alphamap!
  • scaleX - Scales the image on the X-Axis (1 = Fullsize, 0.5 = Halfsize, 2 = Doublesize etc)
  • scaleY - Scales the image on the Y-Axis (see scaleX)
  • positionX - Start drawing the image on a relative position specified by positionX
  • positionY - Start drawing the image on a relative position specified by positionY

The last four options require some explanation on how Vega Strike 4.01 draws its sprites. First of all, you have to know that the resolution of the image is absolutely irrelevant, as Vega Strike works with relative coordinates and scaling, with (0,0) being the center of the screen. Imagine a picture of exactly one red pixel (1x1) in size, with scaleX=scaleY=1 ,positionX=positionY=0. The result is a red square, whose center is on the center of the screen. It fills the left, the right, the upper and the lower half of the screen. scaleX=scaleY=2 would make it exactly fullscreen. The same applies to positionX and positionY. PositonY=-1 would start drawing it on the lower half from the center of the screen, whereas PositionY=2 would completely draw it offscreen.

One note regarding negative values in scaleX and scaleY : Vega Strike flips the sprite on that axis, but in the case of gauges like Blasterpower will also start decreasing it flipped (not from the right, but from the left).

See also


arrow_left.png Editing Unit Files arrow_up.png HowTos Create a Cockpit in Wings3d arrow_right.png