Archive for the 'Indie Game Dev' Category


The Craft of Gamemaking 6

I presented this evening at the ACC. I think it went well. I’m definitely out of practice. The slides probably won’t be interesting without the talking, but in case anyone is curious: The Craft of Gamemaking.

If you saw the presentation, I’d love to hear from you in the comment section.

Stuck in Limbo 1

I’m looking forward to getting stuck in Limbo. He’s looking for C++ programmers, but I was first struck with how perfectly this game could be done in Flash. With Flash’s new filters and improved performance, I’d guess he could get the exact same results, cross-platform and with a lot less development pain than C++.

It’s a great example, though, of the kind of results we’ll see as more people with classic art and graphic design backgrounds (with a sprinkling of programming experience) are brought into the gamedev fold. The in-development footage on his sight is hauntingly beautiful, and an inspiration to say the least. Makes me remember those first few hours playing Out of this World, still one of the few games to deliver so much on so little.

Speaking of Out of this World, I’ve always thought it’d be awesome to see that game remade in Flash (it’s largely rotoscoped with a vector-like graphic style, very applicable to Flash development). Hell, if it fit on a 1.44MB floppy and ran on a 286, surely it can run full-speed in Flash on a modern day machine? Those are the kind of side-scrollers people need to be making… there’s a lot of life left in that very simple mechanic! (And the side-scroller view? Well, that aesthetic has worked for “comics” for a hundred years.)

It works, in theory… 8

Socialism (or Communism?) is famously a political system that works, in theory. When I previously used the redundant metaphor of Manifesto Games as socialism, I think I may have given the wrong impression — I blame it on my exposure to Slashdot groupthink — that I somehow thought indie games being sold through fair and equitable channels was a bad idea. I clearly do not.

What turns me cold to Manifesto Games is the attitude that surrounds it, the “Fuck the publishers!” writ large in every message, memo, ad, logo and interview. I understand the sentiment, and I appreciate that most of these folks have some sincere experience that justifies their feelings. I just feel as though the image this portrays to those folks beyond our current audiences is one of brash, juvenille angst — in other words, exactly the negative stereotype we regularly defend ourselves against.

Ironically, these are exactly the creators who call for innovations in gameplay that lead to broader appeal. And they largely delivers on the call, at least in a raw indie film kind of way. The problem is that they then go and wrap it in a public image that accomplishes the same goal.

Sugar attracts more than salt… even if the bitterness is not directed toward your audience, the result is the same: when people who don’t live and breath games get a snapshot of this they get that same chill you get when your best “couple” friends have an argument in front of you. Coincidentally, the same feeling I got when I played Facade. ;)

A response from GarageGames on XNA… 0

Jeff had an excellent write-up addressing the doubters of XNA Studio Express. And he’s go into an excellent example of exactly what I’ve been trying to explain in all of my recent defenses of the idea. Perhaps his words are a bit more convincing? Let’s hope so…

Manifesto to go the way of socialism? 1

Well, like it or not, the Manifesto Games website is open to the public. And Slashdot is already knocking on its door. The comments on Slashdot are a little low on the supportive side, but actually very similar to my thoughts as well. In addition, some of the comments over on Greg’s blog are serving to point out some obvious technical/aesthetic/usability issues.

Of course, as Greg points out, it should be considered beta. But one lesson everyone should learn from “Web 2.0″ is that you often only get one shot at a first impression with “the masses,” even if it is your beta. Folks like Google and Flickr have really upped the ante on what quality people expect in a “beta.” (Beta, the new 1.0.)

I hope Greg listens to some of the initial complaints. I agree that the site design and aesthetic aren’t competitive with other online shopping portals, nor is the usability. The registration requirement for downloading a demo is a killer that I’m sure he’ll have to change if we wants any success; these are already “high risk” titles to dedicate any time to — asking the user to jump through one more hoop is easily the nail in the coffin.

And, as I expected, the whole “sticking it to the man” attitude wears thin very quickly. I find it hard enough to swallow all the open source machismo I get from the Linux crowd, et al, and this utterly won’t work for gathering a larger audience for games. It may work for street culture like music, fashion or art, but that’s only because there’s some sincerity behind it (and some deep roots) — this feels shallow and parroted (though I do know that Greg’s hatred of mainstream game development is pretty sincere). As I described it elsehwere, it’s just your classic emo/angst/rebel shit that only serves to attract the least desirable (i.e., pennyless) customer. Do you think folks with $20 burning a hole in their pocket and some spare time are looking to stick it to the man? More likely torrenters and folks like myself satisfied with just a demo…

Like most angst-driven aesthetics, it will wither under its own pretenciousness. It happened to socialism, it happened to the grunge scene, it’s happening/happened to emo, and I’m guessing it’ll happen to Manifesto. But, there was one comment that was absolutely on target: Greg is absolutely putting his money (and time and effort) where his mouth is, and I applaud that.

Why all the hate? 10

I’m really surprised by some of the negative comments on Microsoft’s decision to open up Xbox 360 to indie development. I would have expected a great fanfare from the indie crowd, but most of what I’ve heard has been suspicion and derision.

For example, Greg’s thoughts on the subject. Sure, it was basically what I expected, but that still doesn’t mean I wasn’t disappointed to hear it. I realize that his bread is buttered these days by indie *PC* game developers, but he does seem to miss the f*cking point… as do many of the commentors on that post. Here’s what I had to say (carried over from my comments on his blog):

First, Greg attributed the Net Yaroze to Sega. Of course, it was actually Sony. And it was an incredible pain to work with. And it was basically like having a cheap-ass devkit. And it severely limited the resources you could access on the machine. On, and your game had to run completely in-memory. Details @ Wikipedia.

Second, several folks suggested that the service should be completely opened up, truly a “YouTube of Video Games.” Of course, MS (and the media, hook-line-and-sinker) loves a soundbite like that, but what they’re offering really isn’t YouTube (yet). The obvious caveat is that MS has to keep the quality bar high for “official” titles (as I explained in my previous post on the topic). Folks pointed at Amazon.com as an example of an “open system with filtering,” but they are being disingenous (or naive) if they think the barriers to getting a book listed on Amazon are equivalent to me uploading some random code to a website (or a video to YouTube). Perhaps, with the recent growth of on-demand publishing, perhaps the barrier is a bit lower, but there’s still an incredible amount of relative filtering that happens.

Besides, how do you make money off of that? There’s several, several orders of magnitude more videos out there on YouTube and they still don’t have a clear path for monetizing that. Do you really think it’d be easier on the Xbox with code?

Oh, and I really like the excellent point someone made: “Greg, will Manifesto be publishing any title that comes their way, regardless of quality?”

Of course, Greg’s (and some commentors’) perspectives are very different than that of the consumer MS is targetting. MS is targetting that high school kid who knows some programming and wants to do some stuff on the console in his living room. They’re targetting hobbyists who want to “play” on a console. Of course, these same people already know (and already do) this stuff on PC’s.

Craig Perko echoed this misconception I’ve seen elsewhere (which demonstrates GarageGames’ very effective marketing surrounding this):

I had the same reaction as Greg, especially since the actual software you get to use is literally a port of GarageGame’s existing middleware.

GarageGames is offering the Torque X package on top of MS’s XNA framework. It is a separate purchase, just like if I sold you a C# class library for you to use. Users are welcome to use Managed DirectX and C# to their fullest (and basically have full access to the hardware).

Unbelievably, someone actually raised the “but C# is crap” objection:

XNA Express only works with C#. Whilst it isn’t a bad language it certainly isn’t going to go up against C++/asm for performance. [...] You have to create your game on a PC first, erm, at that point you can either distribute it to lots of ppl on PC, or a few ppl on the 360. This is much less 360 development then PC development with 360 development tacked on. But then WTF you develop games with C# and managed directX when you could just develop with C++ and directX, with only a tiny loss in your potential audience? [...] XNA is a solution looking for a problem IMHO.

Let’s dispense with the whole C# vs. C++ crap. I applaud finished product, not the tools used. I could give a flying fuck if some kid in his bedroom (or the guy in the office next to me) used VisualBasic or assembler to craft his Pong clone (or his WWII FPS or his epic fantasy MMO). We’d all be so lucky as to be able to use a nice high level language like C# to make all of our games. Besides, the performance is as good or better than most programmers can do in C++ anyway. I only wish that the performance difference between C# and C++ was the barrier to indie gamedev nirvana…

I was excited when I heard about this, but that’s because until I read this post by Greg, I didn’t realize that the developers wouldn’t be seeing a cent of the game’s sales. Why couldn’t M$ just split the profits 50/50 with the developer? (Of course any such arrangement is probably confused by the fact that the games will be bought with M$ “credits” or whatever they call them, rather than with any real-world currency.)

Which is utterly, completely false. While you can’t make any money off your games, neither does MS. Folks pay a flat fee to have the opportunity to download and run managed code on their console. That’s the only financial transaction. You can’t charge for your game, MS doesn’t charge for your game. If they like it and want to distribute it on XBLA, then count your blessings, because you just got a spectacular calling card for your next title. Oh, and some steady income (based on the current conversion rates). (BTW, credits have a linear exchange rate with US dollars, so there’s absolutely no confusion there even if they were in play.)

I think that if M$ was mostly staying out of the revenue side, and letting people just use XBLA as a market to sell their games at whatever price they wanted, and M$ was just taking a relatively small cut, then Greg would have an extreme positive positive reaction to this. Instead the pricing is still screwed up, and he has an extreme negative about it. (If you haven’t figured it out by now, he’s very rarely lukewarm about anything. :)

As I mentioned in my previous post on the subject, there’s no way that it would be fiscally sensible for MS to open up the Xbox like this. Not yet. There’s not enough high quality software to stand out from the crap. They make money off of software sales. If there’s a huge market for software that they don’t get a piece of, then they’ll have to shift their profit to the hardware, which would mean consoles would become even more expensive than they already are. If they just took a fixed percentage off of each sale (like eBay, for example), there’s a whole bunch of responsibility that lands in their lap in regards to quality and support. Basically, opening up the Xbox as requested at this time would be a huge liability and money sink for MS, and would really gain very little for the indie gamedev crowd.

And finally, to sum up Greg’s (notably biased) opinion on the matter:

Whoop ti fuckin doo.

Be fucking happy for this new opportunity for indies, hobbyists and amateurs! No one is forcing you to make Xbox games, no one is focing you to sign-up for the Creator’s Club. But previously, it wasn’t even an option. Now, there is another door open, another platform to develop for, one that is significantly different in context than the traditional PC. This will only make the indie gamedev community stronger, and will serve to increase the numbers of game developers out there with some decent skills.

Why waste the effort on tearing it down? Why all the hate?

The YouTube of Video Games 7

People would think strange of me if I failed to mention Microsoft’s new XNA Studio Express and Creator’s Club. I’m excited to see DIY gamedev brought to the consoles, and it looks like Microsoft is doing everything right.

Sure, folks will say that Sony did it first with the Net Yaroze. But if you think they’re the same thing then you just don’t get it. XNA Studio Express will allow C# developers to target the Xbox360. Retail Xbox360’s. That’s the first big difference between this and Net Yaroze (which required a custom console). The second is the XNA toolset is a really high quality toolset (unlike the usual half-baked Sony developer tools). Visual Studio is arguably the best IDE (undisputed for C# in my book). The C# language is a wonderful compromise between C++, Java and higher-level dynamic languages like Python. The Managed DirectX API (which is the hardware API for XNA) basically eliminates all of the irritations of the traditional C++ DirectX API (which is already orders of magnitude better than any API Sony has ever released), leaving you with an ideal system library to work. The .NET Framework is very, very full-featured (much more so than the STL, and more appropriately so for games than something like BOOST).

In fact, I’m already in line to get this beta, and look forward to writing C# on the Xbox360. I think we’ll see a spectacular influx of indie gamedev. Seriously, the only drawback for C# for indie gamedev on the PC was always the client machine: fluctuating hardware specs and the requirment for a bulky framework download (potentially). Lots of barriers on top of the built-in indie gamedev barriers (for distribution). But C# on the 360 eliminates that: guaranteed hardware. And with the addition of automatic resource management in C#, you’ve practically eliminated all of the low-level programming worries. All of the focus is on creating the game.

Bravo, Microsoft. Bravo.

The Game Maker’s Apprentice 4

Early this summer, I downloaded Game Maker and gave it a go. I had first seen the app several years back, but had dismissed it after checking out many of the games created with it online (though there are a few excellent exceptions!).

Reevaluating Game Maker in light of my recent shift from game technology to game development (see my posts on Flash, et al), what I saw was an excellent, excellent tool. A hugely underapprecaited tool, to say the least.

Last week, I received my copy of the Game Maker’s Apprentice. I haven’t had much time to read it, but over the week I’ve made it through the first few chapters and have nothing but compliments for the authors. The writing is incredibly clear and the instrunction is as smooth as silk to follow. Yeah, of course, they’re making incredibly trivial games. To start with! By the end of the book, the reader will easily have the chops to make something on par with just about anything you’d find in a casual game today, or on the Nintendo or Super Nintendo a decade ago.

Well, I was spurred today to write this because I just read an excellent article by one of the authors of the book on Gamasutra. He discusses Game Maker in the context of education. What struck me was where he talks about game players often are able to comprehend game mechanics and share opinions on them, but until they’ve actually tried making games they are very unsuccessful at suggesting how to improve them (even though they think they have good ideas on how to improve them).

My challenge to myself and to my readers (yes, both of you!): download Game Maker (free) and make a game this weekend. Grab some graphics from an old NES or SNES title, or grab some from Danc, or make your own. Just make something. Clone something. Then tweak it slightly. I guarantee you’ll find the results incredibly satisfying. Kinda like going for a walk on a pleasant day: it clears the cobwebs from the mind.

BTW, I’m very curious to try out Torque Game Builder and see how it compares. Considering the history of Game Maker relative to TGB, I’m not getting my hopes up, but I’m definitely curious…

[Update: here's an IGDA discussion forum thread regarding this article.]

Found: That game framework I was looking for… 7

Not too long ago I posted about my desire for a game framework that was as useful as the frameworks enjoyed by the whole “web 2.0″ crowd. Call it envy, if you will. Those web 2.0 geeks have great toys to play with. The concluding paragraph of my post pondered, “Maybe I shoud just shut-up and start using Flash…” Well, I did.

Stop what you’re doing right now and go to OSFlash. It’s the home for open-source software devoted to all aspects of Flash development. You’ll find tools for creating assets (vector art, animation, slide show wizards/convertors, etc.) and you’ll find tools for creating code (IDE’s, compilers, build systems, decompilers, etc.). You’ll find instructions for how to build an entire toolchain without touching a single proprietary tool or anything with Macromedia’s or Adobe’s name on it. So that quashes my whole “it’s proprietary no matter what Macromedia leads you to believe” complaint.

My second complaint was the feature set of Flash, mainly performance. The rendering engine in Flash is fairly specific, based initially around vector artwork. But all you have to do is check out the most recent official Flash Player release, version 8, to see that Adobe is paying attention. They’ve added the fundamental building block of 2D gaming: raw access to a linear frame buffer. The new BitmapData object has optimizations for bit-blits (CopyPixels), scrolling and — shock and horror! — blend operations far beyond the standard alpha-blending. And it’s all nicely accelarated in assembly under the hood. And there’s now an option for bitmap caching which even speeds up vectors as well as helping the develop do trivial double-buffering of rendering.

And, if that wasn’t good enough, Flash Player 8 has a much faster virtual machine. And all of this gets better: the version of the player currently in public beta, version 8.5/9, is even faster in both the virtual machine and bitmap areas. And the nice thing about the Flash Player is that your code gets faster without you having to do anything — it’s like having Adobe ship out a new video card to all of your customers once a year!

Are you looking for a ubiquitous computing platform? The Flash Player is more widely distributed than Java, Quicktime or Windows Media Player, so it’s technically a more universal platform for video than any codec (now you know why YouTube and Google Video use Flash). And, considering the compatibility issues between web browsers, it’s actually the only true write-once-run-anywhere application platform in the hands of the masses.

That’s right, the masses! Some version of the Flash Player is installed on 95%+ of web-enabled devices. Note, I didn’t say “PC’s”, I said web-enabled devices: smart phones, PDAs, settop boxes, video game consoles, handhelds… And 85% of them are nearly up-to-date to the latest! As of December 2005, 3 months after the release of Flash Player 8, it had 45% market penetration. If the trend follows as it has for the 7 previous versions (and if you view a graph of the version penetration, you’ll see that the adoption trend has been nearly identical with each new release), the latest player will reach the “ubiquitous” 85% market penetration by the end of summer 2006. If version 9 releases on schedule, it’ll reach that penetration by this time next year. And I would fully expect version adoption to accelerate as broadband reduces download time and web users become generally more savvy. (BTW, download size for the latest player is still in the ballpark of 1MB, I believe).

And it’s not just for the web anymore, either! While you’ve always been able to wrap your Flash file in a “projector” to create a stand-alone executable, it’s gotten far easier (and cheaper!) with the recent move of ScreenWeaver to open-source. So now you can create your web-based game (try-before-you-buy) and then have users download the deluxe version (which will be a normal EXE to them, but to you is basically the same game compiled into an EXE). The advantage? Using ScreenWeaver (and similar projector apps) you can embed additional native code into your game (by providing hooks to Flash through DLLs) that can provide tougher AI (they can run faster in native code) or nice touches like full-screen and video mode changing. See the PopCap model for ideas.

You simply can’t understand (or maybe you can by counting exclamation points in this post) how excited I am about Flash now. For those that know (or care), back in the dot-com days I started a project called OpenSWF.org along with a few Flash programmers of the day. Back then, Flash didn’t have anything but the most trivial of scripting capabilities. Our plan was to create an open-source Flash player (written in Java) that could be seamlessly extended using Java’s remote class loading facilities. It was a cool idea that never got off the ground, and I personally burned out on Flash after many years of wrestling with it. At the time, there were a paltry few open source Flash projects, with most of them dedicated to automating basic Flash tasks (like creating a slideshow or a text ticker).

Jump ahead eight years (wow, eight? oh my god…) and I found that the open source Flash community has reached parity with what Macromedia or Adobe are providing (accept in the case of vector animation editing — some competitors, but Flash still seems to be preferred). Command-line compilers, IDE’s, SWF-to-XML round-tripping, build systems, standard code libraries… even support for alternate languages (C#!). In addition to all of the stuff that goes into your actual finished product, there’s a huge set of libraries for nearly any language for generating Flash files from your own tools. In other words, the ideal game development toolchain exists surrounding the SWF target format.

And last but not least: the programming language at the center of it all, ActionScript. I’ll have to admit, I’m a die-hard C++ and C# programmer, but I’m growing to love ActionScript. I’ve heard all the love heaped onto dynamically-typed languages but have never spent much time using one (unless you count BASIC). I’ve got to say, it’s really growing on me. The beauty of ActionScript and the open-source command-line compilers is that you can run them in a “strict” mode that requires you to statically-type all of your variables (even if it’s just to the universal base class, Object). And I truly love the fact that the type system is dead simple: all numbers are of type Number, whether they’re floats or ints or bytes; all types inherit from Object with no need to manually box them; strings are built-in; and it’s all managed, i.e. garbage collected. Don’t like ActionScript (EMCAScript or JavaScript)? Try C#, there’s a compiler for it as well!

Last night I was working on a piece of code in a data-driven game engine. Leveraging my “old fashioned” C++ OOP concepts, I started building in some base classes and other infrastructure to provide me a property system for my game objects. I kept adding fields, refactoring them into base classes, sticking in compositional objects, etc., until I realized that the virtual machine was already doing this work for me under the hood. And what do you know… ActionScript allows me to leverage it directly. Because of the dynamic typing (and this is even more dynamic than I understood that term to mean), I’m able to create a new, generic object containing whatever properties I decide to add to right at the spot of invocation. In other words, I can say…

var person:Object = {name:"Gina Vechio", children:["Ruby", "Chickie", "Puppa"]};

…and have a well-formed, custom-built object right there. No type needed to be created. This is ideal for data-only objects. Furthermore, I can even iterate over these properties, and if I define the base class myself, I can override the way the code handles getters/setters and function calls. That bears repeating in it’s own paragraph…

ActionScript exposes it’s OOP underbelly such that you can truly treat it as a fully interpreted language: you can dynamically change how your types react to method calls for methods that don’t exist and for member variables that don’t exist. You can treat functions as first-class objects inherently, you can use “eval” to execute strings as code, and you can access properties (member variables) by string name (or by string concatenation). You can even access and manipulate, in code, at runtime, the object that represents a function’s scope.

It’s about as soft a language/machine as I want without feeling like it’s analog. And that’s just ActionScript 2, apparently it’s even been improved more in ActionScript 3! (Coming soon in Flash Player 9.)

You’ll notice this post is devoid of links to any of these wonderful projects I’m in love with or specifics on my techniques or setup… that’s intentional, and not because I’m lazy (which I am). Don’t worry, I’ll soon do a follow-up post. In the meantime, you should be able to google everything you need.

Oh, and one last thing to check out: at GDC 2005, Scott Bilas gave a presentation where he basically reached the same conclusion I did. Don’t know if you know Scott, but he’s a smart cookie: he wrote the streaming engine for Dungeon Siege (or at least he’s the one that explained it to me and others at an earlier GDC). His talk on continous worlds was inspirational in the same way that his recent (last year) talk on Flash was inspirational. I hope it inspires you. I hope I’ve inspired you.

Viva la Flash.

Is Gameplay Innovation Really the Answer? 3

Patrick Dugan just made a recent post continuing the thread of the realities of indie gamedev. There’s been a recent rash of parade raining for the indie gamedev scene, starting with Jeff Vogel’s idie lament that I commented on earlier (and was recently linked to from Grand Text Auto). Patrick quickly recaps the observations made by Jeff Tunnell on what the proper expectations of success should be for indies. Jeff properly points out that average titles can only hope to break even, while only the really successful ones are profitable. The result: the market is actually not that different from nearly every other mature creative market where craftsmanship is plentiful (see movies, websites, books, music).

Read more »

Next Page »