People are developing games in Flash since aeons. But in the last 10 month there was a small revolution taking place. First Adam Atomic released the Flixel framework for 2D games (I also made an interview). Only some months later Chevy Ray Johnston came up with the FlashPunk-framework. Both Flixel and FlashPunk are written in ActionScript3, both are aimed mostly at indie-games, but also allow commercial uses. The number of people who are using this frameworks are constantly growing.
Time to ask Chevy Ray Johnston some question about FlashPunk. What are the differences to Flixel? For what reason another framework?
FlashPunk and a little code-example.
Very first question: Why FlashPunk?
I like to get in over my head on things completely, it’s how I roll. I was an object-oriented virgin just one year ago, and FlashPunk evolved out of my endless naïve determination to learn the ropes and do something ambitious with it. If you mean why the name “FlashPunk”, it’s because I’m sort of a punk myself; I don’t follow the rules (often to a fault), I tend to do things my own way and take all advice with more than a grain of salt. I also wanted a name that was amateur-friendly, not too pretentious, and sounded kind of cool.
How did you start the project and what role did flixel play in the process on the one hand, and technology (or coding-style) on the other?
The project started as not a framework, but merely a set of AS3 performance tests coded in FlashDevelop. I wanted to see how Flash ticked, how fast everything ran, and what kind of options were available when it came to working with bitmaps. This naturally lead me to Flixel, which I immediately started playing around with. It didn’t stick with me, though; I have a particular approach to how I code my games, and was uncomfortable with how it operated and didn’t like being ignorant of the magic behind the curtains. So I tore it apart and discovered that it wasn’t all that complicated, and immediately (and without rationale) decided that I could create something like this for myself. Now here’s the part where you insert a week (maybe two) of extensive and boring internet research. I downloaded everything, looked up tutorials on blitting and framerate, and have probably read every topic on Flash rendering that you can find. I tore through Flixel’s code and Pushbutton’s code, did dozens of various performance tests, and after several phases built myself a core engine that would grow into the FlashPunk library. As far as technology goes, FlashDevelop has pulled through for me all the way, and was probably the number one reason that I was so comfortable working with AS3. It’s a very clean and straightforward program, completely free, and very rarely feels awkward or quirky to use. If you’re on a Windows platform, I recommend it doubly.
Is there a special “design guideline” or “underlying philosophy” when you started with FlashPunk?
Fast, smooth, and lightweight. Due to the often slow and sometimes clunky nature of the platform I was working with, FlashPunk often sacrifices “proper” object-oriented coding approaches for what I decided were considerable increases in performance. This is especially true where sprite rendering and collision were involved. Flixel’s base Sprite objects come with a lot of utilities for physics and animation, which make them very multi-purpose, but I wanted FlashPunk to have more significant steps in its inheritance structure. So as a result, FlashPunk gives you more control over its base-level classes, so if you wanted to build an extention to it at all, you wouldn’t have to hack any of the core classes and instead could just branch out from its core Entity class. I include several extended classes of my own (the most useful of these being Actor and Acrobat) to work with animated spritesheets, scrolling and tiled backgrounds, tilemaps, and a fast rectangle/bitmask collision system. So basically, I set myself up so it would be easy to add cool new classes and extensions into the framework afterwards, also giving users significant performance control themselves if they so desired.
If I compare flixel with FlashPunk, the style of the framework looks to me much more like coding “near to hardware”. Do you have a background in non-scriptbased programming? Or is it just taste?
I think I answered a bit of this question in my previous answer, but FlashPunk merely has less going on in the background thank Flixel; this is because I simply wanted a more base level, lightweight system that I (and others) could work with. If I am going to create a tic-tac-toe game, I personally don’t want a bunch of FlxSprites with physics and parallax scrolling and stuff built-in. I program each game differently based on what that game requires to operate optimally, and FlashPunk’s collision and animation systems are designed in a way that allows you to use their functionality and apply them however you want (relatively speaking). There’s definitely some taste issues too, as would be expected, and this definitely shows in the difference in structure between FlashPunk and Flixel. I think the most important difference is that Flixel uses a framerate-independent timestep, and FlashPunk uses a fixed-framerate timestep, which change significantly how you handle your animation and collisions in your games.
FlashPunk and Flixel “joined forces” and for example link to each other. Unusual. How did you come up with that concept?
I had been discussing with the FlashPunk community about my plans to turn the FlashPunk blog/website into a more active department regarding ActionScript3, coding, and game development in general rather than just a news source for the FlashPunk library. I learn things at a freakish rate and absolutely hate keeping interesting discoveries to myself and wanted an outlet where I could share, discuss, and debate coding techniques, engines, algorithms, tips and tricks regarding Flash game development with other people. My foolish self not only wanted to found a significant game library for Flash developers, but also a community and set of resources that would be a must-visit for all Flash developers. Adam caught wind of my rantings and we got in touch, as it turns out that his own ambitions are parallel with mine. Plans for a website have been discussed, but don’t expect anything to surface until Adam and I both get a significant chunk of free time, as we’re both busy guys. When Adam rebuilt the Flixel website for the release of version 2, he linked out to FlashPunk on his frontpage, so I decided to make the affiliation a full-circle. So yeah, to say we’re not competing is an understatement. Neither of us cares whose library you use, just join in on the indie spirit and show us what you can do and make some awesome games!
Is FlashPunk better than Flixel?
His logo doesn’t even animate! Hot pink and cogs is the new way, baby. Feel the love.
FlashPunk really brings performance-power to webbased games with lots and lots of bitmaps and sprites. Don’t you think, that Adobe would also embrace such framework? Are the indies coming to push Adobe in certain directions with developments?
With the ruckus and attention that Flixel and FlashPunk have captured, it’s doubtable that folks in Adobe aren’t aware of our libraries. I think one direction libraries like ours are pushing Adobe is definitely for more (and faster) low-level bitmap and raw image support and methods. ActionScript is a great language, though, and I love the direction that it’s going. I can only hope that I’m pushing its development in some way, but to say that I know what’s going on behind the scenes at Adobe would be a lie. If updates to Flash were to completely nullify FlashPunk and the advantages and support it offers, than I would hardly be devastated. Quite happy actually, as it would allow me to change my focus and keep moving forward with the language as it grows, which is what I plan on doing.
What are the next steps planned for FlashPunk? Where do you see the future of FlashPunk and the indie-game scene? Are there new horizons approaching? What will breed out of the Flixel-FlashPunk community? This could get massive…
The next step is the new Flash dev website I plan on building (hopefully with the aid of Adam) after GDC cools off, which will embrace both Flixel and FlashPunk, as well as the indie-game scene and others within it. I would really like to host a Flixel/FlashPunk flash game development competition, as that would really get things off on the right foot and would tie in with the site really well, but have to do more research for overlap with other competitions, sponsors, stuff like that. I think such a thing would be massive, and generate a lot of attention as well as give lots of people the boost needed to make something worthwhile. I have lots of plans, and ridiculous ambitions, but also have to find time to work, tend to my personal life, and even make some games myself, so I’ll be taking it one step at a time. Things are definitely looking up, though!
What inspires you about games, and especially-indie games? What role do they play in your life?
Indie-games have introduced me to over a dozen very good friends now, have given me the inspiration and taught me how to develop games of my own, have given me the confidence to develop a community of my own and generate a name for myself. What inspires me the most is the absolutely ridiculous amount of people that share my (until now unrequited) energy, ambitions, and sense of brother/sisterhood. Sometimes I don’t even know what to do with it all.
Tell me a little about yourself, (background, where you live, what you do, what makes you tick).
Yes, we are jealous on this beautiful nature!My full name is Chevy Ray Johnston, I am a ludicrously energetic 21 year-old living in the most beautiful part of British Columbia, Canada (and possibly the most beautiful place in the world). I have absolutely no education in game development, programming or computers at all. I started developing games about 7 years ago with a program called Game Maker, and since then have made several free games for the PC, worked briefly on a game for the Nintendo DS and collaborated on a game for the iPhone. I played games occasionally as a kid and always liked the idea of them, but only really gained in interest in the medium when I found out that you can make the things yourself as well. I absolutely love trying new things, crave physical activity constantly despite my main choice of hobby (my biggest wall to development is my inability to sit still), fiddle with any pen, ball or doohickey I can get my hands on. My number one inspiration (and metaphorical backbone) is undoubtably Caroline, who believes in and supports everything ridiculous I do for some reason and is a beautiful and talented swimmer, scientist, and linguist.
Thank you Chevy for this interview. I think the indie-community became much richer with FlashPunk and Flixel in combination. We need more like you!
Text and Interview: Martin Wisniowski, 1. March 2010