View Full Version : Tutorial - Adding hardpoints in MilkShape

09-06-2008, 09:16 PM

Firstly remember that your ship should be made in several groups if you want it to break apart when it's destroyed in the game, even if you don't want to have small destructible parts (like a wing tip breaking off but still being able to fly the ship). FL will separate (explode) the groups of the model when the ship is destroyed. Nice.

This point is especially important if you want to make a custom .sur file for a large ship, without a huge shield bubble, which follows the shape of your ship. This is because to make such a .sur file it will have to be made in several parts which are all convex and "stitched together" using Sur-Splicer, and each .sur part must be attached to a different model group by its name. That is another subject, see other tutorials for assistance.

Hardpoints in MilkShape

First, be aware of the following problems in using this method:-

1. The exporter will attach a hardpoint to the ship group (part) that it thinks it is mounted onto. This may often be incorrect, as an example when a wing gets blown off the weapons that are supposed to be mounted on it will still be present in empty space!! This cannot be fixed unless the hardpoint is deleted and remade in HardCMP (easy) or UTF Edit (hard).

2. The hardpoints may well be facing incorrectly (orientation). This is easily fixed in HardCMP.


Make a triangle with one side a little shorter than the other two, so that it appears like a wide arrow-head. Now turn it to point in the direction (orientation) that you want in each axis, using the long tip as the forward direction.

Rename it to "Hp|Fixed|HpEngine01" or "Hp|Revolute|HpWeapon01" or "Hp|Revolute|HpTurret01" etc. Why? Because Revolute hardpoints like weapons and turrets have weapon axis and left/right swivel (turn) values to track their targets, and fixed ones like fixed cannons, tractors, engines, HpMount, Mines and Countermeasures and so on don't.


You will need at least the following hardpoints:-


Optional hardpoints (replace 01 with 02, 03 etc for more than one):-


Use numbers where they are shown, if there is no number you don't need one.


If you want more than 9 hardpoints of a certain type, name them Hpxxx010 to Hpxxx099, in some areas (e.g.engines if I remember) naming them HpEngine10 will not work, they won't show in the game. HpEngine010 is correct.

You do NOT need an HpScanner hardpoint, I have seen so many!

Export Time

When you have made all your hardpoints and positioned them and named them correctly, make sure they are listed at the bottom of the MilkShape Groups list, after all the groups for your model.

Now you can export the model. See my other tutorials for help on this.

Then open it in HardCMP and check the orientation of the hardpoints. You will probably find that some are squashed, and/or badly oriented. If they appear squashed don't worry, just fix the orient values and they will re-appear as cubes again.


The actual attachment point is the middle of the hardpoint cube, and the cube size is about 1 metre x 1metre x 1 metre in the game. So if you attach the base of the cube to the ship surface, your weapon will be mounted about half a metre above the ship surface in the game - floating weapons!

Once you have fixed your hardpoints / made new ones, and saved the model, you can make your entries in shiparch.ini, goods.ini, loadouts.ini / loadouts_special.ini / loadouts_utility.ini, faction_prop.ini, npcships.ini, and MSHIPPROPS.INI (most people miss this one!).

Note on Shields

Shields are attached to ships by the shield_link = line in shiparch.ini...

This is the only correct entry type (shield name can be different and the number of HpShieldxx hardpoints too of course):-
shield_link = l_freighter_shield01, HpMount, HpShield01, HpShield02, HpShield03

This next example is nonsense and may well cause some of the random crashes:-
shield_link = l_freighter_shield01, HpMount, HpShield01, HpEngine01, HpEngine02, HpCM01

Why do people attach shields to engines and other non-shield hardpoints??

It's so easy to make enough HpShieldxx hardpoints to cover your ship, and spread the hardpoints along / across your ship. Each l_freighter_shield01 shield is good to cover about 300 metres of your ship.

Available Shields

Here are the shields available in standard FL, many of them are very similar. They are listed in DATA\EQUIPMENT\select_equip.ini...

b_elite_shield01 (Ships\bretonia\br_elite\br_elite_shield.3db)
b_fighter_shield01 (Ships\bretonia\br_fighter\br_fighter_shield.3db)
b_freighter_shield01 (Ships\bretonia\br_freighter\br_freighter_shield.3 db)
bh_elite_shield01 (Ships\bounty_hunter\bh_elite\bh_elite_shield.3db)
bh_fighter_shield01 (Ships\bounty_hunter\bh_fighter\bh_fighter_shield. 3db)
bw_elite_shield01 (Ships\border_world\bw_elite\bw_elite_shield.3db)
bw_fighter_shield01 (Ships\border_world\bw_fighter\bw_fighter_shield.3 db)
bw_freighter_shield01 (Ships\border_world\bw_freighter\bw_freighter_shie ld.3db)
bw_vheavy_shield01 (Ships\border_world\bw_vheavy_fighter\bw_vheavy_fi ghter_shield.3db)
co_elite2_shield01 (Ships\pirate\pi_vheavy_fighter\pi_vheavy_fighter_ sheild.3db)
co_elite_shield01 (Ships\pirate\pi_elite\pi_elite_shield.3db)
co_fighter_shield01 (Ships\pirate\pi_fighter\pi_fighter_sheild.3db)
csv_shield01 (Ships\utility\csv\csv_shield.3db)
cv_elite_shield01 (Ships\civilian\cv_startracker\cv_startracker_shie ld.3db)
cv_fighter4_shield01 (Ships\civilian\cv_fighter\cv_fighter_shield.3db)
cv_fighter5_shield01 (Ships\civilian\cv_elite\cv_elite_shield.3db)
cv_fighter6_shield01 (Ships\civilian\cv_vheavy_fighter\cv_vheavy_fighte r_shield.3db)
cv_fighter_shield01 (Ships\civilian\cv_starflier\cv_starflier_shield.3 db)
cv_freighter_shield01 (Ships\civilian\cv_starblazer\cv_starblazer_shield .3db)
k_elite_shield01 (Ships\kusari\ku_elite\ku_elite_shield.3db)
k_fighter_shield01 (Ships\kusari\ku_fighter\ku_fighter_shield.3db)
k_freighter_shield01 (Ships\kusari\ku_freighter\ku_freighter_shield.3db )
l_elite2_shield01 (Ships\liberty\li_elite2\li_elite2_shield.3db)
l_elite_shield01 (Ships\liberty\li_elite\li_elite_shield.3db)
l_fighter_shield01 (Ships\liberty\li_fighter\li_fighter_shield.3db)
l_freighter_shield01 (Ships\liberty\li_freighter\li_freighter_shield.3d b)
or_elite_shield01 (Ships\order\or_elite\or_elite_shield.3db)
pi_elite_shield01 (Ships\corsair\co_elite\co_elite_shield.3db)
pi_fighter_shield01 (Ships\corsair\co_fighter\co_fighter_shield.3db)
pi_freighter_shield01 (Ships\corsair\co_freighter\co_freighter_shield.3d b)
r_elite_shield01 (Ships\rheinland\rh_elite\rh_elite_shield.3db)
r_fighter_shield01 (Ships\rheinland\rh_fighter\rh_fighter_shield.3db)
r_freighter_shield01 (Ships\rheinland\rh_freighter\rh_freighter_shield. 3db)

Note DA's spelling mistakes and keep the "sheild" names the same. :)

Make your own

If you make big ships as I do, you can easily and quickly make larger shields for them by resizing one of the freighter shields in FL Model Tool manually in the X, Y and Z axes (don't allow FL Model Tool to automatically resize it, it will be too small). Check it in HardCMP at each step (to do this, back up your normal ship .sur file, and rename the copy of the shield sur to the same as your ship name temporarily (if it's yourship.cmp then name it yourship.sur).

When you are happy, save your new shield as cruiser_shield01.sur or dreadnought_shield01.sur or whatever_you_like.sur, and add it into DATA\EQUIPMENT\select_equip.ini

Don't forget to restore the proper ship sur file later, after saving your new shield.

Now if you are more adventurous and want to make your own shield in MilkShape and export it, remember you will need a hardpoint named SpConnect. And you will have to work out where to put it! :)

Good luck out there!

Lancer Solurus
09-06-2008, 10:12 PM
For shield_link I found that HpMount is not required. Not a single ship in my MOD has that HP listed and it works fine. Only shield mounts need to be listed. Also your shield size and shape is determined by the SUR file.

Nice tut BTW!

09-07-2008, 05:29 AM
Aha, thanks for the info Lancer, I wasn't aware of this.

But as plain FL has HpMount listed in the shield_link for each ship I think it's best to follow that.

I edited my tutorial to include the shield names and the locations of the sur files. There is one for each originally flyable ship but none for the big ships or the utility vehicles.

Note DA's spelling mistakes - spell them as shown.


06-19-2013, 01:08 AM
Even though this is a little old now, it is still quite useful. Would be really nice to be able to visualize it or even a youtube video.
Still trying to work it out on some new ships i'm creating.