Wednesday, December 17, 2014

Techno Song Progress 12/10

At this point I had to stop and thing about how and if this song would be used and how much time I really wanted to spend on it.

After deciding that this song would probably be used in menus, it was worth finishing to me, but not worth putting way too much time into it.

So I worked on another shorter song that I'll post about later, but finished this one up by cleaning up a lot of stray notes, doing some mixing, having the intro of the main techno section pan left and right, and filling in the last experimental section.

Take a listen:

Techno Song Progress 11/22

For the week I worked on this my focus was on building out the main techno portion of the song.

I added a fader effect to the techno sound, and a drum and lead track. I worked on some cleanup and mixing a bit to try to clean up some of the mess.

After the main techno loop I put together some loops at the end as kind of a separate section to see how it sounded.

Take a listen:

Techno Song Progress 11/17

After getting the main techno chord loops decided, I started building the song out a bit more.

I started out with an introduction using samples from a really cool additive synth plugin Loom mixed with some violin sounds. Then to cut into the techno portion I used a hit I created from another project and led into it with some random drum hits.

For this version I put in my basic techno loops that I showed in a previous post, and added a rough bass idea.

Take a listen:

Brainstorming Music Ideas Part Four- Hybrid Rock Song

The fourth attempt at a quick sample was a bit more difficult for me to put together, but I had some fun playing around with different effects. It's faster moving and more noisy, which is where most of my challenge was. After getting the basic song form down I really had to choose my sounds carefully because it quickly got muddy.

The song starts of with some pad patches I tweaked and layered, followed by some reversed piano layered leading into the main section of the song.

I used more of a standard rock drum set and beat using my Strike plugin.

Here is the Hybrid Rock Song:



Brainstorming Music Ideas Part Three- Slow Velvet Song

The third attempt at a quick sample was pretty clean and simple as well and gave a bit of a different feel. This started with a repetitive two notes with just the bottom note moving, and the rest of the song builds on that to complement.

Here is the Slow Velvet Song:





Thursday, November 13, 2014

Brainstorming Music Ideas Part Two- Piano Hybrid Song

The second attempt at a quick sample song was a bit cleaner for the second week. I tried to give it a simple structure with two basic parts. Since it was pretty simple I was able focus on making the different parts coordinate with each other in ways that ended up sounding pretty decent.

No more talking, here is the Piano Hybrid Song:






Tuesday, November 11, 2014

Brainstorming Music Ideas Part One - Sloshy Mess Song

Going back in time a few weeks...




When I first met with my new team a few weeks ago, it was clear that we had a problem with our rhythm based game based on music, and that is that we didn't have any music! We really needed to get started on making some music and making it fast to get some general ideas and some baseline content to develop our game.




So I quickly got reacquainted with my Pro Tools software and started messing around. It can be overwhelming to start brainstorming songs so really this just consisted of grabbing whatever decent sound I came across and recording the first thing I could think of.




This of course made my first attempt to get out a sample song pretty messy, but going through the process was necessary and helped to make the next attempt a little better.




I'm getting ahead of myself though, here is that first sample track, Sloshy Mess Song:






And so began the messy brainstorm...

Sunday, November 9, 2014

Starting A New Song

A lot has happened since my last post, so to bring you up to speed...

We still haven't decided on a game title yet for our rhythm based game because we're still working through what the story might be and some finer points of gameplay, but that will be coming shortly.

We have decided on a team/company name however, Noisemaker Games.

I've been working heavily on getting sample music up over the past several weeks and will add some posts describing some of the work I've done to get those sample songs going.

Now I've started to work on a longer, more thought out song.... So how on Earth do you start with that?!

For this song, my process started by deciding on a theme/feel. The theme I'm going with is retro/techno, and this is likely to morph as I build the song and find sounds that fit.

Next, I started thinking about song structure. One of my favorite song structures is ABABCB, or verse chorus verse chorus bridge chorus, as this structure seems to keep things changing enough to not get boring. My goal is to have the song be about two minutes however, so this can be a real challenge with an ABABCB structure that easily pushes a song length to 3 minutes. Keeping things interesting might be much easier with the gameplay thrown on top of the music however, so a more simple song structure might end up being better. If I build the song properly, it shouldn't be to hard to chop things out if we find out later that this is the case.

Next, come up with some basic chord structures for the different parts... This mostly just takes some time exploring, but one I got going with a direction and style for one section the others weren't too difficult.

I've come up with some chord progressions for three sections, but I've recorded two of them using some basic techno patches, here is one for what will probably be the verse:


And another that will probably be the chorus:




Stay posted! I'll be uploading some of my brainstorming tracks soon, and I'll also be posting some bits of game development from when I worked on the Timey prototype.

Tuesday, October 7, 2014

And the Fate of Timey is...

DIED




We had a good run and came up with a pretty fun game idea, but in the end it just wasn't enough to get us through. Here is some of the feedback we received on what hurt us:

1. There are a lot of time games out there.
2. There was another game pitched that ended up having a very similar mechanic to ours that caused them to wonder why both of these were pitched as two separate games. (Both were cut)

I think one thing that hurt us that they didn't point out is we spent too much time focusing on what the mechanic was when we started developing the prototype, and only spent a small amount of time thinking about how the gameplay would use the mechanic in fun ways at the very end just days before our final pitch. Emphasizing those things would have really helped us highlight how this was different than other time games out there and how exploring what we were doing could be really fun and different from games like Braid.

The experience was a lot of fun and I was able to learn a lot of cool things, but now it's time to pack those lessons into my hat and move on to the new project that will be my life until I graduate.

So what will I be working on when all is said and done?

Introducing....

Melancholy Music

I'm very excited to be working on this game, it was my second choice if Timey got cut because there is a good chance I'll be able to mix my software engineering background and songwriting background in a fun way with this game.

So what is it?

It's a game like bit trip runner mixed with guitar hero and The Misadventures of P. B. Winterbottom.

Essentially, you run down a platformer path, you can choose from several paths, and each path has different musical tracks associated with it. When you reach the end, you start over, and the first run you did is still there but you can take a different path to create more musical tracks that mesh together.

Should be fun, and I'm excited to be working on it!

Saturday, October 4, 2014

Prototype - Timey Industry Panel Pitch!

So we made our industry panel pitch and the fate of Timey is now in their hands and the hands of the professors. I think Timey has a great chance but I can't help but be nervous as 3-5 games will get cut out of the 9 that made it this far!

The industry panel gave us a lot of great suggestions for different types of game-play we can use to make this game more fun and I'm definitely excited to sit down and design and complete a game with their suggestions added to what we've already got.

We had a lot of people work hard on this prototype and we were able to showcase some game play with some great looking art, and fully functioning time mechanics. Our team really came together at the end to come up with ways to make our game fun that really helped us in our pitch.

Here is our game-play video made by our awesome team that worked so hard to get it going even though they all have busy schedules.



Friday, October 3, 2014

Prototype - Water Droplet

A lot has happened in our prototype since my last post in preparation for our game pitch to a panel of industry experts.

I've been busy building a level showing a puzzle potential with our game mechanic with having water droplets drop into buckets in the past to have the buckets rust and open up new areas in the future.

In this post I'll talk about one mechanic I put together for water droplets. I didn't have time to do some kind of splash animation when the droplets collided with something, but I wanted to have something happen more satisfying than simply disappearing.

First things first, I made a water generator object, and put it where I wanted the water to spawn.


Then off the screen, I added a droplet sprite based off an image I found online, and set the RigidBody2D gravity scale to 0 on it to make sure it didn't move anywhere during the game.

Now I needed the water generator to periodically spawn a drop of water, to produce a leaky faucet effect. To do this I attached a script to the water generator and using my brilliant intellect, I named the script "WaterGenerator."



This script uses the update method to check how much time has gone by and spawns whatever sprite you specify at the location of the generator using the Instantiate method. It then stores the instance of the spawned sprite, although for my purposes I don't think I ended up needing to do that and could probably get rid of that collection here.

The last line also sets the gravityScale to 1 on the water droplet sprite to make sure it falls after being created.

So far so good! So the water falls, and with a Polygon Collider 2D it collides with objects... but that's not really what I wanted.

I could have the water droplet be destroyed whenever it collides with an object but that really isn't satisfying enough for the prototype. I didn't have time to figure out how to do a fancy splash animation either.

So instead I decided to add a script to the water droplet to have it shrink for a few seconds when colliding with something until it disappears.

First the class variables:



    public class WaterCollision : MonoBehaviour {

 public float disappearTime = 1.0f;
 private float scaleMultiplier = 1.1f;
 private bool started = false;
I wanted to readily have control over the amount of time it took for the water to disappear, so I made disappearTime public. The scaleMultiplier adjusts how quickly the water will shrink, and the started variable allows me to keep track of two states of the water droplet before and after it begins it's path to death!

After experimenting a bit with OnCollisionEnter and OnCollisionStay, OnCollisionEnter seemed to be the place that consistently did what I want, although there were some occasions where my water droplet wouldn't fully destory and that probably could have been fixed by adding code in both places.


    public class WaterCollision : MonoBehaviour {

 void OnCollisionEnter2D(Collision2D collision)
 {
  if (!started) {
  
   disappearTime = Time.time + disappearTime;
   started = true;
  }
  StartDestroying ();
 }

This is pretty straight forward, if the object hasn't already started to be destroyed, just set the time you want it to be destroyed and then begin shrinking the thing.

Here is my StartDestroying method:


    public class WaterCollision : MonoBehaviour {

 private void StartDestroying()
 {
  gameObject.transform.localScale = gameObject.transform.localScale/scaleMultiplier;
  
  if (Time.time > disappearTime) 
  {
   Destroy (gameObject);
  }
 }

In the interest of time I made this as simple as possible, just scale the droplet down by dividing by a value greater than 1, then check if enough time has passed to destroy the object.



Saturday, September 20, 2014

Prototype - Getting Player to Jump in Unity

This week we showed an early prototype of the basic mechanics of our game. This involved getting player movement going and adding tags to the past and present game elements so the player can switch between the two environments with the push of a button.

One challenge we had was getting the player to jump appropriately. As a placeholder, in our player movement script we started with this code for jumping:


    public class moveExample : MonoBehavior {
        ...
        public float moveJump = 0.5f;
        ...
        void Update()
        {
            ...
            if(Input.GetKeyDown (KeyCode.W)){
                transform.Translate (0,moveJump,0);
            }
        }
    }

This kind of worked, but there are several problems with it.


  1. You can keep pressing the jump key, and do some weird looking midair jumps.
  2. When jumping, the player would actually disappear from the ground, and reappear in a new location higher up.
So for the first issue, I added the following code to make it so the player could only jump while on contact with the ground:


    public class moveExample : MonoBehavior {
        ...
        public float isGrounded = false;
        ...
        void Update()
        {
            ...
            if(Input.GetKeyDown (KeyCode.W) && isGrounded == true){
                transform.Translate (0,moveJump,0);
            }
        }

        void OnCollisionStay2D(Collision2D collision)
        {
            if(collision.gameObject.tag == "Ground"){
                isGrounded = true;
            }
        }

        void OnCollisionExit2D(Collision2D collision)
        {
            if(collision.gameObject.tag == "Ground"){
                isGrounded = false;
            }
        }
    }


I also added a "Ground" tag in Unity and added that tag to the different objects that the player could land on.

For the second issue, what I really needed to do was add a force to the player instead of changing its physical location, which looked something like this:


    public class moveExample : MonoBehavior {
        ...
        public float moveJump = 200f;
        ...
        void Update()
        {
            ...
            if(Input.GetKeyDown (KeyCode.W) && isGrounded == true){
                rigidbody2D.AddForce (transform.up * moveJump);
            }
        }
    }

Just like that, our player now jumps, and can easily be adjusted as desired with some physics tweaks.

Thursday, September 4, 2014

Pitch Week!

This week was all about coming up with game ideas and pitching them. To start off, we came up with 15 game ideas and pitched them to several different people speed dating style. After getting that initial feedback we narrowed it down to one.

Then we pitched our ideas to a group of 12, and voted on the top 2 to 3 game ideas that would move on to the next round.

So far my game idea has survived, but it has yet to see the most brutal round of criticism and feasibility analysis. So what is this game idea?


Introducing....

TIMEY!

Timey is a cute little blob character that finds himself in a dark, mysterious world. He quickly finds out that he can instantly travel between two or three time periods, and when he thinks about time, the name Timey sounds sort of familiar to him so he decides that must be his name. He'll need to use his ability of instant time travel to work through his environment when he gets stuck, and some of the things he does in the past can have an affect on his future environment, like planting a tree or setting some termites loose. As he moves on he develops and gains new abilities, and discovers clues about what is going on.

The environment Timey finds himself in is a result of a bad person of course, who decided to destroy the universe by creating a paradox. To do this, the bad person found a way to travel back in time and kill a little kid that would have had a long productive life. Instead of destroying the universe though, Timey was formed and now has to figure out how to repair the damage before the universe disappears, or explodes, or otherwise has a bad experience.


I think his biggest challenge will be to survive the final game cuts as there are a lot of great game ideas still left out there, and only 4 or 5 will actually be worked on.