A quiet but official announcement

July 17th, 2009

I’m starting on a new game project! There’s a minimal site and blog for it. Please have a look.

Spirits of Gaia: an online multiplayer world.

I am building the server side code on Project Darkstar. I’ve already got a pretty nice hunk of code constructed, but there’s a long way to go still. I haven’t started on the client at all, but it will be built on the PushButton Engine.

Evaluating Project Darkstar: the verdict

July 6th, 2009

Well, I’ve spent a lot of time with Project Darkstar. I put in tens of hours reading forum posts and anything else I could get my hands on. I built a very simple MUD with it, and I looked through a bunch of other people’s code. When Darkstar delivers, it will be really amazing, and what exists today is already very cool. It offers solutions to some monstrously difficult problems.

Probably the best thing I found was that you can treat your game logic like a single threaded application. You never have to touch locks or synchronization unless you go under the application layer (a place I feared to tread).

The data store is also really cool, because you can stop worrying about game crashes and if that will force you to roll back hours of gameplay–it won’t. At most, a few seconds are lost. That’s a huge worry out of the way. One problem here, though, is that there’s no easy way to upgrade or patch the data store unless you wipe it and restart from scratch. You’ll have to write a custom tool to update it without wiping it.

All that said, the real issue holding Darkstar back right now is that it simply isn’t finished. It’s almost finished (give it 6 more months), but there’s one key feature that is a show stopper for me: it doesn’t scale. It can’t do anything besides a single-node right now. If you run multi-node, each node will be isolated, which is the same end result.

This really disappoints me, because the technology is otherwise really powerful, and I like it a lot. Sometime near the end of 2009, the roadmap says the PDS team will have multinode completed. When that happens, Darkstar will finally be a very potent game server solution! And I’ll be going back to it.

Until then, what next? I’m going to look into the Neutron service from Exit Games. (Update: After some deeper digging, I don’t think this is what I’m looking for, although I will still give it an eyeball. It also feels like it’s going to be on the expensive side.)

(Update 2: After some pacing around the house and thinking, I have come up with a couple of options for how to continue to use Darkstar for my upcoming game. I haven’t decided exactly what path to take yet, but I think it will be worth it to try and make it work. I’m counting on you, Darkstar team!! :) )

Underdog business strategy: hitting where the hitting’s good

June 23rd, 2009

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.

Learning resources for Darkstar newbies

June 5th, 2009

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

Protocols and Transports

Known Issues (Big Ones)

Vital Tools

  • Gamalocus profiler and viewerreally useful, and the graphical viewer makes interpreting the data much easier. It hasn’t been updated in a while, so I hope the project owner keeps it up to date or it can be given a new maintainer.
  • Asynchronous task library – if you need to do anything outside of Darkstar (like access a database), you will probably want to use this to work outside the Darkstar task time limitation. (I wish this was on Google code. The Java.net site is really horrible [and slow for me] by comparison.)
  • MockSGS – a unit testing library for Darkstar.

Better than SmartFox? Researching Project Darkstar Server.

May 28th, 2009

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

April 29th, 2009

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!

Two weeks with Unity: Flash what?

April 7th, 2009

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!

Can you make money with Flash games?

March 28th, 2009

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.

Unity 2.5 for Windows is released!

March 19th, 2009

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

Free, managed Flash multiplayer APIs

February 26th, 2009

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!