After seeing the success of Flappy Bird, i wanted to prove to myself that I could release a simple game in less than 8 hours. Thus was born the cute little game Flappy Acorn, “probably will change the name”. Check out the game, i’ll do a few updates in the future if I get enough downloads. You can go and download it here
This past week I spent a lot of time setting up the RPG gun, as well as working on a rough first pass on projectile class that allows me to track a target. I think the RPG will help make the other guns much quicker to setup to work. I also setup a the damage on the machine gun correctly now, which acts more as a “drain” instead of firing tons of projectiles. My son ended up getting really interested in helping me tweak the values in the game which led to some really cool tests. I’ve got some flying enemies that take damage and blow up correctly now.
Lets start with looking at the variables I need for the projectile. ( Please note all this is still very early and not final at all )
public GameObject currentTarget; public GameObject launcher; public float speed = 10.0f; public float damage = 10.0f; public float lifeTime = 5.0f; public float ignoreCollisionTime = 1.0f; public GameObject explosionParticle; public bool bRadius = false; public float Radius = 100.0f; public bool bFindNewTarget = true; private float aliveTime = 0.0f;
Handling Machine Gun Projectiles
Its been a tough week for me, we had a lot of things come up this past week that were unexpected, so I have a much smaller update this week.
I finally got the machine gun “AK47” turret completely hooked up. In the process I decided that making all turret guns share the same code just wouldn’t work with the new version after the prototype. So now I have a hierarchy of states that each turret gun derives from and then I just override the necessary functionality. This allows me to not fire a “projectile” for each shot, but instead it finds a target and plays an “effect” and drains the enemy’s health based on the damage rate.
Anyway here is a quick screen cap of the AK47 in action.
An Unexpected problem
I want to start off by apologizing about missing my post on Monday, I missed work because I wasn’t feeling well, and it completely slipped my mind.
Anyway in the last week I ran into an interesting problem that I didn’t actually expect to run into. The problem is: “Rotating towards an entity along a single axis”.
I did a bunch of variations of math using quaternions and suggestions from the forums and none of them seemed to truly work the way I wanted. So I deleted all my code and came up with a method using Quaternion.LookRotation along with using the Dot Prodcut to find the pitch. I’m sure there are better ways to do this, but not knowing all the ins and outs of Vicious this is the best one I could find. What I really wanted to do is to project the vector to the target onto the forward vector and then perform a dot product between the two normalized vectors, first determining if the object is in front or behind the turret. If in front I would know the change in that angle, if behind I could very easily begin rotating to resolve the angle. For some reason though, when assigning the euler angles with this math ( which I was 99% sure was correct ) the turret would spin uncontrollably. I consider myself very good at vector mathematics, but still very new understanding how this would all work in Unity. I also read a suggestion about using LookAt and then zeroing the unneeded angle rotations, but this resulted in even more sporadic behavior.
What I have since figured out is that the forward vector of the turret actually was rotating with the child node I was changing the rotation on. What this was causing is the constant spinning. I think I could of made my initial math work great if I just used the world forward instead of the mesh forward. So my math before was correct just missing one very small piece of the puzzle. The assumption I had made was that the forward vector of the parent of the node would remain stationary, but in fact this wasn’t the case, so my 99% of certainty was indeed wrong. Without serious testing its hard to figure out the exact cause for the change in rotation of the forward vector of the parent, was it an animation, was it the child effecting, could it of been something with the way it was exported, or the way the hierarchy was set up, or maybe it was just an error in my code.
Needless to say I wasted quite a few hours doing what I thought to be a trivial task, and here is the code that I ended up with.
Vector3 toTarget = newTarget.transform.position – transform.position;
Quaternion quat = Quaternion.LookRotation( toTarget,Vector3.up );
Vector3 eulerFinal = new Vector3( transform.eulerAngles.x, quat.eulerAngles.y + 90.0f, transform.eulerAngles.z );
transform.eulerAngles = eulerFinal;
Transform tilt = transform.Find( “D_TurretPivot” );
eulerFinal = new Vector3( tilt.eulerAngles.x, tilt.eulerAngles.y, ( Mathf.Rad2Deg * Mathf.Acos( Vector3.Dot ( toTarget, Vector3.up ) ) ) – 90.0f );
tilt.eulerAngles = eulerFinal;
Debug.Log( eulerFinal );
Thanks for reading, and until next time.
I want to go over a few of the systems that I’ve been working on for Adventure Amazon.
State Machine System
I am a huge fan of state machines, in my opinion they simplify development, speed up debugging, and force cleaner code. I want to build a state machine system in Unity that is user friendly and powerful at the same time. I’ve started exploring the ability to create editor windows. Here is a quick prototype that I put together.
The idea here is to create a system that allows the user to graphically design their state machine full while even allowing state hierarchy’s ( 1 state deriving from another ). This is pretty ambitious undertaking for this project, but since I’ve proven that the editor tools support this addition, I have started working on the actual system behind the scenes now. Feedback is always appreciated, but right now the plan is to have an empty text window open that displays the current code, or can be modified so the user doesn’t have to dig through code to find the generated stubs. Another idea is to make each state an individual class instance, but to be honest I don’t feel that is the best way since we need data to be shared between states. Although with that implementation it would allow each state to have their own data, that is instanced to the state instead of the entity. (more…)
Technical Design Document
Please Note this is not a complete document, and will constantly be a work in progress, but I hope it helps give you an idea about what we are setting out to accomplish.
Adventure Amazon offers a unique mix of tower defense and real time decision making, with the player protecting their ship while trying to escape the dangers of the amazon. The player will be able to upgrade every aspect in the game, including the number of equipped weapons, the abilities and stats of the weapons, and the ship itself.
General Development Guidelines
- Use Prefabs for any object that will be spawned or duplicated more than once.
- Comment each function, so its easy for anyone to jump and understand the code.
- Keep the TDD and GDD up to date
- Member variables names will start with a capital letter and each additional word in the name will begin with a capital letter.
- Local variables will begin with a lowercase name, and each additional word will begin with a capital letter.
- Function names will begin with a capital letter.
- All code will be written with C#.
- Class names will begin with a capital letter and each new word will begin with a capital letter. (more…)
F-This Jam entry ( 1 week development time ).
Controls: Click on turrets and add mods and turrets, don’t let your core get destroyed. Arrow keys to move the camera.
Created By: Adam Larson and Billy Sweetman
I was recently tasked with a new system to handle any number of combos. Basically it needs to be easy to define a given combo and easy to fire off an event when that combo is successful. Starting off I had 27 various combos with 13 different attack types. For example ( Light hit, Light hit, Light hit ) would be one combo. First I wanted to define the limitations of the combo system.
Once a combo has been reached the attack chain is cleared. For example ( Light hit, Light hit, Light hit, Uppercut ) would be 1 combo with the first 3 hits and then the chain would be cleared, and uppercut would begin the next sequence. This is important because the designers need to be aware of the types of combo’s they define. If it was absolutely necessary to extend the combo, I think it would still be possible, but my solution wouldn’t work as well, because a person could in theory just do light hits constantly and be notified of a combo.
This update is a little late, but Jam City Rollergirls has released on WiiWare on January 24th. This marks my 6th shipped title and 9th that i’ve worked on. This game has been receiving very positive feedback from the reviewers and the fans of derby. Check out these reviews!
It seems like the biggest complaint is the lack of content, which is completely understandable for a WiiWare title. We did as much as we could to cram content into the 40mb game, and to be honest it feels good that people just want more of what we were able to make. This was a very challenging title to work on because there are literally no references for roller derby games. What we did is look at what other similar “arcade” style games did well and we wanted to bring that together with the world of roller derby. I mainly spent my time working on player controls, their interactions with the environment, and the powerups. The controls went through so many major iterations that I feel confident that anyone can pick them up and play immediately. I also worked hard to design and implement the concept of stealing points from your opponent, to me this makes for a very dynamic local coop game. Stealing points is a tough thing to balance, but it works really well with calling off the jam and using other powerups to avoid being hit. I’ll do a more detailed post on this maybe a post mortem on a later date.
Oh yeah check out this interview I did
I’ve been working really hard on several projects, while still trying to play some games (Starcraft 2). Anyway i’m currently messing around with the Unity Game Engine on some home projects that i’ll hopefully be able to share soon. Also I’ve been working hard on 2 professional projects here at work that are coming to a close, and i’m getting ready to roll onto another project that I’m super excited for. You can check out one of the announced projects for WiiWare right below this post. I am in this industry because I love games, challenges, and learning, so I will continue to share what I’ve learned on my website.