Men of War: Assault Squad 2 features new single player style skirmish modes that take players from extreme tank combat to deadly sniper stealth missions. Commanders can now faceoff against opponents on various new multiplayer 1v1 – 4v4 maps. To truly bring the battles to life though there is the new 8v8 game mode designed for huge battles on spectacular maps. This new Assault Squad game brings significant game engine and visual improvements as well, with special attention paid to ones that were highly requested by the players.

Post tutorial Report RSS Cannon, Helicopter and Additional Details Tutorial

In continuation of previous tutorials, this tutorial is kind a conclusive, as by that and from all previous tutorials, almost all basic porting method and entity setup, to make it functional in game will got cover by it.

Posted by on - Advanced Weapons Modelling

Requirements:

Sample Files - Google Drive

Sample Files - Dropbox

Official Multi Script Link

Official XNALara XPS Link

From 3d Max to MOW Export Plugin - Official

Tutorial PDF - Google Drive

Tutorial PDF - Dropbox


Important Note:

- To understand this tutorial, you have to go through with previous tutorials as follows:

Vehicle Model Porting Tutorial (Basic)

Vehicle Model Porting Tutorial (Advance)

Animations:

- Before Proceed further with this tutorial, as its kind a concluding tutorial and for that defining animation and its kinds is necessary.

- So simple animation code be divided into following parts:

- Animation = (ACTION name e.g.: FIRE, RECOIL etc.) , (Name you provided to the combination of selected OBJECTS, on which you want to apply ACTION upon by “Edit Named Selection Set”) , (starting frame - ending frame) , (name of animation file on which you want to play animation from) , (percentage of speed which animation play by)

- AnimationAUTO will apply animation to any object by defined frame range despite of whatever the object nature is, it also don't require any specific action name, you can give its ACTION any name like ZEBRA11, LION22 etc and it even can apply over human entity related weapons and armors

- AnimationRESUME it will make animation to continue which suspend due to some other action, from the point where it stopped, otherwise the animation can either be played to the end, or get restarted.

- Where following are types of animations with some common actions according to predefined properties in game engine:

Example animation:

Animation for Vehicles:

Animation = start, body, 10-50,60

Animation = stop, body, 60-100,60

Animation = fire, fire, 120-160,60

Animation = fire_mgun, fire_mgun, 120-160,60

Animation = hit, body, 120-160,60

Animation = doorleft, doorleft, 120-160,60

Animation = doorright, doorright, 120-160,60

Animation = doorleft_passenger, doorleft_passenger, 120-160,60

Animation = doorleft_close, doorleft_close, 120-160,60

AnimationResume = open, open, 170-185,60

AnimationResume = open2, open2, 170-185,80

AnimationResume = open_driver, open_driver, 235-295,60

AnimationResume = open_commander, open_commander, 235-295,60

AnimationResume = open_gunner, open_gunner, 235-295,60

AnimationResume = close_driver, close_driver, 235-295,60

Animation = repair, body_r, 203-220, body_r, 60

Animation = repair, engine_r, 150-160, engine_r, 60

Animation = repair, turret_r, 247-260, turret_r

Animation = break, trackL_b, 20-36, trackL_b, 80

Animation = break, trackR_b, 40-60, trackR_b, 80

Animation = break, body_b, 5-17, body_b, 60

Animation = break, engine_b, 140-150, engine_b, 60

Animation = break, turret_b, 230-247, turret_b

Animation for Cannons:

Animation = recoil, recoil, 10-50,60

Animation = close, close, 10-50,60

Animation = fire, fire, 120-160,60

Animation = fire00, fire, 120-160,60

Animation = fire01, fire, 120-160,60

Animation = fire02, fire, 120-160,60

Animation = shield_left_r, shield_left_r, 120-160,60

Animation = repair, turret_r, 247-260, turret_r

Animation = repair, gun_r, 247-260, gun_r

Animation for Airbornes:

Animation = engine_start, engine_start, 10-50,60

Animation = engine_stop, engine_stop, 10-50,60

Animation = engine_work, engine_work, 120-160,60

Animation = fake_prop, fake_prop, 120-160,60

Animation = gear_up, gear_up, 120-160,60

Animation = open, open, 120-160,60

Animation = wheels, wheels, 120-160,60

Animation = dooropen, dooropen, 120-160,60

Animation = drift, drift, 120-160,60

Animation can mix and match with in entities depend on entity structure.

Turret Setup:

- As turret setup is almost same as VEHICLE setup, except it don't include any critical points like ENGINE or FUEL and VOLUMES only apply to BODY, GUN, TURRET, GUN_ROT, SHIELD(s).

- It also have HUSK, so got to creat X and XX models as well to have damaged and destroyed models and same goes for all entities other than humans.

- Turret had only one basic animation which is CLOSE animation, as at time when turret start moving
either by DRIVERS or by other VEHICLES, it transform in to close form as explained in sample file, but
CLOSE animation don't apply on INTERVALS, for example, to apply CLOSE, give intervals from 100-200
frames by SETKEY and apply custom animation at frame 150 by AUTOKEY, but instead of giving close
action a range from 100-200 in BASIS properties, give it range from 150 - 200, otherwise close animation will not play upon action.

- Turret also can carry by vehicle and for it required CARRIAGE and LINK as POINTERS or ENTITIES, carriage could be any common object as it don't affect the action but LINK should be the point where turret will connect with VEHICLES and vice versa at time of setting VEHICLE you also have to provide that LINK in VEHICLES to carry turret or entities like turret.

- Where you also have to place SEAT(S), as at time when VEHICLES carry turret, the passengers, commander or gunner will place upon seats instead of their original PLACE.

Please review following picture and provided sample model for more detail:

merge from ofoct 4

Helicopter Setup:

- Currently I did that on experimental basses by following examples from other mods and didn't use any furnished model, so you can get better understanding of object combination, as this helicopter setup is based on VEHICLES and CANNON properties.

- In cannon, turret is the center point in which all object animation will play and ELEVATE upon it, so we use TURRET as BASIS and replace it with all the basis PROPERTIES where leave whole structure intact and turret could also be a POINTER instead of any object.

- Now the logic is we use TURRET CLOSE animation as TAKEOFF and LANDING animation where give its ROTOR / BLADES an auto animation, so they keep moving despite of other animations.

- I created two versions of it, one is for attack, as it elevated only in mid air and don't land on ground and other one is as transporter, which land and takeoff.

Special Note:

-To have helicopter DRIVER an statical animation instead of default driver animation (where driver start WALKING instead of siting at seat, as that animation is for CARRYING cannon which looks odd in HELICOPTER). So to change that, add following command by choosing animation of BOARDING from other cannons:

{boarder
 {anm "gunner"
  {forward {begin "Animation Name"} {end "Animation Name" 10} }
  {reverse  {end "Animation Name" -1} }
 }
 {anm "commander"
  {forward {begin "Animation Name"} {end "Animation Name" 10} }
  {reverse  {end "Animation Name" -1} }
 }
 {anm "driver1"
  {forward {begin "Animation Name"} {end "Animation Name" 10} }
  {reverse  {end "Animation Name" -1} }
 }
 {anm "driver2"
  {forward {begin "Animation Name"} {end "Animation Name" 10} }
  {reverse  {end "Animation Name" -1} }
 }
 {anm "passenger"
  {forward {begin "Animation Name"} {end "Animation Name" 10} }
  {reverse  {end "Animation Name" -1} }
 }
}

-Then add following command to ELIMINATE default DRIVER movement animation:

{extender "cannon"
 {animation
  {switch "close"}
  {move "" ""}
  {aim "" ""}
  {fire  "" ""}
  {reload  "" ""}
 }
 {move {obstacle "close"}}
 {attack {obstacle "open"}}
}

-As {move "" ""} define the movement of DRIVER1 = Left and DRIVER2 = right so by letting it empty we can eliminate that movement animation and only provided BOARDING animation for driver will play upon. where if you want to give it any animation just add it as = {move "Name of Animation for Driver1" "Name of Animation for Driver2"}, you can pick that animation from default cannon animations.

- To give it vehicle properties you have to apply following code in helicopter .DEF (Definition) file:

{Chassis "track"
 {Locomotion 
  {MaxSpeed  100}
  {StartTime  20}
  {BrakeTime  1}
  {StopTime  1}
  {TurnRadius  0}
  {TurnTime  3}
  {TurnStart  2}
  {TurnStop  0.5}
 }
; ("loco_carrier")
}

- Replace values according to your requirements and review following picture and provided sample file for better understanding:

merge from ofoct 4

-And if your placed object like helicopter BLADES or DOORS start DISAPPEARING at spawn, then change them as STAN1, STAN2, STAN3, STAN4 and so on by Multi Script (as STAN consider to be as common mesh, it wont effect on any other FUNCTION).

-To add PASSENGERS, add following code in .DEF file (while you can increase number of passengers as per your requirement) where you also have to place that POINTER in helicopter body like other pointers of GUNNER, COMMANDER, DRIVER1 and DRIVER2.


("crew_human" place(passenger1)  bone(passenger1) door(emit3) animation(passenger) group(passenger))
("crew_human" place(passenger2)  bone(passenger2) door(emit3) animation(passenger) group(passenger))
("crew_human" place(support1)  bone(support1)  door(emit3) animation(passenger) group(passenger))
("crew_human" place(support2)  bone(support2)  door(emit3) animation(passenger) group(passenger))

Tank Tracks and Hatch Setup:

- Making tank tracks is easy, you have to make desired OBJECT as track by MultiScript and it will work in game same as wheels, and animation will automatically play upon it, but to give it more depth please review this TUTORIAL.

- Tank HATCH animation will trigger at the time when gunner or command or driver will take its position, where the HATCH object is defined as COVER, it could be COVER1, COVER2 , etc. and animation which play upon is OPEN and CLOSE, open is opposite to close animation, as in CLOSE we give animation from start-point to mid-point (e.g. 100(start) - 150 (mid) - 200 (end)) and in OPEN animation from mid-point to end-point.

Additional Entity Setup and Configuration Details:

Following are the basic component of vehicles weaponry configuration:

Guns Rotation Angle and Speed Configuration:

IKSpeed= Speed of rotation of vehicles Gun or Machine Gun
IKMin= Minimum rotation angle, it value remains in MINUS (-)
IKMax= Maximum rotation angle, it value remains in PLUS (+)

There are two ways of configure vehicles weapons, first in 3d Max and second by manually changing it by entity configuration file which located in resource\entity\-vehicle\car\ABC(name of vehicle)\ABC.DEF file (.def is file extension which can be edit with WordPad)

Find and change following values according to your need (or if its not present then you can add it before last argument line):

 {bone "mgun_rot"
  {speed 0.03}
  {limits -25 25}
 }

OR

 {bone "gun_rot"
  {speed 0.03}
  {limits -25 25}
 }

it depend on number of weapons attached with vehicles it also could be gun_rot1 or gun_rot2 etc.

as for 3d Max simply put values in Mgun_Rot or Gun_Rot Object Properties > User Defined

IKSpeed=0.03
IKMin=-25
IKMax=25

Visors:

Visor are the point of view of each seat and their vision to reveal the area in view, must be place near the designated seat with same angle of seat view.

Weaponry Configuration:

{Weaponry
  {place "gun"
   {weapon "76mm_L11" filling "ammo bullet76 ap" 1}
   {charger "charger"}
   {gunner "gunner"}
   {basic}
  }
  {place "gun1"
   {weapon "45mm_20k" filling "bullet45 ap" 1}
   {foresight "foresight2"}
   {charger "charger1"}
   {gunner "gunner1"}
   {basic}
  }
}

In consideration of above example if you are mod author and you created entity by your self in 3d max then its easy to configure it, otherwise you have to find the exact .mdl extension file, which is located in same folder as of .def file, to see the connection of foresight with weapon along with number of gunners and chargers.

Well as of explanation then GUN don't need to mention foresight as by game coding, it will directly link by weapon where as after wards you have to mention foresight that which gun or mgun link with which foresight, and whose using and reloading that gun, it could be gunner, gunner1, gunner3, driver, driver1, commander, or commander1, depend on the number of seats and functions within entity.

As for Machine Gun you have to mention link with BONE (object or pointer) that which this machine gun attached with:

 {extender "inventory"
  {weapon "mgun"
   {mask "weapon mgun"}
  }
  {Box
   {size 5 6}
   {item "Name of Machine Gun" filled {user "mgun"}}
   {item  "ammo mgun" 1600}
  }
 }

 {Weaponry
  {place "mgun6"
   {type "mgun_main"}
   {gunner "commander"}
   {charger "commander"}
   {weapon "dshk" filled}
   {foresight "foresight10"}
   {LinkBone "gun_rot"}
   {basic}
  }
}

Now you have two ways to place machine gun, one is to place individual weapon model from inventory\-weapon\dshk or your custom made machine gun by 3d max which you exported or you can MASK your entity default machine gun. In first two cases you don't need to change INVENTORY arguments but in third case you need above mention argument to replace ENTITY default machine gun as main MGUN, other wise model from -weapon will appear along with entity default machine gun (as the issue I mention in previous tutorials).

FX for Gun Shells and Machine Gun Shells:

Fx_invers: is use as point of ejection of Tank and Cannon Shells
Fxshell: is use as point of ejection of Machine Gun Shells

Wheels rolling speed:

WheelRadius: Defines the diameter of the wheels. As a result you define how fast or slow they turn when the tank starts driving in game.

you have to place argument either in each wheel for different spinning speed of each or either in BASIS Object Properties > User Defined in 3d Max.

Example:
WheelRadius=0.20

External Entities Attachment:

As I explained in previous tutorials that link, Carriage and Cartridge_Belt are functions used as object or pointer in cannons to link it with vehicles, so in addition to it you can use ATTACH and NODE function as pointer or object in vehicles to attach them with cannons.

Example from old vehicle exporting tutorial for better understanding:

{game_entity
 (include "/properties/tank.ext")
 (include "/properties/shadow/tank.inc"  scale(1.2))
 (include "/properties/selection/vehicle.inc"  scale(1.2))
 {props "medium" "turret_rotator" "vision_lev05" "-turret"}
 
 {volume "body"
  {component "body"}
  {tags "body"}
 }
 {volume "skirt"
   {component "skirt"}
   {tags "body"}
 }
 {volume "body1"
   {component "body"}
   {tags "body"}
 }
 {volume "turret"
   {component "turret"}
   {tags "turret"}
 }
 {volume "turret1"
    {component "turret"}
    {tags "turret"}
 }
 {volume "engine"
  {component "engine"}
  {tags "engine"}
 }

 ("armor_medium" turret(56 46 46 30) body(40 35 40 20) skirt(40 35 40 20))
 ("armor_mantlet" t(56))
 ("shield" args 10)
 
 {extender "enumerator"}

 ("crew_4_human")
 {boarder
  {anm "left"
   {forward {begin "board_sherman_left"} {end "seat_gunner_stand"}}
   {reverse  {end "emit_tank_2_hold"}}
  }
  {anm "right"
   {forward {begin "board_sherman_right"} {end "seat_gunner_stand"}}
   {reverse  {end "emit_tank_2_hold"}}
  }
  {anm "armor"
   {forward {begin "board_HighArmor"}  {end "pose_seat_armor_1"}}
   {reverse  {end "emit_tank_2"}}
  }
  {anm "armor1"
   {forward {begin "board_HighArmor"} {end "pose_seat_armor_1"}}
   {reverse  {end "emit_body"}}
  }
 }

 ("seat_human" place(seat1) bone(seat01) door(emit3)  animation(armor1))
 ("seat_human" place(seat2) bone(seat02) door(emit4)  animation(armor))
 ("seat_human" place(seat3) bone(seat03) door(emit5)  animation(armor))
 ("seat_human" place(seat4) bone(seat04) door(emit6)  animation(armor1))

 {extender "inventory"
  {weapon "mgun" {mask clear}}
  {weapon "mgun1"
   {mask "weapon mgun"}
  }
  {box
   {item "ammo mgun" 2500}
   {item "ammo bullet47 ap" 45}
   {item "ammo bullet47 fg" 32}
   {item "ammo bullet75 ap" 45}
   {item "ammo bullet75 fg" 32}
   {item "mac31" filled {user "mgun"}}
  }
 }
 {Weaponry
  ("restore_ik_time")
  {place "gun"
   {RestoreIKAfterAim}
   {weapon "47mm_SA35" filling "ammo bullet47 ap" 1}
   {gunner "gunner"}
   {charger "charger"}
   ("abm_22_sharp")
   {basic}
  }
  {place "gun2"
   {RestoreIKAfterAim}
   {weapon "75mm_m6" filling "ammo bullet75 ap" 1}
   ("abm_22_sharp")
   {gunner "commander"}
   {charger "commander"}
   {foresight "foresight12"}
   {basic}
  }
  {place "mgun"
   {weapon "mac31" filled}
   {basic}
  }
 }

 {mass 25500}
  {Chassis
   ("tank_trace" fx("tracks_mid") step(0.52) len(0.47))
   {Locomotion ("locomotion")
    {MaxSpeed  28}
     (mod "mp"
      {maxspeed   24}
     )
    {maxSpeedAtMaxTurn 12}
    {StartTime   13}
    {TurnTime     8}
       {TurnStart  1.7}
       {BrakeTime    1}
       {StopTime     2}
       {TurnRadius   9}
       {TurnStop   0.9}
        {Gears  0.2 0.5 1}
       {RearGears  0.38}
   }
   (mod "mp"
    {FuelBag
     {volume 470 } 
     {rate 135 }   
     {remain 450 }
     {fuel "fuel"}
    }
       {speed
           {Normal  10}
       }
   )
 }

 {Extension "name of entity.mdl"}
 ;{texmod "name of tex mod"}
 
}

AI Sentries placement over vehicles:

You can place Sentries over vehicles by adding following arguments in CREW.EXT or by adding directly in to .DEF (depend on your vehicles configuration):

(define "AI_Sentries"
	{placer
		{place "%place" {LinkBone "%bone"}{OpenForCrush} {turnoff {shadow}}{attach squat_lie} }
	}
	{boarder
		{door "%door"}
		{link "%door" "%place" {anm "%animation"} }
	}
	{Volume "%place"
		{tags "attach" "attach_%place"}
		{able clear {bullet 0} {touch 1}}
	}
)
	("AI_Sentries" place(seat1) bone(seat00) door(emit5)  animation(armor))
	("AI_Sentries" place(seat2) bone(seat01) door(emit4)  animation(armor))

Please Review Following picture for AI Sentries placement:

AI Sentries

Please comment and share this tutorial while everyone have full permission from my side to share that tutorial and tutorial related file to any forum.

Comments
obamaladen
obamaladen

Will this make helicopters move like they do on MOW: Vietnam?

Reply Good karma Bad karma+1 vote
GameJoJo Author
GameJoJo

No, not like that, instead it will be elevate by control panel command, but I am also working on it, to make it like they were in MOW:V.

Reply Good karma+1 vote
Post a comment
Sign in or join with:

Only registered members can share their thoughts. So come on! Join the community today (totally free - or sign in with your social account on the right) and join in the conversation.

Follow Report Profile
Icon
Men of War: Assault Squad 2
Platforms
Windows
Developer
Digitalmindsoft
Engine
GEM 2
Contact
Send Message
Release date
Game watch
Follow
Related Games
Men of War: Assault Squad 2
Men of War: Assault Squad 2 Real Time Tactics
Related Engines
GEM 2
GEM 2 Commercial
Related Groups
Digitalmindsoft
Digitalmindsoft Developer & Publisher
Men of War - Work on units
Men of War - Work on units Hobbies & Interests with 3 members
Men of war Fan club
Men of war Fan club Hobbies & Interests with 431 members