Example ships hardpoints

Continuing the discussion from [EXAMPLE] Ships #1:

What is the _PAIN.tga texture for? is this for custom damage maps?

Parameters for docking paths and nav lights would be really helpful even if we just know the argument list (ranges and explanations can come later and we can experiment)

For hardpoints it looks like weapons retain position-(muzzle,direction,rest) and hardpoints position-(heading,left,up) it would be good to know which prefixes or structures are required (HOLD_), the rest looks to be very similar to the maya layout.

I am in the process of rebuilding the Turanic carrier rig for one of my ships we will see if it exports correctly.

If you have any issues - let me know (maybe share it via dropbox). I will only put 30-60 mins a day on Forum stuff (I have proper work to do!) - but I’ll try to be around a bit every morning and evening.

_PAIN is for saying ‘this is paint’ even when it’s not Team or Stripe paint. Paint has a different light response (beyond just Spec/Refl maps).

I’ll document all of the params over time - it is very time consuming, I’m sorry. That’s one of the reasons for the Turanic Example - because it has paths to help start that data dump.

I’m really happy to see you getting started already!

Dock parameters as far as I can figure them (and here is the reason why)

That is the old Hod exported from maya. I was able to get the normal docking paths on the top working find in HW2 with a hangar door animation as well as 4 of the 12 latch points. It also has 2 large grinding drums that continuously spin and a radar dish that spins as well, but I never got the latch points to work well.

SEG#[???]Tol[Distance Tolerance to point][???]Spd[Max Speed]_[???]Flags[Use Rotation, Close behavior, Player control , UnFocus camera, Queue ships, Clear Reservation]

I brought up the old HW2 Maya RDN documents and it looks like there were options for what ships would use what path (fighters, corvettes, resourcers, etc) and a flag to determine if it is an exit path or an entrance path, I don;t see these options, though I’d imagine they are there.

ExitPath - Should be tagged if this path is used to launch ships.

LatchPath - Should be tagged if this path is a latch path.

UseAnimation means use the ships docking and launching animations to control the use of the path.

LinkedPathNames is a comma-separated list of path names. If any of the paths listed here are busy then this path counts as busy. This lets you link paths that use the same airspace so that only one can be in use.

Use Rotation: This specifies if the ship tries to match the rotation of this launch/dock/latch path point

Point Tolerance: Point tolerance is the tolerance the ship uses to mark this launch/dock/latch path point as ‘done’, and focus on the next point in the path. The tolerance is the distance in meters.

Drop Focus: This is the point where the camera loses focus if you were focused on a squadron that just docked with a target docking ship.
Max Speed: This is the maximum speed the ship can fly at this point in the path.

Check Rotation: Use this only of you really want to make sure the ship reaches the specified rotation.

Force Close Behaviour: Ships that are doing close behaviour basically slide (sideways, backwards, etc) to the target.

Player Is In Control: This is used in launch paths. The player can issue orders when the ships are launched a certain way along the path. Make sure only one point of a launch/dock/latch path is tagged with this.

Queue Origin: Every docking path has a queue. The queue stacks ships up at the queue point. The first point of a docking path (so not an exit/launch path) should contain a queue origin flag to set the position and orientation of the queue. The second point in that launch/dock/latch path is the actual first point in the launch/dock/latch path.

Use Clip Plane: Only one point on the path should have this set. The game uses this point and the next one to define a clip plane that intersects this point. Anything before the plane will not be drawn. Use this when ships need to spawn behind a wall but there’s no space back there to hold the ship.

Clear Reservation: Clears the path reservation so that the next ship to use the path can start its operation.

2 Likes

Our dock path nodes have more stuff than that :wink: I can’t get you the docs you need tonight. I’ll see what I can organize and post tomorrow (in the Ship Examples locked thread) - so keep an eye out. I’ll drop the entire DAE parsing setup for the paths, so it’ll be a pretty complete guide.

2 Likes

Awesome, I will be great to get my resource mining ship working at full capacity (see pic I added above)

1 Like

So you got the drums to spin? Animation was fine? Or is that with the ‘old’ MAD files? The old and new format work - but the new format is WAY less wasteful.

Still, seriously - this is the FIRST ship that I know of to go through the chain! Maybe that’s not true on some other forums/sites - but here, I think this is the official first one! So yeah, that’s F’n great man!

Docs to help you get further tomorrow… And we can talk about your textures and materials then too - get it 100% ‘new style’ if you’d like.

2 Likes

It was the old one.

I got another ship to generate a hod, but seem to have broke my mod files, can’t figure out what I changed and i haven’t set up a svn repository for this version yet… yay bug hunting

Does the following look like it exported all of the stuff that it should? is there a verbose mode? I tried /? -? and /help to see if I could get a parameters list

DAE->HOD: Loading G:\Ships\IMP_DREADNAUGHT\IMP_DREADNAUGHT.DAE
DAE->HOD: Creating Homeworld2 Multi Mesh File - Version 512
DAE->HOD: Creating STAT[IMP_DREADNAUGHT] with Shader[ship]
– Building LMIP[G:\SHIPS\IMP_DREADNAUGHT\DREADNAUGHT_DIFF] for Param[$diffuse]
(1024x1024 - 8888)
– Building LMIP[G:\SHIPS\IMP_DREADNAUGHT\DREADNAUGHT_GLOW] for Param[$glow] (10
24x1024 - 8888)
– Building LMIP[G:\SHIPS\IMP_DREADNAUGHT\DREADNAUGHT_TEAM] for Param[$team] (10
24x1024 - 8888)
DAE->HOD: Generating Scene Data LOD[0]
DAE->HOD: Generating Collision Meshes
DAE->HOD: Generating Animation Channels
Press any key to continue . . .

1 Like

There’s no more verbose option than that for DAE->HOD - it’ll complain if anything terrible is happening. That looks great, no errors or issues - pretty much what it should look like when everyone goes right.

I’ll have the DOCK stuff added to the Example over the next few hours, I have proper work I have to do first, and a very limited number of hours on a Sunday to do any of this :smile:

Well I found the problems with the scripts, I can’t get my own rig to work that I built from scratch using the Tur carrier as reference, but if I drop the mesh in the Tur example and edit it I can get it to export. Only issue is that the mirrored UVs play havoc with the shows. I don’t have this issue on the old .hods so I am assuming that some sort of compatibility shader is being used.

1 Like

We use mirrored UVs all over - so that certainly shouldn’t be an issue…

And there aren’t ‘compatibility’ shaders - so something odd is happening. Drop me your DAE (privately if you’d like) and I can take a quick look…

pm’d

Just messing around, these guys exported all right, but I didn’t mirror anything, just lots of overlap, now if someone could tell me how to make custom engine trails we could add some ‘interceptors’ to this race

4 Likes

Sajuuk to bear vs floating cat heads, which is better?

4 Likes

Just a quick question, BitVenom. I opened the Kadeshi swarmer example in 3ds max, and i noticed something funny. It has the MAIN Lod mesh and 3 lower detail LOD meshes. but it also had a 5th mesh called “COL_Root_”. Is that mesh related to anything important in the overall package or is it just the “refference” mesh from HW1 Classic put there for building the remastered meshes/lods. Because it does seem to have the structure/polycount of HW1 classic and also lacks any vertex smoothing.

EDIT:
While importing the Swarmer DAE in 3ds Max (using 3ds Max 2011 and the FBX Plugins 2011.3.1 to import DAE) i get the follwing errors:
While reading or writing a file the following notifications have been raised.
-Warning: Extra node is not supported in node
-Warning: Extra node is not supported in node visual_scene

Update to the newest fbx 2013.3 or some thing, the 2011 really screw s up the import. Those errors should go away. I had the same issue with 2011 and now it works with the newer fbx dlu

it should be COL[root] which is the collision mesh for effects

I see… Thanks. Also does the FBX 2013 also work on 3ds max 2011? because if not… it will be like entering the Garden of Kadesh as a turanic raider…

Editt:
NVM, it works… also imports textures now. But apart from main mesh, the LODs are semi-transparent with a few faces full opaque with textures. weird.

The LODs can be ignored: HW2RM ship models

We’re these exported from a “from-scratch” file or did you have to hijack one of the example files again?

Edit: Hm, I managed to export a ship succesfully (plenty of rotation and mesh errors, but those are 3dsMax’ fault, not the exporter) without hijacking an example ship. I can share the .max file if anyone wants it.

I am trying to get a working from scratch rig, having to do it part by part. My main reason is that I have a lot of ships with 20+ turrets and a specific sequence of event files and hardpoints for sub systems and it will be a lot easier to have a clean rig with those hardpoints available.

Just as an example here is a HW2 classic .ship file updated into the HW:R format (looks like battle scars, repair and salvage points and damage fall off were added to ship files)

NewShipType = StartShipConfig()

–====================================================================================
–NAMING AND DESCRIPTION
–====================================================================================

NewShipType.displayedName = “Imperator I Destroyer”
NewShipType.sobDescription = “Medium Destroyer”
NewShipType.SquadronSize = 1

–====================================================================================
–COST
–====================================================================================

NewShipType.buildCost = 200000
NewShipType.buildTime = 333
NewShipType.buildPriorityOrder = 5

–====================================================================================
–HEALTH
–====================================================================================

NewShipType.mass = 1600
NewShipType.maxhealth = 5196800
NewShipType.regentime = 1039
NewShipType.minRegenTime = 1
NewShipType.topArmourDamage = 0.75
NewShipType.bottomArmourDamage = 0.75
NewShipType.frontArmourDamage = 1.1
NewShipType.sideArmourDamage = 1.2
NewShipType.rearArmourDamage = 2
NewShipType.dustCloudDamageTime = 200
NewShipType.nebulaDamageTime = 100
addShield(NewShipType, “EMP”, 10000, 20);
NewShipType.minFalloffDamageDist=0
NewShipType.maxFalloffDamageDist=1000
NewShipType.maxFalloffDamage=1000

–====================================================================================
–FORMATION
–====================================================================================

NewShipType.paradeData = “vgr_carrier_parade”
NewShipType.passiveFormation = “Broad”
NewShipType.defensiveFormation = “Delta”
NewShipType.aggressiveFormation = “Claw”
NewShipType.formationSpacing = 1500

–====================================================================================
–PROPULSION
–====================================================================================
NewShipType.thrusterMaxSpeed = 25
NewShipType.mainEngineMaxSpeed = 230
NewShipType.rotationMaxSpeed = 3

NewShipType.thrusterAccelTime = 12
NewShipType.thrusterBrakeTime = 12
NewShipType.mainEngineAccelTime = 12
NewShipType.mainEngineBrakeTime = 12
NewShipType.rotationAccelTime = 8
NewShipType.rotationBrakeTime = 8

–====================================================================================
–MOVEMENT
–====================================================================================

NewShipType.controllerType = “Ship”

NewShipType.thrusterUsage = 0.9
NewShipType.accelerationAngle = 60
NewShipType.mirrorAngle = 0
NewShipType.secondaryTurnAngle = 0
NewShipType.maxBankingAmount = 30
NewShipType.descendPitch = 0
NewShipType.goalReachEpsilon = 100
NewShipType.slideMoveRange = 350
NewShipType.relativeMoveFactor = 1

NewShipType.collisionMultiplier = 1

–====================================================================================
–CLASSIFICATION
–====================================================================================

NewShipType.militaryUnit = 1
NewShipType.MinimalFamilyToFindPathAround = “Cruiser”
NewShipType.BuildFamily = “Destroyer_Vgr”
NewShipType.AttackFamily = “Destroyer”
NewShipType.DockFamily = “BattleCruiser”
NewShipType.AvoidanceFamily = “Destroyer”
NewShipType.DisplayFamily = “Capital”
NewShipType.AutoFormationFamily = “Capship”
NewShipType.CollisionFamily = “Big”
NewShipType.ArmourFamily = “Hull_Cap_7D”
NewShipType.UnitCapsFamily = “Destroyer”
NewShipType.unitCapsNumber = 1

–====================================================================================
–SENSORS
–====================================================================================

NewShipType.visualRange = 25000
NewShipType.prmSensorRange = 22000
NewShipType.secSensorRange = 25000
NewShipType.detectionStrength = 2

–====================================================================================
–COMBAT
–====================================================================================

NewShipType.useEngagementRanges = 1
NewShipType.retaliationRange = 25000
NewShipType.retaliationDistanceFromGoal = 15000
–fourth value 0
addAbility(NewShipType, “CanAttack”, 1, 1, 0, 1, 1, 1.2, “Destroyer”,“JustShoot”,{
SuperCapital = “FrontalAssault2”,
},{
Cruiser = “FrontalAssault2”,
},{
Destroyer = “FrontalAssault2”,
},{
Heavy_Frigate = “FrontalAssault2”,
});
addAbility(NewShipType, “GuardCommand”, 1, 10000, 6000);

–====================================================================================
–UI VISIBILITY
–====================================================================================

–NewShipType.TOIcon=“Arrow”
–NewShipType.TOScale=1
–NewShipType.TODistanceFade0=14000
–NewShipType.TODistanceDisappear0=12000
–NewShipType.TODistanceFade1=8500
–NewShipType.TODistanceDisappear1=7000
–NewShipType.TODistanceFade2=12000
–NewShipType.TODistanceDisappear2=35000
–NewShipType.TOGroupScale=1
–NewShipType.TOGroupMergeSize=0
NewShipType.mouseOverMinFadeSize = 0.045
NewShipType.mouseOverMaxFadeSize = 0.1
NewShipType.healthBarStyle = 1

–====================================================================================
–VISIBILITY
–====================================================================================

NewShipType.nlips = 0
NewShipType.nlipsRange = 75000
NewShipType.nlipsFar = 0
NewShipType.nlipsFarRange = 0
NewShipType.SMRepresentation = “Mesh”
NewShipType.meshRenderLimit = 50000
NewShipType.dotRenderLimit = 10
NewShipType.visibleInSecondary = 1
NewShipType.goblinsStartFade = 3000
NewShipType.goblinsOff = 3500
NewShipType.upLOD = 4000
NewShipType.upLOD = 10000
NewShipType.upLOD = 20000
NewShipType.downLOD = 4015
NewShipType.downLOD = 10015
NewShipType.downLOD = 20015
NewShipType.minimumZoomFactor = 0.25
NewShipType.selectionLimit = 40000000000000000000000000
NewShipType.preciseSelectionLimit = 50000
NewShipType.preciseATILimit = 0.001
NewShipType.selectionPriority = 100
NewShipType.SMHighlightDistMin = 0
NewShipType.SMHighlightDistMax = 0

–====================================================================================
–ABILITIES
–====================================================================================

addAbility(NewShipType, “MoveCommand”, 1, 0);
AddShipMultiplier(NewShipType, “MaxShield”, “ThisShipOnly”, “Linear”, 1, 0, 1);
AddShipMultiplier(NewShipType, “HealthRegenerationRate”, “ThisShipOnly”, “Linear”, 2, 0, 0);
AddShipMultiplier(NewShipType, “Speed”, “ThisShipOnly”, “Linear”, 1, .9, 0);
AddShipMultiplier(NewShipType, “WeaponAccuracy”, “ThisShipOnly”, “Linear”, 1, .75, 0);
AddShipMultiplier(NewShipType, “WeaponDamage”, “ThisShipOnly”, “Linear”, 1, .75, 0);
AddShipMultiplier(NewShipType, “PrimarySensorsRange”, “ThisShipOnly”, “Linear”, 1, .75, 0);
addAbility(NewShipType, “WaypointMove”);
addAbility(NewShipType, “HyperSpaceCommand”, 1, 2, 600, 1200, 0, 3);
–addAbility(NewShipType, “CanBuildShips”, 1, “SubSystem_Vgr”, “”);
–addAbility(NewShipType, “CanBeCaptured”, 160, 0.1);
addAbility(NewShipType, “CanBeRepaired”);
–addAbility(NewShipType,“CanBeCaptured”,160,0.5,“CapCap”);
–addAbility(NewShipType,“CanBeSalvageCaptured”,0,1,0,0,1,“SalCap”);
–addAbility(NewShipType,“CanBeRepaired”,“RepCap”);
–addAbility(NewShipType,“CloakAbility”,0,2,2000,4000,3,100,1,1000);
–addAbility(NewShipType,“HyperspaceInhibitorAbility”,0,12000);
addAbility(NewShipType, “RetireAbility”, 1, 1);
addAbility(NewShipType,“MinelayerAbility”,1,1);
addAbility(NewShipType,“HyperspaceViaGateCommand”,1,3,1,0.3);
AddShipMultiplier(NewShipType,“HyperSpaceAbortDamage”,“ThisShipOnly”,“Linear”,0.00001,0.00001,0);
–addAbility(NewShipType,“SpecialAttack”,1,“IONSALVO”);
–addAbility(NewShipType,“CustomCommand”,1,“Drones”,1,0,1000,200,0.25,2,0,“data:Ship/Kus_DroneFrigate/Kus_DroneFrigate.lua”,“Start_DroneFrigate”,“Do_DroneFrigate”,“Finish_DroneFrigate”,“Kus_DroneFrigate”,1.15,2,1);
addCustomCode(NewShipType,“data:Ship/namescript.lua”,"",“Create_ShipName”,“Update_ShipName”,“Destroy_Ship”,“vgr_imperator_destroyer”,1.15);
addCustomCode(NewShipType,“data:Ship/stance.lua”,"",“Create_ShipStance”,“Update_ShipStance”,“Destroy_ShipStance”,“vgr_imperator_destroyer”,1.15);

–====================================================================================
–DOCKING
–====================================================================================

addAbility(NewShipType, “CanDock”, 1, 1);
NewShipType.dockTimeBetweenTwoFormations = 0
NewShipType.dockTimeBeforeStart = 0
NewShipType.dockNrOfShipsInDockFormation = 1
NewShipType.dockFormation = “dockline”
NewShipType.queueFormation = “n_delta”
NewShipType.dontDockWithOtherRaceShips = 0
NewShipType.ignoreRaceWhenDocking = 1
addAbility(NewShipType, “CanLaunch”);
NewShipType.launchTimeBetweenTwoFormations = 0
NewShipType.launchTimeBeforeStart = 0
NewShipType.launchNrOfShipsInDockFormation = 1
NewShipType.launchFormation = “n_delta”
addAbility(NewShipType, “ShipHold”, 1, 0, 12, “rallypoint”, “Fighter, Corvette,Utility”, 25,
{
Fighter = “12”,
},
{
Corvette = “75”, });
addAbility(NewShipType, “ParadeCommand”, 1);
–loadLatchPointList(NewShipType,“SalCap”,“SalvagePoint1”,“SalvagePoint2”,“SalvagePoint3”,“SalvagePoint4”,“SalvagePoint5”,“SalvagePoint6”);
–loadLatchPointList(NewShipType,“CapCap”,“CapturePoint0”,“CapturePoint1”,“CapturePoint2”,“CapturePoint3”);
–loadLatchPointList(NewShipType,“RepCap”,“RepairPoint0”,“RepairPoint1”,“RepairPoint2”,“RepairPoint3”,“RepairPoint4”,“RepairPoint5”);

–====================================================================================
–CONSTRUCTION
–====================================================================================

–====================================================================================
–SUBSYSTEMS
–====================================================================================
LoadModel(NewShipType, 1);
–StartShipHardPointConfig(NewShipType,“Shield”,“Hardpoint_Shield”,“System”,“Generic”,“Damageable”,“Vgr_Imperator_I_Destroyer_Shields”);

StartShipHardPointConfig(NewShipType,“Sensors 1”,“Hardpoint_Sensors”,“System”,“Sensors”,“Damageable”,“Vgr_Module_Sensors_Large”);
StartShipHardPointConfig(NewShipType,“Engine”,“Hardpoint_Engines”,“System”,“Generic”,“Damageable”,“Vgr_Module_Ion_Engine_Large”);
StartShipHardPointConfig(NewShipType,“Engine”,“Hardpoint_Engines1”,“System”,“Generic”,“Damageable”,“Vgr_Module_Ion_Engine_Large”);
StartShipHardPointConfig(NewShipType,“Engine”,“Hardpoint_Engines2”,“System”,“Generic”,“Damageable”,“Vgr_Module_Ion_Engine_Large”);
StartShipHardPointConfig(NewShipType,“FireControl”,“Hardpoint_Accuracy”,“System”,“Generic”,“Damageable”,“Vgr_Module_FireControl_Large”);
StartShipHardPointConfig(NewShipType,“FireControl1”,“Hardpoint_Firecontrol”,“System”,“Generic”,“Damageable”,“Vgr_Module_FireControl_Large”);
StartShipHardPointConfig(NewShipType,“Reactor”,“Hardpoint_Reactor”,“System”,“Generic”,“Damageable”,“Vgr_Module_Reactor_Large”);
StartShipHardPointConfig(NewShipType,“Bridge”,“Hardpoint_Bridge”,“System”,“Generic”,“Damageable”,“Vgr_Module_Bridge_Large”);
StartShipHardPointConfig(NewShipType,“ECM”,“Hardpoint_Stealth”,“System”,“Generic”,“Damageable”,“Vgr_Module_ECM_Large”);
StartShipHardPointConfig(NewShipType,“REGEN”,“Hardpoint_Regen”,“System”,“Generic”,“Damageable”,“Vgr_Module_Regen_large”);
StartShipHardPointConfig(NewShipType,“REGEN1”,“Hardpoint_Regen1”,“System”,“Generic”,“Damageable”,“Vgr_Module_Regen_large”);
StartShipHardPointConfig(NewShipType,“REGEN2”,“Hardpoint_Regen2”,“System”,“Generic”,“Damageable”,“Vgr_Module_Regen_large”);
StartShipHardPointConfig(NewShipType,“REGEN3”,“Hardpoint_Regen3”,“System”,“Generic”,“Damageable”,“Vgr_Module_Regen_large”);
StartShipHardPointConfig(NewShipType,“REGEN4”,“Hardpoint_Regen4”,“System”,“Generic”,“Damageable”,“Vgr_Module_Regen_large”);
StartShipHardPointConfig(NewShipType,“REGEN5”,“Hardpoint_Regen5”,“System”,“Generic”,“Damageable”,“Vgr_Module_Regen_large”);
StartShipHardPointConfig(NewShipType,“REGEN6”,“Hardpoint_Regen6”,“System”,“Generic”,“Damageable”,“Vgr_Module_Regen_large”);

StartShipWeaponConfig(NewShipType,“TurboLaser_12D_all”,“Weapon_BL0”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_12D_all”,“Weapon_BL1”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_12D_all”,“Weapon_BL2”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_12D_all”,“Weapon_BR0”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_12D_all”,“Weapon_BR1”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_12D_all”,“Weapon_BR2”,"");

StartShipWeaponConfig(NewShipType,“IonCannon_6D_limited”,“Weapon_BL3”,"");
StartShipWeaponConfig(NewShipType,“IonCannon_6D_limited”,“Weapon_BR3”,"");

StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS10”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS11”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS12”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS13”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS14”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS15”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS16”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS17”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS18”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS19”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS20”,"");
StartShipWeaponConfig(NewShipType,“TurboLaser_10D”,“Weapon_SS21”,"");

StartShipWeaponConfig(NewShipType,“turbolaser_10d_lateral”,“Weapon_B2”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_10d_lateral”,“Weapon_B3”,"");

StartShipWeaponConfig(NewShipType,“turbolaser_5d_lateral”,“Weapon_B4”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_lateral”,“Weapon_B5”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_lateral”,“Weapon_L2”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_lateral”,“Weapon_L3”,"");
StartShipWeaponConfig(NewShipType,“IonCannon_3d_lateral”,“Weapon_L4”,"");
StartShipWeaponConfig(NewShipType,“IonCannon_3d_lateral”,“Weapon_L5”,"");

StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_L1”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_L6”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_L7”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_L8”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_R0”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_R1”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_R2”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_R3”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_R4”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_R5”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_R6”,"");
StartShipWeaponConfig(NewShipType,“turbolaser_5d_L”,“Weapon_R7”,"");

StartShipWeaponConfig(NewShipType,“ioncannon_3d_lateral_l”,“Weapon_B0”,"");
StartShipWeaponConfig(NewShipType,“ioncannon_3d_lateral_l”,“Weapon_B1”,"");
StartShipWeaponConfig(NewShipType,“ioncannon_3d_lateral_l”,“Weapon_L9”,"");
StartShipWeaponConfig(NewShipType,“ioncannon_3d_lateral_l”,“Weapon_L0”,"");
StartShipWeaponConfig(NewShipType,“ioncannon_3d_lateral_l”,“Weapon_B6”,"");
StartShipWeaponConfig(NewShipType,“ioncannon_3d_lateral_l”,“Weapon_B7”,"");
StartShipWeaponConfig(NewShipType,“ioncannon_3d_lateral_l”,“Weapon_B8”,"");
StartShipWeaponConfig(NewShipType,“ioncannon_3d_lateral_l”,“Weapon_B9”,"");

StartShipWeaponConfig(NewShipType,“proton_torpedo_launcher_h_sr”,“Weapon_Launcher0”,"");
StartShipWeaponConfig(NewShipType,“proton_torpedo_launcher_h_sr”,“Weapon_Launcher1”,"");
StartShipWeaponConfig(NewShipType,“proton_torpedo_launcher_h_sr”,“Weapon_Launcher2”,"");
StartShipWeaponConfig(NewShipType,“proton_torpedo_launcher_h_sr”,“Weapon_Launcher3”,"");
StartShipWeaponConfig(NewShipType,“proton_torpedo_launcher_h_sr”,“Weapon_Launcher4”,"");
StartShipWeaponConfig(NewShipType,“proton_torpedo_launcher_h_sr”,“Weapon_Launcher5”,"");
–====================================================================================
–WEAPONRY
–====================================================================================
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS0”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS1”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS2”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS3”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS4”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS_Lateral”,“Weapon_SS5”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS6”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS7”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS8”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_PDS”,“Weapon_SS9”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS0”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS1”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS2”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS3”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS4”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF_Lateral”,“Weapon_SS5”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS6”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS7”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS8”,"");
StartShipWeaponConfig(NewShipType,“Laser_5D_AF”,“Weapon_SS9”,"");
–StartShipWeaponConfig(NewShipType,“Laser_5D_AF_Lateral”,“Weapon_SS24”,"");
–StartShipWeaponConfig(NewShipType,“Laser_5D_AF_Lateral”,“Weapon_SS25”,"");
–StartShipWeaponConfig(NewShipType,“Laser_5D_PDS_Lateral”,“Weapon_SS24”,"");
–StartShipWeaponConfig(NewShipType,“Laser_5D_PDS_Lateral”,“Weapon_SS25”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS0”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS1”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS2”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS3”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS4”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS5”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS6”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS7”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS8”,"");
–StartShipWeaponConfig(NewShipType,“Flare”,“Weapon_SS9”,"");
StartShipWeaponConfig(NewShipType,“rehash_Flak_Cannon_Large”,“Weapon_SS22”,"");
StartShipWeaponConfig(NewShipType,“rehash_Flak_Cannon_Large”,“Weapon_SS23”,"");
StartShipWeaponConfig(NewShipType,“hgn_minelayer”,“Weapon_R8”,"");
StartShipWeaponConfig(NewShipType,“hgn_minelayer”,“Weapon_R9”,"");
–====================================================================================
–DEATH
–====================================================================================
NewShipType.battleScarCoverage=4
NewShipType.battleScarBudgetLow = 800
NewShipType.battleScarBudgetNext = 1200
NewShipType.battleScarMaxTriBase = 500
NewShipType.battleScarMaxTriInc = 1000
NewShipType.sobDieTime = 11.5
NewShipType.sobSpecialDieTime = 1.9
NewShipType.specialDeathSpeed = 0
NewShipType.chanceOfSpecialDeath = 0.5
NewShipType.deadSobFadeTime = 0
NewShipType.trailLinger = 0
SpawnSalvageOnDeath(NewShipType,“Slv_Chunk_ISD_BRIDGE”,1,0.75,0,0,0,0,0,0,50,0,0,0,1,0,0,0,1,0,0,0,1);
SpawnSalvageOnDeath(NewShipType,“Slv_Chunk_ISD_SMALL”,1,0.75,0,0,0,0,0,0,50,0,0,0,1,0,0,0,1,0,0,0,1);
SpawnSalvageOnDeath(NewShipType,“Slv_Chunk_ISD_MID”,1,0.75,0,0,0,0,0,0,50,0,0,0,1,0,0,0,1,0,0,0,1);
SpawnSalvageOnDeath(NewShipType,“Slv_Chunk_ISD_MID2”,1,0.75,0,0,0,0,0,0,50,0,0,0,1,0,0,0,1,0,0,0,1);
SpawnSalvageOnDeath(NewShipType,“Slv_Chunk_ISD_MID3”,1,0.75,0,0,0,0,0,0,50,0,0,0,1,0,0,0,1,0,0,0,1);
SpawnSalvageOnDeath(NewShipType,“Slv_Chunk_ISD_STERN”,1,0.75,0,0,0,0,0,0,50,0,0,0,1,0,0,0,1,0,0,0,1);
SpawnSalvageOnDeath(NewShipType,“Slv_Chunk_ISD_STERN2”,1,0.75,0,0,0,0,0,0,50,0,0,0,1,0,0,0,1,0,0,0,1);
SpawnSalvageOnDeath(NewShipType,“Slv_Chunk_ISD_BOW”,1,0.75,0,0,0,0,0,0,50,0,0,0,1,0,0,0,1,0,0,0,1);
–====================================================================================
–ENGINES AND SOUND
–====================================================================================

–setEngineBurn(NewShipType,10,0.5,1,300,0,0.7,0.15,380);
setEngineGlow(NewShipType,20,0.95,0.95,20,25000,25000,5,{
0.27,
0.47,
0.69,
0.1,
});
loadShipPatchList(NewShipType,“data:sound/sfx/ship/imperial/stardestroyer/”,0,“Engines/destroyer”,"",1,“Ambience/stardestroyer”,"");

–====================================================================================
–MISC
–====================================================================================

NewShipType.isTransferable = 1
NewShipType.tumbleStaticX = 1
NewShipType.tumbleStaticY = 1
NewShipType.tumbleStaticZ = 1
NewShipType.tumbleDynamicX = 1
NewShipType.tumbleDynamicY = 1
NewShipType.tumbleDynamicZ = 1
NewShipType.tumbleSpecialDynamicX = 1
NewShipType.tumbleSpecialDynamicY = 1
NewShipType.tumbleSpecialDynamicZ = 1
NewShipType.relativeMoveFactor = 1
NewShipType.swayUpdateTime = 50
NewShipType.swayOffsetRandomX = 1
NewShipType.swayOffsetRandomY = 1
NewShipType.swayOffsetRandomZ = 1
NewShipType.swayBobbingFactor = 0.15
NewShipType.swayRotateFactor = 0
NewShipType.useTargetRandom = 1
NewShipType.targetRandomPointXMin = -0.7
NewShipType.targetRandomPointXMax = 0.2
–up/down
NewShipType.targetRandomPointYMin = 0
NewShipType.targetRandomPointYMax = 0
–left/right
NewShipType.targetRandomPointZMin = 0
NewShipType.targetRandomPointZMax = 0

–====================================================================================
–AI WEIGHTING
–====================================================================================

NewShipType.fighterValue = 0
NewShipType.corvetteValue = 0
NewShipType.frigateValue = 0
NewShipType.neutralValue = 0
NewShipType.antiFighterValue = 0
NewShipType.antiCorvetteValue = 0
NewShipType.antiFrigateValue = 0
NewShipType.totalValue = 0

1 Like

xNormal worked great and fixed the shadows issue. I am still having issues with my custom rig, after deleting out a bunch of stuff I got it to generally export, but not sure what is causing crashes, will have to slowly test it to find the error, I have deleted all of the engine mesh and burn info, I also have run into an issue where the entire model is rotated facing down and slightly offset from the dummy points in game even though everything lines up in 3ds max. I’ve tried resetting xforms on everthign and eliminating rotations and it is persistently off.

1 Like

Looks like progress to me :smile:

Nicely done!! One thing i found in max is the x axis is not the same as in other modelers. In max the x axis is normally where the z axis is in for example softimage XSI. When importing into sins any ship i made in max had to be rotated 90 degrees to make it face correctly.