Growing ever restless with my RPG game idea in my head, I actually decided to start designing some of the code infrastructure. Doing things like this is productive two-fold: I make some headway on the project, and I become a better software architect. In layman's terms, this type of exercise could maybe be likened to lion cubs playfighting with each other both for recreation and to grow stronger. But this post is in no way directed at the layman, I'm afraid. Here's why:
I had to shrink the image a little so it'd fit on the page nicely, so right-click and hit "View Image" to see it full-size. But yeah, this is an early go at my turn-based, RPG battle system. (If you don't understand what some or all of that means...sorry, but it doesn't get any better from here.) I initially wasn't planning on UML-ing this out, but I'm glad I did; I still don't have it all down but this much at least helps. I plan on making a C++ battle simulation, and then once I have everything in order, bring the implementation over to C# with Unity.
So what we have here is the battle system split up over a bunch of smaller modules. Battle is an object that represents the battle scene, keeping track of all of the Combatants and, later on, things like environmental effects and stuff. A Combatant has its Intelligence make decisions for it in battle; the Intelligence depends on a lot of different data in the battle, such as the Combatant's current state, other Combatants in battle, and the Combatant's Actor data, which is persistent between battles. The Actor may have Gear equipped which affects the Actor's state.
So, the Battle just continuously determines the next Combatant's turn and then order's that combatant to act. But, the act may end up firing off BattleEvents in the process. These events can represent almost anything, like a combatant getting attacked or a certain skill being used. Various modules may handle certain events (like one combatant flying into a rage when one of his allies falls).
Base classes like Gear and Intelligence may (or in some cases, must) be overridden with extra data, like state variables or an alternative implementation of an event handler function. As long as everything keeps to their base interfaces, this whole thing should jive. Here's hoping that concept works as well in practice as it sounds on paper.
This is all very early along... Like I said, I'm still working on a console simulator program in C++ just to try out the gameplay mechanics. But, the battle system is the meat of most RPG games, so unless I plan to subsist mostly on a good story (no guarantees there :P), I gotta put this thing through its paces.
That Kind of Month
November 28th, 2011
It's not December yet, but I can already tell it's gonna be that kind of month. And, when put into that context, you know it's not good. Work's been particularly greuling lately; it's gonna take some more overtime just to keep on top of the haphazard workload and the company's not-very-graceful growing pains...but I guess it'll be alright. I don't actually see a light at the end of the tunnel... I'm just trusting that there is one. (In the future, I may become cynical enough to stop believeing that. But I digress.)
Look, I'm no stranger to hard work and some overtime; I'm not opposed. I'm just concerned when it becomes an expectation... And, sure; fine. OK; I can see why. But, um... Well, how to put this without sounding like a greedy jackass... What doIget from it? And how can I tell if I'm being taken advantage of; being suckered into providing free labor? Yes, I know; it's "what's good for the company" and all that. I guess I'm just finding it difficult to stay motivated after months of an elevated workload and a limited sense of appreciation...
It's probably always going to come down to compensation, really... It'll probably be that way until one of two things happens: 1) I develop a passion for what it is I do, or, 2) start my own company. #2 is more likely.
To the Grindstone
November 2nd, 2011
Remember last time when I said, "what goofy excuse will I come up with next" to explain my lack of side project work? Well, I got one: overtime at work. Yep; the day job is kicking in in a mean way. Theo and I are using our C++ skills and even a touch of Lua scripting to redesign our in-house, company-proprietary slot game prototype engine. It's a huge undertaking, and there's a lot (read: the whole company) depending on us. So for the past and next couple weeks, we'll be in crunch mode. What free time I do have is most likely devoted to Minecraft; being able to escape into a virtual world which I can create and manipulate as I desire is just the decompression I need.
I do have something to post though, I guess. I spliced together a little clip of some of our outtakes from working on Go Feed The Ducks. I figure, why let our waste go to waste? Stay a minute, and listen:
Yeah, most of that was Theo... Don't I make any mistakes? Actually, not really; I'm basically an expert. I mean, you know how it is. :P
What's Your Excuse Now?
October 16th, 2011
So, here's the thing: I went and bought a pro Unity license...and then proceeded to not work on my pinball game for a whole week.
The reason? I was putting the finishing touches on a new song that Theo and I made. It's called "Go Feed The Ducks", and if I recall, was originally slated for a December 2009 release according to one of my old posts (Nov. 1st). Oops...tee hee.
But yeah, I'm glad we finally managed to get around to finishing this one. It was stuck at, like, 70% for months and then one day we just decided to just sit down, record some takes and get it the rest of the way. It's an upbeat rock anthem about feeding the ducks as a kid. You know, back when life was simple--and therefore, better.
So that's my reason for putting off the pinball prototype. What goofy excuse will I come up with next?
Um, So, Actually...
September 28th, 2011
The attentive reader knows that I've been keen on the idea of making a pinball game lately. I started working some more with Flash, in an effort to aim for another Facebook/Platogo game. But, seeing how well Unity lends itself to game like that (with its built-in physics and easy scene editing), and after calculating in my extreme bias for Unity over most (if not all) game engines, I thought, "sure, lemme whip up a quick proto with that." Why not?
The results of a few hours of me fidding around in Unity:
Click the window and use the left and right arrow keys for the flippers. The ball should reset itself if you lose it.
Now, I know what you're thinking; you read my Flash vs. Unity debate thoroughly and have immediately pointed out some contradictions with what I said there, not the least of which have to do with my deciding to side with Flash until Unity gets bigger and better. But I'd be remiss if I ignored Unity's obvious aptitude for a project such as mine. So, perhaps I'll rescind some of my previous judgements and work with Unity a little further on this one...
The above paragraph in TL/DR form: Despite what I said before, I think I'm gonna use Unity for this pinball idea instead of Flash.
Awesome as it seems, I do lose Platogo's support if I go this route; Platogo only works with Flash games. So, I'd have to find my own social network solution, as well as a database solution for high scores and such. Icky indeed. I mean, I guess I can get by with HTTP requests and SQL queries...but, aside from being unsure if those would be enough, I don't even know those things--I'm just going on programmer hearsay. So I could just...not put this on Facebook. Or I could make two pinball games, one for Facebook, and then a cool Unity one...
Don't know yet.
September 18th, 2011
Yeah, I haven't been up to much lately... It's no surprise, really; after releasing a game, I tend to just skate for a while, not really doing anything productive... However, I do have plans for another Flash game--that would be the meaning of the little green window with all the pretty geometry below:
Use the left and right arrows on the keyboard to kick the flippers, and press shift to reset the ball. Yep! So I'm working on a pinball game next. It's gonna have some cool features that are unique to it...I just need to pin down more of the code organization and, of course, the physics (powered by Erin Catto's Box2D library, ported to Action Script by Boris the Brave).
But yeah... I'm still just trying to relax a little; the day job is extra brutal lately. If only making little games like these could be my full-time job...
August 24th, 2011
Nice. Vowel Movements is finally complete! I've published it to Facebook and Platogo; you can play it by logging into either of those sites and installing it. I don't have it on this site yet, but that'll come soon.
All right! How about that, huh... I remember prototyping this idea in XNA and attempting to put it on the X-Box Community Games portal. Then I remember stopping and pulling the plug on the whole idea. But it turns out that the Internet (namely, Facebook) is a great venue for this type of game.
I mean, VM is a word game (obviously). It's not meant to be incredibly deep, but rather just a way to kill a few minutes here and there. Even I'll admit, I get sick of it if I play it for longer than 15 or 20 minutes; it's one of those "play it once a day for a few minutes" type deals. And I didn't even have to employ any of those lame gameplay-limiting snags (a la Zynga's FarmVille) that all but forbid you from playing too much at once and almost force you to come back frequently. No; Vowel Movements seems to achieve this player-wrangling behavior through its simple yet addictive gameplay.
Of course, I'm going on feedback from literally two days of official public play. Stay tuned for more results, and for the mikebelotti.com version of the game!
My Flash vs. Unity Debate
August 7th, 2011
I know! I said...Vowel Movements might be out by now. Well... It's almost done! Just real finishing-touches stuff... I mean, I don't really know what else to do with it; I think I've realized my initial design (however brief) and am ready to move onto another project... Or, maybe, my attention span is eroding and I'm ready to start on a new project.
Being ADD or ADHD is really bad for a game developer...but I'm not either of those. I am, however, liking Flash development a little more since I can take small-scoped designs and prototype them pretty quickly. Now, I know Unity3D has the exact same advantage...but here's the thing: Flash is so ubiquitous (especially on Facebook, a venue I'll probably like to dump games on) and has so much support. Unity is a better game development tool in my opinion, but it's mighty easy to deploy games in Flash.
Basically, as a renegade game developer (just go with me here), I should be throwing my support behind Unity since it's more capable and not made by Adobe. But then you get third parties like Platogo who write Action Script APIs for things like remote high-score/achievement support, and then Adobe's Facebook Graph API implementation, and it almost seems like a no-brainer.
It really comes down to Facebook support... It's not that I love Facebook (I don't), but putting a game on there gives it access to millions of potential users (and potential employers). You can put Unity games on Facebook, sure; but almost nobody knows what the Unity Web Player is, and there aren't as many nice third-party APIs to take care of mundane and/or trivial tasks for us programmers. (Unity does enough for us though, so I shouldn't complain...)
Basically what we have here is me siding with the fat cat (Flash) but wanting the underdog to succeed. What a hypocrite. Then again, if Unity had better 2-D support (right now it encourages 3-D games, which is way cool, but my current little ideas are all 2-D), we may be having a different discussion.
Don't get me wrong; I think Unity is awesome and I forsee using it a lot in the future... But for now, I need to get some more games out there, and the best way I see to do that is by dumping some small Flash games onto Facebook and getting some attention (and experience; Action Script 3 looks nice on a resume). When I'm more established, I'll probably Unity it up. BT-dubs: expect Vowel Movements done this month.
July 13th, 2011
Hi! Yeah, hey...
So, what's new? Well, um... Let's see. I'm still plunking away at Vowel Movements; it's almost ready! I figure I'll have it done by, uh... I mean, it's a side project so I don't like putting a "due date" on it, but... I mean, maybe by the end of this month. It's close! I'm basically just polishing it and then adding sounds.
Music-wise... Do you remember the Radio Medley? No? It's back in the archives section on the old site... Well, one of the segments in it was a parody of "Dirty Little Secret", called "Dirty Stinky Laundry". It was just a verse and chorus, but I've kinda parlayed that into a whole new parody song! I just need to record it, really. I can basically do the guitar part. Hopefully I can do a video of me performing it sometime!
Progress overall has just been a little impeded lately...by the likes of games like Minecraft, Terraria, Torchlight, and Team Fortress 2 (thanks, Steam summer sales...). So while I've never been addicted to actual drugs, let me assure you that I know what it feels like.
June 6th, 2011
Yeah, that's right... Water ripples. Um... To give a little bit of context, that's a screen shot of good ol' Vowel Movements, my tried-and-true word game. Now it's coming to Flash! (That would make...what...three times that I've written this game? C# .NET, XNA, and now Flash?) Bet you didn't think you'd see this sucker come out of the woodwork again! Well... Looks like it is...
See, at work, I'm hard core learning Flash (technically "ActionScript 3.0") and doing less of my usual C++ forte. Eventually I'm going to learn how to integrate Facebook functionality into a Flash app and make it into a Facebook game. And, so, I figured that if I'm going to be learning that at work, and it's pretty interesting too, I'll take this chance to give Vowel Movements another go. After all, it's got "goofy little Flash game that'll trounce Text Twist" written all over it; always has.
So, even though it's kind of tough to tell from a still shot (you really gotta see it in action), I've found an ActionScript implementation (free, I might add) that handles real-time water rippling effects in Flash. (Thanks to David Lenaert!) And I plan on taking advantage of it!
Another Good Nap
May 11th, 2011
Hey again... Yeah... Been kind of incommunicado, as per usual... Just...been busy! But not with the run-of-the-mill affairs: there's been something else eating up much of my free time... I'm not even going to let you guess though; I'm just going to tell you: my social life.
Weird, right? It's weird that I have a social life, right? Hah... Part of me hopes my friends don't read this. The other part of me isn't worried since I don't think any of them read this. But I guess I'm just adjusting to going from having no plans most of the time to having busy, action-packed weekends, full of traveling, parties, traveling parties, friends, skydiving (it's happening; July 9th!), et cetera, et cetera... Ugh, it's just such a pain. Makes it hard to get stuff done!
Haha... No, that's not what I really think... In fact I'm quite glad that I have a lot going on; there's always stuff to look forward to, and I can totally feel my social skills stat points leveling up many times over. You think I'm kidding! It really does work like that. All this social stuff is really just to increase quality of life when it gets right down to it...and, secondarily, to provide some inspiration and motivation for side projects! The latter still needs some work...
I am somewhat content with what I've been accomplishing lately. For instance, last April 26th was my birthday and I managed to practice and put out a little video of me singing and playing guitar, covering Blink 182's "What's My Age Again". It was totally appropriate, especially since I turned 23, which the lyrics referenced (however loosely). Check it out; it's probably not as bad as you think:
Mmm? I plan on doing more of those in the future... But on top of that, Theo and I are inching along on Ace of Space 2. I'm trying to ramp up progress on that a little bit; it has the makings of a great indie game, and development with Unity is going very well so far. Have a look-see in case you think I'm still blowing steam:
Ooo... What's going on in that picture? You're just going to have to stay tuned... Ooo...
So! That's all for now. I think I'm gonna go ahead and wind down for the night... All in all, things are pretty good. See ya later; stay well.
That Was A Good Nap
April 7th, 2011
Howdy, y'all! So... Actually, this is kind of awkward; I mean, how I explain going missing for four months? Uh... Well, like this: I was hibernating, you see, and, uh... No, actually, I was in a cocoon, metamorphing the site into this sleek new design, and... I could've just been lazy too. That might be some of it.
So, basically, no; I'm not dead. I guess that's the good news. The bad news is, I don't really have anything new for you in terms of content... Actually, as you'll notice, this new revision of the site actually removes the art section, since... Well, who was I kidding? Nah, I mean, as it is, I can't even come up with new games and music in a timely manner; keeping art on the plate would just be even more unrealistic. And even in the games and music sections, you'll notice I pruned a lot of the less-polished content and left it in the archives; everything's still on the server, just under the subdomain "old.mikebelotti.com" since...it's old. This is the new. The future!
Uh... So, yeah. Been busy...with this (the site), but mostly just getting distracted... Went to the Global Game Jam again in January and learned Unity while making a really cool game with Theo and a few other guys. Unity's great; I've been messing with it a bit but don't have anything tangible to show you (yet). Been practicing guitar... Tried some yoga...which is pretty relaxing...and it's kind of nice being outnumbered by women by about 20:1 (especially after Full Sail, which was, like, 50:1 the other way). And...yeah, uh...I like watching How I Met Your Mother reruns while eating trail mix, and... Oh, yeah: Minecraft. (But I've actually begun to kick that habit as of late.) So...yep, that's basically what I've been up to...
Is it me or am I coming across as dumber than normal? I think I've been out of this for too long; I'm gonna have to ease back into the blog writing thing. I won't be making blog posts nearly as often as I used to, so if I go "missing" again for a bit, don't wait up. But! I'm not gonna completely desert you, either, O Internet.