Saturday, August 23, 2014

A Site For Sore Eyes

Get it? Well anyway, I've finally created a site that will contain my blog posts from now on along with games I make and other things. This will also be a place I can sell games and maybe even some custom vinyl toys. All good things. The new site is http://www.dougmakesgames.com/

Monday, August 4, 2014

ThumbderDome Alpha

One Thing Missing
So I have the first build of the game and everything is working great. I don't have any audio yet but I've been looking into sound effects and the various licenses I need to obtain for certain things. Further info is being collected but I haven't implemented anything for that yet. I also didn't quite make it all the way to my alpha goal. The game is playable from beginning to end but it's missing the taunt scene in between the match and the continue screen. this scene is cosmetic and has not input from the player so I'm lumping it into my beta deadline next Sunday. So let's take a look at some things That have changed.

Character Selection Animations
Characters now play a selection animation when you select them. If you move to another selection they return to their idle thumbs up animation. This animation is re used when the player wins the match and also when they continue at the continue screen. A bunch of refactoring went in to support this because before I wasn't expecting to have anything play when character is selected.

Split Screen Adjustments and Struggle Meter
I change the orientation of the split screen margin. It used to be diagonal but it was weird for one player to have a different view space than the other. I also change the second player cam to more closely reflect the first player camera on the left. They still aren't 1:1 but I will sort that out in the beta build. Additionally I added a struggle meter at the top. When a player is pinned they wiggle the joystick and the meter will push in the other players direction until filled and they escape the pin. Before I was just incrementing a counter and didn't have any ui to support this. I also added some code that would allow the player that is pinning to fight back against the struggle meter to force the pin down. This is commented out as I can't really test it on myself because my brain is always letting the other half win. The idea is that the pinned player will have a max value to achieve that is multiplied by the number of times they have been pinned in a round. The player that is pinning has a static value for which to fight back so the more times a player is pinned the harder it will be to win against the pinning player. At least in theory. Again I haven't tested it yet so it's commented out in code and I'll test it with some players. I also changed the "Pinned!" ui text to be on top of the player that gets pinned instead of showing up in the middle.
The idea I went with for character select scene.
 Another example of some grids leading off into the distance.



Player Specific Win Animations and New Look
 As I mentioned before animations are being used for each winning character. For Grave Digger I googled "Relgious hand gestures" and found one that I hope isn't offensive. The other are ones that I just came up with. This also required some hefty refactoring to support the changes. You'll also notice the neon grid in these scenes. Let's just throw this out there. I like 80's pop culture art and misc. I don't know why exactly. Maybe just something fun to look back on. Maybe it's the super simplicity of it. Maybe it reminds me of being a kid. I just like the way technology and the future were represented in the 80's.  In any case after making the start screen I realized there was a visual inconsistency through the scenes. I decided to create something simple but still appealed to my direction of wrestling's golden age in the 80's. I looked at some images for inspiration and added some of them below to look at. My characters don;t really have any specific 80's look to them they just represent a theme that a wrestler might have taken on and represented to such an extreme. Plus they're floating hands sooooooo you know.

Continue Screen
I added a continue screen where a countdown begins. If the player doesn't press their respective trigger then the game ends and it returns to the title screen. If they continue then it returns to the character select screen. This was all done on Saturday night. I looked at the clock when I called it done and realized it was 5:00 am. I have to stop doing that. (Don't look at the timestamp on this post.) The 80's neon grid is in view here as well. I made a shader that would falloff to black so it would look like the grid fades into the darkness. Also made some trigger icons that follow the theme of the font I'm using.

Conclusion
So there is still plenty of work to do to reach beta. I need music and sound effects along with a bunch of other things on my list. I need to make the taunt screen I mentioned a polish some animations. I started looking into selling the game for a really small amount and still haven't worked out all of the logistics there. We'll see where I land once this things is done. I also still need to make a simple animation of a ui element telling the player to wiggle the joystick when they get pinned. I'll post another update soon.

Saturday, August 2, 2014

Title Change

Welcome to Thumbderdome
So I decided to change the title. I went through a couple variations. One was a play on WTF Wrestling Thumb Federation but it still lacked something cool and there is already some web series called TWF Thumb Wrestling Federation. Mine was way too close to that. I also just didn't like "Thumb At Me Bro!". It was just a little off and didn't sound right to my ear. After writing down all of the things that came to mind when I thought about wrestling entertainment from way back I knew I wanted to have some kind of imagery to capture the golden age of wrestling. I also think constantly about the cage matches and the whole "Two men enter. One man leaves." So with that, I landed on ThumbderDome Wrestling. The other cool thing about this name is the "bd" consonant paring. In the font I was able to adjust it to somewhat resemble two thumbs facing each other. I made some other updates in code unrelated to this but I just wanted to make a quick post to put up the start screen art.

Friday, August 1, 2014

Thumb At Me Bro!
This is the title I'm going with for my thumb wrestling game. I have made a ton of progress and I've only really been working on it for two weeks but it feels really good to see it come together. Since the scope of this game is so small I'm free to play in between the lines. It's in that spirit that I've added 4 skins for the hands which are acting as characters. I'm really drawing inspiration from the feeling of pro wrestling entertainment I watched as a kid and the personalities each wrestler had. They always seemed to embody some kind of specific gimmick and go way over the top with it. The other fun thing is that since it's so easy to just make skins for the characters I can make a bunch if I want. So now I have a character Select screen that fades into the main event scene where the match happens.
 I also changed the way pinning works. Before I was checking for some ranges where the pin could be in a pinnable state and then you had to click the trigger to invoke a pin. this caused a lot of fatigue on the players hand so now you can use the trigger on your side of the controller. Additionally you can invoke a pin with this button even if you're not holding up. Each time you miss though there is a moment of vulnerability whch makes the game more exciting. I also added some effects when you miss a pin so you can read it very easily as a miss and it's way over the top. Obviously. 
If a player lands a pin each character has a unique effect that happens. Moscow Mule has something that looks like a hammer hitting hot steel. Grave Digger has one that looks like a lightning bolt strike.
I will be working on the character select screen this weekend some more on top of creating an intro screen, a start screen, a player lose screen where the winning player says a winning taunt and a continue screen with a countdown. If the losing player hits the trigger during the countdown it will start the character select screen. Currently I only have a simple rematch choice on a black screen for continuing. I am giving myself until Monday to have the game in an Alpha state. Playable from beginning to end and then I will have the game in Beta by next Sunday. I still have to work out music and sound effects which I really want to be awesome so we'll see how the heck I pull that off. 

What Am I Doing?
Making the game has been a lot of fun and I have had several people tell me to try and sell it for at least $0.99 or something. That sounds great. Problem is I don't know how the hell to sell a game. This is going to be my biggest hurdle. How do I copyright the game? What kind of thing will this do to my taxes? Do I have to register an LLC? It's a lot to think about. I've been very careful to make sure I'm not using any assets or resources that may be under a freeware license that denies commercial use. My only concern about an asset right now is the text font. I got it from 1001 free fonts and I read it up and down and it said it's available for commercial use. I even tried to look for the author to contact but could't track down a contact. Anyway we'll see. Changing fonts is the lest of my concerns.



Friday, July 25, 2014

What Have I Been Up To?

Making Games
What have I been up to? That's a very good question voice from the void. Judging by my blog it would appear as though I've been doing nothing. I assure you I've been very busy. Since my transition into design I've focused mostly on that exactly. Design. But in my personal time I've actually begun work on a couple of games in Unity. These are my own personal endeavors and began originally as a reason to dig into Unity and C#. Just like everything I try to take on I dream way too big and refuse to quit. Every time I have an idea for a game I write it down no matter how absurd. Some of them have sounded pretty cool and others just ridiculous, ranging from "A game where you play as a kid who falls asleep at their desk and dreams of fighting creatures inside their desk on a quest to liberate the desk people from the oppressing Eraser of Existence." to "A cosmonaut that fights bears in space". You see what I mean.

1980 Something

One I began work on is title "1980 Something". You play as a cop in the 80's on a path of revenge. I really love 80's action movies like Cobra and Lethal Weapon and wanted to make a 2d game with side scrolling platforming and shooting and brawling. It's super ambitious but I'm doing my best to see it through. I've made some good progress thus far and have hit a few snags and limitations but I have some decent melee in the game already and some good platforming stuff. I'm not a great artist so it's tough to create the characters and what not but progress is being made and I look forward to showing something in the future.

Thumb Wars

About a week ago I started work on another smaller game that I'm just calling "Thumb Wars" right now. It's a 3d thumb wrestling game. Initial prototypes are pretty solid and a lot of fun. Two people use one controller to thumb wrestle and I have high hopes for creating different "Hands" to choose from as characters and any other ridiculous ideas I can come up with. I plan on updating my blog with progress on both of these games.

Thursday, April 10, 2014

Progression

During the development of The Last of Us I began to ask myself where I saw myself in the future. Did I have that hover board I so dearly wanted? Probably not. More specifically where did I see myself in my career. I love visual effects. Always have and always will. The problems I've had the opportunity to solve through visual effects have always proven equally complicated and exciting. I'm always trying to challenge myself. If I get too comfortable doing something then I need to push myself. If I'm scared then I know I'm on the right track. It's in the spirit of challenge that I began pursuing a shift in career direction. One that also felt like a natural progression. This is how I ended up here. Where is here? I'm being too cryptic. Plainly, here is the discipline of game design. I've always been fascinated with game design and the intricacies within. The problems to solve are vast and meticulous and require many many loops of iteration. On top of this it calls upon your collective experience in life and academics. The great thing is that each of us have unique experience to call from giving us our own special ways to pose problems and solve them. Game design is one of the most challenging and unique disciplines I've encountered and I'm very fortunate to work with some of the best game designers in the industry. This is something I have put a lot of effort and though into. After shipping The Last of Us I knew I wanted to make the shift if the opportunity were presented to me. This brings us to now. As of this post I am now working primarily in game design. I'm always a little unsure of myself but it's always been a motivational factor to prove to myself that I can do it. I look forward to creating interesting and exciting experiences for players and benefiting from the immense talent that resides in our design department. I wouldn't be where I am if it weren't for the people I look to for inspiration and support. It's because of these people that I've come this far. I'm also super freaking lucky to work in a studio that has provided me with the opportunity for such growth. My blog will naturally reflect my current work and interests and while visual effects is not my primary focus now it will always be one of my biggest interests.

I also want to mention that my wife has always been my biggest supporter and without her I'd be lost.

Monday, November 4, 2013

Molotovs in The Last Of Us

Molotovs In The Last Of Us: Part I
One of the more interesting effects I worked on in this project were the Molotovs. In action it's just some fire effects and who hasn't see that before. What I find particularly interesting is what it took to bring it all together. There are many components to the Molotovs and while working on them I learned a ton about our scripting engine and how powerful it can be. But the point of this post isn't to talk up our scripting engine, rather to walk you through how we put it together in hopes of broadening your perception on what it takes to put something like this in the game.

Rootvars and Particler:
So, jumping right into it. Particler is our in house particle authoring tool. During production our dedicated fx programmer Marshall Robin added some new, really cool functionality to how we interact with our particles at runtime. Using a system referred to as rootvars, we were able to create variables in our expressions during the authoring stage that we could set the value for at runtime and update as well.

the rootvar __root.alpha here is being used as a float to modulate the opacity value of the particles

Using these I was able to make a single effect and manipulate attributes of the effect based on conditions I set in script. An example is demonstrated in the video below. The player can obtain upgrades by reading manuals that will increase the effectiveness of Molotovs the player creates. For instance the damage radius is increased with each upgrade. Rather than create an entirely new effect based on the upgrade, I've passed the upgrade level as an int and, based on that number, at creation I set conditions so I can set values in my single effect to represent the upgrade like sprite size and emitter radius among other visual aspects.


The concept for the Molotov and its need for flexibility:
The easy way for the Molotov to work would have been the old method. In a specific file, we can define what effects to spawn specific to certain weapon types and explosions. This is an oversimplification of how that all works. For example, in this specific file there would be some definition for the general gameplay behavior of the Molotov and in this location there would be a space where we can define what single particle effect we would like to play when the Molotov explosion is triggered in gameplay. Molotov goes boom, spawn some effect. The simple way to create the Molotov would have been to simply say spawn my Molotov effect when this explosion happens. The Molotov however needed to be flexible. For instance after watching a lot of reference I noticed that the way it spawns differs greatly depending on the angle of the surface it explodes on. So we had four possible explosions that could be defined. One for the floor, one for walls, one for ceilings, and one for impacting characters directly.


Floor Impact Molotov
Ceiling Impact Molotov
Direct Hit on Enemy Impact Molotov
The fiery bits spit out by a Molotov would need to react based on the angle of the surface it impacted and take into account other information and conditions. On top of this the player would be able to upgrade the Molotov damage radius so the effects would have to reflect these upgrades. This all would have meant we would need to author a new effect for every upgrade possible for all four effects if we stuck with the traditional method. So I went with a more technical setup but far more flexible.

State Scripts:
State scripts are built using our internal scripting language. The syntax is based on lisp. You can think of it like Unreal Script and LUA. A state script is very flexible and can be used for a number of tasks, ranging from controlling how objects behave when attacked to setting up logic for combat. I had used state scripts loosely on Uncharted 3 and had continued to become familiar with them as I saw a lot of potential for setting up effects using them. We also have a large number of user and programmer created functions that support them. When spawning an effect in particler we can send collision events that carry information that can be used by state scripts. So I'll detail the information I used to interpret the behavior for Molotovs.

State Script Example

Collision events and the state scripts for Molotovs:
So the most flexible way I could think to setup the Molotovs was to instead have a state script spawned in place of a particle effect and that state script would spawn the particle effect and control all the aspects of its behavior. So this is how It all went down.
  • Lead Programmer Travis Mcintosh setup the lower level code to spawn the state script and pass the script a world space position and a quat that I could use when spawning the effects. He also sent an event to the script so that I could have all the variables setup before spawning the effects. This created a one frame delay but you don't really notice it.
  • I created an effect for each of the 4 types of Molotov bursts that contained fiery particles that fly out and collide with surfaces. Each time a particle collides with some geo it sends out a collision event.
  • The script listens for these events and using the information contained within the event sets up some conditions to further control how the Molotov behaves. 
  • All 4 effects spawn the same effects when they collide with geo but each script determines how those parts behave differently.
  • There are 3 parts that result from the collision of the Molotovs components. The small fire bits. The large fire bits. And the smoke, light, and scorch all in one effect.
  • Using functions inside our scripting language I was able to check for the level upgrade set on the player at the time the Molotov script spawns.
  • I set rootvars for scale and rate along with the speed at which components flew away from the center of the Molotov.
  • Additionally I check the y component of the normal that the collision takes place at. If the value is greater than 0.8 I don't spawn the normal fire bit and instead spawn another effect to creates some simple spreading. This spreading is purely a visual thing and does not contribute to gameplay but it was a nice touch.
  • I also check the surface type of the collision. If it's water I don't spawn the fire. If it's deep snow I spawn a different scorch mark entirely. So it would look like the snow was melting.

Here is a quick run through of the Molotov being used in gameplay. I have character invincibility on and I also have some infinite ammo set so I can just demonstrate how all of this looks in execution.

Gameplay Demonstration: Molotov

Conclusion:
The Molotov was a huge learning experience for me and allowed to explore all of my options for implementation. In retrospect there are some things I wish I could have done early on knowing what I know now. As with all things, I learned a lot about our scripting engine and continue to use it to implement some crazy effects. There is no greater feeling than setting up a bunch of conditions and then watching it all work and happen right in front of you. Seeing people lob these bad boys at each other and just imagining all the crazy crap going on under the hood, it's great. In part 2, I'll go over how I used some of the same techniques to control how fire spreads in infected as they walk through fire elements of the Molotov.