Sign up Calendar Latest Topics
 
 
 


Reply
  Author   Comment   Page 1 of 4      1   2   3   4   Next
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #1 

Hi all -

I've been asked a number of times now about some of the modding tools and techniques that I use when creating mods for Artemis.  I'm going to create a FAQ that hopefully addresses most of them.  I'll consider this a pretty live document - if I miss something, please ask it in the comments!  I'll be able to refine the list from there.

Note - Almost all of the modding that happens are linked into two files - artemis.ini (found in the base Artemis folder, where the actual game executable resides) and vesselData.xml (found in the Artemis/dat folder).  When I refer to the .ini or vesselData, those are the files I'm referring to.  Please please please spend a little time looking through these files - they're laid out very plainly in most cases.

1)  How do I mod Artemis?
- This seems like a pretty open ended question, and it is.  I'll rephrase it so it's a little easier to suss out.

2)  What can I mod in Artemis?
There are a whole lot of things you can modify in Artemis and a few you can't:

Can modify:
Stats of ships in the game
Ships seen in the game
The floating wreck
Taunts
Sound FX
Music
Graphic UI (to a point)
Monster Meshes and Textures

Can modify with Mission Scripts:
Enemy and Friendly behavior
Monster Behavior (soon)
Actions when an anomaly is picked up

Can't modify:
Monsters statistics (speed, etc)
Anomalies
Layout of Graphic UI
Font (yet)

Some of these are easier to change than others.  The first question you need to answer for yourself is "What do I want to change?"

That can be anything from tweaking the power/speed of the guns to totally overhauling the look and feel of the game.  These things have a tendency to grow on you, so where it starts may not be where it ends up.

3) How do I change the stats of a ship in the game?
All the stats for all the ships (player, NPC or enemy) are contained in the vesselData.xml file.  It can be opened in a text editor (notepad) or in a specific xml editor (like editix or the like).  Spend a little time looking it over - many stats are pretty self explanatory, like turnrate, topspeed, and damage under the various beam ports.  For specifics, see below.

Some of the details are captured in artemis.ini file.

4) How do I change the model of a ship in game?
The ship needs to be in the .dxs file format, the native output of DeledCE.  DeledCE is a free 3d program designed for game models.  It has a pretty robust .obj file importer and a reasonably good .3ds file importer.  If you can get a particular 3d model into a .obj file, you can import into DeledCE and export as a .dxs file.  Once you've got your .dxs file and texture files, you can update vesselData.xml to point to that model and texture in the art portion of a vessel declaration.  For specifics, see below

5) How do I change the taunts?
The taunts are listed in the vesselData file at the top.  When you declare the player and enemy races, that's where you declare the taunts and descriptions.  Stock Artemis has 3 taunts, but so far as I can tell you can have more or less than that as you choose.  To modify either the taunt or the description, just change what's in between the quotes.

6) How do I change the sound effects (SFX)?
In the artemis.ini file there are quite a few SFX declared (about the last half of the file).  There are cues for the ships exploding, the beam sound, torpedoes launching, etc.  There are also close to 30 different UI interaction cues (the bleeps and bloops and such).  All of the FX are .wav files.  The .ini file has you to direct Artemis where to look for the file (relative to the base directory) and also the relative volume of said file.

7) How do I change the background music (BGM)?
All of the background music are in single channel .ogg files.  You can't redirect Artemis to look at different files like with Sound FX, so you'll have to actually replace the stock game files with your own, named the same.  I typically make a backup folder of all the files I'm planning on replacing, so it's easier to return to the stock game if desired.

8) How do I change the graphical user interface (GUI)?
Much like with the background music, all of the graphic files are designed into the game.  You'll have to replace each file with your own file, a .png file with alpha channel.  You can't change the positions of the various graphics, but you can change each graphic itself.  Again, having a backup folder is very useful here.  My Stock Backup folder (including BGM) is about 50 megabytes and ~200 files.  I haven't replaced the skyboxes, though, so that'd be another 40 megs and ~150 files.

9) How do I change the fonts?
At the moment, I don't know if there's an easy way to do so.  All the fonts are wrapped into .bff files, which are basically letter lookup tables in graphical form.  I haven't figured out how to open one yet, but once I do I'll be able to figure out how to replace the stock fonts with your own.

10) How do I change the names of things, like beams to phasers?
As far as I can tell, there's no way to do this.


__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #2 
CHANGING VESSEL STATS
To help, I'm going to list a stock Artemis vessel below: the Light Cruiser.

<vessel uniqueID="0" side="0" classname="Light Cruiser" broadType="player">
<art meshfile="dat/artemis.dxs" diffuseFile="dat/LightCruiser_Diffuse.png"
glowFile="dat/LightCruiser_Glow.png" specularFile="dat/LightCruiser_Specular.png" scale="0.2" pushRadius="150"/>
<internal_data file="dat/artemis.snt"/>
<shields front="80" back="80"/>
<performance turnrate="0.004" topspeed="0.6" shipefficiency="1.0" warpefficiency="1.0" jumpefficiency="1.0"/>
<beam_port x="-102.14" y="8.35" z="258.74" damage="1" playerdamage="12" arcwidth="0.4" cycletime="6.0" range="1000"/>
<beam_port x=" 102.14" y="8.35" z="258.74" damage="1" playerdamage="12" arcwidth="0.4" cycletime="6.0" range="1000"/>
<torpedo_tube x="0" y="8.35" z="258.74"/>
<torpedo_tube x="0" y="8.35" z="258.74"/>
<torpedo_storage type="trp" amount="8"/> <!-- Homing"-->
<torpedo_storage type="nuk" amount="2"/> <!-- LR Nuke-->
<torpedo_storage type="min" amount="6"/> <!-- Mine"-->
<torpedo_storage type="emp" amount="4"/> <!-- EMP"-->
<torpedo_storage type="shk" amount="4"/> <!-- Plasma Shock"-->
<torpedo_storage type="bea" amount="5"/> <!-- Beacon"-->
<torpedo_storage type="pro" amount="5"/> <!-- Probe"-->
<torpedo_storage type="tag" amount="5"/> <!-- Tag"-->
<engine_port x=" 82.93" y="5" z="-240.89"/>
<engine_port x="-82.93" y="5" z="-240.89"/>
<engine_port x="0" y="-9.22" z="-300"/>
<engine_port x="0" y="29.64" z="-300"/>
<long_desc text="TSN Cruiser^Standard long patrol vessel of the TSN.^2 forward beams^2 Torpedo tubes^Stores for 2 nukes, 8 homing, 6 mines, 4 ECM, 2 PShock."/>
</vessel>

 


We'll step through it block by block, explaining what each part does.

Vessel Block
uniqueID is the specific number that the ship in question has.  This number must be unique from all other ships in the file.  Fortunately, I've used uniqueID's up through the 9500's with no problem, so number your ships however makes sense to you.  There is only 1 caveat - the player ships must start at uniqueID 0 and go sequentially.  If you've got 17 player ships, then you'll have 0-16 in order. 

side is what race that ship belongs to.  Players are 0, Allied NPCs are 1, enemy races are whatever they're declared at the beginning.  classname is what identifies a ship after a science scan and can be used when calling out ships in a mission file. 

broadType is what defines that type of ship to Artemis.  There are a bunch of tags you can use - player, warship, small, fighter, science, cargo, carrier, and many others.  Check vesselData for examples [smile]

Player Fighters use the fighter tag in addition to the player tag.

Player ships that have fighter complements should use the carrier tag as well.

Art Block
The art block contains the information Artemis uses to put a render of the ship on the screen.  meshfile is the actual 3d model, must be in .dxs format and the file system is relative to the base Artemis folder.  You can point this to just about anywhere in subfolders - I usually put all the mod files in a subfolder to keep track of them easier. 

diffuseFile is the base texture file, it's what shows on the screen when the ambient light hits the model.

glowFile is the texture that shows when a part of the ship is shadowed.  It completely replaces diffuseFile, so if you want the ship to be more than a black shape try putting a very darkened version of the diffuseFile where it's not glowing. NOTE: the new Custom Color option is keyed off of Red values in the glowFile, which it boosts waaaaay up and then color shifts as you desire.  If you find your ship turning odd colors, try desaturating areas of the glowFile.

specularFile is the surface shinyness.  The file doesn't care about colors, just brightness.

scale tells Artemis how much to multiply the 3d file units to bring into Artemis.  Sometimes it's nice to have a large model for texturing and engineering displays but smaller in the game itself. 

pushRadius is the distance from the ship that other ships should be kept out of.  It mostly works [tongue]

Internal Data Block
The internal_data file is specific to player ships only.  This is the lines and dots in engineering where the different systems are located.  Use the shipEditor tool from the Artemis website to make one quickly, just make sure every system has at least 1 node!  

Shields Block
The shields block is pretty straightforward, and every ship has them, front and back.  Bases only have front shields (back="0") because there's only 1 shield facing.  Player controlled fighters have front, back, and playerplayer is used when a player is flying the fighter, front and back are used when the fighter is being used as an NPC (like through a mission script or as an enemy or ally).

Performance Block
The performance block has turnrate, topspeed, shipefficiency, warpefficiency, and jumpefficiency.  These should all be pretty self explanatory, and experiment to find what feels right to you.  I've used spreadsheets and reference materials for the TNG mod to keep everything relatively balanced, but the Gundam mod I'm working on is just sort of winged at the moment [tongue]  For reference, a turnrate=0.004 (the Artemis Light Cruiser) gives 10 °/second, or 36 seconds for a full turn, or 1.667 RPM (at standard engineering settings).  If you know how fast you want to turn in °/second, divide by 2500 to get turnrate

The efficiency settings are a direct multiplier on top of the energy usage defined in the .ini file.  Lower is better - shipefficiency="0.5" means your ship will use half the energy compared to other ships with efficiency of 1.  warpefficiency and jumpefficiency are multipliers for various types of drive systems, respectively.

Bases instead have a production coefficient - this number (relative to 1.0, ranges from 0.1 - 10.0) - this determines how fast they produce missiles and how many can be pulled into the game.  Artemis selects 4.0 points of bases, so if your base has more than 4.0 production speed, it'll never get pulled into a game (I think).

Beam Port Block
Each different beam on the ship needs a separate beam_port block.  The ship will go through the list, top to bottom of valid beams, when firing.  x y z are the locations on the model itself where the beam comes from (shipEditor is a good tool for finding locations, or you can eyeball it in DeledCE).  All combat ships (player, player fighter, friendly base, enemy, enemy fighter and enemy base) use this block.  Non-combat ships (NPC cargo, science, etc) ignore this block.

playerdamage is the damage done by a ship when controlled as a player.   

damage is the damage done by a ship when controlled as an NPC.  Keep in mind all NPC ships (enemy and friendly) scale their damage up to 10x by Level 10 difficulty.  When I have allied ships, I'll copy a player ship but divide all the playerdamage values by 10.

arcwidth is the fraction of a circle that particular beam covers.  Note - the arc centerline is drawn from 0 0 0 to the x y z of the beam, so it may not point in the direction you'd expect! 

cycletime is how long it takes to reload the beam (in seconds, per beam - each beam can be different). 

range is how far it'll shoot.

Torpedo Tube Block
torpedo_tube is similar to beam_port except that you don't define any torpedo damages here, just the location.  I haven't seen the location actually make any difference on where the torpedoes come from, but it's there.  You can't have more than 6 torpedo tubes, though, and only on player ships. 

Friendly Bases can have torpedo_station_port blocks too, but you need to specify damage, cycletime and range as well.

Player Fighters do not use this block - just the storage block.

Torpedo Storage Block
torpedo_storage is also unique to player ships - there are now 5 types of torpedoes and 3 types of probes/beacons, and these blocks define how many a particular type of ship can carry.

Engine Block
engine_port blocks define where glowy bits come out when you move.  Leave them out if you don't want a particle trail from the ship.


Carrier Block
All ships can now be carriers!  As mentioned in the Vessel Block, any carrier type ship should have the carrier tag in their broadtype.  Additionally, there's a new carrierload block with the baycount value - how many fighter types it can launch. The game now supports multiple types of fighters and shuttles.

Non Player Blocks

NPC ships also have a few unique blocks - impulse_point and maneuver_point.  These blocks define some parts you should be able to shoot in manual targeting mode.

fleet_ai commonality goes from 0-100.  This is the percent probability of that particular ship showing up in game.  

All ships can also have drone_port blocks - very similar to the friendly base torpedo_station_port blocks.  Doesn't work for player controlled ships.

Long Descriptive Text Block
long_desc text - this information is the description that comes up in a science scan.  It shouldn't go on too long, since the secondary information from a second scan can overlap it.  Player ships display this info in the ship customization screen.  The ^ character denotes a line break.

__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #3 
Declaring races in vesselData

OK, so let's talk setting up races in vesselData.  In 2.4, there are several ways to set up the different player, friendly, and enemy races, and it all gets set up at the top of the file.
 
Each race get's it's own hullRaceID number.  The first player race must be hullRaceID="0", the first friendly race should be hullRaceID="1", and the rest can be pretty arbitrary, I've found, as long as they're unique. 

It doesn't particularly matter what you put in the name="" tag, but every ship from that side will get that description (i.e. Starfleet Miranda, Starfleet Runabout, Colonial Battlestar, Colonial Raptor, Imperial Star Destroyer, Imperial TIE Fighter, etc).  name tags do not need to be unique - you could have 7 races that all have the same name but different key tags, so they're indistinguishable to Science as different races.

Now, in 2.7.0, if you put Pirate as part of the race name, they actually act differently in the game.  It tells the game that you gain energy from surrendered enemies and that you need to destroy an incoming enemy before you can dock.  It's not part of a key, but in the name itself.

There are 3 basic keys for determining how the game views the particular race: player, friendly, enemy.  player means you can play as that ship, so anything you want to fly needs to be in a player race.  friendly means they'll get loaded as allies, you can reload at their bases, etc.  enemy is just that, they're the ships that get loaded to blow up [smile]
 
They aren't mutually exclusive, so you could set up a race as keys="player friendly" and the game will allow the player to select any of the ships defined, and load those same ships as allies during invasion mode.  You could do the same with keys="player enemy standard" and you can now play as those ships and the game will load those same ships as enemies.  Technically you could have keys="player friendly enemy standard" and the game will let you play as that ship, load them as allied ships and load them as enemies.  Or you could have keys="friendly enemy standard" and some will be allies and some enemies.  You don't have to overload the keys if you don't want to - I did for the TNG mod for specific reasons, but the stock Artemis vesselData file doesn't.
 
When you tag a race as enemy, you'll need to add one of three additional tags to it: standard, support, lonerstandard means they come in fleets, always show up in maps, and never get special abilities or anything.  They can use drones, but Artemis will crash if you have a standard race with carriersupport means they only come in with other fleets, but also get to have fighters.  Don't get special abilities.  loner means they don't show up in fleets (i.e. alone), and have a couple more options.  loner types can be biomech or hasspecials - the first makes them like the BioMechs from the stock game (eating asteroids and attacking all carbon based life forms in the sector when angered), the second gives them random special abilities like High Speed Turn, Tractor Beams, Cloak and Warp.  You can't control which specials they get in Invasion Mode, though.  Note - the game requires at least one hasspecials race to be defined and at least one biomech race to be defined.
 
You can also add the tag whalehater or whalelover - whalehater means they'll go out of their way to shoot down space whales, and whalelover means they'll go after someone who kills a space whale with extreme prejudice, including other enemy ships.
 
When you define a player race in 2.4.0, all of the ships defined must either be player ships or player fighter ships - you can't include a non-player ship of any kind, whether an allied ship or space station or anything, even if they're a player friendly race; Artemis will choke and crash.  You can (and should) define your player friendly ships as player small warship (or player large warship or whatever) if you want them to be allied ships, which is the only real reason to have a player friendly race, to be fair. Additionally, you must have your player ships all in sequential order in vesselData, or else Artemis will choke and crash when cycling through.  That means if you've got multiple player races defined, then the first race will have uniqueID 0-20 and the next race needs to have uniqueID 21-37 (or however many you have).  Note - it appears that the game can handle more than 2 player races defined.

Additionally, there is one player specific key you can add - jumpmaster.  This is only valid for player ships, and gives some bonus abilities when you select Jump Drive for your ship type; namely, reduced jump cooldown and the Combat Jump.  Again, this is only applicable to player ships for now.

Here's the TNG race setup for reference, taunts excised for brevity:

 
<hullRaceID="0"name="Starfleet"keys="player friendly">
 
<hullRaceID="1"name="Starfleet"keys="friendly"> 
 
<hullRaceID="2"name="Klingon"keys="player enemy standard"> 

<hullRaceID="3"name="Romulan"keys="enemy standard"> 
 
<hullRaceID="4"name="Dominion"keys="enemy support whalehater"> 
 
<hullRaceID="5"name="Cardassian"keys="enemy standard whalelover"> 
 
<hullRaceID="6"name="Hostile"keys="enemy loner hasspecials"> 
 
<hullRaceID="7"name="Terran_Empire"keys="enemy standard whalehater"> 
 
<hullRaceID="55"name="BioMech"keys="enemy loner biomech"> 
 
<hullRaceID="99"name="Borg"keys="enemy loner hasspecials"> 
 
 

__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #4 
[RESERVED] I'll edit this to include sub topics.
__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
Arrew

Avatar / Picture

Registered:
Posts: 2,737
Reply with quote  #5 
This a cool idea! Would love to see a YouTube vid of you putting this into action.

Thanks for this. [smile]
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #6 
Updated main FAQ and discussed more in depth the ship stats.
__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
CptHermi

Avatar / Picture

Registered:
Posts: 184
Reply with quote  #7 
Really cool post!! Thank you! This will help a lot!
__________________
http://www.artemistools.com
Our Crew's HP --> http://www.artemistools.com/site.php?id=8
My Blog --> http://www.hotcursors.de/wordpress/category/games/artemis-sbs/
Youtube Artemis Playlist --> http://www.youtube.com/playlist?list=PLSG6zIL49WVr1AsHhf06O9OEu6dhSVWco
Timezone: GMT+2
Arrew

Avatar / Picture

Registered:
Posts: 2,737
Reply with quote  #8 
I think any ship can have drones, not just support. I've given them to Kraliens cruisers. But I'm only starting to mess with the vessel data.

Thanks for this. I can't wait to try out adding in new models [smile]

Also how did you guys change the logo and get transparencies?
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #9 
Ok great - I'd had problems getting drones to work on normal ships, but I'll try again.  EDIT - you're right, it totally works.  I was probably struggling with a different problem at the time [tongue]

The logo is a file called logo_512.png. Open it in your favorite image editor (Paint.net, GIMP, Photoshop, etc.). Replace it with the logo image of your choice. Just keep the file 256x512 pixels.

The .png file supports what's called the alpha channel - it's what defines transparency. Just deleting the color in various regions creates a transparent area. That's how we do logos, overlays, all kinds of stuff. You can't use MS Paint for this, but paint.net and GIMP are free programs that work.

__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #10 
Interestingly, you can add drone ports to non-base friendly ships.  They'll even deploy drones, although they're really more like mines - the drones don't move at all once they're fired [tongue]
__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
Arrew

Avatar / Picture

Registered:
Posts: 2,737
Reply with quote  #11 
What about adding drones to a player ship?
Just curious [biggrin]. .
Mike Substelny

Avatar / Picture

Administrator
Registered:
Posts: 2,049
Reply with quote  #12 
In a mission script you can specify actions to happen when players are close to or actually absorb an anomaly. You can also change enemy and friendly ship behavior by changing the brain stacks. You are supposed to be able to change monster behavior by changing their brain stacks but I haven't done this yet.
__________________
"The Admiralty had demanded six ships; the economists offered four; and we finally compromised on eight."
- Winston Churchill
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #13 
Good point Mike - I'll update the FAQ to clarify that.
__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
MarkBell

Avatar / Picture

Administrator
Registered:
Posts: 1,837
Reply with quote  #14 
A few clarifications -

You can't modify the monsters themselves.  You can probably alter their behavior, but you can't replace a piranha with say a funny shaped asteroid or anything.

You can't modify the anomalies themselves - the shapes and types are fixed.

__________________
Note - this is in no way intended to be an official position of Thom or Artemis, as I am not an official representative of the creator or game.
dwainedwibly

Registered:
Posts: 44
Reply with quote  #15 
How is cycle time done? Is it in seconds?
Previous Topic | Next Topic
Print
Reply

Quick Navigation:

Easily create a Forum Website with Website Toolbox.