Monday, December 26, 2011

Unity flash in a flash compo - challenge declined

Thanks to some guy on Ludum Dare I found out about Unity Flash in a Flash contest. I immediately thought, hey, them 20k dollarz would be nize! So I downloaded new 3.5 preview of Unity and started brainstorming. After sorting through few quite good ideas (which I thought I have chance to put together in two weeks and which could make pretty good and/or interesting game in the end) I fired up Unity and started checking the flash export...
At first I tried to export TMDR I made last week for Ludum Dare... and found out that flash export isn't going to be easy at all. A lot of stuff doesn't even compile (I was afraid that reflection wouldn't work, but some stuff from generic collection is missing too (Queue doesn't exist at all, for some strange reason Dictionary doesn't have Count defined...).
I ripped offending pieces from code and recompiled... It works! Well, sort of and very slowly... but it hangs after few seconds...

After some tests and attempts to start directly on a prototype for "A different shade of gray" (my favorite brainstorm child for compo) I found out that character controllers are the culprit. Having more then one in a very simple scene will kill framerate (like totally) usually in few seconds. Extremely simple scene (few boxes),  few char colliders means few seconds of existence. Seems physx rewritten in action script is not very stable beast. Strangely Angrybots (unity showcase/demo project) works even with (i think) char controllers... my guess is they debugged and fixed flash export just enough so angrybotz work.

This was pretty big discouragement. I've made few attempts to find out if I could maybe fix this... after I made a VERY simple script which just spawns more char controllers on mouse click... I found out that after few spawns (using Instantiate from prefab) flash build hangs with just red "Null pointer!" written in the corner.
Few more attempts to play with other stuff showed similar results... what works in unity might work in flash... for a while probably. And debugging using debug.log (which is usually only way to do some debugging in unity thanks to great stability of monodevelop) is even slower then normal because you have to wait for a long time for flash build...
So no fancy 3d gameplay? I thought about going back to another idea and doing mostly 2d game, but if you want to make 2d games, working directly in a flash is better idea then hacking unity to do it too.
Anyway I have my doubts about usefulness of flash export at all - flash is slowly declining after Steve Jobs said it's bad (one of the few things I ever agreed with him), unity web plugin has quite big penetration and it's rising (and whatever you do in unity, it will run much better / faster in unity web then in flash since action script was never fast and never will be).

So in the end it seems that flash in a flash is more of betatesting/hoping and praying coding compo then game compo... And I decided to decline this challenge. Going to lan party like every year and have some fun playing games instead of trying to make them.

My guess is that winner of this compo would be either someone insanely lucky / patient who puts together some nice game, or someone with a lot of nice 3d graphics without any gameplay :/



Tuesday, December 20, 2011

Transdimensional moon rift postmortem


So time for post-mortem is here...

This time I've managed to create fullscale and mostly playable game (probably best I've done in 4 competions I've attended in last two years) which is even quite fun to play, so I'm pretty happy with myself, even if I had to move to the jam and use another 12 or so hours to finish it.

It's an oldschool style FPV dungeon crawler with a goal to find your zombie kittens and be finally alone with them (and a big bag of brains), but rotten undead pirates ninja looted your kittens and you have to take them back. I even had time to do some leveling with three skills (ninja, pirate and undead) and tune up the game (not completely happy with it, it tends to be too easy later on, but since playthrough takes about half of hour I just had no time to do more testing.)


 

 What went well:
Using Unity (well mostly) instead of coding everything from scratch... after several months of using Unity fulltime I'm quite skilled with it and this time most of the things I hate about Unity wasn't issue, since I was doing PC / Web build. And web build is one of the things I like on unity (even if there's no linux player). (BTW web version of TDMR is just about 700 kbytes, while pc has 20  megs :/)

Drawing 2D "art" : I've spent just maybe two hours drawing all textures and sprites and skins for characters using tablet, Paint.Net and not giving a damn about how hurtful it will be for eyes of some more sensitive people :) I could have done something much better if I wanted... but it would took me at least day. And this way I can boast about having "style" :D

Decision to use pirate/ninja/undead - not exactly sure how I came to this connection (I think it's from some picture I've once seen, who's the bigger boss, pirate, ninja or zombie?), but i've mixed it together and in the end I have a lot of enemy types... easily made by combining three (well, four if you count ghost) base types- and I used it as a base for RPG system too.
  

  Adding sounds: with about hour to spare for submission I took my mike and audacity and made some sounds and "voiceovers", quickly patched it to the code and I'm quite happy with the result. Just too bad I hadn't time to sing some songs as background music (brains brains brains brains braaaaains, brains brains brains!)
  Keeping number of game elements in check I made most of the things I wanted to have in the game with the exception of brain-o-matics for buying brains.

  What went mostly ok:
  Most of the coding in unity, although I've spent some time trying to debug few stupid bugs I made (and debugging is sadly one of the beefs I have with Unity - it works much better on WIN editor, but I'm so used to total instability on MAC and "printf" debugging that instead of firing up monodev debugger and hoping for best I've spent a lot of time by putting numerous Debug.Logs everywhere. Resulting code isn't even that ugly as usually is in my speed hacks... although I still hardcoded a lot of things without using some better design - if I ever try to use TDMR as a base for some more serious dungeon, I'll have to refactor at least half of it.

Level design Originally I wanted to have few more levels (but smaller), but in the end it's just one and I'm quite happy with it, it reminds me good old times with Beholder and Dungeon master, so it's definitely ok from my point of view :) I've originally considered doing rogue like randomly generated levels, but it's probably good I hadn't even attempted it.

Playtesting and tuning up RPG system - At one point I realized that I'm playing for fun, not for testing, which really gave my morale big push. Also my GF used as playtester liked it (she's as crazy about old RPG's as I am), so although it could use some more tuning with difficulty and some parameters, it's ok.

Sleeping enough I'm getting too old for non stop crushes and since I've ended one of the worst periods in my 10 year carrier as gamedev just before the start of the LD, I decided to take it easy. But in the end I had to move to Jam and use another 12 or so hours to finish it. I think I've spent about 30-40 hours total working on the TDMR.  


What went bad:
Theme I was really unhappy with the theme (once again)... I've spent some time racking my brains for ideas about using alone for something original AND fun to play, or something interesting to flex my code skills on... then I gave up. Since I've always wanted to make some oldschool FPS RPG (and never found enough time), I've decided to make it and force it somehow on the Alone theme... (from what I've seen from other submbissions, I wasn't the only one using this approach - some entries don't even try to use alone in any way).

Idea about using animated chars instead static sprites - near the end of the day one I had a stupid idea - why use simple static sprites if I'm using Unity? So I ventured to recreate my first characted (pirate ninja skeleton), put it on simple 2d mesh... then skin it and rig it to the bones. I've wasted a LOT of time on this, result is ugly (kinda hard with the texture I've started to do good mesh and skin it so it can move without serious distortion taking place), but I should have expected that - I have all the theoretical knowledge about this stuff, I wrote it from programmers point of view, but... using 3ds max for anything else then checking on some artists work, creating super simple meshes and importing/exporting here and there, is something I just don't have much experiences... Well, I now have some, but it took me too much time, especially considering results. But at least I've learned / practiced something new.
   (First sprite I've made before switching to animated chars... it's static, but it looks better :/)  

 So... I'm mostly happy with my entry (and hope someone will play it :), about the only thing I'm sad is that I hadn't time to implement save and load... never wanted to do it, other then maybe checkpoints on the level start, but since I had just one... Problem is that doing serialization in Unity for proper save / load is not that easy and it takes some time to do properly... time I knew I won't have.


 Anyway, I'm glad I had time to participate in LD and looking forward for another one (and Global Game Jam next month). Although it can be brutal... it's fun :) (especially when compared to "normal" crunches on commercial stuff).  
My Ludum Dare entry page
Playable version (unity web player)

Transdimensional moon rift finished


Save your zombie kittens!


Direct link to web playable version: http://dl.dropbox.com/u/19916467/TDMR/WebPlayer.html

This time I had to move submission to the jam since I wasn't able to do it properly in two days. Now it's quite finished... Crazy insane oldschool dungeon about saving your zombie kitties awaits anyone who's not afraid to damage his own brain with my art and sound effects :) 



Sunday, December 18, 2011

day one update on LD48...


Although it was really stupid idea trying to use animated characters… I’ve done it.
Animation’s ugly, character can’t be moved that much without serious distortion taking place, but since it’s my first attempt to make animated “3d” character with skins and stuff, I consider it success. So now I have map editor, some “textures”, few enemies, basics of step by step oldschool dungeon… I have to improve combat system, put together some more stuff (like doors and crates and loot, maybe even some extremely simple RPG system), either create few levels, or write generator, and I’m done. Probably not… Going sleep anyway, I’m getting too old for this kind of nonstop stuff…

Saturday, December 17, 2011

Ludum Dare 22 - first glimpse of ultra odschool dungeon

So… some progress, level editor, some moving, first enemy… not yet sure what it’s going to be in the end except that it’s oldschool dungeon…




Pirate Ninja Skeleton will be soon joined by other denizens of Transdimensional Moon Rift of Randomly teleportated instanity... Thinking about doing Zombie Warlock Squirrel next....

Ludum Dare 22


Wake up from your asleep, we has arrived onto the future…
and everything has become supersonic… alone.

Time for Ludum Dare 22!
So I’ve overslept a bit and now I’m raking my brain with enough coffee and doing wild brainstorms with myself… Alone’s quite generic theme, but it fits the idea of step by step dungeon I was thinking about making.  I’ll try to make a list of few ideas and then it’s coding time, unless better idea forces inside my brain, dungeon master-ish game it’s going to be…

Looking at the vote results I even managed to put together something resembling story Here it is, best my sleepy brain could put together.



You’re all alone, fighting spawns of randomly generated evolution brought from parallel dimensions.
You have to move through the forgotten places, abandoned long time ago, when desperate gamble shattered falling Moon to smaller pieces, but tunnels of old science base still remain and they’re full of the dire consequences of decayed technological dreams.
To navigate underground you have to use nanotech-based time travel, teleportation and even self replication as these are only methods how to clean enough territory and fix enough machines to defeat the plans of surealistic antihero – mirrored reflection of shape shifting kitten.