Monday, October 4, 2010

Crimson Crisis Inital Environment Builds

Reception Room

Decontamination Room

Missile Room

Control Room

Reactor Room

Containment Hall 1

Containment Hall 2

Containment Hall 3

Klaus' Office

Sunday, August 29, 2010

They Liiiiive!... Sorta

So I'm a bit late on this post, but here we are. The beginning of the AI is done, with a few bugs. No video right now but will probably be added later.


The Main AI

The EnemyController class will be the main driver of the enemy's AI. It will have all the major logic, state variables, and ranges.


The state variables are the same at the players, and include idle, moving, attacking, and alive (which was added to the player class as well). The same attack variables are used to control when to attack and the attack range boxes as the player. The only difference is what triggers them. The player needs input in order to attack, but the enemy will only attack when the player is at attackRange or less. There is a bug that when the person enters the range it will do the full combo even if the player moves out the range, but will be resolved sometime. Attributes and animation are handled just like the player's character.


Other ranges are used to control when to follow the player and when to stop approach. These are viewDistance and stopMovingDistance respectively. If the player is between these values, the enemy moves to the player.


What determines the direction to move is the Compass class. At this time, it only determines the direction to move. It always watches the player's transform object to determine distance and direction if within range. It will later evolve to check to see if the enemy can truly "see" the player using a "head point" and will determine if they can walk to them via a "foot point". Raycasting is the current idea, but will do some further research to be sure that this is the best way.


What's Up Next

Further revising to the Compass class is up next. When finished, the enemy should be able to "see" a player, and then move to it if possible. If not, it will stand and wait until it can. This shouldn't be needed unless we use gates or other major obstacles.

Sunday, August 8, 2010

Minor Update - AI

Been awhile since I posted something. With moving, starting a new job, and other things I haven't had much time to sit down and do some solid work. However, I was able to do some minor work recently, and should have a truly detailed post later this week.

As for this post, I was able to get some more of the core AI up and running. The character currently approaches and stops within certain distances, and when inside an attack range it will trigger an attack (which is just printing to the console now; real attacks will be put in later). The movement also doesn't consider if something is in the way of the enemy. It'll keep running into a wall or gate until it is out the way.

Some of the code is off and buggy, but it's a start. Hopefully by the end of the week I'll have a color-coded post up and maybe even a video.

Monday, July 19, 2010

Crimson Crisis Acrobat Zbrush Sculpt

Crimson Crisis Acrobat Zbrush Sculpt
Challenges:

Knife Belt - I had to decide wheter or not I wanted to give the knife belts actual geometry, or use normals and textures to make them. While giving the belt geometry would have made it standout, rigging the movement of the extra polygons would have been troublesome. I decided to use both techniques. I used normals/textures for the belt part, and gave the knives and belt strap geometry. The deformation of the legs would take care of the belt's movement, and the adding rigging the knife to the Knee Bone Joint would take care of its movement.
Pants Texture - I had to decide whether or not I wanted to use masks to make the pant's pinstripe texture or to do it by hand. I decided to do it by hand to give the pants are more imperfect and homemade feel.
Hair Sculpt - This was the first character I've made so far with long hair. I decided to keep with my simple aesthetic and just make it one whole piece of geometry. I then used stylized sculpting to add a layered feel.






Rising Sun/Danny Boes In Game Model

Sunday, July 11, 2010

Rising Sun/Danny Boes Zbrush Sculpt

Rising Sun/Danny Boes Zbrush Sculpt
Challenges:

Proportions - The stylized proportions was a challenge. Using an imagine plane guide with a character sheet in Zbrush was helpful. The head and face was the biggest challenge. It took a lot of tweaking and iterations to get the right feel. The forearms and calves took a few passes to get the right look. The chest and shoulders were actually pretty easy to get right.
Texture - The Dragon texture was really specific so it required a lot of tweaking. I will still look at the texture in photoshop.





Saturday, July 10, 2010

Crimson Crisis Brute In Game Model

Crimson Crisis Brute Zbrush Sculpt

Crimson Crisis Brute Enemy Sculpt
Challenges:
Body Type- This was the first time I have sculpted an overweight character. While muscular figures give you a definite form to map out your proportions, overweight figures have distorted proportions and lack muscular definition. This makes it more difficult to sculpt the flow of one surface form into another.










Cloth Walkthrough in Unity 3.0

Friday, July 9, 2010

Some Coding Changes

A smaller update than the previous ones. This is mainly about programming than anything else. No videos on this one, but some explanations and basic coding layout notes.


Character Attributes

There is now a CharacterAttributes class that is attached to the character's model. This has the values for health, attack, defense, speed, block, and parry that are found in the design document. There are also functions in there that does the calculations for determining the maximum damage an attack can do. An ApplyDamage function is in the class that takes in that calculated damage, and then alters it based on the defense of that character. Other functions are in place to calculate the total block time and recharge time based on the block attribute. These are currently not in use. There is also a Die function that takes care of basic death things, but will probably change later on.


Base Attributes

There is also a BaseAttributes class now which has public constant values that store all the base attributes. This way they can be accessed from anywhere in code and are not allowed to be altered at any point.


Character Collision

Some changes have occurred in the CharacterCollision class. This is placed on any colliders that will be used as attack regions. Inside this class is a few important functions:

AttackStarted: Called via a BroadcastMessage call from the PlayerController class (and most likely an EnemyController class later on). This turns on the trigger aspect of the collision field when an attack has started.

AttackEnded: Called via a BroadcastMessage call from the PlayerController class (and most likely an EnemyController class later on). This turns off the triggers when attacking has completed.

QueueAttack: There is a new class called AttackVals, which stores the duration of an attack and it's power. Every time an attack occurs this is queued up. This way, when an attack collision occurs, the duration is used to keep the trigger from applying damage each frame, and the attack power value is passed into the ApplyDamage call of the enemy. This allows for varying damages based on the attack.


Gate Attributes

Though we never talked about this, the current gate that is shown in the last programming post video could actually be a gameplay element. In slight preparation of this possibility, there is a GateAttributes class that has some basic similarities to the CharacterAttributes class. It has health and defense values, which are calculated the same way with the ApplyDamage function.


Fixed Camera

Lastly, there is a FixedCamera class. This has been around since the last post, but thought I'd post it here too. The class uses the LateUpdate call in order to reposition itself back to where it should be, and allows for left-right scrolling like in old games.


Next Up…

The next major thing that will probably be worked on in programming is the beginnings of AI. Not sure when this will be started, but it will hopefully be soon.


Crimson Crisis Brute Concept Art