Programming, FlashPunk, etc.

So I took a break from working on my game in StencylWorks this week and am working my way through FlashPunk tutorials. For those of you who aren’t familiar with FlashPunk, it’s a free Flash-based (duh) library for developing 2D games. (See logo below.) Its creator is Chevy Ray Johnston.

FlashPunk logoWhat follows is a tldr post, so if you care about whether I made any progress on my game, skip to the bottom. Otherwise keep on reading. Maybe you can identify with my learning process.

Programming != Easy (at least for me)

Over the years I’ve tried learning different programming languages, and have actually made some progress in getting the basics down, but don’t have much to show for my efforts. I tried reading books, tried out Game Maker, etc. but didn’t really get it. There were a lot of disparate concepts that just didn’t come together in my head very well.

Then I took a Java programming class a couple of years ago through UCLA’s extension program and I did pretty well. I had a good teacher, which made a difference, but after I finished the class, I didn’t really know what to do next. I know HTML and some CSS but making websites for no reason didn’t really interest me. The tutorials in the programming books I own are too simple and don’t actually cover making anything fun.

Thankfully, shortly after I finished the class, I received an invite to the Stencyl beta (I think it was November 2009?). I learned a lot in the beta, even though most of it wasn’t directly related to programming. After Stencyl officially launched in June, I needed to take a break from working on Stencyl documentation and actually make a game. I covered my progress on my game a bit in my last post.

Although StencylWork’s Design Mode (see pic below) is a form of programming, and I enjoy using it, I need to branch out a bit and develop better programming skills.

StencylWorks Design Mode

This is a behavior I built in StencylWorks for my game. It's part of the logic that allows the player character to attack enemies.

In this case I’m trying out FlashPunk because I want to find out if there are other ways to solve some of the development challenges I’m running into and get a different perspective on Flash game libraries.

StencylWorks uses Flixel, another popular Flash game library made by Adam Saltsman, integrated with Box2D, a physics engine made by Erin Catto, plus a lot of other custom code written by Jon Chung (Stencyl’s founder) and other Stencyl developers.

Note: I like to give credit to people who have put a lot of effort into making free stuff for aspiring game developers like me.

From what I understand, Flixel is designed differently from FlashPunk. I’m somewhat familiar with Flixel’s API and how it’s structured due to my, admittedly basic, understanding of how StencylWorks is set up, but to get some perspective, and learn how to use an actual programming language, I decided to give FlashPunk a shot.

So because I actually have a game I’m working on, and WILL finish, I’m starting to “get” the FlashPunk tutorials I’m going through. I’m not spending my evenings sitting in front of a computer (which is what I do all day), doing tutorials simply for the sake of learning something, I have a goal in mind here, to make a video game people can play (one that hopefully doesn’t suck too much).

I think David Heinemeier Hansson (creator of the Ruby on Rails framework, partner at 37signals) summed it up best, when he said he learned to program when he made a mission out of it.

So far it’s going pretty well, though it’s hard to screw up tutorials. We’ll see how things go once I start writing my own code. I’ll post progress updates here.

Game Progress

Okay, tldr post is over. So how’s the game going?

With all that in mind, I did solve a significant issue in my game’s design last weekend, namely how to pause the player’s character and enemies in the game while still allowing the player to interact with other objects, such as menus. I’m certainly not done implementing that core feature, but I can replicate the method I used to solve the problem in one area to solve it in others.

Not a whole lot of progress to report otherwise, though I hope to get more done this upcoming weekend. If anybody is interested, I can post StencylWorks’ tutorial content here. If I write anything semi-useful in AS3 as part of my FlashPunk efforts, I’ll post that here, too, though don’t expect anything useful for a few months.

I’m not really sure what I’ll end up building my game in, StencylWorks or FlashPunk, though it’ll likely be StencylWorks given the progress I’ve made up to this point.

Anyway, more game development and programming updates soon.

Stencyl and Me

It’s been literally months since I started this blog. Originally I had intended to post about game development on a regular basis, highlight indie games I thought were cool, etc. All that pretty much went by the wayside when I took some web design and programming classes through UCLA’s extension program (I work full-time, so classes were in addition to work).

So why am I bothering to post anything here? Well, I need a place to post my game design and development-related thoughts, and this is as good a place as any.

Right now I’m participating in the closed beta for a game development software platform called Stencyl. I can’t say too much more about the software beyond what you see on the site there, but I can say that it’s enabled me to get further with game creation than any other software platforms I’ve used. Note that I am NOT a paid employee of Stencyl, just an individual participating in the closed beta.

So what do I like about the software? I think the visual Behavior designer is probably the most significant feature for me. I have some programming background but not enough to build a complete game. The visual designer is complex enough to allow me to implement pretty much any kind of gameplay functionality that  I can come up with. My art and music skills are so-so but good enough to allow me to make my own game art and sound assets. StencylForge is another significant feature in that it allows for easy sharing of game resources.

Until Stencyl goes public, I don’t plan to discuss how it works in any depth or how to use the software’s visual designer. That said, once it does launch publicly, I will be covering how to use the software tool in the context of what I’m working on.

In the meantime I plan to discuss game design in more general terms and talk about the projects I’m working on. Stay tuned for another post on the subject of game design in the very near future.