StarTrader
09-06-2008, 09:16 PM
General
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.
Process
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.
Practicalities
You will need at least the following hardpoints:-
Hp|Fixed|HpMount
Hp|Fixed|HpTractor_source
Hp|Fixed|HpShield01
Hp|Fixed|HpEngine01
Hp|Revolute|HpWeapon01
Optional hardpoints (replace 01 with 02, 03 etc for more than one):-
Hp|Fixed|HpMine01
Hp|Fixed|HpCM01
Hp|Fixed|HpThruster01
Hp|Fixed|HpCockpit
Hp|Fixed|HpPilot
Hp|Fixed|HpHeadlight01
Hp|Fixed|HpRunningLight01
Hp|Fixed|HpDockLight01
Hp|Fixed|HpContrail01
Hp|Fixed|HpEngineGlow01
Hp|Revolute|HpTurret01
Use numbers where they are shown, if there is no number you don't need one.
Notes
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.
Note
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!
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.
Process
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.
Practicalities
You will need at least the following hardpoints:-
Hp|Fixed|HpMount
Hp|Fixed|HpTractor_source
Hp|Fixed|HpShield01
Hp|Fixed|HpEngine01
Hp|Revolute|HpWeapon01
Optional hardpoints (replace 01 with 02, 03 etc for more than one):-
Hp|Fixed|HpMine01
Hp|Fixed|HpCM01
Hp|Fixed|HpThruster01
Hp|Fixed|HpCockpit
Hp|Fixed|HpPilot
Hp|Fixed|HpHeadlight01
Hp|Fixed|HpRunningLight01
Hp|Fixed|HpDockLight01
Hp|Fixed|HpContrail01
Hp|Fixed|HpEngineGlow01
Hp|Revolute|HpTurret01
Use numbers where they are shown, if there is no number you don't need one.
Notes
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.
Note
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!