Wednesday, December 19, 2012

What The Hell, Flash? Ep 2: When frame action gets inherited

Here we go again.

My work flow of doing Flash animation is to tween stuff in a MovieClip and use labels + gotoAndPlay() calls to switch between animations. Nowadays, with the switch to AS3, most of the animation controls are done via external script files, so the MovieClips in my library are now mostly devoid of any frame based actionscript (a very old leftover technique from like the Flash 4 days)... except that I still use frame actions for very simple looping calls (gotoAndPlay("anim1") at the last frame of the anim1 animation frames, for example).

I guess the title of this post is a pretty big spoiler, but I'm surprised I didn't encounter this problem until now. Usually if a series of animations shares the same animation control scripts (say, guy1, guy2, and guy3 all have different animations but are handled the same way), I'd have a common class that the animations would inherit from (Guy1 extends GuyAnim, Guy2 extends GuyAnim, etc). Only this time, I got lazy... I have a few animations inheriting from the first of its archetype, which contains all the control scripts (so Guy2 now extends Guy1, and Guy3 also extends Guy1...)

Imagine my surprise when the animations start glitching like no tomorrow. I guess getting a strange "invalid function override" warning when I place frame scripts on certain frames should have warned me to something, but it's just one of those quirky things where intention don't match behavior. I have two timelines with one set of animations in one clip and another set of animations in another clip. I have two script files (that doesn't contain any of the frame script) where one inherits the other. In appearance, nothing overlaps, but somehow the frame scripts are probably attached to the class objects during compile time, and the result is a total animation glitchy mess.

There are times when actionscript can accommodate the strangest, anachronistic workflows between multiple versions of Flash and still somehow make it all work. Then other times... well, this happens. Oh Flash, how I learned to hate to love you.

Thursday, November 29, 2012

Webcomic Wednesday (Well, it was): Future Sight P18

It's aliiiiiiiive! It's aliiiiiiiive!


It's going to be increasingly rough to keep updates going since my work is entering an early crunch... sad too, I was finally loosening up by the time I draw the last panel...

Wednesday, October 31, 2012

Webcomic Wednesday: Future Sight P17

So tired. I think it's the cake that's making me so sleepy.

Art wise, still recovering from the big hiatus last month. And that instructor... I'm not saying it's aliens... but it's aliens.

Wednesday, October 24, 2012

Webcomic Wednesday: Future Sight P16

(Wait, this thing is still alive?)

It's aliiiiiive! It's aliiiiive!


The holiday season of game releases can make things extremely disorienting. I think I'm getting my bearings again... somehow. At the very least, I'm committed to finishing the first arc of Future Sight one way or another. No backing out of that!

Thursday, September 27, 2012

Super Late Webcomic Wednesday: Future Sight P15

Got hit by a virus. Reformatted the computer, and getting all the pieces of printing the template, scanning, framing, and other parts back together. Other than that, I'm swarmed with games that I'm obligated to play. They're all grindy RPGs. I like these games, but I really hate it when I'm forced to progress at someone else's pace...

Right. Right. Pages!


Thursday, September 20, 2012

Belated Webcomic Wednesday: Future Sight P14

It looks like with work and play filling up my time, this post a day schedule is impossibly hard to keep up... At the very least, I want to keep Future Sight going. It's the one thing that I actually want to do every week.

Hey, I just met him / and this is crazy / he did a number / but call him maybe

Thursday, September 13, 2012

Melodic Thursday: Destiny

On short notice today.



And at the end of the solo, the strings section and the big brass joins in for the reprise... oh right. I haven't written that part in yet...

Wednesday, September 12, 2012

Webcomic Wednesday: Future Sight P13

Finally, the weather cooled down!


Lynn seemed to have gone through several hair styles here, but all I wanted to do was to draw her head at different angles... bleh.

Rant Tuesday: It's Still Like This Ten Years Later?

Okay, so work is hard.

Modern webdev is also hard. Madness, even. You'd think that coming back after 10 years the whole HTML5 thing would be a bit more civilized... after all, the last time I touched JavaScript was when Flash was in version 4, when you had to cobble together code through drop down menus. It was horrible either way.

Ten years later, Flash is now a somewhat respectable coding environment, even if some of its quirks and slowness never went away, but javascript... it looks like nobody bothered to clean the lawn and everyone kept piling on trash, and there's people pitching tents around themselves like jQuery and they keep pretending the entire coding environment is anything but a steaming pile of manure.

There's no avoiding it though - Flash is going away. Less than five years from now there'd be more people using dedicated content consumption devices than content creation devices, and nobody is hedging their bets that Microsoft is going to pull through with the likes of Windows 8. So HTML5 is as close to the new "build once deploy everywhere" environment as you can get.

Meanwhile, I've found half a dozen ways to write a helper class to load a bunch of images, with none of them looking either right or wrong.

This transition is going to take quite a while.

Thursday, September 6, 2012

Rhythmic Thursday: Jungle Bongo

I threw in Adobe Audition to get the final mix because I don't know how to pitch shift entire tracks in Renoise, and the timbre of the drums are off...



I think I'm at the stage where I should spend a month or two going over stuff I've already done and learn to tune the channels and add effects. As it stands, there's a few loops that I'd actually like to finish but couldn't within this 2-3 hour time frame I give myself each weekday.

Belated Webcomic Wednesday: Future Sight P12

Two words: scanner problems... It is a lame excuse, but it's what actually happened. It looks like the quality of the scan got affected as well...


Tuesday, September 4, 2012

HTML5 Tuesday: Zoom!

I've been meaning to learn HTML5 for quite a while, perhaps even longer than the time I've been meaning to pick up drawing webcomics and messing around with music composition. Problem is, I've been using Flash for so long, and javascript is dumb and suck... and dumb.

But there's no avoiding it, so I've written a little something... let's hope that it actually works (on anywhere but my home browser):

Zoom!

Nothing complicated of course, just a little image being zoomed and reset every few seconds. The code is super primitive - eventually I'll need to learn to code up some properly image loading, image rendering, and other miscellaneous functionality into separate javascript files.
 
Dropbox seems to work for me after some initial setup trouble, but I suppose I'd need to shop for a web host now...

Monday, September 3, 2012

Art Weekend: Business Casual (WIP)

Since this is a long weekend, technically I'm still on time. This is going to be a multi-week project.


I had a late start for this particular drawing. For the longest time I couldn't think of anything good to draw, but this idea came up in the last minute. The first draft of the drawing looks like this:


The idea is there, but the perspective for the chair is way too extreme and the leaning height is not right for Cecil at all. I also went back to previous pages of Future Sight and remembered Lynn has shorter hair. I went to Photoshop, dragged some things around, print, retrace, and came up with a second draft:


The pose looks a bit better. I like Lynn's new nonchalant attitude. Cecil's height still isn't quite right though, so I had to do more fixing. I retraced the corrected image in Photoshop and added some of the background back in, resulting in the trace on top.


There's still some awkward anatomy that'll need some fixing, but overall I'm pretty close to being able to color this piece, which is a whole other nightmare.

Thursday, August 30, 2012

Melodic Thursday: Melodrama

This one is rather simplistic. I really should learn how to fine tune the instruments... the cut off sounds so unnatural.



I think I'll likely start writing HTML5 code snippets on Tuesday. They'll not be as as fancy as the stuff from the other days, but it's one of the many things that I should start practicing on.

Wednesday, August 29, 2012

Webcomic Wednesday: Future Sight P11

This has been a bad week for keeping the blog up so far... Writing a self contained story within a few hours using a predefined set of time travel rules had proved to be much more frustrating than I imagined.

Today, we suffer a case of "people looking right" and "actual backgrounds" (i.e. I'm terrible at drawing those). Also, holy walls of text, batman:


I'm not sure if I even want to make up for the missing Tuesday content. It's so damn hot over here...

Monday, August 27, 2012

Design Diary Monday: A Different Kind of Design

No game design happened today...

I've spent the day learning about how the original Flash Duel player track came to be instead, on the Flash Duel forums. The site seems to be down at the moment, I'd have to recheck the link to see if it works later.

Sunday, August 26, 2012

Art Weekend: Flash Duel Board Replacement

It's done:


The custom board is meant to be a replacement for the original board from Flash Duel, which looks like this:


Given that their second edition character cards look gorgeous, I was kind of surprised that the kind of blah player track remain unchanged. I do admit that visually the new board is a bit more noisy, but I really think the nicer background makes it an overall better package. You do have to be aware that square 9 and 10 are dark squares though.

Here is the artwork without the score track on top:


(Nuts, I forgot to put the shadow underneath the stone lantern! I knew I forgot to do something...)

Dream Journal: Rules for Time Travelling

If anyone ever bother to read far enough back, this blog used to be a dream journal before I've decided to use the space to practice my craft. I've deleted most of the uninteresting or too personal posts, but once every blue moon there's still dreams that are interesting enough in and of itself that I want to write things down.

This is definitely one of them.

The dream itself might have been all over the place, but the rules for time travelling is pretty explicit:


  1. You can only travel back in time, never forward.
  2. A time traveler can, at any moment in time, produce a time ticket. A machine owned by the time traveler can remotely print them.
  3. The time ticket looks like a movie/concert ticket, recording the time and location the ticket was created.
  4. Once retrieved from the machine that prints the ticket, it can be used any time by reciting lines printed on the ticket and tearing it. Holding on to the stub, the time traveler instantly returns to the moment in time the ticket was produced. Everything is the same except that the time traveler maintains all memories before making the trip.
That's pretty much it. It's not particularly scientific or unique, but the idea of the moments saved being tickets have a particularly interesting ring to it. I can probably write a short story this coming Tuesday based on the idea.

Thursday, August 23, 2012

Melodic Thursday: Deploy (The Troops)

I wanted to write a piece as a background music for a Tactical RPG, so I started with a militaristic drum beat and ended with this.



I was going to congratulate myself on a not-totally-crappy bass line when I realized that I've just copied from the key segment of Mind Heist (better known as the Inception Trailer Music). Oh well, at least this bit is just a practice piece, so I can get away with it... but I swear, once these unforgettable melodies get stuck in your head, you just unconsciously start writing them back down.

Wednesday, August 22, 2012

Webcomic Wednesday: Future Sight P10

Boo, rush page is rushed~


I have to keep some of the "off" expressions in the middle panels because I 'm short on time. Only the last two panels have more or less the face I'm looking for.

Tuesday, August 21, 2012

DIY Tuesday: $2.99 Dice Tray

Dice Trays. They're certainly a luxury for board gamers, and a simple search on amazon says a run of the mill dice tray is going to cost you like $20 or more. Well, screw that, that's too rich for me. I mean, there's certainly cheaper solutions out there, and that brings us to:

This lovely $3 Dice Tray, with bonus dry erase surface!


All you need is an IKEA RIBBA frame (pick your color!) for $1.99 and a cheap dry erase board combo thing from Staples for $1. You don't really have to get the dry erase board, but I like the bottom of the tray to have a slightly softer surface and I'm used to the sound of dice hitting cardboard from tossing dice into board game boxes. The softness of that cardboard feels just right.


The instructions are dead simple: disassemble the picture frame. Use the paper with the bar code to measure out the size of the frame on the cardboard.


Use scissors to cut around the cardboard. Remove the magnet from the back of the board and reveal the stick side of the tape. Flip that paper with the barcode over and tape it onto the cardboard to cover the ugliness. Reassemble the frame with plexiglass at the bottom and the dry erase board on top. Originally the dry erase board would be the drawing surface on the other end, but somehow the plexiglass actually leaves fewer marks when it's being erased. Tape the dry erase marker's velcro sticker to the frame's side, and you're done!


To use the dry erase side, flip the tray over. Not only do you get a (mostly) practical dice tray, you get a dry erase board for writing down score and stuff for free!

Sensible people would probably try to pimp this up by lining a felt surface on top and inserting softer foam (mouse pad foam) at the bottom, but it does kind of defeat the cheap and dirty spirit of this dice tray. You can also try one of the larger RIBBA frames, but the cost kind of scales up in an unpleasant way also. And if it turns out that the dice tray is pretty useless... I'll get back to you on that.

Time for some Elder Sign.

Monday, August 20, 2012

Design Diary Monday: From Pirates to Bar Fights in Less Than Seven Days

Before I move on from Pirates to Bar Fights, let me finish explaining how the revised pirates duel work. The trinity (Strike, Parry, Focus) forms the core of the system. Because focus is not an attack but a bonus to another action, I added another card that'd benefit directly from focus and adds a little randomness to the game, hence Unload. Since Strike at this point would have advantage over two cards (Focus and Unload), I've added one final card that's sort of a bigger counter to Strike - and that's how Brutalize came about.


Staggering as a status was added to the game to resolve some of the hard counters between cards. Focus was added to shift the attributes of the cards so the counters would work differently from one turn to the next. This is all nice and well, except... well, it isn't. The web of cause and effect gets fairly difficult to explain, and ultimately the complexity counteracts the attempt to reduce a sense of randomness to the card choice - between the focus buff and the stagger debuff, there's way too many combinations of resolutions for any normal player to keep track of.

And then there's the multiplayer version of this game, where you choose an attack and aim it at another player, then they still simultaneously resolve by order of priority... it's just chaos from that point on. Honestly, I would still like to run a small test with these rules just to see how chaotic the attack guessing game goes, but I never got a chance over last week, and I felt like the premise should stay, but I should stop trying to make the game so deterministic.

Let's introduce some chaos into the game.

I watched a rerun of Dead Man's Chest again over the weekend (is TNT just showing this movie every other week?), and the bar fight scene gave me an idea. Let's remove focus and brutalize and start fresh with a new trinity:


Now, let's change Unload into some form of liquor. "Unloading" now means smashing the bottle on someone's head. We'll also untangle all the priorities and simultaneous resolution so besides parrying to counter, all the actions are played one card at a time. We've untangled the game completely and now we're just playing a basic "take that" game (every turn a player toss a damage dealing card, some cards are there to block attacks, etc).

But the liquor part of the game can get interesting. Suppose there's a running tab on the amount of liquor smashed and consumed, wouldn't it make sense that the guys who lose the fight would have to pay the tab somehow? What if the liquor can be consumed to strengthen strikes? We arrive at the following rules:


  • There are three main types of cards, punch, block, and liquor.
  • Liquor can be consumed or smashed onto other people.
    • if you drink it, you play it in front of you and the cost adds to your personal tab, but your punches becomes stronger and you draw more cards based on the cost of the liquor, gaining a significant advantage.
    • if you smash it, you use the card as an attack on another player. The discarded bottle adds to a growing pool of damage tab that someone will have to pay.
  • Punch card deals direct damage. Every drink you have makes your punch stronger.
  • Blocks reduce or deflect damage, and are played as reactions to other players' attacks.
  • If a player sustains X damage, he or she is knocked out and must pay for everything in the damage tab.
  • A player can also play a card to try and walk out of the bar fight. If he or she is attacked that turn, that player can't block and the attempt to walk out also fails. If the player does walk out of a fight:
    • if multiple players walk out on the same turn, they share whatever has to be paid off that turn.
    • if there's still players left, add up the personal tabs of the players leaving and each player pays an even share.
    • otherwise, you'll have to pay an even share for the damages as well.
  • When there's only unconscious players left in the bar, all unconscious players must pay an even share of everything that's not paid for.
  • To give the player who is most invested in the fight an advantage, whoever is the most drunk (with the biggest personal tab) can go first.
If the numbers work out right, there should be an escalation of cost built into the game that'd make it interesting for players to decide when to stay and when to quit. There's a much bigger factor of randomness, but I think the new design is "light" enough that more randomness might actually make the game better.

And now, back to assigning numbers. I hate this part.

Weekend Art WIP: Replacement art for Flash Duel

I talked about Flash Duel last Tuesday. There's a lot to like about the game - it's unique, it's fast, it's cerebral but not overwhelmingly so, there are times when you'll have to take a chance and win or lose, the next game takes like no time to set up.

The game is in its second iteration - there's a pedestrian version and a deluxe version of the first edition of the game, where one is a bit too bare bone and the other too expensive (laser etching everything probably costed a lot of money)... so with the second edition release, the card art got updated, a lot of the deluxe components are replaced with less durable but much better looking printed cardboard, except for one thing.

The track that the duelists walk on. It's so pedestrian. Compared to all the character art, the track is a relic that really, really needs to get an upgrade. And I thought, I don't do enough background/landscape pieces (I haven't done a single piece this last two months...), this is two birds with one stone!

Then the heat wave hits SoCal. God it's too hot in here. This is as far as I got with the times of day that's not melting my face off:


You can see the original layout underneath the new one. What I've drawn up is obviously a sketch and color test, but I like what I have over what was there already. It'd be best if I can plan it so the landscape would naturally have dark and light spaces (required as part of the game mechanics), but if not artificially darkening spots still doesn't look too bad.

Sunday, August 19, 2012

I blame the heat

I really do. now I can actually start doing something other than lounging around and complaining about the heat...

Thursday, August 16, 2012

Melodic Thursday: Playing With Live Mixing New Instruments

No big revelation in terms of composing better melodies, but I've been playing around with a bunch of new instruments... who would have known that there's actually free orchestral samples (from the Sonatina Symphonic Orchestra) and you don't have to fork over a bazillion bucks to get the professional ones (I'm sure they sound a bazillion times better, but for my purpose...).


Also, who would have known that jumpy melody is played by a specific violin technique. The more you know.

Oh, also also... I've played around with recording a live mix of the three tracks by muting sections on and off on the fly while playing. I'm sure there's a way to do it properly inside Renoise but I still haven't found the time to read through the manual yet.

Wednesday, August 15, 2012

Webcomic Wednesday: Future Sight P9

Why oh why didn't I just start some moe-tard story about a few cute girls frolicking around? It'd probably be a lot easier than trying to explain this plot:


I've made an effort to clean up borders and do speech bubble layouts before I darken the penciling. The panel layouts are also less rigid than before. This is slightly better than the previous pages, I think?

Belated Rant Tuesday: The Case for Solitaire Board Games

Blarg, late again, but I'm late this time because of this:


I've beat an AI character, one that operates on cards and written rules instead of some smartphone app or Flash program or Steam app. It's as old fashioned as it can be, and yet... something about it feels good. Like, better than computer games. It's absurd, I know. Here's what I've thought up so far that'd justify this far-fetched idea:


  1. Physical feels good. It's the same advantage that you get with normal board games. Holding and moving a pawn, slamming down cards... all these can be easily (and maybe better) simulated on the computer but you just don't get the tactile feel of manipulating stuff.
  2. More physical space means more information. With screen real estates plateauing at 1080p and actually shrinking for new laptop consumers (what is this 1336x768 nonsense), having physical space to "display" information actually makes information feel more handy. That discard pile to the right? At this size, it's probably easier for me to just dive through actual cards rather than some sort of on screen search interface - this is especially true if the cards are MtG style unique cards.
  3. There are just some things the human brain can compute easier. Special abilities are a pain in the neck to program, but all it takes are a couple of well written words for a human to compute all the interactions. Which usually means with designer board games, you get a lot more text heavy special abilities. That's a good thing. It's variety that you don't normally see in computer games.
... and once in a blue moon, I'd pull out a deck of cards to play (Klondike) solitaire. Blasphemy, I know.

Monday, August 13, 2012

Design Diary Monday: Revising Rock Paper Scissors Since 2012

Human creativity is weird. If you force yourself to think about new solutions to a problem sometimes all you can get are dumb fixes... but if you step away from the problem for days or even weeks, sometimes the solution would hit you on the head like an anvil out of nowhere. After so many previous failures, I'm not so ready to call this the design that solved all the problems, but at least I feel like it's getting somewhere again.

In other news, I've learned that tags can do something other than serve the mysterious SEO gods. I've added a new tag to keep track of all the posted related to this particular game's design progress:


To more or less reboot the design process, I've decided to take out treasure points, targets of opportunity, and all the other mumbo jumbo that's related to scoring more points... I've reduced the game back down to its basics, a rock-paper-scissors game. I've also mentally sort through all the feedback I've gotten from previous play tests and incorporated a few suggestions:
  • Sometimes, randomness is not such a bad thing. While it reduces the deterministic aspect of the game, it creates situations with calculated risk that'd at least give a bad choice some chance to make a comeback.
  • Trying to resolve combat from a single card choice was probably a disastrous idea. Without a series of shifting parameters and each card choice giving the same probability to win or lose, the choice becomes completely random even if the decisions are weighted differently - as long as there's exactly one hard counter to each possible choice, players are still forced to consider each choice evenly.
  • And building on the previous point, there really needs to be some way to predict player behavior in order for players to decide on an action instead of randomly picking one.
So I've added an additional mechanic to the basic "deal X damage" formula: modifiers that'd affect actions in the next turn. And with that, here's the component dump of the latest pirates card game:




While still themed around pirates, the game is no longer about ship to ship combat with captain and crew - now we're down to fighting over treasures on an individual level. A simplified list of rules is as follows:


  1. Each player begins combat with 5 cards.
  2. Each player plays a card each round.
  3. Higher priority cards are resolved first. If multiple players have cards of the same priority, the player with higher initiative takes precedence.
  4. As a player's action is being resolved, grab the highest priority token that's not yet taken.
  5. If a condition is applied to a card's action, resolve them in the order they're listed on the card.
  6. If a player takes damage and that player's action card has not completely resolved, apply a stagger token to that player's action.
  7. If a focus token is available, consume it whether the card has a focus condition bonus or not.
  8. A player who takes 3 points of damage or more is knocked out.
Balancing are a-coming, so I'll discuss the cards and the justification for the rule changes in detail next week. In the mean time, here's an example game of how the game works in its current form:

(Oops, I've forgotten to put down stagger tokens completely. Oh well, the player who takes damage is usually staggered...)



Bottom player plays strike and gains initiative. Strike can stagger gun Unloads and make them miss. Strike also deals light damage.


However, strikes can be parried. Parrying deals damage to the aggressor to inflict stagger (and it does resolve, since stagger for strikes resolve after the normal action).


You can unload guns on a player that's standing around ready to parry for a 1 in 3 chance to deal 3 damage (in most circumstances, winning outright). Better yet, you can play focus to gain the focus buff. The buff makes the next gun attack 100% accurate.


However, since focus has lower priority, the bottom player gained initiative that round. In the next round, the players have the same priority, but since the bottom player maintains initiative, the bottom player brutally finishes the top player off by dealing 2 damage. Mmm, this is not exactly what I want to happen... Yup, changes are a-coming.

Next week: Justify your game.

Sunday, August 12, 2012

Art Weekend: Card Illustrations

Alright, so maybe Art Friday as a concept isn't exactly working out. Weekends in general are just kind of a leisure time for me, and I'd rather not let my studies get in the way of my pleasure seeking (seems backwards somehow...). As a result, I think I'll just stretch the art stuff to include the entire weekend from now on. That way, I'd have more opportunities to get stuff done and maybe spend more time on a piece instead of rushing everything to completion.

Despite the heat, this weekend ended up being very productive for me. I'm able to go back and start working on the Pirates game (again!), and as a result of that I've drawn a few illustrations to go with the new card designs. They're more of a study than anything for now, but I'm still quite happy with the output:


This is the illustration for "strike", the first study I've done. The foreshortening needs work, and the soon to be cropped parts of the drawing are crude, but I think the pose is effective.


Here is one for "counter". I like the illustration, but it'll probably be scrapped later since the card it describes don't trigger unless the player is under attack. This probably works better as "ripose". Poses involving more than one person is always tough, so at least I'm happy with the characters' layouts.



This is "focus". Pretty simple. The hair and the beard turns out well.


This is "brutalize". Now that I have a second look I guess the poses are a bit wonky... at this point my hands are getting tired but it's also loosening up, so the anatomy looks wrong in several places but the idea behind it feels right. I was wondering why the right arm of the sword guy didn't look right - I think the forearm should be brought to the front.


Finally, one for "unload". Something frilly to finish up the set of illustrations. Man, that right arm looks super short.

After scanning the pictures, I've also messed around with painting one or two of them:


I tried messing with ArtRage's watercolor. I don't know why, but compared to their oil (not that I've actually painted with oil based paint) brushes the watercolor just feels wonky. It looks so cool when it blends right, though. I suppose one of these days I'd finally figure it out. Until then I should mess around with it every now and then.


One in Photoshop, a quickie. I need to find a way to get rid of flat slabs of color since turning on pressure sensitive size and opacity never feel right for me, so I end up having brush strokes with round tips.

Now, to prototype the cards... then I can do another post about the design changes to the game.

Thursday, August 9, 2012

Melodic Thursday: Chip Kingdom

The original goal was to do a generic "I'm dungeon crawling" loop. It has a bit of that, but there's a grander vibe that might make it better as an overworld music:

What The Hell, Flash? Ep 1: When String is an Integer, all hell broke loose

There are times when Flash is amazing to you. Things that you thought it's going to screw up, the interpreter would compensate and everything works better than you imagined. Then there's time when one wrong turn and the whole damn thing explodes.

I've been working with Adobe Flash since Flash 4, back when it was called Macromedia Flash. Every iteration since 4 has had its perks and quirks - and as a Flash dev, you learn to live with all of its idiosyncrasies and work around stuff that's actually broken.

One of the many regrets that I have over the past 10 years is that I have not been documenting all the quirky broken stuff that happens with flash - things that I tend to forget after a while and come back to bite me later. Today, I present to you this gem:


Alright, I admit that I was being lazy - I used FlashDevelop's code generation to create the constant, which automatically declares it as a string with the same name as the variable. I didn't quite erase the type definition far enough and after wrapping up other sections of the code, I compile and run and...

Blank screen.

I wondered if there's some problems with my resource loading - so I put some debug traces in the document class, compile... blank screen.

Okay, this is getting stupid. I try to launch the file in Flash's debug mode, and it says "you cannot debug this swf because it does not contain actionscript". Right. A few thousand lines of code, they just all conveniently disappeared. The source files are all there, the linkages are there, Flash just refuses to recognize I'm publishing a file that contains any code at all.

Alright, panic time, I pulled out the most recent backup of the project, retrace the changes line by line... and finally, I found this little gem that should have been caught as an innocent syntax error. Well, that's a whole day wasted, whoop-dee-doo.

Lesson of the day: Don't assign types to constants. It'll destroy ActionScript's space-time continuum apparently.

Wednesday, August 8, 2012

Webcomic Wednesday: Future Sight P8

This conversation is going to look awful if I keep it as a "dialog of internal dialog", so I guess I'll have to cheat again...


...and the plot is slowly being rewritten from behind the scenes. It's what happens when you come up with the story as it goes. I can plan general events that occurs in the entire story, but I can't stand detailing all the things that happen in-between before I start writing/drawing.

Tuesday, August 7, 2012

Design Diary Tuesday: I Hate You, Drawing Board

... but it looks like I'll be going back to it for a bit.

(this is game in progress that's being discussed, just as a refresher)

There's currently a lot of fuzziness involved with how projects are chosen and how players gets rewarded for making progress, completing projects, or exposing other player's incompetence. Based on the results from yesterday's calculations, the deck would also need to be more than 40 cards thick - maybe it'd go all the way up to 60 or even 80, an uncomfortable number to print play decks with.

I'm also being constantly tempted to add complexities to the game. What if when you undertake a project, you can boast or bid how far you can go with it? Go bigger for more funds and reputation, but get more blame for its failure. There should also be rewards for completing the same project before another player to earn extra rewards.

But adding all these things don't change the fundamentals of "cheat" or "not cheat". I really hope I can come up with ways to accomplish different levels of deception, with bigger lies yielding bigger rewards.

Monday, August 6, 2012

(Belated) Design Diary Monday: I Am Not a Wizard With Spreadsheets

One of the many weaknesses I have with game balancing is I have an extremely poor background in statistics, and apparently statistics is all the rage as far as balancing numbers are concerned.

A few weeks ago, a certain reddit topic brought me to the use of hypergeometric distributions. My current work in progress idea surrounding deception will make heavy use of the concept of "BS" style card game and some type of melding card game.

I've started with this google spreadsheet. The only relevant table is the third one at the bottom that shows the probability of the player having N or more cards after drawing X cards from the deck. The one published above uses a standard deck of playing cards, and calculates the probability of having N or more cards of the same suit.

If each project type in my game idea corresponds to a single card suit and the values doesn't matter, then the distribution would show me how many cards a player might need to complete a project on his or her own, using materials (cards) of the appropriate suit.

Just to throw it out there, a 5 card project size seems to be a reasonable number. The distribution tells me that there's a 50% chance I'd have 5 cards of the same suit... after drawing 18 cards? That can't be right.

The percentages are deceptive. The number tells me the percentage of all possible hand of 18 cards... but I've been starting with a hand of 5 cards and consciously made a decision to pursue a suit that I already have - often with 2 cards. Adjusting the starting numbers to a 47 card "deck" (since I've drawn 5 cards already)  and 11 cards that'd yield me the same suit (since I already have 2 in my hand) yields a much more reasonable 50% to get 3 more cards of the same suit at the 11th draw... until I realize that I've already drawn 5 cards in this case so technically I'd get the 50/50 at the 16th card. Replaying a few hands with a real deck of card confirms this - getting that "flush" is actually pretty darn hard.

Interestingly, there's a 62% of having 5 cards or more of the same suit in the beginning of a 4 player game, if each player draws 5 cards to start with. If the game allows trading, the chance of getting those 5 cards would be significantly easier.

These numbers, once I mess around with it some more, can tell me a lot - it sets boundaries for quantities that are within reason, and with these guidelines I can come up with a card mix for my initial test. It's probably a lot harder to look for the fun in those numbers, but I firmly believe that's where the number crunching part of game design stops and the art part begins.

Tomorrow (well, later today): the promised initial numbers for the deception game. This design is going overtime!

Saturday, August 4, 2012

Sketch Friday: My Other Clock Says I Have One Minute Left

I really don't want to miss two Fridays in a row.

There's something more elaborate I'm doing on that's still a work in progress. Stuff is happening all around, but hopefully I'd have all Sunday to get it done, and I can consider myself "caught up" to the schedule.

Thursday, August 2, 2012

Melodic Thursday: Four Chord Joy

I've always wanted to see what the four chord buzz is all about. And by "four chords" I mean these four...


Being so limited in my musical knowledge means I have to actually look up a different video just to figure out what notes are actually involved, but once I've figured that out, it certainly is easier to write a pleasant tune based on the chord progression:



And I lifted a few bars from Ode to Joy... oh well, I had no time, so I had to lift more materials just to get a start. At the very least, I think I'll write a few more tunes from these pre-baked chord progressions, just to get a feel of how melodic progression generally feels like.

Wednesday, August 1, 2012

Webcomic Wednesday: Future Sight P7

I think this depiction of the neural computer interface is about the only "throw it out the window" level of impractical technology in the story. At the very least, I'd like to keep it that way...


Tuesday, July 31, 2012

Rant Tuesday: Ranting About Not Able to Rant Anymore

Today, I've finally come up with a good topic that I wanted to cover. However, about an hour into it I've realized that I can't post it, not publicly anyway. It's not the first time I have to reconsider posting something candid but controversial, and for that reason linking these writings with my real identity does sort of suck.

In any case, I should be careful about what I post, anyway... too many people got their fifteen minutes of fame the wrong way by posting something incredibly irresponsible and stupid on the internet, and they have to live with its consequence for months if not a lifetime. I don't think I'll ever post anything as severe here, but some topics will get a rise out of someone regardless of how carefully I craft the argument... so in the end, I err on the side of caution.

Then I have to consider my potential audience. There are just things that I would gladly talk about with my friends but not my family; there are things I'd talk about with my family but not my current and potential future employers. If I have to self censor and post something that'd satisfy all three categories of audiences, what's left over (or what I've been posting so far) is so generic that I might as well not make the posts at all.

The reason I've decided to blog-a-day is to re-hone some of the crafts that I've dropped post-college; ranting about brain dead, politically correct topics is not going to improve any part of my being. Starting next week, I'll replace this space with short stories, scripts, or extra materials from one of the four other daily types (game design, webcomic, music, art).

Still have to make up for last Friday. More art to do for tomorrow, too!

(Belated) Design Diary Monday: Deception

Last Monday I began brainstorming ideas central to the Pirate movies, and after mulling over it for the rest of the week I've found the concept of deception to be the most intriguing. Deception was present, or it was intended to be present, in every stage of the pirates card game design, where part of the crew you set sail with are suppose to be hidden, but in practice what your enemy brought to a fight never seemed to matter as much as your own composition.

So I kept the idea of deception as the central mechanic and narrowed my focus. When it comes to deception, two types of games come to mind: hidden role games like Mafia or The Resistance, and hidden value games like Dead Man's Chest's very own Liar Dice (okay, the movie didn't invent the game, but it certainly brought it to most people's attention). Of the two, I've come up with an idea to work with hidden values: the art of running researches and the possible deception involved in securing funding while having honest breakthroughs versus lying through your teeth.


In the beginning, I've started the idea with two very basic concepts: research projects and research breakthroughs, which supports the projects. The projects are public knowledge: everyone knows you're working on a project and trying to complete it in time. The breakthroughs, however, are hidden by default: you may have materials strongly tied to the project (yellow), "wildcard" materials (green) that supports the project but not to the degree of the "pure" stuff, and fake materials (white) that are made up stuff to prop up your project's credibility. The deception surrounding your research's actual progress forms the core idea of the game.



Expanding on this core idea yield the following:
Let's say your research's real progress is the sum total of your relevant material's strength (let's just call breakthroughs "materials" for now). Strong materials gives you 2 points, related materials 1 point, while made up materials obviously 0. At some phase in the game, investors would come in and invest more funds based on the number of materials you have, not the actual progress of your research. In turn, you can pour those funds into acquiring more projects and getting actual breakthroughs. This sets up the incentive for players to risk putting down fake progress because it means they'd get themselves the real stuff faster. We still need a reward mechanism for busting other people's lies though:


Here is one possible implementation of the investigation mechanic. An opposing player must spend some of the grant money for a private investigation into some aspect of the research. The more you pay, the more through the investigation becomes. For example, a cheap investigation can only randomly expose whether one of the materials is completely fake; another one might reveal several pieces of info at once; the strongest would probably tally all the materials and wager the actual progress is below a certain level. Problem is, I don't feel like there's a good reward to a successful investigation that is thematically and mechanically sound. I suppose the one paying for the investigation might get money from a lawsuit, and maybe this model is ultimately the best one (since it is extremely simple), but the one that I'm going to try developing actually looks like this:


So I've added one more layer to a research project, that is when you have enough actual progress, you can open up those materials to sell a real product for money and reputation. Reputation becomes the game's real measure of victory, not money. It gives research projects a natural life cycle so there's no need to clog up the play space with projects where all progress are real, and I can balance the game to give honest players appropriate rewards. I can also set up a reward for investigations that thematically makes sense - reputation - where exposing other researcher's bad practices would earn you some reputation but falsified claims might actually give you a reputation penalty. That part of the diagram might be changed, to be honest, but I think I'd very likely keep the "release a product" part of the project life cycle - it completes the game in ways that the simple version simply cannot.

I have some other ideas such as having collaborating research partners (splitting funds and reputations), or special restrictions attached to specific projects, but the general idea is sound. The next phase of the project involves a bunch of heavy calculations to come up with an initial set of numbers attached to all the different components of the game. Math... I guess... I'll do that next week. Yup!

Monday, July 30, 2012

Missing Two Deadlines in a Row

I've missed Art Friday from schedule issues, and family matters came up in the last minute that'd prevent me from posting Design Diary Monday on time (I'll still get it up in the next hour or two, though). The blog-a-day schedule is not as stable as I want it to be since I have not been able to (or had the motivation) to build a back log, even though that was my intention from the beginning...

And I just thought I'd link this up with my g+ since I've just read about that today! Not exactly the best face to show after a month of (mostly) consistent day-a-blogging.

Oh well, there would be a burst of contents, since I'll be doing my design post, a make up art post, and a rant post all in a matter of hours. Well, the art post would come even later, actually...

Thursday, July 26, 2012

Wednesday, July 25, 2012

Webcomic Wednesday: Future Sight P6

I really have to work out a schedule for these kinds of things. I blame Dead Island...

I'm not a fan of being able to read into someone's internal dialogs, but soon as I planned the rest of this chapter I realized it'll be necessary. Oh well, at least there's a setup page for it so it won't get confusing later...

Tuesday, July 24, 2012

Rant Tuesday: I Don't Want to Rant about Dark Knight Rises or the Shooting

...but apparently I can't put anything else in my mind at the moment, so I'm stuck with these ideas.

The movie was fine. It was... good, I guess? It certainly didn't leave an impression like The Avengers did, or Inception, if we're talking about a movie in Nolan-verse. I think the movie worked up until the Lazarus Pit sequence... everything was logically hopeless up to that point. And then the writers realized they've written themselves into a corner and things started to unwind in increasingly comical manner, until the ending when it pretty much ended up like this:



(I still can't believe none of the friends with me got the reference when I mentioned it)

...and the shooting that'll forever be associated with this movie. Whenever inhuman tragedies like this happens, I really wish there's a way to erase the identity of whoever is responsible... not for their sake, but so that their names would never be recorded anywhere in history... in a generation where every voice wants to be heard but few would be heard, I find that rewarding these extreme acts of depravity would fast become a dangerous slippery slope.

...on the other hand, I find it extremely difficult to sympathize with the victims and those related to the victims of these events. I'm suppose to feel sad, I think, but I don't know any of these people, just a name and a vague description. I know how I'm suppose to feel, but whatever feeling I have is not going to be genuine. And when am I - when can I - be happy again?

Monday, July 23, 2012

Design Diary Monday: Brainstorming Solutions

Alright, so starting from this week there's no more scripts for me to follow. I've arrived back at the point where I need to make changes to the game, and I'll be spending the time on these posts actually working out problems instead of reporting results from the past.

The first order of business is to try and see if the pirates card game, in any form, is salvageable. I had a chance to watch some of the Pirates of the Caribbean movies over the past few weeks, and I was reminded of the things I wanted to portray:


  • Hunting for legendary treasure (Aztec gold, the compass, the heart, what have you)
  • Deals and betrayals
  • Satisfying broadsides making ships explode

I didn't think I was successful in getting any of those points across. I've never come up with a convincing way to make players go after specific pieces or types of treasure; none of the versions ever got to a stage where temporary alliances made sense. The closest I've gotten were the ship battles, back when there were dice rolling... getting a good cannon roll and making ships explode on the spot felt good, but that was all the way back to the first version of the game and I don't want the rules to ever get that complicated again.

Honestly, let's just pretend I have the Pirates of the Caribbean license for a moment and think about how I can get the back and forth wheelin' and dealin' between all the characters work as game mechanics. In Dead Man's Chest,

  • Jack needed the Dead Man's Chest to avoid his fate of servitude
  • Will needed the Compass from Jack to secure Elizabeth's Release
  • Elizabeth acquired the Letter of Marques but needed the Compass in return
  • Jack agreed to trade the compass for the chest...
...

Actually, this is clearly not as complicated as I remembered, is it? An easier way to describe the formula is,
  • Player 1 is after item A
  • Player 1 has B but for some reason cannot directly reach A
  • Player 2 is after item C, and he can trade B for C
  • Player 2 now has the option to get A so he can trade with Player 1 for B, or steal B from player 1, or negotiate with a player 3 directly for C instead...
Okay, the trading is getting Catan-ish. I can work with that. Ultimately, I think I'll need to introduce secret objectives to the game: for simplicity's sake, let's say each player needs to acquire some unique item that won't come up as a found treasure.

Secondly, there would be time limited opportunities that allows items to convert from one type to another. probably a set of cards that shows the item obtained with the item requirement in small print.

Thirdly, items randomly appear and the players have low influence on the items they can get their hands on. It sets up scenarios where two player can trade items that'd benefit each other. There needs to be justifiable reason for trade to make more sense instead of just killing or blowing up each other, which should be an option...

I guess this is how the game would proceed. Next week I can continue this work or try and fix the rock-paper-scissors combat!

Friday, July 20, 2012

Art Friday: The Black Knight's Last Stand

Going to lose a lot of time over The Dark Knight Rises this evening so this will be a quick one:

In light of the midnight shooting, stay safe everyone. You can never be too careful.

Thursday, July 19, 2012

Melodic Thursday: Chip Church

I was actually looking around Renoise to see if it comes with a string synth that sounds somewhere near the ballpark of Carly Rae Jepsen's Call Me Maybe, but I ended up finding a chiptune instrument that I want to play with instead:



A very simple melody. I've never quite figured out how to spice these basic pieces up a little though.

Wednesday, July 18, 2012

Webcomic Wednesday: Future Sight P5

Completely ran out of time today since I've lost my head start doing the game concept yesterday. Also: Title Drop!

I have immense trouble drawing any character that looks to the right, mainly because I'm right handed and I've never made any effort to spend even amounts of time drawing people that faces different directions. This is also one of those pages where it's just suppose to be two people sitting around and talking about a bunch of stuff, so it's kind of rough to think of a layout that won't bore everybody to death.

I really have to draw more people facing right.

Game Design Bonus Tuesday: Steampunk Feminists Vs. Zombies (The Card Game)

This is the newest strip from The Escapist's Critical Miss. Satire be damned, when it comes to cool concepts you just can't go wrong with a name like "Steampunk Feminists vs. Zombies"... so I've decided to come up with the framework of a card game based on the title. At the very least, it'd be a no obligation brain release from all the trouble I'm having with my current game's design.

So here goes!

Concept

True to the name, the game must contain elements of steampunk, feminism, and zombies. The easiest design is to do a co-op zombie apocalypse survival game, and then layer it on top with steampunk gadgets and a smattering of feminism ideas... and I'll be doing that here. KISS and all that junk.

Here is how it breaks down:

  • Zombies. The players are defending their homes and zombies are knocking at the door. If they take down all the players, the players all lose. The game escalates as more and more powerful zombies are being thrown at the players as the game progress.
  • Steampunk. In order to fight back, the players assemble various makeshift weapons from household items... while engineering plans for more efficient and powerful steampunk weapons and barricades can be assembled, the players have limited rights to wield advanced weapons and have restricted access to the machines to assemble the items. Which leads to...
  • Feminism. Since all the player characters are female, in order to win the rights to use advanced machinery, the players have to risk leaving the safety of their homes to hold rallies, conventions, and assemblies in order to advance their rights. At the final stage, the players unlock the right to build the "Enigma Machine", the ultimate anti-zombie doomsday weapon. Once it's built and deployed, the players all win the game.

Components




Character Cards: each player is represented by a character. Each character has a few statistics that affects her effectiveness in specific game related tasks:

  • Leadership determines how quickly the feminism track moves when she makes assembly and speech actions.
  • Engineering affects the speed she assemble and disassemble items.
  • Vitality determines the number of damage she can take before she is eliminated.
Materials: The player can spend actions to scavenge for materials. Most materials can be broken down for parts, shown on the right side of the cards. They might also serve directly as makeshift barricades or weapons, though they're not very effective. Finally, advanced disassembly techniques can break certain materials down into specific gadgets, but the disassembly process requires access to a dissembler, a class-restricted machine.

Plans: The player can also spend actions to acquire plans. Most plans require materials to assemble - the list of components required are on the left side of the cards. Barricades can directly block zombie attacks round after round, while weapons can directly eliminate zombies. As the players gain more rights to use advanced steam power and assembly machines, they can assemble power generators to power automatic weapons, freeing them precious time to continue their road to women's suffrage.

Zombies: You just can't get enough of 'em. After spending all available actions, each player must add additional zombie cards to the horde. The zombies shamble from house to house, bang on barricades, and if the player is unlucky, they just might get a chunk of flesh or two bitten out of them. As the zombies are eliminated, more and more powerful strains of zombies enter the fray. To stop them once and for all, the player must work together to advance the feminism track...


Feminism Track: Once the player feels secure that their barricades would hold, they can spend actions to assemble and make speeches. These actions would push the players further up the feminism track. At certain milestones, all players would gain the rights to use a new class blueprints, allowing them to build more powerful machines to fight the horde. Ultimately, they must advance to the end of the track to gain the right to vote, then acquire the rights to build and deploy the Enigma Machine to end the zombie menace once and for all.

Game Rules Draft


  1. The objective of the game is to eliminate the imminent zombie threat. As a cooperative game, all players must work together to achieve a common goal. The players all win together or they all lose together, even if some of the players are eliminated during the course of the game.
  2. In the beginning of the game, each player selects a character.
  3. Put aside the "Enigma Machine" plan card. Separate the advanced zombies from the normal zombies. Shuffle and form the zombie deck, materials deck, and plans deck. Put the "Enigma Machine" at the bottom of the plans deck.
  4. The game begins. Draw zombie cards equal to the number of players and distribute them equally between the players. This is the initial horde.
  5. Each player take turns in order:
    • Activate Machinery. As long as there's coal to power steam generators, power can be generated to activate steam powered weapons and barricades. These activation effects do not cost player actions. The coal is spent in the powering process.
    • Take ActionsDepending on the state of the game, the following actions may be available to the player. Each player can take up to 3 actions per turn.
      • Scavenge: draw a material card or plans card and add it to the player's hand.
      • Trade: hand a material a plan, or an assembled item to another player.
      • Speech: the player spends the remainder of his or her actions to advance the feminist cause. Make a leadership check and advance the track accordingly. As milestones are reached on the track, the corresponding class unlocks occur immediately.
      • Assemble/Disassemble: Once the class I blueprints are unlocked, the players earn the right to disassemble materials and assemble them into basic machinery. A plan can be turned into an actual item as long as the materials are available for that player.
      • Use Items: use a material for its base effect or a machine for its activated effect. Items that are automatically activated cannot be manually activated on the same turn.
    • Zombie Attacks. Make attack rolls for all zombies currently attacking the player, and add additional zombie cards in front of the player afterwards. When the zombie deck runs out, increase the zombie cards drawn per turn by 1, reshuffle all the eliminated zombies and add 5 advanced zombies to form a new zombie deck, and continue to draw up to the necessary number of zombies.
  6. If a player takes damage equal to or more than the character's vitality, that player is eliminated. The zombie that is attacking that player will spend a turn on the deceased player, then on the next turn that player's character is removed, and all zombies attacking that player redistributes to the remaining players evenly. Any remaining materials on that player can be scavenged; any functional machines are considered broken and must be repaired with an Engineering check (after the machine is scavenged). The players lose the game if all player characters are eliminated from the game.
  7. To win the game, the players must reach the end of the feminism track, and with the plan in hand, one player must assemble the Enigma Machine and spend the required power and actions to activate it. When it is activated, all players win the game.
And I'm done! Since I've ripped this concept from someone else it'd probably be a bad idea to actually develop it (besides, the whole zombie survival thing is seriously overdone lately), so feel free to copy/steal/redistribute/whatever.

Bonus Art Day: Tech Support

Totally not a stereotype (it is)