“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!

Weekend Update

I hope everyone had a wonderful holiday weekend. I managed to continue Prison Escape throughout the past few weeks, though perfecting collisions is still slowing the project down. At least the touch D-pad works, as seen below. Part of the detections is still bugging up in the output though, so I’m going to isolate parts of the code today to see what I’m doing wrong. In worst-case, I’m prepared to start over and rebuild the game, as well as look into different programs and languages.

thechairDPADgif

Still testing out the hitbox but otherwise touch D-pad is in action!

As of my visual novel, the prologue somewhat needs another rewrite, but it’s more like a shift of chapters. What I have so far actually would make more sense later on in the story (like around chapter 2 or 3). So I decided to push it over and focus on events before it, and make those parts the prologue instead. This is also from looking over everything from the original books I wrote to the more current light novel, and realizing that there is still backstory that needs to be explained before I dump the player into this world.

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!

Animal Crossing: The Casual Game for Hardcore Gamers

While I realize the subject of Animal Crossing being a hardcore or casual game has been brought up numerous times throughout the series’ history, there aren’t many thorough articles on it, let alone on what really defines a “casual” game from a “hardcore” game. As a newtime player to the series kudos to New Leaf for the Nintendo 3DS, I finally had been able to dive into the whimsical world of Nintendo’s version of Second Life before Second Life even existed. My verdict still stands as it had years before when the first game was announced.

I will admit I’m only discussing this now because I accidentally may have gotten a friend into buying the game out of sheer Grand Theft Auto-esque chaos, but needless to say if he wanted to run around with matchsticks and scissors, Minecraft and major MMO’s such as World of Warcraft have more devastating levels of grieving than Animal Crossing. Oh well. Any reason to get more friends into playing at my town of Slowpokes is good enough for me.

Image

No seriously, I’m not kidding.

Ian Bogost wrote a great article on casual games, it can be found at “Persuasive Games: Video Game Zen“. (Have no fear; it isn’t littered with bogus Facebook/mobile play-to-win games, but it does throw in Chuzzle as an example). He points out that video games are generally seen as a “lean forward” medium – one that encourages interactivity, action, and puzzle-solving. Some genres that easily fit this definition are sports, racing, shooters, platformers. However, there are some games that also can be seen as a “lean back” medium, which focuses on relaxation and providing a more passive, mellow experience. While certain puzzle games may not fit this (like Tetris), a lot of more casual-styled games do. Bogost uses flOw and other Nintendo titles such as Pikmin and (of course) Animal Crossing, as some examples for other more mainstream titles outside of the nefarious play-to-wins that’ve now smothered the casual games genre.

Notice however, that these games still encourage the interactivity and brainpower that more “lean forward” (aka “hardcore”) games also possess. This makes sense though, since at the end of the day it still has to be a video game, otherwise if you go towards the edge of the medium (like of Indigo Prophecy and Heavy Rain), you’re better off watching a movie if you want that type of passiveness. While the general summary of Animal Crossing involves upkeeping your house and town, paying off your debts on loans, talking to your neighbors, and admiring nature as a whole, there are things to do and puzzles to solve to keep things from running into the mundana. Just like real life, you never know what’s going to happen next, and even when things fall into the every day rut, you’re encouraged to continue on for tomorrow to see what’s new in your E-rated digital life.

Image

Building the snowpeople in New Leaf is an example of puzzle-solving.

Therefore, despite its premise (heck, it won Best Casual Game in 2013 from SpikeTV’s VGX Awards), depending on how you play the game, it can be seen as a more engaging experience, and therefore a hardcore game. There are bugs and fish to collect, as well as rare, seasonal items (either through events or the shops). Some players even “trade” neighbors to get other desirable neighbors to match whatever theme their town has. (While I decided to decorate it after Slowpoke-ridden Azalea Town from Pokemon Gold/Silver, I have no neighbor preferences.)  And of course, the game keeps track of what items you’ve had in your inventory, also known as Catalog, even if you gifted the item to a neighbor or friend, or sold it back to earn some extra Bells to cover other expenses.

Since Animal Crossing is a very social game, the online community for it is enormous, thanks to the help of social media. Nintendo has a Pinterest board for user-submitted clothing designs, and other designs and screenshots can be shared through Facebook, Tumblr, Twitter, and their newly adjoined Miiverse service. Community blogs and groups through these sites, as well as other boards and forums elsewhere across the Internet, also dedicate to trading and selling of items and neighbors alike. If the player desires so, Animal Crossing can certainly become a title in the more “hardcore” genre of gaming very fast.

From my own playthroughs and experiences however, while I love trading with other players and friends, and hanging out with them at each other’s towns just for fun, I believe this series (and New Leaf in particular) can be a meeting point for both the casual and the hardcore gamer. I find it to be a relaxing experience, and even if I’m in a hurry one day, I find that I can accomplish my daily tasks in the game within an hour (I don’t recommend flying through the game at all though; this is not a race to the finish line!).

Image

Sit back and chill with the fishes some time!

Whatever your feelings for this game, know that it satisfies both the need to relax while still accomplishing something for enjoyment. And while my Dream Address is not set up yet, I do have Kurt the Poke-ball Smith in my town as a second avatar, and my 3DS Friend Code is 4785-4704-8438. You can also follow my silly adventures as mayor at my Tumblr dedicated to the game.