Monday, October 21, 2013

Avatar Trials: Ninja Uprising is now one of the Top 250 games All-Time on XBLIG!



Another statistics update!

There are now almost 3,100 games in the Xbox Live Indie Games (XBLIG) Market and Avatar Trials: Ninja Uprising is now one of the Top 250 Best Selling All-Time (249 of 3,098 to be exact).

Thank you to everyone who has downloaded the free trial, and / or purchased our game.

Saturday, August 17, 2013

Avatar Trials: Ninja Uprising, Now a Top 300 Best All-Time Selling on XBLIG!



There are now 3,040 games in the Xbox Live Indie Games (XBLIG) Market and Avatar Trials: Ninja Uprising is now one of the Top 300 Best Selling All-Time (288 of 3,040 to be exact).

Thank you again to everyone who has downloaded the free trial, and / or purchased our game.

Wednesday, July 17, 2013

Avatar Trials: Ninja Uprising, Now a Top 350 Best Selling All-Time Game #XBLIG!



Avatar Trials: Ninja Uprising is now one of the Top 350 Best Selling All-Time Xbox Live Indie Games (XBLIG). In just over a month we climbed 150 spots, and I hope we continue to climb.

Thank you to everyone who has downloaded the free trial, and / or purchased our game.

I hope the XBOX One will allow for Indie developers to publish games on their new console when it is released.

Tuesday, June 11, 2013

Get Unity iOS and Android Licenses FREE!

For any Students or Indie developers out there, Unity has dropped the price of their iOS and Android licenses to... wait for it... FREE!



All you need to do is go to Unity's website and download the latest free version.

Also if you are interested in upgrading to the Unity Pro, instead of an up front cost of $1500, you can get it for $75 a month for 12 months ($600 savings).

Avatar Trials: Ninja Uprising, Now a Top 500 Best Selling All-Time #XBLIG!



Avatar Trials: Ninja Uprising is now one of the Top 500 Best Selling All-Time Xbox Live Indie Games (XBLIG). We climbed into the top 500 on 06/09/2013, and are continuing to climb up the list.

Thank you to everyone who has downloaded the free trial, and / or purchased our game.

Sunday, May 5, 2013

Avatar Trials: Ninja Uprising Passes 1200 Sales #XBLIG



We're incredibly honored to announce we've past 1200 sales of Avatar Trials: Ninja Uprising.

To celebrate, we are having another contest to win a copy of the game!

To enter click on the following link:
Facebook Contest

Wednesday, May 1, 2013

Avatar Trials: Ninja Uprising Passes 500 Sales #XBLIG



We're incredibly honored to announce we've past 500 sales (almost 600) of Avatar Trials: Ninja Uprising.

To celebrate, we are GIVING AWAY a copy of the game!

To enter click on the following link:
Facebook Contest

We want to know - How does your avatar represent YOU?

Friday, April 26, 2013

Avatar Trials: Ninja Uprising, #XBLIG releases today!

04/26/2013



In less than 24 hours after putting our game up for review on Tuesday night in the XBLIG, our game has passed and is going to be released today!

Today at 2:30pm we will be hosting a live podcast where we will celebrate the release of our game, as well as the other two senior capstone games from the University of Utah. By joining live you will be able to participate via twitter to possibly win a free copy of the game. We will be holding competitions with each others games, as well as talking about our dev process from concept to design. Exclusive looks at concept and alpha gameplay will be shown!

Be sure to join anytime from 2:30pm to 6:00pm whether at work or at home!

https://www.facebook.com/events/608144885880746/?ref=22

Tuesday, April 23, 2013

EAE FEST 2013

04/23/2013

Today was the first day of EAE FEST 2013 here at the University of Utah.



All of the EAE Undergraduate and Master Students had their games on display. Our game was set up on three XBOX 360's available for students, faculty, family, and media members to come and play. We had a great time showing off our game and allowing people to play it. Some people enjoyed it so much that they would come back later and continue playing it some more trying to beat the levels they had yet to complete.



Here is the media coverage of the event:

Deseret News: Article
FOX 13: Video and Article
KSL: Video and Article

Some of our team near the end of the event:

More Lag

04/23/2013

Tonight we can submit our game for review again in the XBLIG. But first thing this morning our Engineering Lead contacted me stating that he was noticing lag in level 3. I told him that I thought I had resolved that. He mentioned that the katana on the players back was twitching as the player ran. I told him I was on my way to the lab at school and would test it as soon as I got there.

As soon as I got to the lab and got everything setup to test I was able to confirm the same thing he had observed. I must have missed it when I was testing for lag the night before, because I was more concerned about the players movement lagging. Our Engineering Lead tried an old build of the level and it did not have the lag so he came up with a hypothesis that it could be we had too much geometry in the current version of the level. I started testing the hypothesis by deleting different objects, and he was right. After I deleted enough models the lag disappeared. So I attempted to leave the level intact as much as the level designer had intended. In the end I was able to leave the level almost the same, just with some fire pits removed and some crates removed. In doing so the lag was completely removed.

Monday, April 22, 2013

Official Trailer Released

04/22/2013

Today our official trailer for our game has been released. Don't laugh at the death at the end of the video, because I am the one playing in the gameplay footage:



We still have one day until we can submit our game for review again, so I have been playtesting trying to find any more bugs or enhancements that can be made. I kept feeling that level 3 lagged a little so I tried removing all of the fire effects, but that did not make any difference. I eventually noticed that the lava texture was 1024x1024 while our water texture was 256x256. I resized the lava texture and the lag went away.

Next was the kill zone for the player in level 3. If the player jumped off of the starting platform he would die almost instantly, nowhere near the lava. So I adjusted the kill zone to allow the player to fall down to the lava and then respawn.

Saturday, April 20, 2013

Fire Arrow

04/20/2013

In Level 3 there are multiple places where the player has to figure out where to go. To help the user in one position the level designer decided to give the player a hint by placing fire in the shape of an arrow. When I originally added all the fire locations I setup a script to update the Vector3 Y variable based on the model location. The only problem with my script and these models, is these models are turned sideways. I went in and manually figured out the location of where the fire should be placed and also decided all of them should have the same color of fire instead of the random they were getting to make the arrow more noticeable:





With testing this last level, I notice that when you beat the level the timer didn't stop. The players time would be recorded correctly but the timer would keep going even though they had passed the level. This was an easy fix just by moving the timer stop line to the correct position.

Wednesday, April 17, 2013

XBLIG Failed Review

04/17/2013

The day after our Lockdown we submitted our game for review in the XBLIG. Unfortunately we received a FAIL yesterday. Our game would crash if you logged in as a guest account and attempted to purchase the game. Our Engineering Lead has already fixed the problem by disabling the purchase button if the user is only a guest, but we can not submit our game for review for another week. With this extra time we were able to go in and fix some other bugs that we have found.

I went in and fixed the particle system not unloading itself once a level is completed in trial mode. This had a fun effect where if player 2 was in trial mode, and beat level 1 all the fire would stay on the screen. And then if another player that wasn't in trial mode started playing, no matter which level they selected those fires from the trial player would be in the level, sometimes off over the water just burning away.

I also updated the trigger for when the game is won. Either I missed adding the fireworks and sarcastic dragon scroll to the win trigger, or the code was somehow overwritten. Either way I updated this so that when the player won the game both would be shown like level 1 and level 2.

When we added the new skyboxes the lighting was not taken into account to the rotation of each level. So I changed the rotation of each skybox so that the lighting looked like it was coming from the position of the sun.

There was also a box look to the water / lava on some of the levels if you got up to high platforms. I tried to resolve this by increasing the scale of the water / lava and skyboxes. The skyboxes would end up tearing if I made them any bigger, so I just scaled the water / lava to make the box look a little bit less noticeable.

Box Look


A little better

Thursday, April 11, 2013

Lockdown

04/11/2013

Today our team set aside most of our day and night to stomp out any last bugs. We planned on locking ourselves in the lab until all bugs were squashed. Class started at 2pm, shortly there after we went to the lab and some of us didn't leave until after 1am. Artists if they didn't have any last minute polishing to do were playtesting and writing down any bugs they found up on the lab white board. Programmers were then hard at work on the list of bugs. At the end of the night when we were happy with where things were a little competition broke out on who could beat the second level the fastest. Below is some of the stuff I worked on throughout the day / night:

With the help of our level building engineer, we were able to fix the displacement of the katana and esense scarf from the player that I introduced by rotating the player.

When a player completed a level and hit the trigger to end the level, our testers noticed that when you hit it, it looked like they were hitting an invisible box and sometimes hanging in the air for a few seconds. This is visible in this fireworks video:



I went in and updated the triggers to remove themselves as soon as the player collided with it to resolve this bug.

I was also tasked with polishing up the game a little bit. We had a lot of last minute level changes and as a result all of the skyboxes had been set to the same skybox. After discussing it with our Art Lead we decided to start out with the skybox where the sun is very big, and each level have the sun set a little more. This way it would look like their was progression by the player. And with the last level having the sun set, we would introduce the lava effect instead of the normal water we had on the first to levels.

Level 1


Level 2


Level 3


Next I setup the Fire Effects in all the fire pits. This was a little time consuming finding all the Vector3 locations of each fire pit, off setting the Y variable based on which model the fire was coming from. Once I had them all setup, our Art Lead wondered if I could make the fire color be random based off of some different textures we had. So I set this up as well.







Lastly I noticed that the normal mapping dragon was put in level 2 by our Art Lead but it was not showing up when playing the game. I went into the XML file and noticed that it wasn't set to draw with Normal Mapping and that it's scale was way to big. After some adjustment he is now at the end of level 2.

Wednesday, April 10, 2013

FIREWORKS!!!

04/10/2013

We are getting down to crunch time and we are trying to put the finishing polish on our game. One of the tasks I have been assigned is properly rotating the player based on the direction the user should go per level. Each of our levels were customly built in Unity using our level builder, so each level the player could be facing a random direction, and the first thing the player had to do every time they started the level was turn around.

To fix this problem I figured out the proper Quaternion rotation for the player for each level and when we create the player while loading the level I would rotate him accordingly, as well as after a player died and was respawned. I wasn't familiar with the camera we had setup but was able to get it working after he died, but not at the start of the level, but with the assistance of our engineer who worked on the camera, he was able to get it positioned behind the player.

While changing the rotation of the player this threw off the position of the katana sword and the essence scarf that follows the player. I will continue to work on this until it is fixed.

The other task I was assigned with was a fun one to work on. Since I worked on setting up the particle system in our game I was asked to create FIREWORKS!!! These would be used when a player completed a level. To complete this I had to update the triggers we had at the end of each level to pause before loading the next level so that the fireworks could be seen. Luckily the code had already been built into the level builder, I just had to update the time on the triggers. I then had to calculate the direction the camera was pointing so that the fireworks would always be shown where the camera was looking when the player hits the trigger. There were many variations of how the fireworks looked, but in the end this is what they look like:




Sunday, April 7, 2013

Multi-User, Multi-Controller Testing and Bug Fixing...

04/07/2013

When we put our game up for review someone gave us a fail due to the game crashing with a Code 4. The reviewer found that you could duplicate this if you did not have a profile signed into controller 1, and instead had a profile signed into any other controller. So today I went through and tested every possible multi-user, multi-controller possibility I could think of to try and break our game.

I ended up finding a lot of other bugs, some of which I consider funny programming errors. Another developer had fixed the Code 4 crash, but this created some other problems on our Start Screen. For example if you had players signed in on controllers other than controller one, they would all end up on top of each other:



I went through and made sure that no matter what combination of controllers are signed in (1-4 players) the players are all uniformly positioned away from each other.

I also found that it could be confusing knowing who would be playing the game after hitting start from the start screen because there was no indication of which signed in user would be playing until they had started a level. So I decided to add the Avatar of the user who pressed start to the Main Menu screen:



But this then led to another bug where the Main Menu Avatar wasn't being destoryed with the Main Menu... and you would get the Matrix Agent effect:



After these bugs were fixed, I added some code so that if a user logged out during any part of our game it would take the game back to the Start Screen. While testing this I noticed that the scrolls and popup tutorials would stay on the screen, so I fixed them as well.

In addition our Art Lead gave me some sarcastic dragon quotes to add when the player completes a level. So I updated the code with these additions.

Thursday, April 4, 2013

New Skyboxes, Dynamic Water

04/04/2013

Our Art Lead gave me some beautiful new Skyboxes to add to the game. So I added them and then re-organized all the skyboxes so that they were just a numerical value difference between them, making it easy to switch between them. Here are some screenshots:









Our level builder has now been updated to export XML information for water / lava (texture, position, rotation, scale). I updated the water / lava code to be somewhat dynamic when loading the level it will position it correctly and use the texture specified.

Tuesday, March 26, 2013

Updated Avatar Shadow, Animations, and some Bug Fixes

03/26/2013

I have updated the Avatar shadow to become more faint the higher the player gets in the air:



After getting some updated animations (Wall Run Left and Right, Landing, Falling) and an FBX model (Wall) from an artist I imported them into the game:



While trying to correct a bug with the Ninja Scrolls not animating on the Xbox 360, I found that the water and skybox were not unloading... again. I updated them again to unload when the user enters the pause menu or exits a level.

In addition I noticed that if the user goes to the pause menu while the sarcastic dragon was out, he would continue to be on the screen until he timed out. I updated him to instantly disappear if the pause menu was activated.

So back to the Ninja Scrolls, I eventually found that the bug was introduced back when I turned off particle effects when a Ninja Scroll was on the screen. I removed this change and it instantly removed the lag and the animation is back and working. For now I have just re-positioned the scroll to not be over the center of the screen, since we currently only plan to have the scroll up to start the level:



Last but not least, since I was testing the new position of the Ninja Scroll on 480p, 720p, and 1080p, I noticed that the popup Tutorial and Timer were both partially off the screen. I updated both of them to fit on all 3 screens.

Saturday, March 23, 2013

More Bug Fixes...

03/23/2013

The water and particle effects that I had previously setup to unload when the player either entered the pause screen or exited a level were back to showing up when they shouldn't be. Looking over the code either my code was lost in a git merge or someone removed them. Either way, they have been corrected again.

I also updated the Ninja scroll to not show up by default with which ever level the user selected. Now it will have to be assigned as a Quest within the level builder.

Friday, March 22, 2013

Struggles and Success with Avatar Shadow

03/22/2013

After struggling for the last couple of weeks on trying to get shadows throughout our game, I was tasked with at least getting one below our Avatar to help with player movement while jumping from platform to platform. I went back and revisited both of these tutorials:

http://xbox.create.msdn.com/en-US/education/catalog/sample/shadow_mapping_1
http://xbox.create.msdn.com/en-US/education/catalog/sample/avatar_shadows

But the problem I kept running into was that both tutorials are displaying the shadow on flat surfaces that are not being Normal Mapped. As I continued to try and merge the tutorials in with how we were drawing our models I would run into problems where the textures would not be displayed properly. They would be drawn then stretched around the model. Kind of like a Christmas bow on a present:







I finally decided to just hack it to create a simple circular shadow under the player. I would ray cast below the player and if a collision was detected, it would draw a circular model I created in Maya on the surface of that model at the X,Z position of the Avatar. It was far more simplistic than I wanted it to be, but in the end it gets the job done. Playing the game with it and jumping from platform to platform was a lot easier with the shadow as a guide:




Thursday, March 21, 2013

Dynamic Skybox, Sarcastic Dragon Font

03/21/2013

Today I added code so that the skybox can be specified from the level builder and dynamically loaded based on the XML for each level. In doing so I went through and renamed the current skyboxes to be standardized.

I also updated the sarcastic dragon to use the same font from the Ninja scrolls. This alowed the text to be a little bit more readable.

Here he is mocking the player whenever he falls into the water:



EAE Top Undergraduate Program in the Nation

03/21/2013

Recently our EAE (Entertainment Arts & Engineering) department was ranked by the Princeton Review as the number 1 Undergraduate program in the nation.

The Salt Lake Tribune did an article on the success of the department. I would like to say congratulations to everyone involved. I am just glad I was able to be a part of it.

Wednesday, March 20, 2013

Normal Mapping, Particle Effects, Bugs, and Lava

03/20/2013

With the help of our level builder being updated to support exporting different shader types, as well as variables (lightPosition, lightColor, ambientLightColor, shininess, specularPower) for the Normal Mapping, I updated our DisplayModel.cs to dynamically set these for each model based on the level builder's exported XML file. Additionally I was able to also update the Particle Effects code to also take advantage of the level builder's XML file to dynamically place particle effects wherever they are listed in the XML.

Here are some examples of the ability to set dynamic lighting:







I have also fixed a couple of bugs. Normal Mapping was not set properly on our dragon, platform_squre_brickmoss, and wall FBX models. Here is the updated platform_squre_brickmoss:





There was also a problem where if one of our Ninja scrolls with text was displayed on the screen, any particle effects that were behind it were being seen through it. I updated the show and hide methods of the scrolls to also turn on and off particle effects as needed to fix the problem.

Another bug that was found was if a player exited game play and went back to the initial start screen, both the water and skybox would not unload and would be visible. I added code to unload both of these on the pause screen and upon exiting the level.

Lastly, I was asked to take lava textures created by one of our artists and implement it with the water effect. Here are some video and picture of the textures in game:







Tuesday, March 19, 2013

Game Play Video and Pictures for GDC

03/19/2013

Last night and this morning I worked on capturing new game play video and pictures for the upcoming Game Developers Conference in San Francisco. Our EAE department will have a booth and some of our team will be traveling out for the conference to show off our game.

Here are the videos I captured:









Here are the pictures I captured:



Here is the trailer that was made for GDC:

Monday, March 18, 2013

Sarcastic Dragon

03/18/2013

After a couple different iterations of size and textures, I have finished the animations for the sarcastic dragon coming in and mocking the player. The first scroll texture was a little to tall and not wide enough so it was shortened and widened. Here are video and pictures of the initial size and textures:





Here is a picture of the updated size and texture:

Sunday, March 17, 2013

Shaders, Normal Mapping, FBX Files

03/17/2013

Members of our team are running into problems when artists are submitting new FBX models, or when the level designers are selecting a shader type for a model that is not designed to be shaded that way. So I have gone in and updated our DisplayModel.cs to catch shader types that are not supported for each FBX model that is displayed. This is mainly for Normal Mapping, either when someone sets the shader type to normal mapping and the FBX model has no Normal Mapping, or when the FBX model is designed for Normal Mapping, but has not been set to be processed by the Normal Mapping Processor. This updated code will allow for the game to always build and run, but models may not be drawn as well as they could be.

In the process I have gone through and updated the following models so that our code recognizes them for what they are and will display them all the way they were intended:

Lamp_1, Lamp_2, Lamp_3, Lamp_4, Lamp_5, crate_max, fire_pit_big, lamp_short, pillar_short, platform_squre_brickmoss.

Tuesday, March 5, 2013

Finalized EffectsManager, Shadows and Dragons

03/05/2013

Today I finalized all the standardized effects to go along with the new EffectsManager, which included the two new fire effects.

I am now looking into adding shadows into our world. I will be using the two Indie Game code samples from Microsoft as a base:

http://xbox.create.msdn.com/en-US/education/catalog/sample/shadow_mapping_1
http://xbox.create.msdn.com/en-US/education/catalog/sample/avatar_shadows

I will also be working on adding a sarcastic / funny dragon that makes fun of the player anytime he is unsuccessful.

Thursday, February 28, 2013

Effects Manager, Fire Effect

02/28/2013

I have been tasked with setting up an effects manager to handle all the particle effects we have in our game. In the process I helped one of our artists import a new texture he found and make it look like a rolling fire that he can use in some 3D fire pit models he has made:


Sunday, February 24, 2013

Xbox Avatar Animations

02/24/2013

Today I imported and tested some new Xbox 360 custom Avatar animations one of our artists has made. I took video to send back to him so he could see if he was satisfied with his results:





Saturday, February 16, 2013

XNA Normal Mapping and Lighting

02/16/2013

After a long struggle with trying to get normal mapping and lighting shaders to work in our game I finally got it working where I can show off the results.

I set it up so that our artists will be able to select which shader each model will be drawn with.

For transparency I used our artists transparent shader. For Normal Mapping I setup a Normal Mapping Pipeline similar to the one shown off in the Xbox Live Indie Games Code Samples. One of the problems I was running into was caused by the ASCII FBX exports from Maya. For each model that we wanted normal mapping for I would have to go in and find the section for each model and add a normal map tag, for example:

P: "NormalMap", "Enum", "", "A+U",0, "../SourceImages/Brick3_normal.png"

I would then have to find all other references to the NormalMap and remove them. Once I did this the normal mapping would be displayed. With the normal mapping we have the following variables we can configure; light position, light color, ambient light color, shininess, specular power.

Below are examples of the shaders...

Transparent lamp next to the rectangle:


Normal Mapping on different models:





Example of the same barrel model with Normal Mapping on or off:


Video examples of the Normal Mapping:



Testing lighting so that it looks like the light on the two arches is coming from the lamp between them:

Thursday, February 7, 2013

Ninja Scroll Animation (Update)

02/07/2013

I updated the ninja scroll animation. Scrolls can now be spawned anywhere on the screen by giving them a Vector2 location of the top left corner. You can dynamically set the text, and scale of the scroll.

Examples of setting location and scale:


Play Test / Level Testing

02/07/2013

Today we will be doing a play test with the Master students. Our team has been trying to get a big indoor level to work but have been running into performance issues with it lagging on the xbox 360. On Tuesday I was asked to try and get this level working before the play test. I determined that the problem with the level was due to the collision layer, so I spent the last couple of days trying to edit the Maya model and remove as much as possible without affecting the game play.

Here is a video of the lagging performance:


Here is a video where I removed the level's collision layer and added a different level's collision layer and the level runs smooth:


After removing all the models and faces I could from the Maya model it still performed slow. So I started to edit and remove each edge that I could, but performance still continued to run slow.


One of our artists started to build the collision layer from scratch. As he created it I would test it out and find locations where collisions either needed to be improved or added because they were missing.

In the end we decided to scrap this level since it did not fit with our level builder.