I found this article very interesting and relevant to indie game developers, so I thought I would spread the love.

When an underdog fought like David, he usually won. But most of the time underdogs didn’t fight like David. Of the two hundred and two lopsided conflicts in Arreguín-Toft’s database, the underdog chose to go toe to toe with Goliath the conventional way a hundred and fifty-two times—and lost a hundred and nineteen times.

We tell ourselves that skill is the precious resource and effort is the commodity. It’s the other way around. Effort can trump ability—legs, in Saxe’s formulation, can overpower arms—because relentless effort is in fact something rarer than the ability to engage in some finely tuned act of motor coordination.

Insurgents work harder than Goliath. But their other advantage is that they will do what is “socially horrifying”—they will challenge the conventions about how battles are supposed to be fought. All the things that distinguish the ideal basketball player are acts of skill and coordination. When the game becomes about effort over ability, it becomes unrecognizable—a shocking mixture of broken plays and flailing limbs and usually competent players panicking and throwing the ball out of bounds. You have to be outside the establishment to have the audacity to play it that way.

Read more of How David Beats Goliath: When underdogs break the rules.

I’ve been intensely researching Project Darkstar Server (PDS). Along the way, I thought I would collect some of the documentation, forum posts, and tutorials that have helped me understand how to get started. I’ve tried to avoid outdated stuff and only post things relevant to the latest Darkstar (0.9.9). Over time, I will add more as my own knowledge and experience deepens.

So, I present to you A collection of valuable links and resources for finding your way through the Darkstar code thicket.

Getting Started

You’ll need to understand this before you even get started.

Server

Example Clients

Darkstar Basics

Understanding Managed Objects

Understanding Tasks

Services and Managers

Known Issues (Big Ones)

I haven’t reached any conclusions yet, but I am really excited about Project Darkstar Server.

Project Darkstar is software infrastructure that aims to simplify the development and operation of massively scalable online games, virtual worlds, and social networking applications. Originally created by Sun Microsystems, it is today advanced as an open source project through the Project Darkstar Community.

I knew about it a few years ago, but it didn’t seem complete enough to bother with. But then I saw that CampFu had launched using it on their games backend, and that pushed me over the fence into wanting to investigate because it has to be pretty robust and usable to support a commercial product like that.

campfu I like SmartFox Server just fine. I think for my needs (indie games on small to medium scale), it would work really well. But two big motivations for looking at Darkstar are that 1) Darkstar seems like it provides more MMO functionality from the start, and 2) Darkstar is free and open source.

I had written a hefty chunk of server code for SmartFox already, and had plans for more. That’s really the product’s weakness for doing something with a persistent world type experience. SmartFox is very bare bones, but that’s not a bad thing if you go in knowing it’s not MMO-in-a-box. Well, I don’t think Darkstar is, either, but it appears to have more than SmartFox that is specifically for virtual worlds. So that is what really excites me about it: maybe I can get to building game logic sooner!

I’ve only done a day of reading about it, and I’ve downloaded and browsed through the 0.9.9 distribution. So far it looks really cool, and I like that the developers want to make it seem like a single-threaded program, because I’m not looking forward to debugging thread race conditions and all that crap. Another big plus for Darkstar, in my book.

If things pan out, I am going to be releasing a multiplayer Flash game. Some folks were balking at the idea of using Unity for Lila Dreams, but I still think that’s the way I’m going for that project. But it doesn’t mean I’m done with Flash, because I have a closet full of game concepts that I’d love to be able to create eventually. PushButton Engine is still very much on my radar. And, as I’ve said elsewhere, I choose the technology based on the needs and goals of a project and its parameters. I’m not a fanboi of any particular technology, platform, programming language, etc. I just use what makes the most sense on a case by case basis.

Maybe Darkstar will become my server technology of choice. I need more time to dig deeper and find out what it’s really like to use it on something that is non-trivial. Does it really provide a lot of virtual world infrastructure as compared to SmartFox? Is it viable for indies? I guess you can find the answers when I post again on this topic in the near future! :)

A Unity game work-in-progress

It’s nothing mind blowing, granted, but it’s turning out kind of cool. If you have a lot of imagination. :) Right now it looks like dog pooh. But it’s kind of fun for what it is.

The game is going to be very simple, very shallow, intentionally, of course. It’s one of my “learning” projects to get to grips with 3d modeling, animation, texturing, and of course Unity itself. I’m finding that the art is requiring a lot more time than the code, but that’s to be expected since I’ve been coding for decades and only just started 3d art.

creatrix-unity3d-wip

I’ll hopefully post a few more progress shots before I release it. Hope you’ll visit and say hi!

I’ve got most of my Flash work on hold at the moment, because I’m basically abandoning my own Flash game engine in favor of the upcoming PushButton Engine. I invested a lot of time, blood and sweat into my own engine and even built a nice editor. But, the friction of trying to push that forward while also trying to prototype new ideas is enormous–especially after using Unity.

I will detail my thoughts and experiences with PushButton Engine in a later post (I haven’t used it much, and it’s not quite production ready), but I can offload a huge amount of effort and leverage the work of a bunch of really smart people. But, I digress.

This post is about Unity. It’s been about two weeks since I started working with Unity. Because it’s a 3d engine and doesn’t use ActionScript, it had the effect of forcing me to learn more than just the Unity API and editor.

I’ve become a 3d modeler. Yes, I’ve bitten the bullet and learned about Blender. Turns out it’s a really nice tool, it’s free, and it’s a lot of fun! I haven’t animated anything yet, but that’s coming up real soon.

I have created several models during my learning stages (over the past few months in between everything else), and I think one day I will be decent at it. I’ll never be great, but I can probably model most of the stuff my small projects will require. Albeit, this is something that will require a lot of practice. I don’t expect much in the way of pleasing results for a while. But that won’t stop me from making new games.

I’ve learned C#. Unity uses Mono (an implementation of .NET), and I don’t like UnityScript (ECMA script, basically) because that’s how I roll. I prefer a verbose, strongly typed, manly language, and C# delivers. It wasn’t hard to learn since it’s close to C++, ActionScript, and Java, and I know all of those already. I did buy a book, though, for reference and some deeper learning as my Unity projects increase in complexity. Overall, C# has been fun, but not as fun as learning Blender. :)

Here’s how I would sum up my experience with Unity from a total noob standpoint:

  • Realize that almost every core game engine system is already implemented: input, physics, collision detection, rendering, runtime game object management, editing tools, web connectivity, asset management, etc. It’s all there.
  • Hit a few annoying oversights: font handling, lack of collision groups/filtering, a very minor particle system missing feature (rotation/spin). Realize that you can still do 99% of what you want to without developing a huge infrastructure of your own.
  • Proceed directly to game logic programming. Do not mess with low level minutia at all, other than learning the API.
  • Become joyous and explode with glee.

So, yeah. Basically, you just go straight to the fun parts! :) I am working on a simple learning project which I will release soon, and I honestly think that if I had known how to model, how to code C#, how to use Unity’s API that I could have made this game in a few days, tops. The art and sound will be more time consuming than making the game itself!

This is such a huge change from Flash, especially when I was slogging away on my own engine, trying to get to a point where I could do what I am now doing in Unity. I just want to get the heck on with making a game. I’m not the kind of guy who enjoys low level system programming. Some coders like that stuff, and–bless their hearts–now I don’t have to. 8)

All the hype is true. Unity is everything you’ve heard that it is.

I won’t totally abandon Flash (yet), but at this point Flash has specific, limited utility (2d games that need a specific look and games that require massive audience reach) whereas before I viewed it as obvious and clearly superior choice for web games. No more!

It is possible to make really good money from web games that are not shovelware, but it isn’t trivial. First, let’s look at the “usual” revenue streams for a typical Flash game.

  1. Game licensing can be lucrative, but it’s not perpetual, so for the long haul it’s not a great approach. In fact, I think it can harm your income (see below).
  2. Ads are certainly not a great approach, either. The earnings are perpetual, though, so ads make a good supplementary income stream. But that’s not going to feed the kids.

For some reason, lots of Flash developers I’ve run into seem to think those are the only ways to make money with web games. *shrugs*

Why would licensing your game harm your income when you an get paid to do it? For one thing, it diminishes your brand’s exposure.

But more importantly, it funnels your players to the wrong place! You want them at your site, not at someone else’s site. Traffic, my friends, is the key to this whole mystery of how to make money. Your traffic is precious. Don’t sell it or give it away.

make-money-with-flash While getting traffic is pretty easy with Flash because of the decentralized distribution system that evolved, bringing in revenue will always require work and creativity in your products and your business. (I blogged about Flash game distribution in regards to my shift from Flash towards Unity a while back.)

I’m not specifically a Flash supporter. I use the best tech that will allow me to achieve my business goals. For now, that is Flash because it’s got more reach than any other technology. However, if Silverlight or something else overtakes Flash as a web platform in terms of audience, then that’s what I’ll be using. Because getting people to your site is how you make money.

Some people expect to make a game in a couple weeks, slap ads in it, then rake in money. It doesn’t work like that. Ads are supplementary, remember? For some exceptions, yes, you can get rich from ads. For 90% of us, no, you will barely make anything from ads.

Bottom line is that it is possible to make good (or even obscene) money from Flash games. But not from a bubble popping game you made in three days with some Mochi ads in it. Get creative with your game and your business plan.

Whoa, this happened yesterday! I usually check their blog, but even today they still haven’t posted on it about the release. I heard about it through another blog. Oh, well. It’s all over the news, so I guess that’s ok.

The bad news for me is that I’m in the middle of a Flash project, and I can’t really allow myself to play with Unity yet! NNOOOOO!

I guess this is what separates the boys from the men. Self control such as this… er, I think I’ll go download it now. :P

There are some interesting things brewing for Flash multiplayer (and monetization, but that’s another post).

flash-multiplayer-api I’ve noticed the rise of several hosted solutions that intend to make the creation of multiplayer Flash games simpler. I’m all about using middleware. I have no ego or hangups about parts of my game code being “not invented here.” I just want to solve the problems robustly and with as little effort as necessary so I can focus on the real meaningful parts, like gameplay.

Here are services I know of. These all host your game, manage the servers, and offer other services around that theme.

Nonoba

Nonoba provides a multiplayer API, and while they seem to have some nice features, I was less than impressed with their lack of responsiveness in the developer forums. With this kind of thing, customer service is at the top of the list for reasons I will go with one provider over another. I don’t want to hit a snag and be left hanging. Some might be turned off by the fact that your server code will need to be C# (but client is Flash).

iminlikewithyou (now called omgpop)

UPDATE: I’m not sure they offer an API anymore. If they do, they’re hiding it really well. I couldn’t find it on their site.
iminlikewithyou has a similar offering, where they host the servers and give you a simple API. It doesn’t seem like a bad service, but I’m not sure how tightly a game using their API would need to be integrated with their website (it’s also a social gaming site).

Whirled

Whirled has a multiplayer API, although the games must be tightly integrated with the site. I find this strangely appealing, maybe because I like Whirled and the idea of building a game specifically to fit into it seems like a unique kind of challenge and opportunity to make something different. I’m also a big fan of that rascal, Daniel James, so there’s a lot of trust inherent in working with the platform. And, shoot, they give away a pile of money every few months to the best new games.

come2play

Come2Play offers a beta API and server hosting, too. The Api is currently limited to 2 players, but apparently they plan to support unlimited players later. They also may put ads in your preloader, although you will get 50% of that revenue. Their angle seems to be making it easy to put your games on social websites like Facebook or MySpace.

Neutron/Photon

Exit Games’ Neutron and Photon are a pair of APIs/services which provide high level features like lobby, chat, and even billing infrastructure as well as UDP/TCP networking (obviously Flash won’t be using UDP but Unity could) and full hosting for games. This seems like a very promising service, and it’s got a pretty impressive client list.

I like this trend! It tends to force you to be reliant on the service provider, but it also sweeps a lot of barriers out of your way. For small games, this could be a real boon.

But the obvious downside is the vendor lock-in, and also Nonoba and iminlikewithyou force your games to display their chat sidebar/lobby. I really don’t like that, but, again, considering what you get and the price (free!), this isn’t a bad deal for certain types of games.

I would not launch anything too ambitious on these services, but I might actually give them a spin for experimentation’s sake. They could be great testbeds for learning lessons to apply to larger projects, things like community management, marketing, development cycles (launch and inevitable updates), etc.

So what similar services do you know of that I have missed? Leave a comment, and let me know!

So, it seems that there’s been a disturbance in the Force.

Amazon (mega online retailer that we all know and love) purchased Reflexive (small casual game publisher/developer), and they repriced all the games to about $10 a pop.

It seems that there are two camps now: one says that casual games should be $10 and remain simple and brief, while the other camp maintains that indie games are worth more because of their uniqueness and craftsmanship. The significance here is that not long ago, casual games were considered to be indie games (mostly). By any standard, if you are making downloadable games, this is news.

But what is really changing is the business models. “Try before you buy” has been the dominant choice for downloadable sales for many years. Clearly, that is not as cut and dried now.

We little people can’t compete with Amazon on price. And I firmly believe that we should not compete on price with anyone, ever. Lowering your prices is rarely the right thing to do when you need more income.

Competing on price only works for commodity goods. If you have to choose between toilet paper from company A and toilet paper from company B, well, usually you are looking at the price difference above all else. It’s folly to use that strategy for selling games–unless you are Amazon so that you can afford to eat the tiny margins and try to make it up on volume. But listen to what I’m saying!! Are we talking about rubber flanges for a sink drain or video games?! It’s suffocating my soul just to write about it.

So the real shift here isn’t about casual or indie games. It’s about sales models.

Luckily, I am not planning to use a single sales model for my future games, and I think that is something that even downloadable developers need to examine: you can’t compete on price if it’s of the “try and buy” model. Find other ways to monetize and give value to your customers that they can’t get from a big shop like Amazon. Sure, it might be cheaper there, but they won’t get one-to-one interaction with the developers or personal service or a “deluxe” version with extra features.

It’s kind of exciting to read about how others are interpreting these changes. What’s your take?

(Yes, the titillating title of this post is meant to incite passion to get your attention. Please continue reading.)

I mentioned a little bit ago that Unity3d is releasing the authoring IDE for Windows with version 2.5. I read in the forums that they would release 2.5 no later than GDC, which is in March.

avert-fate-unity Unity is tempting me to completely ditch Flash. But there’s one factor making that a bad decision for the moment. Although I think eventually I will make games in Unity exclusively (assuming it all works out as dreamily as it seems like it will), Flash can’t be abandoned yet.

What’s so great about Flash?

Adoption. Everyone and their granny’s dairy goat has Flash installed. Adoption by itself, though, isn’t what makes adoption so great. Its really about…

…distribution. I can get a game in front of hundreds of thousands of eyeballs in a week using Flash. A lot of folks would think, “Gee, maybe you could make a few hundred dollars from ads. That’s not so great. Jason is stupid, and I hate him.” And then they’d go back and continue working on their C++ downloadable game. But I beg to differ.

It’s not about the ad money. It’s the traffic, ya silly persons! Why would I care about a few hundred dollars of ad money when I can get ten thousand visitors to my website each week or month? And I don’t mean putting Google ads on the site and earning from that, either. No, no, no. That’s still small potatoes.

I’m talking about harnessing the traffic machine that is Flash games and then upselling to those visitors with bigger ticket items, like stand alone games or (much more likely in my case) getting them interested in games that utilize microtransactions and/or subscription services. Now you’re talking about significant income.

Make money with ads? Pfft! I use MochiAds because I like their version control, easy encryption and especially their distribution network that sends games out to millions of people for me!

There are some other neat things about Flash, but the real reason I use it is because of distribution and other services that have risen up around it.

There’s this cool idea of sponsorship, where developers are in control, and portals pay us to show their ad to drive traffic back to them. (Did anyone notice these portals are driving traffic back to their sites? See! It’s about traffic, not ad money!)

The thing I like about this sponsorship arrangement is that it is in diametric opposition to how things work with portals that sell downloadable games. There, developers are like slaves who beg for any tiny piece of profit their own work can earn. Portals call the shots, make the money, and generally drive the industry into the ground to the point that now it’s going to be flailing around and coughing up blood for a long time until (hopefully) it finally dies some day. It’s just like the retail games business, where publishers lead developers around by the nose, take all the earnings, and drive the whole industry into the ground in the process.

(I have a lot of friends in the downloadable casual games industry, and I’m not speaking here about anyone in particular. I’m speaking about the industry and the patterns of business that are currently dominant. I certainly don’t mean that I want my casual games friends to lose their jobs! I just think that industry needs to and will evolve away from how it currently operates.)

Wow. Sorry, I was digressing passionately there for a minute.

So now here comes Unity.

Unity lacks that distribution power, and although technically it is a dream come true, the real dream come true is when that technical capability is coupled with distribution and reach on par with Flash. Now that is going to be a sight to see.

hero-master I hope that existing portals and services based around Flash will integrate Unity support. Then we can keep the existing structures in place and add Unity games among the Flash games. Oh, let me dream, would ya?!

Now. All that having been said… I am not convinced that adoption itself is a problem for Unity. I think any game that’s good enough will cause players to install the Unity plugin without hesitation. I don’t mean something like a Simon Says clone or some other shovelware game made in three days–it’ll have to be a good game.

Because of Unity’s appeal, which will make convincing players to get the plugin easy, I will start to develop with Unity as soon as I get my shaking-with-excitement hands on a copy. Building more games can only mean more adoption and, eventually, more distribution. Distribution = earnings = I make more games without a day job. Yuussssss!!1!