Indie Game Dev


16
Aug 06

The YouTube of Video Games

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.


4
Aug 06

The Game Maker’s Apprentice

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.]


24
May 06

Found: That game framework I was looking for…

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.


17
Mar 06

Is Gameplay Innovation Really the Answer?

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).

Continue reading →


3
Mar 06

Innovation not necessarily Indie?

As a judge for the Independent Games Festival, I’d be the first in line to agree with Jeff Vogel, who suggests in an article for RPG Vault that the truly innovative games won’t be coming from the indie gamedev scene, but rather from the big corporations:

But truly innovative games? The sort you’re only going to see a few more times in your lifetime? Those will come from Electronic Arts.

I would agree with the point Jeff’s making, and I do enjoy the dash of realism that he’s attempting to throw on the indie fanboys. After reviewing hundreds of indie titles over the years in the IGF (as well as reviewing hundreds of non-indie titles for the AIAS), I would say I’ve seen equal numbers of innovative titles in each camp.

Continue reading →


2
Nov 04

Gamasutra – Features – “Postmortem: Nayantara’s Star Chamber”

Gamasutra – Features – “Postmortem: Nayantara’s Star Chamber”

A nice article written by an independent game developer. Very representative of what’s possible from a single individual. Also a great example of finding the appropriate niche with the potential for decent revenue.

I wish Paul Dennen of Nayantara Studios the best of luck!


28
Oct 04

GameDev.net — XGDX 2004 Report

GameDev.net — XGDX 2004 Report

Nice mention of the site. For those visiting from GameDev.Net, welcome, and please don’t run away so fast! The site is about to be re-designed to make the useful information easier to find; I’ll also be moving over to WordPress as opposed to Blogger, as well as introducing a forum for discussion.

For those wondering, yes, there’s a post below that mentions the game being delayed/cancelled. The game is being re-born and the complete development will be featured on-line. In addition, the project will be entirely built with free/low-cost tools (the existing work was done in my company’s product, RenderWare).

So, bookmark this page and check back once a week or so. Once the re-design is up and a bit of content is on-line I’ll try to make sure the word is spread around so people can find me.

Thanks for the interest!

P.S. For those who missed the XGDX presentation, or are interested in getting the slides, you should be able to find them a few posts down. Thanks!


10
Oct 04

XGDX Presentation

Just finished the XGDX 2004 presentation about Lone Wolf Game Development. You can find the PowerPoint here [433KB]. I unfortunately didn’t get too finish the actual presentation — which was unexpected, because I was worried that it wouldn’t be an hour’s worth of presentation! Guess I was a bit more long-winded than expected.

If anyone has any comments or questions regarding the presentation, please post comments to this entry or e-mail me. Thanks to everyone who attended and thanks to the folks at Course Technology for putting on a good conference.


4
Oct 04

XGDX this weekend…

This weekend is XGDX (Saturday and Sunday). Hope to see a crowd there, sounds like there will be some decent keynotes. My presentation is on Sunday, during the last time slot, so I hope there are still a few people hanging around to see it then. It should be interesting…

For those wondering, since I didn’t finish the actual game project the focus of the talk will be more to the general idea of “lone wolf game development.” I’ll be looking at what it takes to be a one man development shop, the pitfalls to avoid (obviously gleamed from personal experience!) and the good habits to develop. I’ll also dig into (briefly) some key technologies that you’ll want to have in place and where you can get them.

I really wanted to put this post up here for anyone who may be surfing the XGDX session descriptions and finds themselves typing in this URL. Don’t be disappointed! Well, okay, you can be disappointed, just look forward to something slightly different from what was promised initially. It’ll still be good info.

BTW, the presentation material didn’t make the cut-off for the XGDX discs so anyone who wants a copy of the presentation will need to grab it from this site (I’ll post it up later in the week). I’ll also have a bunch of accompanying details, URLs, etc., you know the routine.


8
Sep 04

Mission: Unaccomplished

Okay, so first the bad news… the Single-Player Project has been postponed indefinitely. Work and everything else just soaked up too much of my time over the last few months and I was simply unable to get the game to the point that was satisfactory. To show that I haven’t been a lazy bum since then, check out the 35MPH blog to see what I have been working on.

Now, the good news… I will still be doing the presentation at XGDX, and the focus will still be on how a single individual can make a project. But, instead of looking at it from the successes of the project I will be looking at it from the failures. In other words, what not to do!

Also, instead of entering the IGF this year (as planned) I will instead be judging again. To be honest, that’s pretty cool because I really enjoyed the judging last year.

Finally, I plan to kick off a new project over the next few months, likely in cooperation with some fellow developers, for an IGF entry for next year.

Of course, I don’t think anyone actually ever sees this blog, so I may just be talking to myself.