2013 - 5 - 3 / 4:05 pm / tools
I'm not really sure what I'm doing right now. I'm kinda going all over the place if you can tell from my past two or three weeks of blog posts.
I got back from GDC and I saw what people were working on and I felt kinda crappy about putting all this effort into yet another AS3 game with Adobe AIR. The problem is performance. Flashpunk has a hard time maintaining 60 frames per second because of weird Flash things... it's just not that super stable. Offspring Fling is a relatively simple 2d game and for whatever reason some people with modern computers have a hard time running it at 60 fps and this is extremely frustrating for both them and me.
One day I went through some of my old prototypes. I took a look at Gaiadi, my Ludum Dare game from three years ago (WHAT THE HELL HOW IS IT THREE YEARS OLD ALREADY.) One of the most disturbing things about it was how smooth it ran. The Game Maker run time is actually pretty dang impressive and it runs at a solid 60 fps, especially when compared to flash. This made me actually feel pretty bummed because Offspring Fling isn't nearly as stable (at least in my eyes.) It's one of those moments where I asked myself "am I somehow getting worse at making games?"
So I want to learn something new... but then I've already put all this work into this AS3 framework that I'm using. The amount of friction to start on something new is really tough, because right now in AS3 making things is extremely fast and efficient because I've solved a lot of my issues and have a bunch of helper classes with super fast solutions to common problems across my projects. AS3 just also has a ton of useful libraries that I make use of like TweenLite and AS3Crypto.
I started by experimenting with HaxeNME a few weeks ago. I decided to check out HaxePunk since FlashPunk is my favorite thing ever. At first I was incredibly pleased by the performance when building to a native windows target. 60 frames per second, consistently, with over 10000 entities being rendered and updated! I was super pumped. Haxe is also tempting because it's very similar to AS3 which I've been using a lot for the past couple years now.
Unfortunately I hit a pretty big snag with HaxePunk. It's just not in a very usable state right now, especially for native targets. The rendering code needs to be updated for these targets to fix a lot of issues. Sprite flipping doesn't work, the drawing functions like line, circle, rectangle, they all don't work, and there are some weird things that I don't like about the style (Image.createRect returns a graphic instead of an image, which then prevents me from using Image functionality such as scale, angle, alpha, etc.) HaxePunk is out of the question for now for any sizable game projects, but it's still very much a work in progress and I hope it becomes something more stable in the future.
So now it was on to something else. I still didn't feel like going back to my metroidvania project just yet, so I did some prototypes in Flashpunk for possible control schemes for various things on mobile devices. I recently picked up an iPad and I wanted to just play around with it.
I managed to set up FlashDevelop and Adobe AIR to compile right to my iPad, so I started to experiment with that. I first tried running a FlashPunk window on the iPad and I actually was pretty excited at first because a 640 x 480 FlashPunk window runs at 60fps on the iPad4. Then I tried to scale it up to the size of the screen and that absolutely murders it. The framerate was 20 or so with nothing going on.
...but wait! I just need to use Starling, or Stage3d in general. That should run much better on the iPad. Flashpunk 2 is currently in development, and actually you can see and use the in progress version of it in Saint11's Ludum Dare game, and that uses Starling as the base of its rendering system. I'll just stick Flashpunk 2 onto the iPad and see how that goes.
It took me a couple days of wrangling, but I eventually got Flashpunk 2 rolling on the iPad instead of just regular Flashpunk. At first everything seemed good except for a few minor bugs. I had some touch input working for something, but then I ran into performance issues almost right away. Not really sure what's happening right now, but Flashpunk 2 is still a work in progress so I'll have to wait it out until it's in a solid "1.0" version.
Okay so... now what? This entire time Tommy has been harassing me about learning C++ and using that for a game engine. I really don't think that's going to happen. I tried C++ in the past and it was a giant disaster. I spent 2 months just getting stuff to move around and render on the screen, and eventually I just hit a wall of too many bugs involving pointers and references and I couldn't go on... but maybe I'm smart enough now to handle it.
I've been playing around with SFML 2.0 and I finally got the simplest example program to compile, but I'm still not sure if I'm able to handle C++. The resources for C++ just seem way too scattered but maybe that's just my perception. What I mean is that when I search for a solution of a problem in AS3, I can easily find one definitive solution... with C++ I end up finding a bunch of completely different problems that might be related to what my problem is and then I'm going down this giant branching story path of why I might be getting a LINKER ERROR or a SEG FAULT or whatever, and I just get overwhelmed with information and I want to throw up.
I don't know if C++ is for me... but SFML 2.0 seems really nice. And there's also this Toast framework that someone wrote which is essentially just a C++ port of Flashpunk, but it's missing some core functionality that I make use of a lot like entity layering, and once again the Draw functions.
I also got into Unity a little bit and did some quick tutorials. I managed to make a Clock so far. I've used Unity a little bit in the past for making levels for things, but I've never actually coded and put together any sort of engine in it. Unity feels very strange to me, but I'm willing to give it a fair shot.
Also on my list is C# and Monogame. I started digging into this a little bit last year, but I had to put it down to finish Snapshot. I know that Matt has some pretty awesome stuff rolling in Monogame right now with Towerfall, and I'm hoping his latest framework becomes public in the future, as he tends to have the same line of thinking as Flashpunk, and anything like Flashpunk or Game Maker is easier on my brain.
The main problem I keep running into is update loop vs. event system. I don't like event systems and callbacks registered to event triggers. This style of coding is very hard for me to follow and doesn't make a whole lot of sense in my brain, but that's mostly caused by my upbringing in update loop environments. Klik & Play all the way through Multimedia Fusion is a big update loop that checks for conditions in a specific order each frame, and Game Maker can be coded the same way with everything happening in the Begin Step, Step, and End Step events.
The next big issue is the drawing stuff. Apparently the style that I prefer is "immediate" rendering or drawing modes (I just learned about this term a few days ago, haha!) I like the ability to do stuff like "Draw text, draw a line, draw a circle, draw text" and it all happens in that order, so the final text call would be above the circle, which is above the line, which is above the text. I use this kind of stuff for effects and I use all of this especially for rapid prototyping and visual debugging. These methods have become my bread 'n' butter for getting stuff rolling quickly. One of my favorite things in Flashpunk is to just say "var img:Image = Image.createRect(16, 16, 0xFF0000);" which just quickly creates a rectangle image on the fly. I can scale the rectangle, rotate it, blend it, tween it, etc. This stuff allows me to make super fast prototypes with some neat effects like squash and stretch right out of the gate, letting me feel out a game quickly and effectively.
Ultimately it just feels like I'm searching for an engine that doesn't exist. Andy Moore's recent post about searching for a unicorn resonates a lot with me. Every engine has its shortcomings and I just need to decide which one I'm most comfortable overcoming. C++ is super hard on my brain, but has the highest potential for performance... Unity is really weird feeling to me, but should perform well and has a huge community behind it, HaxePunk is very familiar to me already, but also has a long way to go before I feel like it's properly useable.. and AS3 is my sharpest tool in the shed right now, but unfortunately doesn't perform the greatest.
A tough spot to be in, but it is also fun to learn new things. I hope I can get back to something solid soon!
Hi there, my name is Kyle, and I'm a 27 year old kid with adult powers. I'm making video games and living the indie game developer life in Tempe, Arizona. Here you will find my thoughts, games, websites, doodles, and other stuff like that. I worked on Snapshot, Offspring Fling, and a whole bunch of other games. I also created and maintain Otter, a 2d game making framework. If you want to get a hold of me use the form on the bottom of the page, leave a comment, or just tweet at me. I try to post three times a week. Thanks for stoppin' by! You're the coolest.
- alec holowka
- bill pullman
- dev log
- game jam
- good times
- kings men
- ninja slash
- offspring fling
- screen sat
- space sushi
- december 2013 (2)
- november 2013 (15)
- october 2013 (13)
- september 2013 (14)
- august 2013 (15)
- july 2013 (10)
- june 2013 (14)
- may 2013 (14)
- april 2013 (15)
- march 2013 (13)
- february 2013 (15)
- january 2013 (3)
- december 2012 (1)
- november 2012 (2)
- october 2012 (1)
- september 2012 (4)
- august 2012 (1)
- july 2012 (1)
- may 2012 (1)
- april 2012 (1)
- march 2012 (1)
- february 2012 (1)
- january 2012 (1)
- november 2011 (2)
- september 2011 (1)
- july 2011 (1)
- june 2011 (1)
- may 2011 (1)
- april 2011 (2)
- march 2011 (4)
- february 2011 (4)
Do you want to make a Let's Play of one of my games, or a just a video featuring footage of my games? You have my full permission to do so! Even if you are monetizing your videos, you still have my full permission to use any footage from any of my games. Go for it!