Thursday, December 15, 2011

Progress Update 12/15/2011

The thesis presentation was today and due to the sharing of the screen the application runs extremely slow. That why I decided to create a couple of youtube videos demonstrating the application. The first one shows a full run of the game with the player recovering health through a potion, rescuing the prisoner and escaping. The second one show the player dying for standing to long on the earthquake zones and the third one from getting to much damage from the lava pits.





The progress on the paper is going great, with the introduction, background review and methodology completed. I'm working on the results part (creating graphs from the data collected from the survey).

Wednesday, November 30, 2011

Progress Update 11/30/2011

The blog has gone a little bit silent since the programming of the application was put on hold in favor of the paper, but this past weekend I programmed several new features into the game.

The earthquake mechanic is on place now, once the player leaved the designated gameplay area, the camera shakes and a countdown start form him to return to a safe zone. If he stays there, the part of the level along with the player, fall down.

I created a model for the lava pits, since I didn't have any success on finding one pre-made. I'm integrating this one to the level layout that I have defined at the moment. They already affect the players health and the character changes animation according to it.

As for the custom characters and NPC, I already have some rigged models that I downloaded from Trubosquid and I'm just testing different animations with them, to see which one exports better. The recollection of the sounds effect is taking place at the moment too!

As it can be seen, all the mechanics are implements I'm just adding my custom effects and models in order to test it.

As for the paper, Introduction and Literature Review are done (with the references and images). At the moment I'm finalizing the methodology!

Monday, November 7, 2011

Progress Update 11/07/2011

This is a post that contains two week of updates, since last week I didn't get to much time to work on the project.

This weeks the level implementation has been taking most of my time. The specific mechanics for it have been already programmed, for example: position detection for the character, checking if he is on top of a lava crater or an earthquake area. Also his health is affected according to this factors.

The feature that I'm currently working on right now, is the earthquake simulation (with the sacking of the camera) and the actual game-ending conditions for the game. I'm still deciding if the game should just end when touching the NPC who is in need of help or if the player should actually escape with him.

Defining and implementing the definitive level layout is the task that I'll be preforming this week, looking also into the custom models and textures needed for the level (this last activity would probably be performed the following week).

I did some changes to the schedule for in order to reflect this changes, which mostly consist on reducing the time to elaborate the survey an actually doing it. Here's the updated schedule for this week:

Donwload Thesis Schedule Update 11/7/2011


Wednesday, October 26, 2011

Progress Update 10/26/2011

This week update concentrates a little bit on what I want to accomplish with the test scenario that is beign created. Each one of the testers should be able to understand the mechanics and the goal of the level through the animation, sound and level scripting inlcuded. I'm alredy thinking on the questions for the survey in order to be sure that each one of them will be undestandable and applicable on the test level, according to each one of the mechanics included.

I have also done some research on how these methods are used in today games, in order to start gathering background information for the actual paper. There are tons of games that actually use this kind of hudless approach but each one of them has their own way of implementing it. Some first person shooters for example, choose to show all the gun information directly on the gun model, adding little indicators to it. Old Resident Evil Games used the animation on the character to show the health of the player.

As far as the technical aspect, the .X files can now be included in the level and the sound is alredy in the project, but I'm still looking to include sounds according to events in  the game.

This week I'll start the actual implementation of the scenario and also will look around for some 3d models or props for the level online.

Here is the update schedule for this week:

Donwload Thesis Schedule Update 10/26/2011




Monday, October 17, 2011

Progress Update 10/17/2011

The work on the lighting framework has been finished. I managed to separate the lighting system from the framework, since it was inside the main function, in order to be able to include as much point or directional lights as required by the final scenario.

I have attached my code to load .X files, and it is working; but it is giving some problems with loading the textures. I won't mark the activity finished until it is completed, which will be on Wednesday at the latest. Also the work to integrate the sound library that I used on the previous project will start this week.

As I mentioned last week, I already have an idea for a scenario that will utilize animation and level scripting to guide the player through it. The main idea is a character (the player) trying to rescue an NPC in an environment that is divided in different tiles or areas, which can cause damage or heal the player. Also certain zones in the level will cause instant death, previously warning the player about the danger.

The animation will be used in the following way:
  • The walking and standing animations will reflect the health of the player.
  • Animation of the NPC will reflect its need for help.
Level Scripting:
  • The tiles in the ground will reflect in some way that they are bad or good for the player (For example fire effect or Health kits).
  • NPC's sound cues will vary depending on how close is the player to him.
  • Location of the player will trigger events reflecting danger in the instant death areas (falling rocks for example).
At the moment this is the very simple scenario idea that I have. I'm pretty sure that more ideas will come out as I'm working on it but as for now, I think is better to keep it simple and doable. I'll see how the time constrains work at the end.

Here is the update schedule for this week:



Wednesday, October 12, 2011

Progress Update 10/12/2011

The update for this week was done a little bit later than usual, due Thanksgiving weekend. My apologies for the delay!


The two activities for this pass week, according to the schedule, were character and camera movement and placement. Character movement is done, allowing the default rigged character to move around the plane while playing the walking animation.


Also after several attempts to actually use the camera class that came with the source code to create a 3rd person perspective, I decided to switch back to my camera code that I created for my previous project, which will follow the character for a 3/4 perspective. My camera code is now integrated with the project.


The activities for this week, inclusion of static meshes and level creation are under way. The integration of my code to include .X files has begun. As for the creation of basic level, I decided to start working at the same time on the definition of the scenarios, so I can design the final one, instead of wasting time of creating a test one (the basic plane that I have right now, will do).


As for the scenarios, I'm planning on including location based level scripting, in which certain events will trigger according the location of the player. I already have a good idea in which I will be able to integrate animation and level scripting as way to transmit infromation to the player. I'll finish defining it this weekend and post it in the next upgrade so we can discuss having a big scenario instead of two small ones.


I'm uploading the schedule with the status of the activities as today, including changes to the conception of the scenarios. Their actual implementation of them will be changed in accordance to what we decide next week.


Download Thesis Schedule Update 10/12/2011

Monday, October 3, 2011

Progress Update 10/03/2011

Each Monday an update will be made, reporting in the actual progress of the project based on the final draft of the schedule at that time. Since this is the first one done, I will address the advance done until the date specified in the title from the beginning of the project.


The research on animation methods on DirectX lead me to Keith Ditchburn's website (Toymaker.info) and the two options explained on it to run animations on DirectX. For more detail on this, please check older posts. The source code for the "animation player" was selected as the best option, since it would allow to actually read the code and learn about its implementation. Several modifications has been made to it that would make the additions of extra elements to it easier.


Character movement is being implemented right now. The default model that came with the source code has now moves forward or back in accordance to the inputs of the keyboard, while displaying the corresponding animation for walking and standing still. The camera has been set to a position that actually allows the player to see the character movement. The goal at the end is to allow the camera to move along with the player and allow turning / free-roaming movement around the default base plane placed in the scene right now. By the next post, these two features should be finish.


The schedule has been update with colours over the names of the tasks, reflecting its progress:


Blue = "Finished"
Green = "On Time"
Yellow = "Possible Delay"
Red = " Behind Schedule"


The updated schedule for this week can be downloaded form the link below.


Schedule Update 03/10/2011

Thesis Schedule (Ver. 1.0)


The first draft for the thesis schedule is done and can be downloaded from the link provided below. New versions of it will be created and uploaded as needed in accordance to the project progression.

Each one of the task has been assigned a priority in accordance to their importance of the final result in the research.

The schedule has been created in a way that would allow the application to be done by the first days of November, allowing the remaining time until December to run some test and write the actual results in the paper.



Download Thesis Schedule Ver. 1.0

Thursday, September 15, 2011

DirectX Animation Using The .X File Format

During the month of August, I've been doing research on how the animation works in DirectX, since I think this part will be the most difficult of the project.

The first thing that I researched was the .X file. This is the format that is used by DirectX in order to use meshes in the scene and stores all kind of information about it, like the specifications of the material and the textures used and the animation information.

While doing some research online, I found Keith Ditchburn's website (Toymaker.info). Here I found an example of the source code needed in order to implement an animated .X file and also a library that could be added to the project in order to use that functionality. Since I wanted to learn how the process is actually done, I downloaded the source code and started looking into it and doing modifications, in order to use it with my DirectX code from previous projects. Here are some important notes on how the process works:

Everything in the .X file is stored in hierarchical method. This hierarchy consists of frames containing matrix and mesh data for different parts of the model. For example: If we have a model, the body will be the top frame and each one of the parts of the body below it; each one with its own matrix and mesh data.

In order to preserve this hierarchy when loading the mesh, the D3DXLoadMeshHierarchyFromX function has to be used. Before it is called, we have to create functions that would allow us to create/destroy frames and mesh containers. We do this in a separate class, which will be in charge on handling the memory allocations for these elements.

When we render the hierarchy, we start by the top frame using the created DrawFrame function that would be recursively called for each one of the sibling and child frames.

The animations can be created by altering the matrices of the frames, which will alter the other ones in the hierarchy. The animation controller determines the position for each one the the frame matrices according to provided time. The frame controller will alter the frame matrices and then the hierarchy of the frame is updated, using these new matrices to create the new combined frame matrix. Since switching from one animation to the other one abruptly can look bad, we use tracks in order to make it look like a normal transition. These tracks will fade out the playing animation and fade in the new one.


When Skinning (for which each one of the matrices associated to the frames are called bones) geometry bending is used between the mesh and skeleton hierarchy in order to transform the mesh vertices. Every time a bone is altered, it will modify the vertices from the mesh dependent on it. Each one of this bones has a matrix that rotates or translates it according to the father (this is known as "bone space"). In order to transform this matrix to "character space" we use the combined matrix of the parent. Finally, in order to connect the bones to the mesh we use the bone offset matrix.

Final Bone Matrix = Bone Offset Matrix * Bone Combined Matrix

The DirectX function UpdateSkinnedMesh will update the mesh according to this matrix and the provided set of weights for the bones (which define the vertices affected by the bones).

At the moment I am running test with this concepts and transforming this source code in order to merge it with my previous projects. I will post updates for these tests and modifications.

References:

Ditchburn, Keith (2004 - 2010), "X File Hierarchy Loading", Toymaker.info
 [Accessed August - September 2011]

Ditchburn, Keith (2004 - 2010), "XAnimator - X File Animation Loader - Player", Toymaker.info
 [Accessed August - September 2011]

Monday, August 1, 2011

Getting Started!

This blog will show the progress of my thesis project created for the MS in computer Games Technology, allowing easy review from the University of Aberday Dundee and an organized storage of the information and resources gathered during the project.

The subject of the thesis project is "“Evaluation of Non-Traditional Methods for Displaying Character and Gameplay Information to the Player”, researching on how alternative methods like animations or level scripting, can transmit information to the player, without the use of a HUD.

The first steps will be looking into the animation systems on DirectX (at the moment, this will be the platform where the test will be performed) and the creation of the animation parser.

Each week, a new update will be posted.