[Partial repost from our Tigsource DevLog]

ANNOUNCING — DONUT GET! for Android Has Been Released!

Download it for FREE at:

Last week I spent some time prototyping our next game in Unity. Of the block matching puzzle game variety.

This week I jumped back to focusing on Donut Get! iPad version and finishing up where I left off with the in app purchasing. I was running into a problem of it just crashing when a purchase started so I had to do a bit of optimizing to prevent that. So far so good, as now I can at least get it to work!

In app purchase screen to remove ads.

Thank you screen!

The textures for the sprite animation is eating up a ton of memory. I’ve tried to keep the cop animation sharp and crisp but I’ve had to bring down the res a bit to accommodate all the lower-end devices it keeps crashing. 🙁 So for now, I’m trying to stop crashing Android phone! haha

Later I hope to do some research to switch between spritesheets based on the memory available on the device. Not quite sure if that’s possible/reasonable yet.

Donut Get! Android is available on Google Play so check it out if you can. Let me know how it works for you!

iPhone version available soon!

The OG Flash version still at http://www.sokay.net/play/donut-get

Thanks for reading.


Shortly after I posted my tutorial on creating a Starfield with Away 3D Lite I tried to see how much I could improve performance with Away 3D 4.0, which was Flash 11 and in Beta stage at the time. I got caught up with finishing Donut Get! and working on Unity stuff and forgot about making a post about the demo. Here’s a post about that Away 3D 4.0 demo I made.

This was inspired by playing Kid Icarus on 3DS. During the flying segments, you’re always flying through clouds which is a great effect. I think they do something similar to this, where the clouds are 3d slices of a cloud which you pass through.

I created the clouds with noise. To get “3D slices” I used a 3d Perlin noise generator by Ron Valstar. The regular Flash noise class lets you generate noise on X and Y axis, this allows you to move in the Z axis to create slices.

View the tutorial demo here: http://blog.sokay.net/stuff/starfield2/

I used Sprite3Ds for the cloud slices, hoping that that would allow me to use a greater amount of cloud slices. In this demo I’m using 12 separate Sprite3D instances. It takes a while to generate the noise at the beginning, I don’t think this noise generator anywhere near as fast as Flash’s internal one unfortunately. I spent a long ass time adjusting the Generator and settled on this result which I felt was looking pretty good, rather than just settling for something that was fast to generate.

Sprite3D displays like a billboard/plane in 3D space that is always pointed towards the camera. The problem with Sprite3D is that it’s displayed as a point in space, and if the point isn’t within the camera viewport, it doesn’t display at all. You can see this issue as you rotate the camera to the side. I tried a list minute fix to change it to planes but I couldn’t get the planes to display. It may have something to do with the scale of the scene, the slices are like 15,000 width. Not spending any time trying to figure it out so good luck with it if you wanna try!
Continue Reading…

[Repost from our Tigsource DevLog]

We’ll be debuting the game this week during Sokay Play 8! Our gallery show during the Downtown LA Art Walk…

This week during the Downtown Los Angeles Art Walk. Check some photos from previous events on our Flickr.
If you’re in the Los Angeles area, check it out. More info at our blog. We’ve been doing it every month so there’s always next month!

So E3 was this week so I went out and hung out the homies. Playing some games, drinking, etc etc.

A lot of stupid times, but I had a blast!

Continue Reading…

[repost from our TigSource DevLog]

This week I started cleaning up some promo art that Ricky drew…

Planning on making a Donut Get! t-shirt with this artwork.

Sent out a Beta link to a buncha peeps yesterday, thinking through the feedback to see what I should try to address and what I’ll decide what is “intended to be like that!” haha! It’s a tricky thing for me because there are some things people want/expect to be explained clear as day, while I intend for the game to be a bit of an exploration. You’ll figure out more about it the more times you play. But the major issues I’ll need to address first will be things that make it easier to replay — shortening slower parts, making it easier to skip parts, etc.

I’ve been reworking the Donut drop patterns which have been super rough. Trying to create a flow to it.

These are the items that fall from the sky in the Donut segment
There are 3 types of items that fall…

  • Donuts: variety of 5 types, these are like points
  • Debris: these mess up your day, fall on your head and make you drop to the ground
  • Coffee: speeds you up, makes your jumps floaty, lasts briefly

With the unspoken objective of collecting as many donuts as possible, the player runs back and forth collecting donuts. Bouncing on the heads of the NPCs allows you to jump high into the sky and lets you collect many more donuts than you can get on the ground. You must do this while avoiding hazardous NPCs that knock you down or fight you. Also debris is falling as well so you need to avoid it. The coffee powerup is meant to be a temporary speed boost, I’m trying to design the pattern so that you can get a flow of coffee boosts if you navigate through the obstacles well.

Working on the donut drop pattern is a tedious mess because I’m doing it with a ghetto array and it takes a while to build the game and test changes. I would do this a completely different way if I was starting the project today but that’s another story… haha!

David’s waiting on me to do some more animation, I’m gonna setup some additional characters that will be added to the game sooner or later. And I need to take another pass at the fighting game…

[repost from our TigSource DevLog]

Last time I posted, I was wrapping up some of the fight sequence animations…

Then I focused on finishing up a bunch of NPC animation for the characters running around in the game…

The perfectionist in me isn’t satisfied with some of the animation but its GE (Good Enough) so I managed to move on to other things.

The game will be localized in 4 languages: English, Chinese, Russian, Spanish. Many thanks to my homies with language skills that were willing to throw down. So far most of the Chinese is complete, Russian is almost halfway.
Continue Reading…

[repost from our TigSource DevLog]

My recent focus was finishing up some fight scene cinematics. Last time I posted, David Rod had sketched out some storyboards to help me out, here’s what that turned out like…

Storyboard by David Rodriguez

I used most of the shots from this and drew them in Illustrator, and animated them in Flash. They turned out looking like this…

Cinema artwork by myself

Now these are animated and in the game. With this major task complete, that means one less major task to think about! We’re getting super close, just a few weeks left till we’ll be wrapping up.

Also, in the last few weeks I implemented a quick ‘n dirty localization system so the game will be able to be in multiple languages.

Next on my to-dos is to finish the NPC animation in the Donut Segment.

Hey Ya’ll!

I’ve been posting a Devlog for our current game project Donut Get! for a while over at the TigSource Forums. I just posted over there and I’m doing a re-post here.

Last time I posted I was animating the cop and got super frustrated when I couldn’t test the animation and the game wouldn’t compile. After that, I finished animating the cop and the game was brought to new life.

The following are a couple examples of how the artwork for the car portion of the game was created.

I used these sketches as reference when doing the vector linework for the game.

I imported the linework into Photoshop and added some color for the final look used in game. I used textures to bring some life into the flat colors of the artwork. Simple gradient overlay makes it look fancier than it is and gives a “night-time” effect.

For the past couple weeks I’ve been animating characters for the donut portion of the game and polishing gameplay.

Shown in this animated gif are Mr. Sprinkles and Officer Brown. Mr. Sprinkles is an NPC that will hang around and grab donuts as well.

I finally implemented new elements to the gameplay. Your objective is to eat falling donuts but you now have to dodge falling debris. Now that I started getting NPC animation in, I started filling in their different behaviors (like Mr. Sprinkles eating donuts).

The story is unfolding as gaps are filled in, I look forward to finishing the animation for the remaining NPCs.

David Rodriguez is just about done animating the fighting game segment. Tonight he sketched out some storyboards for a couple cinema scenes related to that segment. I’m very excited to have his animation in the game and playable!

Till next time…


[Check out our Away 3D 4.0 update to this post — Stars and Clouds in Away 3D 4.0]

This is a tutorial based on the simple starfield I created during the loading screen for our recently released game, Rush Hour Plus. I created it in Flash with Away 3D Lite.

This can make a good effect for flying through stars in space, cool particles for action sequences, pixies in an enchanted forest, lotta different things if you put your mind to it!

Here’s the starfield used for the loading screen for Rush Hour Plus .

View the tutorial demo here: http://blog.sokay.net/stuff/starfield/

I wanted to give a little motion to the loading screen with adding too much weight to the filesize (only like 30KB) so I opted for creating this starfield with Away 3D Lite.

Download Away 3D Lite from their repository. Their site has an old version which doesn’t include the Sprite3D class. Get it latest version here:


And here is the source for the main chunk of it, the StarField class:

public class StarField extends BasicTemplate

private var starCount:int = 200;
private var stars:Vector.;

private var starArt:BitmapData; // in this tutorial we'll create a bitmapData from scratch

private var rotateSpeed:int = 1;
private var rotateDirection:String = "none";

public function StarField()
mouseChildren = false;
mouseEnabled = false;

override protected function onInit():void
trace("on init");
debug = false; // setting to false hides debug info in template class

//create bitmapData for our material, 4x4 and white! (0xffffff)
starArt = new BitmapData(4,4,false,0xFFFFFF);

// create an Away3D Material with that bitmapData, this is the image used for our particles!

//var starMaterial:BitmapMaterial = new BitmapMaterial(new starArt().bitmapData); // use this if you decide to import an asset
var starMaterial:BitmapMaterial = new BitmapMaterial(starArt);

// create a Vector array to the size of "starCount"
stars = new Vector.(starCount , true);

// start filling the Vector with Sprite3D objects!
for (var i:int = 0; i < starCount; i++) {

var star:Sprite3D = new Sprite3D();
star.material = starMaterial;
star.width = 4;
star.height = 4;

star.alignmentType = AlignmentType.VIEWPOINT; // I forgot what this does... haha! look it up!

star.x = -400 + (Math.random() * 800);
star.y = -500 + (Math.random() * 800);
star.z = -1000 + (Math.random() * (1000 + 800));


stars[i] = star;

// offset the stars a bit to make them look pretty like!

//scene.rotationY = 0; // reverse direction
//scene.rotationY = 180; // towards screen

scene.rotationY = 160; // nice dynamic, over the shoulder angle
scene.rotationX = 10;


// sets the rotation to look in a certain direction

public function lookForward(): void {
scene.rotationY = 180;
scene.rotationX = 0;

public function lookBackward(): void {
scene.rotationY = 0;
scene.rotationX = 0;

public function lookLeft(): void {
scene.rotationY = -90;
scene.rotationX = 0;

public function lookRight(): void {
scene.rotationY = 90;
scene.rotationX = 0;

// set a rotation direction with the keys

public function rotateLeft() : void {
rotateDirection = "left";

public function rotateRight() : void {
rotateDirection = "right";

public function rotateUp() : void {
rotateDirection = "up";

public function rotateDown() : void {
rotateDirection = "down";
public function rotateNone() : void {
rotateDirection = "none";

// this onPreRender function fires every frame, thanks to our nift Away3d template file!

override protected function onPreRender():void

for (var i:int = 0; i < stars.length; i++) {

var star:Sprite3D = stars[i];

star.z += 20; // stars move forward on Z-axis every frame

if (star.z > 800) {
star.z = -1000; // when stars move past limit of 800, set them back to -1000 so they loop forever!


// handle rotations!
if (rotateDirection == "left") {
scene.rotationY += rotateSpeed;
} else if (rotateDirection == "right") {
scene.rotationY -= rotateSpeed;
if (rotateDirection == "up") {
scene.rotationX += rotateSpeed;
} else if (rotateDirection == "down") {
scene.rotationX -= rotateSpeed;



The class uses the Away3D BasicTemplate class, which sets up the view and basic scene super quickly. I believe there’s also a FastTemplate class, but for some reason it doesn’t work with Sprite3Ds so watch out for that! And by default the BasicTemplate has a debug function built in, so you have to switch it off. The BasicTemplate is good for setting up something quick! But I’d rather setup something myself ideally.

It creates 200 Sprite3D objects, which use a white 4×4 square of BitmapData for its texture. Those are then scattered randomly in 3D space and on each frame it pushes them forward 20 units. I added in some keyboard controls so you can mess around with it (arrows and WASD).

Download the source here:

The source can be run from an FLA (CS4 format and AS3) or you can execute it as a Flex Actionscript Project (just make sure to include the lib folder as source, and swc folder).

I hope this helps!

Away3D is a huge improvement over Papervision. I still haven’t done any animated character demos with it but we’ll see if I ever get around to it!

For code styling, I’m using the CodeColorer plugin. Very nifty!

We’ve just released a teaser for our upcoming game, Donut Get! Watch it in HD on Vimeo.

Developed in Flash, it’s the story of greed going out of control. A cop catching donuts falling from the sky and his life spiraling into world of trouble.

Details will emerge as we creep closer to completion. Stay tuned into this blog and donutget.com .

Tiled Map Editor

I was looking into XML Tile Map editors a while ago and I found Tiled Map Editor. The site looked nice and was recently updated so I thought it looked like a good one to try. I recognized the demo maps displayed in the editor screenshots, they were from The Mana World. I contributed a few tiles to the project back in 2004, about midway through my journey through college.

During that time I was trying to figure out how I was going to be able to make games for a living. Although I was developing games like Thugjacker in my free time, I never believed there was a career in doing Flash games. I was preparing to become a 3D environmental artist, hoping to break into the game industry by designing a Half-Life 2 map. But I’ve always had the urge to explore different 2D art styles — I had a huge fascination with pixel art. During that time I would browse the Pixelation forum. The pixel art there was inspiring and I wanted to get in on it, but it was kind of hard with no direction. I just wanted to make some assets and learn the craft, not do all the characters and everything else. Shortly after that, I found a post recruiting people for The Mana World.

The Mana World is a free and open-source 2d MMORPG. It runs on the eAthena server, which is open-source software that emulates a Ragnarok Online server. I thought the game looked cool. It looked like Secret of Mana which was one of my favorite games growing up. It also reminded me of Ragnarok Online, which I didn’t play much but thought was super cool (I loved the art). So I jumped in.

Back when I first saw it, the game was super rough. Laggy. Buggy. But I loved being a part of it, the team was dedicated. It was exciting to log in everyday and see what changes were made while I was away. Most of the game development discussion was done in IRC chat rooms. There were many contributors. And good number of enthusiasts as well, which mostly played and gave feedback.

These are the tiles that I contributed to The Mana World.

I ended up dropping out of the project shortly after finishing these tiles. I had to devote more time to finishing school and my own projects. Looking back, it was my first experience working in a game development team that wasn’t just me and Ricky. I got some practice with working remotely with a team that was based in Europe. I got to feel the pressure of having to deliver game assets and the joy when everyone enjoyed what I contributed. It was also my first exposure to the concept of SVN — which saved me from feeling dumb when I first started using SVN at work.

I think it’s important to remember there’s always a game team out there that could use some help. People in school or just trying to break in the industry can look for these opportunities to gain some experience, and hopefully that leads to more confidence and some good portfolio pieces. From my experience on this project I knew that I could handle tiled pixel artwork. I wouldn’t revive this ability until 2007 on LUV Tank.