Games Design and Development Blog
Wednesday, 5 November 2014
Tuesday, 7 December 2010
Week 12: Presentation + Assignment Submission Week + Documents and Test plans
DOCUMENTATION:
Starting from the latest, our team came up with certain responsibilities in which each of us having the jobs to do for the documentation part. As for me I decided to finish up the 'Test Documentation as well as 'Design Document' together. They were about 65-70 Tests, which had to be done for the game very detailed and accurately. I filled out each and every section of Results (Actual + Expected) including date when they were tested on. They are still few other things which needed to be tested at the moment, waiting for mariusz to finish the last part of the level which is Pandora's Box Level. After few more tests and and results the test documents are done for good! Hardest part of the documentation :P yet with full concentration had to figure each and every bit of it. The most interesting bit was testing out the Environment test criteria:
(See Below to see the screen shot)
DESIGN DOCUMENT:
The document is split between four (4) team members, each one doing their own part of work and minimum of 6 pages of design. The rest of the documents could be the user guide or controls for the game. The Keyboard layout and Main Screen of the game is as follows:
Thursday, 2 December 2010
Week 12: Continuation of making more cinematic sequence throughout the temple level as well as some visual grass, mud texture and static meshes
I have created the cinematic sequence in the temple (Dome), the introduction near the entrance. I have also made and completed Przsatek's incomplete Trigger Touch cinematic showing the player the other side of the level, to discover Pandora's box. But the log has been completely made by him. I've added some grass static meshes near the trees of the temple. I've tried to add some mud texture material on the floor of the temple.
Overall I am going to add some left out stuffs which have not been added earlier here in this post; some of them are static meshes, Kismet, and trigger adjustments and corridor platform on top of the temple, in which I helped Mariusz in his corridor (I've added Movement track matinee for the platform).
Here are some screen shots of the Camera Cinematic near the entrance of the temple:
The above image shows the trigger associated with the CameraActor class object.
The above image showing the working of the cinematic and camera movements.
The above image showing the working and placing keyframes in the matinee for the Temple's entrance, also adding a slow motion track in director's group.
Here are some screen shots of the texture and and grass static mesh which I have added in the game.
Here are some of the stuff which I forgot to put on the blog over past few weeks: (Just thought it would be necessary to add in last minute changes and extra misc. + Kismet and platform)
The above image shows the platform, the only thing which I have worked on the platform is the movement track and the cinematic part of the camera.
Overall I am going to add some left out stuffs which have not been added earlier here in this post; some of them are static meshes, Kismet, and trigger adjustments and corridor platform on top of the temple, in which I helped Mariusz in his corridor (I've added Movement track matinee for the platform).
Here are some screen shots of the Camera Cinematic near the entrance of the temple:
The above image shows the trigger associated with the CameraActor class object.
The above image showing the working of the cinematic and camera movements.
The above image showing the working and placing keyframes in the matinee for the Temple's entrance, also adding a slow motion track in director's group.
Here are some screen shots of the texture and and grass static mesh which I have added in the game.
Here are some of the stuff which I forgot to put on the blog over past few weeks: (Just thought it would be necessary to add in last minute changes and extra misc. + Kismet and platform)
The above image shows the platform, the only thing which I have worked on the platform is the movement track and the cinematic part of the camera.
There are some bits of kismet and cinematics which I have worked and helped my team mates with Bridge Drawings + Camera movements + Unlocking platform:
The above image, the highlighted ones in the kismet are my work and the cinematic working bits.
Thursday, 25 November 2010
Week 11: Adding more cinematic as we go along the game area of the map, making the use of angle FX zoom + More Fractured Static Meshes (Middle Walls Next to the Projectiles)
Firstly Idea of adding a cinematic was basically to make the user(Player) to know where he's going and what next he has to do to achieve further goals. Inspired, advised by SONY ENTERTAINMENT group of Steve's colleagues, they had us convinced on our main perspective of our game and asked us how does the player know that he has to go through all this? Our answer to the question were very straight forward about the planning to put an cinematic effect and logs way of communicating to the player and letting him know about the consequences as well as tips where to lead and go further ahead.
Here is some of my work contribution of cinematic in the turret level:
1. First added the CameraActor, how I did the same with the intro camera cinematic.
2. Skipping ahead to the part where the player enters the room after opening the door, as soon as the player steps in one of my trigger, the cinematic then plays and zooms out from the characters and shows the walls surrounding the areas behind it.
3. Showing the circle, where all the characters need to be in it to open the last door of the turret level.(NOTICE that the camera zooms in to the white circle whilst the cinematic is played)
4.The next cinematic trigger which I have set up is for the turrets, shows the turrets through the camera's point of perspective and then the camera is shown towards the Cube outside, indicating that the box needs to be placed in between the projectiles (Turrets) in order to get past it.
Here is some of my work contribution of cinematic in the turret level:
1. First added the CameraActor, how I did the same with the intro camera cinematic.
2. Skipping ahead to the part where the player enters the room after opening the door, as soon as the player steps in one of my trigger, the cinematic then plays and zooms out from the characters and shows the walls surrounding the areas behind it.
3. Showing the circle, where all the characters need to be in it to open the last door of the turret level.(NOTICE that the camera zooms in to the white circle whilst the cinematic is played)
4.The next cinematic trigger which I have set up is for the turrets, shows the turrets through the camera's point of perspective and then the camera is shown towards the Cube outside, indicating that the box needs to be placed in between the projectiles (Turrets) in order to get past it.
Adding Fractured Static Meshes in between the walls (Next to the turrets/Projectiles)
1.The first and second step involved is the same as the one which I have mentioned earlier in my posts.
Image above shows the wall being broken into bits of chunks scattered around the surface leading to the second turret wall room.
2. Directly taking through some screen shots of exactly the same what I did with the RockFracturedStaticMesh
3. Adding a bit more detailed material - Green Blob. This material can also be seen in front entrance of the turret (tunnel level).
Thursday, 18 November 2010
Week 10: A whole new Level of detail of learning how to fracture a static mesh (Rock) using the fracture tool settings.
Firstly I would like to introduce to the term fracture in the UDK- it is a set of chunks being broken down into pieces and it visually looks cool while shooting the rock.
I decided to make a 'Fractured_Rock' and place it on the entrance of the cave. Steps on how I played with the fracture tools are shown below: I first searched the content browser with some good static meshes which match out our theme, our basic theme in open world was creating a mountain surrounding by a room and a temple inside it, the Pandora's Box. So we had a static mesh placed already for the start of the game as we proceeded we decided that we would have a cave, inside its a room of darkness through that only a single character with flash light can see where he's going and before the entrance of the cave, I made use of one character which is 'Helios'- The character with weapon can destruct it, such that he can clear the access for the rest of the players into the cave. And the other player can lead the way from his flash light and the last player could activate a trigger or a button such that, the bridge draws to the other side of the level.
Here are some steps how I basically created a fractured static mesh and its components as in materials and particle system inside the rock so that while destructing it, would give a perfect experiencing visual effects. Keeping the quality, not the quantity in mind I achieved this from the site: www.3dbuzz.com
The first step on how I created a fractured static mesh is that, had to search a stone matching to the mountains surrounding the cave - so I found the static mesh called 'S_HU_Supports_SM_CementBlock01' Since there is a lack of time creating your own static meshes, we decided to use the default ones which are in the content browser itself.
2. I double-clicked the static mesh to open the Mesh editor to edit the the rock
3. Clicked on the Fracture tool on the top pane of the window to enter the tool set.
4. I generated about 40-50 chunks and selected the top as supported chunks so that it supports the upper part and the chunks fall off from the supported part of the rock.
5.After completing the selection, I chose not to add any core and clicked on 'Slice' it took me a while to save because it was choppingising and asked me to save it as what name so that it becomes an external package.
6. After that I closed the fractured tool and added the fractured mesh from the content browser to the geometry.
7. And I tested it....!
8. Noticed it didn't show up at all, as expected it actually was disappointing, then having watch through all tutorial I still couldn't figure out why it still and never worked - no good results. But managed to figure out myself that it was because the lack of lightning which I actually didn't add the light point infront of the map, it is crucial as it also becomes the part of geometry and it needs lights to give the visually present static, as it is a very easy and user friendly tool editor :P
9. Added some lights next to it and the results were perfect. It gave the best possible results from the PC configuration which I have :D
10. Success!
As you can see that there is some particle effect on the above image
The following steps showing, how the particles have been added and through which source:
1. The first step is easy, open the same fractured mesh, in which the fractures have been edited.
2. Then select and open the tab from > Fragment Destroy Effects....(2)
3. Click the 'Find object in content browser' Button next to (<= green button)
4. While the chunks break, I noticed that there was no inside material to support like the outer polygons, wanted it to be of the same material as the outer one so I managed to find the same material of that rocks' and placed the settings with the particles.
5. Double-Click the the particle, and chose the particle system to add some detail to the stone.
6. I wanted to add some more particle effect and extra detail to the stone, so I managed to add another destroying effect.
Some of the extra static meshes which I've added are some small static meshes across the mountain rocks just to visually look better in terms of reality wise.. as you can see next to the rock on your left, there are bits of them surrounding the map area making the map look realistic. As just the lights in my opinion wouldn't make it so real!! (Every lights near the mountain area side and the entrance are part of my work and my idea)
2. I double-clicked the static mesh to open the Mesh editor to edit the the rock
3. Clicked on the Fracture tool on the top pane of the window to enter the tool set.
4. I generated about 40-50 chunks and selected the top as supported chunks so that it supports the upper part and the chunks fall off from the supported part of the rock.
5.After completing the selection, I chose not to add any core and clicked on 'Slice' it took me a while to save because it was choppingising and asked me to save it as what name so that it becomes an external package.
6. After that I closed the fractured tool and added the fractured mesh from the content browser to the geometry.
7. And I tested it....!
8. Noticed it didn't show up at all, as expected it actually was disappointing, then having watch through all tutorial I still couldn't figure out why it still and never worked - no good results. But managed to figure out myself that it was because the lack of lightning which I actually didn't add the light point infront of the map, it is crucial as it also becomes the part of geometry and it needs lights to give the visually present static, as it is a very easy and user friendly tool editor :P
9. Added some lights next to it and the results were perfect. It gave the best possible results from the PC configuration which I have :D
10. Success!
As you can see that there is some particle effect on the above image
The following steps showing, how the particles have been added and through which source:
1. The first step is easy, open the same fractured mesh, in which the fractures have been edited.
2. Then select and open the tab from > Fragment Destroy Effects....(2)
3. Click the 'Find object in content browser' Button next to (<= green button)
4. While the chunks break, I noticed that there was no inside material to support like the outer polygons, wanted it to be of the same material as the outer one so I managed to find the same material of that rocks' and placed the settings with the particles.
5. Double-Click the the particle, and chose the particle system to add some detail to the stone.
6. I wanted to add some more particle effect and extra detail to the stone, so I managed to add another destroying effect.
Some of the extra static meshes which I've added are some small static meshes across the mountain rocks just to visually look better in terms of reality wise.. as you can see next to the rock on your left, there are bits of them surrounding the map area making the map look realistic. As just the lights in my opinion wouldn't make it so real!! (Every lights near the mountain area side and the entrance are part of my work and my idea)
The above image's name is "S_HU_Mech_SM_Light" as default from the content browser itself
Thursday, 11 November 2010
Week 9: Few changes, decisions and making an open world environment
When as soon as I figured out that I couldn't achieve the melee attack in such a short term, not sure if I would get assessed for trying atleast but anyways decided to go along with the level of detail to the game by adding alot of stuffs into the game map such as Fractured Rocks (Stone blocking the cave) most of all the cinematic cameras around the map with good tweaks of matinee, Fractured walls and cinematic cameras inside the turret rooms.
I Have completed the first intro cinematic which, character are being brief introduced to the new user while playing the game for the first time: (Here are some following steps)
First I added a camera actor through the Actor classes menu from content browser:
Then placed it and positioned it in such a way that it shows the area around, this was first done by one of my team mate but it wasn't done properly with time and key frames so I took the initiative of doing this with a proper cinematic intro of all the characters.
Second step I've added (Highlighted) my part which I have shown here below in the image: (And the rest of the work was done by one of my team mate)
Third step I right clicked in the kismet area and selected 'New Matinee' and I added some main key frames and left a gap so that each player is briefly described of what his skills are:
The image above shows, that I've added a new camera group and placed the keyframes according to the brief of each player.
Next step I've chosen a key frame in which you can see the 'Player_Start' trigger is placed, showing the view from the cinematic perspective. (see below)
After completing the Keyframes the DirectorGroup needs to be set in the matinee only then the cinematic works or else it doesn't. As you can notice I've already placed it then right clicked on it, where I can still choose many options ranging from slow motion add new sound track. etc.
So what's next? After completing the unreal matinee you will notice the cinematic is now working, but I noticed one thing while the cinematic is playing the players can move, the HUD is shown. I wanted to look into it and research it a little bit and a look into the website which steve suggested on VLE as well as stressed in the lectures.
The site which I referenced on How to create a simple cinematic is from: www.3dbuzz.com which actually helped me a lot during the assessment period.
Here are some screen shots of the working in kismet which I have tried to initiate to Hide the HUD:
As you can see the 'Properties' above which has Hide HUD > ticked on
It also hides player on the process of playing the cinematics but I didn't want that to happen because wanted the characters to be introduced in the beginning of the game.
Here on the image above I've added a time gap duration for 10 seconds, meaning that when the cinematic is being played I don't want the HUD to be shown for 10 seconds. *simple* ! ^_^
I Have completed the first intro cinematic which, character are being brief introduced to the new user while playing the game for the first time: (Here are some following steps)
First I added a camera actor through the Actor classes menu from content browser:
Then placed it and positioned it in such a way that it shows the area around, this was first done by one of my team mate but it wasn't done properly with time and key frames so I took the initiative of doing this with a proper cinematic intro of all the characters.
Second step I've added (Highlighted) my part which I have shown here below in the image: (And the rest of the work was done by one of my team mate)
Third step I right clicked in the kismet area and selected 'New Matinee' and I added some main key frames and left a gap so that each player is briefly described of what his skills are:
The image above shows, that I've added a new camera group and placed the keyframes according to the brief of each player.
Next step I've chosen a key frame in which you can see the 'Player_Start' trigger is placed, showing the view from the cinematic perspective. (see below)
After completing the Keyframes the DirectorGroup needs to be set in the matinee only then the cinematic works or else it doesn't. As you can notice I've already placed it then right clicked on it, where I can still choose many options ranging from slow motion add new sound track. etc.
So what's next? After completing the unreal matinee you will notice the cinematic is now working, but I noticed one thing while the cinematic is playing the players can move, the HUD is shown. I wanted to look into it and research it a little bit and a look into the website which steve suggested on VLE as well as stressed in the lectures.
The site which I referenced on How to create a simple cinematic is from: www.3dbuzz.com which actually helped me a lot during the assessment period.
Here are some screen shots of the working in kismet which I have tried to initiate to Hide the HUD:
As you can see the 'Properties' above which has Hide HUD > ticked on
It also hides player on the process of playing the cinematics but I didn't want that to happen because wanted the characters to be introduced in the beginning of the game.
Here on the image above I've added a time gap duration for 10 seconds, meaning that when the cinematic is being played I don't want the HUD to be shown for 10 seconds. *simple* ! ^_^
Friday, 5 November 2010
Week 8: Making a Cube such that when pressed 'e' in the keyboard layout, it defines the object and carries as well as drops it.
At the very first I decided to make a Cube such that when pressed 'e' it carries/drops the object, for that I opened the editor first to play with some kismet and see how it works. Then applied some work over the week to achieve it with some more results such as: When pressing 'e' in front of the Cube, the object is lifted and when placed/dropped the cube on a platform (trigger volume) such that the door opens.
For that I have uploaded a small video on how I play the game in a small room, where I am destroying the Fractured Static Mesh and then lifting the cube and placing it upon a platform such that the door opens.
I first created a small room, inside it I added some static meshes and interpret actor into the persistent level. Opened Content browser and chose a static mesh called 'S_NEC_Trims_SM_Plain_CURd' and placed on the floor by clicking on Add Actor > then Add InterpActor: StaticMesh NEC_Trims.SM.Mesh.S_NEC_Trims_SM_Plain_CURd' I made a geometric door space between the walls and subtracted the CSG. Added more static meshes for the doorway (A simple Door) and a platform (Trigger Volume), Opened Kismet and right clicked chose New Matinee and I edited and added key frames to my movement track so that when the door moves from side to side. Again right clicked in Kismet and selected New Action > then Actor > Attach to Actor, then selected the 'used' link > and dragged it to Attach to actor's 'In' link. I had to choose a New Variable so I chose 'Player' as an object so I right clicked and and chose the option new variable > player > player. I had to do the same for the trigger 2, so that when I drop the cube into the platform it acts as though it has placed the cube on the platform as well as carry it. And for that I had to make the same Kismet as I made for Trigger_2.
Following the same I wanted to make Cube properties attached to character, I followed the same procedure by adding a trigger over the static mesh, connecting the 'Used' link from trigger_3 to attach to actor's 'in'. And chose the Target as 'Player' and attachment as 'Interpret actor'.
And I just had to figure out the door movement through Matinee and door movement attached to trigger. I right clicked and selected option 'New Event Using Trigger_3' > 'Touch'. And wanted to play my Matinee so I connected 'TriggerVolume_1 Touched' connected to 'Matinee' 'Play's link. after connecting it I wanted to reverse the process again so that when I've stepped away from the trigger volume, I wanted the door to close back. So I chose the 'Untouched' link from the TriggerVolume_1 and connected to Matinee's 'Reverse' link.
When testing it I noticed that I could delay the time and extend it more, through that I managed to increase the time and constructed the door for even longer period of time.
Here is the screen shot of my first level testing of cube and door:
For that I have uploaded a small video on how I play the game in a small room, where I am destroying the Fractured Static Mesh and then lifting the cube and placing it upon a platform such that the door opens.
I first created a small room, inside it I added some static meshes and interpret actor into the persistent level. Opened Content browser and chose a static mesh called 'S_NEC_Trims_SM_Plain_CURd' and placed on the floor by clicking on Add Actor > then Add InterpActor: StaticMesh NEC_Trims.SM.Mesh.S_NEC_Trims_SM_Plain_CURd' I made a geometric door space between the walls and subtracted the CSG. Added more static meshes for the doorway (A simple Door) and a platform (Trigger Volume), Opened Kismet and right clicked chose New Matinee and I edited and added key frames to my movement track so that when the door moves from side to side. Again right clicked in Kismet and selected New Action > then Actor > Attach to Actor, then selected the 'used' link > and dragged it to Attach to actor's 'In' link. I had to choose a New Variable so I chose 'Player' as an object so I right clicked and and chose the option new variable > player > player. I had to do the same for the trigger 2, so that when I drop the cube into the platform it acts as though it has placed the cube on the platform as well as carry it. And for that I had to make the same Kismet as I made for Trigger_2.
Following the same I wanted to make Cube properties attached to character, I followed the same procedure by adding a trigger over the static mesh, connecting the 'Used' link from trigger_3 to attach to actor's 'in'. And chose the Target as 'Player' and attachment as 'Interpret actor'.
And I just had to figure out the door movement through Matinee and door movement attached to trigger. I right clicked and selected option 'New Event Using Trigger_3' > 'Touch'. And wanted to play my Matinee so I connected 'TriggerVolume_1 Touched' connected to 'Matinee' 'Play's link. after connecting it I wanted to reverse the process again so that when I've stepped away from the trigger volume, I wanted the door to close back. So I chose the 'Untouched' link from the TriggerVolume_1 and connected to Matinee's 'Reverse' link.
When testing it I noticed that I could delay the time and extend it more, through that I managed to increase the time and constructed the door for even longer period of time.
Here is the screen shot of my first level testing of cube and door:
Thursday, 28 October 2010
Week 7: Continuation of (week 6) Player Melee Scripting on a custom character with custom animations.
I continued to find and search over the web for the custom character animations but I only got the weapon code from the forums and some video tutorials, but i managed to find some working how to deal it in kismet.
The AnimNodeBlendByPhysics has several functions to animate the whole sequence, I had to try and connect it and see if it works. and here is the script in the pawn class:
var AnimNodeSequence Strike1;
var AnimNodeBlend CombatNode;
simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp)
{
super.PostInitAnimTree(SkelComp);
Strike1 = AnimNodeSequence(SkelComp.FindAnimNode('AtkStrong'));
CombatNode = AnimNodeBlend(SkelComp.FindAnimNode('CombatNode'));
}
exec function PlayStrike()
{
`log("<<<<< play Strong Attack >>>>>>");
Worldinfo.Game.Broadcast(self, "<<< Play Strong Attack >>>");
CombatNode.SetBlendTarget(1.0f, 0.01f);
Strike1.SetPosition(0.0f, true);
Strike1.PlayAnim(true, 1.0f, 0.0f);
}
When I use a AnimNodeBlendList for my CombatNode (like in the image.)
I get an error in the log saying Accessed None 'CombatNode'.
Alternatively when I used a AnimNodeBlend instead (which doesn't give me enough room for sequences) I had no errors...but when I type 'playstrike' from the console, The log and broadcast play...but no animation plays.
Then I was asking to myself what am I doing wrong here?
I get an error in the log saying Accessed None 'CombatNode'.
Alternatively when I used a AnimNodeBlend instead (which doesn't give me enough room for sequences) I had no errors...but when I type 'playstrike' from the console, The log and broadcast play...but no animation plays.
Then I was asking to myself what am I doing wrong here?
I had referenced the skeletal anims at following:
But sooner i realised its a big mess and it takes very long time to make everything into account. So I finally decided to dig this in the third year for my final project assessment.
Thursday, 21 October 2010
Week 6: Continuation of (week 5) Player Melee animation Scripting (*Weapon Code)
I couldn't find any good forums or ideas on how to implement on the melee animation script but then I got into UDK forums itself, helped me in some ways but still had lots to do compared to the original work we fit into. I wanted to make a simple melee attack for just a single character, but it had a lot of crashes and bugs over the game engine and I figured that it was no use of embedding this semester with such features so I decided to continue this next year as a part of my final portfolio for my assignment.
Here are some bits of I've been working on a melee weapon, a lightsaber to be precise. I can't figure out how to make it play a 'melee animation' in third person. I figured I could make it do the "hoverboardjumpstart" animation, since it looks like a melee attack. I apparently had to animate the player instead of the weapon in order for this to work in third person. Here's the weapon code which I referenced:
class FFWeap_saber1 extends starwarsweapon;
var rotator pawndir;
var name AttachmentSocket;
var name WeaponAttachmentSocketName;
var SkeletalMeshComponent WeaponMesh;
defaultproperties
{
AttachFlashLightInterval=1.25
OnFlashLightInterval=0.65 // "WeaponLightSwitch"
AttachKolInterval=2.35 //
ReloadInterval=12.290000 //
bHasIronSights=false
WeaponSlincerOnAnim="SupON" //
WeaponSlincerOffAnim="SupOFF" //
//bKollimator = false //
EmptyReloadInterval=32.200000 //
RunStartInterval=0.200000 //
RunEndInterval=0.200000 //
ClipCount=39999 //
RecoilAmount=18
AmmoCount=9999 //
MaxAmmoCount=999999
WeaponRange=1
bPrimaryWeapon=True
PlayerViewOffset=(X=5.0,Y=2.5,Z=-4.5)
IronSightViewOffset=(X=-0.35,Y=-3.1,Z=-4.15)
IronSightViewOffset1=(X=2.35,Y=-3.15,Z=-3.3)
ReloadCameraAnim=CameraAnim'WP_MP5.CameraAnims.C_WP_MP5_ReloadEmptyMotion'
ReloadEmptyCameraAnim=CameraAnim'WP_MP5.CameraAnims.C_WP_MP5_ReloadMotion'
ReloadSound=SoundCue''
ReloadEmptySound=SoundCue''
FireCameraAnim(0)=CameraAnim''
InventoryGroup=3
AttachmentClass=Class'FFAttach_MP5'
InventoryGroup=2
AttachmentClass=Class'FSWeaponAttachment'
AttachmentClass=Class'attach_saber1'
WeaponFireSnd(0)=SoundCue''
WeaponPutDownSnd=SoundCue''
WeaponEquipSnd=SoundCue'Package_1.weaponsound.saberignite1_Cue'
FlashLightSwitchSnd=SoundCue''
MuzzleFlashPSCTemplate=ParticleSystem'WP_ShockRifle.Particles.P_WP_ShockRifle_Beam'
MuzzleFlashLightClass=Class'FF_MP5_MuzzleFlashLight'
MuzzleFlashDuration=0.5100000
aimerror=600.000000
// WeaponFireTypes(0)=EWFT_InstantHit
// WeaponFireTypes(1)=EWFT_None
FireInterval(0)=1.36190000
ShotCost(0)=1
Spread(0)=0.060000
// InstantHitDamage(0)=30.000000
// InstantHitMomentum(0)=1000.000000
// InstantHitDamageTypes(0)=Class'FFDmgType_MP5'
// RotChgSpeed=3.0
// ReturnChgSpeed=3.0
// EquipTime=0.7
// PutDownTime=0.5
// bInstantHit=True
// Begin Object class=AnimNodeSequence Name=hoverboardltjumpstart
// End Object
Begin Object Name=SkeletalMeshComponent0
SkeletalMesh=SkeletalMesh'CodaTest.CodaSwordShape'
// AnimSets(0)=AnimSet'CH_AnimHuman.Anims.K_AnimHuman_BaseMale'
// AnimTreeTemplate=AnimTree'CH_AnimHuman_Tree.AT_CH_Human'
//Animations=hoverboardltjumpstart
Translation=(Z=1)
Rotation=(Roll=-400)
Scale=0.9
Scale3D=(X=0.340562,Y=1.000000,Z=1.000000)
WeapAnimType=EWAT_Pistol
End Object
Components.Add(SkeletalMeshComponent0)
Mesh=SkeletalMeshComponent0
WeaponFireSnd[0]=SoundCue'Package_1.weaponsound.saberswing1_Cue'
// WeaponIdleAnims[0] = 'hoverboardjumpstart';
Scale3D=(X=0.340562,Y=1.000000,Z=1.000000)
MuzzleFlashSocket=MF
MuzzleFlashPSCTemplate=WP_ShockRifle.Particles.P_ShockRifle_MF_Alt
MuzzleFlashAltPSCTemplate=WP_ShockRifle.Particles.P_ShockRifle_MF_Alt
MuzzleFlashColor=(R=200,G=120,B=255,A=255)
MuzzleFlashDuration=0.33
MuzzleFlashLightClass=class'UTGame.UTShockMuzzleFlashLight'
CrossHairCoordinates=(U=256,V=0,UL=64,VL=64)
LockerRotation=(Pitch=32768,Roll=16384)
IconCoordinates=(U=728,V=382,UL=162,VL=45)
WeaponColor=(R=160,G=0,B=255,A=255)
bAutoCharge=true
RechargeRate=0.0
FireOffset=(X=12,Y=10,Z=-10)
WeaponProjectiles(0)=class'lightsabershot' // UTProj_LinkPowerPlasma if linked (see GetProjectileClass() )
EffectSockets(0)=MuzzleFlashSocket
EffectSockets(1)=MuzzleFlashSocket
MuzzleFlashSocket=MuzzleFlashSocket
MuzzleFlashPSCTemplate=ParticleSystem'WP_LinkGun.Effects.P_FX_LinkGun_MF_Primary'
MuzzleFlashAltPSCTemplate=ParticleSystem'WP_LinkGun.Effects.P_FX_LinkGun_MF_Beam'
bMuzzleFlashPSCLoops=true
MuzzleFlashLightClass=class'UTGame.UTLinkGunMuzzleFlashLight'
WeapAnimType=EWAT_Pistol
//begin object Name=KollimatorMesh
/// SkeletalMesh=SkeletalMesh'WP_MP5.Mesh.Kollimator_SK'
// scale=1.0
// FOV=55.0
//end object
//KollimatorAttachment=KollimatorMesh
//Begin Object Name=FlashLightComponent
// Begin Object Class=LightFunction Name=MyLightFunction
// SourceMaterial=Material'WP_MP5.Materials.M_FFWeapon_Flashlight_Ring'
// Scale=(X=240.000000,Y=240.000000,Z=240.000000)
// End Object
// InnerConeAngle=22.000000
// OuterConeAngle=30.000000
// Radius=600.000000
// Brightness=1.500000
// LightColor=(B=230,G=255,R=255,A=0)
// Function=MyLightFunction
// End Object
// FlashLightAttachment=FlashLightComponent
// Begin Object Name=PickupMesh
// SkeletalMesh=SkeletalMesh'WP_MP5.Mesh.WP_SK_MP5_3P'
// Translation=(Z=1)
// Rotation=(Roll=-400)
// Scale=0.9
// End Object
// PickupFactoryMesh=PickupMesh
}
Referenced from: http://forums.epicgames.com/
Here are some bits of I've been working on a melee weapon, a lightsaber to be precise. I can't figure out how to make it play a 'melee animation' in third person. I figured I could make it do the "hoverboardjumpstart" animation, since it looks like a melee attack. I apparently had to animate the player instead of the weapon in order for this to work in third person. Here's the weapon code which I referenced:
class FFWeap_saber1 extends starwarsweapon;
var rotator pawndir;
var name AttachmentSocket;
var name WeaponAttachmentSocketName;
var SkeletalMeshComponent WeaponMesh;
defaultproperties
{
AttachFlashLightInterval=1.25
OnFlashLightInterval=0.65 // "WeaponLightSwitch"
AttachKolInterval=2.35 //
ReloadInterval=12.290000 //
bHasIronSights=false
WeaponSlincerOnAnim="SupON" //
WeaponSlincerOffAnim="SupOFF" //
//bKollimator = false //
EmptyReloadInterval=32.200000 //
RunStartInterval=0.200000 //
RunEndInterval=0.200000 //
ClipCount=39999 //
RecoilAmount=18
AmmoCount=9999 //
MaxAmmoCount=999999
WeaponRange=1
bPrimaryWeapon=True
PlayerViewOffset=(X=5.0,Y=2.5,Z=-4.5)
IronSightViewOffset=(X=-0.35,Y=-3.1,Z=-4.15)
IronSightViewOffset1=(X=2.35,Y=-3.15,Z=-3.3)
ReloadCameraAnim=CameraAnim'WP_MP5.CameraAnims.C_WP_MP5_ReloadEmptyMotion'
ReloadEmptyCameraAnim=CameraAnim'WP_MP5.CameraAnims.C_WP_MP5_ReloadMotion'
ReloadSound=SoundCue''
ReloadEmptySound=SoundCue''
FireCameraAnim(0)=CameraAnim''
InventoryGroup=3
AttachmentClass=Class'FFAttach_MP5'
InventoryGroup=2
AttachmentClass=Class'FSWeaponAttachment'
AttachmentClass=Class'attach_saber1'
WeaponFireSnd(0)=SoundCue''
WeaponPutDownSnd=SoundCue''
WeaponEquipSnd=SoundCue'Package_1.weaponsound.saberignite1_Cue'
FlashLightSwitchSnd=SoundCue''
MuzzleFlashPSCTemplate=ParticleSystem'WP_ShockRifle.Particles.P_WP_ShockRifle_Beam'
MuzzleFlashLightClass=Class'FF_MP5_MuzzleFlashLight'
MuzzleFlashDuration=0.5100000
aimerror=600.000000
// WeaponFireTypes(0)=EWFT_InstantHit
// WeaponFireTypes(1)=EWFT_None
FireInterval(0)=1.36190000
ShotCost(0)=1
Spread(0)=0.060000
// InstantHitDamage(0)=30.000000
// InstantHitMomentum(0)=1000.000000
// InstantHitDamageTypes(0)=Class'FFDmgType_MP5'
// RotChgSpeed=3.0
// ReturnChgSpeed=3.0
// EquipTime=0.7
// PutDownTime=0.5
// bInstantHit=True
// Begin Object class=AnimNodeSequence Name=hoverboardltjumpstart
// End Object
Begin Object Name=SkeletalMeshComponent0
SkeletalMesh=SkeletalMesh'CodaTest.CodaSwordShape'
// AnimSets(0)=AnimSet'CH_AnimHuman.Anims.K_AnimHuman_BaseMale'
// AnimTreeTemplate=AnimTree'CH_AnimHuman_Tree.AT_CH_Human'
//Animations=hoverboardltjumpstart
Translation=(Z=1)
Rotation=(Roll=-400)
Scale=0.9
Scale3D=(X=0.340562,Y=1.000000,Z=1.000000)
WeapAnimType=EWAT_Pistol
End Object
Components.Add(SkeletalMeshComponent0)
Mesh=SkeletalMeshComponent0
WeaponFireSnd[0]=SoundCue'Package_1.weaponsound.saberswing1_Cue'
// WeaponIdleAnims[0] = 'hoverboardjumpstart';
Scale3D=(X=0.340562,Y=1.000000,Z=1.000000)
MuzzleFlashSocket=MF
MuzzleFlashPSCTemplate=WP_ShockRifle.Particles.P_ShockRifle_MF_Alt
MuzzleFlashAltPSCTemplate=WP_ShockRifle.Particles.P_ShockRifle_MF_Alt
MuzzleFlashColor=(R=200,G=120,B=255,A=255)
MuzzleFlashDuration=0.33
MuzzleFlashLightClass=class'UTGame.UTShockMuzzleFlashLight'
CrossHairCoordinates=(U=256,V=0,UL=64,VL=64)
LockerRotation=(Pitch=32768,Roll=16384)
IconCoordinates=(U=728,V=382,UL=162,VL=45)
WeaponColor=(R=160,G=0,B=255,A=255)
bAutoCharge=true
RechargeRate=0.0
FireOffset=(X=12,Y=10,Z=-10)
WeaponProjectiles(0)=class'lightsabershot' // UTProj_LinkPowerPlasma if linked (see GetProjectileClass() )
EffectSockets(0)=MuzzleFlashSocket
EffectSockets(1)=MuzzleFlashSocket
MuzzleFlashSocket=MuzzleFlashSocket
MuzzleFlashPSCTemplate=ParticleSystem'WP_LinkGun.Effects.P_FX_LinkGun_MF_Primary'
MuzzleFlashAltPSCTemplate=ParticleSystem'WP_LinkGun.Effects.P_FX_LinkGun_MF_Beam'
bMuzzleFlashPSCLoops=true
MuzzleFlashLightClass=class'UTGame.UTLinkGunMuzzleFlashLight'
WeapAnimType=EWAT_Pistol
//begin object Name=KollimatorMesh
/// SkeletalMesh=SkeletalMesh'WP_MP5.Mesh.Kollimator_SK'
// scale=1.0
// FOV=55.0
//end object
//KollimatorAttachment=KollimatorMesh
//Begin Object Name=FlashLightComponent
// Begin Object Class=LightFunction Name=MyLightFunction
// SourceMaterial=Material'WP_MP5.Materials.M_FFWeapon_Flashlight_Ring'
// Scale=(X=240.000000,Y=240.000000,Z=240.000000)
// End Object
// InnerConeAngle=22.000000
// OuterConeAngle=30.000000
// Radius=600.000000
// Brightness=1.500000
// LightColor=(B=230,G=255,R=255,A=0)
// Function=MyLightFunction
// End Object
// FlashLightAttachment=FlashLightComponent
// Begin Object Name=PickupMesh
// SkeletalMesh=SkeletalMesh'WP_MP5.Mesh.WP_SK_MP5_3P'
// Translation=(Z=1)
// Rotation=(Roll=-400)
// Scale=0.9
// End Object
// PickupFactoryMesh=PickupMesh
}
Referenced from: http://forums.epicgames.com/
Thursday, 14 October 2010
Week 5: How to export animations using ActorX and Maya & Player Melee animation Scripting
I tried to look into forums, searched many links and watched video tutorials for to find the character rigging and player animation scripts. I had to make a decision on how to export animations using ActorX and Maya, yet ActorX is another tool set editor plugin for Maya.
The steps involved in achieving how to export it in step by step is:
Install the Plug-In
- Downloaded the ActorX plug-in for Maya and copied it to plug-ins directory.
- Launched Maya, then enabled the plug-in (go to Settings->Plug-In Manager) by checking the "loaded" check-box. I Check "auto load" Maya.
Setting up your scene
The plugin will recognize both regular polygonal, textured geometry as well as skin clusters. The main requirement is that your mesh consists of a single hierarchy, linked together with joints. The exporter doesn't care what methods are used to animate the joints; the entire scene is sampled through the desired frame range, and at each frame the end result is what gets exported.
Be aware of the axes and orientation: typically, in Maya Y is up, X points to the right, Z points towards the viewer out of the screen. On export to a .PSK, the Y coordinate signs are flipped to comply with Unreal's handedness (relative orientation of axes.) In Unreal, the Z axis is up, Y points to the right, and X out of the screen toward the viewer. So you will usually need to adjust the mesh back to the desired orientation using the Mesh properties tab in the Animation browser - expand "Mesh", then expand the Rotation variable, which offers Pitch, Roll and Yaw - these are 16 bit integers, where 65536 equals a full 360 degree rotation.
Multiple materials can be used in the scene. They will end up as multiple material slots in the final mesh, and the order will be arbitrary by default, unless you force it by appending "skinXX" tags to the names of the materials - i.e., if the material names are Body and Head , renaming them to Body__Skin00 and Head__Skin01 will tell the exporter to obey that order when creating the .PSK file. In the Maya exporter, any characters following the double underscore will be cleaned up from the final .PSK. Maya has several levels of named materials and textures; the exporter retrieves the names from the "ShadingEngine" tags - that is, the first tag that comes up in properties when you double click on a shader in the multilister. This not only affects the order of slots for skeletal (and static) meshes, but can be used to influence rendering order as well.
Note that in Maya 5.0, the effect of IK handles on animation may not get exported correctly unless you ensure they have their "Sticky" attribute set.
Export the skeleton and mesh
- Loaded a scene containing the actor to export.
- Brought up the ActorX dialog by typing "axmain" in the MEL command window at the bottom of Maya.
- Filled in the various fields as follows:
- Output folder: enter the name of the directory where you wish to save the .PSK file. We recommend putting an "Unreal Files" directory under your actor's folder. The browse button is very useful here.
- Mesh file name: enter the name for the .PSK file. We recommend the name of your actor.
- Clicked the "Save mesh/refpose button. I did this with any frame of the animation. It is recommended that the model's reference pose be in a relaxed, spread eagle pose for ease of use.
Export the animations
There are two steps for exporting animations. First, I loaded the scene containing the animation(s) and "digest" an animation to read it into memory. I Repeated for as many animations as I could like to export this session. Second, I added these new animations to a PSA file and save it back out.
Digest an animation
- Loaded the file containing the animation.
- Brought up the ActorX dialogue by typing "axmain" in the MEL command window at the bottom of Maya.
- Filled in the various fields as follows:
- Output folder: same as for skeleton/mesh above.
- Animation file name: The same as the mesh file name (they will have a different extension to help to tell them apart). Entered the name of the existing .PSA file it asks if you wish to add this animation to that existing .PSA
- Animation sequence name: this is how the animation will be identified within the .PSA file.
- Animation range: specified the frames in the current scene that define this animation. (Format is `4-45'; number, hyphen, number)
Add your animations to a .PSA file
Once you have digested one or more animations you are ready to add them to a .PSA file.
- Brought up the "axmain" dialog.
- Clicked the "animation manager" button to display the animation manager.
- I added the animations to an existing .PSA file, click "Load" to load the .PSA file. (assumes that you already provided the name of the animation file in step 3b of the previous section. If not, then use the "Load As..." button)
- On the left in the "animations" list I saw the animations that you have just digested. On the right I would see any animations that already exist in the .PSA file. This will be empty if you are creating a new .PSA file.
- Select your new animations and click "-->" to add your animations to the output package.
- Click "Save" to save the .PSA file back out. (assumes you already provided the name of the animation file previously)
Additional MEL commands
axwritesequence: A quicksave command for skeletal animations which writes out the currently loaded scene, with its entire animation range as a single sequence with the sequence- and .PSA filename identical to the Maya source art filename.axprocesssequence: always saves the .psa to the source art folder, and otherwise works just like "axwritesequence".axwriteposes: Similar to axwritesequence, but dumps each frame in a single-pose PSA file, and attaches the frame number to each file and internal sequence name. Note: Some versions of the editor's animationbrowser importer don't properly handle importing/displaying single frame sequences.See also the new persistent "no popup confirmations" checkbox in thec"axoptions" window to make these commands effectively interaction-free.
Since Version 2.24, there's the
axexecute command line with options to perform both skin- and animation export entirely from the MEL command line with the following, mostly self-explanatory options, which can be combined in random order:axexecute [options and switches]- -path "[destination path]"
- -skinfile [.psk skin file name]
- -autotri
- -unsmooth
- -sequence [sequence name]
- -range [startframe] [endframe]
- -rate [rate]
- -saveanim
- -animfile [.psa anim file name]
Vertex Exporting
Simple old style, non-skeletal vertex animation data can be exported through a separate window, called up with "axvertex". Note that using vertex animation is discouraged - the skeletal rendering is more efficient, and has an interactive import art path into the animation browser in the editor, and offers far more options like rigidizing parts and LOD sprites, that vertex animated meshes don't have.The options in the popup window are self-explanatory - for documentation on the vertex animation art path, see UnrealVertexAnimation. (Referenced from: http://udn.epicgames.com/Two/UnrealVertexAnimation.html)
Troubleshooting
Plugin failing to initialize
Verified that I have the MSVCR71.dll installed on my system ( either in your Windows\System32 folder, or alongside the Maya plugin )- it can be downloaded from the ActorX page. It should also be present after installing the Microsoft .Net 1.1 framework redistributable, though there have been reports that despite doing this a manual installation of the DLL was still necessary.UV mappings come out wrong
There have been known instances of meshes that appear in Maya without any visible problems, showing up with (partially) corrupt UV mapping in the editor. This typically happens after they were saved from an older version of Maya and loaded into- and exported from a newer version of Maya. Usually Maya will give some compatibility warning when loading in the older version's art; even when your scene appears to looks correct, never ignore such warnings. It is always safest to set up your skin linkings, assign UV mappings and apply materials in the same version of Maya that you will be exporting your data from. If your textured art came from other packages (e.g. Motion Builder), try to re-convert it with tools meant specifically for the version of Maya that you will be exporting it from.
Subscribe to:
Comments (Atom)





