Wednesday, October 24, 2012

Beta Build Wrap Up

With all of the animations tweaked and modified, I finished my side of the work for the beta build. However, since the team had decided that sound gathering and implementation would be a team effort, I worked on gathering sounds for the game. Previously, our revolver was the only sound that I had found and implemented into the game. The dynamite explosion sound that I also had was thrown out due to its irrelevance to the actual sound (it was a recorded sound capture by yours truly and when heard in the game was not all that great). I found some background music to play for our menu, and couple of our zones. I also had a combat track, but we were unable to implement that correctly before we had to wrap up the beta build.
We finally got around to packaging the game and with all packaging experiences, this one also gave us trouble. The first packaged version seemed to have been fine, but it would always crash when trying to load zone 3. It also got rid of some fog that we used to cover up empty black space in the level that we did not want the player to be able to see. After repackaging, we got a better version with all of our custom input for controls being utilized and most UDK controls omitted.
As mentioned in my last post, the game officially has a website along with a trailer up for it! I have the link for the website at the bottom of the page. You can find all of the developer information there as well as the links to my fellow team members blogs.

Here's the trailer though!

AFTU Official Website

This is the source I used for the sounds I gathered. They are from Partners in Rhyme and offer a great selection of free royalty free music/sound. You can visit them here.

Wednesday, October 17, 2012

Another Week of Animations

So I wrapped up the week with some more animations. In addition to the running and idle animations, I have completed the strafing left and right, running backwards, death, and firing animations. All the animations look pretty good. I had some slight trouble with the death animation however. I could not get the ranger to fall completely flat to the floor for the animation in 3DS Max. Taking some advice from a fellow team member, I had the ranger fall to his side instead. It seems a little dramatic, but it is a death animation so it's okay. Check the screenshots below of the animations.


This week the team is aiming to try to put everything together. We will be working on the website and trailer for the game so look out for the link coming pretty soon! Individually, I'm going to check and make sure all my animations are ported correctly and working in UDK with all the right characters. I also have to check all the reloading functions for the weapons as well. The sad thing is, we have a horse model ready, but not rigged and implemented. If I can finish doing the touch ups then I'll definitely get the horse in as well.

Thursday, October 11, 2012

Back to Animations

So the blood issue as I mentioned last week was corrected, and now you can enjoy the green and red blood fly all over the screen. Since that has been taken care of and I have the Alien Ranger model from our modeler, I can get to work on the animations for him.
I've been working on his running animations recently. I finished the forward and backwards one and now I have to deal with the strafing animations. Those, in my opinion, are the hardest to do. I had so much trouble with the strafing animations for our David Wayne model and the Alien Savage. Hopefully though since the ranger model is using a biped and not custom bones it should be easier.....hopefully.

Here's an idle and running forward picture for the model from 3DS Max. I did not want to create the GIF because I still don't know how to get those created well. But here's the pics:



Thursday, October 4, 2012

BLOOD!

As I stated last week, I have been working on the blood particle system for the human. With a little help, I was able to fix the problem that I was having. I finally have color to my blood! The particle system is working fine and emitting the right material with the right color as well. For the aliens, we were going to just use the same material, but alter the colors to most likely the stereotypical green color. Personally, I was thinking purple but the group decided on green so that's fine as well.
The next thing I need to work on is getting the particle system onto our character so the blood gets triggered on damage. Have been researching that somewhat but to no avail yet. I was told that it had something to do with the sockets for the character so I tried adding the "headshotgoresocket" near the chest area, but I still need to find out where to implement the particle system.

Colorful Blood follows:



The brush that was used to create these blood samples was taken from here. All credit for brush goes to them.



I also tweaked the reloading system as well, for the revolver at least. Before you could only reload once your ammo reached zero and the script would reload for you, but now the 'R' key can reload for you whenever you want. There are some bugs still with that as well, but that should not be a problem to sort out.



Thursday, September 27, 2012

Blending Achieved!

I have finally solved an issue that I had since I started animating the character! The blending aspect! Before I had issues with the character not blending animations correctly. For example, if the character initiated the reload animation and then started moving, the model would glide until the reload animation was finished which then would cause the run animation to initiate. The two animations would never blend and the same goes for any animation that only involves the top half of the body like shooting. However, I did some more research on the topic and found out a tiny bit of information that I was apparently missing. I had my set up right in the character animtree involving the two animation nodes: tophalfslot and fullbodyslot. It turns out just like my professor had stated, that I needed to specify the bones in the properties that the tophalfslot node would be initiating the animations from. Once I did that and changed the script files so that only the tophalfslots would initiate animations for the top half of the body (like shooting, reloading, etc) and the fullbodyslot took care of the full body animations, I was golden! Everything is blending well now. You can see an example of it in the screenshot below.** Just pay attention to the legs animating while the reload animation is playing.

Reloading and Running! YES!


I also started on developing the blood particle for human blood. I created the texture of the blood using a blood brush that I downloaded from a source and then imported that into UDK to create the material. The material is not the best it could be, but it is sufficient. I quickly ran into a problem that I am still unsure as how to solve though. The material is correct but the particle system is spitting out a black version of the material. I have no idea why but I'm currently looking into it.

Wednesday, September 19, 2012

More Animations and A Little Scripts

This week I worked more on trying to make my animations look a little better. Because our main character has custom bones for his skeleton, it's really hard to show the weight impact on the feet when the player is running. I tried to implement that sort of animation to the best that I could, but it's not looking that good. It gives him more of a skiing animation then an actual run.
Another adjustment I made was the reload animation for the revolver. The previous animation was a bit of a mystery to the player because from their view all they say was the hand moving to the front of the character's body. I changed this to make the character take his left hand and act as if he's reaching into his pocket each time and putting a bullet into the revolver. This animation looks much better and is definitely more obvious in a visual sense as to show what exactly the character is doing.
One issue I ran into while implementing the reload animation was that when the reload animation was called, the player could actually hit the fire button and cause the fire animation to occur which would break the reload animation before it finished. This issue was not too difficult to solve. It just took some digging around in the weapon and pawn class. What I did was create the bool variable bIsReloading in the base UTWeapon class, and I check that if it's true in the pawn class then prevent the firing animation from taking place. This will be helpful when the rifle is implemented because the same check will prevent the rifle reload animation from being broken as well. You can see the code snippetof the StartFire function below from the pawn class.

simulated function StartFire(byte FireModeNum)
{
    local UTWeapon Weap;

    Weap = UTWeapon(Weapon);
    // firing cancels feign death
    if (bFeigningDeath)
    {
        FeignDeath();
    }
    else
    {
        if(!Weap.bIsReloading)
        {
            super.StartFire(FireModeNum);
        }
    }
}

Wednesday, September 12, 2012

Arrival of the Beta Phase!

Hey everybody, I'm back to blogging and as you can tell from the title we are officially in the beta phase for this project before we reach our deadline. The team got together and set up a new statement of work so that each of us know what we are responsible for by the end of the beta phase.
Our first and foremost concern was to address the bugs that were compiled from our bug testing session. I guess I forgot to mention that we had a bug testing session after our alpha phase. But anyways, the bugs were are main concern. One of the bugs that I worked on was disabling the fire animation if the player is in a state where he should not be firing at all. This wasn't that tough and it mainly involved me implementing the reload animation which is also what I did. I created the animation and coded a reload function for our revolver with some help from the web on how to exactly go about coding it. You can see that code below. The issue at this point was making sure the player could not initiate the fire animation during the reload animation because that breaks the reload animation. This was not too difficult to resolve because I just needed to check a bool variable that checked if the weapon was currently reloading, and if that variable was true then the firing and its animation will not initiate unless that variable changed into being false.
Looking forward, I'm going to create some reload animations for the repeater rifle and the laser rifle. I also need to get the dynamite throw animations and possibly damage animations created so that they could be implemented coming up.

simulated function bool DoOverrideNextWeapon()
{
    if(clips == 0)
        super.DoOverrideNextWeapon();

    return false;
}

simulated function WeaponEmpty()
{
    local AFTU_Pawn P;

    foreach AllActors(class'AFTU_Pawn',P)
    {
        Player=P;
        break;
    }

    if(clips > 0 && !bIsReloading)
    {
        WorldInfo.Game.Broadcast(self, "Reloading");
        bIsReloading = true;
        SetTimer(2.5, false, 'Reload');
        Player.FullBodyAnimSlot.PlayCustomAnim('DW_Reload_Revolver', 0.5, 0.2, 0.2, false, true);
        return;
    }

    super.WeaponEmpty();
}

function Reload()
{
    bIsReloading = false;
    clips = clips - 1;
    AddAmmo(30);
    ClearTimer();
}

Wednesday, August 29, 2012

Alpha Complete

Well it's been a great 8 week session for the Alpha phase for Arrival: From the Unknown. The team did a great job wrapping everything up for completing the Alpha build. There were a couple of issues that we were not able to completely resolve. The AI code was pretty buggy because all the Savages were moving into one location. Another particular problem that I spent trying to correct was the melee animation. I solved the first issue which was that the Savage would go into the attacking state when approaching the main character, but the animation would not play. This was a simple fix in code because I discovered the call in UnrealScript to the animation was spelled incorrectly. The second problem was that the melee attack was not doing any damage to the player. You can see parts of the AlienMelee.uc file that governs how the melee is implemented below. It's what I was staring at and debugging profusely. In the end, we decided to just present with the latest build with the animation playing but with no damage being done.

class AFTU_AlienMelee extends UTWeapon;

var() const name SwordHiltSocket;
var() const name SwordTipSocket;

var array<Actor> SwingHitActors;
var array<int> Swings;
var const int MaxSwings;

//Instigator.mesh.GetSocketWorldLocationAndRotation ('WeaponPoint', traceStart);
//Instigator.mesh.GetSocketWorldLocationAndRotation('meleesocket', traceEnd);

function RestoreAmmo(int Amount, optional byte FireModeNum)
{
Swings[FireModeNum] = Min(Amount, MaxSwings);
}

function ConsumeAmmo(byte FireModeNum)
{
if (HasAmmo(FireModeNum))
{
Swings[FireModeNum]--;
}
}

simulated state Swinging extends WeaponFiring
{
simulated event Tick(float DeltaTime)
{
super.Tick(DeltaTime);
TraceSwing();
}

simulated event EndState(Name NextStateName)
{
super.EndState(NextStateName);
SetTimer(GetFireInterval(CurrentFireMode), false, nameof(ResetSwings));
}
}

function ResetSwings()
{
RestoreAmmo(MaxSwings);
}

function Vector GetSwordSocketLocation(Name SocketName)
{
local Vector SocketLocation;
local Rotator SwordRotation;
local SkeletalMeshComponent SMC;

SMC = SkeletalMeshComponent(Mesh);

if (SMC != none && SMC.GetSocketByName(SocketName) != none)
{
SMC.GetSocketWorldLocationAndRotation(SocketName, SocketLocation, SwordRotation);
}

return SocketLocation;
}

function bool AddToSwingHitActors(Actor HitActor)
{
local int i;

for (i = 0; i < SwingHitActors.Length; i++)
{
if (SwingHitActors[i] == HitActor)
{
return false;
}
}

SwingHitActors.AddItem(HitActor);
return true;
}

function TraceSwing()
{
local Actor HitActor;
local Vector HitLoc, HitNorm, SwordTip, SwordHilt, Momentum;
local int DamageAmount;

SwordTip = GetSwordSocketLocation(SwordTipSocket);
SwordHilt = GetSwordSocketLocation(SwordHiltSocket);
DamageAmount = FCeil(InstantHitDamage[CurrentFireMode]);

foreach TraceActors(class'Actor', HitActor, HitLoc, HitNorm, SwordTip, SwordHilt)
{
if (HitActor != self && AddToSwingHitActors(HitActor))
{
Momentum = Normal(SwordTip - SwordHilt) * InstantHitMomentum[CurrentFireMode];
HitActor.TakeDamage(DamageAmount, Instigator.Controller, HitLoc, Momentum, class'DamageType');
}
}
}

simulated function bool HasAmmo(byte FireModeNum, optional int Ammount)
{
return Swings[FireModeNum] > Ammount;
}

simulated function FireAmmunition()
{
StopFire(CurrentFireMode);
SwingHitActors.Remove(0, SwingHitActors.Length);

if (HasAmmo(CurrentFireMode))
{
super.FireAmmunition();
}
}

defaultproperties
{
Begin Object class=AnimNodeSequence Name=MeshSequenceA
End Object

// Weapon SkeletalMesh
Begin Object Name=FirstPersonMesh
SkeletalMesh=SkeletalMesh'AFTUClaws.Claws'
//AnimSets(0)=AnimSet'WP_ShockRifle.Anim.K_WP_ShockRifle_1P_Base'
//Animations=MeshSequenceA
Rotation=(Yaw=-16384)
FOV=60.0
End Object

AttachmentClass=class'AFTU.AFTU_AlienMeleeAtachment'

Begin Object Name=PickupMesh
SkeletalMesh=SkeletalMesh'AFTUClaws.Claws'
End Object

MaxSwings=2
Swings(0)=2

MaxAmmoCount=1
AmmoCount=1

ShotCost(0)=0
ShotCost(1)=0

bMeleeWeapon=true;
bInstantHit=true;
bCanThrow=false;

FiringStatesArray(0)="Swinging"
FiringStatesArray(1)=None

WeaponFireTypes(0)=EWFT_Custom
InstantHitDamage(0)=35

}



The next 8 weeks are going to be great. All development and no documents to be created. Definitely excited to begin the Beta phase. I'm going to try to be more efficient and try to make this game as complete and playable as possible. Look out for the official website for Arrival: From the Unknown to be up shortly. You can follow our team's development there and keep track of our progress. I'll put up a link in the future so see you guys then!

Tuesday, August 21, 2012

Preparation for End of Alpha

The end of the Alpha stage is fast approaching and most of the importing is finished. I worked on the Alien Savage enemy animations all week and also tweaking some of our game design documents as well. I have finished the melee class animations and they look pretty good. I ran a nice little test in UDK with a simple wander AI set to our Savage. I have screenshots of those below and you can also see the revolver in those screenshots. Our team has ported that into UDK and it's also performing fine, but still needs minor adjustments.
My next agenda is working on a little flash animation, gathering sounds, and possibly rigging the gunsmith. I need some coffee....
The Savage alien lining up with the iron sights.

Just wandering around.


Thursday, August 16, 2012

Character Ported to UDK


The character has finally been imported into UDK. I was having a lot of trouble getting the animations implemented correctly. I ran into an issue where the model's arms were deformed and that just looked horrible. Luckily, Hoa solved that problem which saved us a lot of time from having to re-rig the model. I imported our character in now, and he has all of his animations in there. I set up the AnimTree and edited some script files to have our character be our pawn that gets loaded up with his own AnimSet, AnimTree, and as well as his own PhysicsAsset. Take a look below for some of the screenshots.You can see that the HUD has also been implemented by our fellow group members. The two animations not in operation as of yet is the firing and long idle animation (the latter is the one I posted last week).
I hate to admit it but I do believe I'm a little behind on my work. Need the enemy animated and ported into UDK as well as find some sound files. Definitely crunch time now.....
Jump animation
Running animation

Wednesday, August 8, 2012

Animation Week

This week I brought our main character to digital life! All of the primary animations for the alpha stage have been completed. I worked on him running forward/backward, strafing left/right, staying idle, and also some shooting animations. I'm very satisfied with all of the animations except the strafing. The hardest animation to rig was the strafe. The legs just did not want to cooperate with me. I don't know if it was because of the way the bones were rigged or just my inexperience of working with created bones rather than a biped.
Nonetheless, the rest of the animations were pretty good. I'm just about ready to import the character into the UDK to test him and the animations out. Check out the idle and running animations below.
**NOTE** First time creating a GIF to upload to my blog. The trail you see the animations are leaving behind are NOT part of the animation!!***
Idle State Animation
Running Animation

Monday, July 30, 2012

Coding, Coding, & More Coding

This week has consisted of a lot of coding. Using the WOTgreal Editor, I started coding for the game type. I've finished the game info class, the player controller class, and the pawn class. The hardest code to set up was the camera. I was initially going to use some of my old code to implement this, but this posed some unseen problems with the class that I was extending from. Due to that issue, I wasn't able to implement the camera inside the player controller and pawn class as I had hoped to. Instead, I decided to create a separate camera class that handled all of the camera-related actions. Below I have the screenshot of the third-person camera for our game.
Screenshot of the camera perspective
Now that I have that scripting down, I can focus in on the character animations. The main character model has been modeled and rigged so now it's my turn to basically bring him to life, digitally that is.

Friday, July 20, 2012

Wrapping up the Preliminary Stages

As we our completing our second week, we've just about finished up with all of the documents needed before development. Our 3D modeler, Hoa, has models of the main character and enemy characters in their final stages already. So we are already ahead of schedule.
It's just about time for me to get my hands dirty with the coding. I've been researching around and trying to find some references I could use for our game's source code. With all the coding I have ahead of me, I still need to find some time to capture and record some audio files that are also needed. None of our members are especially strong in the audio department, so we have decided to divide those responsibilities up between a couple of our members rather than just one member. 

Monday, July 16, 2012

Planning It All Out

Arrival: From the Unknown is the title of the newest project by Overseer Development. Every game idea starts out with a concept design of some sort. Our team has laid out the basic groundwork for our AFTU project. We've covered our initial start and have begun planning out other documents that need to be set up before the development stages begin.
Our schedule for the next 8 weeks has been roughly created, so we all know when and where to meet for our work. We've started our game design document and already have our rough version of it almost complete.
I have begun work on the visual representation of our menu system and then will need to prepare for some coding in my near future. Definitely looking forward to starting the development stages for this project!