Be a Supporter!


Main News Movies Games Audio Art Favorites Reviews Stats 1,311 Fans
Follow Zanzlanz

Zanzlanz's News

New game in the making :D

2015-06-16 15:18:48 by Zanzlanz

Does this look challenging enough for ya?

I plan on releasing this on Newgrounds, along with Android and hopefully iOS.

- Zanz

"Across the Drop" album release!

2015-05-15 17:22:23 by Zanzlanz

I'm excited to announce that I've released an album today!

The album is currently on Newgrounds, SoundCloud, and Bandcamp! It will also be coming to iTunes and Spotify.

There are 15 tracks in total, containing dubstep, chiptunes, trance, dance, and more! Check it out! :D



- Zanz

February Album Writing Month 2015

2015-02-10 00:10:23 by Zanzlanz


I just wanted to let you guys know that I have been, and will be posting music every other day for the entire month of February! The music will include dance, dubstep, chiptunes, orchestral stuff, trance, and possibly some other weird genres.

Yep! I'm currently participating in February Album Writing Month (FAWM), where I am set to make 14 tracks in 28 days! Last year I made the album "The Place That Takes Shapes", and this year I'm hoping to make an even better album! :D

For this album, all 14 FAWM tracks are free until the the end of the month. I will then re-master and spruce up the album, and release it on iTunes/Spotify/etc.

Here's the album:

You can order the album here:

Anyway, I hope you enjoy the album as I make it!
- Zanz :)

End/Start of the year stuff!

2015-01-01 17:53:01 by Zanzlanz

Hey NG! :)

Happy New Year! I wrote a post on my website about all the things I did in 2014! Graduated high school, started college (3.82 GPA on my first semester - 18 credits done!), got my license, turned 18, released 2 games, made 19 music tracks... etc etc...

Check out my 2014 post if you're interested!

Also just recently I released Snowman Slide! Thanks for your positive feedback. In a sentence, Snowman Slide is a randomly generated sliding puzzle game about a snowman who wants to be a unicorn.

Play Snowman Slide

*Drops mic* I really wanted to release at least 2 games in 2014, so I rushed Snowman Slide a bit. I do plan to make a sequel to the game (not involving snowmen), so hopefully that'll go well. :)

Lastly, I am STILL porting Mine Blocks to AS3. After about 5 months of work, here's how it's going so far, in a gif:


Whoohoo 2015's going to be awesome! Thanks Newgrounds! Thanks Tom! Thanks all 1234 of my fans here! <3

- Zanz

Snowman Slide - LD31

2014-12-08 21:55:31 by Zanzlanz


I somehow found time to participate in Ludum Dare 31! I was able to participate in the jame to make a game in the timespan of 72 hours. I'm not really proud of the game right now, but I know if I take some time to polish it up, it can be something I would be really happy with. :D

Anyway, the game is called Snowman Slide (I think. It's a working title, I suppose). You can find it on Ludum Dare here:

And you can find it on my website here:

Hope you enjoy it! Hopefully I'll be releasing a full version on Newgrounds in the upcoming weeks. Stay tuned!
- Zanz

Porting AS2 to AS3

2014-10-27 11:31:58 by Zanzlanz

Hi! So for the last few months I've been working intensely on the ActionScript 3 port of Mine Blocks. I've converted tens of thousands of lines of code from AS2 to AS3, and in this process I've learned A TON about how AS3 works compared to AS2. I'm actually quite familiar with AS3, but porting from a MovieClip-based game was a totally different monster for me.

This post is mainly to describe the main differences, issues, and successes I've encountered when porting from ActionScript 2 to ActionScript 3.

Disclaimer: This assumes MovieClips and Spaghetti-coder ;)




When porting, there are 3 stages of errors to address as you go through the game.

There are two passes by the compiler. One of the stages lists a massive amount of errors. The other stage lists only a couple errors at a time, and it can be irritating to continuously fix-build-fix-build-fix. Then there are the run-time errors. Some will break the game, others will throw a ridiculous amount of debug errors. There's a point where run time errors are just seen as simple bugs. That's when the main pain is over, and all is left is bug fixing as usual. xD

AS3 is clearly much, much faster.

The world generation of Mine Blocks in AS2 takes about 30 seconds, while in AS3 it only takes under 2 seconds! Incredible! I've read that AS3 was 10 times faster than AS2, but I thought that was an exaggeration! It's really not. Apart from the lag generated by the debugging output, I haven't really noticed any control latency or lag, even with such a complicated game as Mine Blocks.

This is a pretty good reason to port a game from AS2 to AS3.

No code can be written on an object.

Code can be on the object's timeline, or their parent's timeline, but not the object itself. Usually it's pretty easy to port this though - simply convert the onClipEvent to an event handler on the parent timeline. Key and mouse listeners are the same story. They're found in the KeyboardEvent and MouseEvent listener classes. :)

Going from attachMovie to addChild requires the name property to be passed to the new object.

So dropped items in Mine Blocks checked to see what their name was so they could recieve their item type, count, enchantments, etc. The only catch was that in attachMovie, you supplied the clip with an instance name, which set the "name" property. with addChild, you need to give the MovieClip a reference in a variable (most likely a tmp one), and then using that reference, set its name. Pretty simple. Causes headaches though.

Functions (and all other variables) can only be instantiated once.

In AS2, you'd "accidentally" write:

var a = 5;
var a = 5;

and no one would have a fit. But in AS3, the compiler gets a bit angry! Well the same goes for functions. In Mine Blocks, one MovieClip handled all of the different types of blocks, all on different frames. Some blocks had special properties, like flowing water, falling sand, grass checking for sunlight, healing crystals healing, and even leaves leafing. To fix the multiple instantiations, frame one has

var behaviorFunction:Function;
and any frame using a new function will use an anonymous function reference:
behaviorFunction = new function() { /* stuff */ };

It's such a simple fix, but it was a lot of work to change everything. Porting isn't easy!



AS3 handles events differently.

For better or for worse, they're different. In ActionScript 3.0, they continue to run even when the instance of the MovieClips is removed from the display list. If you have a clip with an ENTER_FRAME event, then go to a different frame that doesn't contain that clip, the ENTER_FRAME event still runs. Additionally, if the clip is added to the display list again, the event will be running multiple times at once! This is due to how the garbage collector works in Flash. Do a search for articles about Flash's garbage collection to get a good idea how and why this happens - it's really helpful to know. Anyway, I had to come up with a few hackish ways to get past some of the issues created by this behavior.

The error you'll usually get from this:
"TypeError: Error #1009: Cannot access a property or method of a null object reference." wherever there's a reference to a different clip (including MovieClip(root) ). Basically, the MovieClip doesn't really exist, so its properties are all null, including its reference to root.

One way to fix this issue is to listen for when the MovieClip is removed. When it is, remove all listeners.

addEventListener(Event.REMOVED_FROM_STAGE, cleanupListeners);
function cleanupListeners(e:Event) {
    removeEventListener(Event.ENTER_FRAME, ef);
    removeEventListener(Event.REMOVED_FROM_STAGE, cleanupListeners);

A similar solution that fixes this issue is by starting the ENTER_FRAME event function with:

if(MovieClip(root) == null) return;

This hides the bigger issues though, so if you're using this post as help for your own project, only use this if you're absolutely certain this is the solution for your situation.

Changing frames instantly runs code.

This can cause a stack overflow (try putting gotoAndStop(2); on frame one, and gotoAndStop(1); on frame 2). A problem with this is that if you attach a MovieClip and then change its frame other than frame 1, the initialization code wont run, creating errors. Just be aware. This error will be a give away:
Error #1023: Stack overflow occurred.

Sending GET and POST is fairly different in AS3.

I'm not a professional at how to send and recieve from a server, so I shouldn't post the code to port, here. But there are some resources online to help with porting to it. If you guys really want, I'll write the code. :)



1) random(n) was removed. Here's a replacement for the random function for you (just make sure you reference it properly, through MovieClip(root) or something):

function random(n) {

2) new Sound(x) was changed. setVolume and setPan were moved to the soundTransform class, which can be applied to the soundChannel class. If I remember correctly, only 32 sound channels can play at once.

3) _x, _y, _width, _height, and _rotation all lost their underscores in AS3.
4) _root is MovieClip(root) in AS3.
5) _xscale and _yscale in AS3 are scaleX and scaleY. Also they are out of 1, not 100.
6) _xmouse and _ymouse have changed to mouseX and mouseY.

7) onEnterFrame = function{ ... } is an event in AS3. It would look something like this:
addEventListener(e:Event, someFunction);
function(e:Event) { ... }

8) hitTest(...) was replaced in AS3 with hitTestPoint() and hitTestObject(). I believe it's the same thing, just split into two functions.

9) int was added to AS3! The Number class is a floating point decimal, still. The int class is an integer.

10) When referencing to a property of an undefined element of an object/array in AS3, it will throw an error. For comparison, in AS2 it would be undefined.

11) swapDepths(...) in AS3 is now achieved through setChildIndex(...). Similarly, getNextHighestDepth() can be achieved through numChildren().

nn) Soooo much more.



There are a lot of interesting differences to be addressed when porting from AS2 and AS3. It can be a pain to convert, but there's always Find/Replace to help out. Some times it can be useful to comment out code when porting, so you can focus on certain errors first.

If your game or project is fairly big, I do recommend porting it to AS3. It's possible. If the project is as big as Mine Blocks, you need to take in account that it'll be about half of a year of work... but if that means you can benefit from the new features of AS3, then go for it! :D

If you have any questions related to porting AS2 to AS3, feel free to reply to this post.


2014-09-21 23:41:18 by Zanzlanz

Oh hey Newgrounds! I totally forgot to mention it... but I'm 18 years old now!

Yeahaha, I'm an adult now! I turned 18 on September 3rd. I kind of feel the new responsibility of being an adult, but I'm definitely the same Zanz on the inside. I did spontaneously grow a messy mustache and beard though, so that's quite elderly of me.

So also in my life, college is going pretty well! So far I have 100% in all of my classes. My workload is kind of up there, with 18 credits this semester, but I think I'm handling it well.
I'm meeting a lot of nice people - I've even joined the student-run game development organizationthing here at the school. They use Unity, and I'm not sure how happy I am about that. But whatever, it's pretty cool. We're working on a game called Paper Dream.
Also, in my programming class we are learning C++, which is something I've been really wanting to learn for a while now!

So more relevant to my games: I've finally fixed an issue with the development of Lab Lights 2. I am a bit hung up on a random stack-overflow glitch in the Mine Blocks AS3 port. I did a little bit of work on ZanzCode so now its interpreter isn't totally useless. I totally forgot what I was last doing in MB2 so I haven't touched that in months (sorry).

Well that's about it. Take care, my amazing friends and followers,
- Zanzy

Yeeu whippersnappers get off meh lawwn! ;)

Lab Lights 2, and College!

2014-08-24 17:57:47 by Zanzlanz

Hey everyone!

I'm a college student now. I'm living on campus with 5 other roommates at a technical university. I'm getting a degree in Computer Science. More specifically, my courses revolve around game software development. I'm going to college for game dev!! WOOT!

Anyway, things are pretty insane. My progress will be greatly fragmented. I'll probably focus on the Mine Blocks AS3 port (porting Mine Blocks will take a long time).

I'm also working on a new game! Yep! Lab Lights 2!! Here's an image announcing it:

Lab Lights 2

This image isn't really showing much of what will be new. I don't want to spoil everything, but there's at least be another "player" and some cool mechanics with lasers. :3

Stay tuned! I can't wait to get this game going further. The hardest part right now is coding those 2x1 crates. Pushing them up and down stairs? So many corner cases!

Well anyway, that's about it! Obviously I've been too busy to do Ludum Dare (first time I've missed it since I started participating), but hopefully Lab Lights 2 will make up for that.

Thanks! Comment and stuff if you want - it'll help me get used to working from college. Since technically game dev is my hobby-job... jobby. Sorry, haha bye. XD
- Zanz

Mine Blocks 1.26!

2014-03-28 19:16:03 by Zanzlanz

Hey Newgrounds!

Mine Blocks 1.26 has just been released!

It now has skins, minecarts, slimes, lemons, dozens of bug fixes, and a huge improvement to performance! I hope you guys enjoy! :D View the entire changelog


Play Mine Blocks on Newgrounds!


Thanks so much for the constant support everyone! Have fun with the update! :D

- Zanzlanz

Released an Album!

2014-03-07 19:54:03 by Zanzlanz

Hey hey hey!

I released my first ever album, The Place That Takes Shapes! It was made all in February for FAWM. It's hyper, it's weird, it's me in a nutshell! In general, it's Trance, Orchestral, Chiptunes and Dubstep.

(View on SoundCloud or Bandcamp)

3880797_139423958353_soundcloud1.png   3880797_139423960983_bandcamp1.png

Here's the mix and visualizer I made for the release! Enjoy!

Also - and I'll put the bad news at the bottom so no one notices it - I'm not going to Pico party this year. It breaks my heart but I guess last year was all I could ask for anyway! I'll stop by the chat to contribute a happy emoticon or two :)


- Zanz