Вы находитесь на странице: 1из 227

Westworlds Big Book of Modding

By Westworld of APOC Entertainment.


Table of contents: Introductionpg 1 Chapter 1 Things we need before we startpg 1 Chapter 2 Our Modding Directorypg 2 Chapter 3 Editing our odf files Section 1 Editing a ship file .pg 5 Section 2 Adding a new weapon to a ship...pg 7 Section 3 Adding a new ship to the game.pg 9 Chapter 4 Down and dirty with odfs, THE odf command list..pg 14 Chapter 5 Classlabels...pg 66 Chapter 6 Weapons making Section 1 Standard Weaponspg 72 Section 2 Special Weaponspg 80 Chapter 7 Adding a New Fully playable Race to Armada 2pg 84 Chapter 8 Buttons and Wire Frames.pg 90 Section 1 Making a Button....pg 91 Section 2 Making a Wire Frame...pg 96 Chapter 9 Sprites files and sprite texture..pg 106 Chapter10 Working with AI Files By Kleotolpg 110 Chapter 11 The basic of modeling for Armada & Armada 2pg 118 Getting to know 3D Max...pg 118 What is a mesh?.pg 131 Making a Basic Model...pg 132

Making the Armada Model Hierarchypg 160 Chapter 12 The Basics of Texturing...pg 180 Light & Bump Mapspg 197 Chapter 13 Modelling & Texturing with Milkshapepg 203 Chapter 14 Game balancepg 208 Purpose of this Tutorial...pg 208 Chapter 15 Node, Emitter & Texture Animation names .pg 209 Light Sprite Node Names.pg 209 Damage Sprite Node Namespg 209 Emitter Node Names....pg 210 Texture Animations Names.pg 212 Weapons Sprite & Node Names..pg 213 Glossary of terms used in this tutorial...pg 218 Credits...pg 220 Special Thanks.........pg 221 Contact Info..pg 222 Site linkspg 222 Legal Mumbo Jumbo...pg 223 Disclaimer.pg 223 Introduction:
So you want to learn to mod? Ok here is something to get you started along, this will also be followed by an Advanced Modding Tutorial in the near future, but this is the basics to get you started, once you have mastered these you can try out the Advanced tutorial. This will cover modding for Star Trek Armada 1 and 2, and it will be noted how to do each thing, and whether there is a difference in the process for 1 or 2. But what is modding? Mod is short for Modification and Modding is the process of making a MOD. A mod is a modification to the game, it can be as simple as changing a single ship or as complicated as converting the game into virtually a new game. It all depends on how much time and effort you decide to apply to it and what you want to be different about the game. Hopefully this Tutorial will make it possible for you to do virtually any modification you wish to the games Armada 1 or Armada 2.

Chapter 1
Things you need Before we start:

Ok before we get into modding you will need several tools to help you as we progress through this tutorial. Now exactly what you need depends on what you plan on editing, so you may not need everything or you may need them all. 1. A file editor for the text based files, there are many things you can use for this: Notepad will work but I do not recommend it too highly, Wordpad will also work and is better to use than Notepad. Others are available too and have many more features than either of the afore mentioned windows standard editors, personally I use a program called EF Commander, which is a small but very powerful program that has many useful features that help when modding, like file comparing, viewing and editing files, copying and moving files from one location to another, Hex editing etc. Basically it is like having Windows Explorer, Wordpad, and a hex editor all in one with even more features added in. I use the full registered version of EF Commander but you can obtain a shareware version to try out from their web site at http://www.efsoftware.com/. It takes some getting used to but saves a lot of time once you do. Kleotols input: If I may add, a very good alternative and personal choice is the EditPad Lite Handy text editor that supports many formats, doesnt need to be associated with an extension in order to open it, allows multiple documents to be opened at once. Switching between documents is one click away. It also features a powerful multi-document search!! This alone makes it a worthy tool! Most of all, its free! For more information on this software, http://www.editpadlite.com/ 2. A graphics editor for editing the tga and bmp files. I recommend either Paintshop Pro 7 or Adobe Photoshop 6. For this tutorial I will mostly use Paintshop Pro because it is easier for the beginner to get used to, and I have more experience with it and it does everything we need it to do. 3. The Storm3D Tool for Armada 1 and/or Storm3D Viewer for Armada 2 depending on which one you are modding. 4. 3D Studio Max version 3.1 or 4.0 or 4.2 If you plan on making totally new ships for the game. Now you can use Milkshape 3D to make the meshes for the ships but I do not used it personally. I make all ships and stations from start to finich with 3D Max 4.2 but I do have 3.1 also and many features are the same except 4.0 & 4.2 have some extra features 5. The Sod Exporter plugin for 3d Studio Max, For the version of 3D Max you have and the version of the game you are modding , If you plan on making new ships for the game. 6. The odf package for Armada 1 If you are modding A1 you will need the odf files for it which you can download for free. I will give some suggested links for these tools and files at the bottom of this tutorial. 7. Kleotols input: A picture viewer with the possibility to show the pictures in a folder as thumbnails will be proved a valuable asset! I used ACDsee for the job. Its not long I had to re-format my HD. But lost the CD containing ACDsee so I do not have installed right now. I can tell you this. My moding life is miserable without it! Westworlds comment: EF Commander does this also.

8. A temporary directory on your hard drive: in this tutorial we will be making all our modded files in a temporary directory. We do this for several reasons: First to make troubleshooting easier, second to keep all our files in one place for ease of distribution when we are done, third to find out files easier, and also to keep us from accidentally editing original game files, we dont want to do that at this stage. This is also the place to keep backups of original game files in case we mess up somewhere and need to restore the game files to their original state. We will go into the setup of this temporary in the next chapter.

Chapter 2
Our modding directory
Ok now on to how to setup our modding directory and preparing the files for editing. . 1. Ok start by creating a new directory (folder) somewhere on your drive, this can be under the Armada or Armada 2 directory or in your root directory, anywhere it is easy for you to find, it can be named anything you want it to but for the purposes of this tutorial we will name it MODDING and it will be referred to as the modding directory for the remainder of this tutorial. 2. Now we need to setup a subdirectory structure under the modding directory, these directories will be under the main MODDING directory and will be for all our files and backup files and will have the same directory structure as the game we are modding, refer to the appropriate figure below depending on which game you are modding A1 or A2 ( Armada 1 will be referred to as A1 from now on and Armada 2 as A2) the \ indicates that the directory is a sub directory, an indentation shows that it is a subdirectory of the one listed above it for example in the A2 structure below the directory rgb is a subdirectory of textures and Textures is a subdirectory of the main modding directory. As long as the directory structure is correct the order of them is not important when making them, they can be organized alphabetically though your arrange icons menu when you right click on the directory, or if you use EF Commander it should be automatically arranged that way. The directory structure should be the same under the backup directory as it is in the modding directory except that the backup directory will not have a backups subdirectory. Also depending on what you want to mod you may not need all the directories but I am adding them here for the sake of argument. Any files you plan on editing, put a copy of the file in the corresponding directory under the BACKUPS subdirectory Then put a copy in the corresponding directory under the modding directory. This may seem like a waste of space but please believe me that it will save you a lot of trouble later if you have any problems with the modded files you make. I would recommend putting copies of all the odf files in both the corresponding modding and backups directories and I will assume you have done this from here on, I will refer to file names and such, and unless otherwise stated, I will be referring to the files you have in your modding directory, not the ones in the game directory or the ones in the backup directory. We will not touch the files in the backup directory at all unless we need to use them to restore the game to the premodded condition. Once you put the files you want to mod and have put a backup copy into the backup

directory, you can go to the modding directory and select all the files that you have put there and right click (windows explorer) on the selected files and choose propreties then uncheck the read only box, this will make the files savable once you edit them. You may have to do this in several directories to get all the files to be writable. If you use EF Commander select the files by hitting enter to open a directory and hitting the + key on your number pad, this will select all files in the directory. Then use your mouse to pick the files menu from the top and choose file attributes uncheck the read only box and hit enter or click ok.

Directory structure diagram:


FIGURE 1 For A1: Modding \addon \bitmaps \textures \rgb \sprites \AI \AIPs \SOD \odf files \other \ships \special_weapons \stations \techtree \weapons \phasers \photons \pulse \BACKUPS \addon \bitmaps \textures \rgb \sprites \AI \AIPs \SOD \odf files \other \ships \special_weapons FIGURE 2 For A2: Modding \odf \commands \other \ships \special_weapons \stations \weapons \phasers \photons \pulse \bitmaps \textures \rgb \techtree \sprites \AI \AIPs \SOD \BACKUPS \techtree \odf \commands \other \ships \special_weapons \stations \weapons \phasers \photons \pulse \bitmaps

\stations \techtree \weapons \phasers \photons \pulse

\textures \rgb \sprites \AI \AIPs \SOD

Kleotols input: Personally I use a different structure to the one mentioned above. Still, my structure uses backups for the original files, backups for the modded files (! It can really save you a lot of time if something goes wrong) and a temp/testing folder that I use to store the files I create/edit until I test them in the game and I am sure I want to use them. Once ready I move them to the main mods directory and to the modded backups directory I will not go on and analyze it here. This is not the important issue. What is important is that organization make the difference in the end! It really wont mater if you use Wests structure or my structure or if you come up with a structure of your own, AS LONG AS YOU DO USE A WELL ORGANIZED STRUCTURE!! As West said, it may seem like a terrible waste of space, but IT WILL save your work if something goes wrong. And do not think that nothing will ever go wrong! Something will go wrong eventually! And the difference between losing work of months or not, are those Backup folders!

Chapter 3
Editing our odf files. Section 1 Editing a ship file
Alright now we are all setup to start some modding we now need to edit some odf files, odf means Object Definition File and has all the statistics and parameters for all objects in the game. We will start simple to get the hang of things. We will make the Defiant class starship a little more durable and more expensive and time consuming to build. I will explain the process of opening and editing file here and assume that you know how to do it after that. 1. For Windows Explorer and Wordpad users, go to your modding directory and open the folder odf files (for A1) or odf (for A2) open the subdirectory named ships. Find the file named fdestroy.odf (this is the file for the Defiant class starship) double click on it or right click on it and select open with, this will bring up the open with dialog box. Check the little box that says: Always use this program to open these files then Select Wordpad (wordpad because it works better than notepad). The file will open and you will see various lines of text. 2. For EF Commander users, it is the same as explorer and wordpad but you do not need to choose open with simply hit the F4 key to open a file for editing while the file is highlighted. 3. Now that you have the file open you will seem many thing in the file, some are self explanatory and some are more confusing. We will go into detail about many

more of the parameters as we go along but for now we are concerned with the lines toward the top, specifically these lines: (This is the A2 version of the file the A1 version is very similar but has a few less parameters)
//Amount of time required to build ship buildTime = 12.0 //Number of officers required to build this ship officerCost = 7 //Number of crew required to build ship & Starting crew crewCost = 80 //Dilithium Cost to build dilithiumCost = 140 //Metal Cost to build metalCost = 0 //Max Shield Strength & Begining Shield Strength <500 maxHealth = 100 // Hitpoints shieldGeneratorHitPoints = 20 enginesHitPoints = 20 weaponsHitPoints = 20 lifeSupportHitPoints = 20 sensorsHitPoints = 20 //Rate at which shield recharges (points per second... we think) shieldRate = 0.75

4. Ok now what we are trying to do is make the Defiant last longer in battle, so we will change some of these parameters to accomplish that. Change the number after the statement
maxHealth = 100

to
maxHealth = 200

This will double the strength of the shields and armor on all Defiant class ships that you build. Now if you want you can also increase the line that says:
shieldRate = 0.75 to shieldRate = 1.5

This will double the rate at which the shields recharge, making the shields return to full strength more rapidly when not under fire and help them stay up a bit longer while it is under fire. 5. Now since we made the ship stronger we should also make it more expensive to compensate for that. Game balance is an important factor when making mods, just making one super strong ship is cool but it also makes the balance of the game all

messed up. We will discuss game balance later on, but keep it in mind when making a mod. 6. So to make it take longer to build and cost more raw materials we will look at these lines:
//Amount of time required to build ship buildTime = 12.0 //Dilithium Cost to build dilithiumCost = 140 //Metal Cost to build metalCost = 0

Ok now change these lines to:


//Amount of time required to build ship buildTime = 18.0 //Dilithium Cost to build dilithiumCost = 190 //Metal Cost to build metalCost = 10

Now the Defiant will take 6 more seconds to build and cost 50 more Dilithium as well as taking 10 metal to build (A1 Does not use metal, so you can either make the Dilithium cost higher or the build time higher instead, otherwise the procedure is the same) 7. You are done changing the file for this section of the tutorial, so save the file and exit the editor. 8. To use the New file in the game you will have to place it in the correct directory for the game you are using. For A1 all modded odf files go in the /addon directory. For A2 the files co in the appropriate directory under the odf directory, for example our new defiant file would go in the /odf/ships/ directory. 9. Now for testing the new file, start the game, and choose Instant Action for the game type. (for A1 this is under multiplayer) now choose Federation as your race and any other computer controlled races you want and start the game. Build the defiant and go fight something, you will notice it takes longer to build and more resources but that it lasts a bit longer in battle. 10. Congratulations you have made your first mod !! You are now ready to move on to the next section.

Section 2 Adding a new weapon to a ship.


Well you have made the Defiants shields and hull stronger so now lets make the Akira have more weapons. Yeah now we are getting to the good stuff MORE WEAPONS . 1. Alright, now open the fcruise1.odf , this is the file for the Akira class starship. 2. scroll down til you see these lines:
//ART PARAMETERS & WEAPON NAMES // Phaser

weapon1 = "fc1phas" weaponHardpoints1 = "hp01" "hp02" "hp03" "hp04" "hp05" // Chain Reaction Pulsar weapon2 = "gchainp" weaponHardpoints2 = "hp29" // Photon torpedos weapon3 = "fc1phot" weaponHardpoints3 = "hp26" "hp28" "hp27" "hp28"

3. These are the weapons the Akira has, Phasers, Photons, and the Chain Reaction Pulsar, notice how I used the plural for the Phasers and Photons but not for the CRP? There is a reason for this, the HPs, Although I will explain the hps futher later I will briefly explain them now. An hp is a HARDPOINT, these are the places which the weapon fires from, just like on real combat craft, every weapon needs to have a place that it fires from, we call this a hardpoint. Now the Phasers and Photons have multiple hardpoints, meaning they fire from various points on the ship even though it is the same weapon. But the CRP only fires from one location on the ship. We will got into that more later, for now suffice it to say that all weapons need hardpoints. 4. Ok so now what we are going to do is add a pulse phaser Like the Defiants to the Akira. We are using a pulse phaser not because of its accuracy to the canon akira but so it will be easy for you to see that the weapon shows up in the game, since of we added just a standard phaser it would be harder to notice on the ship because it already has that weapon. 5. It is important to pay close attention to the next few steps. 6. Under the line:
// Photon torpedos weapon3 = "fc1phot" weaponHardpoints3 = "hp26" "hp28" "hp27" "hp28"

Add this line:


// Pulse Phaser weapon4 = "dpulse" weaponHardpoints4 = "hp29"

7. Take notice that the new weapon has several important parts to pay attention too. a. It has the weapon number changed, as in :
weapon4

This tells the game that it is the 4th weapon on this ship and that the name of the 4th weapon follows this statement, all weapon numbers must be in order and must be sequential as in: weapon1 weapon2 weapon3

b. It has the weapon hardpoint changed. This number matches the number of the weapon, telling the game that the hardpoints of the 4th weapon follow this statement c. It has the hardpoint name listed after the = in the weaponHardpoint statement, as we already know every weapon needs to have a place to fire from, this is where the game finds out what this place is named, In this case it is named hp29. The hardpoints must be in quotes or the game will crash, weapon hardpoints are always named in this format: hpxx where the xx is a number. The hardpoints are actual physical points on the ship and must exist in on the ship for you to use them, so you cannot just put a random number there, you must either use one that another weapon uses or use your Storm3D to find the location of and name of the hardpoint you wish to use. 8. Spelling and letter case are VERY important here and in most modding. As you can see here:
weaponHardpoints4 = "hp29"

Although the w in weapon is not a capitol letter, the H in Hardpoint is. This is very important so always double check the numbering of weapons and the spelling and the case, because any one of those three things can cause your weapons to not work or your game to crash. 9. Ok you are done, save and exit , copy your newly modded fcruise1.odf to the appropriate directory like we did with the defiant and test it like we did the defiant. You should now see a pulse phaser coming from the front center part of the Akira, when it attacks. You have completed another section and are ready for the next section As a side note about adding weapons you might be tempted to add tons of weapons to a ship, now not only will this seriously effect game balance, but there are limits to how many weapons each ship size can have, so basically you cannot have 20 weapons on a scout ship. Kleotols input: Apart from what is mentioned above, you must know that each weapon requires a good amount of video memory in order to be manipulated by the game. So remember. Each time you add a weapon you are slowing the game down! By tiny fragments I admit, never the less, try to imagine this. 10 phasers and 10 torpedoes on a ship type and 100 of those ships flying around the map. Imagine what will happen if they will be engaged in combat and fire all those weapons simultaneously! Huge projects have been re-compiled from scratch because of this!

Section 3 Adding a new ship to the game.


Now that we have done some basic editing of ships such as changing the strength and adding weapons we will move on to how to add a new ship to the game and make it buildable from a shipyard. The process for A1 and A2 is the almost identical so we will use A2 and the Federation ship Incursion for A2, you can also do this with the Fed ship

Galaxy in A1 just replace the in name fincursion.odf with fgalaxy.odf wherever I refer to it in this section. Also for the galaxy and A1 you do not need to edit the ship file at all so you can skip to step 10 and continue from there. 1. Now since the Incursion in A2 is considered what we call a hero ship, we have to edit the odf to remove some things and add some others. Open the file fincursion.odf. 2. If you look you will see that there are lines that define the ship as a hero and as a unique ship, we need to change that so it will be usable as a standard ship in the game. 3. Remove the following lines from the ships odf file by highlighting them and deleting them:
//This ship is a hero. isHero = 1 //Ship label provided because this is a unique ship. label = "USS Incursion"

These lines tell the game that this ship is a special ship. 4. Also if You look closely you will see that this ships file dopes not list who can build it, like the other ships did and it has no cost to it, the ship has no parameters for metal cost, crew cost, dilithium etc. so in order to make it buildable we must add these in there. We will add costs like these to the ship: //Race which can build ship & starting race of ship race = "federation" //Amount of time required to build ship buildTime = 30.0 //Number of officers required to build this ship officerCost = 7 //Number of crew required to build ship & Starting crew crewCost = 95 //Dilithium Cost to build dilithiumCost = 340 //Metal Cost to build metalCost = 40 So add the above lines to the ships odf file into the space you deleted the hero ship lines from. 5. Now if you want to you can leave the ships maxHealth as it is but the ship is very strong that way is you want to you can edit that like you did with the defiant or you can leave it alone.

6. you will also see that the systems hitpoints are rather high: shieldGeneratorHitPoints = 300 enginesHitPoints = 300 weaponsHitPoints = 100 lifeSupportHitPoints = 200 sensorsHitPoints = 100 These numbers determine how much damage each ship system can take before becoming disabled. The numbers that are here are higher than most fed ships as you can see by looking at the Akira we edited earlier. Its numbers were:
shieldGeneratorHitPoints = 75 enginesHitPoints = 55 weaponsHitPoints = 55 lifeSupportHitPoints = 55 sensorsHitPoints = 55

So if you want you can change these also or you can leave them alone that is up to you. 7. There are several other parameters that are not in this file but are in others however these are referred to through a command you can see at the top of the file called: #include fdestroy.odf Now since we have come to mention this command I will explain its purpose. The #include command does just what it sounds like, it includes information from another file into the file with the include command. This is used extensively throughout the game files to help reduce the size of the files. Using include makes it so that things that are common between files can all be put in one file. It is like a pyramid, the file at the top can have (for example) a specific set of weapons for a ship, but if all other things about that ship are the same as the defiant, you use the command #include fdestroy.odf in the first file then if any parameters or specifications that are not present there, the game will look in the fdestroy.odf for those specs or parameters. As we go along you will understand better (If you find that explanation confusing) because it will become more apparent when we get to weapons editing. 8. You may also want to add some more names to the file or all the ships of this type will be called the USS Incursion, you can copy and paste names from another ship file in there if you want or make up your own, but make sure all names have quotes around each individual name or the odf file will not work. 9. Save the ship file and exit. 10. We have the ship ready but now we need to have a place to build it from So we need to add it to a shipyard. Since this is a relatively advanced ship, I will add it to the Advanced shipyard for the Federation. Open the file fyard2.odf, and scroll down about halfway through the file you will see lines similar to these:
//Construction Parameters buildItem0 = "ffrigate" buildItem1 = "fgalaxy" buildItem2 = "fspecial" buildItem3 = "fbattle"

11. This is from the A2 Advanced shipyard, In A1 they will be slightly different because they will not have the all 4 of these lines but only 2. SIDE NOTE :

Lines that have the // in front of them are what is called commented out this means the game ignores them and they are only there for reference purposes. 12. The lines that start with buildItem = are the build list lines, they tell the game what things this unit or station can construct 13. So if we are adding the Incursion to the buildable units we do it like this:
//Construction Parameters buildItem0 = "ffrigate" buildItem1 = "fgalaxy" buildItem2 = "fspecial" buildItem3 = "fbattle" buildItem4 = fincursion

14. Adding the galaxy class to A1 would be like this:


//Construction Parameters //Construction Parameters buildItem0 = "fspecial" buildItem1 = "fbattle" buildItem2 = fgalaxy

15. You will notice in both examples we add the ship to the next line and use the next incremental number: the incursion is buildItem4 and the galaxy is buildItem2. this is similar to the way weapons are done, use the next number available as the number for the new item. Also similar to the way weapons are done the buildItem has a lower case for the first word and a capitol I for Item, again this is case sensitive and is supposed to be this way, it is not a typo. 16. Ok now save and exit the shipyard file. 17. Next we need to tell the game that the ship is there by adding it to the technology tree. This is in the techtree directory for A2 and for A1 it is in the techtree directory of the odf package that you downloaded and should now be in the techtree directory of your modding directory. Once edited, in A1 this file will go in the addon directory like the odfs do. In A2 the file will do in the techtree directory in the Armada 2 main directory. 18. There are several tech tree files for different tech setups but we will use the tech1.tt file for this section, you can use the same process to add it to any other tech tree you want to later. 19. Alright go to your tech tree directory and open the file tech1.tt. There you will see a listing of odf files, In A1 they are just listed but in A2 they are nicely organized into sections for stations and ships and weapons but they are basically the same between both games. We will talk about the A2 tech tree here because it is separated into sections, in the A1 version it doesnt matter where you put the lines we will be adding but in A2 although it also does not matter where you put them, we will keep it organized since it already is neatly setup. 20. Find the section labeled Federation Ships, it is at the top of the file. As the bottom line of this section add the line:
fincursion.odf 1 fresear.odf // Incursion

21. This tells the game that the odf fincursion.odf needs one thing to be used, the one thing is the odf fresear.odf which is the Federation basic research center. So once

the Basic research station is completed building, the Incursion Class ship will be available to build. 22. For the galaxy Class in A1 it would be like so:
fgalaxy.odf 1 fresear.odf

The same is true here, it needs the basic research station before it can be built. 23. now for either of these you could make it require nothing else by making the line read like this:
fincursion.odf 0 or fgalaxy.odf 0

24, then it would be available to build as soon as you finished building the shipyard that builds the ship. 24. For the Galaxy in A1 you are done with the tech tree, and can save and close the file. Skip to step 27. 25. Alright Now this ship is buildable but there are a couple things missing. For A1 and the galaxy, there is no button yet, refer to the Making buttons section of the tutorial about how to make a new button. 26. For the Incursion we have no button AND we have not added the special weapon that the Incursion has to the tech tree yet so go to the Federation special weapon section of the tech tree and add this line:
ghologen.odf 0

this makes the holographic generator available as soon as the Incursion is built. 27. Now we have to add a button for the ship to the gui_global.spr file, We will assume you have the button made and it is called gbfinc.tga. Refer to the making buttons section of the tutotial for how to make a button. 28. Open the file gui_global.spr, it is in your sprites directory. 29. Page down til you see the list of federation ships and stations, they will look like this:
@reference=64 b_fmining b_fsensor b_fyard b_fbase b_fconst b_ffreight gbfmining gbfsensor gbfyard gbfbase gbfconst gbffreight 0 0 0 0 0 0 0 0 0 0 0 0 64 64 64 64 64 64 64 64 64 64 64 64

Make sure you add this new line under the @reference=64 section of this area of the file. The new line is as follows:
b_fincursion gbfinc 0 0 64 64

Assuming that your button is called gbfgalax.tga for the Galaxy and A1 it is:
b_fgalaxy gbgalax 0 0 64 64

For the incursion you do not need a button for the special weapon because it is already in the game, and both of these ships also have wire frames so you do not need to add them, but for more information on wireframes, see the wireframes section of the tutorial. I should make a mention to the Admiral Logs bitmaps for A2. In the example above they are not needed since the bitmaps are already present, but in a really new ship, they will have to be included. So what you need for this is a picture of the ship that is 220 pixels wide, the height does not matter. This file should be in Windows bitmap format (BMP) and should be named the same as the ODF file of the ship it represents. This BMP file goes in the \bitmaps\AdmiralsLog\ShipImages\ directory under the main Armada 2 directory.. You are Now done and have a new ship to play with in the game and you are ready for the next lesson.

Chapter 4
Down and dirty with odfs
Now that we have the hang of basic editing of the odfs, lets take an in depth look at what all the commands mean. This will include all commands from A1 and A2, and the best explanation I can give of them all Some will be A2 Only commands and that will be noted where applicable. Key: Type W = weapons command SH = ship command M= map object command P=Physics command C=command for commands SW= Special weapon command O=other miscellaneous command ST = station command

Ship and Station commands


Command #include Description Makes the game include any parameters that are not already included in the current file, from another file, many weapons use this so that they can have a different name and sprite but have the same damage and re-fire rates etc Names the race that can build the station or ship Turns the animation in a Sod file on when the unit is constructed, 1 means play once then stop, 2 means play looping Specifies the unit name. Specifies the short tooltip that appears Type Game O, ST, A1 , A2 SH, W, SW, M, P

race = animation =

SH, ST A1 A2 SH, ST A1 A2 SH.ST A1,A2 SH,ST, A1,A2

unitName = tooltip =

verboseTooltip =

recyclesInPlace = 1

buildTime = officerCost = biomatterCost = crewCost = dilithiumCost = metalCost = latinumCost = maxHealth = shieldGeneratorHitPoints =

when the mouse is passed over the unit. The extended tooltip that shows up when the unit is selected or the mouse is held over the unit for an extended time. Tells the game that this unit can decommission itself anywhere and does not need a shipyard to be decommissioned. The amount of time it takes to build this unit The amount of different resources the ship or station needs to be built

SW,W SH, ST, W, SW SH A1,A2

A2

SH, ST A1,A2 SH,ST SOME ARE A2 ONLY A1,A2 A1,A2 A1,A2 A1,A2 A1,A2 A1,A2 A1,A2 A1,A2

Max Shield Strength

enginesHitPoints

weaponsHitPoints

lifeSupportHitPoints

sensorsHitPoints

shieldRate = buildItem0 =

workerBeeName

weldingBeamWidth

Number of hitpoints this system has, once damage exceeds this number it becomes disabled. Number of hitpoints this system has, once damage exceeds this number it becomes disabled. Number of hitpoints this system has, once damage exceeds this number it becomes disabled. Number of hitpoints this system has, once damage exceeds this number it becomes disabled. Number of hitpoints this system has, once damage exceeds this number it becomes disabled. Number of points regained by the shields roughly, per second This tells the game that whatever odf name follows this statement can be built from this unit or station, the 0 can change number depending on how many items are on the list Specifies the name of the small worker bee sod that is used during construction of this unit Sets the width of the beam that the worker bees use when constructing this vessel

SH ST SH,ST SH,ST SH,ST SH,ST SH,ST SH,ST ST

SH,ST SH,ST

A1,A2 A1,A2

possibleCraftNames =

weapon1 =

weaponHardpoints1

enginesTargetHardpoints lifeSupportTargetHardpoints weaponsTargetHardpoints shieldGeneratorTargetHardpoints sensorsTargetHardpoints hullTargetHardpoints criticalTargetHardpoints evolve = 1

transporter = 0

can_repair = 0

Lists all the possible names for the craft or station. and each one is surrounded by quotes and separated with a space Specifies the name of the weapon odf file the number 1 shows that it is the first weapon equipped on this ship, that number changes with each additional weapon added to the ship. Designates the hardpoints that the weapon uses number 1 shows that it is the first weapon equipped on this ship, that number changes with each additional weapon added to the ship. After this command is a series of hps that are the firing points for the weapon, they are in this format hpxx where xx is a number and each one is surrounded by quotes and separated with a space These all Designate the hardpoints that the individual system uses. After this command is a series of hps that are the firing points for the weapon, they are in this format hpxx where xx is a number and each one is surrounded by quotes and separated with a space This tells the game that this unit changes from one type of unit to another type of unit. . This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Specifies if this unit can have a transporter 1 = yes 0 = no. This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Specifies if this unit can repair 1 = yes 0 = no. This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it.

SH,ST

A1,A2

SH,ST

A1,A2

SH,ST

A1,A2

SH,ST

A1,A2

SH,ST

A2 ONLY

SH,ST

A2 ONLY

SH,ST

A2 ONLY

hotkeyLabel = maxSpecialEnergy =

specialEnergyRate = attackPower =

intrinsicValue =

repairYellow

repairRed

weaponYellow

weaponRed

shipIsBuiltByEvolution = 1

maxMetal = maxBiomatter resourcesCanHandle =

Specifies the shortcut key used for this unit Specifies the total amount of special energy this unit has when fully charged Specifies the recharge rate of the special energy This is used by the Ai to evaluate how strong the unit is, the higher the number that follows it is the more powerful the Ai thinks it is and the more ships it will send against it when fighting it This tells the AI how important a target this unit is, the higher the number the more likely the AI is to attack it. A modifier that controls how fast the ship repairs when the crew status is in the yellow A modifier that controls how fast the ship repairs when the crew status is in the red A modifier that controls how fast the ship fires when the crew status is in the yellow A modifier that controls how fast the ship fires when the crew status is in the red Tells the game that this unit is evolved inside another ship and released similar to the ship being built by another ship How much metal can this ship carry How much biomatter can this ship hold Specifies what materials this ship can mine, and transport "dilithium" "biomatter" "latinum" metal ship type for formations certain ships can only use certain formations Which weapon does this ship use to attack other ships How far can this ship scan

SH,ST SH,ST SH,ST SH,ST

A2 ONLY A1,A2 A1,A2 A1,A2

SH,ST

A1,A2

SH,ST SH,ST SH,ST SH,ST SH,ST

A1,A2 A1,A2 A1,A2 A1,A2 A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY A1,A2

SH SH SH,ST

shipType = weaponIndexForShips = rangeScan =

SH SH SH,ST

buildHardpoint = dockinghardpoint = latinum_spray_hardpoint = workerBeeHardpoints = repairHardpoint = podHardpoints =

WeldingBeamSprite numberOfWorkerBees Animatebees = 1 isHero = 1 shieldProtection = 1

physicsFile = baseName =

Tells where different actions like building, repairing, docking,, latinum trail, worker bee launching, pod building, take place at this station or unit, this is a hardpoint and follows the harpoints rule they must be in quotes, and if there is more than one listed they must be separated by a space. Spelling is very important as is the letter case. The sprite used for the workers when this ship is built How many bees are used to build it Turn on the animation in these building bees Specifies that this ship is a special hero unit. Makes the shields absorb all the weapon damage unit the shields are gone, Stops the enemy weapons from hitting the hull before the shields go down. Specifies what physics file is used for this ship Specifies which sod is used for this unit, in case the sod is named differently than the units file. When using this command in an odf, this odf inherits all the GUI properties of the odf designated by the baseName command as well as the sod. (IE button, wireframe) Makes the set rally point move along with the ship that is doing the building, great for making carriers and having the fighters not go back to the shipyard that the carrier came from . Resizes the sod to a smaller or larger size This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Can this ship fight 0 = no 1 = yes.

SH,ST

Some are for A2 only

SH,ST SH SH SH,ST ST

A1,A2 A1,A2 A2 ONLY A1,A2 A2 ONLY

SH SH,ST

A1,A2 A1,A2

alwaysRecomputeRallyPoint = 1

ST

A2 ONLY

ScaleSOD = alert = 1

SH,ST SH,ST

A1,A2 A2 ONLY A2

combat = 1

SH,ST

facility = 0

ship = 1

is_starbase = 0 builder_ship = 1

SHOW_MOVEMENT_AUTONOMY = 1

SHOW_SW_AUTONOMY = 1

can_sandd = 1

can_explore = 1

latinumConversionRate = 0.5

This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Is this a building 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Is this a ship 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Is it a starbase 0 = no 1 = yes Can this ship build other ships 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Show the movement autonomy selection for this ship? 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Show the special weapons autonomy selection for this ship? 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Can this ship seek and destroy? 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for this action is present when you click on a unit with this line in it. Can this ship explore or scout the area 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Specifies the ratio that each resource

ONLY

SH,ST

A2 ONLY

SH,ST

A2 ONLY

ST SH,ST

A1,A2 A2 ONLY

SH

A2 ONLY

SH,ST

A2 ONLY

SH,ST

A2 ONLY

SH

A2 ONLY

ST

A2

metalConversionRate = 0.5 dilithiumConversionRate = 0.5 has_hitpoints = 1

is converted to biomatter Does this ship have hitpoints 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Does it have crew 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Can it guard another unit 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. What class of ship is this, assault How much should we try to avoid this ship, the higher the number the more space we assume is around it that we want to avoid. Does this ship have assault transporters yes/no. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. This tells what freighter is used for the recourse gatherer for a refinery These set the rate at which the resources are transferred between the freighter and the resource station. Seems to be a new way to calculate crew loss from damage that penetrates shields The strength of boarding parties when they transport aboard an enemy ship the higher the number the more powerful the party is and the more likely they are to overcome the target SH,ST

ONLY A2 ONLY

has_crew = 1

SH,ST

A2 ONLY

can_guard = 0

SH

A2 ONLY

shipClass = avoidanceClass

SH SH,ST

A2 ONLY A1,A2

assault = 1

SH

A2 ONLY

freighterName = dilithiumTransferRate = 15.0 metalTransferRate = 15.0 latinumTransferRate = 15.0 biomatterTransferRate = 15.0 saneCrewLossMethod = 1

ST SH,ST

A1,A2 Some are A2 only A2 ONLY A1,A2

SH,ST SH

boardingPartyStrength =

shipclass =

ships crew. What class of ship is this, the options are : battleship, colony,
construction, cruiser, destroyer, mining, frigate, repair, scout, special,

SH

A2 ONLY

canAttackPlanets = 1 maxExtraWeapons = 1 lifeSupportHitPercent = 2.5f weaponsHitPercent = 2.0f shieldGeneratorHitPercent = 8.0f sensorsHitPercent = 13.0f crewHitPercent = 2.5f hullHitPercent = 62.0f

canOnlyAttackPlanets = 1

maxRoll = 1

aiName =

These are use by the game when calculating statistics for the Admirals Log Can this ship with these weapons attack planets and destroy colonies This tells how many weapons this unit can assimilate from other ships. This determines the chances that a system has to be hit with a weapon once the shields co down. All these must add up to 100 since it is a percentage, as you can see in this example, it is easier to hit the hull than it is to hit the weapons. That makes sense. This tells the game that this particular ship can only attack planets, like a colony ship. This disables the roll of a craft, roll is side to side tilting when turning, also called banking This makes the ship always fly flat and level even when turning. This is an AI parameter that helps the AI evaluate targets, it tell the AI what type of ship it is so it can prioritize the targets and functon correctly when told to seek and destroy etc,
MissileProcess, CraftProcess, ColonyShipProcess, CargoShipProcess, RepairShipProcess, TraderProcess, SalvageProcess, MineProcess, StarbaseProcess,

SH SH SH,ST

A2 ONLY A2 ONLY A1,A2

SH SH

A2 ONLY A1,A2

SH,ST

A1,A2

cargo_ship = 1

m_maxResource = 500

Specifies that this craft can carry cargo from one trading center to another. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Specifies the maximum amount of

SH

A2 ONLY

ST

A2

colonists = canAttack = 0

cargo this ship can carry How many colonists are on this ship This tells the game whether or not this ship can engage in combat, by default ships like construction ships cannot attack, with a couple exceptions. 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. The delay before the worker bees exit the construction ship. How long do the bees weld at each point before moving to the next point Delay before the bees start disappearing once bay doors BEGIN to close. Delay before shields begin recharging once it has reached zero in seconds When the sensors are destroyed, how far does the ship scan, or see The amount of time in seconds that it takes to repair one hitpoint of damage to the system, this is modified by the crew status, if the crew status is yellow repair is slower, in red it is even slower still. These are percentages, they determine how much of the crew dies when the system is destroyed, The only exception is life support, life support goes by a percent of the crew that dies for every second that the life support is disabled. This is the percent (1.0 = 100%) the ships health and shields or crew must be at before a warning is given (only when in a dangerous nebula) This specifies the explosion fireball that the ship uses when it blows up Specifies that this ship is a missile and that when the weapon that follows this command is activated, the ship should also be destroyed.

SH SH,ST

ONLY A2 ONLY A1, A2

timeUntilTakeoff = timeWelding = timeUntilClosure =

SH SH SH SH,ST

A2 ONLY A2 ONLY A2 ONLY A1,A2 A1,A2

shieldDelay = damagedScan = enginesRepairTime = 1.0f lifeSupportRepairTime = 0.1f weaponsRepairTime = 2.0f shieldGeneratorRepairTime = 2.0f sensorsRepairTime = 3.0f enginesCrewLoss = 5.0f lifeSupportCrewLoss = 3.0f weaponsCrewLoss = 2.0f shieldGeneratorCrewLoss = 2.0f sensorsCrewLoss = 2.0f lifeSupportLoss = 2.0f

SH,ST

A1,A2

SH,ST

A1,A2

percentNebulaWarn = 0.3f

SH

A2 ONLY A1,A2

fireball = missileDetonator =

SH,ST

SH,SW A2 ONLY

defaultGreenAlert = 1

miner = 0

label =

explosionUnitsPerLatinum =

This stops the ship from chasing other ships when a friendly unit in its area is attacked, so that this ship does not go wandering off chasing enemies Special command for telling the game that this freighter is not a mining vessel, and cannot gather resources. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Specifies a certain label for a ship, used for hero ships to assign a name used in script files This is how many units distance to explode per every unit of latinum carried if the freighter is destroyed whilst carrying latinum This is how much the ship will slow down once it gets filled with latinum. It s fraction of normal impulse speed This tells which explosion to use for the self destruct. Designates this ship as a repair ship, able to repair other ships. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Rate at which the repair ship recrews the vessel being repaired. Note Repair ships are somewhat unique in that the weapon it uses is only for a graphical effect and does not actually do the repairing, the repair ship itself does the repairing and recrewing. The RepairShip classlabel and these settings in the odf file make it so that any ship targeted by the repair ship gets repaired at the specified rate, the weapon is there just as the way to target and for looks. Rate at which the repair ship effects

SH

A2 ONLY A2 ONLY

SH

SH,ST SH

A2 ONLY A2 ONLY

speedFractionCarryingLatinum =

SH

A2 ONLY A2 ONLY A2 ONLY

selfDestruct = repair_ship = 1

SH SH

recrewRate = .1

SH

A1,A2

repairRate = .25

SH

A1,A2

scout = 1

directorRadiusScale = footprintBuffer = 20.0f eastBuffer = 10.0f westBuffer = 10.0f northBuffer = 10.0f southBuffer = 10.0f wormhole =

repairs on another vessel. Note Repair ships are somewhat unique in that the weapon it uses is only for a graphical effect and does not actually do the repairing, the repair ship itself does the repairing and recrewing. The RepairShip classlabel and these settings in the odf file make it so that any ship targeted by the repair ship gets repaired at the specified rate, the weapon is there just as the way to target and for looks. Sets this ship as a scout, scouts are used by the AI in IA games to explorer the map. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Director radius scale. So the director zooms out a bit from it. All these are for setting the footprint that the unit leaves when placing it for construction.

SH

A2 ONLY

SH,ST ST

A2 ONLY Some Are A2 only

detectRange = 800

drag = 1 acceleration = destructRadius = 250 returnSpeed = slowdownDist = accelConst = addToPlanner = 0

Tells the game which wormhole to use ST for a graphic when bringing ships from another place Part of the species 8472 mining array ST but not sure exactly what these next few are for The drag of space ST
Acceleration at 1 unit How big of an explosion when destroyed How fast to head back home How close to home to start slowing down The starting acceleration value

A2 ONLY A1,A2 A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY

ST ST ST ST ST ST

Do not put this on the path planner or give it a footprint, it is like a mobile

officerGain = secondaryBuildItem0

isTranswarpGate = 1 moveBelowCombatArea =

distanceBelowGrid = 30 repairFacility = 0 decommissionFacility = 1 recycleExchangeRate = .7 dilithiumRecyclingFraction = 1

metalRecyclingFraction = 1

recycler = 1

repairSide = 2 repairSide = 4

station so it has no footprint. Tells how many officers are gained when this upgrade is built, This is like the buildItem command but its build button appears in the same location as the buildItem of the same number, after the first buildItem is done constructing. Specifies that this station is a transwarp gate Should we move this station below the grid, this is a yes no question 0 = no 1 = yes How far below the grid should we move this station. Specifies whether this station is a repair facility 0 = no 1 = yes Specifies if this station can decommission ships 0 = no 1 = yes How much metal you get for dilithium and vice versa How efficiently does this station decommission the dilithium from ships, it is a percentage of how much the original cost of the vessel was How efficiently does this station decommission the metal from ships, it is a percentage of how much the original cost of the vessel was. Is this unit a recycler 0 = no 1 = yes. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. The repair hardpoint is where the right boundary of the ship lines up
repair hardpoint is where the top boundary of the ship lines up

ST ST

A1,A2 A2 ONLY

ST ST ST SH,ST SH,ST ST ST

A1,A2 A1,A2 A1,A2 A1,A2 A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY

ST

ST

ST ST

A2 ONLY A2 ONLY A2 ONLY A2 ONLY

repairSide = 5 repairSide = 9

The Repair hardpoint is where the bottom boundary of the ship lines up The repair hardpoint is where the bottom left boundary of the ship lines up

ST

reserveItem0 = 1

buildAnimation = 1 repairAnimation = 0

percentTradeProfit = cargoTransferRate = trade_station = 1

miningMultiplier =

maximumUpgrades = 6 freighterName = isShipUpgrade =

upgradeLevel = upgradeMultiplier =

This makes a station reserve the first build location for a specific item, it is a yes no question and follows the yes/no number format Is there animation for build and repair functions at this station, these are yes/no questions and follow the yes/no number format What percent of trade profit this station gets. This sets the transfer rate from the cargo ship to the station. Is this station a trade station , it is a yes no question and follows the yes/no number format This multiplier controls how fast the orbital station mines metal from the planet. Defines the max number of officer upgrades the station can build.. Name of the ship used as a freighter for this station. Is this a ship Upgrade, it is a yes no question and follows the yes/no number format What level is this upgrade What do we multiply the previous value by to get the new value for this upgrade, this is a number, and with each upgrade level it is cumulative. What system does this upgrade effect, engines, shields, weapons, life support, sensors. The amount of time this station takes to orbit the target. The maximum population of this planet, can be unpopulated, sparse, light, medium, or heavy Can this planet be colonized, it is a yes no question and follows the yes/no number format. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it.

ST

SH,ST

ST ST ST ST ST ST ST ST ST

Build anim, is in A1 but bit repair anim A2 ONLY A2 ONLY A2 ONLY A2 ONLY

A1,A2 A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY

upgradeSystem =

ST ST O O

orbitTime = maxPopulation =

isColonizable = 0

requiresTerraform = 0

groundDistance = 0 turbulence = 0

ambientSound = ambientMinimumDistance = .075 ambientMaximumDistance = 1.0

Does this planet require terraforming, it is a yes no question and follows the yes/no number format. Distance to ground, zero means no atmosphere, -1 means no ground No turbulence, so the ground doesn't crawl. I believe this is an adjustable number that animates the surface. This is where the sound a planet makes goes and the sound volumes are controlled, the volume changes depending on the proximity to the planet. This works similar to the include command or an ordinance file, it is using a second odf file to establish the resources available on this planet. The name of the texture that this planets surface uses. Sets the max number of crew that can be gained from this planet. Modifier that sets how much faster than the base rate that this planet accumulates civilian population. This determines how many military crew can garrison the planet. It is a number The name of the texture that this planets atmosphere uses. Although the race name command is already listed, this is to show that uncolonized planets use the norace race instead of one of the playable races in the game, it show that they are neutral. This specifies what icon to use for the minimap to display a planet. Number of hitpoints this planetary shield has The chance this shield will be hit, when the planet is attacked This sets the exchange values of different cargo types, the number is

O O O O

A2 ONLY A2 ONLY A2 ONLY Ambient sound is in A1 but not the distance parameters. A2 A2 ONLY

resource = "ResourcePlanetD" resource = "ResourcePlanetH" resource = "ResourcePlanetJ" resource = "ResourcePlanetK" resource = "ResourcePlanetL" resource = "ResourcePlanetM" groundTextureName = maxCrewGain = civilianPopulationModifier =

O O O O O O

A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY A2 ONLY

maximumCrew =

atmosphereTextureName race = "norace"

mapIcon = hitPoints = 1000.0 hitPercent = 10.0 cargoValue1 =

O O

A1,A2 A2 ONLY

O SH,ST, ST A2 ONLY

cargoKey1 =

combat = 1

incremental and is followed by another number that is the exchange rate at a trading station. This specifies the types of cargo, the numbers are incremental and after the = is the Gui reference to a cargo type Is this a combat station? it is a yes no question and follows the yes/no number format. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. This is the weapons name, it is in quotes after the command This specifies the file that is used for the ordinance for this weapon. For example, a gun is a weapon, however a bullet is the ordinance that a gun uses, without a bullet to do damage the weapon is useless and wont hurt someone. (unless you hit them over the head with it) This is the delay between shots, it controls the re-fire rate of the weapon. It is a number and can be virtually any number, the higher the number the slower the re-fire rate. The sound that is played when the weapon fires. The distance which this weapon fires, this weapon will fire when an enemy comes within this range of the ship with this weapon. This specifies the sprite or graphical effect that the weapon displays when fired, these sprites are defined in the sprite files, we will discuss sprite files in a later chapter. This command goes in the ordinance file. This is the base amount of damage that the weapon does with each hit. This can be applied to specific ships by addling a line under it in this format: "shipname.odf" xx where xx is

ST

A2 ONLY

SH, ST A2 ONLY

Weapons Commands
wpnName = ordName =

shotDelay =

fireSound = range =

Sprite =

damageBase =

damageVariance =

damageThreshold =

a number. This command goes in the ordinance file. This is the amount of variance to the base damage, so not every hit will do the exact same damage, if the damageBase = 4 and damageVariance = 2 then each hit of the weapon can do from 2-6 damage 4 +/- 2. This can be applied to specific ships by addling a line under it in this format: "shipname.odf" xx where xx is a number. This command goes in the ordinance file. This is the threshold or amount of damage that must be exceeded to cause crew casualties prior to shield exhaustion, . This can be applied to specific ships by addling a line under it in this format: "shipname.odf" xx where xx is a number. This command goes in the ordinance file. This number is a modifier that controls what percent of the damage which hits the shields, that exceeds the damage threshold, is used to calculate the percentage of the crew that dies with each weapons hit. This number is a percent, so .01 is 1 % and 1.0 is 100%, this only applies to damage that is in excess of the damage threshold. This can be applied to specific ships by addling a line under it in this format: "shipname.odf" xx where xx is a number between 0 and 1. This command goes in the ordinance file. This number is a modifier that controls what percent of the damage which hits the hull, that exceeds the damage threshold, is used to calculate the percentage of the crew that dies with each weapons hit. This number is a percent, so .01 is 1 % and 1.0 is 100%, this only applies to damage that is in excess of the damage threshold. This can be applied to specific ships

shieldCrewModifier =

hullCrewModifier =

flareRadiusMultiplier =

hitChance =

impulseToHitModifier = stopToHitModifier = toHitImpulseModifier = toHitStopModifier

lifeSpan =

shieldDuration =

by addling a line under it in this format: "shipname.odf" xx where xx is a number between 0 and 1 Size of the flare around the phaser. This I believe controls the amount of fade around the edges of the phaser beam, it basically softens the edges to make it look better. This command goes in the ordinance file. This is the change that the weapon will hit the target, it to a percentage . 01 being 1% and 1.0 being 100% This can be applied to specific ships by addling a line under it in this format: "shipname.odf" xx where xx is a number between 0 and 1 These are modifiers that affect the hitChance they are also percentages, and will modify the chance that the weapon will hit the target depending on whether the target or firing ship is stopped or at impulse. If the ships are moving it would be less likely to hit, if one or the other or both are stopped the chance would be more likely that the weapon would hit. These can be positive or negative numbers and would be in a decimal format, .01 being 1% and 1.0 being 100% you can add a - in front to represent a negative percentage which would decrease the chance of hitting. This tells how long the graphic or sprite will stay on screen without hitting something before expiring. This must be long enough for the weapon to hit the target from its maximum range but should not be excessively longer than that, making this too high is the reason some mods have phasers that go all the way to the opposite side of the map if they miss the target. This command goes in the ordinance file. This specifies how long the graphical effect of the weapon hitting the shield

Check this

shotSpeed = 1e6

shotColor =

Radius =

spriteDuration =

targetLocation =

needTarget =

lasts, the higher the number the longer the shield hit is, this should not be much longer than the time that the weapon is actually making contact with the shield. This command goes in the ordinance file. This is the speed at which the shot travels, in this example I have left the speed in to explain the number 1e6, this specific number is used for standard phasers and it represents the speed of light. So as soon as the phaser fires it makes contact with the target (if it actually hits the target) This can be virtually any number and the higher the number the faster the speed. This command goes in the ordinance file. This is a useless command that seems to do nothing at all, I believe that it was originally intended just to change the color of the phaser beams so that they could use one sprite for the phasers and change the color through the odfs but it never seemed to have been implemented. Do not remove it but dont bother changing it, This is the radius or thickness of the sprite, it is used for phasers, photons & various other weapons to control the size of the sprite. This is the length of time it takes to play through one cycle of the sprites animation. Then it loops back to the beginning. This allows the weapon to target a location on the play field instead of having to always target a unit or station, this is mostly used for special weapons but is also used for Artillery photons. This says that the weapon does need a target, that target can be a map location if the command above is present. This is mostly used for special weapons but is also used for

lightColor = 0.0 1.0 0.0 lightFalloffStart = 50.0 lightFalloffRange = 5.0

animateOwner = 1

omegaTurn =

shotAccel =

explosionSprite

objectName =

blastRadius =

explosionSpriteRadius =

seekTime =

explSound =

Artillery photons. These control the way the weapon lighting works, the first line is the r,g,b, values (red, green, blue) they go by intensity 1.0 is full intensity and 0.0 means none of this particular color. The next 2 control the way the color faded in and out by setting the start and range of the falloff This is a very nice command that makes the firing unit play the animation in its sod file when it fires the weapon. This controls the turning radius of the ordinance, the lower the number the faster the weapon turns to chase the target. This is the speed at which the ordinance accelerates once fired. The higher the number the faster it accelerates. This specifies the explosion that is used for this ordinance when it impacts the target. This designates an another odf that has the specifications for another effect that this weapon has, could be an artillery wave or an object like an ion storm nebula or any of several other effect types. This is the radius of the explosion that the weapon creates. This is the effect radius not the size of the sprite. This is the radius of the sprite for the above explosion, it doesnt have to be the same size as the blast radius. This is the amount of time the ordinance obeys the omega turn limit before it starts to head for the target, it is mostly used for photons , since they are fired from a location on the ship and then start to head toward the target after they clear the immediate area of the ship. The name of the sound played when the ordinance explodes.

texture = color =

radiusFactor =

fadeFactor =

rays =

rate =

restrictFireArc =

fireArc =

Length =

saveFire = 1

maxShots =

The name of the texture used for this item, usually used for shockwaves. Modifies the color of the texture mentioned ion the above command. It uses R,G,B, values for these settings. A multiplier, that is a multiple of the ships radius and is used to get the radius of the shockwave. A percentage that controls how long before the shockwave or other graphical effect starts to fade out, if this is too high the shockwave will be too big and will appear to be much larger than its actual effect radius. The number of rays or sections on a shockwave, the higher it is the more detailed the wave will look but also the more heavy the demand on the game engine will be. This controls how fast the wave expands, the higher the number the faster the wave moves and grows. This tells the game to restricts the Arc of fire of the weapon. This is a yes/no question in A2 0 = no 1 = yes This restricts the Arc of fire of the weapon it is in degrees. 90 would be 90 degrees 45 degrees in each direction from the direction that the harpoint faces, 0 would mean it only fires in the direction that the hp faces so the ship will have to turn to face the target to fire this weapon at it This is the length of the beam used for this weapon, it is usually used for pulse phasers along with the radius command to designate the width and length of the pulse. Should we save up our fire so we can fire several rapid blasts when we have a target? This is a yes/no question 0 = no 1 = yes Note this only works with the classLabel = cannon How many shots should we save up? This is the number of shots that will be released the first time the weapon

minimumShotInterval =

fires. This is the least amount of time between the saved up shots mentioned above. Note this only works the first time the weapon is fired, after that the weapon fires normally until it has a period of not firing to save up the shots again Special weapons can all use of the standard weapons commands but in addition to those there are many that are specific to special weapons. Also not every command works with every weapon or classLabel, we will discuss compatibility of commands and classLabels later. Also SOME of the commands for special weapons can be used in standard weapons, but not many. Also Some commands that appear in ship and station odfs also make an appearance in special weapons odfs, such as animation = 2, I will not repeat these commands that are common between different odf types, because they basicall serve the same purposes no matter what type of odf they are in. This specifies the amount of special energy the weapon uses with each shot, for special weapons it can be the cost of one shot or the cost per second (if the weapon is a toggle on/off type weapon) This is not usually used for non special weapons but it can be used for non specials too, if desired. This command goes in the ordinance file. The target range. The sound of the ordinance hitting the target. This specifies the number of civilians killed if this weapon is used on a planet, this number is multiplied by a randomly generated number between

Special Weapons commands.

specialEnergyCost =

targetRange = hitSound = MaxCiviliansKilled =

Investigate further

MaxCrewMembersKilled =

detectRadius =

shotGeometry =

visualFactor = 1.0 initialScale =

maxScale =

expansionTime =

retractionTime =

timeAtMaxSize = travelTimeFraction = .01

specialValue =

attackRange =

0-1, so it will not actually do the exact same damage each time. This specifies the number of crew killed if this weapon is used on a ship or station, this number is multiplied by a randomly generated number between 0-1, so it will not actually do the exact same damage each time This is the range at which the weapon ordinance can detect a target, used if this is a tracking weapon like a mine that follows a target once it enters this detection range. This designates what the sod that is used for the ordinance is called. Some weapons do not use sprites as their graphic, instead they use a sod (or model) This is the factor to scale the art by. This is the size that the object starts out as. It is a fraction or multiple of the sods default size This is the size that the object ends up as, It is a fraction or multiple of the sods default size The amount of time in seconds that it takes to go from its initial size to its max size. The amount of time it takes to go from its max size back to its initial size, in seconds. The amount of time , in seconds, that it stays at its maximum size. This is so that even with the long lifespan it doesn't take too long to hit its mark. This is for setting the special value of a weapon, for different weapons it does different things, sometimes it is the amount of time a weapon disables a targets systems, other times it is the amount of hit points restored to a friendly ship, it all depends on what weapon it is used in. This is the distance at which the weapon till automatically toggle off if

duration =

rollRate = radiusScale =

lengthScale = forceInvalidateTarget = 1

special = 1

partySize = rotationRate = fallRate = stayDuration =

fallDuration =

ignoreShield = 1

orbitRange =

the target is running away or the attacker is moving away from the target. The amount of time that the effect lasts in seconds this is used for several different effects and varies depending on the context it is used in. The speed at which the weapon effect or sod spins or rolls This is similar to the radius command for pulse phasers but it is used for scaling the radius of a sod that is used for a weapon effect Same as above but for the length of the effect. This command makes the target of this weapon an invalid target for all other friendly units, this makes it so they do not attack the target while this weapon is un use. This is used for weapons that do things like assimilate the ship or take control of it in some way because if other friendly ships attack it they will destroy it before this weapon does its job. This is a yes/no question you should know what means yes and no by now. This marks the weapon as a special weapon as opposed to a standard one, it is a yes/no question. The amount of people in the party, per shot Speed of the rotation of the shot geometry. The speed at which the shot geometry falls away once it hits the target How long in seconds that the shot geometry stays around after hitting the target. Once it starts falling away this specifies how long it stays around while falling before it disappears. This designates whether the ordinance can pass through the shields of the target, this is a yes/no question. This sets the distance away from the

chainRadius =

maxHits =

chainDamageModifier =

smokeTexture = "Xsmoke" smokeFrames = 16 smokeLifespan = 0.6 smokePause = 0.01 smokeRadius = 2.0 smokeVariance = 1.0 smokeInherit = 0.5 transferTime =

planets surface that a colony ship orbits while colonizing. The distance at which a chain weapon will fire and go from target to target. This is different than the standard range command because it is the total distance that the ordinance will travel including the distance from one target to the next one. The maximum number of targets a chain weapon will hit, it may hit less targets depending on the distance between targets and the setting in the chainRadius command This is a modifier that adds more damage to a chain weapon with each target it hits, each target impact increases the damage done to the next target in the chain. These set the texture and trail patterns for a smoke trail of a weapon, most weapons do not work with a smoke trail but chain weapons do.

transferAmount =

FireModifier = 1.5 RepairModifier = 0.5 TurnModifier = 1 DamageModifier = 1 SpeedModifier = 1 HitModifier = 1

buttonSlot = 3

The amount of time it takes to transfer colonists to a planet with a beam type colonizer weapon. This should be less than the lifespan of the beam used for the weapon. Sets the number of colonists transferred with each shot of the colonizer beam mentioned above. These are all setting for weapons that increase the effectiveness of ships, these are in the format of speed. For example: The FireModifier = 1.5 means that the weapons fire 1.5 times faster than without this weapons effect. And the RepairModifier = 0.5 means that it takes the time to repair damage. In this example the other settings are not effected because they have 1 next to them so they are not modified. The slot that the button is placed in on

popupSlot =

buttonBorder = 1

the speed bar for the graphical interface. The slot that the button is placed in on the popup button bar for the graphical interface. The type of border or frame that the button appears in inside the game. //0 = No border. //1 = Offensive border. //2 = Defensive border. This sets the priority of buttons, so if 2 buttons with occupy the same space, the one with the higher button priority will be displayed instead of the one with the lower priority, The percent of the shields that is returned to the target ship when this weapon hit it. The rate on each axis x,y,z that the ship spins after being hit with this weapon, there is a certain amount of randomness added in here also This is the speed of propagation or spreading of the wave effect. The rate at which it expands through space. This restricts the targeting of a weapon to certain types of friendly or enemy units or even planets, they are all yes/no questions. This makes it so that no more than one of this type of weapon can target the same ship, this is useful for weapons like the holding beam because you only need one holding beam to hold a ship in place. This determines which weapons are assimilatable by the borg tech assimilator weapon, it also lists the pod that makes the weapon available to the race that originally had it, basically what the tech assimilator does is makes the pod that makes the weapon available to the original race also available to the Borg ship. And if

buttonPriority = 5

shieldsReturned=

spinRate = 1.0,2.0,1.0

propSpeed =

targetAlliedCraft = 0 targetAlliedBuildings = 0 targetEnemyCraft = 1 targetEnemyBuildings = 1 targetEnemyPlanetsOnly = 1 targetLocation = 0 ignoreValidAsTarget = 1

assimilatable = "borpod2

boardingDelay = 1

boardingInterval = 1 boardingSize =

switchToAttack = 0

wpnReticle = "gblast" wpnPriority = 0

wpnCategory =

formationBehind = 150 formationRadius = 200 chargeDelay = 2

mainDelay = 1

the ship is sent to the tech assimilation station, then it becomes available to that station and all the ships that have the tech assimilator weapon that are produced from then on. The delay in seconds before the boarding party starts beaming aboard the target ship. Time in seconds between boarding parties. Size of the boarding parties, it is a number that represents the number of crew in each party. After firing this weapon should we switch to attack mode and attack with other weapons we have? This is a yes/no Question. The cursor that is used to target this weapon. Unsure what this is for but it appears in most toggle weapon files. It could have something to do with the AI and how aggressively they try to attack the ship that has this weapon This sets the category for the weapon, seems to be only mutlitarget and toggle weapons, and I am not sure what purpose it actually serves. Options are: TOWE ARCA AREA "ARMI" "CANN" These are used to setup formations for weapons that require multiple ships such as the Species 8472 Biopulse How long does it take to charge the weapon before firing formations, for weapons that require multiple ships such as the Species 8472 Biopulse but can probably be used on singe ship weapons also. The anount of time in seconds, after the chargeDelay is up before the ship fires the weapon, for weapons that require multiple ships such as the Species 8472 Biopulse but can probably be used on singe ship weapons also.

multiReqClass0 multiReqMin0 = multiReqClass1 multiReqMin1 = multiReqMax1 =

= "8472_frigate" 1 = "8472_battle" 4 8

frigateOrdnance = "biopulsefrigate" battleOrdnance = "biopulsebattle" initialDistance = 300 finalDistance = 110 saucerFormation = 1

This is for weapons that require multiple ships to use them, these parameters show which ships are required and how many of each is needed for the weapon to work. These 2 specify which ordinance files are used for the multi ship weapon. These are also settings for weapons that require multiple ships to use, such as the Galaxy integrator and Cube fusing weapon, it specifies the distances of the parts the uses those distances to move the parts together before replacing the separate sods with the new integrated sod file. Specifies which ship odf file and model or sod to use for the ship after fusion has been completed. The speed at which the special energy drains while firing this weapon, it is in units per second. The amount of damage done per second of this weapon firing. Specifies the sound used when this weapon is toggled off. This makes the detonation of a weapon have its effect centered on the middle of the target, this does not work on planets. What is the time delay in seconds before we can fire our regular weapons after using this weapon. Sets the hit conditions for targets, used mostly with weapons that have wave effects, options are: // HIT_EVERYONE = 0, // HIT_ALLIES = 1, // HIT_ENEMIES = 2 This is different than the one below so dont confuse them, this one is for having a wave that emanates from the ship, but it is not necessarily to effect other ships, it is sometimes just to indicate that this weapon is being used

fusedClass =

specialEnergyLossRate =

damageRate = offSound = centerEffectOnTarget = 1

regularWeaponDelay =

hitCondition = 0

wave_Effect =

waveEffect = 1

waveName =

wave_name =

waveRange = attackSpeech = 0

cloakEnable = 1 timeBetween =

affectorType =

by the ship. However it can also be used to spread an effect to other ships. Does this weapon have a wave effect because it effects multiple ships in the area around it, instead of a standard sprite? This is a yes/no question The name of the odf file to refer to for the wave. It is just the name of the file it does not require the .odf extension to be added here. The name of the odf file to refer to for the wave. It is just the name of the file it does not require the .odf extension to be added here. What is the size of the wave, how big is it. Do we use a standard move command response when this weapon is used? This is a yes/ no question Can this weapon fire while the ship is cloaked? This is a yes/no question. This sets the time between the pulses or explosions when using the wave_Effect = xxx command This sets the type off affector when using the classLabel: "rangedobjectaffector" Choices are:
cloak enhancer = type 0 weapon enhancer = type 1 sensor scrambler = type = 2

effectTimer =

stepSize = 0.0004f unsafeCloakDistance = warpEnable = 1 transparency = 0.0

reflectionRatio = 0.9

How long doe it take in seconds for this weapon to be completely in effect? This is used mostly in cloaking devices, this is the time it takes to cloak and uncloak. Set the step size of radians Sets the distance from anomies that you can cloak a vessel. Can this weapon fire without dropping out of warp? This is a yes/no question. This is the amount of transparency when fully cloaked, this is in addition to the standard additive blending. This is the % of weapons fire that is reflected when using a reflect weapon.

reflectHitOwnerRatio =

reflectMissile = 1 reflectBeam = 1

eventFire = eventCancel = detectClass = 3

detectTimer =

numDrones = 5 beneficial = 1

toggle = 1

lifetime = wormholeID = "wborgate"

maxTargets = 4

It is a number between 0 and 1, 1 being 100%. This is a % specifying how often the attacker of this ship gets the weapon reflected back at them, when using a reflect weapon. It is a number between 0 and 1, 1 being 100%. This specifies which weapon types get reflected when using a reflect weapon, it is a yes/no question. Note: pulses cannot be reflected. Sound events, they will refer to a specific event that has a wav file assigned to it. The class of the detection weapon, I am not sure what the different classes are for but all the race specific detection weapons all use class 3, so I would recommend using class 3 also. The amount of time the cloaked ship must be in range of the detecting weapon before it is seen. Specifies the number of drones launched when using a drone weapon This Tells that the weapon is not harmful to the target, it is used for weapons like shield projector, repair teams etc. it is a yes/no question Sets the weapon as a toggle weapon even though the weapon doesnt use the toggleWeapon classLabel, this is a yes/no question. The length of time in seconds that this particular weapon effect lasts Specifies what the name of the wormhole that this weapon uses is, this wormhole will have an odf also/ The maximum number of targets that this weapon can hit. Although in A1 this command was used for the areaCannon and areaMissile classLabels in A2 it seems to only be used with the "areamissile" classLabel. I have a theory that they have changed this in A2 so that the

crewAffectsWeaponDelay = 0

AItargetLocation = 1

nebulaID =

shipID =

minRadius = maxRadius = deltaRadius numSections

200 1000 = 200 = 16

regenModifier = 30

canAttackStations = 0

slowPercent = 70

safe = 0

timer = 5

areaCannon label is only used with wave effects and the areaMissile only used with sod based weapons This specifies that the weapon is not effected by the crew status, if the crew is in the yellow of red this weapon still will fire at the same rate. This is a yes/no question This tells the game that the AI should try to target a location when using this weapon, not target a ship or station. This is a yes/no question Specifies the name of the nebula used for this weapon, this is an odf name and doesnt need to have the odf extension on it, only the name of the file. This defines the ship that comes out of the wormhole when using the Quantum Singularity Effect, it is an odf name without the odf file extension on the end. These are parameters for finding a location to open the Quantum Singularity Effect. They are as follows in the same order they are listed to the left: starting distance to search ending distance to search radius increments to search how many sections when searching This sets the modifier that controls the speed at which repairs are completed, it is a number that the default repair speed is multiplied by. This tells the game whether or not this weapon can attack stations. This is a yes/no question The % by which this weapon slows down its target, used for gravity mines. Specifies if this weapon is safe or not. If it is not safe it will damage friendly units as well as enemies. This is a yes/no question. The amount of time in seconds before

radius = percentReduction =

assignClass0 assignClass1 assignClass2 assignClass3

= = = =

"" "" "" ""

speedModifier =

objectName =

affectedSystem = 1

this weapon detonates, used mostly for self destructs. The blast radius for the self destruct. Defines the % of reduction of the affected systems effectiveness, used with the "rangedobjectaffector" classLabel This is where it is assigned which ships have this weapon. This is used for the technology assimilation weapon, this weapon is the one that is on the station not the one on the cubes This is a modifier that determines the speed modification to impulse speed. It is used with the "speed_boost" classLabel. It is a number (greater than 1 if you want a speed increase) This designates an another odf that has the specifications for another effect that this weapon has, could be an artillery wave or an object like an ion storm nebula or any of several other effect types. This is also mentioned in the standard weapons section but I felt that this one was important enough to repeat here in the special weapons section. Designates which system to effect with this weapon, choices are: 1, 0 This is the total drain. Despite the name. This is the amount of time in seconds that it takes to drain the amount set in the parameter above. Assigns the sprite that is used for the particle trail that follows this weapons shot geometry. These parameters set the scaling for objects like the Ion storm nebula and ultruim burst these settings effect the size and speed of the growth of the object. This is a number that sets how much

Check to see what systems are what numbers

DrainRate = 1000 DrainTime = 10

particleArt =

ScalingStepSize = 0.20f ScalingCount = 17.0f

damageValue =

xplGround = "xmslgnd" xplVehicle = "xmslcar" xplBuilding = "xmslbld" hitFriends = 0

damage the object does to the ship inside per second. Specific sounds for impacts on different unit types. Do we want to hit and damage friendly ships with this weapon? This is a yes/no question How fast the panels move when infected with Borg nanites, This is a number and the number must be an even number. These are the time settings for the nanites, they adjust the minimum and maximum times for the effect and the amount of time after the effect ends before the panels start to return to normal positions. The texture used for the nanites effect. This is the reference to game events that triggers an audio warning about the nanites effecting your systems. The range from the center of the effect that damage is done to units. The variables for setting the times that it takes for a generated nebula to shrink, grow stay at max size and the max size that it stays at for the set time. The factor that the fade is determined by, this is a % and should be a number between 0-1. 1 being 100 %. This setting determines how quickly the effect starts to fade out. It is also mentioned in the standard weapons section. This is the % of crew taken or killed when your crew goes insane from the Psychonic Blast, this is a % and should be a number between 0-1. 1 being 100 %. These settings are for the computer override weapon. The amount of time the system is disabled by this weapon. This sets the weapon as a weapon that

movementSpeed =

minTime = 2.0 maxTime = 5.0 startReturnTime = 2.0

effectTexture = "Nanites" shotInfo = "NaniteHitInfo"

damage_range = growTime = 30 stableTime = 40 shrinkTime = 30 maxSize = 3

fadeFactor =

percentage = .02

ownerSystemDuration = 3 timeBetweenSystems = 2 targetSystemDuration = 3 disableTime = 100.0 disableWeapon = 2

Check these

extractionInterval = 1 conversionRate = 1.0

drainRate = 5

repulsionForce =

waveArc = 90 waveLength = 110 amplitude = 10 frequency = 10 waveSpeed = 10 rays = 9 segments = 30 spreadSpeed = 15 assimilationTime =

omegaType = 1

initialDistance = 20. scaleSize = 1.0

scaleCount = 5 scaleValue = 0.30 damageFactor = 2.0

disables a system, I believe that the 2 specifies that it disables weapons systems. The time, in seconds, between extractions of resources. This is the conversion rate between the amount of damage Inflicted and the units of biomatter collected, 1.0 is complete conversion, 1 point of damage = 1 unit of biomatter. This is the rate at which the hull is drained In pints per second, and converted to biomatter for the 8472 resource extraction beam. This is the amount of repulsion force imparted on the target vessel, it determines how far the ship is pushed back when the repulsion wave hits it. The arc of the wave in degrees, for the Subspace Shockwave The length of the wave The height of the wave The number of waves that fit in a certain distance The speed of the wave cycles up and down. The number of vertices wide the wave is. The number of vertices long the wave is. The speed at which the wave spreads. The time in seconds that it takes to assimilate a technology with this weapon. Can this tractor beam target the Omega Particle? This is a yes/no question. This is the distance from the ship that the effect appears. What scale do we want the size to be changed to, relative to the default size of the Sod. Scale count applied to the object Scale value applied to the object The factor by which the damage that

Find out details

rangeFactor = 1.5

cycleColorRed cycleColorGreen cycleColorBlue

= 0 = 1.0 = 1.0

Commands for other Miscellaneous Things

the affected ships inflicts is increased by, due to this weapons effect The factor by which the affected ships weapons range is increased due to the effect of this weapon. These control the color of ships affected by the weapon, it causes them to have a cycling tint to them of the colors specified in these intensity settings. These are commands that dont really fit into their own category, mostly commands for ships physics and map objects. Some of them are also commands used by stations or weapons. Physics are what sets how the ships move and turn in the game. Changing ship physics can be fairly easy depending on what types of changes you do, but drastic changes without knowing exactly what you are doing can cause some very unusual and unexpected problems in the game, especially in A1. Believe it or not dramatic altering of the values in your A1 Physics files can actually cause ships to disappear from the screen. All these physics commands are from A2, many also exist in A1. A1 has more other physics commands but I am not listing all the, A1 only, commands here. Because changing them can have adverse effects. This is the type of physics this file is. Smooth is the standard physics, for moving like most races ships do in the game. There is another type of physics called borg that makes ships move like borg ships do, very little banking and rolling, as well as rotation for some borg ship types. These are the different speed settings for the ship depending on what it is doing. Combat is its speed while

Physics Commands

physics = "smooth physics = "borg" physics = "hover"

combatSpeed = 10 impulseSpeed = 10 warpSpeed = 101

tooCloseToTurn = 50;

engaging the enemy in battle, impulse is the speed it travels while moving around while not in combat and not at warp. Warp is the speed the ship travels when moving long distances or moving to an area designated by a right click on the mini map. Warp is much faster than normal impulse or combat speeds, However most weapons will not fire unless you drop out of warp or slowdown. If you want the ship to not have warp speed use a negative number like 1 for the warp speed. When we're moving, if we're closer to our goal point than this, don't try to circle around and hit it. Just stay where you are. This is usually 50. A parameter similar to the one above but it is for the rotation of Borg ships, it specifies the speed that , if moving slower than, the Borg ship will stop rotating in its vertical axis. When we are moving to another location , we follow a point on our path that's this far in front of us. This is usually 150. How fast it accelerates forward, normal is 1. This parameter scales with impulse speed, so that faster ships more or less do everything faster. How fast it decelerates, this is a fraction of forwardAccel setting. This parameter scales with impulse speed, so that faster ships more or less do everything faster. Maximum turn rate, normalized to 1. This parameter scales with impulse speed, so that faster ships more or less do everything faster. Maximum turn acceleration/deceleration, normalized

tooSlowToTurn = 5;

pathLeadDistance = 100;

forwardAccel = 3;

backwardAccel = 1;

turnOmega = 1;

turnAlpha = 1;

to 1, scales with turnOmega. This parameter scales with impulse speed, so that faster ships more or less do everything faster.
pitchOmega = 1;

Maximum pitch rate, normalized to 1. Pitch is the angle forward and backward, meaning the nose of the ship up and down. This parameter scales with impulse speed, so that faster ships more or less do everything faster. Maximum pitch acceleration/deceleration, normalized to 1, scales with pitchOmega. This parameter scales with impulse speed, so that faster ships more or less do everything faster. How much it rolls when it turns, normalized to 1, set to 0 to eliminate roll. Roll is the tilting of a ship side to side when it turns. This does not scale with impulse speed How car-like this is. 0 means can't turn without moving, like a car. 1 means turns fully even when still, more like a spaceship. This does not scale with impulse speed. Most ships return to pitch = 0 degrees. Pitch Default is the pitch to return to in degrees upward, and speed is how fast it does so. Zero or negative speed means to stay at your last pitch. Determines how to dampen the turning rate once it's close to it's target. 1 means to square it, to make it even more dampened. This is the angle in degrees to make it stop dampening. This is the speed that Borg ships like the Cubes and Spheres rotate or spin on their vertical axis.

pitchAlpha = 1;

rollCoupling = 0;

turnOmegaFractionAtRest = .0; turnAlphaFractionAtRest = .0; pitchOmegaFractionAtRest = .0; pitchAlphaFractionAtRest = .0;

pitchDefault = 0; pitchDefaultSpeed = 1;

turnControlSquared = 1;

forwardControlDistance = 200; maxRotationSpeed = 0.75

combatPhysicsFile =

maxRoll

= 40

turnRadius = 30 velocCoeffStill = 0.5 velocWhenCoeffHalf = 0.7

This refers to the physics file that this physics file uses for the ship when the ship is in combat. Roll is moving one wing up and the other down. So the max roll determines how much the ship banks when turning. Again you can change this as much as you like without going back to Starfleet Academy. The turn radius, in meters. Your turning ability drops off as you slow down, but even when you're not moving, you can still rotate in place slowly. The first number is, when you're stopped, what fraction of max turning speed you have, out of 1.0. The second number is your velocity, in m/s, when the coefficient has climbed to 0.5. Pitch is moving the nose up/down. The bigger the pitchRotationSpeed, the faster the ship can enter/leave a dive or climb. maxPitch is the maximum climb or dive angle, in degrees. This MUST be less than 90, although 89 is ok Roll is moving one wing up and the other down. Analogous to the pitch controls above. frontBackInertia: the bigger this number, the longer it takes to get up to speed. Bigger ships should have larger inertias, as this helps give the illusion of mass. This is as a fraction of impulse speed. When the ship changes it's facing, it's velocity doesn't instantly change to the same direction. When it's pulling a tight turn, if you look closely, you'll notice them "skidding" like someone doing a handbrake turn during a car chase. These inertias control how much skidding, basically. They should be much smaller than the

pitchRotationSpeed = 0.0667 maxPitch = 45

rollRotationSpeed = 0.5

frontBackInertia = 50

maxReverseSpeed = 4.0 upDownInertia = 7.5 leftRightInertia = 7.5

frontBackInertia.
// Generic control parameters braccelControlStiffness = 4.0 // ServoYaw parameters sy_yawAngleCoeff = 1.497 sy_yawVelocCoeff = 0.2 // ServoPitch parameters sp_pitchAngleCoeff = -1.197 sp_velocAngleCoeff = 0.060

The rest of these are set automatically from the above parameters. If you only change the above parameters a little, you probably don't need to recalculate these. But if you change them a lot, you'll need to. They control the control loops, things like how far ahead to start coming out of a turn or when to start braking. If these are set all wrong, you'll get poor performance from the vehicles. You may not even notice. For example, the ship might start breaking long before it needs to, and get slower and slower as it approaches the destination, when it could break at the last minute. The speed that the rotation of a Borg ship accelerates to its max speed These are all commands found in the race defining odfs. They set all the specifications for the race. Races name, this is the name that the game uses in scripts and interfaces to select the appropriate files for things like AI files. This defines the name of the file that is used to define the GUI layout for the race. This is the slot that the race uses on the dropdown selection menu of the Instant action game setup screen, the first slot would be number 0. This defines whether or not the race can play certain types of games in instant action. To be able to play certain types of games the race must be able to collect specific resources or be able to colonize planets. For example the borg are not able to collect latinum (without modding them that is) so they cannot play collect latinum games.

rotationStiffness = 1.0 rotationAcceleration = 2.0

Race odf commands


name = "borg"

displayKey = "GUI_RD_BORG"

instantActionSlot = 1

canPlayCollectLatinum = 0 canPlayColonizePlanets = 0 canPlayCaptureTheFlag = 0

officerRes = "GUI_CP_BORG_OFF_RES" officerTooltip = "GUI_RD_BORG_OFF_TOOLTIP" officerVerboseTooltip = "GUI_RD_BORG_OFF_VTOOLTIP"

creationLabel = "ADM_ASSEMBLED" recycledLabel = "ADM_RECYCLED"

interfaceConfiguration = "gui_bor.cfg" interfaceSprites = "gui_borg.spr"

singlePlayerMusic = "mbor300.wav" multiPlayerMusic = "mbormp300.wav" transportSprite = "btransport" repairStrength = 0.8f

boardingStrength = 1.75f

retreatStrength = 0.0f crewRetreatRatio = 0.2f

These define the tooltips and descriptions/names for the officers or officer equivalents for the race. In A2 tooltips are defined in the file: Dynamic_Localized_Strings.h in the Armada 2 main directory. For example the Borg use Power Nodes instead of officers. These define the labels used for creation of the Admirals Log at the end of a game. It refers to the listing in the Dynamic_Localized_Strings.h file that tell the game what the race calls it when they build or recycle a ship, so that when that Admirals log is made it used these terms for the race. For example when the borg build a ship they call it Assemble and when they decommission a ship they call it Recycle. These specify the files used to create the races GUI (Graphical User Interface) the first one (the .cfg file) is the file that defines the placement of the parts and which parts are there and not there for the interface. The second file (the .spr file) defines what graphic files to use and what the parts are, and where they are positioned in the actual TGA files that have the interface graphics in them. These specify the .wav (sound file format) files that contain the music for single and multi player games for this race. This specifies the sprite name for the transporter effect for this race. This defines how fast the race repairs, the larger the number the slower they repair. This is how strong the race is at fighting as or against boarding parties, higher is stronger and 1.0 is an average strength. This defines when the race will retreat from battle if controlled by the AI, the

crewAccumulationRate = 4.0

planetCrewAccumulationModifier = 1.5

cityTextureName = "BORG"

numCities = 35.0

atmosphereTint = 1.0 1.0 1.0

crewYellowStatus = 0.5f crewRedStatus = 0.25f

repairYellow = 0.8f repairRed = 0.6

first line is the % of shields. When the ship is below that % they will retreat. The second line is the % of the crew that remains on the ship. When the ship is below that % they will retreat. In the example shown the race would not retreat until the shields were gone and the crew was down to 20%. Most likely retreating, by then, would be too late. This number effects 2 things, first it is the number of crew accumulated per second per starbase. (In A1 &A2) It is also the number the civilian accumulation is based on for a colony planet owned by this race. (In A2) Now the colony rate is also modified by other factors too, so it may not always be this specific number. This IS the base number before any modifiers are applied. This is a modifier that adjusts the rate of crew accumulation for starbases near a planet in A1, this is present in A2 but seems non functional. This is the name of the texture used to show cities on the surface of a colony planet owned by this race. The number of cities that should be shown on the surface of a colony planet owned by this race. This is the R,G,B intensity used to adjust the look of the atmosphere on a colony planet owned by this race. Setting these intensities as follows should make the atmosphere a dirty grey color. 0.5 0.5 0.4 These are the % that the crew enters different status. The first is the % it enters yellow status 0.5 = 50%. The second is the % it enters red status 0.25 = 25 % These are the modifiers for repair rates when in the yellow and red status. Since these are modifiers they are numbers that the base speed is

weaponYellow = 1.5f weaponRed = 5.0f

officerUpgradeODF = "borgoff"

minimalUnits1 =

standardUnits1 standardUnits2 standardUnits3 standardUnits4 superUnits1 superUnits2 superUnits3 superUnits4 = = = =

= = = =

transportToFriendsOnNotEasy = 0 transportToEnemyOnHard = 0

canCommandeer = 0 canBeCommandeered = 0

multiplied by to get the new value. So a number below 1 will decrease the original value and a number above 1 will increase the original value. These are the modifiers for weapon delay rates when in the yellow and red status. Since these are modifiers they are numbers that the base speed is multiplied by to get the new value. So a number below 1 will decrease the original value and a number above 1 will increase the original value. In this case the number is made greater because it represents the Delay between shots. This specifies which file is used for officer upgrades for this race, although in A2 the stations are not setup for officer upgrades, the references are still there. These are the units you get if you start a game with minimal units. This is basically just the name of the races construction vessel. These are the units you get when starting a game with normal units. Usually a couple construction ships and a base and a scout. These are the units that you get when starting a Super side game, these usually include a construction ship from each race. Note, although these parameters are still in A2 this type of game does not exist in A2. These are Settings for the AI to determine whether to transport crew to friendly vessels for support or to transport crew to enemy ships to try and commandeer them. These are dependent also on the difficulty level of the game. For friendly support it is only if the game is not on easy. For commandeering it is only if the game is on hard. These are yes/no questions. These are Parameters to set if the race can capture enemy vessels or if their

affectedByPsionicInsanity = 0

recycleDilithiumFraction = 1 recycleMetalFraction = 1 miningRateModifier = 2.0 insufficientOfficersEvent =

normalBiomatter = normalDilithium = normalMetal = normalLatinum = normalCrew = LotsBiomatter = lotsDilithium = lotsMetal = lotsLatinum = lotsCrew = canTrade = 0;

vessels can be captured by enemies. These are yes/no questions. This sets whther or not this race is effected by Psionic insanity weapons, this is a yes/no question The ratio that this race recycles metal or ditithium. 1.0 is perfect recycling as in 1 to 1 recycling How fast relative to normal (1.0) does this race gather resources The name of the event to refer to when this race runs out of officers (or the races equivalent of officers) The amount of each resource the race gets when starting a game with resources set on normal. The amount of each resource the race gets when starting a game with resources set on lots. This specifies whether or not the race can trade with other races. . This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it.

In the races odf there is also a list of sound commands that specify which sounds are played for various events like beginning construction and your base being attacked, these are very self explanatory and I am not mentioning theme here individually.

Commands for other Miscellaneous Things


scrapCost = 0 scrapValue = 1 maxHealth = 100 maxAmmo = 0 heatSignature = 0.02 imageSignature = 0.02

These are commands that dont really fit into their own category, mostly commands for map objects. Some of them are the same commands used by stations or weapons also. These are all parameters for asteroids but they are all basically useless, changing them does nothing anyway. These are also only from the file for a single asteroid not the group of them

radarSignature = 0.01 sampleRate = 44100 bitsPerSample = 16 distanceFactor = 0.01 dopplerFactor = 1.0 rolloffFactor = 0.15 minimumDistance3D = 50.0 maximumDistance3D = 2000.0 streamBufferLength = 2.0 streamBufferSections = 2 AnimationTime = 2.0f

that you would see in the game These are audio property settings and it highly recommended that you do not alter them.

ClosedScale = 2.5f

OpenScale = 3.0f

Rotation = -0.6f DisableTimer = 10

red_glow = green_flow = blue_glow = glow_falloff_start = 60.0 glow_falloff_range = 60.0 SpeedEffectRange MaxSpeedFactor = ScaleEffectRange MaxScaleFactor = = 75.0f 5.0f = 75.0f 2.0f

avoidMe = 0

mapIcon = "" openSound =

Time it takes to play through the animation one time from start to finish. The scale of the sod when the wormhole is completely closed, this is the scale in relation to the actual size of the sod model itself. The scale of the sod when the wormhole is completely open, this is the scale in relation to the actual size of the sod model itself. Sets the rotation of the wormhole. The amount of time from starting to enter the wormhole that weapons are disabled. This is basically set so that you have to be completely out of the wormhole before you can fire at enemies on the other side of it. These set the color of the light that is inside the wormhole or other map object. It is in R,G,B color intensity. The starting intensity and range for falloff for the light in the object. These affect how the ship moves into the worhole, when it starts to speed up when entering and when it starts to stretch, and the maximums for these factors This is to tell the game that ships do not have to try and avoid this object, this can be used for almost any object, station or ship in the game, if you want ships to be able to pass through or over it. This is a yes/no question This specifies the icon used to represent this object on the mini map The sound that is used when the

Check this

ColorDisabled = colorNormal = colorMouseOver = colorActive = colorPressed = colorBorderDisabled = colorBorderNormal = colorBorderMouseOver = tooltipDelay = 0.5

wormhole or other object opens up. These are commands for the different states of the buttons in the game, I would recommend not altering them unless you really know what you are doing. This controls the time in seconds that you have to hold your mouse over the unit before the tooltip pops up. Is this object visible on the map? This is a yes/no question. This specifies an item on the map editor menu. All items should have sequential numbers and should not exceed 12 items in each list. This specifies the name of the menu, it should be in quotes. And have a space between the = and the first This goes in the main map editor odf and lists all the names of the main menus Specifies the nebula type, the options are: Radioactive = 1 Metreon = 2 Mutara = 3 Metaphasic = 4 Cerulean = 5 Fluidic = 6 This is the radius of the nebulas (or other objects) effect, this is not the size of the object itself but only the area that it affects, this could be smaller or larger than the actual object itself. This is the cost of pathing through this nebula or object. This in its most basic sense means that the game evaluates this value and decides whether it is greater or less than the pathing value that it would take to go around this object. If the going through it value is lower than the going around it value, then it will go through it instead of around it and vise

hidden = 1 item1 =

menuTitle =

menuName1

nebulaType = 6

effectRadius = 300

pathing_cost =

disableWeapons = 0 disableShields = 0 disableSensors = 0 disableCrew = 0 disableCloak = 0 damageValue =

lifeTimer =

hideContents = 1

mapSprite = "map_nebula5"

mapSize = 5

dont_load_SOD = 0

min_speed_change = 0.0025 speed_change_period_divisor = 0.3 speed_change_range = 0.6

one_in_n_chance_of_light_source =

versa. The higher the pathing cost the less likely it is that your ships will go through the object when traveling around the map. This is especially apparent when a ship is placed on seek and destroy or explore. These are setting that determine what systems, if any that the object disables. These are all, yes/no type questions with 0 being no and 1 being yes This sets the amount of damage that the object does to the ships/stations that are inside it, in points per second. This is the amount of time in seconds that the object stays on screen, if set to 0 then the object is permanent, and does not disappear. Should objects inside this object be hidden from sensors? This is a yes/no question. The sprite that is used on the mini map to show this object. This is different from the mapIcon command because this one is a sprite and not just an icon. This is the size to make the sprite mentioned above in relation to its preset size in the sprite files. This tells the game whether or not to load a sod for this object or whether it is generated in code instead, this is almost exclusively used for nebulas, it is a yes/no question. These control how the light inside the object pulsates, they are the minimum and maximum speed of the change and the amount it changes with each step in the change. This sets the possibility of getting a source of light when generating this object, the number after this, is, the number that you have a one in xx chance of getting the light source, where xx is the number you use. So if this number is 5 then you have a 1 in 5 or 20% chance of getting a light

red_glow = 0.0 green_glow = 0.5 blue_glow = 0.0

red_glow_range = 0.0 green_glow_range = 0.5 blue_glow_range = 0.0

glow_falloff_start = 60.0 glow_falloff_range = 60.0

craft_speed_coefficient = 0.5 craft_speed_limit = 0

craft_max_speed_fraction = 0.5

resource =

ghostAmbient = 0.1 0.1 0.1 ghostDiffuse = 0.1 0.1 0.1 ghostSpecular = 0.0 0.0 0.0

source for it. Once you get the light source, this sets the color of it. These are R,G,B intensities of the light. The example to le left would be a pale greenish color light. These control the amount of variance in the light, what colors in the light change when it pulsates. These are R,G,B intensities of the light. The example to le left would be a pulsating from the pale greenish color light set in the parameters above to a darker more intense green and back to the pale greenish. This is the how the lights brightness changes when it pulsates, the first is the brightness it starts at and the second is the range that is changes. With this example the light will go from full intensity to nothing and back again because the numbers are both the same. These set how the ships inside the object are slowed down once they enter the boundaries of this objects influence. This is because ships do not instantly slow down when entering it, they gradually slow to the speed determined in the setting below. The first is a multiplier. The second is the cap for the maximum that it can be slowed down. Set this to 1 to make it have no limit, it is usually set to 0 or 1. This is the % of the ships maximum impulse speed that the ship can travel while inside this objects range of influence This sets what resource this object contains. It should be able to be any of the resource types but it is mainly used for latinum. This controls the lighting for objects under the Fog of war. Basically making the have just enough light to

ghostTeamColorFactor = 0.5

minAsteroids = 4 maxAsteroids = 8

fieldRadius = 100

orbitingSpeed = 1.0 rotationSpeed = 0.2 repelIfWithin = 0.7

be seen as darkened objects but not enough to see details. These are settings I wouldnt recommend changing. This is the adjustment for the darkening of the team colors. These are settings I wouldnt recommend changing. These are settings used for asteroid fields, it tells the minimum and maximum number of individual asteroids to have in each asteroid field sod. This sets the bounding spheres of all asteroids so that they will stay within this distance of the center of mass. How fast the asteroids move. This is for orbiting movement only. How fast the asteroids rotate. When asteroids are far from each other, they attract. But when they get close to each other, they repel. This is the distance where repulsion and attraction exactly cancel, as a fraction of fieldRadius. Closer than this they repel; further, they attract. This is the distance that the gravity form a black hole or similar object reaches, from the center of the object. Disabled ships within this radius will be attracted toward the object. This is the Radius in which the event horizon occurs. In other words the distance from the center that a ship pulled into this object would disappear. For map objects that are resource sources, this determines how much of the resource is present in the object. This tells the game to refer to another file to define the resources and parameters for this object. This will be the name of a file but will not have the odf extension on it. Options are:
"ResourceMoon" "ResourceMoonInf"

GravityRadius = 450

EventRadius = 70

maxHealth = 20000

resource = "ResourceMoon"

spatial_object = 1

has_resource = 1

AnimFrames = 16 AmimDuration = 2.5 AnimTexture = "mgate"

PlayAnimForwards = 4.5 PlayAnimBackwards = 10.5

infinite = 1 canWeBuildInHere = 1

crewModifier = 1.2

particleTexture = "particle.0" particleFrames = 16 initDelay = 0.5 frameDelay = 0.1 setAltitude = accelDragStop = accelDragFull = alphaTrack = alphaDamp = pitchPitch = pitchThrust = rollStrafe = rollSteer = velocForward = velocReverse = velocStrafe = accelThrust =

Defines if this object is a spatial object, this is a yes/no question. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. Does this object have a resource in it , this is a yes/no question. This is used for the commands that the ship can use, it determines if the button for an action related to this is present when you click on a unit with this line in it. These are used mostly for wormholes and they control the texture animation for the objects model. The number of frames it has, time it takes to play and the name if the texture. This controls the physical animation inside the sod itself, it tells how to play the animation. In this example it says to play the animation forward for 4.5 seconds and then play it backwards for 10.5 seconds Sets the resources for this object to infinite. This is a yes/no question. This determines whether you can build inside this object. Some map objects like Tachyon nebulas can be build inside The modifier that controls how fast the crew accumulates at a starbase built close to this object. These are settings for particle sprays, they are not really something that would need to be edited These are all things left over from BattleZone (the game that the original Armada engine was based on) None of these settings are currently active in the game anymore but I figured I would list them since someone will see them and tell me that I forgot some commands. But trust me these are all totally useless commands.

omegaSpin = alphaSteer = accelJump = soundThrust = soundTurbo = periodScan = velocJam = weaponHard1 = weaponName1 = weaponMask= shotSound = ammoCost = damageBallistic = damageConcussion = damageFlame = damageImpact = expireOnClose = 1

numberOfRaces = 8

race0 = "borg.odf"

isInfinite = 0

amtLatinum = 2000 amtDilithium = 20000 amtMetal = 24000 amtBiomatter = 32000 miningRate = 10 canHaveOrbitalStation = 0 trickleMiningRateFraction = .2

This makes the object disappear after it closes, it is used for temporary wormholes that are created by a weapon. This is a yes/no question. This is for setting how many races are in the game, by default this is 8, the 6 playable races plus the ferengi and the norace (which is used for planets that have the unpopulated name on them before they are colonized.) This is how the races are listed in the race list, they should be numbered consecutively starting at 0 and going up. Each entry is the name of an odf file that holds the races specifications in it. Sets whether this resource supplier is infinite (has unlimited resources) This is a yes/no question Sets the amount of resources the object has. An object can have one or more resources. The rate at which the resource is mined from this object Specifies whether this object can have an orbital station built around it. A modifier that sets how fast resources can be mined from this object once the resource amount reaches the amount specified in the parameter below. This is a % of the miningRate specified above.

trickleAmount = 100

smokeFrames = 16 smokeLifetime = 1.6 smokeRadius = 1.5 smokeScale = 1.0 smokeWhite = "lsmoke" smokeTan = "msmoke" smokeBrown = "dsmoke" smokeBlack = "bsmoke" steamFrames = 16 steamLifetime = 1.6 steamRadius = 2.0 steamScale = 1.0 steamTexture = "lsmoke" sprayFrames = 16 sprayLifetime = 1.6 sprayRadius = 2.0 sprayScale = 1.0 sprayTexture = "lsmoke" bstar.0 = 750 mstar.0 = 1 cstar.0 = 2 mstar.0.scale = .40 cstar.0.scale = .30 bstar.14.scale = 40 empty = white = red = blue = green = yellow = purple = cyan = brown = orange = pink = magenta = gray = black = ferengi = dominion = klingon = romulan = borg =

This specifies the amount of resources that is the threshold for the trickleMiningRateFraction. For example in the statement to the left it would work like this: Once the resource amount reached 100 then the trickleMiningRateFraction = .2 would take effect and reduce the miningRate = 10 to miningRate = 2 Various settings for smoke effects and trails. These shouldnt need to be changed.

Settings for star fields and backgrounds for various star densities and sizes. These are all settings for team colors and are all followed by R,G,B values for the color desired for the race. Yjere is really no need to change these that I can think of. Many new user made models have no team color geometry to them anyway so for most user made models these settings would be useless.

federation = cardassian = breen = sona = alien = brickred = burntsienna = ceruleanblue = species8472 = techfile0 =

This is where you set the names of the tech tree files and works similar to the races and build lists in that they should be in numerical order and should start at 0 like in the example to the left. This should have the name of the tech tree file in quotes after the = and one space like this:
techfile0 = "tech1.tt" techfile1 = "nosuper.tt"

explSound = "xplbldgb.wav" dbName = length = 3.5 shockwave = "xshock"

shockwaveDelay = 0.6

shockwaveMinimum = 40.0 blameTheShooter = 1

waveHeight = 100.0;

topEdgeModifier = 0.5

The name of the sound file played when this explosion starts. The name of the sod used in this explosion. How long this explosion lasts, or is actually on the screen. The shockwave to use with this explosion. This is an odf name without the odf extension added. The delay between the start of the explosion and the start of the shockwave. The minimum distance that the shockwave covers This specifies whether to blame the shooter in other words Do damage to ship that destroyed the ship with the shockwave more than other ships in the area. The height of the wave, this is only compatible with waves that use the "omegaexplode" classLabel. It makes the wave look more 3d but using this label has drawbacks like the fact that it does no damage. This sets where the top and bottom outer edge of the wave are in relation to the center outer edge is. This is difficult to explain. For example with

Double check

Command Odf commands

commandNames = "recrew.odf" "transport.odf"

commandHotkeys = "recrew" "recrew.odf"

source = "alert"

the setting to the left the wane would be 3 dimensional and have the top and bottom edge 50% of the way beteen the inner edge of the wave and the outer edge of the wave. This would make the wane edge look similar to > from the side. This is only compatable with waves that use the "omegaexplode" classLabel. It makes the wave look more 3d but using this label has drawbacks like the fact that it does no damage. That sounds somewhat redundant but none the less there are a new set of odf files included with A2 that are called commands they control what the buttons and orders do for the ships. Although I have not tried, I would assume these are also editable and it would be possible to add new commands to the game also. All these are A2 specific. I do not claim to know the intricate details of these YET but I will tell you what I do know and use the default explanations for what I don not know. This is where all the command odf file names are listed. If you were to add a command you would need to add the name of the new odf file to this list. This is where the hotkey name and the odf file name that relates to it are listed. The first name is the name of the hotkey listed in the file input.map in the Armada 2 main directory. The second is the name of the corresponding odf file that controls what this command does. The source can be a list of strings, just spaces separating them. For example --- source = "combat" "mobile" this will require that the source have both those abilities. The options are:
"trade_station", "alert", "combat", "assault",

"colony_ship", "ship", "facility", "cargo_ship", "miner", "SHOW_MOVEMENT_AUTONOMY", "builder_ship", "has_crew", "recycler", "can_repair", "repair_ship", "can_sandd", "can_explore", "SHOW_SW_AUTONOMY", sourceNot = "planet"

Designates what the source must NOT be. Options are:


"planet",

dest = "has_hitpoints"

This specifies what the requirements for the target are, in this case the target has to have hitpoint to be allowable as an attackable target. Options are:
"has_crew", "has_hitpoints", "planet", "has_resource", "ship", facility", "spatial_object", "trade_station"

menu = "ai"

This is the name of the menu this command is on. Options are:
"trade", "ai", "orders", "build", "normal",

buttonName = "attack" tooltip = "GUI_CP_ATTACK_TOOLTIP" verbose = "GUI_CP_ATTACK_VTOOLTIP" commandName = "ATTACK" preferredPosition = 0 0

needsTarget = 1

param = 2

displayTrade = 1

The name of the button used for this command. The tooltip references for the command. They are in the same file as the ship tootips are. The name of the command. This is what shows up before the tooltip. This is the preferred position of the button for the command. The last two numbers are not needed, but we're reading these in as RECTs, there's no mechanism for loading 2d points. Does this command need a target to complete the order? This is a yes/no question just like it is for a weapon. This takes an integer param to QueueCommand, which is the number of the resource. CREW = 0, OFFICERS = 1, DILITHIUM = 2, LATINUM = 3, METAL = 4, Do we display the trade menu for this

isBuy = 1 sourceTypeOr = 1

command? Yes/ no question Do we display the buy menu for this command? Yes/ no question unknown

Chapter 5 Classlabels Classlabel Lists


You have seen me refer to classLabels many times now, so I will explain what they are. ClassLabels are the hard coded definitions of what certain things do in the game, somewhere along the line every odf file for every ship, station, weapon, ordinance etc is linked to a classLabel. Every odf must contain a classlabel or at least a link to one, either as an ordinance file, or by using the include xxxx.odf line, where xxxx.odf contains a link to another file with one. This rule is unnegotiable. The only odfs that arent linked to a classLabel are command and physics odf files. Also, there cannot be two classlabels in one file. In a case like this, the result is a total crash of the game. However there are labels that can be accessed through command lines, (i.e. toggle = 1 for a toggle weapon) and the rule does not extend to include them. These classLabels control many aspects of a units or weapons behavior and capabilities. Weapons have a classLabel for the weapon itself and one for the ordinance that the weapon uses (if it uses an ordinance) the first one tells how the weapon is fired and the ordinances classLabel tells how the ordinance behaves and what it does to the target. Most classLabels are compatible with certain others and not compatible with the rest. Some classLabels use sods for their graphics and others use sprites. Basically the classlabels control and limit what you can and cannot do with different types of weapons. The compatibility of different classLables with one another is a vast subject and requires a lot of time and experimentation to determine. The classLabels are part of the game and cannot be changed without hacking the code for the game, therefore we must use what the developers have given us to make weapons we want to make for the game. There are a lot of classLabels and we can accomplish many things by learning the rules of them and doing our best to bend those rules, however we cannot break these rules. Also most commands mentioned in the vast list above are only compatible with certain classLabels some of them can be used in multiple types but many are label specific and will either do nothing when used in another label or they will cause a crash of the game.

Ship and Station classLabels


classLabel = "evolver" classLabel = "starbase"

Evolver for 8472, Makes one unit change into another unit through evolution Starbase

classLabel classLabel classLabel classLabel classLabel classLabel

= = = = = =

"mining" "cargo_ship" "colony" "constructionrig" "craft" "RepairShip"

classLabel classLabel classLabel classLabel classLabel classLabel classLabel classLabel classLabel classLabel classLabel classLabel

= = = = = = = = = = = =

"scavenger" "freighter" "shipyard" "minearray" "upgrade" "sensor" "trading_station" "p_mining" "planet" "pod" "research" "planet_shield"

Mining station Cargo ship Colony ship Construction ship Standard Combat Ship Repair ship - Note Repair ships are somewhat unique in that the weapon it uses is only for a graphical effect and does not actually do the repairing, the repair ship itself does the repairing and re-crewing. The RepairShip classlabel and these settings in the odf file make it so that any ship targeted by the repair ship gets repaired at the specified rate, the weapon is there just as the way to target and for looks. Pirate ship Mining Ship Shipyard Orbital Mining Array Officer Upgrade Sensor Station or Turret Trading Station Planetary Mining Station Planet Research Pod Research Station Planetary Shield

Standard Weapons classLabels


ClassLabel = "cannon"

ClassLabel = "phaser" classLabel = "shieldremovingtorpedo" ClassLabel = "photontorpedo" ClassLabel = "launcher"

Cannon Label for Phasers It tells the game to give the sprite a linear trajectory. Cannon Label for Phasers ordinance Borg Shield Removing torpedoes Photon Torpedo Ordinance Photon Torpedo Used when we want to treat graphics as one, non linear projectile. Used mostly when animated textures or sods are involved. Beam effects should not be used in conjunction with the launcher classLabel Shock waves Pulse Phasers

ClassLabel = "shockwavexplode" ClassLabel = "pphaser"

Special Weapons classLabels


classLabel = "accelcannon" classLabel = "antimine"

classLabel = classLabel =

classLabel = classLabel = classLabel =

classLabel classLabel classLabel classLabel

= = = =

classLabel = classLabel =

classLabel =

classLabel = classLabel = classLabel = classLabel =

classLabel classLabel classLabel classLabel

= = = =

Plasma Cannon Antimatter Mine Ordinance used to make mines (defined as such from a different classLabel ) explode upon impact. "blackholecreator" Romulan Phoenix Ship weapon "borgbore" Borg Assimilation Beam Assimilates crew from the target and adds it to the crew pod "containbreach" Containment Breach "ColonizerPod" Colonizer, Pod type "chainpulsar" Chain Reaction Pulsar makes the shot hit a few targets one after the other, like a snooker ball, increasing its power after each hit. "clairvoyance" Clairvoyance 8472 "CvoyantLink" Clairvoyant Link 8472 "colonybm" Borg Colonizer Beam type "deathchant" Klingon Death Chant Boosts the performance of ships under its effect. Can also be used negatively. "borgenergyemitter" Special Energy Recharging weapon label "esconverter" Shield Projector Restores the targets shields using the special energy of the ship that triggers it "fedrepairteam" Federation Repair Team Instantly restores all damaged systems and restores shields to a pre-fixed percentage. "fluxwave" Flux Wave, disables engines and sets target spinning "toggleweapon" Weapon that can be turned on and off by clicking the button again. "holding_bm" Holding Beam Holds target in place and beams crew aboard it. "minelayer" Antimatter Mine (gravity mines, CRP) used to make object and projectile weapons float in space and automatically track the nearest target or the first enemy that enters within a certain perimeter. "biopulse" 8472 Biopulse Weapon "areacannon" Multi Targeting Cannon "areamissile" Multi Targeting Missile launcher "rangedobjectaffector" Enhancer This can effect things within its range, either weapons of friendly ships or

classLabel = "cloakingdevice" classLabel = "reflectweapon"

classLabel = "fusingweapon" classLabel classLabel classLabel classLabel classLabel classLabel classLabel classLabel = = = = = = = = "separatingweapon" "detectcloak" "drones_weapon" "wormholegen" "hologen_weapon" "TargNeb" "NebGeneration" "phasecloakdevice"

of the host ship, there are different settings listed in the commands section that control what system or weapon is effected by this classLabel. Cloaking Device Corbomite Reflector has the ability to reflect beams or missiles or both. Fusion weapons Like the Cube and Galaxy integrators. Used as a separator. Cloak detection Drone Weapon Used to generate a wormhole
Holo-Generator 8472 Nebula Flux 8472 Nebula Generation

classLabel = "PointDefenseLaser" classLabel = "quantumeffect" classLabel = "regeneration"

Phase Cloaking Device Used like cloak except it makes the ships under it to ignore other solid objects. Point Defense Laser Used to shoot down incoming torpedoes
Quantum Singularity Effect

classLabel = "gravmine"

classLabel classLabel classLabel classLabel classLabel classLabel classLabel

= = = = = = =

"selfdestruct" "techassim" "transRiftWeapon" "transwarpconduit" "speed_boost" "HoloGenerator" "holoemitter"

Regeneration Uses the ships specially energy to increase the ships repair rate. Gravity Mines Used to make mines (defined as such from a different classLabel ) attach on the target and slow it down. Self Destruct Technology Assimilator for a Station
8472 Transient Rift

Defines a trans-warp gate


Impulse Engine Boost

classLabel = "ionstorm_tp" classLabel = "KlingonCommandoTeam" classLabel = "micro" classLabel = "minebm" classLabel = "ionstorm_obj"

Holographic Generator Holographic Emitter Used to make all ships effected by it appear like enemies Ion Storm Torpedo Used to generate any map object Klingon Commando Team Used to drain the special energy reserves of the targets Mining Beam Ion Storm Object (nebula) Used to define the map object created by the ionstrom_tp

classLabel = "u_ball_obj" classLabel = "myotron" classLabel = "nanitesordnance" classLabel = "nebulaflux"

classLabel = "NebCreator"

classLabel = "PsychonicBlast"

classLabel = "override" classLabel = "PDLBeam" classLabel = "plasmacannon" classLabel = "polerontorpedo" classLabel = "posijammer" classLabel = "psiDisrupt" classLabel = "insanity"

classLabel = "manheimeffect"

classLabel = "remodulation"

classLabel Ultruim Burst Object Used to define the map object created by the ultrium burst Myotrinic Inhibitor Used to disable the engines of the target. Nanites (ordinance label) Used to scramble the interface. Flux Nebula - When fired into a Metreon, Radioactive, Metaphasic, Cerulean, or Mutara nebula, this weapon causes a destructive reaction that spreads from the center of the nebula to its outer reaches. Nebula Creator This special weapon creates a special fluidic nebula around the a ship that prevent other races from building within its boundaries. It also creates warp inhibitor fields that prevent ships from using warp. Psychonic Blast Basically a regular beam weapon with a built-in percentage for taking out crew. Computer Override Used to temporarily take over the target. Point Defense Laser Beam (ordinance) Used to shoot down incoming torpedoes. Plasma Cannon is capable of inflicting heavy damage on planetary targets. Poleron Torpedo Disables a targets random system. Sensor Jammer Disables sensors. Psionic Disruptor - a weapon that renders its target incapable of action. Psionic Insanity- ordinance-This special weapon affects its target in such a way as to make it unable to distinguish between friend and foe, causing it to fire at any ship within range. Gemini Effect Used to duplicate the target for a limited time. Shield Remodulation When used, makes the targets shields immune to all weapons for a pre-fixed amount of time. Do not be misled to assumptions here. Only the shields remain

classLabel = "resourceExtractionBeam classLabel = "rfield" classLabel = "RomulanSpy"

immune! Crew deaths dew to damageThreshold and CrewModifiers still occur. Extraction Beam for Species 8472 Repulsion Wave- ordinance-Repels an enemy target and disables its engines. Romulan Spy - Transports a Tal Shiar operative onboard an enemy target to give line of sight of enemy vessels. Repulsion Wave Used to disable engines. Also pushes target to the opposite direction. Shield Harmonics Disruptor - can lower the shields of an enemy ship for as long as the special energy permits. Once the effect is over, the target ship's shields will return to normal. Ordinance - Disables the shields on an enemy target for a brief period of time. Shield Inversion Beam Used to steal the shields of the target and use the energy to restore the shields of the triggering ship. Shield Emitter Ordinance- Recharges the shields of nearby allied ships Tech Assimilation Beam (for cubes) Temporal Stasis Field Used to freeze time in a set area around the target location, stopping all enemy ships from moving. Tractor Beam Transient Rift This special weapon allows a vessel to travel to any point on the map. Transwarp Drive Used to teleport the triggering ships to a different explored location. Ultruim Beam (ordinance) Warpcore Overload - Temporarily disables the engines of multiple enemy vessels. These are things like map objects. Label for single asteroids Wormhole Neutral objects like ambient lights Latinum nebulas

classLabel = "repulsionwave"

classLabel = "shield_disruptor"

classLabel = "shieldh" classLabel = "shieldinv"

classLabel = "fedshieldemitter" classLabel = "tech_assim_beam" classLabel = "temporal"

classLabel = "tractor_bm" classLabel = "trans_rift" classLabel = "transwarpdrive"

classLabel = "utribeam" classLabel = "warpcoreoverload"

Other Game Objects ClassLabels


classLabel classLabel classLabel classLabel = = = = "asteroid" "wormhole_obj" "background_obj" "latinum"

classLabel = "asteroidfield" classLabel classLabel classLabel classLabel classLabel classLabel = = = = = = "blackhole_obj" "scrap" "planet_obj" "grenade" "fireballexplode" "omegaexplode"

Asteroid fields, groups of asteroids not just single ones. Blackhole Space debris Planets Useless leftover from BattleZone Fireballs and explosions. Omega particle explosion shockwave, this is a 3 dimensional wave with height but it will do no damage. It looks pretty but is basically useless from my experiences.

Chapter 6
Weapons making Section 1 Standard Weapons
Standard weapons include weapons like phasers and photons, they are weapons that rarely need to be targeted and fire automatically. This is not true of ALL Standard weapons but is a general rule that applies to most of them. For this section we will make a new phaser and a new photon torpedo. We will not make a new sprite for it yet but will get to that later. Instead we will make these new weapons stronger and more rapidly firing than the originals. For the purpose of learning we will make these weapons drastically stronger just so you can see the difference in the power easily, normally I would not recommend making weapons that are this much stronger than other weapons but this is for the purpose of learning and not for making a good game balance at this point. Also for this part we will use a full set of odfs instead of using the #include command, this way you will see more of the parameters for the weapons. However using the include command can be very useful if you just want to make a new weapon that has many of the same parameters as another weapon you already have, and basically only want to change the name and a few other settings for the weapon. I will show you how to do that after we make our new weapons. This part will be using the A2 files but the process is the same for A1. Ok here we go!

We are making a new Phaser first and it will be for the Federation.
1. Copy and Rename the file phaser.odf to fbigphas.odf 2. Copy and Rename the file phasero.odf to fbigphaso.odf 3. Now open the file fbigphas.odf and delete the first line:
//This is the main phaser odf file

We dont have to delete this but we will just for fun.

4. Now where we just deleted that line we will put thin one in there instead:
//Name of the ODF file for the ordinance for this weapon ordName = "fbigphaso"

This connects or links our 2 files together, making the fbigphaso.odf the ordinance file for our fbigphas.odf file. 5. So now we will do some editing of the weapon file that we have open already. 6. Lets give this weapon a new name, instead of :
//Display name for this weapon wpnName = "Phaser"

We will put:
//Display name for this weapon wpnName = "Big Phaser"

7. Now we will make it fire more often, change the :


shotDelay = 2.0f

to
shotDelay = 0.5f

So now instead of firing every 2 seconds our new phaser will fire every 0.5 seconds. Much faster than before. 8. Now under that you will see that there are 2 lines that read like this:
//range = 575.0f range = 600.0f

Now that would seem to make no sense, why 2 lines? Well to be honest this was something that they should have fixed before they released the game but we can do it now. So delete the line:
//range = 575.0f

Because it was commented out anyway and therefore ignored by the game. 9. Now we will make the weapon have a longer range, so change the line:
range = 600.0f

To
range = 800.0f

10. We will leave the fire sound alone and definitely leave the classLabel alone. 11. We will however change the hitChance setting, so change this line :
hitChance = 0.75 To hitChance = 0.96 Now instead of only having a 75% chance of hitting our target with this weapon we have a 96% chance, I like that better because we have good aim. But for learning purposes we are going to make this phaser have more trouble hitting the Feds small fast scout ship. So under the line: hitChance = 0.96 put this: "fscout.odf" 0.75

when you are done it should look like this:


hitChance = 0.96 "fscout.odf" 0.75

So now our new phaser only has a 75% chance of hitting the scout ship but has a 96% chance to hit all other ships, notice the fscout.odf is indented, this is not necessary but does make the file easier to read, so we do it anyway. Also notice that the fscout.odf is in quotes this IS necessary. 12. Ok we will leave the rest of it alone because we dont really need this to have different hitChance modifiers than a standard phaser. So save the file and close it. 13. Open the file fbigphaso.odf that we made earlier. 14. You can also delete that top line that says:
//This is the main phaser ordinance file

We dont need that line so we will dispose of it. 15. We leave the classLabel alone and move on to the next thing:
specialEnergyCost = 0

Well we dont want our new phaser to use special energy so we continue on to the next set of lines. 16. Now we see that good stuff, damage settings, we like damage so we will change the line:
damageBase = 24 to damageBase = 80

Now our phaser does over 3 times the damage it did before, but we are not done yet. 17. The next set of lines adjust the varience of the base damage, meaning it makes the damage vary depending on the number we set in this line:
damageVariance = 2

We will change this to:


damageVariance = 15

this makes our phaser do anywhere from 65-90 damage with each hit, because it is 80 + or 15. 18. Now it gets a little more complicated here, we will also change the next parameter:
damageThreshold = 25 to damageThreshold = 90

Ok now what this does is set the damage threshold to 90. You are probably asking yourself well what does that do? Ok well I will explain that, the damage threshold is a set number that when exceeded the amount of damage that is in excess of it is multiplied by the next 2 parameters that are the :
shieldCrewModifier = 0.2 and hullCrewModifier = 0.1

The best way to understand what these do is to use an example, So our new phaser hits a target and does the maximum damage possible 95 points of damage but the shields of the target are still up. Since our damage threshold is 90 that

means 5 points of the damage has exceeded the threshold. So the game takes that 5 points and applies the shieldCrewModifier = 0.2 to it, meaning it multiplies 5 by 0.2 and gets the number 1, so 1% of the crew of the target ship dies. Now once the shields go down on the target ship and the damage is being applied directly to the ships hull it would do the same thin but with the hullCrewModifier = 0.1 instead and it would get the number 0.5 so 0.5% of the crew would die. The again if the weapon only did 70 points of damage, since that is lower than the damage threshold, no crew would die. That is the way it is supposed to work, so sometimes changing these values differently, like making these modifiers very high or the threshold very low in comparison to the damage base, can cause the weapon to kill all the crew without destroying the ship itself. Or inversely, it could be set to always destroy the ship before the crew was killed and would never leave any derelicts. The modifiers are always like a %, 1.0 would be 100% meaning all the damage that exceeded the threshold would be applied directly as the crew kill percentage. So in our example but with the modifiers set at 1.0 the crew kill % would be 10 % and 5% instead of 1% and 0.5%. Ok but that is enough of that we are not going to change the modifiers here but I wanted you to understand what they were for. 19. We are also going to leave the next few settings alone because we do not need to change them for this weapon, but if you want to see what they mean refer back up to the command list in the standard weapons section. For now skip down to the line:
Radius = 4.0 So that we can see our new phaser better and to show that it is indeed a big phaser we are going to make it thicker by making the radius higher so change that to: Radius = 8.0

Now it will be 2 times thicker than a normal phaser and we will be able to see it firing easier. 20. This will make the weapon fire every 0.5 seconds, but we will only be able to see a single constant beam, or a second beam hitting a different spot on the target before the first one stops. This is because of this: spriteDuration = 1.0 In order for this to be restored to normal we should make the sprite duration less than 0.5. spriteDuration = 0.4 However, this will make the beam have very short bursts. Besides, it is rather cool to see the constant beam (IMHO) so lets leave it as it is If on the other hand you like the bursts idea then go ahead and change it. 21. Now we have finished our new phaser, save and exit the file. 22. Although we are done making the new weapon it is not equipped on any ship yet, so refer back to the section on adding a new weapon to a ship if you need to and put the new phaser on a Federation ship and test it. Dont forget to copy your files over to the corresponding directories in the actual game directory . Remember to play as the federation and I would recommend playing against the federation also so you can see that it is harder for our new phaser to hit the Fed scout than it

is for it to hit other ships. You should be able to see that the new phaser fires because it will fore faster and will be thicker than the other phasers on the ship.

Now we will make a new Photon Torpedo


1. Copy and Rename the file photon.odf to fbigphot.odf 2. Copy and Rename the file photono.odf to fbigphoto.odf 3. Now open the file fbigphas.odf and delete the first line:
//This is the main photon odf file

We dont have to delete this but we will just for fun. 4. Now where we just deleted that line we will put thin one in there instead:
//Name of the ODF file for the ordinance for this weapon ordName = "fbigphoto"

This connects or links our 2 files together, making the fbigphoto.odf the ordinance file for our fbigphot.odf file. 5. So now we will do some editing of the weapon file that we have open already. 6. Lets give this weapon a new name, instead of :
//Display name for this weapon wpnName = "Photon Torpedo"

We will put:
//Display name for this weapon wpnName = "Big Photon Torpedo"

7. Now we will make it fire more often, change the :


shotDelay = 1.3f

to
shotDelay = 0.5f

So now instead of firing every 1.3 seconds our new photon will fire every 0.5 seconds. Much faster than before. 8. Now under that you will see that there are 2 lines that read like this:
//range = 575.0f range = 600.0f

Now that would seem to make no sense, why 2 lines? Well to be honest this was something that they should have fixed before they released the game but we can do it now. So delete the line:
//range = 575.0f

Because it was commented out anyway and therefore ignored by the game. 9. Now we will make the weapon have a longer range, so change the line:
range = 600.0f

To
range = 800.0f

10. We will leave the fire sound alone and definitely leave the classLabel alone. 11. We will however change the hitChance setting, so change this line :
hitChance = 0.5 To hitChance = 0.96

Now instead of only having a 50% chance of hitting our target with this weapon we have a 96% chance. Now you can see that this photon already has some ships specified with special hitchances, mostly all big ships in the battleship class. But for learning purposes we are going to make this photon have more trouble hitting the Feds small fast Venture class scout ship like we did for our phaser. So under the line:
hitChance = 0.96 put this: "fscout.odf" 0.5

when you are done it should look like this:


hitChance = 0.96 "fscout.odf" 0.5 "bbattle.odf" 1.0 "fbattle.odf" 1.0 "kbattle.odf" 1.0 "rbattle.odf" 1.0 "fente.odf" 1.0 "fgalaxy.odf" 1.0 "kmartok.odf" 1.0

So now our new photon only has a 50% chance of hitting the scout ship but has a 96% chance to hit all other ships except for the other ships listed which it has a 100% chance of hitting, Now you must also keep in mind the modifiers for the hitchance that are below the lines you just edited. These will effect your chance if hitting the target too, depending on whether the target is moving or stopped and whether you are moving or stopped. If you are both moving you have a far less chance of hitting than you do if you are both standing still. So just because you have a hitchance of 1.0 doesnt mean that you will always hit the target, just that you have a much better chance than you would if you has a 0.5 hitchance. With 0.5 and you and your target moving you would have virtually no chance of hitting your target with the weapon. 12. Ok we will leave the rest of it alone because we dont really need this to have different hitChance modifiers than a standard photon. So save the file and close it. 13. Open the file fbigphoto.odf that we made earlier. 14. You can also delete that top line that says:
//This is the main photon ordinance file

We dont need that line so we will dispose of it. 15. We leave the classLabel alone and move on to the next thing:
specialEnergyCost = 0

Well we dont want our new photon to use special energy so we continue on to the next set of lines.

16. Now we see that good stuff, damage settings, we like damage so we will change the line:
damageBase = 30 to damageBase = 60

Now our photon does 2 times the damage it did before, but we are not done yet. 17. The next set of lines adjust the variance of the base damage, meaning it makes the damage vary depending on the number we set in this line:
damageVariance = 2

We will change this to:


damageVariance = 15

this makes our photon do anywhere from 45-75 damage with each hit, because it is 60 + or 15. 18. We will set our damage threshold as follows:
damageThreshold = 31 to damageThreshold = 72

Again, we are not going to change the modifiers for this weapon either. 19. For a photon torpedo there are a couple extra parameters than we saw in the phaser file and we will adjust some of them. First we will make this new torpedo turn slightly faster than the original. So go down to the line that says:
omegaTurn = 2.5 change this to: omegaTurn = 1.5

This will make our torpedo make sharper turns than it did before when chasing a target. 20. For this experiment we will also change the seek time slightly, seek time basically is the amount to time the torpedo goes straight before turning to chase the target. We will decrease this slightly so change the line that says:
seekTime = 0.25 to seekTime = 0.20

this will be a barely noticeable difference but it is for training purposes and not for actual performance of the torpedo. 21. We will also make this torpedo slower than the original in its speed, so change :
shotSpeed = 300.0

to
shotSpeed = 200.0

This makes the torpedo move slower than it did before. 22. As with the Phaser we will make this torpedo bigger so we can see it better and know which one it is, we do this the same way as with the phaser, by changing the radius of it.:
radius = 8.0f

to
radius = 12.0f

Now this may look a bit odd depending on the size of the ship firing it because it will be big but thats ok you can always adjust it later if you want.

23. Save and exit this file. 24. Now you must equip the weapon on a ship as you did with the Phaser, and test it using the same settings you did for the phaser. Dont forget to copy your files over to the corresponding directories in the actual game directory .

Using the include command to make another similar weapon.


Ok now I will show you an easy way to make another weapon that will be similar to the one we just made but will use the #include command. 1. Ok say we want to make a photon torpedo that is the same as the one we made already but we want it to fire slower and move faster. 2. So copy and rename the files fbphot.odf and ctplaso.odf to fbigphot1.odf and fbigphot1o.odf. 3. Now open the new file fbigphot1.odf and change the first line:
#include "photon.odf" to #include " fbigphot.odf"

Make sure you dont forget the quotes. This tells the game to look in the fbigphot.odf for any parameters it need that are not already in the new file we just made. 4. Change the line:
ordName = "fbphotono"

to
ordName = "fbigphot1o"

This, again, links our weapon and ordinance files together. 5. Change the line:
shotDelay = 2.0f to shotDelay = 2.5f

Now, our original torpedo fired every 0.5 seconds, this one will fire every 2.5 seconds. 6. We can leave the fire sound alone. 7. Save and exit the file 8. Open the fbigphot1o.odf file we made and change:
#include "photono.odf" to #include "fbigphoto.odf"

9.

Now delete all these lines from the file:

//The sprite which is used for this ordinance Sprite = "cphoton" // Time to play through the animation for the sprite in seconds spriteDuration = 0.5 //this modifies the color of the ordinance (not currently working) shotColor = 227 // Do lots of damage damageBase = 160 // Size of photon torpedo. radius = 8.0f lightColor = 0.0 1.0 0.0

lightFalloffStart = 50.0 lightFalloffRange = 5.0

10.

So now your file should only have these lines in it:

#include "fbigphoto.odf" //How fast the shot moves shotSpeed = 400.0

11. to

Now change the line:

shotSpeed = 400.0 shotSpeed = 350.0

Remember that our other new torpedo only moved at speed 200.0, so this one is considerably faster. 12. Save and exit the file. 13. Now you are done with this new weapon and can equip on a ship and test it. Dont forget to copy your files over to the corresponding directories in the actual game directory . See how fast and easy it is to make a new weapon using the #include command? You have completed the Standard weapons training and can move on to the special weapons if you want or can experiment with some more standard weapons or even edit the ones we just made some more to make them more customized to your liking. If you need to know what a command does refer to the command listing section above and look for the command you want more information on. I spent many hours going through the odf and assembling this list and explaining the commands and I know you will find it useful.

Section 2 Special Weapons


Special weapons are weapons that usually have to have a button depressed for them to activate and also usually have some unique affect on a ship or station or group of ships or stations. In general these weapons are a little more complicated than a standard weapon because they need buttons and the special settings that the standard weapons do not need. For this example we will make the Slipstream drive that I made for the Dauntless mod for Armada 2. Although these files we are working with do not exist in Armada 1 you will get the idea of how to make a weapon anyway. Before you decide on a special weapon and how to make it you have to look through the files for a weapon that is similar to the one you want to make, or at least does something that can be changed to give the desired effect. For this weapon we will make here I chose the Transient Rift that the Species 8472 Behemoth has because it does something similar to the effect I wanted, it makes a wormhole that the ship firing the weapon can go into and lets the user set a destination for the ship to go to. Now once we decide on the weapon we want to use as our base weapon we must also look through the files for that weapon to see what other files are connected to it through the #include command and the ordName = command. For this particular weapon it includes a lot of other files in the chain, the files it refers to along this chain are as follows: gtransientRift.odf the main weapon file for this weapon transientRift.odf the ordinance file for this weapon, but if you look at the bottom of this file you see the line: objectName = "transwrmhole" this means that the weapon

uses another file to define the parameters of an object created by the ordinance, in this case that object is a wormhole. So we must also have this wormhole in the chain of files. transwrmhole.odf this is the first file for the definition of the wormhole and is in the other directory under the odf directory in your modding folder. However if you look inside this file you see that it only says:
//#include "fluidicrift.odf" #include "qsewrmhole.odf"

So basically what this means is that, the first line is ignored because it has the // to indicate the game should ignore the following statement, and the second line only includes another file qsewrmhole.odf qsewrmhole.odf This is the second file in the wormhole definition, and is in the other directory under the odf directory in your modding folder, it also has the #include command and refers to the file: quantumsingularity.odf quantumsingularity.odf the final odf file for the wormhole, and is in the other directory under the odf directory in your modding folder, this defines most of the actual parameters for the wormhole. 1. Ok now that we have looked at the files we can see that just for the odfs we have 5 files involved in this weapon, In my opinion this is too many. As you can see from the descriptions and from looking at the files themselves some of these files seem somewhat pointless to have in the chain of files. So we are going to shorten this chain down to only 3 files. 2. Copy and rename the file: gtransientRift.odf to slipstream.odf. 3. Copy and rename the file: transientRift.odf to slipstreamo.odf. 4. Copy and rename the file: quantumsingularity.odf to slipconduit.odf 5. Now we have the 3 files but they are not linked together the way they need to be. So open the first file: slipsteam.odf and change the ordinance reference to:
ordName = "slipstreamo"

6. Change the name of the weapon to : wpnName = "Slipstream Drive" 7. Now we come to tooltips, These are handled differently in A2 than they were in A1, now they are references to a listing in the file: Dynamic_Localized_Strings.h that is in the Armada 2 main directory. So change the lines:
//tooltips tooltip = "8472_ADVANCED_3" verboseTooltip = "8472_ADVANCED_3_V" To //tooltips tooltip = "FED_SLIPSTREAM" verboseTooltip = "FED_SLIPSTREAM_V"

9. We are done for now with this file so save and exit this file and open the file: Dynamic_Localized_Strings.h that is in the Armada 2 main directory. 10. Page down until you see:
//******************************************************* 120 //* RESEARCH * //*******************************************************

page down some more until you see these lines:


"FED_GALSEPARATOR", "FED_GALSEPARATOR_V", Stardrive Section.", "Separates the Galaxy Class ship", "Separates the Saucer Section from the

Under those lines insert these lines exactly as they are:


"FED_SLIPSTREAM", "SlipStream Drive", "FED_SLIPSTREAM_V", "SlipStream Drive creates a conduit through space that a ship with the drive can enter and almost instantly travel great distances",

The punctuation is important here so make sure it is exactly as shown above. With all commas and quotes included. 11. Now reopen the slipstream.odf file. There are several things here you can change to suit your desire, I personally only changed the fireSound, but if you want you can change the settings for: shotDelay = 5.0 speakOnAttack = 0 buttonSlot = 3 range = 100000.0f Before changing these though make sure you look at the command list and know what they do and evaluate how they will affect your weapons performance. 12. Save and exit when you are finished. 13. Now open the file slipstreamo.odf, leave the classLabel alone and go down to the line: specialEnergyCost = 800 Now since I wanted to be able to use the weapon to go somewhere and then to return, I would need to be able to use the weapon twice, so I need to do one of 2 things, edit the amount of special energy that the ship HAS, or edit the amount of energy the weapon USES. I chose to edit the energy the weapon uses, so make the special energy 400 instead of 800. 14. The other setting for damage and modifiers can be left alone, but we need to set the file that contains the parameters for the wormhole now, so go to the bottom of the file and you will see the line:
objectName = "transwrmhole"

Change that to:


objectName = "slipconduit"

15. Save and exit this file. 16. Open the file: qsewrmhole.odf, and copy the lines:
// expire self when it closes expireOnClose = 1 // be really small when in closed position ClosedScale = .001f

16. Open the file: slipconduit.odf and paste the lines you copied from the gsewrmhole.odf into this file at the top. (the placement really doesnt matter but for organizational purposed I would put it at the top.) Now what this does is places the only lines that are needed from the qsewrmhole.odf in the slipconduit.odf so we have now successfully eliminated 2 of the 5 original weapons files. The other was the transwrmhole.odf which we dont need anyway because all it did was refer to another file that we dont use anymore, We basically combined the information from 3 files into 1 file. 17. Now in the slipconduit.odf there are also many parameters that could be changed depending on the desired effect. Like:
OpenScale = 2.5f

AnimationTime = 2.0f Rotation = -0.6f openSound = "msworm.wav"

Before changing these though make sure you look at the command list and know what they do and evaluate how they will affect your weapons performance. But the only ones I changed were the name:
unitName = "Slipstream Conduit"

And the :
baseName = "slipstreamdrv"

However Unless you have made a new sod file for the wormhole it uses, you should not change the baseName = . But learning how to do that part is a whole separate section of the tutorial and I will now go into that in this section. 18. When done editing this file save and exit. 19. Ok now the weapon is done but it needs a couple more things to work, First it needs to have a button, second it needs to be in the tech tree file, and of course it needs to be equipped on a ship. We will go through them in that order. 20. Refer to the Buttons and Wire frames section for directions on making buttons. I will assume you have made a button for the weapon and that this button is named: gbfslipgate.tga 21. Open the gui_global.spr file in your sprite directory (just like we did for adding a new ship earlier). Then page down until you see :
# Special weapon buttons @reference=64 @tmaterial=interface

This should be about 2/3rd of the way down in the file, This is where all the special weapons are listed and assigned buttons. At the end of the list that follows the lines above Add this line:
b_slipstream gbfslipgate 0 0 64 64

22. Ok save and exit this file. 23. Now open the tech1.tt file in the tech tree directory (just like we did for adding a new ship earlier) 24. Go down the file until you see the section for Federation Special weapons, after the last line in that section add this line:
slipstream.odf 0 // Slipstream drive

This will make the slipstream drive available as soon as the ship equipped with it is built, no extra research will be needed for it with these settings. You could however make that differently by making it say:
slipstream.odf 1 fresear.odf // Slipstream drive

Then you would have to have a basic research station first, before you could use the weapon. This can be modified to use any station name or pod name you want and even be set to need more than one other unit or station before it becomes usable. This is done by putting the number of odfs needed and then listing those odf names after the number.

slipstream.odf

fresear.odf fyard2.odf

// Slipstream drive

And so on.. 25. Adding a special weapon to a ship is the same as adding a standard weapon to one so refer back to that section if you need to refresh your memory and add this weapon to a federation ship. 26. Now you can test your new weapon out, and see how it works, use the same testing procedures as before. Congratulations You have made your first Special Weapon! There are many ways and combinations you can use to make special weapon, if you cannot get the results you want the first time dont give up try different settings, try a different base weapon to start out with, talk to people on forums, ask questions, but never give up. The more complex the desired effect is the harder it is to do but it is rarely impossible, there is almost always a way to get the effect you want. Its just a matter of how determined you are and how much time you put into it. Look at other peoples mods and how they did things and never be embarrassed to ask someone for suggestions or advice. Even I still ask for help from people sometimes, there is nothing wrong with that at all. If you use an idea from someone else, make sure to mention that in your readme files, give them some credit for helping you out. Always remember, no matter what anyone tells you modding is NOT a competition, it is something that is fun to do and benefits the community as a whole. If you get some good recognition in the process then that is great too, but if you decide to mod just for fame then you will be sadly disappointed by the results. Mod for yourself and if you want to release your work to others then do it, if they like it then that is good, if they dont then so what, if you are doing it for your own enjoyment then it doesnt matter if they like it or not, in the long run. Ok enough of my Philosophical ramblings, you an move onward now .

Chapter 7
Adding a New Fully playable Race to Armada 2
Ok, This chapter is on adding a new playable race to Armada 2, this does not replace any existing race, but instead add a totally new playable race to the game. This chapter assumes that you already have all the ships and station files ready for the new race, and that they all have unique names for them. For this sections purpose I will be using the United States from my Naval Armada mod as the new race, and it will be referred to hereafter as America or US, you can name your new race anything you want, but I will be calling it America or US. Please start by reading the troubleshooting section at the end of this chapter, it will help you avoid any problems before they occur. Also note that by default the odf files that come with the game are read only, you will need to change that for the files we will be working with in the files property box.

Make sure to Backup the races.odf file before starting

1. Starting off
First make a new race file by copying and renaming one of the races already in the game, for this tutorial mine is called : america.odf

2. Adding the Race to the races.odf file


Next open the races.odf file with whatever file editor you use. (Notepad, Wordpad, personally I use EF Commander because it is far superior to either of the afore mentioned windows programs.) Then edit the contents of the file as follows: numberOfRaces = 9 race0 = "borg.odf" race1 = "fed.odf" race2 = "kling.odf" race3 = "rom.odf" race4 = "card.odf" race5 = "fer.odf" race6 = "species8472.odf" race7 = "america.odf" // this one is 'uninhabited' for planets race8 = "norace.odf" Technically you probably could just add the new race as the last entry as race 8 but I prefer to keep the basic setup as close to the original as possible, but that is just a personal preference. Make sure to change the number of races to 9 instead of the original number 8. Also make sure that the numbers are all in sequential order (race0 race8)

3. New Races odf file - Making the race Unique


A. Now back to the new races odf file, open the new races odf file with your file editor. Change the following line to whatever you want the race to be referred to, this will control what AI files it used. It should be the first line in the odf file by default. // Name used to refer to the race in the code and scripts. name = "america" B. Change the following line to whatever you want the race name to be displayed as in the Game select screens. This will change the name of the race on the select buttons when setting up an Instant Action game. // Name displayed in the interface for this race.

displayKey = "United States" C. Then change the following line to the next available number in the race select slot, if this is the first race you are adding then the next available slot would be 6, because the 6 preset races use slots 0-5 on the race select menu for IA games. That is of course assuming that you want the race playable by human players in the game, if you do not put 1. // Instant action slot, negative means not playable instantActionSlot = 6 D. The next 2 lines control the GUI (Graphical User Interface) that the race uses and the configuration of these on the screen during gameplay. In this instance I have used the Species 8472 interface and the Federation configuration, More on that later. If you want the new race to use the GUI from the race that you used to make the new races file from then you can skip this step. Eg. If you used the fed.odf as the file you copied and renamed for the new race and you want the new race to use the federation GUI then you dont need to change anything. // Name of the interface configuration and sprite files. interfaceConfiguration = "gui_us.cfg" interfaceSprites = "gui_america.spr" E. The next thing is to change the Starting units for the race. Now as stated at the beginning this tutorial assumes that you have already made the ships and station files for your new race. Here we will tell the game what construction ships to use for different game types. Again I am using the US and the races from my Naval Armada mod, you can use any races construction ships that you want for these settings. However you should have a construction ship for your new race that has a unique name. Aslo Although I have not noticed it used, it could not hurt to have an officer upgrade also with a unique name for the race. In this example I have made a new one for the US called usoff.odf and have a US construction ships called usconst.odf as well as a US base called usbase.odf. The other races construction ships for superside units can be left alone if you want but in this example I have changed them also to be the other races in my mod. Keep in mind that even if you leave the others alone for superside units, you still need to change the one for your new race //ODF for officer upgrade for starbases officerUpgradeODF = "usoff" // the things you get when you ask for minimal default units (instead of the map units) minimalUnits1 = "usconst.odf" // construction ship

// the things you get when you ask for standard default units (instead of the map units) standardUnits1 = "usconst.odf" // US construction ship standardUnits2 = "usconst.odf" // US construction ship standardUnits3 = "usbase.odf" // US Capitol // the things you get when you ask for superside units (instead of the map units) superUnits1 = "cconst.odf" // Chinese construction ship superUnits2 = "usconst.odf" // American construction ship superUnits3 = "ukconst.odf" // English construction ship superUnits4 = "rconst.odf" // Russian construction ship F. Side note - Other settings in this new races odf can be changed to make it more unique from the other races but these are the only settings that NEED to be changed to make the race unique enough to be added as a separate race in the game.

4. Making the GUI config that we Referred to above.


Now there are some other files that we need to work with because we changed some file references in the races file while we did the editing above. A. In the new races odf we changed the GUI references, so now we need to make those GUI configuration files that we referred to earlier. We will take them one at a time. B. The first one we changed was this one: interfaceConfiguration = "gui_us.cfg" this GUI configuration files is in the /misc directory under the Armada 2 main directory. Basically all I did for this was copy and rename the file gui_fed.cfg to gui_us.cfg . You can edit this file but for our purposes we will not edit it. This is a tutorial on adding the race not making a new GUI so we will just use the same configuration as the feds for now. C. The next one we changed was this one: interfaceSprites = "gui_america.spr" The file referred to here is in the /sprites directory under the Armada 2 main directory. Again I picked a race and copy and renamed its GUI sprite file to the same name as I listed in the new races odf file above. So I copied and renamed the file gui_klingon.spr to gui_america.spr . Here also there are things that can be changed, however making a completely new GUI for this race would be a totally separate tutorial, so I will not get into that at this point. It is sufficient at this point

that we have the files setup for the GUI. Now some people may say, Why change the file references if we are not making a totally new GUI also? my answer would be that, this way we have a new set of files already setup to make a new GUI if we want to make one at a later time. All we would need to do is make the TGA files for the new GUI and change the file name references in the gui_america.spr file we just made. Personally I will be making a new GUI for my new race so doing this now when I add the race will save me work later, but if you want to use an existing GUI you can skip all that and just use a existing GUI from the game.

5. Making AI files for our new race.


Ok now although this is not difficult, it is easy to make a mistake that will cause the game to crash. I have not thoroughly studied the AI files for Armada 2 yet So this will not go into detail about making an actual great AI but will concentrate more on the way to make the new race use a separate set of AI files that are specific to the new race. Each race has 5 AI files, I have not yet determined whether the race actually uses all 5 sets if AI files but we will make all 5 just for the sake of argument. A. First the AI files are in the /AI/AIPs directory under the Armada 2 main directory. For this example we will use the Federation AI files as a basis for our new race. B. Now copy all 5 federation AI files and rename them as shown below. federation_build_list.aip federation_defensive_list.aip federation_endgame_list.aip federation_instant_action_build_list.aip federation_offensive_list.aip copy and rename them all as follows: america_build_list.aip america_defensive_list.aip america_endgame_list.aip america_instant_action_build_list.aip america_offensive_list.aip

Please note: Use the name of the race that you entered in the first line of
the new races odf file in the beginning of this tutorial in my example this name is america. // Name used to refer to the race in the code and scripts. name = "america" C. If they are not already there put these newly renamed files into the /AI/AIPs directory with the other AI files.

D. Now you need to edit the new AI files to make them refer to and build the new races ships and stations. I will not go into detail about that because it is fairly self explanatory and a detailed explanation of it would be yet another tutorial. However I will give you a few pointers about editing these files to avoid crashes: 1. Basically I would start out by just changing the current unit/station names to the names of your new races unit/station equivalents. You can always tweak it later to make it more customized.

2. Ok now this is VERY important:


Especially If you start with the first AI file : america_build_list.aip You will notice that the file only contains a build list with unit/stations names and 2 sets of numbers after the name. The other files all contain behavior definitions AND the build lists of unit/station names AND 4 numbers after the names. Therefor you cannot just edit the first one and then copy and paste the content or copy and rename the files from the first one to the others, if you do the game will crash. 3. Unless you thoroughly understand the behavior definitions in the AI files I would recommend that you not alter them.

6. Basic troubleshooting of this process and ways to prevent problems.


1. Double and triple check the spelling of all your new unit/station names in the Ai files to make sure they are spelled exactly the same as your odf files for the units/stations. 2. Try changing only a few units at a time in the Ai files and testing it in the game, this will help determine where the problem is if you encounter any troubles with them. 3. Check all spelling of your race names in the races.odf, the new races file (america.odf) these names are case sensitive also. 4. Check spelling of the GUI files and the GUI file references in the other files we edited. 5. As you can see there is a theme here, spelling mistakes account for most modding problems in Armada and Armada 2 so double and triple check, and if it looks right.. check again or have someone else check for you. Sometimes a fresh set of eyes will see something you missed. 6. I would highly, highly recommend that you make sure that the race you are adding works properly before you try and add them as an extra race. You can do

this by using the new race to replace and existing race. The you will know that it is not the race itself causing the problem. 7. Process of elimination is sometimes the best way to find the problem. If you encounter a crash or problem and have already checked all your spelling over and over, I would suggest trying the race addition process in reverse, removing each step just as you did it, the race will still show up in the game without the GUI changes and the AI changes, so go back and return these lines back to their original settings. // Name used to refer to the race in the code and scripts. name = "america" and // Name of the interface configuration and sprite files. interfaceConfiguration = "gui_us.cfg" interfaceSprites = "gui_america.spr" The race will still be selectable to start the game but will not build anything if you do this, this will help you narrow the problem down, if that fails then go back further in the process until the game works again. 8. Dont overwrite factory original game files, with the exception of the races.odf this process doesnt require editing or overwriting of any other default game files, with that one exception everything is done to newly made game files not the originals. 9. Backup the races.odf file before starting that is why I put that at the top of this section. 10. If you change the name of the officer upgrade for your race in your new races odf file, make sure you have made the new corresponding upgrade odf file for it. 11. Make sure that all the files referred to in the AI files and the new races odf file are present and in the correct directories.

Chapter 8
Buttons and Wire Frames. Section 1 Making a Button
Making buttons is not extremely difficult but it is something that not everyone knows how to do, So I will explain briefly how to make buttons for different things like Weapons, Ships and & Stations. In this section I will use some pictures to help explain things. I will be using Painshop Pro 7 and Storm3D to make these. If you use a different graphics program other than Paintshop Pro 7 (like Adobe Photoshop), some commands

that I talk about might be different but most quality graphics programs have equivalent functions even if they use different names for them. Included with this tutorial are 2 set of blank buttons one set for Armada, and one set for Armada 2 these will help you get started quicker. First we will go over the buttons and explain which ones are for what. There are 5 basic types of buttons for each game, there are different variations of those 5 for the games but they are still basically the same buttons. These are the generic styles for each of the 5 types.

5 Button types:

Type 1 - This is the offensive weapon button type, it is used for weapons that do damage to enemies or attack in some fashion. Type 2 - This is the passive or defensive weapon button, used for weapons that do no damage or that are beneficial to the target. Type 3 - This is the command button type, it is used for things like move commands, attack commands, build commands, Autonomy settings, etc Type 4 - This is the Build button type, it is used as the button you click to build specific units or stations. Type 5 - This is what I call a quad button, it is also a build button type but it can hold 4 buttons in one file instead of 4 separate smaller files.

Ok now we know what buttons to use for each type of thing that we need a button for. Next we need to learn how to get a picture onto the button and make it show up in the game. This is where Storm 3D comes in handy. I will use Storm 3D for A1 and an A1 ship to demonstrate the process and you can apply it to Armada 2 and Storm 3D Viewer also. We will make a button for that Galaxy class ship that we added to the game earlier in the tutorial. 1. Now if you are using PSP 7 you can setup your screen capture to get a picture of the screen, (I would imagine that Adobe also has a similar feature but I have not found it yet so I do not know how it is setup.) Alternately you could use the Print Screen key on your keyboard, usually located above your insert key on the top row of your keyboard. 2. To setup your screen capture in PSP 7 go to the file menu>import>screen capture>setup. This will bring up the following dialog box:

3. 4. Set it to Window for the capture and check the box for Multiple captures Also you can choose what hot key is used to activate the capture, just make sure you remember what key or key combination you chose. 5. Now you may be wondering why I use the screen capture if I can use the print screen key, Well that is simple, I use it because I can take multiple screen pictures without switching back and forth between Storm 3D and PSP and I dont have to keep pasting new images because this does all that for me. 6. Ok now we have that setup so we will click Capture Now. Note, once this is setup all you will have to do from now on will be click the small camera Icon in the top left hand corner of the toolbar in PSP to start the capture again. You will not need to do the setup again unless you want to change the hotkey or other settings for it. 7. Start Storm 3D and hit the Delete key to remove the STA Logo emblem from the screen. 8. Hit F8 to bring up the load browse box and go to the SOD directory under your Armada main directory if you are not already there, and load the sod called MbgBlack.SOD and hit the space bar to set the sod in the viewer. This sod is just a completely black background which is perfect for what we need it for. 9. Now load the sod Fgalaxy.SOD hit the space bar to set the sod into the viewer window. You will be looking at the back of the ship now so use your mouse and hold the left button down on the ship and while holding move your mouse to rotate the ship until you are viewing the ship from above and it is at about a

45 degree angle, like this: Note: for Armada 2 the ships on buttons are placed at more of a

perspective angle like this: Notice that the nose is tilted up a bit more than in the first picture. 10. You will notice that the ship has the section of color on it which is the team color for the model this is where different colors are displayed for various teams so that you can tell whos ship is whos in the game. You can hide this by hitting the c key while the ship is selected. This will bring up a color selection palate, depending on the race that owns the ship pick a color as close to the ship color as possible, for example for the Galaxy ship in this instance choose a light gray and

it will look like this: Notice the team color section is virtually transparent. 11. Now you still have the blue selection box around the ship, we need to get rid of that so hit the page up or page down key until you do not see the box at all. (this will mean the background sod is selected.)

12. The lights are still blinking on the ship so wait until they blink off and activate your screen capture or hit the print screen key. ( This is where the capture comes in handy because you can capture a couple shots to make sure the lights are off in the picture you use) If you used the print screen key then open your graphics program and paste the picture in as a new picture. Look at the picture and make sure there are no blinking lights on in it. If there are then repeat the procedure until you have the blinking lights off. 13. Once you have a picture that you are happy with, you can close Storm 3D and go back to your graphics program. 14. Use a square selection box and select an area slightly bigger than the ship itself and copy it, then paste it as a new image. You should have a picture that looks

roughly like this: 15. We need to resize this picture now. Some people make ships that are different sizes in the game also different sizes on their buttons. Personally I dont do this, I make them all about the same size but you can do that if you like. For this ship we will resize this picture to 48 x 48 pixels, this is why we used a square selection when copying and pasting this image to a new image, because since it is square it maintains the same proportions. 16. We now have a 48 x 48 picture of the Galaxy with a black background, go to your Selections menu at the top and choose select all (or Ctrl a) then go to the Selections menu again and select Selections>Modify>Transparent color. (or Ctrl t) and this dialogue will appear:

17. If it not already set as shown above change it so that it is, and click ok. 18. This will select the Galaxy itself from the picture but not the black background of the picture. Go to your Edit Menu and choose copy (Ctrl c) 19. In your graphics program Open the singlebuildA1.tga button that was included with this tutorial.

20. Paste the copied selection from the clipboard as a new selection onto the white section of the singlebuildA1.tga and position it so that it looks centered and does not touch any of the edges or go outside the frame of the button. 21. Go to your Selections menu and choose Select None then save the button to your Textures\RGB directory (under your Armada main directory). Save it as an uncompressed TGA file and name it gbfgalax.tga. Technically you can name it anything you want, however I use this name because it is the same as the name I used when we added that Galaxy to A1 earlier in the tutorial, and the gbf at the beginning will make our new button be in the same area as the other federation build buttons when we view the directory alphabetically, so it will be easier to find if we need it. 22. If you desire you could use soften on the buttons also to blend it a little more but you dont have to. Personally I didnt, I think they look better without it. 23. We already learned how to add the buttons to the gui_global.spr file. So refer back if you need to for that. Alright as a couple of side notes here, I made both an A1 and A2 version of this button, the only things I did differently for the A2 button was that: 1. I used an angled picture like the one I showed earlier in this section, 2. When I resized it I used 55 x 55 instead of 48 x 48 because the borders on A2 buttons are a little smaller so there is more space for the ship itself. 3. Otherwise the process was exactly the same and here are both of my buttons to give you an idea of roughly how yours should look.

A1

A2

For stations you can use the same process. For special weapons you can either use an ingame screenshot of the weapon in use or make your own graphic for the button, it is up to you. If the weapon uses a sod you can use the same process we did here for that also. Basically the only differences between making a button for a unit and making one for a weapon or command are: 1. How you decide to get the graphic for the button as mentioned above. 2. The button template that you put the graphic on.

Section 2 Making a Wire Frame


Well what exactly is a wire frame? These are small semi-transparent graphics of the ships, stations, and other game objects that are shown when the object is selected. They also display the damage to different systems that the object has. They are stored in a TGA file in 5 separate sections, each of which is part of the whole object and each of which represents a system that the object has. The system being damaged

causes the corresponding part of the wire frame to flash when the object is selected in the game. In Armada 1 they actually look like the wire framing of the ship, in Armada 2 they look more like a translucent picture of the ship. Personally I find that wire frames for A2 are easier to make than the ones for A1. Many people have many different ways of making wire frames for ships, I will show you my way and you can also consult others if you wish on how they do them and decide which is best for you. I do not claim in any way that my way is best but it does work and the results are quite decent in my opinion. Now A1 and A2 have slightly different setups for their wire frames and I use 2 different processes to make them so I will explain my way of doing A2 wire frames first since I find it easier than making them for A1.

This ^ is a wire frame as displayed in the game. This particular one is for the Dauntless class ship made by Pneumonic81, I made this wire frame for the ship and it is the one included in the Dauntless Mini Mod. This is also the wire frame we will make for the A2 section of this wire frame tutorial. Making a wire frame for Armada 2. 1. First thing we need for this wire frame is a picture of the ship at the correct angle and preferably with a solid black background. Look at the other wire frames in the game to get an idea of the right angle the ship should be at. This picture can be obtained several ways, if you made the ship and have the 3D Max file you can render a picture of the ship to use, that will provide a nice detail picture without any lights on it. You can use the Storm 3D Viewer like we did for the button in the previous section.. Or, if all else fails you can use a picture from an in game screen shot, although this is a bit harder to get the right angle and you cant get a completely black background, it will work in a pinch. If you use the in game screen shot method I recommend zooming in close to the ship to get a good picture and maneuvering the ship around if needed to get the right angle. 2. Alright we will assume you have a picture of the ship now and that it is from approximately the same angle as the other wire frames. Here is my picture to give

you an idea of what we need:

3. Now this one is actually smaller than the original picture I used because that one was about 800 x 600, but you get the idea. 4. So now we need to make this picture a bit smaller and have less extra picture to it, open the picture in your graphics program if it isnt already opened. 5. Using a square selection box select an area around the ship, big enough to include the whole ship but now too much extra area around it. When you have that area selected copy it, and paste it as a new picture. 6. Select your new picture and go to your Colors Menu and choose Grayscale (Alt then c then g) 7. Now go to your Colors Menu again and choose: Increase Color Depth>16 Million Colors (24 bit) (shift+ctrl+0) now you have a gray scale image at 24 bit color. The wire frame doesnt need any warp nacell color or impulse engine color to it, you wouldnt notice it anyway because the picture is small. Now your

picture looks like this:

8. But that is kind of dark for what we need so we will adjust the brightness. Go to your Colors Menu again and choose Adjust> Brightness/Contrast (shift b) and use these settings in the popup box: Brightness 16 Contrast 5 and click OK. This will make your picture look like this:

9. By now your picture should be: Square, gray, 24 bit. So what we will do next is make sure all the background is completely black, since we adjusted the brightness it also adjusted the black background to a slightly lighter color. And if you are using an in game picture you may have some stars or the grid in the background as well that we need to get rid of. There are several ways to do this but I find the quickest way to be to go to your Selections menu at the top and choose select all (or Ctrl a) then go to the Selections menu again and select Selections>Modify>Transparent color. (or Ctrl t) and this dialogue will appear:

leave the setting on black and 0 tolerance. 10. You will see that these settings make the picture have a selection that includes the ship and any area around the ship that is not completely black. If you used a rendered or Storm3D picture then you may be able to get the ship only to be selected by adjusting the tolerance to some number other than 0 as long as it still selects the whole ship. If you used an in game screen shot then you may actually have to paint around the edges of the picture to make it all black. 11. Just to make sure, (since you may have adjusted the Tolerance) once you have just the ship selected in the picture go to your selections menu and choose Invert (Shift Ctrl I) Then paint the whole background black. 12. Now resize this picture to 48 x 48 pixels, and make 4 more copies of it by going to your Selections menu and choosing Select All then copy and paste it as a new image 4 times. You should have 5 pictures now that are the same and are all 48 x 48 pixels. 13. What you must do next is take each picture and paint all but one section black on each, each picture should have a different section that remains visible, each visible section represents a different system on the ship: engines, weapons, sensors, life support, and shield generator. For example, one picture should represent the engines, so paint black over all but the warp engines on one of the pictures. Use the same process for each of the other 4 sections leaving the area that corresponds to each system visible. It is also advised that you leave some overlap for each section so that it can fit nicely with the other sections when all put together. This is what your sections should look something like this when

complete: 14. Ok now that you have those ready, what you need to do next is make a new 256 x 256 texture with a black background. 15. Now you need a grid to make it line up all nice and pretty. So go to your View Menu and select Change Grid and Guide Properties and set the settings exactly

as pictured below:

16. This will display a grid on your new texture that will be 48 x 48 pixels wide for each grid cell. It will also make it so that when you paste something into the picture it will automatically snap to the top left hand corner of the closest grid. This will help immensely with getting all our parts to line up the way they should in the game. 17. Now the systems go in this order from left to right shield generator, engines ,weapons control, life supports, sensors. So whatever section you put to the far left will represent the shield generator and that section will flash yellow or red when damaged or destroyed. Which ever section you place next to that one on the top row will represent the engines and so on. 18. So copy the part you want to be your shield generator section and paste it in the top left hand corner of your new all black picture, next to that, on the same row put the section you want to be the engines, then the weapons control section, then the life support, and finally the sensors. These should all be on the same row. 19. Next, select the whole new texture, hit ctrl t to make a transparent color as we did earlier and set the tolerance to 0 and the color to black and click OK. 20. Now go to your Selections menu, and choose Save to Alpha Channel. For the name of the Alpha channel put Alpha Channel 1. (the name doesnt matter but we use that because it makes it exactly like the original ones in the game) 21. Save your new texture to the Textures\RGB directory and save it as a 24 bit uncompressed tga file and name it FEDWIREFRAME10.tga (for your own wire frames you can name them as you like but for this purpose we use this name because it is like the originals and we have to add lines to another file before this frame will be used) 22. Now open your gui_global.spr file and page down until you see this:
#Federation wireframes @reference=256

a. Under those lines add these lines:


fdauntw1 fdauntw2 fdauntw3 fdauntw4 fdauntw5 fedwireframe10 fedwireframe10 fedwireframe10 fedwireframe10 fedwireframe10 0 48 96 144 192 0 0 0 0 0 48 48 48 48 48 48 48 48 48 48

Now you can of course replace the fdaunt with the name of the sod you are making the wire frame for, however it should still have the w1 w2 w3 w4 w5 after the ship name and also have the rest of the line there, if you name your wire frame texture something else other than fedwireframe10.tga then you also need to alter that part of the line but you should never need to alter the numbers that follow the file name. Line references: The first Reference in the line is the name of the SOD that uses this wire frame, Notice I said SOD not the name of the odf file. All button and wire frame references in the gui_global.spr file go by the sod file name NOT the odf file name. In many cases these names are the same but in some they are different, especially in mods, and where more than one object uses the same sod file. The second reference in the line is the name of the wire frames TGA file. The numbers are the coordinates in the Tga file that each part occupies.

Making a wire frame for Armada 1.

Wire frames for A1 look more like this: a. For Armada 1 the process is similar but still slightly different. The first difference is that the wire frames in A1 look more like a wire mesh than they do in A2, so the process for getting the starting picture is different. b. Setup your screen capture program as we did earlier. c. Start Storm 3D, delete the STA logo and load the sod MbgBlack.SOD and hit the space bar to set is down in Storm. Then load the sod of the ship you want to make a wire frame for. I am going to use the MC-80 (mc80.SOD) from the ST V SW Mod, as the ship I will make a wire frame for. ( As a side note, this is an excellent mod and I highly recommend trying it out ) d. Now I prefer to position the ship roughly the same way as the other wire frames in the game are. So I will rotate the ship into a position so that I am looking at the top of the ship and the center line of the ship is at about a 45 degree angle like the ship in the picture above. e. Hit the W key to show the Wire view of the ship, wait for the lights to stop flashing and take a screen capture. (or press the print screen key and

paste it into your graphics program.) This should give you a picture like

this: f. We need to make this a more manageable size now, So using your square selection box select an area around the ship that selects the whole ship and a roughly even area around it. Copy this selection and paste it as a new image. g. We should now have this:

h. We will now resize this picture to 40 x 40 pixels i. This picture is too dark and the lines are not defined well, so We will use some effects to make it more suitable. Go to your Effects menu and

choose Enhance Photo>Automatic Contrast Enhancement. This will bring

up the following dialogue: j. Use the settings in the picture: Lighter, Normal, Bold. As you can see from the picture above it greatly increases the line definition and color contrast, making the picture look a lot better for our uses. k. Just as with the A2 wire we made, there needs to be a total of 5 of these small pictures, so fight click on the top window border of the small picture and choose copy, then right click on the workspace in PSP7 and select paste as new image repeat this until you have 5 of these pictures. l. Now use your paintbrush and black to remove all but one section of each picture, each picture will represent a system on the ship. Engines, Shield generator, Life support, Weapons Control, & Sensors It is ok to leave some overlap as it will make sure that the picture fits together well when complete. So when you complete this you should have 5 small pictures resembling these: Once we have these done what we need to do next is put them all into a new picture in the correct order. Make a new picture, 128 x 128 pixels 24 bit color with a black background. Turn on your grid and set the grid to 40 x 40 pixels with the snap to upper left turned on. ( for an explanation on how to do this refer to the A2 wire frame section) Copy and paste the small pictures, depending on the system you want each to represent, into the new larger one in this order: Top row : Left = Sensors Middle = Shield generator Right = Life Support Second row: Left = Engines Middle = Weapons Control When you are done it should look like this:

m. n. o.

p.

17. Now go to your Selections menu at the top and choose select all (or Ctrl a) then go to the Selections menu again and select Selections>Modify>Transparent color. (or Ctrl t) and this dialogue will appear:

Leave the setting on black and 0 tolerance. 18. Now go to your Selections menu, and choose Save to Alpha Channel. For the name of the Alpha channel put Alpha Channel 1. (the name doesnt matter but we use that because it makes it exactly like the original ones in the game) 19. Save your new texture to the Textures\RGB directory and save it as a 24 bit uncompressed tga file and name it rmc80.tga (for your own wire frames you can name them as you like but for this purpose we use this name because we have to add lines to another file before this frame will be used) 20. Now open your gui_global.spr file and page down until you see this:
# Ship Wireframes @reference=128 @tmaterial=interface

Under that put these lines:


mc80w1 mc80w2 mc80w3 mc80w4 mc80w5 rwmc80 rwmc80 rwmc80 rwmc80 rwmc80 40 0 40 80 0 0 40 40 0 0 40 40 40 40 40 40 40 40 40 40

The first Reference in the line is the name of the SOD that uses this wire frame, Notice I said SOD not the name of the odf file. All button and wire frame references in the gui_global.spr file go by the sod file name NOT the odf file name. In many cases these names are the same but in some they are different, especially in mods, and where more

than one object uses the same sod file. The second reference in the line is the name of the wire frames TGA file. The numbers are the coordinates in the Tga file that each part occupies. Our final wire frame looks like this in the game:

Chapter 9
Sprites files and sprite textures
Sprite files are found in the sprites directory under the A1 or A2 main directory and they define all the different types of sprites in the game. A sprite is a combination of a sprite file and a graphics file. The sprite file sets how the graphic moves, or animates and where in the graphic file to look to find the particular sprite when it is needed. The sprite file also sets the name of the sprite so that it can be referred to by a unique name when ever needed. The graphics file holds the actual picture that is used to display the sprite. These sprite files and graphics files are both needed to make a sprite work, if one or the other is missing the sprite will not work. If you look in the sprites directory you will see quite a few files in there, each controls a different set of sprites. The most commonly edited ones are the gui_global.spr and the weapon.spr. The gui_global.spr we have edited already a couple times in this tutorial, it controls the buttons and wire frames, not their actual placement in the GUI of the game but the positions in the graphics files that contain the buttons and the wire frames. The weapon.spr defines all the weapons sprite names for all the weapons in the game it also sets the position of the graphic for the weapon or the starting place for the animation it uses and sets the animation type for animated weapons sprites. Now the weapon.spr doesnt actually set the animations themselves it just tells which animation the sprite uses. The tex_anim.spr file sets the actual types of animations and the way they are displayed. Tex_anim.spr is for texture animations, or moving textures, for example the shield remodulation of the Borg Diamond is an animated texture, it is 4 frames that display in sequence like a movie does. But for it to be able to do this, something needs to tell the game how to play the animation and where to find the frames that get played, That is what the sprite files do, while the graphics files hold the frames or still picture that is used to display on screen inside the game. So now you know What they do, but now the question is HOW do they do it. For most people the hardest part to understand is what the numbers mean, as we saw with the gui_global.spr file there are sets of numbers after the names of files, understanding these numbers will make it much easier to make new sprites and new graphics files for sprites. Understanding sprites and sprite coordinates.

Now in Armada 2 Most of the weapons have animated textures, in Armada 1 many of them were not animated. We will use an example and show how this works, for this example we will use the Accelerator Cannon. In the weapon.spr file toward the top, the accelerator cannon is listed like this:
# Accelerator Cannon cAccelCannon wAccelCannon 0 0 256 64 @anim=tex1x4

The first line: # Accelerator Cannon is only a reference for the users and developers the # in front of it works like the // in the odf files, it comments the line out, making the game ignore everything on that line. The next line: cAccelCannon wAccelCannon 0 0 256 64 @anim=tex1x4 has several sections to it that define different things, we will go through each one separately. The first section is: cAccelCannon Ok this is the name of the sprite, this is what the game uses to refer to this sprite where ever it is needed in the game. This is the name you would put in the weapons ordinance file if you want it to use this sprite, it would look like this: Sprite = "cAccelCannon" The next section is: wAccelCannon This specifies the name of the texture that the weapons graphic is found in. In this case the file would be named: wAccelCannon.tga Then comes the numbers section: 0 0 256 64 The first 2 numbers are the starting position for the animation (if any) or the starting location of the single still graphic. The third number is the width of the sprite, the last number is the height. So what this tells us is that the sprite starts at position 0,0 or the upper left hand corner of the tga file, and that it is 256 pixels wide and 64 pixels high. Keep that in mind for the next part. Next we see: @anim=tex1x4 This is the animation type for this sprite. It tells the game that this is a 1 x 4 animation, meaning that it is 1 frame wide and 4 frames high. If we take all this and look at the tga file for this weapon we can see better how it works. So here is the tga file:

Note I have shrunk this file by 50% so it would fit better but it is actually 256 x 256 pixels. We will pretend it is actually still the original size. If we do a little math we find that if the sprite is 64 pixels high, and the animation is 4 rows high then the total size of the animation would be 256 x 256, because we already know the sprite is 256 wide. 4 rows of animation each 64 pixels high. So for this beam when it fires, the top row is the first frame in the animation and goes from the hp that the weapon fires from to the shield or hull of the target ship. Then that beam changes to the second row then third then forth, changing the look of the beam with each frame. Now if we want to see how fast the frames change or play, we have to look at the tex_anim.spr and look for the @anim=tex1x4 and look at its parameters, but we will do that a little later. For now we have more to learn about the weapon.spr. If you are an very observant person you have noticed that the weapon.spr file is in sections. These sections are for different sized tga files. The example above was under the lines:
@reference=256 @tmaterial=additive

This means that the textures that follow are all 256 x 256 pixel tga files until specified differently by this line:
@reference=128 @tmaterial=additive

This means they are 128 x 128 pixel tga files until specified differently by this line:
@reference=64

With these you can switch back and forth between the tga file dimensions but you must have any new weapons sprite lines under the correct section depending on their tga files dimensions. You may have also noticed the line:
@tmaterial=additive

This means that when displaying these graphics on the screen the game will use additive blending Additive blending means that it will add the color and intensity of this tga file to the color and intensity that is in the background. A good example of additive blending is the Federation Temporal Stasis Field you can still see through it, see ships inside it, and see stars on the other side of it. The additive blending in that particular weapon is incorporated into the sod it uses but the idea is the same as the additive blending used in sprites. This is how the black background in the TGA file is made invisible, so that the sprite appears to be a 3D object.

Ok we have the idea of how a beam weapon works, but what about projectile weapons like torpedoes? Well they are very similar but still a bit different so we will examine a torpedo to see where the differences are. So how about a Borg photon torpedo:
# Borg Photon torpedo bphoton wbtorp 0 0 32 32 @anim=tex4x4

Still have the commented out line. Still have the sprite name first. Still have the texture name next. Hmmm numbers are different. That is because each frame of a torpedo is smaller than for a beam weapon. In this case the sprite animation still starts at 0,0 but the width and height are only 32. If we look at the TGA file for this sprite:

Note this one is actual size. We can see that there are 4 frames wide and 4 frames high, that brings us to the animation for this sprite:
@anim=tex4x4

This makes sense because we have 4, 32 pixel wide frames in the height and 4, 32 pixel frames in the width 4 * 32 = 128, and this file is 128 x 128 pixels wide. When you want to add a new sprite for a new weapon to the weapon.spr file the most important part is how you make the tga file for the sprite. If you want an animated beam weapon I would recommend using a 256 x 256 texture with 4 rows or even 6 rows of animation. You can follow the examples shown in this section to add the appropriate lines or you can find another weapon in the file that has the same tga size and animation you are using and copy it and then edit the appropriate parts of the lines like the sprite name and the texture name. Remember You cannot have 2 sprites with the same name. The sprite must be under the correct area of the file according to its tga size:
@reference=256 @reference=128 @reference=64

Make sure you use the correct animation type for your weapon
@anim=tex4x4 @anim=tex1x4 @anim=tex3x3

@anim=tex2x2 @anim=photanim @anim=tex1x6

EtcEtcEtc there are dozens of animation types to choose from but the ones above are the most commonly used.

Chapter10
Working with AI Files
As you can see this chapter was written by My good friend and AI expert Kleotol. Anyone who has played his X-treme mod knows he can make one killer AI, This is why I asked him to do this chapter. One thing I have not seen mentioned in his AI section though is this: In Armada 2 if you edit the AI Files, any saved Instant Action games that you have from before the AI was changed will be useless and will cause the game to crash on loading if you attempt to load them. So if you have IA saved games that you wish to keep and use again I would recommend backing up the AI files before editing them. (you should always backup anything you decide to edit but I thought it wise to reiterate this here)

ST Armada 1 and 2
Advanced AI programming tutorial By kleotol Subjects
1. Reference to the first 2 parts of an entry 2. AIs criteria for selecting the most important location (The second number) 3. Thorough reference to the two additional numbers in the AI lists in ST Armada II

Analysis of subject 1: Reference to the first 2 parts of an entry


The first two entries are actually self-explanatory and we will not dedicate too much time on them, because frankly, they dont deserve it

Section 1: The item to be built


Now, dont tell me that this needs to be explained! We just type the name of the items odf and put it inside quotes! Thats all Example. We are making the federation Ai and we want the AI to build a destroyer "fdestroy ", Thats all

Section 2: The number of items to be built


Once again, this can be covered in just a paragraph Simply type the number of items you want to be constructed there! However, there is a tiny detail I should include here. Nothing that you must take special cares of, but it will make a difference if you do. Queuing the items to be built is

very important. You must always make sure that the Ai will actually be building something rather than waiting for a construction yard or ship to become available before it proceeds. I will make a small example list bellow. Example 1: Assuming we already have 4 shipyards, two of each kind. "fdestroy ", "fbattle", 3,0, 1,0, // destroyers // battleships

In the above example, the AI will start building the 2 destroyers it can build but since it cannot complete this line, cause there is no other primary shipyard available, it will not proceed to the next one. It will wait until a primary shipyard becomes available, so that it can start building the third destroyer. But in the mean time, the advance shipyard is doing nothing! It would be much preferable to do things this way: "fdestroy ", "fbattle", "fdestroy ", 2,0, 1,0, 1,0, // destroyers // battleships // destroyers

Now, it will start building the first 2 destroyers, proceed to the battleship and then wait for a primary shipyard to become available. The result is that we are going to have our battleship faster!!

NOTE: For those of you who have tried my own mod, X-treme, this will answer the
question how did I made the AI, which is not cheating, to gather so many forces in so little time.

Analysis of subject 2: AIs criteria for selecting the most important location
Ill start this section with a saying I find to be most suitable. He knows not and thinks that he knows, is a fool He who knows, but knows not that he knows, is misled He, who knows and knows that he knows, is wise! Keep this in mind throughout the entire section because, my friends, you are all misled No offense to anyone meant of course.

Section 1: Forget what you know


Actually, what you think you know You all know by now that the AI is instructed to build on specific location through the build lists. What you dont really know is where these locations are! Before you jump to the conclusion that I am out of my mind and dont know what I am saying, I challenge you do try this:

In an unmodded Armada installation, play the 8 players map nirvana, also known as tik-tak-tow. Select free tech or standard tech. Disable the fog option so that you can see what the AI will do. You will see that it will build the first mining facility in the closest moon. (And that is why everyone thinks that the locations the AI builds at are the moons according to their proximity to the base.) Now, try the same map with ANY of the major mods out there. (E&F, STvsSW, MP, B5, BS, it really wont matter which one you select as long as it is one of the good mods. Do not try X-treme because I knew of this at the time of development and I have corrected it.) Once again, select free tech or standard tech. You will see that the AI players will cross over their wormholes and attempt to build in the center of the map when there clearly are other moons closer to their base. You want more? Using any of the above mods (X-treme excluded unless you are using one of the alternative AI lists sets) try the map called 8open. Fog off, freetech, 7 AI opponents. You will see that ALL AI players will send a construction ship to the lower right corner and attempt to build near the dillithium moon above the planet. And I ask you this: How cans this moon, be the closest one to the player at the top left corner of the map??

Section 2: The naked truth


By now, you must have realized that the closest moon theory we thought the AI is using to determine the locations it will build on, is wrong! But if so, than how does it determine the location priority? Well, the old theory is right about one thing. It has to do with resources. However, what has slipped our minds is that there is more than one kind of resources in Armada! Crew, inexhaustible dilithium and simply dilithium in this exact order of priority. (Armada II uses even more resources, but I dont have the game yet as I write this tutorial) If you think that crew is not harvested, guess again! You do harvest crew if you build a base over a planet! Remember the 8open map example? The AI wasnt after the lower right moon; it was after the planet! So did in 8open, there is a planet in the center. And I think it is self-explanatory why the infinite moon is more important than the simple moon

Section 3: Where the catch is!


The catch is that all this works according to exploration. Before the AI can import a location in its priority list, it must explore this location. In other words, it must know what is in the map grid. When we turn fog off, the AI instantly knows what is in every map grid and that is why it aims for the most important location right from the start!

Subsection 3.1: The location 0 catch


At this time, it is believed that location 0 is the center of the base. Which is partially correct, assuming that we start the game with a base! If we start with minimal units, then location 0 is the most important location on the entire map or the known map -, regardless of its proximity to our starting units.

Section 4: Enough theory


Time to put this in a practical situation. Our example map has 1 planet, 2 infinite moons and 3 simple moons. Starting with bases. Locations are as follows: Location 0 the base Location 1 the planet Location 2 the nearest infinite moon Location 3 the second infinite moon Locations 4-6 the simple moons according to their proximity to location 0 Starting without bases. Locations are as follows: Location 0 the planet Location 1 the nearest infinite moon Location 2 the second infinite moon Location 3-5 the simple moons according to their proximity to location 0 As I explained earlier in this tutorial, all these will be valid if we play with fog off. If we are using the fog option turned on, the priority will be adjusted according to explored locations. Naturally, in this case everything can be further adjusted from within the personality aip files. (By having more scouts or increasing the scouting priority for instance). NOTICE: The location ordinance can only be applied to stations. If you send a ship to location 2 for instance, this will not mean that the ship will go and guard that location! NOTICE 2: The relative value of a moon and an infinite moon is also determined by their proximity to location 0. Between an infinite moon and a simple moon with relatively the same distance from location 0, the infinite moon has the priority, even if it is one or two grid sells further. If however the difference of their distance to 0 is great with the simple moon being the one closer, then this is the one with the priority. Example: As a general rule, infinite moons are more important than simple moons. If the AI has to choose between a moon 3 grids away and an infinite moon 4 grids away, it will chose the infinite moon. But if the infinite moon is 30 grids away, then the AI will chose the simple moon.

Section 5: Ok. So what do we do with this?


Well For starters you know what really goes on! But if you step a few steps back and see the bigger picture, youll see that you can even use this to your advantage! How do you think that I was able to make my AI in X-treme to actually guard wormholes? I simply created a map and placed resources right next to the wormhole or the chokepoint I wanted the AI to guard!! Then I took special care to place the rest of the resources and the starting AI units in such way that they wouldnt mess with the priorities

and the chokepoints being the nearest most important location no matter what settings the player would use. Simple!

Section 6: Thoughts on Armada II


Since we do have more resources in Armada 2, it is only logical to assume that the priorities will have been altered in comparison to A1. At this point the only definite thing is that there is a priority list similar to A1. The old planet crew accumulation rate is still present, but if everything is as they appear to be, it shouldnt be there Crew is not harvested from planets anymore The command being there is somewhatsuspicious As for the rest of the priorities At this point I can only speculate. The logical thing would be the type M planets to be the most valuable location but the fact that a colony ship is needed and it cant be constructed right away is discouraging this idea. Next on the list should be the Metal resources, then the dilithioum and so on. However, there is another parameter that we must include in this new equation. The different quantity of resources provided Right now, there is only one question going round and round in my head! Is the new AI really that smart to calculates all those new parameters, or is it programmed to follow a more simple routine, evaluating only the existence and not the quantity of resources? A question based on a logical assumption since the AI still cant do most of the things it couldnt do in A1 as well! In any case, this is definitely a subject that will consume much time and effort before we crack it.

In conclusion
I dont know if you will find this useful. I know I did. And I wanted to share this knowledge with you. Whether you will use it or not, I leave it up to you.

Analysis of subject 3: The two additional numbers in the AI lists in A2


So, now we know what the first two numbers do. Lets move on to the next ones.

Section 1: The LOOP


It is a common secret that the most difficult part in making an AI for Armada was avoiding the endless loop. But what is this loop anyway? The AI is programmed to build from the lists. But this sequence is not linear. If it were, it would be impossible for the AI to replace its casualties because no matter how big the list would be, sooner or later it would come to an end. So, the developers included a loop. Each time the AI completes a line from the build list, before proceeding to the next one, it checks back and makes a cross-reference of what it should have according to the list and what it does have. So, if according to the list it should have 2 scouts but only has one, it will first build the missing scout before proceeding to the next line. This is the loop! I am sure you can see why this loop was so frustrating for us AI guys One wrong entry and we could force the AI to an endless loop of building scouts, or destroyers, only to lose them in combat and start building them again! But not any more

Section 2: The third number


The third number was a cool trick to restrict the AI from repeating the same instructions over and over. Very simple really We practically tell the AI how many times to process this line. Once the maximum allowed units from this line will have been built, the line will be rendered invalid and will be ignored from then on!! Simple, but brilliant! That means that in the early stages of the game, when we are short of resources and crew, we can actually make use of the cheap destroyers without worrying that all the Ai will be building from then on is destroyers!! In the meantime, if we really need an item to be replaced all the time, like a base or a construction ship, we just put a negative number there In practice In practice this works like this: "fyard", "fscout", "fdestroy", 1,0, -1, 0, 1,0, -1, 0, 2,0, 8, -2, // basic shipyard // scout // destroyer

We want our yard to be replaced if lost! So we use a negative number. Same with our scout, cause we really need to know what is going on the map! The destroyers however, we need them now, but we will not be needing them later! So, we tell the AI to build 8 of those destroyers instructed here. No more. Once those 8 destroyers will have been built from this line, the line will be ignored from then on. Section 3: The fourth number. Ok, pay attention here, cause my English are not good enough for this complicated thing This number has one and only purpose! To ensure that the more time we spend in the game, the bigger and meaner ships well be facing! Basically it is yet another way to restrict the AI from building unnecessary items. Just like in real life Or real Trek! Why build an expensive and underpowered Constitution class in the 24th century, when you can have more firepower that costs less in both crew and resources by building a Defiant class! Right?

Subsection 3.1: Tech Levels


That is exactly what this last number does. It kind of sets technological barriers, once you cross over this barrier you cannot build items belonging to a previous era. Cool, right? Just like the Timeline mod we all wanted all along This little trick works like this. Each ship represents a technological level. So, you must have a kind of tech level map made first. The use of the map is not vital; the AI will work even without it. This is for own use so that you will not be confused and ensures that the right items will be assigned to the right tech levels. The ships that are not restricted to a tech level use the number 0. That means that they will be built no matter what. When we want to introduce a new level, we use a positive number next to the item. That means that if we want the construction of our first research center to mark a new

level, we use the number 1 next to it. From now on, the AI considers everything from then on to be placed under level 1 until we mark a new level by placing number 2 next to a different item. The ships that mark a new level (use a positive number if you prefer) are unaffected and will be built/replaced regardless of tech level restrictions. (Basically because we need a negative number to restrict an item to a tech level, and they already have a positive one!) Example 1: "fbase", 1,0, -1, 1, // starbase "fconst", 1,0, -1, 0, // construction ship "fresear", 1,0, -1, 2, // basic research "fyard2", 1,0, -1, 3, // advanced shipyard "fresear2", 1,0, -1, 4, // advanced research station "fsuperbl", 1,0, -1, 5, // super building In the example above, the construction of the base marks the first tech level. Everything from then on belongs to tech level 1 until the research center marks tech level 2. The construction ship, about which we could say that it is common to all tech levels, uses the number 0. That means that it is unaffected. From then on, the advanced yard and advanced research center mark higher tech levels while the super building marks the final tech level which is number 5.

Subsection 3.2: Restricting by tech level


Now, how do we use this to restrict the AI? By placing negative numbers that represent the highest tech level at which we should build this So, if we want something not to be built after we have entered tech level 2, we will use the negative number 1 after this item. For level 3 we will use 2 and so on. (Consider the - not to be the mathematical symbol but give the up to meaning instead, like when saying, 3-4 and we mean 3 to 4) NOTICE. Since the highest level is 5, by placing 6 after an item we render it unaffected by tech levels. Works just like the 0, but it separates items common to all levels and items that are not common, but are still in use in the higher tech level. With this in mind, check out any of the new AI lists and you will immediately see how the various items are restricted according to tech level. Below, I will use a part of the Cardasian multiplayer list. Example 2: "cbase", "cconst", 1,0, -1, 1, 1,0, -1, 0, // starbase // construction ship

"cmining", "cyard", "cscout", "cfreight", "cdestroy", "cscout", "cdestroy",

1,1, -1, 0, 1,0, -1, 0, 2,0, -1, 0, 2,0, -1, 0, 2,0, 8, -2, 2,0, 4, -2, 2,0, 4, -2,

// mining stations // basic shipyard // scout // mining freighter - two freighters per station // destroyer // scout // destroyer

The base marks level 1. The construction ship, yard, freighters, scouts and mining facility are common to all levels. However, the destroyers are not to be built after level 2 "corbital", "cturret", "cdestroy", "cdestroy2", "cconst", "cmining", "cdestroy", "cfreight", "cturret", "cdestroy2", 1,1, -1, 0, 1,1, -1, 0, 2,0, 4, -3, 2,0, 2, -3, 1,0, -1, 0, 1,2, -1, 0, 1,0, 4, -3, 2,0, -1, 0, 1,1, -1, 0, 1,0, 2, -3, // build an orbital station // phaser turrets - defend the mining stations // destroyer // destroyer - base defense // construction ship // second mining station // destroyer // two more mining freighters // phaser turrets - defend the mining stations // destroyer - base defense

In the same fashion, the second-class destroyers (cdestroy2) are restricted to tech level 3. But you see that the primary destroyers (cdestroy) of this section are not restricted to level 2 but to level 3!! That is because we do want some of this type of ships to appear during this level. "cdestroy2", "carpod16", "ccruise1", "ctrading", "ccruise2", "corbital", 2,0, 2, -3, 1,0, -1, 0, 2,0, -1, -6, 1,0, -1, 0, 2,0, -1, -6, 1,3, -1, 0, // destroyer - base defense // sensor scrambler for frigate // Brinok // second trading station // Gul Vystan // 2nd orbital processing facility

Again, we see some second-class destroyers being restricted to level 3. However, I used this section to demonstrate the 6 level restriction, which is practically the exact opposite since it tells the AI not to restrict the item. Unrestricting through a restriction!! Hehe

In conclusion
It is my personal opinion that these 2 extra numbers will come in very handy in the months to come. We can finally make a decent AI that avoids the frustrating loop of the past. And we can give our mods a genuine timeline look at the same time. Use those features well and you will be rewarded. Happy modding Kleotol

Apoc Entertainment Armada Division Modder in chief

Chapter 11
The basic of modeling for Armada & Armada 2:
Introduction: There are several things we must go over before starting any actual modeling. The first thing is that I want to make it clear that I did not write every part of this section myself, some parts are from the tutorials in 3D Max, some are from other tutorials, and other people, but the assembly and content of the actual model making part of the tutorial was done by me. Secondly we need to go over some of the most commonly used controls used in 3D Max, some of these controls vary slightly from version to version, I will be referring to controls in 3D Max 4.2, if you cannot find these controls in your version try searching the help files in Max for these controls. I would also highly recommend that you go through certain tutorials that come with Max or at least read through the help files for these tutorials because they contain some valuable information and procedures. This section will deal solely with controls and the making of a mesh the texturing procedures will be in the next chapter of the tutorial, for right now we are concerned with how to make a model not with texturing it.

Getting to know 3D Max.


This is the section where we will look at some of the controls and their functions, most of this is taken directly from the 3D Max 4.2 help files but I have added some comments and explanations of my own in there too. If you use a different version of 3D Max then you may not have all the controls or they may be in a different position.

The Viewports
When you start 3ds max, you are presented with a default user interface (maxstart.cui). This consists of four viewports surrounded by tools and controls. The viewports are your porthole into the world of 3D. The layout of these viewports and tools and controls is user-configurable: you can load other user-interface layouts, or create your own. You can change the color and appearance of the user interface yourself, or load in other custom UI files. Viewports can display geometry in a wireframe mode or several different shaded modes. Edged-face mode lets you see your selected faces and shading at the same time. A viewport can display the scene from the front or back, left or right, top or bottom views. It can also display different angled views such as perspective, user, spotlight, or camera. You can change the viewport by right-clicking the viewport label, or using keyboard shortcuts. Viewports can be resized by moving the splitter bars in between the viewport windows. Viewports can also display utilities like the MAXScript Listener or the Asset Manager, or they can show Schematic View or Track View. Right-clicking the viewport label brings up other options as well. Here you will find the Configure command that leads you to dozens of options for viewport configuration. On the Layout

tab you'll find choices for different layouts for the viewports. Viewport clipping lets you display only a slice of your scene in the viewport. When you have a complex scene, viewport clipping lets you isolate a section for closer scrutiny. Safe frames show you the proportions of your output file in the viewport to help you compose your shot. This is really handy if your output is at a different proportion than your viewport. Safe Frame maintains your output's width to height ratio. Viewport backgrounds can be set up using bitmap images. Each viewport can have its own background. The viewport background is set up through the Views menu.

Viewport navigation controls


In the lower right of the interface are the viewport navigation controls. These change depending on the type of viewport that is active. For example, a Camera viewport displays different navigation buttons than a Perspective viewport.

Perspective view controls

Camera view controls These are the controls to pan and zoom or orbit the viewport. You can also use the middle mouse button, with CTRL, SHIFT, and ALT key combinations, to achieve the same results.

Menu Bar
Directly beneath the title bar is the menu bar. The menu bar has 13 different menus, each offering a path to different tools and controls. The menu commands can also be accessed with the keyboard shortcuts displayed to the right of the menu item. If no keyboard shortcut is listed, you can access any menu command using ALT + the underlined letter in the menu name. If a menu item has an ellipsis (three dots) following it, that means there are more choices on another dialog. If the menu item has a right pointing arrow, there are more choices found in an expanding sub-menu. You will discover that the menu bar options are context-sensitive. They can change depending on what object is selected. If they are unavailable, they will become available with the correct selection. For example, the View menu item Match Camera To View is only available when a camera is selected.

Tab Panel
The Tab Panel is hidden by default. You can open it up by right-clicking any blank area of the Main toolbar, and then turning on Tab panel. It will appear directly beneath the menu bar. This is a collection of tools on a sequence of indexed tabs. The tools are represented as icons or text buttons. Clicking any of the tool buttons starts the tool and makes it ready to work in the viewport. Any tab on the tab panel can be floated into an individual toolbar or docked to the sides. The tabs and toolbars can be customized. Tools can be moved from one toolbar to the next. Customize your own toolbars. You can learn to create a custom toolbar in Modeling: Level Design.

Main Toolbar
By default, the main toolbar appears below the menu bar. The main toolbar has over 30 tools you will use constantly while you are working. Some of the tools on this toolbar can also be started using menu commands or keyboard shortcuts. You can float and resize the main toolbar or leave it in its default position.

The Main Toolbar floating over the viewports If you run 3ds max at a screen resolution of less than approximately 1200 x 1000, you won't see the whole toolbar on your screen at one time. There are additional choices in the main toolbar, which you can access by scrolling. Pressing the middle mouse button over the main toolbar or tab panel brings up the pan hand icon, the main toolbar or tab panel. which lets you scroll

Undo and Redo


Here you will find tools to undo and redo. Right-clicking these buttons displays an undo/redo history so you can choose how far back you'd like to undo. You can set the amount of undo and redo in the General tab of the Preferences dialog, available from the Customize menu. Most operations can be undone, but occasionally some cannot. Use Hold and Fetch when you learn that something can't be undone. Undo History list :

Link Tools
The link tools let you select and link objects together into hierarchies, or unlink selections if you decide to change them. You can also create hierarchies in Schematic View using the link tool there.

Selection Tools
Here are the tools you use to select objects. You can click objects in the viewport or draw around them with various shapes.

Select Object: Use this tool to point to objects in the viewports and select them.

The Select Region flyout lets you choose between rectangular or circular selection region, or you can draw using fence selection to select irregular areas in the viewports. Hold down CTRL while you work to add to the selection. Use the ALT key while you work to subtract from the selection. These select region tools work with the Crossing Selection/Window Selection toggle. Window selects everything within the window; Crossing selects anything within or crossing the boundary of the region selection.

Select by Name: You can also select by name, which is useful when there are a lot of overlapping objects in the viewport. You can filter the selection process using the selection filter list. Don't forget to turn this off after you use it or it'll catch you every time!

Select and Transform Tools


These tools let you touch an object and move, rotate, or scale it in a single movement. The scale tool has a flyout for different scale options.

You can scale something along a single axis by using Non-Uniform Scale.

Or you can change two axes when you click Select and Squash. You can also choose between the transforms on the right-click quad menu. Right-click an object and the transforms are available on the quadrant.

Transforms on quad menu

Reference Coordinate System


The Reference Coordinate System lets you switch between orientations on a transform-by-transform basis. You can work in the world coordinate system with X, Y, and Z aligned to the world, or you can choose to use the local coordinate system of an object. This is very handy when an object has been rotated and you want to scale it. If you try to scale the rotated object using the world coordinate system, the object distorts. Using the local coordinate system lets objects scale easily, regardless of how they are turned.

Reference Coordinate System options If you use the Pick option, you can select any object for the coordinate system to reference. This lets you scale or rotate one object around another. After picking the object, you make the appropriate choice from the Use Center flyout. This is a flyout that gives you three options:

Use Pivot Point Center transforms each object in a selection based on the individual object's pivot point. Use Selection Center transforms everything based on the selection's midpoint. Use Transform Coordinate Center transforms everything based on a single selected point. Choose the transform first (move, rotate or scale), then pick the reference coordinate object, then choose Use Transform Coordinate Center from the Use Center flyout.

Select the transform, then the object, then the pivot type

Axis constraints
These tools are used to restrict a transform to a single axis or to a plane. There are flyouts for YZ and ZX. Use these if you want to move, scale, or rotate in a controlled way. They respect the selected Reference Coordinate System. To transform along any single axis, click X, Y, or Z, or any of the paired-axis buttons to restrict to a plane. These axis constraints are also available when you right-click a selected object and choose Transform. You can also move in a single axis by selecting the axis on the Transform Gizmo.

Mirror

Flip objects or sub-object selections with the Mirror command. Turn on the Copy option to create a clone for the mirror operation. Use Mirror Bones to make mirrored duplicates of legs or arm assemblies.

Array Flyout
Once you've created a single object you can use the choices found on the Array flyout to replicate the object in a variety of ways. Array: Create a row, grid, or 3D array of objects using this tool. Snapshot: Creates copies of animated objects over the course of an animation. Also, use Snapshot to create copies of objects from particle systems. Spacing Tool: Spaces a number of objects between two points or along a path.

Align Flyout
The Align flyout gives you different options for aligning objects and sub-object selections. Align: This tool lets you align any object or sub-object selection to any other object. You can use this on pivot points and gizmos as well as geometry. Normal Align: This tool lets you align any object or sub-object selection to any face normal. The normal is a directional vector associated with every face. Place Highlight: This tool positions a light so that the highlight appears at the point you select. Camera Align: This tool positions a camera to match a face normal.

Align to View: This tool aligns an object to any one axis of a view.

Named Selection Sets


Select any objects or sub-object selection. Enter a name into this box, and then you can later recall the named selection set.

Open Track View


Track View is used to see your animation in a spreadsheet-like interface. You can access individual keys or manipulate ranges of keyframes there. You can see the animation as a function curve in Track View.

Open Schematic View


Schematic View displays the objects in your scene and their relationships. You can see or create the hierarchy between objects, or see which objects share the same material. You can see all the instances of a particular object, or objects that share a modifier. You can manipulate objects here as well, copying modifiers or materials within or between objects.

Schematic View This is where you will setup your hierarchy for your models and connect special nodes to different mesh parts if needed. Hierarchy is basically the chain of command for your model. The Root node is at the top and others like geometry node and hardpoint node are connected to it, then other nodes like the individual hps are connected to them, and so on, making something like an upside down tree. We will go further into hierarchy later but keep this in mind.

Material Editor
The surfaces of the objects are painted with materials that define how the surface will look. The materials are created or selected from a file through the Material Editor. You can start the Material Editor using this button, by pressing M, or from the Rendering menu.

Rendering Tools
Once the geometry has been modeled, and the materials created, the lighting added, and the cameras positioned, the scene can be turned into an image through the process of rendering.

Here are buttons that let you render your scene or sections of it. You can change between two preset rendering choices: a draft and a production renderer. Render Last lets you repeat the last render instantly.

Render Scene opens the Render Scene dialog, where you can choose options for your rendering. You can start rendering from the Rendering menu as well, or by pressing SHIFT+R. Buttons on the Quick Render flyout let you swap between a draft and production renderer. This lets you keep two different settings for rendering while you work. Use Render Type to choose between rendering everything in the viewport or just a section. There are lots of options here to crop or blowup, render a specified region or object. You'll use Render Region when you do the lighting tutorial.

Render Last provides a quick repeat of the last rendering. You can also press F9.

ActiveShade Floater displays a window that allows for interactive updates to the rendering.

Right-Click Quad Menus


Right-click anything in a viewport and a quad menu will appear. 3ds max hides quick navigation menus directly under your cursor through this right-click convention. The quad menus are context-sensitive: they change based on the selection. These are very helpful to get things done more quickly.

You can use them to get to most commands in the command panels, and they are customizable through the MAXScript utility.

Status and Prompt Area Controls

Status Line and Prompt Line


The Status and Prompt areas provide valuable clues about what's happening underneath the covers. This is where 3ds max talks to you. The status line gives you pertinent information regarding your selection, and the prompt line tells you what the active command expects you to do next. The status line also displays tooltips as your cursor passes over buttons and commands.

MAXScript Mini-Listener

There is a two-line window to the left of the status and prompt area; this area is a window into the world of the MAXScript Listener. If the Macro Recorder is enabled, you can see and record commands, turning them into scripts for later use. Right-clicking the minilistener, when the Macro Recorder is enabled, displays a list of all the commands you have used recently in order to redo them. To enable the Macro Recorder, choose MAXScript from the menu bar, then Macro Recorder. For extensive information on using MAXScript, see the MAXScript Reference, available from the Help menu.

Lock Selection Set


You will quickly get used to clicking objects to select them. If you have a multiple object selection and then you click a single member of the selection, you get the unexpected result of creating a new selection that has only a single member. When you have a multiple object selection, lock the selection set with this button or press the SPACEBAR. Then you can click anywhere in the viewport to select and transform the objects in the selection. You can turn it on and off quickly with the SPACEBAR.

Keyboard Shortcut Override Toggle


If you use plug-ins that have their own keyboard shortcuts, this tool lets you use them.

Crossing/Window Selection
Two options are available as selection modes when using region selection. Crossing selects all the choices within or crossing the boundary of the selection. Window only selects the choices completely within the selection region.

Degradation Override
When your geometry exceeds the limits of the computer's graphics card, the shading mode can degrade to keep up with the movement. This is useful if you need to maintain an accurate playback speed while you are working. Turn this on or off, depending on the tasks you are doing.

Command Panels

To the right of the viewports are the command panels with tabs for Create, Modify, Hierarchy, Motion, Display, and Utilities. The command panels scroll to give more room for controls. This area changes what is displayed in it based on the selection in the viewport. Here you can apply Motion Controllers to objects, or Modifiers to objects for animation and modeling. You can scroll the command panel to get to more tools below the interface extents.You can expand the command panel to be 2 or more columns wide.You can drag and drop rollouts to reorder them in the command panel. Almost all the commands found in the Command panels can also be accessed from the Menu bar as well. For example, to apply a Modifier go to the Modifiers menu and choose the type of modifier you want. This is the same as choosing that Modifier from the Command panels.

Customizing the User Interface


Most of the layout of the User Interface is customizable so that after you are familiar with the product you can move tools as you see fit. The toolbars, menu bar, and command panels can float, dock, or disappear. The tab panel can be hidden or displayed with a keyboard shortcut (2 or Y). Custom toolbars let you make your own toolbars with shortcuts and scripts. Your own customized user interface can be saved and loaded so you can take it with you from machine to machine. The Customize command on the Customize menu is where you'll find the tools to create your own toolbars and tabs. Here you can take scripts and commands and set them on the toolbars as icons or text buttons. Try loading some other CUI files that ship with 3ds max to see some other UI

configurations. Choose Load Custom UI from the Customize menu and select any file with the .cui extension.

Expert Mode
Expert mode lets you hide pieces of the interface, so more of your screen can be devoted to the viewports. You can remove the visual presence of the tools to focus on the composition of your scene. On the Views menu choose Expert Mode, or press CTRL+X. When you want to get to the tab panel, press 2. When you want the command panel back, press 3. Use the Quad menu on whatever your working on and you should be all set.

Preferences and Keyboard Shortcuts


As you develop techniques and practices, you'll want to customize your keyboard shortcuts. There are lots of things in 3ds max you are going to do over and over again, and it's nice to be able to just press a key and have it happen. You'll find that, instead of clicking with a mouse, using the keyboard shortcuts will increase your productivity and make you a happier 3ds max user. Keyboard Shortcuts are found in Customize > Customize User Interface > Keyboard. There, you will find a table of actions available for you to assign. Some actions are already defined, some are not. Create your own and save them here. This section What is a mesh? is from another tutorial, although not Armada or low poly related, it is very informative and well written. Mesh Modeling all the way By Claes Wikdahl

What is a mesh?
A mesh is made up of the following basic components: Vertex A point in 3d space. Face A surface created between 3 vertices. A face is only visible from one side. Which side depends on which way its Normals are directed. Edge, which really isnt a component itself but rather a part of a face, is exactly what it sounds like: the edges of a face. Every face has 3 edges. Edges can be Visible or Invisible. Invisible edges dont show in the wire frame view but can still be selected and are then displayed as dotted lines. The Editable Mesh You can create an Editable Mesh in two ways: Collapse stack: In the Modify tab, click Edit Stack and, if you have no modifiers, choose Convert to: Editable Mesh. If you have a bunch of modifiers in the stack, you have to

collapse it and then, if it still is not an Editable Mesh, choose Convert to: Editable Mesh. The Editable Mesh in 3D Studio Max has the following Sub-Object modes: Vertex Select and edit Vertices. Edge Select and edit Edges. Face Select and edit Faces. Polygon Select coplanar faces as set by the Planar Thresh value. Imagine pouring water on a surface and the water is only stopped by sharp angles and, if Ignore Visible Edges is unchecked (default), visible edges. Note: When counting polygons in a scene or game you are actually counting faces. Element Select all contiguous faces in a mesh. That is, if two faces share the same edge, they will both be selected. To add to your selection, hold down Ctrl while selecting. To subtract, hold down Alt. You can save your selections! This is very useful when you have managed a complex selection. Make your selection, type a name for it in the Named Selections field (Main toolbar) and press Enter. Whenever you need that selection again, just select it from the list. These Named Selections are local to the Sub-Object mode that you're in at the moment. They will also disappear as soon as you collapse the stack. Ignore Back facing (Edit Mesh Selection rollout). If checked, you can only select SubObjects that have their Normals facing towards you in the view port. Try this on a sphere in the Perspective View port. Hide what you don't need to see. You can't work efficient when the view ports are messy. This also makes it easier to make complex selections by excluding geometry otherwise obstructing your view. Simply select the Vertices or Faces you want to hide and press Hide (Edit Mesh Selection rollout).

Making a Basic Model


Ok now that you know what some of the controls are and what a mesh is, it is time to put this to practice, I will explain as well as I can while we go along. We will make a basic Model , This model will be a Spacecraft, like a U.F.O. Now remember that there are many different techniques to modeling and this is my way of doing it. It is not necessarily the best way or the only way to do it and as you get more practice at it you will develop your own techniques as well. I will try to do this in a way that is easiest to understand for you, and will also be making this model myself as I go along to make it as thorough as I can. This model is not meant to be the most detailed craft in the world, it is to give you the basic idea of how to make something with Max.

1. Start 3D Max and reset by going to the File menu and selecting Reset. This isnt always necessary but it is to make sure that all settings are at their default parameters. 2. Choose the Objects Tab in the upper left hand side of the screen under the tool bar. Choose Sphere from the Objects toolbar. You will notice that when you select the Sphere from the Objects bar that the panel to the right changes. 3. Now using your mouse click and hold the left mouse button on the TOP viewport, drag the mouse until you see a sphere form then release the mouse button, the size of the sphere does not matter at this time. 4. Now put your mouse over the panel to the right until you see the PAN hand and click and hold the left mouse button and move the mouse toward the top of the screen Until you see this in the right hand panel:

5. Double Click on the small box next to the word Radius and type 50.0 and press the down arrow on your keyboard. You will see that the Sphere in your viewport changes size. 6. Your cursor will now be in the box next to the word Segments, this determines how many faces are on the sphere, type the number 22 into that box and press the down arrow. You will notice that the sphere now changes how round it is. Note that the up/down arrows can be used to move from one parameter to the next, you can just hit the Enter/Return key or click with your mouse somewhere on the screen to make the changes take effect also. 7. Now click on your file menu and choose Save, name this file Saucer1.max. We will be saving often and changing the number on the end of the file name so that

you can go back to a previous save if you make a mistake somewhere along the line. 8. Right click on the Sphere in any viewport and the Quadmenu will pop up. Select Convert To > Convert to Editable Mesh:

9. You will notice that, again the right hand panel changes, when you do this. Now the bottom half of it displays the selection options for the editable mesh:

10. If you put your mouse over the different buttons you will see a text that will show the name of the button. We want to select Vertex, it is the button on the left with the 3 dots. When you select this you will see that the Sphere changes to a series of dots, these are the vertices that make up sphere. As we know the vertices are points in 3D space. Now that the sphere is an Editable mesh, we can move and manipulate the vertices to change the shape of our sphere. 11. If you have a mouse with a wheel on it you can use the wheel to zoom in and out in a viewport, to change viewports simply click on the one you want to be active. If you do not have a wheel mouse or you wish to not use it you can use the following to move the views to your preference. They are in the lower right hand corner of the screen:

12. 13. 14.

This one for zoom, click and hold while dragging the mouse. This one for Pan the view, Click and hold while dragging the mouse to move the view back and forth or up and down.

This one to rotate the view around so you can see the object from different angles. 15. Before you continue further play around with adjusting the view so you can get the hang of moving it around, when you are done you can restore them to default by clicking on the viewport and hitting the appropriate key, T = Top view L = Left view R = Right view B = Bottom view F = Front view K = Back view P = Perspective view. You can setup your views any way you want and can change them any time you feel like it. 16. Now you can make one of your views either left or right view because that is what we will be working on for the next few steps. 17. You select vertices by clicking on the view and dragging the mouse to make a selection box. Any vertices selected will change color to red instead of blue. (these are the default colors, they can be changed but we will not get into that right now) 18. Select the vertices in the top half of the sphere but not the ones around the equator of the sphere, so your selection looks like this:

19. What we are going to do is squash this sphere manually by moving the vertices, there are easier ways to do this but doing it this way will give us practice at manipulation of the vertices. Select Move by either clicking the move icon on the toolbar or by right clicking on the viewport and selecting move from the

Quad menu:

20. Move your mouse over the selected vertices in the left or right viewports until your cursor changes to the move cursor, click and hold the left mouse button and drag it down toward the bottom of the screen until the bottom row of selected vertices are just slightly above the top row of vertices that are not selected, so it looks like this:

21. Hold the ALT key down and drag a selection box around the bottom row of selected vertices, this will deselect them without deselecting the rest of the selection. Alternately you could left click anywhere in the active viewport to deselect the whole selection and use the mouse to select the desired vertices. The desired selection is the same as before but without the bottom row of the ones we

had selected previously. Your new selection should look like this:

22. Now move this selection down like we did with the first selection. 23. Repeat these steps with the next 2 rows, If you are worried about making a mistake then save your file as Saucer2.max before you start. When you are done it should look like this:

24. As you can see we still have the top 2 levels of the spheres vertices selected. We want to keep that selection for the next step so dont deselect them yet. 25. What we want to do with these vertices is make them flat, or on the same Plane in 3D space, we could just move them until they looked like they were on the same plane but we are not going to do it that way, because we are trying to learn new stuff. 26. To make these vertices all on the same plane, in other words to make them create a totally flat surface we will use alignment. 27. Left Click on the TOP viewport, OOPS now we deselected our vertices!!! What do we do?!?! Have no fear UNDO is here! Click the undo icon right under the word File in the upper left hand corner. Notice that our selection is restored but the TOP viewport is still selected, this is exactly what we want. Note: You can also Single Right click on another viewport to make it the active viewport without losing your selection, I just did this to demonstrate that the undo function is very helpful if you think you made a mistake. 28. Ok back to making the vertices on the same plane, make sure you do this with the TOP viewport active or it will not come out correctly. Right click on the TOP

viewport to bring up the Quad menu and select View Align:

29. Another way to do this is would be to scroll down on the side panel until you see the Edit Geometry Rollout, if it has a +Edit Geometry like this:

Then you can click that darker gray bar and it will open up, you can then scroll down until you see this:

Then with the TOP viewport selected click the View Align button. 30. Obviously Doing it the first way is quicker, but I show you this to demonstrate that many options have multiple ways to accomplish them.

31. Next we want to do the same thing with the lower half of the sphere, but on this one we dont want to make the last selection on the same plane. You should be able to do that ok by now so go ahead and come back when you get to the last 2 rows, at this point you should have a mesh that looks like this:

32. Now basically 3D Max has an object called an oil tank that could give you a very similar shape to this one from the start with but we need practice so we made it ourselves. 33. If not already selected select the bottom 2 rows of vertices again as is shown in the picture above. (zoom in if you need to, to make sure you have the correct vertices selected. 34. Move them up a little, slightly past the bottom unselected row, then select only the very bottom vertex and move it up, past the row you just moved up. Now that may sound confusing, it should look like this:

35. This will give the bottom of our UFO an indented look in the center. 36. Next select the vertices in the center by dragging a selection box around them so your selection looks like this:

37. Choose the Scale tool from the Quad menu or by clicking the icon and put your mouse over the selected vertices until the cursor changes to the scale cursor (looks just like the icon above). The click the left mouse button and drag toward the bottom of the screen until the vertices are inside the next row like this:

38. Save your work by selecting Save As from the file menu and name it Saucer3.max. (or whatever number you are on if you have saved again during this) 39. Select all the vertices above the ones currently selected and the move tool then move them down until only slightly above the top row of the ones we had just scaled, do the same with the vertices below our previous selection also. And it should look like this:

40. Select all the vertices on the bottom half of the saucer and move them up a bit to make the whole saucer shorter from top to bottom.

41. Go to your side panel and click on the vertex button again, to turn off the vertex selection. 42. Click on the lower right viewport and hit P to change it to perspective view (if it is now already) then click the Arc Rotate button in the lower right hand corner, you will see a circle with 4 boxes around the edges appear in the perspective view. If you put your cursor over the circle or the boxes you will notice it changes to a rotate cursor, use this to rotate your saucer around and look at it.

43. Check it out from various angles and admire your handy work. 44. It looks pretty, but it needs some details for it to look better. We wont go crazy with details but we can add a couple of little things to enhance its look. Set your viewports back to TOP, LEFT, FRONT & PERSPECTIVE. 45. Maybe a little surface variations some type of bridge on the top will make it more detailed and realistic. So lets do that next, we will start with a bridge. 46. What we will do to make the bridge is a process called extruding The Extrude modifier adds depth to a shape and makes it a parametric object. In other words it makes the selected faces raised up from the others, it also adds any faces necessary to keep the extruded faces attached to the rest if the model. So basically of you select a series of faces that form a circle (like we will) when you extrude them it will make a cylinder that rises from the original surface, you will understand better once we do it. 47. Now we want to switch to the Faces selection mode. (if you have exited 3D Max at any time during this tutorial you will have to make the model and editable mesh again the same way we did earlier) To change to Face select mode simply click

the Faces icon on the side panel:

48. As you can see in this picture I have checked the box next to Ignore Backfacing, what this does is make it so that you can select faces on one surface without selecting the faces on the surfaces behind them. Always remember that we are working in a 3D environment so there are often things behind the surface we are working on that we do not want to affected by what we are doing. 49. We want to select the faces that are made up by the vertices that we made planar earlier. Make your TOP view the active viewport and drag a selection box around the center circle of the saucers top. To make it easier to select these faces without moving anything choose the select arrow new selection should look like this: instead of the move cross . Your

As a side note on the Ignore Backfacing if you had NOT checked this box your selection would look the same from the Top view but from the Left would look like this:

Instead of This:

As you can see in this picture the under side of the model is not selected but in the picture above it the under side of the model is selected. That is what turning the IGNORE BACKFACING is used for. We do not want the under side selected for this next step. 50. Now go to your side panel and pan down until you see the Edit Geometry Rollout (like we did before with the vertices). Pan down the Edit Geometry rollout until you see Extrude, and in the box next to it type 2.0 and hit the Enter key on your keyboard.

51. Look at your perspective view and you should see something like this:

52. As you can see the extrude not only moved the faces we selected UP by 2 units it also added the faces on the sides to make those raised faces have a 3D height. Extrude is a nice feature but you must also keep in mind that it does add faces and therefore increase the polygon count of the model with each use, so dont over use it or your model may become too high in poly count and cause performance issues for the game. 53. Now since I brought up the subject of Polygon counts I will show you how to tell how many polygons your model is. These are 2 ways to so this, the first is to right

click on your model and choose Properties this will bring up the properties box for the object and the polygon count will be listed there for that object like this:

Now this is only the top half of the Object Properties box but the section circled on black is the Face count or Polygon count. Now this works for us because our object is all one piece, but what if our model has more than one part? Well in that case you can go to your File menu and select Summary Information and a large window like this will pop up:

54. This box will list the Face count for the whole Scene instead of just for a selected object. 55. Although there seems to be no particular set limit for polygon counts in Armada or Armada 2 the higher the count the more strain on your system resources there is. So if you think about it this way, you have one model that is 528 polygons and you build 20 of them in the game, that means your system and the game engine is handling 10560 polygons just for those ships, not to mention any other ships, stations, map objects, and weapons fire. Plus when in that game the model is

moving or the view is moving so that adds more strain because the game engine has to render the models more often than if they never moved. As you can see higher poly models will decrease system performance greatly, especially if the ship is a commonly built ship. 56. I recommend not going above 1000 polygons for a large ship and less for ships that are smaller and harder to see anyway in the game, although if you do it will still work in the game but it will take its toll on performance. Most ships should be between say 400 and 800 polys and not exceeding about 1000 1100 polys. Also textures can do a lot for the detail of a ship, not all details must be part of the actual mesh itself. For stations I would suggest no more than 1600 polys. However these are not set rules and are basically just my opinion, some people make models higher and some make them lower in poly count. Most of my ship models are between 400 and 1000 polys and my stations are between 300 and 1400 with the exception of my US Capitol Building for My Naval Armada mod which is a whopping 2500 polys. However the US Capitol building works fine because it is non build-able in the game and is only a starting unit for the US side. So there would be no more than a maximum of 8 on the game at once and that is only if you play with 8 players that are all using the US side. I would never recommend a ship with that poly count, the base doesnt move around but a ship does. 57. Ok back to the model we are making now, our poly count is still fairly low so we can add a few more details without any performance problems. 58. Save your work again. Use a new file number at the end of the name if you want. 59. We are now going to add some surface irregularities to the top surface of our ship, so left click on the TOP viewport to deselect any selected faces and to make the TOP viewport active. 60. Before you start doing this step, read over it and the next step to get a good idea of what you are doing then come back to this step. Hold down the CTRL key and click on the faces of the top surface of the ship, Keeping in mind that each square on the ships surface is made of 2 triangles or Faces, so make sure you select both faces of each square you select. Do this until you have the same selection as I have pictured below. As you click on the faces their edges will turn red, holding the CTRL key makes it so that each face you click on is added to the selection instead of only selecting the face you click on. Do this until you have selected about the faces on the top surface. When you are done this, your selection should look like the picture below, I have put a black dot on each section that it part of the selection, notice that each section with a black dot has the edges around it, highlighted in red, indicating that they are

selected.

61. It is important to make sure that you have selected both faces of each one of the squares (they are not completely square but we will call them that.) Notice on the picture below that the squares with the dots only have 1 face, of the 2 that make it up selected. The picture below is what we do NOT want, The picture above is what we DO want.

Also we do not want to select any of the faces on the outer edge of the of the top surface, in the picture below I have put black dots on the faces we do not want to

select.

62. Alright when you have your selection ready we can make these faces extruded the same way we did the bridge but not as far as the bridge was, so go to the Extrude box (as we did in step 50) on the side panel and put the number 0.5 in the box and hit the Enter key. 63. If you now check the poly count you will see that we went from 528 polys to 580 polys. 64. We are going to do this again but this time with different faces and with less faces than before. This time select only about 5 sets of faces and make them all different faces than the first time while still avoiding the faces marked with a dot in the picture above. This time our selection will look like the picture below and I have marked the selected sections with black dots:

65. Now we will also extrude these but to a different height than we did with the previous selection, this time use the number 0.8 and hit the Enter key. 66. Ok that is enough extruding, we now have a varied surface to the top side of the model, we will leave the bottom of it smooth, for 2 reasons, one because you dont see the bottom as often as the top, and two because we will do other things to the bottom. 67. What we are going to do next is add a couple small details around the indented edge of the UFO. This is where we will learn to use the clone and mirror options of 3D Max. 68. Got back to your side panel and pan up until you get back to the top of the selection options and click on the Faces Icon to turn the Face selection off, that will make the yellow box in the picture below turn gray again :

69. Now click on your saucer and look at the right panel, there will be a box that has a bar over top of it that says Name and Color, double click on that and type a new name there. I will use the name Saucer, if you like you can change the color too by double clicking on the box next to the name that has a color in it, you will be presented with a pop up color palette to choose your new color. The color will effect the color of the model in the perspective view and the color of the frame in the other viewports, it will not effect the color of the model once exported or in the game, I recommend choosing a color that has a good contrast with the background of 3D Max so you can see things better. 70. Time for a better look at our model, choose the Perspective viewport (if it is not displayed choose the lower right viewport and hit P) Then use the Min/Max Toggle icon to make the Perspective view maximized. Then use the Arc Rotate to move the model around (like we did in step 42) Look it over and notice how the top surface looks. When you are done use the Min/Max Toggle to get back to standard view. 71. Make the TOP viewport active. 72. Now click on the Objects Tab again to open the Object type selection bar. Select Box from that bar. 73. Choose a spot in the top viewport somewhere to the right of the Saucer. Click and hold the left mouse button and drag the mouse down and to the right to start making a box, (size doesnt matter at this point but it doesnt need to be big) release the mouse button and drag the mouse up, this sets the height of the box. (click, hold & drag sets the width & length then release and moving up down sets the height)

74. Go to your side panel and in the boxes pictured below input these numbers (you may need to pan down the side panel to see these selections, it depends on your screen resolution) Length = 9.0 Width = 2.0 Height = 4.0

75. You can leave the next 3 settings at 1 but I will quickly explain what they are, they are the number of sections for each dimension L, W, H, you can change them and see the changes in your viewports if you want to see how they work but when you are done experimenting return all them to 1. 76. In the top viewport single right click on the new box and look to the right side panel, double click on the name box and rename the box to detail (without the quotes of course) You can assign it a color too if you wish, although when we are done the color wont matter anyway. We should now have a top viewport that looks something like this:

77. Right click on the LEFT viewport (not the viewport on the left but the viewport that displays the LEFT view) That should now look something like this:

78. Right click on the new box and choose Convert To> Convert to Editable Mesh. 79. Zoom in on the left viewport so that the new box is easy to see.

80. Click on the Vertex Selection Icon on the right side panel. 81. Drag a selection box around the top left vertices of the Box we made, Select the Move cross and move the vertices to the right a little. Like so:

82. Drag a selection box around the upper right vertices and move them to the left the same amount you moved the ones in the step above. Like so:

83. Go back to your side panel and click the vertex select button to turn it off again. 84. Now what we want to do is move the box toward the saucer, we want the box to intersect the saucer and be centered on the one side of the saucer between the top and bottom lip of it. We will work in the TOP and LEFT viewports to do this. Move it left and right & up and down in the LEFT viewport then left and right in the TOP viewport until it is centered on the side of the saucer and intersects with the saucer like this:

85. The lower picture above is a close up view from the Front viewport to show how the box intersects with the side of the saucer. See how it overlaps the edge of the saucer? That is what we want it to do. 86. Now we want to put a couple more of these boxes around the perimeter of the inner edge but we want them to all be exactly the same. Instead of making a new box for every one we will clone this box, in other words make an exact copy of it to put in another place. 87. With the box still selected go to the edit menu on the top pull down menu and select Clone, you will see this box pop up:

88. Leave the settings in this box the way they are and hit Enter.

89. This will make an exact copy of the box but name it detail01, it will also select the new object for you. 90. So since the new object is already selected all we need to do is move it to the new location, go ahead and move it to the opposite side of the saucer, use the TOP viewport to do this and just drag the new object left across the screen with the Move cross, until it is in the same position the first one was but on the opposite side of the saucer. We now have this:

91. Now we want to make another one of these, so clone it again, the same way as before. It will automatically be named detail02. 92. Move the new clone in the TOP viewport toward the center of the saucer and down until it is in this position:

93. Save your file twice now save it as a new number, then save it as a new number again, you will need to reload the saved file after completing the next step. We save twice in case you accidentally save over the current file when you go to reload your saved file. Trust me on this one Save twice for safety sake. 94. We need to rotate this object now, so select the Rotate Tool at the top between the Move and Scale tools. The move your mouse over the object until the cursor turns to the Rotate Cursor. A note about rotating, Each object has 3 axiss an X, Y, & Z axis, each axis is a centerline that goes though the object in a different direction. As you can see in the picture above, it is easy to see the Y & X axiss from the TOP view, The Z axis (from the top view) is pointing toward you, out of the screen. From the left or front viewport the Z axis would be pointing up but one of the others could be pointing out at you. When rotating an object, as you pass your mouse over the object the axis that you are would rotate highlights. In the picture above you would have to put your mouse over the center of the object to highlight the Z axis and rotate it in a clockwise or counter clockwise direction. Take a few minutes to rotate the small box on its different axiss to get the hang

of how to rotate the object around on the axis you want to. When you are done reload the saved file you made in step 93 but do not save the current file first, (Max will ask you if you want to save the current scene, click no ) 95. Ok now you should have the feel for rotating an object, and you should have reloaded the saved file you made in step 93 and your file should look like the picture at the end of step 92. So lets get back to work. 96. Rotate the detail02, in the TOP viewport, on its Z axis clockwise or counter clockwise until it is 90 degrees from its original orientation, like so:

97. We are going to make this one a little different than the other 2 that we already have, so go back to the right side panel and turn the Vertex selection back on again. 98. Select the vertices on the left half of the box and then the Move tool and move them left so that the box gets wider, about 2 times its original width.

99. Now select the row of vertices closest to the top of the screen and move them up toward the top of the screen so the box is about twice as high as it was before:

100.

Now select the row of vertices closest to the bottom of the screen and

switch to the Scale tool and put your mouse over the selected vertices click and hold the left mouse button and move your mouse downward. You should get this as a

result: 101. Ok now go to the Side panel and turn off the Vertex select. 102. When you turn off the Vertex select you will notice that the axis tripod becomes off centered, My way of fixing this is to move the object so that the axis tripod is lined up with the grid line:

103. The turn the Vertex select back on and select all vertices, Move the whole object over until the Axis tripod of the vertices is lined up with the grid also.

104. Then when you turn the vertex select back off it should be centered again, go ahead and turn the vertex select off again and see.

105. Now we are going to move this newly edited box into a position similar to the other ones but instead of covering a flat face it will go onto a curved one. Move details02 (in the TOP viewport) toward the top of the screen until it intersects with the saucer. In the FRONT viewport move it left & right until it is centered on the 2 flat surfaces. As shown here:

106. Ok now we need another one of these for the other side, but in this case, if we cloned it then it would be facing the wrong direction and we would have to rotate it. But there is an easier solution than this, Mirror. What mirror does is just what it sounds like, it makes a mirror image of an object, it can also mirror the object on any of its axiss to make it fit into different needs better.

107. Go to your Tools drop down menu at the top of the screen next to Edit. Select Mirror, you will get this dialogue:

108. Use the settings shown here. Mirror on the Y axis and Copy, because we dont just want to flip the one we have, we want to make another one that mirrors the one we already have. You will now have this:

109. As with clone this makes a new one with a new name, in this case detail03, so now move detail03 toward the top of the screen, so it is positioned like the detail02 is but on the other side of the saucer. 110. So now we have the Saucer and the 4 details that makes 5 meshes in this model, we could leave it that way but we wont. A model for Armada can have more than one separate mesh in it, this does have certain advantages, like the fact that each mesh in an Armada model can use only one texture, so if you have your model as 2 or 3 separate meshes you could use 2 or 3 separate textures for it, which could make it have higher detail for the texturing. However for this model we are only going to use 1 texture anyway so I will show you how to attach the model together into one mesh. 111. Select the Saucer by left clicking on it, now there are several ways to attach objects together. A. You can use the Quad menu and select Attach then select the item to attach it to by clicking on the object in any viewport or by going to the edit

menu and choosing Select By Name.

B. You can go to your sidebar under Edit Geometry and select Attach and do it the same way as mentioned above from there on.

C. You can go to the Edit Geometry rollout on the sidebar and Choose Attach List, and use the widow that pops up like this:

D. Now my preferred method would be A or C, I rarely use B but it is still an option, because I dont think all versions of 3D Max have the A and C options. 112. So now we attach the saucer to all the other parts I will use method C to do this selecting the Saucer and then choosing each other part one at a time until they are all part of the saucer mesh. 113. Keeping in mind that the object that is selected when you start attaching is the parent object and all objects that you select to attach to it inherit the properties of that object. For example if the parent object has the Backface Cull turned off then any object that you attach to it will also have the Backface Cull turned off. I know what you are saying: What is Backface Cull? Well By default only one side of the faces in a model are visible, these sides are called the normal side. Backface Cull when unchecked in the Objects property box makes it so that both sides of the face are visible. So you could have something that was flat but visible from both front and back, like a chain link fence for example. Also turning the Backface Cull off will increase the poly count because it is displaying 2 times as many polys per face. I use this along with alpha channels in the texture to make things that are fairly 2D like antennas for my Naval ships and for towers made of girders etc 114. Save your work, we are going to talk about a few things that we are not going to use in this model but that will help you as you get better at modeling. Then we will come back to the model and add the hierarchy and all those goodies.

You have done a lot and now its time for a break, so go get some coffee or a soda and sit back and read on. 115. We did not cover every control for 3d Max in this tutorial but we covered enough to get you on your way to making decent models. There are many other features that we have not covered, for example: A. Vertex welding and breaking. This is for merging multiple vertices together into one singe vertex, or in the case of breaking, for making 2 vertices from one. Use to split or combine mesh parts. B. Detaching, this is the opposite of attaching, you can select faces in a mesh and detach them as a separate object. C. Meshsmooth, Meshsmooth is a modifier that you in most cases apply last in the stack. It does not destroy mapping coordinates or material IDs from the underlying mesh. The only parameters I would change in this modifier are Subdivision Iterations. That is how smooth/dense the mesh will be. You can have different values in the view ports and at render time; just check Render Values Iterations and enter a value. Usually 1 iteration is enough in the view ports and maybe you want to increase to 2 in Render Values. This really increases your poly count so its not highly recommended for Armada modeling but it is nice for making models for rendering D. Soft Selection (Edit Mesh Soft Selection rollout). This new feature implemented throughout R3 is really great. It lets you influence SubObjects outside the actual selection to a certain degree. Maybe most useful in the Vertex Sub-Object mode. Here the influence field is represented in color, which makes it easy to see what is going to be affected. The parameters in this rollout are pretty self-explanatory. Use the falloff parameter to change the size of the volume affected. E. A Boolean object combines two objects by performing a Boolean operation on them. In the software, a Boolean object is made from two overlapping objects. The original two objects are the operands (A and B) and the Boolean object itself is the result of the operation. F. For geometry, the Boolean operations are: Union: The Boolean object contains the volume of both original objects. The intersecting or overlapping portion of the geometry is removed. Intersection: The Boolean object contains only the volume that was common to both original objects (in other words, where they overlapped). Subtraction (or difference): The Boolean object contains the volume of one original object with the intersection volume subtracted from it. G. Bump mapping You can select a bitmap file or procedural map to use for bump mapping. Bump mapping makes an object appear to have a bumpy or irregular surface. When you render an object with a bump-mapped material, lighter (whiter) areas of the map appear to be raised and darker (blacker) areas appear to be low.

H. The Bevel modifier extrudes shapes into 3D objects and applies a flat or round bevel to the edges. A common use for this modifier is to create 3D text and logos, but you can apply it to any shape. Bevel takes a shape as the base of a 3D object. You then extrude the shape up to four levels and assign an outline amount for each level. I. Animation Objects in 3D max can be animated to move in a predefined way, you can use animation to make things, open and close or rotate, among many other things. Most animations for Armada related models are fairly non-complex animations like the things mentioned above, but 3D Max supports very complex animations also that can be used to render advanced scenes and backgrounds for movies and such. Things like animated background like water, sky, space, items that grow and shrink and items that follow paths you set for them. Animation is a vast subject as it pertains to 3D Max and I will not be explaining all the intricacies of it in this tutorial but I will touch briefly on basic animations used for Armada models such as animated rotation. But as a note for animations for Armada you must keep in mind when making animations for ships or stations or map objects that hps and nodes for Armada do not animate along with the mesh. So, for example, if you make a turret rotate the hp or firing points of the model will not move even though the mesh itself does, this may cause the turret to appear to fire from a location that does not line up with part of the mesh at a certain point in the animation. J. These are just a few of the literally hundreds of available features of 3D Max. I recommend experimenting with different features to see what effects they have. Just when doing so, use a simple object like a sphere or box and not a newly made model. K. Read through the help files and tutorials for 3D Max they contain vast amounts of very useful information if you have a question, the answer is probably there if you look hard enough.

Making the Armada Model Hierarchy.


First we will explain what the hierarchy is when go into setting it up for our UFO model. The Hierarchy is linking one object to another, you create a parent-child relationship. By linking more objects to both parent and child objects you can create complex hierarchies. In Armada models the hierarchy is setup to connect different nodes to the rest of the model, these nodes control different things such as, when damage is displayed, when borg assimilation textures are applied, to setup Hps for weapons to fire from etc. All the nodes you make for these things must be named correctly and also linked to the appropriate parent node. As these things are linked together it makes something that looks like a family tree or a flow chart. The start of this family tree is always the root of the scene that you create in 3D Max and then branches down into different and more specific nodes as it progresses down. Nodes are, in a very basic sense, only points that are put into your model or mesh pieces that make up the model. These points are named specific things to make them control specific areas of the model or specific actions within

the model. An hp (or hardpoint) is an example of a node, they control the locations that weapons firing from in the model. The following section that is between these red lines was originally included with the Star Trek: Armada II 3DS Max Exporter and has had some commentary added by me. ----------------------------------------------------------------------------------------------------------The reserved node names are any that begin With: "s_", "c_" "e_", or "hp". Also "damage", "crew", "engines", "life", "sensors", "shields", "target", and "borg" are reserved for the damage hierarchy. Hardpoints _must_ begin with the characters "hp", or they won't be exported properly. hp(xx) Where (xx) is a number 01, 02, 03, 04 etc..depending on how many you use. Sprites: sprites are nodes named s_(spriteid)_(xx) (spriteid) is one of the spriteids from one of the sprite files in Armada2\build\sprites\*.spr (xx) is a number identifier for the node in case there are more than one of this node name present in the model. Sprite nodes are commonly used for lights, and usually there is more than one light with the same name when this happens you would use a number in place of the (xx) like 01, 02, etc.. Particle emitters: Emitters are usually used for damage displays and they are steam emitters or plasma emitters and are named like this e_(emitterid)_(xx) (emitterid) is one of the id's from the file \Aramda2\build\sprites\emitter.spr, the lines that begin @emitter (emitterid), e.g. @emitter plasmalrg Thus, if you place a node named e_plasmalrg, a large plasma emitter will be placed at that 3d location. If you put that node in the damage hierarchy, it will only be visible when the specified condition is true. Hardpoints: If you look in the .odf file for you ship, you will see a list of hardpoints associated with each system (sensors, weapons, etc). These will be used by the game to determine where weapons fire from and what other ships fire at. All hardpoints must begin with the characters "hp", this includes hardpoints that specify the location of new geometry, like the research station pod locations which were previously named "pod{xx}" (in A1) and should now be named "hp_pod_{xx}(for A2)" Where (xx) is a number for the same reason as in the case of sprite nodes. Damage:

For visual damage effects you need a seperate node hierarchy starting with the root named "damage". Below that you need the following nodes: "crew" // applied when crew reduced to 1/3 max "engines" // applied when engines are disabled "life" // applied when life support disabled "sensors" // applied when sensors disabled "shields" // applied when shield generators disabled "target" // applied ? "borg" // applied when ship is assimilated by the Borg Command Nodes: Command nodes are special nodes the modify the export behavior of their parent mesh. The are any node whose name begins "c_". Specifically, they are: "c_tm_[name]" Use the texture material [name]. "c_anim_[identifier]_[playback_offset]_nn" Texture animation. "c_borg_[texture]" specify a borg assimilation texture for the parent node. ----------------------------------------------------------------------------------------------------------Now we have a basic understanding of what the hierarchy is and we need to actually apply some of this knowledge to an actual model to understand it further. Now Armada 1 and Armada 2 have a slightly different hierarchy setup for them, so I will talk about all the nodes, and then tell you which ones are needed and not needed for the relative game. 1. So start up 3D Max again and load your latest version of your saucer model. 2. Choose the Helpers Tab from the Tab Panel :

3. From the Helpers Tab choose the Point Object helper . 4. In the TOP viewport click the left mouse button on the center of the saucer to set a point.

5. In your right hand side panel you will see the name and color of the new point you have made:

6. The Section pictured above is where you name your new node, you can also set how you want it to be displayed for you in Max. I like to use the Axis Tripod setting because it most closely simulates the look of the node as it will appear in the Armada sod format when viewing it in Storm 3D. You can also set the size of it, however the size will make no difference once exported to sod format, this is just for ease of seeing it in Max. 7. Now double click on the Name and Color box and name this node Geometry (without the quotes). Then hit the Enter key. 8. Repeat this process putting down a total of 12 points (including the one we already made), the position of these points can vary but I recommend putting them all as close to the center of the saucer as possible especially for the point you name Geometry. Name the points as follows: A. Damage B. lights C. hardpoints D. Crew E. Engines F. Life G. Target H. Sensors I. Borg J. Geometry K. Shield L. root (not needed for A2, the scene root is used for instead of a point named root in A2) Spelling is important for these points (nodes) make sure they are all spelled correctly 9. Now for arguments sake I want to center the whole model in the scene, so in the TOP viewport drag a selection box around the whole saucer, or go to your Edit menu and select Select all Select the Move tool and move the entire saucer and

all the new nodes to line up with the grid that is in the background of the viewport, there is one set of lines on the grid that are darker than all the others, where these 2 darker lines cross is the exact center of the entire scene. Line the center of the saucer mesh up with the intersection point of these 2 lines. When done save your work.

10. Now we will add some lights to this ship, we will only add 2 lights to this one but you can add more than that to a model if you wish. 11. First we will set the lights then we will move them as we need to, Select the Helpers tab again if not already visible and select the Point object helper. 12. In the FRONT viewport click slightly to the left of the left edge of the saucer, name this point s_greenconstbig_01 (this is a green, constant, big light, the names of all the lights can be found in the file lights.spr in the sprites directory of your Armada main directory or in the Light Sprite Node Names section of this tutorial) Now click slightly to the right of the right edge of the saucer and name this point s_greenconstbig_02. The s_ in front specifies the node as a sprite node, and you must use this in front of any sprite node you want to use or it will not show up correctly in the viewer or in the game. 13. Then select the Move tool and move these points (zoom in if you need to or use the min/max toggle to make the viewport bigger) until they are almost touching

the sides of the saucer and are centered on the inner side of the saucer like this:

14. Now using your Rotate tool rotate these 2 nodes one at a time until the Y axis is facing away from the ship. This will be explained further in a little while.

15. Next we need to add hardpoints or hps to the ship so it can fire weapons, the first thing to do is decide where you would like the weapons to fire from, personally I thing that this particular craft should fire from the overlapping top and bottom edges around the perimeter of the saucer. 16. So we will add several more points to the ship to use as hps. Select the TOP viewport and click the Min/Max Toggle in the lower right hand corner of the screen. This will make the TOP viewport maximized for easy viewing. Ok Select the Helpers tab again if not already visible and select the Point object helper.

17. Place 2 points down at opposite sides of the saucer, and name them hp01 and hp02 it should look like this:

18. Select the 2 new points by dragging a selection box around one, then holding the Ctrl key down and dragging the selection box around the other, or you could go to your Edit menu at the top of the screen and choose Select By>Name and choosing hp01 & hp02 from that pop up box. Note you can use the Ctrl and Alt keys along with the left click of the mouse to add and subtract items from your selection: 19. Then go to your Tools Menu at the top of the screen and select Mirror and use these settings (shown in the picture below) then hit the Enter key:

20. This will make 2 new hp named hp03 and hp04 (automatic renaming is helpful ) Use the Min\Max Toggle to return the TOP view to standard size, and make the left view active. 21. Then select hp01 and hp03 using one of the methods described above in step 17. Select the Move tool and Move these 2 hp till they are even with the edge of the lower lip of the saucer like this:

22. Then select hp02 and hp04 and do the same thing but move them to the top edge of the saucer instead of the bottom edge. So when you are done these steps 1&3 will be on the bottom edge of the saucer and 2&4 will be on the top edge. 23. Select all 4 of the hp, then go to the Edit menu and select Clone and hit Enter. 24. Choose your Rotate tool and the top viewport, the new 4 hp that we just cloned should still be selected, if not select them again hp05-08. Rotate the 4 new hps as a group by holding the mouse cursor over the center of the saucer, the cursor will turn to the rotate cursor. Rotate them counterclockwise on the Z axis until they line up with the next 2 sections of the saucer like this:

25. Now select all 8 of the hp and clone them, then rotate them the same way as you just did.

26. Select the most recently created 6 hp, hp11-16 and clone them and then rotate them the same way you just did. This will make it so that each section of the saucer has an hp at it, like this:

27. Now we have 22 hps and the saucer has 22 sides, the hps alternate from top edge to bottom edge. So we actually have 11 on the top perimeter and 11 on the bottom perimeter. 28. Now hps can be rotated like any other object in Max and they can be rotated on any of their 3 axiss also. Now for weapons that have restricted firing arcs the direction of the hp will determine the direction the weapon will fire.

29. We will use the mirror to flip all the hps on the right side of the saucer so that the Y axis faces outward , away from the saucers center. Select each of the hps individually and select Mirror from the Tools Menu and change the mirror axis setting until the Y axis faces away from the center of the saucer the settings below will work for most of them but a couple will need other settings, watch the TOP viewport when you change the settings and you will see when the Y axis is facing the correct direction:

30. When you are done it will look like this:

31. Notice how all the Y axiss are pointing outward, away from the saucers center. The Y axis is the direction that the point is facing, as you can see there is an arrow

at the end of each axis, in the case of Armada The Y axis determines the direction of fire for weapons with a Restricted firing arc, and the direction that things like damage sprites face. This will become particularly important in the next few steps where we add damage sprites nodes to the model. 32. We have plenty of hps, now we need to add some damage sprite nodes to the ship. As mentioned above the direction that the point faces is particularly important here. The Points we place on the model here must face away from the surface of the model. Meaning the Y axis should point directly away from the model. 33. Now to make things easier to see and to select and edit we are going to hide some of the points we already have set down. To do this use one of the selection methods we already talked about and select all the hp, and the other points we made. Right click on the TOP viewport to bring up the Quad menu and choose Hide Selection This will make all the selected points invisible so that they do not get in the way or confuse us when selecting things. To unhide them right click on the viewport and select Unhide All from the Quad menu, they will then all become visible again. For now though we want everything but the Saucer mesh itself to be hidden. 34. Click on the LEFT viewport to make it active. Click on the Helper Tab, and select the Point Object Helper again. Click on the top surface of the saucer to make a point and name this point s_crew1. 35. Now this new point is a damage sprite and must be aligned properly for it to look right in the game or the viewer. So we need to move and rotate this node to the proper position. As we said before the node must have the Y axis pointing away from the surface of the model, so in the LEFT viewport and with the Rotate tool selected Turn the node until the Y axis is facing away from the surface of the model, like this:

36. Make sure the X axis is facing along the face of the saucer (as shown above) and that the Y axis is facing directly perpendicular to the surface of the model. This will make the damage sprite appear to be ON the surface of the model.

37. Now with that node still selected Mirror and copy it as we did with the other nodes earlier, using these settings :

38. Choose the Move tool and move the newly created node to the opposite side of the saucer, then change the name of this node to s_crew2 (when it is mirrored it will have the name s_crew02 and that is not a name for a damage node). 39. Choose both nodes and clone them, then Use the Rotate or Move Tools to rotate them or move them to a different area of the models surface Making sure to rename them to s_crew3 and s_crew4. Then choose them both and clone them again, Move them to another location on the top surface of the model and name them s_crew5 and s_crew16 (yes it is supposed to be 16, this is NOT a typo these are not just numbered listings these are the actual names of the sprites as listed in the damage.spr file in the Sprites directory). Choose one of these damage nodes and clone that one also and name it s_sensor. Move the s_sensor node to the top of the bridge and rotate it so that the Y axis points directly up. For a listing of the damage sprite node names that you can use, refer to the Damage Sprite Node Names List section. You should now have a total of 6 nodes in various spots on the top surface of the model all with the Y axis facing directly away from the top surface. 40. Now we will add 2 damage emitters to the model too, These are the sprays of steam and plasma that come out of a ship when severely damaged. Select the Point Object helper again and in the left viewport, click on the bottom of the saucer to place a point there somewhere on the right half of the ship between the center and edge of the ships bottom surface, Name this node e_ plasmamed_01. Rotate this node so that the Y axis is facing down and toward the edge of the ship. With this one the Y axis will be the direction that the plasma will spray in. 41. Then put another point on the top by the bridge on the right hand side of the bridge and name it e_steamsml_01. Rotate this node so that the Y axis faces

toward the right, away from the bridge. It will be something like this:

42. Now some of these damage nodes may take a bit of work to get positioned correctly, remember we have an uneven surface on the top of the model and some of these damage nodes may need to be moved closer or further away from the surface to be completely visible. You can export the model and look at it in the Storm 3D viewer to see how they look if you want and adjust them as needed. They will (at this point) show up in the Storm 3D Viewer without turning the damage on, because we have not linked the nodes to the damage node yet. (we will do that soon) Keep adjusting them until you get them in the right positions. When you are done they should look something like this:

43. Obviously the Picture directly above is from the Storm 3D viewer and shows how the damage nodes will look when active. This picture does not show the emitters but yours will. 44. Now from looking at the model in Storm 3D we see that this model is a little too big, right now it is about the size of a station, So we will scale it down some, right click on a viewport to bring up the Quad menu and select Unhide All. Go to the

Edit menu and chose Select All. Pick your Scale tool and in the TOP viewport lick and hold the left mouse button while over the center of the saucer and pull the mouse downward until the edges of the saucer are about 1.5 grid squares from the center of the model, like this:

45. This will make this ship about the same size as the length of the Sovereign class. 46. Now we have all our nodes in place, next we must link them all together into the Hierarchy 47. Go to the top pull down menu Bar and choose Graphic Editors. and from that menu select, Schematic View>Open Schematic View . You will be presented with a window, maximize that window to full screen and zoom in until you can

read the text on the boxes in that window. It should look something like this:

48. This is the schematic view and this is where you link the different nodes and mesh parts together to make everything work together. Now the hierarchy for A1 and A2 models are different in some ways so I will do this in A2 format then show it to you a picture of the A1 format also. 49. First I prefer to do this in Hierarchy Mode view so click the button at the top of this window. 50. Now select all the nodes that are hps (start with hp) by selecting the Select Icon and dragging a box around the little boxes with the hpxx (where xx is a number) you can add or subtract from the selection by holding down the Ctrl key while dragging the box around the little boxes. 51. Once the hps are all selected click the Link icon near the select icon. Click and hold the Left mouse button and move the mouse cursor over the small box (node) that says hardpoints and then release the mouse button, all the selected nodes will move to be linked to the Hardpoints node. Now the hps are what we

call children of the parent node, Hardpoints. It will look something like this:

52. Select the s_crew1 and e_steamsml_01 nodes and link them (using the same method as described in steps 47&48) to the Life node. Select the s_crew2 node and link it to the Crew node. Select the s_crew3 node and link it to the Target node. Select the s_crew4 and s_sensor nodes and link them to the Sensors node. Select the s_crew5 node and link it to the shield node. Link the nodes named s_crew16 and e_ plasmamed_01 to the Engines node 53. Next select the nodes that are named : Engines, Crew, Life, Target, Sensors, Borg & Shield and link them (using the same method as described in steps 47&48) to the Damage node. 54. Select the s_greenconstbig_01 & s_greenconstbig_02 and link them to the Lights node. 55. The Geometry node gets linked to the mesh itself, so in this case to the saucer mesh. Notice the saucer is the only blue one, that is because it is a mesh and not a node 56. When all done it right click anywhere in the window and a menu will appear, from that menu select Show/Hide>Show All, This will show all the nodes and the

hierarchy they are set in.

57.

58.

59.

60. Due to a minor oversight on my part the s_sensor node does not show up on this picture but trust me it is there. 61. Now I Know I am going to get comments from people familiar with the A1 Hierarchy about the looks of this setup. Comments like : A. Where is the root node? B. Why is the geometry connected to the mesh, it is supposed to be the other way around? C. Why didnt you mention a Borg assimilation command node? 62. Ok I will answer those questions. A. A2 doesnt need a root node, it uses the 3D Max scene root instead. B. The Geometry node in A2 is only used to control LODs (LOD are Levels Of Display. They are basically lower poly versions of the model. They are displayed when you zoom out to different distances where detail cannot be seen anyway or when system resources are low.) If you added LODs

(which we did not) they would be linked to the geometry node under the main models meshes. C. Borg assimilation is handled by the programming now, all you need to do is include the texture and the Borg node under the damage section of the hierarchy, no command nodes to specify Borg textures are needed in A2. 61. This brings us to the A1 hierarchy, which for the most part is the same but with a couple small differences: A. In A1 there is also a node called Root, which the Damage, Geometry, Hardpoints, and Lights nodes are all connected to. B. In A1 the Geometry node is connected directly to the Root node and then the meshes are connected to that (unless you are using LODs, in that case the LODs would be connected to the Geometry node and the different meshes for each LOD would be connected to the LOD nodes) Most of my meshes do not use LODs because they are low enough in poly count that they do not really need them. C. A1 requires a special node called a command node to specify the name of the Borg texture used for the model. So for the same model the A1 hierarchy would be similar to this:

Now I will not go into Borg Assimilation for A1 models because to be honest although I know the procedure in theory I have not actually done it on any of my models, and I would not want to lead you down the wrong path on that subject. The children of the Lights, Damage and Hardpoints nodes are the same ad A2 in their setup, but as you can see the addition of the root and the different setup of the Geometry

node are the main differences. The Borg Assimilation setup is different too but that is for someone else to explain in another tutorial. Note: It is a good idea to select the whole model, nodes and all and make sure everything is completely centered in the exact middle of the scene. When selecting everything make sure that you unhide everything first and then align it to the center if the grid in all the viewports. Export your model with the Max to Sod exporter and you are done, view it in the viewer, turn the damage on and off and admire your work. To texture this model, see the next chapter. This tutorial is in no way supposed to teach you everything there is to know about modeling, it is only a beginner tutorial to get you started and show you show to make a basic model and set it up for use in the game. There are a lot more things to learn about modeling and they are all up to you to discover for yourself. Practice and experimentation will teach you much more than any one tutorial or person can.

Chapter 12
The Basics of Texturing
Refer to the Light and Bump Map setions before starting if you wish to use them on this model. Please read over this entire chapter before Starting the actual texturing, it will make the whole process moch easier to understand and do, if you read it over first. This chapter deals with the texturing of models, not the actual making of a texture but the process of appling that texture in 3D Max. I will not be talking about how to make textures in this tutorial, making textures depends vastly on your artistic talent and the quality of the software you use to make textures. It also depends a lot on how much time and effort you take to learn the software and make your textures. Since that subject is very much user related and not really a matter of knowing how I will be leaving it up to you to develop your skills in makingtextures on your own. For this Chapter I have included the texture we will use for learning the process of applying the texture in 3D Max. Also the model we will be texturing will be the model of the UFO that we made in the previous chapter. The quality of the texture in this case is not the issue here, only the actual application it it is. Texturing a model , in my opinion is easy to learn but very difficult to master . It is a very tedious time consuming process in most cases and can be very frustrating. To learn and master texturing you must have patience and if you do not then you may as well just skip this chapter all together. Of course this all depends a lot on your personal preference on quality, if you are not really concerned about how nice the model looks then it can go much faster than someone like me who is very picky about how things look. Do not expect to be a master texturer after completing this section, we will be dealing with the process of how to do it but you will definitely need to practice this for a while before you get good at it. In the Textures\RGB directory included with this tutorial there are the textures we will use for this texturing. Also we will be assuming that you are

familiar with the controls we used in the previous chapter by now, things like how to select specific objects, how to move things, hide and unhide things. If you need to refresh your memory on these things refer back to chapter 11, I will not be re-explaining how to do things like that in this chapter. 1. First thing to do is to put the included texture into your textures\RGB directory under your Armada 2 main directory. 2. Next Start 3D Max and load the lastest version of the saucer we made in the previous chapter. 3. Make sure everything is unhidden ( right click on the active viewport and choose Unhide All from the Quad menu). 4. Now select everything except the saucer mesh itself and hide that selection, you should be left with only the saucer visible in your Max Viewports. 5. Click on the Saucer mesh in any viewport to select it.

6. Hit the M key to bring up the Material Editor it will look something like the picture below depending on the version of Max that you are using.

7. The top section with the sheres is where you select which slot you want the material occupy. Normally you would use the first slot for your first material and so on. 8. Holding your mouse over any of the icons will show you the name of the function. 9. First we need to add our texture to the material editor. Look under the bar that says Blinn Basic Parameters, if this rollout is not expanded yet then click on that bar to expand it so that it looks like the picture above. Now look for the word Diffuse There will be 2 boxes next to it, the first is the color selection box for the material, this controls the color tint to the material, we will leave that alone for now. The next small box is where you select the texture that you want in this

material slot.

10. Click on the box that is shown in the picture above and the box below will appear:

11. Select bitmap and a Browse Dialogue will pop up :

12. Load the file tutufo.tga. You will notice that this box shows a decent amount of info about the texture including preview if the Preview box is checked. 13. Now you should have the Saucer still selected, so the buttons in the picture below should be available:

14. These 2 buttons are: , this assigns the active material to any meshes that are selected, you can also drag the material from the material slot to the desired mesh but I find this way much easier. The other is , This one makes the material visible on the model in the viewport in the lower right hand viewport. Now, whether it shows up will also depend on your system resources sometimes, if you are really low on memory this option will be over-ridden by the program. 15. Click both of these buttons to assign the material to the saucer and to make it show up in the viewport. When you do this the saucer in the rlorew right viewport will change colors. 16. Now you may be saying, it changes color but the material doesnt show up on the model. This is true, we have assigned thetexture to the model but have not assigned how the texture is applied to the model yet so it isnt shown at this point, be patient and it will show up, and if it does not we can use Rendering to show us what it looks like. 17. Next we need to convert the mesh to an Editable mesh as we did when making it. 18. Once we have the mesh Editable we will turn on the face selecting, as we did in the previous chapter. 19. Select all the faces on the top surface of the saucer only. This is most easilty accomplished by using the left or front viewport and dragging a selection box around the top surface from the side. The selection should look like this:

20. Go to the Modifiers tab on the Tab Bar and select the UVW Map Modifier . You may have to pan the toolbar over depending on your screen resolution.

21. The lower half of your side panel will change to display the options for this modifier, The options will look something like this:

22. It will start out with the dot in the circle next to Planar. These control how the texture will be applied to the selected faces. In this case we want Planar, this means the texture will be applied as a plane or flat surface onto the faces as a group. Cylnder means the texture will be applied as if the faces were in a cylindrical shape, Spherical, as if the object was a sphere, Shrink wrap I have not found a good use for yet. Box is as if the faces formed a box or cube, and Face means that the texture will be applied to every face identically. Now Face results in more detail but also is harder to get the texture aligned correctly. You will unerstand this better as we proceed. For now just select Planar. 23. If you Pan down on your side panel you will see other parameters for the texture alignment like these:

24. These determine the axis that the alignment is set to, you can change these X,Y,Z settings and notice the Planar Gizmo change its orientation.(The Planar Gizmo is the orange box that appears in your viewport when you clicked on planar in the step above) For this particular situation z is the axis we want and it is the default setting this time so you dont need to change it unless you are experimenting, if so, when doen put it back to Z.

25. Now from your Modifiers Tab Choose the Unwrap UVW Modifier . The lower half of your side panel will again change, to the options for this modifier.

26. Click the Edit button, and it will open a window like this:

27. Drag a Selection box around all the vertices pictured here, and select the Scale tool from the upper left corner of this window.

28. Using the scale tool and the move tool in this window, move and scale all the vertices at once until they are in position pictured below. Notice they are not covering the entire circlular part of the texture.

29. Close this window when done. 30. Save your file when you confirm that you have got your texture for the step correct. You can confirm by Rendering or by Exporting the model and viewing it in the Storm 3D viewer. 31. Now if you cannot see the texture applied in the lower right viewport then go to your Rendering menu at the top menu bar and choose Render You will then see

this dialgue:

32. Make sure you have Top selected as the viewport in the box at the bottom of this dialogue, and click Render. This will render a picture of the top side of the model. It will look something like this:

33. The white sections are because this texture includes an alpha channel that contains a Light Map that will make the green sections illuminated if the material is put in

the Self Illumination slot of the Material Editor , it Will not have the white sections like this when exported to sod format dont worry. 34. Repeat Steps 17 32 for the bottom section of the saucer using the selection pictured below, instead of the top half selection.

35. Now convert it back to an editable mesh, select the Faces selection again, and select the upper and lower overhangs, as pictured below:

36. Select the UVW Map Modifier Planar.

again but this time choose Face instead of

37. Select the Unwrap UVW Modifier and then select all the vertices in the window. Use the Rotate tool to rotate the square 90 degrees counter clockwise 38. Then use the scale and move tools to scale and move the square to the top of the window. Then select only the bottom 2 vertices of the square and move them up.

Your final selection and positioning should look like this:

39. Close the window. 40. Save your file when you confirm that you have got your texture for the step correct. You can confirm by Rendering or by Exporting the model and viewing it in the Storm 3D viewer. 41. Repeat steps 34 38 for this selection:

42. The only difference is that the final position should look like this:

43. Save your file when you confirm that you have got your texture for the step correct. You can confirm by Rendering or by Exporting the model and viewing it in the Storm 3D viewer. 44. Again repeat steps 34 38 using the following selection and final positions. Making sure to use the Face map like you should have in the steps above.

45. Close the Unwrap UVW window, and then convert back to Editable mesh again and turn on the Face selection. 46. Save your file when you confirm that you have got your texture for the step correct. You can confirm by Rendering or by Exporting the model and viewing it in the Storm 3D viewer. 47. This time select the bridge section of the ship, however do not select the top of the bridge, only the side faces of it. Do this by turning on the Faces selection, and

checking the By Vertex box.

48. Then drag a selection box around the very top of the bridge section, NOT the whole bridge, only the very top plane of it. Then UNCHECK the box next to By Vertex, hold the ALT key while making the same selection as you just did. This will unselect only the top plane of the bridge. So in the top and left viewports the selection will look as pictured below.

49. Once you have this selection, repeat steps 34 38 using that selection and the final positions pictured below. Making sure to use the Face map like you should

have in the steps above.

50. Close the Unwrap UVW window, and then convert back to Editable mesh again and turn on the Face selection. 51. Save your file when you confirm that you have got your texture for the step correct. You can confirm by Rendering or by Exporting the model and viewing it in the Storm 3D viewer. 52. Make whatever viewport is NOT: Top, or Left view, the bottom view by hitting the B key. 53. In the Bottom viewport select the faces that make up the circle in the center of the saucers bottom, in the Left viewport Deselect the faces that are part of the bridge. The selection should look like this:

54. Go to the Modifiers tab on the Tab Bar and select the UVW Map Modifier . You may have to pan the toolbar over depending on your screen resolution.

55. The lower half of your side panel will change to display the options for this modifier, The options will look something like this:

56. It will start out with the dot in the circle next to Planar. These control how the texture will be applied to the selected faces. In this case we want Planar. 57. Using the scale tool and the move tool in this window, move and scale all the vertices at once until they are in position pictured below.

58. Close the Unwrap UVW window, and then convert back to Editable mesh again and turn on the Face selection. 59. Save your file when you confirm that you have got your texture for the step correct. You can confirm by Rendering or by Exporting the model and viewing it in the Storm 3D viewer. 60. Select the Top surface only of the bridge and then repeat steps 54 59 using the selection and positions pictured below:

61. Close the Unwrap UVW window. 62. Save your file when you confirm that you have got your texture for the step correct. You can confirm by Rendering or by Exporting the model and viewing it in the Storm 3D viewer. 63. Now this part can be tricky and you can skip it if you wish to leave your model as is, but I made the raised parts of the top surface differently textured than the rest of the top of the saucer. Just for adding detail. 64. If you decide not to do this continue, Then you are done, export your model and check it to see that the texture sit properly, if not go back into Max and adjust the setions that dont look right to you. Then export it again and look it over. If you dindt get it right the first time dont feel bad and dont give up. As I stated before Texturing is hard to get the hang of and takes a lot of practice to master. 65. If you decided to continue make sure you save your file NOW, with a new name or number in case you make a mistake you will have a backup file. 66. Convert the saucer back to an editable mesh. 67. Selecting the proper faces without selecting anything else is the tricky part here. Select all the faces on the top surface of the saucer that are raised above the

rest of the surface. The selection should look something like this:

68. HINT: Using the By Vertex face select can be helpful here. 69. Select the UVW Map Modifier position pictured below: again this time choose Face and use the

70. Close the Unwrap UVW window. 71. Then you are done, export your model and check it to see that the texture sit properly, if not go back into Max and adjust the setions that dont look right to you. Then export it again and look it over. If you dindt get it right the first time dont feel bad and dont give up. As I stated before Texturing is hard to get the hang of and takes a lot of practice to master. 72. This Ship can of course be viewed in the Storm 3D Viewer, but to be used in the game you will have to use other information in this tutorial to make: a

wire frame, button, odf file, add it to a shipyard, put it in the tech tree files etc. Notes about this texturing section: 1. Most pictures of the the Unwrap UVW Window have been cropped to fit in the pages, they are not all full window pictures but only the relevant portions. 2. I have not mentioned here about the Light and Bump maps for this model, the following section will explain them further and show how to set them up in Max and the Material Editor. 3. The main texture included for use in this Chapter includes an Alpha Channel for the Light map. 4. The tutufobump.tga texture is the Bump map texture for the .Max file and the .Sod file. The tutufobu.tga file is for the .3DS file because 3DS foemat only supports files with the 8.3 file format, the files are identical, they just have a different name. 5. Refer to the Light and Bump Map setions before starting if you wish to use them on this model. 6. I have includes the textures files, the Sod file, and the final .Max file and a 3Ds format file for this model with the tutorial. The 3D Max file is in Max 4.2 format, so if you use a lower version of Max you may not be able to load it. I also included the .3DS file for those who have a lower version of Max than I do. You can use Import to load the 3Ds file into older versions of Max, I think

Light & Bump Maps. Textures and Materials By kleotol of APOC Light maps. What is a light map?
This makes portions of an object appear to glow. White areas of the map render as fully self-illuminating. Black areas render with no self-illumination. Grey areas render as partially self-illuminating, depending on the greyscale value. Self-illumination means that the glowing area is not affected by lights in the scene (its ambient colour component goes away), and does not receive shadows.

Why use an alpha channel for the light map?


Believe it or not, the only reason is video memory consumption The results on the appearance of a model would be the same whether the alpha channel of the main texture or a completely different texture would be used. However, if we use a different texture

then we need much more memory. To verify this, you can add the numbers your self if you want to 512x512 24-bit TGA (No alpha channel) 769kb 512x512 32-bit TGA (With alpha channel) 1025kb

Size:

Its obvious that the 32-bit TGA with the alpha channel is bigger, but we only need one of them! On the contrary, the 24-bit TGA is clearly smaller but we need two of them. So, it turns out that if we use the main textures alpha channel for the light map, we need 500kb less memory Numbers dont lie!

How to make a new light map and save it as the alpha channel on a TGA
The following procedure is for Abode Photoshop. 1. Open you main texture 2. In the lower right corner of you screen (>>) You should see a window with 3 tabs, being layers, channels and paths. 3. The layer tab should be the one visible by default. If not, click on it to bring it in the foreground. 4. In the bottom of this window there are a few icons with a garbage can being on the far corner and a folded sheet of paper next to it. This icon is the new layer icon (mouse over pops up a tip). Click on it. 5. Now, you should see the new layer in the layers tab. It looks like a chessboard, which means that it is transparent. Make it black using the paint bucket tool. 6. Now, you should not be able to see your texture anymore. Thats ok well fix it Look right under the layer tab. There is a little selection box that says normal. Access this menu and select screen. Now, you can see you texture again. 7. Now we can start making our light map. Select a white brush and start painting over the windows, nacelles glow and generally everything you want to appear illuminated on the model. Do not use different colors. Only white, or gray if you want an area to look less bright. Alpha channels are grayscale so using any other color will not work. If you need to, you may also use the gradient tool, however, make sure you are only using gray colors. At this point I must say that there are more ways to make an alpha channel, such as the mask option, but I personally prefer this one. It is more accurate in my humble opinion. Important. Make sure you are painting on our black layer and not on the main texture! 8. Once you have completed the light map, select the entire layer (press ctrl+A) 9. Now, copy the layer to the clipboard (ctrl+C) 10. Click on the channels tab. 11. Create a new channel. If an alpha channel is already present skip this step. 12. Paste the layer we have in the clipboard onto the new alpha channel (or the old one if it already existed)

13. While still working on the alpha channel click on the Image menu on the top of your screen and from the pop up menu select adjust>brightness/contrast 14. Leave the brightness as is and increase the contrast by setting it to maximum. 15. Our alpha layer is ready, but there still is one thing we must do. In the channels tab click on the RGB channel. 16. Now click on the layers tab. The layer we created should still be selected (indicated by blue color). If not select it by clicking on it. 17. Delete it by clicking the garbage can. 18. The following steps should not be necessary, but we should make sure everything is ok. On the top of your screen, right next to the image menu, rollout the layers menu. Near the end of the rollout menu there is a flatten image option. If it is available select it. If not, then our texture is already flattened 19. Save the texture as 32-bit uncompressed TGA. (Photoshop saves as uncompressed by default, just make sure you select 32-bit from the pop up menu. 20. Our texture with the light map in the alpha channel is ready

Arranging the Texture Material in 3ds Max


Ok, now we have all the components ready, its time to use them on our model 1. Open the material editor 2. In the pop up window, select a material by clicking on it. 3. Unfold the maps rollout menu 4. Check the diffuse color check box. Then click on the big button that says none and is located to the left. 5. From the pop up menu select bitmap and assign the texture you want (you may have to browse to find it) 6. Once the map has been assigned correctly you will be transferred to the maps options screen of the material editor. There, in the bitmap parameters rollout menu (unfold it if necessary) look for the Alpha Source section. Select none (opaque). 7. Use the material editors selection menu to exit the maps menu and return to the material menu. 8. Once there unfold the maps rollout menu once again. 9. Check the self-illumination check box. Then click on the big button that says none and is located to the left. 10. From the pop up menu select bitmap and assign the same TGA 11. This time we do not want to change the alpha source, the default is the one we want, but make sure that image alpha is checked. 12. Use the material editors selection menu to exit the maps menu and return to the material menu. 13. Export your model and view it in the Storm 3D viewer.

Bump Maps
What is a bump map?
Bump mapping uses the intensity of the map to affect the surface of the material. In this case, the intensity affects the apparent bumpiness of the surface: white areas protrude, and black areas recede. Use bump maps when you want to take the smoothness off a surface, or to create an embossed look. Keep in mind, however, that the depth effect of a bump map is limited. If you want extreme depth in a surface, you should use modelling techniques instead. Greyscale images can make effective bump maps. Maps that shade between white and black generally work better than maps with hard edges between the white and black areas. The bump map Amount adjusts the degree of bumpiness. Higher values render as higher relief; low values render as low relief. The bumps are a simulation created by perturbing face normals before the object is rendered. Because of this, bumps don't appear on the silhouette of bump-mapped objects. To assign a bump map: 1. Open the material editor 2. In the pop up window, select the material you want to appear bumped by clicking on it. 3. Unfold the maps rollout menu. 4. Check the Bump check box. Then click on the big button that says none and is located to the left. 5. From the pop up menu select bitmap and assign the bump map of the texture (you may have to browse to find it). 6. To avoid aliasing caused by a 2D bump map, go to the bump map's Coordinates rollout. Set Blur to be in the range 0.3 to 0.6, and increase Blur Offset to be greater than 0.0. The default Blur and Blur Offset values work well for mapping other material components, but for bump mapping, lower Blur and higher Blur Offset values give better results. 7. Use the material editors selection menu to exit the maps menu and return to the material menu. 8. Export your model and view it in the Storm 3D viewer. Westworlds note: Ok this may sound a bit confusing to some so I am adding a some pictures of the lower half of the material editor, this may help you see how the settings go. I know it helped me

1 is the standard texture 2 is the same texture as the first one but is used as the illumination map also because the illumination is contained in the Alpha Channel 3 is the bump map texture

Make sure to check that box next to self illumination, and selecy a color, I find black works best.

When you click on the big Self Illumination button ( # 2 in the first picture) the lower half of the material editor looks like this picture above. For the self illumination make sure that the small circle in the Alpha Source box is set to Image Alpha. When you click on the big Diffuse button ( # 1 in the first picture) this setting should be set to NONE (Opaque)

For the Bump map, use settings similar to these, they can be different but should be somewhere in about the same as these. Hope this made it easier to understand.

Chapter 13
Modelling & Texturing with Milkshape
This chapter was written by Major A Payne
All the pictures referred to in this chapter are in your \pics directory the texture is in the \Textures\rgb directory and the sample models in the \models directory, wherever you unzipped the tutorial to. Section 1 - Model Creation Okay, so in the beginning its a good idea to start a model. Now as with any 3d modelling package, you build your model with several different shaped objects: SPHERE, CUBE and CYLINDER. Of course, these three objects may not seem like much but there have been some amazing models created through their usage. Anyway, onto a simplistic model. At this point your probably wondering "So what will I make??". Generally this is more down to your own imagination, but for arguments sake we'll just say were making a simple federation vessel (as they're always the easiest to make). Now, as we've all seen from the various series and films federation starships are nearly always made up of the following common components: SAUCER, NACELLES, ENGINEERING HULL, NACELLE SUPPORTS, and possibly SAUCER SUPPORT Okay, so whats best to use for what?? Well you could use a sphere for the saucer, in which case, on the MODEL tab select Sphere and then in one of the three windows (top left, top right, bottom left) hold the left mouse button and drag to a reasonable size, and release the mouse button. Next click the Select button and use the drag/select/capture method that you do in windows to select multiple objects. You should notice the sphere have alot of red dots appear over it. This indicates that you've selected ALL the Vertexes (vertexes are use by all objects to link each side, or face, together). Now select the Scale button and carefully hold the left mouse button and drag in the direction you want. You'll see that the shape will be alter in the 3d perspective window (bottom right). Once you've rescaled the sphere so its flatter, your ready to move onto the next section. The engineering hull can be made from a single cylinder. Now at this point click the Cylinder button and using the same method as the one you used for creating the sphere make a cylinder of a reasonable size. Now you may have noticed that your new cylinder seems to have alot of vertexes and faces when you don't need so many. Now if you want to make a cylinder which has a much lower amount of these vertexes and faces, then as long as the cylinder button is still selected you should see two options below the button selection. These are:

STACKS: These represent the amount of verticle sections that you have in your cylinder (typically 6). Under normal circumstances its best to set this to 1, unless your planning on moving some of the vertexes around to make a more complex shape. SLICES: This represents the amount of sides your cylinder has (typically 12). As with the stacks you can lower this amount, but it depends entirely on what section of the vessel your making. With your simple engineering hull you could leave this set to 12. Okay, so once you've created your hull, click the Move button and then click and hold the left mouse button and move your new cylinder to a convenient place below your saucer. Now repeat this will your two nacelles. Finally select the Box option and make yourself three fairly thin boxes, and move these to join in the space you may have left between your nacelles, hull, and saucer. You should now be looking at a very simply looking vessel. ADVANCED SECTION Right then, thats the simple side of things sorted out, there are a few little advancements you can make to help cut a few polies of your new creation: 1) When creating a shape, such as the thin cubes above, there will be two sides (faces) that you won't actually see. Removing these will save you around 12 polies (although this doesn't seem like many a saving of even 1 poly will help), and is done as follows: Click the Select button and then click Face. Now using the viewing windows where you white coloured mesh is located, select the faces you wish to remove, by clicking on them (they will be turned red in colour), and press DELETE on your keyboard. Thats basically it. 2) Now when your looking at your simple model your probably thinking "but its crap". Well there are a couple of things you can do to make it look a little more "starship" looking: i) Take each nacelle and at the end of each which is closest to your saucer remove the entire face of it. This is make the cylinders hollow at one end. Next select the Sphere and create one thats just large enough to cover this hollow that you've made. Now before you actually move this sphere into position, you can select the half of the sphere which won't be seen and delete it. Now you can move the remaining half into position. If done correctly you'll have the effect of a simple buzzard collector (similair to the original Enterprise 1701) ii) Following the above you could take your nacelle supports and select one of the open ends (this means the four vertexes around the opening), and move it so that its

angled away from the remaining four vertexes. You can also do the same with the saucer support. iii) Finally to give your vessel some sort of deflector dish create a small sphere thats just about half the size of the front of your engineering hull. Select two lots of vertexes and delete them, so that you have the sphere with a hollow end (preferably the end which is closest to your engineering hull). Now select the oposite end of the sphere and move each set of vertexes back towards the middle of the sphere, so eventually it looks like a bowl. The middle of this is used for your deflector. Now this is your starting point and as long as you could understand the advanced section then your model should look similair to the one in the enclosed 3DS file. Section 2 - Model Preperation Right then. The models been made. Now it requires preparing before you can texture it. At present your model will probably be made up of around 8 or nine "groupings". Each on of these groups represents a model section, or mesh. So at this point, select the Groups tab and using the presented mesh sections and the Select button firstly select all the supports, and then click the Regroup button. This will make a new group called "Regroup01". You could rename this to a more suitable name if you wish. Next deselect the new regrouping, and select both nacelles. Again click the regroup button. You'll now have a new group called "Regroup02". Finally deselect the nacelles group and select the deflector and both buzzard collectors. Click the Regroup button. You should now have three groupings of the mesh sections and five groups in total (See enclosed PIC01.JPG file for how it should look. Bare in mind I've renamed the sections to more suitable names). Your model is now ready for texturing. Section 3 - Texturing Hmmmm, nice model, but wheres the detail?? I think its time we textured this sucker. Now for the purposes of this tutorial I have enclosed a premade texture (comes courtesy of the E&F project, and credit goes to them) which basically consists of several mini-sections of the ships detail. Now there is possibly several texture layouts you could have: 1) Single mode texture map - As in the enclosed premade texture all the detailed sections for the model are one a single texture. 2) Dual mode texture - This type I would use if I had seperate areas of the mesh which required glowing parts (which are usually much brighter in colour than any others). The rest of the models detail would be contained on a seperate texture map. 3) High scale Single mode texture - As the Dual mode texture but always set on a single 512*512 hi resolution texture map. This is usually used only for the more powerful graphics card renderings of a model.

4) Multi-Mode texture set - Normally referred to when using multiple sets of texture maps (3 or more). In a rare amount of models a seperate saucer top, saucer bottom, main hull/nacelles and glowing sections texture maps have been used. One thing that all but the High Scale Single mode texture have in common is they are set on 256*256 pixel images, and every one of the texture maps are always 24 bit colour and UNCOMPRESSED format. So onto the actual texturing. Firstly, click on each group except for the saucer and click the hide button. This will effectively leave only the saucer showing. Now click the saucer and then the Select button (it will show its highlighted in bright red. Now click the Materials tab (see PIC02.JPG). Now looking at PIC02 you'll see buttons marked New, Delete and Rename. Click the NEW button and you'll see Material01 appear next to the Rename button. It will also appear in the white window on the left, and a large grey sphere will also appear above the Ambient and Diffuse buttons. I woudl suggest renaming the "Material01" to another name, such as "mainship", as I've noticed that sometimes if a model is saved with a texture that has more than 8 letters in its material name the texture is incorrectly saved and won't appear on the new model. After doing this, click the top of the two buttons marked <none>. This will open up a load dialogue box. Use this to find and load your new texture. When you click to load the texture it will appear on the grey sphere. Now at this point you may need to drop your windows task bar because the final button marked Assign is located below the Rename button, and won't be seen if your resolution is lower than 1024*768. Right then, once the Assign button has been clicked you'll need to see the texture on your model. Now, in the 3d perspective viewing window (bottom right), right click in the window, and select "Textured" from the menu that appears. Thsi will show the texutre on the model but it will be pretty much jumbled (see PIC03.JPG for details). This is where things might get a little more complicated so just take your time. Anyway, click the Window drop down menu and select Texture Coordinate Editor (see PIC04.JPG for details). You'll be presented with a medium sized window (see PIC05.JPG for details), which will reside ontop of anything which is on the screen. Now on the right of this window you'll see, just below the Region button two select buttons: 1) Mesh Selection Tag Button - The top one represents the mesh section that has been selected. Currently it should be showing "saucer". If you use the side drop down arrow and select another section the picture in the main window will disappear as the mesh hasn't been applied yet. 2) Camera direction remap canvass - The lower one represents the various views that the texture can be remapped to depending on how the mesh is selected. For example, if we wanted to texture just the side of an object we would click the drop

down arrow and select either left or right remap selection. The texture can then be remapped to this canvass view. Now because we've selected the entire saucer, the entire mesh has been auto canvassed to the front view. Of course this would not be the way we want it to look, so we minimise the Texture Coordinate Editor window, and then we do the following mouse clicks: 1) Select the Model tab 2) Click the Select button 3) Click the Face button 4) Click (place a tick) in the Ignore BackFaces box Basically what this will enable us to do is select just the faces of the mesh that is directly in front of our eyes, but not those that are hidden from view. Now using the Top View (bottom left viewing/editing window) use the drag/capture method to select ALL the faces you see on the saucer (note that once done you'll see the other two views will have some red and some white vertexs/faces) (see PIC06.JPG for details). Now switch back to the texture coordinate editor window. Now click the following: 1) In the lower drop down selector (Camera direction remap canvass), click the drop down arrow and select "TOP" 2) Click the Remap button This will effectively alter the mesh overlay (see PIC07.JPG for details), so that just the circular top selection of the mesh is now in view. The mesh will always be auto selected (shown by the red coloured points/vertexes) You can now use the Move and Scale buttons to make the wireframe mesh selection fit the saucer top (note you will probably have to rotate the mesh using the rotate button so that the texture is in the correct direction. You can check this at any time by simply looking at the 3d perspective window and unhiding the other mesh sections) (see PIC08.JPG for details). Thats basically the saucer top textured. Now comes the bottom. Okay so now rehide all but the saucer, and then click the Edit drop down menu, and click Select Invert. This will immediately switch the highlighted mesh to the bottom of the saucer (see PIC09.JPG for details). Now in the 3d perspective viewing window, left click and hold while you rotate the saucer so that you can see the underside (the texture will still look terrible). Now switch back to the Texture Coordinate Editor and using the Camera direction remap canvass (bottom drop down arrow), select the "BOTTOM" and click the Remap button. This will seemingly produce the same circular effect you had with the top of the saucer, but don't be fooled. Basically what you now need to do is use the same method you used for moving/rescaling the wireframe mesh for the saucer top, for the bottom. As before you can check the texture is being placed correctly on the model, in the 3d perspective window (see PIC10.JPG for details)

Next, using the method above texture the remaining sections of the model, remembering to check the model frequently and hiding any sections that are already textured/untextured which your not working on. Section 4 - Final Preparation Okay, so if all has gone well then you should be ready for any final preparation that the model needs. One specific thing that you may want to do, is to regroup any sections which are specific to a texture map. For exmaple, if you have the nacelles and engineering hull mapped to a single texture then you could regroup these to mesh parts into one. The mapped texture coordinates won't be effected so you've no need to panick about this.

Chapter 14
Game balance
Game balance is an important part of any mod, whether it is a small single ship mod or a total conversion mod. Game balance is the how evenly matched the races are. Now with the information in this tutorial you could make totally overpowered ships and stations, but what would be the fun in that? Having one ship that can destroy an entire base is pointless, in my opinion. Like wise having one race that is totally unstoppable takes away the fun on the game. So I would recommend that if you are going to make a mod for public distribution then make it as balanced as you can, if you add a big nasty ship to one race, add one to the others too, or make that ship highly expensive or make it take a really long time to build, or make the other races have something else to counter this new supership. This is something to keep in mind when making new game content, This is why the game developers make races like the Borg and Species 8472 seem weak in comparison to how they are on the TV shows. If the Borg really came around with 25 Tactical Cubes and 20 standard Cubes, would anyone really stand a chance against them if they were, as portrayed in the shows? I think not. These things are all up to you as a modder but if you want your mod to be fun and popular these are things to think about when making the mod.

Purpose of this Tutorial


This tutorial is not meant to tell you everything there is to know about modding, it is meant to give you an idea of how to do many commonly modded things. You will not become a Mod God just by reading this material. You need to experiment and spend a lot of time working at modding to get good at it and you will have a lot of crashes and frustrating troubleshooting to do most likely, but if you stick with it you will eventually have less and less troubles with learning and editing the game. Ask Questions of other people on forums, and share what you learn with others. There is a lot to be said for teamwork and sharing of knowledge so dont sell it short, there are a lot of excellet

modders out there that are willing to help you if you need it. Having said that you must also keep in mind that they are all very busy people and may not be able to answer you question the minute you ask it, be patient, and above all dont bug someone to death about something when you want an answer. If you pester someone too much you are less likely to get an answer from them or help from them. Forums are a great place to get help without having to worry as much about annoying a single person constantly, many people are willing to help on the forums, they will answer questions for you, give you suggestions and pointers on how to improve your work or mod. Just as people are willing to help you out you should be willing to help them too and give your opinion to them when they need it. Many people seem to see moding as some sort of competition that you have to win, or be the best at, I disagree with this philosophy myself. I see modding as a great way to meet new people and make new friends, and above all to have fun with the modding and the game itself. Not everyone is going to like everything you make, and that can be disheartening, but you sould always remember that you cannot please everyone all the time. For every person that may not like your mod there is at least one who does like it, maybe a lot more than one. Always mod for yourself, dont do it just to gain fame or popularity, you will be sorely dissappoited of you do, trust me.

Chapter 15
Node, Emitter & Texture Animation names
This section is a reference listing of all the texture animation names, emitter node names, light node names

Light Sprite Node Names


Blue lights blueconst blueconstbig bluestrobe bluestrobebig Green lights greenconst greenconstbig greenstrobe greenstrobebig Red lights redconst redconstbig redstrobe redstrobebig Whitish lights whiteconst whiteconstbig whitestrobe whitestrobe2

whitestrobebig Amber lights yellowconst yellowconstbig yellowstrobe yellowstrobebig

Damage Sprite Node Names


Damage sprite nodes for ships crew1 crew2 crew3 crew4 crew5 crew16 sensor Damage sprite nodes for turrets sensorftur Damage sprite nodes for super buildings crewfsup1 crewfsup2 crewfsup3 crewfsup4 crewfsup5 sensorfsup Damage sprite nodes for sensor stations sensorfsen Damage sprite nodes for advanced research stations crewfre21 crewfre22 crewfre23 crewfre24 crewfre25 sensorfre2 Damage sprite nodes for research stations crewfre11 crewfre12 crewfre13 crewfre14 crewfre15 sensorfre1 Damage sprite nodes for mining stations crewfmin1 crewfmin2 crewfmin3

crewfmin4) crewfmin5 sensorfmin Damage sprite nodes for bases crewfbas1 crewfbas2 crewfbas3 crewfbas4 crewfbas5 sensorfbas

Emitter Names
Note: lifespan/velocity = texture animation period for once complete cycle per particle Rift emitters e_rift e_riftcloud Chunk emitters e_chunk1_disabled Latinum spray for freighters e_latinum_spray Damage smoke emitter e_test_cloud e_smoke Damage emitters Venting Plasma e_plasmasml e_plasmamed e_plasmalrg e_plasmaxl Venting Gas e_steamtiny e_steamsml e_steammed e_steamlrg e_steamxl

Special Weapons Emitters


Borg bore emitters e_borgbore_beam Computer override emitters e_override Micro-organism emitter e_microorg Psionic discharge emitter emitter psiondis

Micro-organism emitter for Cardassians e_microor2 Chain reaction pulsar trail e_crpulsar Gemini effect trail e_gemini Blue contrail emitter e_contrail e_rocket Nebula emitter e_neb1 e_neb2 Gate Emitters eE_premgate Software nebulae e_swneb1 e_swneb2 e_swneb3 e_swneb4 e_swneb5

Texture Animations Names


Keyframes can be specified explicitly, or can be automatically generated for common styles by using the @keyframes command. Animation for shield remodulation tex2x2rmd Standard 4x4 animations tex4x4_1.1 tex4x4_1.3 tex4x4_1.5 STANDARD ROW ANIMATIONS 2 row animation tex2x1 3 row animation tex3x1 4 row animation tex4x1 4 row cursor animation cursor4x1 5 row cursor animation cursor5x1 6 row cursor animation cursor6x1 7 row cursor animation

cursor7x1 8 row cursor animation cursor8x1 8 row animation tex1x6.8 STANDARD COLUMN ANIMATIONS 6 column animation tex1x6 5 column animation tex1x5 4 column animation tex1x4 4 column animation tex1x4med 2 frame column animation tex1x2med 4 column animation - slow tex1x4slow 3 column animation tex1x3 2 column animation tex1x2 STANDARD SQUARE ANIMATIONS tex2x2 tex2x2slow tex2x2slow2 tex3x3 tex4x4 CUSTOM ROW ANIMATIONS vent tex4x4.12 tex4x4slow CUSTOM COLUMN ANIMATIONS linear column animation ztrantex 4 column animation photanim species 8472 phasers spphaser_u spphaser_v CUSTOM SQUARE ANIMATIONS tex4x4_smoke tex2x2flip shldieanm

Weapons Sprite & Node Names


@reference = texture size in pixels from which the u,v,w, and h values were measured. This value will effect all subsequent textures until a different value is specified. Star Trek Weapon Effects flareflash origin plasmaball photon Klingon superweapon wave texture klingsuper Premonition's gate xpremgate Borg gate sprites borgate Poleron Torpedo wpoleron Accelerator Cannon cAccelCannon Tech Assimilator Beam wTechAssimBeam Psionic Disruption Beam wpsidisruptbm Quantum Singularity Effect beam wquantumbeam Clairvoyant Link wclairvoybm Plasma Bank Overload cPlasmaOverload Clairvoyance sClairvoyance Borg Colony Destroying beam colonybmgreen The colonization beam colonybmblue Biopulse beam biopulsebm Psychonic Blast wpsyblast Poleron Torpedo wpoleron Photon artillery spphoton wartord Computer override woveride

Phaser Flare pflare Manheim sprite effect wmanheim Nanites Nanites Particle spark effect Xparticle02 Particle smoke effect Xsmoke Chain Reaction Pulsar wchainpulse Federation quantum torpedo wbluephoton Federation Photon torpedo wphoton Borg Photon torpedo bphoton Cardassian Photon torpedo cphoton Klingon Photon torpedo kphoton Romulan Photon torpedo rphoton Subspace Ripple ripple Self destruct wselfdes Micro Organism particle wmicropart Warp Core Overload particle wcoverpart Federation Pulse phaser pphaser Klingon Pulse phaser kpphaser Borg Pulse phaser bpphaser Romulan Pulse phaser rpphaser Warp Core Overload wwarpcoreol Shield Inversion beam wshieldi Borg Bore

wborgbpart Point defense laser pdlaser Federation phaser fphaser Borg phaser bphaser Klingon phaser kphaser Red phaser rdphaser Blue phaser blphaser Magenta phaser mphaser Romulan phaser rphaser Cardassian phaser cphaser General phaser phaser Species 8472 phaser (bio pulse) spphaser Plasma Cannon wplascannon Utritium Beam utribm Repulsion field rfield Borg Transport Effect btransport Cardassian Transport Effect ctransport Fed Transport Effect ftransport Klingon Transport Effect ktransport Romulan Transport Effect rtransport Death Chant sprite wdeathchant Fed Repair sprite wfedrep Romulan Spy sprite wromspy

Star Trek Building Effects


Welding Sparks xspark Welding Beams weldbeam 8472beam

Star Trek Explosion Effects


Small Explosion Sprite explosion1 Small Explosion Sprite explosion6 Chunk Effect Particle Trail Sprite bsmoke Small Explosion Sprites systemexpl1 systemexpl2 systemexpl3 systemexpl4 systemexpl5 systemexpl6 systemexpl7

Old Battlezone sprites


Light Smoke lsmoke Medium Smoke msmoke Dark Smoke dsmoke Rocket Smoke rsmoke Plasma Blue Puff bpuff Plasma Ball plasma Particle Ember particle xcritical05 Rocket Flares flare Nanites Wnanites nanite bpnanites Klingon Pods ionsprite

plasprite Tractor beams and bores holdbeam assimbeam tractor otractor beamorigin holdorigin tractorigin otractorigin Romulan rift creator riftcore Myotron burst ordinance myotron Omega Particle omegaglow omegaborg

Glossary of terms used in this tutorial:


1. odf Object Definition File, these are the files that all specifications for ships, stations, & map objects etc.. are stored in. 2. sod Storm Object Definition, These are the files which contain the geometry or physical shape of the objects, ships, & stations in the game. They are 3 dimensional models of the objects. 3. wireframe These are small semi-transparent graphics of the ships, stations, and other game objects that are shown when the object is selected. They also display the damage to different systems that the object has. They are stored in a TGA file in 5 separate sections, each of which is part of the whole object and each of which represents a system that the object has. The system being damaged causes the corresponding part of the wire frame to flash when the object is selected in the game. 4. PSP Paint Shop Pro, a graphics editing and creation program used by many people to edit different graphics of the game. 5. Storm 3D A tool used to view sod files and do minor editing to them, this cannot be used to create new sod files but can be used to change the textures them to a certain extent. It is a helpful tool for examining the sod files, and making buttons and wire frames. 6. modding The act of making a mod, or game modification. The process for altering game files to customize the game to your liking. 7. mod the end result of modding, the completed altered game files put together into one package.

8. exporter An exporter is a plugin that allows a file created with a certain program to be saved in a specific format for compatibility with another program. 9. texture the graphical skin applied to the surface of a model, also the graphical file itself that is used to create different weapons effects in the game. 10. R.G.B. - Red , Green , Blue These usually represent the intensity of each color. 11. classLabel A class label is the hard coded behavior definition of a specific object or weapon in the game, these are not editable and have different behaviors and limitations for each one, there are approximately 120 individual classLabels in the game Armada 2, although a couple of them are not active. 12. command A command is a statement followed by a parameter found in the odf files, it sets the behavior of a particular aspect of something in the game. This can be a statement that sets the size of something, or the time an effect lasts. The massive list of settings in this tutorial are all examples of odf commands. Now there are also command odfs in Armada 2, these specify the functions of various buttons in the game and which ships have which button types. 13. loop Loop is a term mostly referring to the AI, A loop is when the AI goes back and replaces ships that have been destroyed. The A1 AI would constantly go back to the smaller ships built in the beginning of a game and replace them unlimited amounts of times. This often caused the AI to take forever to reach the more advanced ships at the end of the AI build lists, because it was always going back to replace the small ones, sending them into combat to be destroyed and then having to go back and replace them again. Just from this explanation you can see why it is called a loop. 14. GUI Graphical User Interface. This refers to virtually any parts of the game that you can see and interact with: Buttons, the frames around the different screen sections in the game, pop up dialogue boxes, resource amount displays etc. the list goes on and on. 15. TGA Truevision Targa. This is one of the 2 types of graphics file formats that Armada and Armada 2 use. It is they type used for all textures, buttons and many other graphics in the game. The TGA files for Armada and Armada 2, must be saved in uncompressed format to work properly. The other type of graphics used is BMP. 16. Screen capture The process for taking a picture of a screen or window currently open on your computer. There are programs that do this and in many cases the print screen key on your keyboard can also do this. Although the programs that can do it are more desirable than using the print screen key because they have more options and are usually capable of taking multiple shots without having to paste them into a graphics program between each key press. 17. model A model (as referred to for Armadas and 3D Max) is a 3D graphical representation of a ship or object. It is made up of multiple polygons (or triangles) that are covered with a graphical skin or texture. Similar to what you would do when building a plastic model of a car or boat, but these are made through computer graphics instead. 18. tech tree The setup for progression of technology in the game, they are files that determine what items are needed before another item becomes available to use or build. You may have to research something specific before you can use a

certain weapon or before you can detect cloaked ships etc. That is what the tech tree does, sets those prerequisites for each different build able thing in the game. 19. Temp directory A directory for storing files on a short term basis. We use a temporary directory in this tutorial to make and store all our modded files and backups of the original game files. 20. parameters These are settings, or specifications that follow a command in the odf files, most of the time it is a number, or another file name. The numbers can mean various things, some are answers to yes/no questions in the format of 0 = no 1 = yes others are settings for time lengths or sizes, it all depends on the type of definition the command requires. 21. geometry The geometry of an object is the actual mesh or model that make up its physical shape and surface. 22. Polys Short for polygons. The individual small surfaces that make up the geometry of an object. In the game the models are referred to as low poly models, meaning there is a limit to how many polygons can be used to make up an objects geometry. For general modeling that is not used in a game someone could use as many polygons to make an object as they wanted, making the surface as smooth as they want. However for games trying to use models made in this fashion would cause them to either not work or to put far too much strain on the graphics engine of the game, making the game run very slow or not at all. The game must render or display each polygon in a model every time the model moves or the view changes and this takes your computers resources such as memory, processor speed, graphics card memory & processor speed. Couple this with the fact that many objects are displayed at once on the screen and you can see why the lower the polygon count of a model is the better the game performance is. 23. faces Faces are basically the same as polygons, they are the triangles that make up a models surface. 24. material Material is a reference used by modeling programs to refer to the texture file or the surface properties applied to a model. For our uses these are normally .tga files. 25. Sprite - . A sprite is a combination of a sprite file and a graphics file. The sprite file sets how the graphic moves, or animates and where in the graphic file to look to find the particular sprite when it is needed. The sprite file also sets the name of the sprite so that it can be referred to by a unique name when ever needed. The graphics file holds the actual picture that is used to display the sprite. 26. Additive blending - Additive blending means that it will add the color and intensity of this tga file to the color and intensity that is in the background. A good example of additive blending is the Federation Temporal Stasis Field you can still see through it, see ships inside it, and see stars on the other side of it. The additive blending in that particular weapon is incorporated into the sod it uses but the idea is the same as the additive blending used in sprites. This is how the black background in the TGA file is made invisible, so that the sprite appears to be a 3D object.

Credits
Kleotol - AI Chapter & Light & Bump textures section 1 of this tutorial, his additional comments and his help if proof reading this lenthy document . Activision and Mad Doc Software for the exerpts from game files and sod exporter readme file. Descreet for the exerpts from the 3D Max Help files found in the modeling chapter. Claes Wikdahl For his definition of a mesh taken from his high poly organic mesh modeling tutorial entitled - Mesh Modeling all the way. Major Payne Chapter 13, on Modeling and Texturing in Milkshape 3D. Westworld Me, for everything else.

Special Thanks To
Kleotol - My good friend and great modder for his help and comments, as well as his excellent AI & Light & Bump textures section of this tutorial. Pneumonic81 For providing me with valuable information I needed to figure out the proper Armada 2 Heirarchy for this tutorial. Dave aka Thor For his suggestions and support. Major Payne - For his suggestions and support and his chapter on modeling and texturing in Milkshape 3D. Ares1999 For coming up with the name for this tutorial

Contact Info
ICQ # 81427064 Email Westworld48@hotmail.com MSN Westworld48@hotmail.com Or you can contact me through one of these forums, they are in the order of how often I visit them, so the ones toward the top have a better chance of getting a quicker response. Some of these are specific forums on particular message boards that I visit, these are mostly the modding forums of these message boards, I do not usually visit the general discussion forums of all these boards so these links are directly to the forums I visit most. There are other message boards out there but I do not go to them so posting at those boards in an attempt to contact me will probably not be very successful. If you find an error in this document please inform me and I will correct it. APOCs Forum STGN - Naval Armada Mod Forum STGN - Modding Discussion APOCs Modders Continuum Forum at Armada Universe Armada Universe - Armada Modding Forum Message Boards - Armada II General Forum

Site links
APOC Links
My Naval Armada Web Site Star Trek Armada _ X-Treme! The most EXTREME mod around! Star Wars VS Star Trek Conversion for ST:Armada Starfleet Naval Shipyards APOC Entertainment LTD. Web Site APOCs Modders Continuum APOCs Forum APOCs Modders Continuum Forum at Armada Universe RexCom Research Facility

Star Trek Armada & Armada 2 Official links


Star Trek Armada II Star Trek Armada Message Boards - Armada I & II Mad Doc Software

Armada & Armada 2 related Forums and sites


STGN - Star Trek Galactic Network Forum Armada Universe - The ultimate resource for Star Trek:Armada II Armada Universe - Forum Armada Fleet Command/Mod Central STGN - Naval Armada Mod Forum

Star Trek Reference and Resource Sites


Daystrom InstituteTechnical Library Star Trek in Sound and Vision Trek Today LCARS Star Trek: Federation Place Ex Astris Scientia - Bernd Schneider's Star Trek Site

3D Modeling Sites and Resources


3D Cafe Sci-Fi Meshes.com Amazing 3D.com

Ultimate 3D Links: Free 3D Objects and Meshes DEVILSWORLD6 Maxforums - 3D Studio Max Artist learning resource PlanIT 3D. Max3D

Software Sites For Programs Mentioned Herein


EFSoftware - Home for Windows Downloads - CNET.com Adobe Xchange Jasc Software chUmbaLum sOft - Milkshape 3D EditPad Pro - Mighty Fine Text Editor

Warlords Modding Union Site


Warlords Modding Union These guys have helped me a lot on My Naval Armada mod.

Legal Mumbo Jumbo


Copyright and Distribution Permissions -------------------------------------THIS TUTORIAL IS NOT MADE, DISTRIBUTED, OR SUPPORTED BY ACTIVISION TM & (C) ACTIVISION & PARAMOUNT PICTURES. Copyright notices: Star Trek, Star Trek Armada II, Star Trek: Deep Space Nine, Star Trek: The Next Generation, Star Trek: Voyager (and the various logo devices used in them) are copyright Paramount Pictures, as are the characters, related images, and sound from the productions. All Logos, Names, Slogans & Copyrighted materials Etc.are proprety of their respective owners, No copyright infringement is intended by any material contained herein. All Original material contained in this document is proprety of Westworld and Apoc Entertainment and the respective writers of any material not written by myself. Except where otherwise noted all material written in this document was written by me, Westworld. If you use this tutorial, or materials includes with it, in whole or in part in any other tutorial or project, please least credit to the creators of the parts used. Please do not modify this file or the included material with out seeking the authors opinion. Nothing legal here, it is just polite.

Disclaimer
This tutorial is not intended to encourage you to edit game files, only to provide information if you decide to do so. Apoc Entertainment and myself are not responsible for any problems incurred by use of this information by any user or any damaged incurred to your game files or computer as a result of your editing. Should you decide to use this information to edit the game files, you take sole responsibility for any and all problems, damage and need trouble shooting that that occur. This information is not guaranteed to be error free, and no expressed or implied warrantee exists for the content contained in this document, it is for recreational use only.

Вам также может понравиться