Two new films up. The Submariner and The Noise.

This is a trailer for my thesis film at CSULB. Its my latest work and will be completed over this next summer. You can watch it in full screen and at a higher resolution at YouTube.

I’m taking a lot inspiration from Soviet propaganda filmmaker Sergei Eisenstein.

Shooting started at the end of last semester when we did all of the live action footage, then miniatures and effect shots were done in April. Now I have many hours to spend editing and scoring the whole thing. It’ll add up to a great lot of sweat, but definitely worth it. Continue Reading…

LE screen 1

It’s been a while since I updated on the old Liberty Engine so here it is with a lot more polish than the last demo. You still can’t modify the objects or forces just yet, but I sharpened up everything else. It’s running much more efficiently, with stats, an improved console and new keyboard commands. It also includes a “Help” button that will explain all of its functions on mouse-over.

Here is a swf copy as well as an exe. I haven’t seen much of a performance difference between the two:

The default “memory” setting is 60 seconds, so if you play more than 60 seconds it will begin deleting old data. This is meant to prevent the program from filling your computers memory and lagging or crashing. However, you can set the memory value to Infinity and see how much you can hold without slowdown. I found a loss of about 2 or 3 fps with 1 hour of data. I average about 6 or 7 calculated seconds per actual second (Scalc/S) so you should be able to set the rate of time passage to as high as 6 without playback time ever passing up calculation time. But play around with it and let me know how it runs on your machine. I could use the feedback!

With your time rate set to 6, you can get through an hour of simulation in 10 minutes.

Continue Reading…

Series: Robot Music I, Robot Music II: Modes, Robot Music III: The Circle of Fifths, Robot Music IV: Scales of the World

Robot Music Logo - Circle of Fifths

So far everything has been derived from the Major Scale, but now I have some new scales to introduce. These are foreign and exotic scales with fascinating new sounds!

After RM1 as a proof of concept, RM2 introduced the Major modes and RM3 explained how they work. Now RM4 will introduce new scales and–guess what?–RM5 will explain how they work. This episode also includes a bit more information on chords.

TO THE SCALES!

Continue Reading…

Series: Robot Music I, Robot Music II: Modes, Robot Music III: The Circle of Fifths, Robot Music IV: Scales of the World

Robot Music Logo - Circle of Fifths

New logo baby.

Robot Music I proved that a pleasing song can be randomly generated under the right guidelines. Those guidelines stuck to a 4/4 rhythm and the C Major Pentatonic Scale.

Robot Music II proved that the C key could be replaced with any other (changing the root). It also showed that the Major Pentatonic Scale (5 notes) could be expanded to the Major Scale (7 notes) without harming our method. And most importantly, this section covered modes and demonstrated that shifting a song’s mode can significantly change its tone. Knowing that the tone can be changed, how can we control it?

Robot Music III introduces the Circle of Fifths. It is a basic musical tool that will help us predict the impact of a mode of the Major Scale. With it, our Robot can place notes along 2 dimensions (Consonance vs. Dissonance, Dominance vs. Sub-Dominance) and estimate the emotional impact of a note according to an arbitrary algorithm based on personal tastes.

This installment is the first to go into the perception of music. To begin, we must discuss aural perception and some musical fundamentals. That technical information will be related to our previous musical concepts by the use of the Circle of Fifths. And finally, a demonstration of mode relationships and some discussion of their popular uses.

You probably already know some of this, so I’ll try to move fast.

Continue Reading…

Close Up Die

Series: Robot Music I, Robot Music II: Modes, Robot Music III: The Circle of Fifths, Robot Music IV: Scales of the World

It’s been a long while, but response to the last music post was enough to get me revved up again. Now it’s time to continue with the Robot Music series on procedurally written music.

I wanted this tutorial to be simple, but educational enough that if you wanted to study more, you would know where to look. For that reason, there is a lot of music vocabulary in here. I’ve done my best to explain each term as it comes up, but if any remain confusing, don’t hesitate to look them up elsewhere or even skip them. You can probably forget all of the fancy words and still understand the important concepts being discussed.

In the last session we rolled a die to generate riffs in a Major Pentatonic Scale. Sticking to that one scale limits the sound of your music a lot, so now we’ll mix up our technique by exploring modes. We’ll be replacing the Major Pentatonic Scale with the full Major Scale. The pentatonic only has 5 notes, while the entire Major Scale has 7. Those last two notes can be seen as bothersome* which is why they were left out last time.

Most people’s first musical revelation is the amazing power of switching between a Major scale and a Minor scale. It’s often generalized that when a song is in the Major scale it sounds happy and when it’s in a Minor scale it sounds sad. That is the effect we will be looking into to change the emotional impact of robot songs.

Continue Reading…

Update: The Liberty Engine: Running Clean

I’ve been all damn talk for too long. Ladies and gentlemen, I give you, the Liberty Engine Demo!

Liberty Engine demo 1

CONTROLS:

-Click the scrolling play button (or press space) to pause the animation.

-“In” and “Out” values determine number of seconds into the animation that the loop will begin and end.

-“Rate” determines the speed at which time will pass (seconds per second).

-“Duration” is the duration of the loop. If modified, it will automatically change the “Out” value.

-All forces in the system are set to enact at the 10 second mark and all calculations end at the 30 second mark.

Aside from the animation controls, this is not an interactive demo. Interactivity will probably be in the next one, but this demonstrates all of the engine principles. You’ll notice a slight lag period just as the swf loads. That’s because it is calculating all of the physics for the entire animation during the first frame. It saves all of that data and then replays it based on the passage of time. That’s why you can scroll back and forth or play at different rates (super slow-motion or fast-forward). The animation is actually set to 40fps, but I guarantee your browser can’t keep up with that speed. Fortunately, because the engine is time based rather than frame based, dropped frames do not effect the rate of movement. Oh, and by the way this is in AS2. I’ll translate it to AS3 later.

I haven’t mentioned the Liberty Engine up here very much, but it’s been a project of mine for over a year now. The concept behind the Liberty Engine is to create a physics engine that ANYONE can use; to liberate the thousands of young game developers without the programming or mathematical know-how to build the kind of games they dream of and provide it for public use free of charge. I hope, with a powerful and easy-to-use engine like this one, to foster a serious indie gaming movement at the grassroots level.

Continue Reading…

I’ve been putting some work into a new game in the past few weeks. It’s a game that takes place within the Thugjacker world. You’re not playing as Deebone, as you might expect. Instead you play as a rogue police officer with his mind set on one thing. Donuts. Donuts falling from the sky.

Donut BG

This is a background sketch I drew for the game. I’m vectorizing it now and shall paint it after I’m finished with that. As usual, I’m doing the programming and background design with this game. Ricky’s working on some character designs so he should be passing them my way soon.

As anyone who’s played any of our games before should know, this game’s gonna be a bit different. Good times 🙂

(See TraceManager (AS2) Update)

Finally I put some code up here:
“TraceManager.as”
“TraceManager Test.fla”

This is an AS file I put together for some big engine work. When your jamming together a lot of code and a big library of functions, it becomes difficult to keep track of what’s working and what’s breaking. For me, constantly turning traces on and off and having to figure out the meaning of traces that I wrote weeks (or even months) ago gets old fast.

Lately, my physics work has me running more functions than you can shake a stick at; functions within functions within functions, nesting like you wouldn’t believe. This leads to the most hideously complex tracing, almost nullifying the reason you trace data to begin with. So I put together this TraceManager to end such problems once and for all:

_________________________________________
Time(seconds): Depth: Function:
—————————————–
0
________________+0____function1 (test1){
0
________________+1________function2 (test1 1){
0
________________+2____________function3 (test1 1 2){
0
________________-2____________} function3—RESULT( test1 1 2 3 )
0
________________-1________} function2—RESULT( test1 1 2 3 )
0
________________-0____}function1—RESULT( test1 1 2 3 )

-This trace is from the example fla. It runs like so: function1 takes a string (“test1″) and adds a ” 1″ to it, then passes the result to function2; function2 adds a ” 2″ and passes the result to function3; function3 adds a ” 3″ to the string and returns it. Each function returns its own result to its parent function until all functions are complete.

Continue Reading…

Series: Robot Music I, Robot Music II: Modes, Robot Music III: The Circle of Fifths, Robot Music IV: Scales of the World

(This post features the hip guitar stylings of none other than ME! I’ll play some real life, randomly generated, Robot Music! The link is at the end.)

Close Up DieI’ve wanted to see more procedural music in games for a long time, but the most we see are pretty sorry attempts. I’m not just talking about “shifting volume on pre-recorded riffs” procedural, I mean “the game is writing its own live soundtrack” procedural.

“But Chris, that doesn’t even happen on consoles! We can’t do it in flash, no way!” Sounds difficult or even impossible, but it isn’t. The only problem is it takes an understanding of tricky programming concepts and tricky musical concepts. Without programmers that also study music theory, we just don’t see procedurally written music.

Well, I’d like to help change that. I know a thing or two about music and a thing or two about programming so in this article I’m going to do my best to tip off any programmers interested in putting together a simple music generator. Today’s generator won’t be truly procedural, but it’ll start things off in that direction.

And if you play a little music, but don’t know how to write a song, maybe this article can help you out too.

Continue Reading…

Hello everybody! I am Bryson Whiteman, the one and only. And I’m here to say a few words about all this Sokay business. It may seem like all this happened over night. IkeaLike I put it all together as I do Ikea furniture, spending half a day flipping pieces around trying to match them to the clearly illustrated drawings, sweating and frustrated, cursing when the drawer turns out to be upside down. I’d like to squash all these rumors and confirm to you once and for all that all this Sokay business did not happen over night. It happened over the course of many nights, as a matter of fact, and I’d like to say some words about it.

Sokay 3d

In 2002 I created the Sokay label with my good old friend Ricky Enriquez. We had just began work on a new project, a video game made in Flash. The then un-named project was meant to push our capabilities as far as possible. We saw the success of the format in games like Alien Hominid and wanted to go even further to provide an experience similar to popping that new cart you got for your birthday into your Sega Genesis. We weren’t aiming to simply make a single stage. We wanted to create a full game. With a full world. And characters that lived in the world, that weren’t just placed there arbitrarily. This project became Thugjacker, which is the first game released by Sokay.

Thugjacker: Game Over (white)

Ricky and I had worked together on many projects over the course of several years at that point, nothing that ever came to completion. Comics and animations mostly. Thugjacker was our first game. We designed a pipeline that was adapted from a previous Flash project and just saw where it lead us. I worked with my lack of actionscript experience and kept it real, we didn’t want to lower expectations just because it was difficult. We were going to make something that we were proud of.

We released a 2 level demo of Thugjacker to the world on Thugtober 31st, 2004. A month prior to that we released a teaser animation. I was biting my nails because I had no idea how the world would react to it. The game impressed colleagues, fellow artists, but I had no idea how the general public would interpret it. I discovered soon that it was a success, all the work paid off. The release changed the direction we headed.

It wasn’t until this year that significant movement has taken place within the group. Luv Tank: Happy Run On February 27th of this year we released LUV Tank. It was a small project that I intended to jumpstart the team again. A few new members join in with David Rodriguez creating the concept and doing the character animation and the duo Trek & Ryan G contributing a soundtrack. Ricky returned to do the cinema scenes and I did the design, planning, Flash work and background art. A much different game but it retained that “Sokay Spirit”.

So what are we doing here? The point of this blog was to get out some ideas. I quickly discovered that there’s a lot more work that goes into game development than one would imagine without the firsthand experience. It’s great to think of great ideas for the “ultimate game” but it’s incredibly difficult to fill in the gaps of your idea to make it a cohesive experience. And it’s even more difficult to make it a fun and enjoyable to a wide array of people. I look at a lot of these principles as common sense because these are qualities that I’ve absorbed from a lifetime of game experience. I’m also keen with expressing these ideals as I’m trained as an artist. It’s great that we have this internet as a vast resource and our technology is all peachy these days so anybody with a bit of spare time and a bit of patience can bust out a game in Flash and show it to the world. Green Day - DookieThere’s a lot of talented people out there. But for one reason or another they don’t seem to “get it” or maybe don’t have the determination to “make it happen”, when it comes to making quality work. I thought things were kind of bad a couple years ago when we released Thugjacker but it seems that things have grown even more diluted. More people are out there making stuff but they’re making average games. But if you dig, you just may find gold. And you will. I still think our work is “buried treasure” and I don’t think there’s anything wrong with that. Sometimes it takes time for people to notice brilliance.

You might consider this blog an excercise in arrogance. There’s no problem with that. If you disagree, call us on our bullshit and fight back. We want to bring about discussion of serious topics about a medium that often is not taken very seriously. Sometimes you have to fight for the truth, even if it’s your own.

That’s all for now, thanks for reading! I know that fool Chris types too much but we want to make this a varied experience. I don’t care to get as serious as Chris a lot of the time so we’ll see how things turn out.

Adieu.

-Bryson