“Prison Escape”: A post-mortem

This day wasn’t a day I would want to happen to any of my projects, let alone when it’s collaborated with another person’s work, but before I end 2014 it at least deserves a little burial ceremony. I’ve announced this earlier in December but never had an official update here (since I wanted to take care of its post-mortem in one fell swoop), but Prison Escape has been canceled. This post will break down what happened and why, and how most of all this was still a valuable learning experience. Keep in mind a lot of this gets technical, but since this is a gamedev blog, that’s just the nature of the business. If you’re not here to find out the nitty gritty on why, scroll down to the summary on the bottom.

As a recap, I started Prison Escape when my brother’s Kickstarter for a movie adaptation based on his graphic novel The Chair was preparing to launch for late Spring 2014. We sat down and planned things out for a mobile game to go with it, slated for a Fall 2014 release to iOS and Android. I’ve worked in Lua in the past, and this would be my first finished mobile game. (I did a drag-and-drop game for one of my thesis works.) Concept art and core mechanics were put to paper, and it was time to work.

Sadly not even 2 weeks in that was when the trouble started. While I knew Corona could port to iOS and Android, I was not aware you needed their respective OS’ for this to work (a copy of Corona on a Mac, and one for PC). I’ve worked with Macs in my university (and was probably why I didn’t pick up on this critical fact prior) but otherwise I am 150% a PC girl. Yes, despite being a graphic designer and an artist overall. Like most artists, I am not made of money, so spending almost a grand into a computer that will just be obsolete in 3 years doesn’t make much sense in my head. I know plenty of friends and other people (art folks and non-art folks alike) who will invest in a Mac regardless, and I’m cool with that. But the easiest way you can insult me is to recommend me ANY Apple product to replace anything in my tools of the trade.

That said, you can bet your lucky dollar that when I found this out with Corona’s port for iOS publishing, let alone most game engines for iOS publishing, steam was coming out of my ears. As a developer I’m fine with using or even buying a Macbook if I have to, but I had also just got myself a high-end Dell that Christmas beforehand. I would only get one if there were no other options.

So I did my research on cross-platform tools as a secondary option, and I fell upon Marmalade. While it’s popular for its C++, it can also run Lua and HTML5. Its license also extends across the board, so that one copy of the SDK can help port to iOS and Android all on one OS (other licensing fees and registrations are separate otherwise). So I took advantage of their free one-year GDC promo license, since I had just spent money on a one-year for Corona and was fairly annoyed at myself for my other mistake.

For a while, things with Marmalade went well, and I was even able to churn out a demo – a very buggy demo. For those who have only worked in Corona before, Marmalade’s Lua is almost the same, though keep in mind much of what Corona did was build its own libraries to make writing Lua a bit easier. Marmalade was straight-up bare-bones Lua. If you have an understanding of Corona’s Lua, for the most part you should be okay but many times I had no idea how certain functions or directories worked without using Corona’s built-in libraries (since the other didn’t understand what I was trying to call).

I will be honest – I am not an expert in Lua. But I do know enough to write something that should work. Why this project still fell flat on its face was that I didn’t know enough to break down why things weren’t working, let alone how to fix them. This was horribly obvious when it came to using its random numbers generation, and that was the biggest downfall for this project.

You see, generating a random number in Lua is more than just popping in “math.random(int)” (with “int” being whatever number value you want to put in). Simply using that line of code only generates one number at random upon start-up for the entirety of the game unless it’s restarted. It will need to be called again, usually with the help of functions, in order to help regenerate another number again and to keep things at random. However this is still not true randomness, and is often described more as pseudo-randomness instead. In the case of Lua, depending on what developer’s kit, or even OS that you’re running with, the algorithms for this can vary. Lua-users.org explains this in more detail.

Normally this may not sound like a big deal for a game, and that can be true. If your game only requires its use for a small mechanic, you can get away with this without worrying about what algorithm is behind the numbers being generated at random. But games like endless runners heavily rely on random numbers, and anything that deters from the illusion that every obstacle and power-up is indeed coming up at random to the player, will make your game look like a piece of trash. Running too many generators will also steal your game’s memory like crazy, and if not cleaned up properly, will cause it to lag and eventually crash (which has happened in one of the more recent builds at one point).

I’m sure there are plenty workarounds for this type of problem, seeing that it’s common enough to be addressed across various forums and guides online. But those are things I would like to leave to a second helping hand who knows their way around code much better than myself. After looking over the problems and the other solutions left to continue the game, it was decided that the game should be canceled. Putting out a product that might only work half of the time or would just crash for certain users was absolutely not an option.

To make a long story short, difficulties with OS publishing and game crashes led us to cut life support for the project. It was quite a learning experience though, and maybe they’re some things that others can find helpful to keep in mind. Or to laugh at my foolishness, whichever is preferred.

I’ve made good progress with my visual novel however, so the next update will be on that. My story summary has changed since my last post about it, but many of the story aspects (and definitely characters) are still the same. As you may have guessed by now, the beta for it has been debunked because I have to shift that code over to make room for the actual intro. I’m still accepting voice actors though!

I wish everyone a Happy and Healthy New Year!

Wait…barfing unicorns?!

I’ll get to that in a bit. It’s not as gross as it sounds, trust me!

I wanted to wait for more updates and fixes to be done with my projects so I could condense it into a larger post like here. First on the agenda, I finally got my bullets working properly in Prison Escape!

I like how the more gifs I do of this game, the more Sullivan looks like he has to run to the bathroom.

As you can see, the bullets now regenerate upon leaving the screen or colliding with Sullivan. However, I’ve been meaning to update his collisions so they’re more precise, and now is finally the time since the randomizing of the bullets will help see this more visually. Unlike the ugly green box from last, he now has 3 neat skinnier boxes, which now just have to be tested (aka math).

“But what about the particles?”, you’re wondering. Yes, they were a lot of fun, but I plan to make little explosions when the bullets hit Sullivan so you know if you got hit or not. For now they’re turned off, though coincidentally, making them move around was what helped me figure out how to regen the bullets, so thanks particles!

As of barfing unicorns and particles, here’s the mini-app I ended up compiling on a whim from my last update. I obviously had too much fun with the whole thing.

Hmmm is that were rainbows come from?

So far, the point is that when you tap the screen, rainbow splatters go everywhere. Surprisingly enough, Marmalade also registers multitouch with the license I have, so I learned something nifty that day! (To be honest I’m not even sure if Corona does the same thing for the same type of license I used to have but I never got around to experiment.) Other silly features the game would eventually have, should I ever want to continue it even for my own amusement, would be randomized techno upon touch, other variants of splatters, and accessories for the lovable unicorn here (hats and other clothes). People like customization! (Just nod your head and go with it.)

For something a bit more serious though, I do have an important announcement regarding Project: Mittens, the top-down adventure game with fantasy cats I have also been collaborating with a few people. An audio designer is now on board, and the date for the full working demo has been changed to Thanksgiving rather than September 30th due to conflicting schedules. The current playable demo is still live though, so if you didn’t get to check it out yet, you can still do that. (Please do!) A few bugs and errors were fixed thanks to our prototyping results, so it works even smoother than it did before!

Currently the playable demo only has the Engineer available, and no enemies.

While the newer workable demo is in the works, I will be supplying more sprite/sheets, so except some more previews of that to come in the next few weeks!

The Magical Mystery Bullet

Also known as “I got slammed with double shifts like crazy so I apologize for being quiet lately but thank you for your patience”!. Phew!

Despite my crammed schedule, Prison Escape (which I mistakenly kept on calling Prison Break for the longest time and had to be corrected by my client, sorry!) is moving along well! I fixed some bugs from the rough demo release that was shown and well-received despite them. I also decided that making the bullets as particles instead would be a better workaround, since I was still having trouble getting them to spawn from arrays for some reason.

So after plugging in the bullets with the default settings for MarmaladeSDK’s particle effect, this magical wonder happened:

 

thechairbulletswtf

The Magical Mystery Bullets are dying to take you away!

 

Of course, it would be bad taste to leave them in the game’s final release, but the effect is so dang humorous that I decided to save that idea for another game I will be making after this one is done. It’ll be much simpler and will be very colorful and wacky, as most of my games tend to be. After working on so many projects that were rather involved, or had short deadlines, I feel that doing a smaller and more casual game would help give myself a break while still churning out work.

I was hoping to even do a prototype tonight just to mess around, but I think I’ll hold off for my next update. 

A word on Project: Mittens and others

Two announcements! First off, I can finally release artwork and a demo based on the 2D RPG game I was working on with a colleague, Project: Mittens. Link opens to the demo we have so far, and a more finalized version will be out at September 30th.

Starting classes you can choose from, at left to right and top to bottom: Ninja, Wizard, Monk, and Engineer.

 

Example of one of the enemies you’ll be fighting, a rat. Armor coming soon!

 

In the mean time, a working demo is almost finalized for The Chair: Prison Break, based off of the successfully funded graphic-novel-to-indie-movie Kickstarter. Surprisingly enough, I got collisions working, and some obstacles and projectiles are now moving across the screen! (Will have a better gif at the end of the week to demonstrate this.)

Of all things though, the next hurdle became showing the player how many lives they have left! Arrays didn’t work, and when I used spritesheets instead, Marmalade decided to run out of memory and crash the game for the night. I’ll have to come up with a backup solution for the time being, but it’s a method I’m not fond of using for the final release unless nothing else works.

The demo is due by the weekend, so my next update will have all of the goodness I can show for, as the game wraps up quickly. I’m excited to finish up this amazing project, it’s taught me well on the ins and outs of Lua, and while some parts can still be frustrating, it’s becoming to make more sense to me. I’ve even looked at my code now and realized how much more efficient I can make it for the final release.

So with that, Project Mittens, and This Game Is Not A Dating Sim being wrapped up for demos soon, it’s fun seeing everything come together in one big package. For so long everything I’ve done or helped with has been under development that it felt like there was no end in sight. Good to see some great feedback out of it!

 

Speaking of, two Let’s Players reviewed my game for Insanity Jam #2! One was brought on by Lone Roach Studios and was quite extensive and amusing to watch! I didn’t even notice I had a few grammatical errors in the dialogue, so I appreciate him going out of his way to really provide good feedback with his LP!

The 2nd is Jupiter Hadley, who did a brief LP for all of the submitted games. I recommend watching through all of them (many on there I liked myself), but if you wanna jump to just mine, it’s towards the end. A great shoutout no less!

Currently, the game is still tied for first place for the jam with a whopping 8 out of 10! I kindly ask you again to spread the word, and play and vote if you hadn’t yet. You have until August 11th! (I was misinformed last time, you have an extra day!) Thank you, and good luck everyone!

VN screencaps and another project

For those anxiously waiting to see what my game actually looks like so far, here it is! For promo purposes I blurred out names and faces from the stock photos in the screencaps here (despite them being free but they’re placeholder images either way, they will not be in the final version).

In classic visual novel fashion, inner dialogue with the main character is in italics.

Character names will be in different colors, and for the most part, will appear as their last names (except for an unknown person talking, which will be “Voice” in grey).

I’m still playing around with the text size, since this will also be going on mobile. On PC the size is perfect, but one of the characters, Isis, has a very sheepish voice so her dialogue will always be in a smaller font than the others. Obviously since this will also be a mobile release, that would be an issue and would have to be tested. If you’re curious though, the typeface I used is Euphorigenic by Ray Larabie, a free-to-use font (even for commercial releases; just don’t sell the font or any alterations of it). It’s very lovely and polished! I’m a big fan of it and it helps me not get sick of seeing my work for this game.

Aside from that, while I did promise new colorings and lineart of avatar art, I was given a proposal for a game idea by my brother Peter. As the founder and head of Alterna Comics, he was looking to have a small spin-off game made to help promote his graphic novel, The Chair, since it has been picked up by director Chad Ferrin (The Ghouls (2003), Someone’s Knocking at the Door (2009) to be slated for an independent movie production. As seen from last week’s post, that was the endless runner project I briefly mentioned (and why I also decided to resurrect my little tomato guy, since he’ll be testing out the game mechanics and so far it looks good).

So instead I have been busy starting up on that project, and once I’m given the go-ahead, I hope to show some UI and item designs I did so far. Depending on how my pixel art skills are, maybe even graphics of that, but I admit I do more vector and tablet art work than pixels. But I do look forward to actually doing more of that though. The extent of my pixel art is basically my Animal Crossing QR codes for outfits and decorum, so I guess that’s a good start.