|
2. Sticking with 2D
I'm a firm believer in the following principle: low budget
2D looks better than low budget 3D. Way better.
For me, consistently choosing 2D projects is a no-brainer. I
have my personal biases (such as preferring the look of Miyazaki
movies to Pixar films) but 2D makes sense for several very practical reasons:
- 2D
projects generally have an extremely simple art tool chain. In most cases,
Photoshop is the tool chain.
- Very
little graphics support code is required. There's no bones or skinning or
NURBS. Just pixels.
- Since
modern consoles are able to render millions of textured triangles per
second, we never had to worry about performance, even with lots of objects
and particles.
- Collision
and physics are simplified. Bounding boxes are often good enough.
- Game
mechanics tend to be easier to refine.
- Although
we didn't use any extra artists for MadStone,
it's much easier to train artistic talent for 2D production than for 3D.
There's much less technical overhead and new team members can get started
very quickly.
One other important point is that 2D games are much rarer
these days than 3D games. Lots of gamers crave old-school 2D, but aside from
DS, these games get relatively little attention from large developers.
Interesting 2D games automatically get noticed by gamers and the press.

Working on MadStone in-game art in Photoshop
All told, I don't think a 3D title would have been a good
choice for us. There are too many complications that would have distracted our
attention away from the game itself. Most gamers will probably tell you they
prefer 3D games, but I believe there will always be a place for sprites and
tiles!
The Lesson: Rather than being distracted by the bleeding
edge of technology, it's better to use techniques your team is comfortable with
so you can focus on the game itself.
3. Adopting Slag:
Elegance and Dependability
I'm going to tell
you a secret that I learned while at IBM:
Almost all
enterprise-level business and medical software is now written in Java or
another high-level managed language.
Complain all you
want about performance and missing pointers, but there's a good reason big
business prefers Java: programmers write fewer bugs, and bugs are expensive.
There's no reason
for games to be an exception to this rule. Worrying about low-level memory
management distracts programmers from focusing directly on the solution and
writing clean code.
That's why, when my
brother Paul Stevens and I started RiverMan Media, the first thing we did was
ensure that we had a development platform that abstracted our game code away
from low-level bits and bytes.
Luckily for us, we
have a very good friend who's not the least bit afraid of asterisks and
ampersands. Abe Pralle, owner of Plasmaworks
and a professor at Northern
Arizona University, developed exactly the solution we needed.
Over three years,
our ideal game creation environment was crafted in two phases:
For our first two
games, Cash Cow and Primate Panic, Abe created a library
called Plasmacore. Using the Java Native Interface (JNI) Abe created an API
that allowed Java game code to call fast DirectX rendering code written in C++.
All the logic for the game itself was written in a safe, memory-managed
environment. This setup facilitated rapid development and elegant code.
The Java / DirectX
solution worked great for our PC games. It worked so well, in fact, that I was
reluctant to leave it behind. However, there were a few obstacles that
prevented us from using this framework on the Wii:
- The Java runtime ranges from about 7 to
30 MB, a number that increases with each version of Java. WiiWare games
are limited to 16 or 40 MB, depending on the business model the developer
chooses. We'd have to spend too much of our download budget squeezing in
the Java Virtual Machine.
- As far as I know, the Java runtime isn't
available for Wii. We'd have to port it or write one from scratch.
- Java is very fast these days, but JNI
doesn't keep up. We wanted to avoid the overhead of function calls
crossing the Java / C++ barrier.
This is where the
second part of Abe Pralle's plan was set in motion: we adopted his ergonomic
programming language, Slag. In the words of Abe's web site:
Slag is an elegant, powerful, and efficient
statically-typed, object-oriented language designed to be the high-level
language of choice for game engines and frameworks. Light and portable, its
virtual machine can be easily integrated with any C++ program. Slag's semantics
(nature and purpose of operations) are similar to those of Java and C# while
its clear and concise syntax resembles a blend of Java and BASIC.

A Slag code snippet from MadStone
As I mentioned, I
was reluctant to switch to Slag at first. Java has an extremely robust library
of utilities, a huge network of users, several great IDE's, and is very stable.
Slag, before we adopted it, didn't have any of these things. However, as we
explored using it, the benefits became overwhelming:
- Slag's runtime is just a few hundred
kilobytes and is easy to port.
- The language was designed and
implemented by a game developer for game developers
- Slag code can be cross-compiled to C++,
significantly improving performance.
Because of these clear
advantages, we committed to developing in Slag. We wrote foundation libraries,
an Eclipse plug-in, and several prototypes to make sure all the features we
needed were covered.
Spending the extra
effort to get an elegant and rock-solid programming framework was worth the
effort. To this day, our games still have no known bugs, despite us having no
dedicated test team! That's partly because Paul and Abe are awesome
programmers, and partly because we set up a system that facilitated clean,
stable, code.
The Lesson: The programming language is your coders'
medium of expression. Choose a language and framework that allows your
programming team to focus on the game, not the computer.
|
Absolutely, we plan to continue pursuing WiiWare! I still think Nintendo's business model is one of the best there is for small Indy's.
We'll be announcing our next game soon.
@Josh
Keep an eye on our next project... there's some 2D technology in there that might be interesting to you. It's not bones or skinning *exactly* but it will provide many of the same benefits!
Jacob Stevens
www.rivermanmedia.com
Madstone was buried in a sea of puzzle games, and now I feel kind of guilty for not giving it more personal attention! However, I did really like the visual style and am very intrigued at what you will do next.
I appreciate you doing this postmortem for the public. In commemoration, I hope to go home and download your game in the near future and give it a shot (I do love my puzzle games).
Good luck for the future, RiverMan Media.
I think it is really important to have reviewers have an early look on our projects to pinpoint those things that sometimes are not so obvious to us.
I also think that it is really important to have an open dialog with users surfing the web and reviews so they really understand the reason behind some decisions. Sometimes they seem to overblow everything while sometimes there is a some well intended reason behind a decision.
I also wish RivenMan Media, the best luck on the future!
I envy your ability to find a team that's dedicated to work for a royalty split, I sometimes feel so isolated in that respect.
You have some great lessons in this article and i hope that any people doing games development, or wanting to, read this first.
I hope that i can be as open to what people say about my games, now and in the future.
Good luck on your future games.
I'd like to thank you all for your support and positive feedback. I'm really glad you found the postmortem interesting and useful. Please let me know if you have any further questions.
Jacob
RiverMan Media
Ultimately, it's important to realize a couple things.
1) We learn far more from our failures than our successes. I think Kevin Costner recently said in an article, "We take failure in this country far too seriously."
2) You achieved a life-long dream; what's more important than that?
Fight the good fight!!! Thanks for sharing...
Thanks for sharing your experience!
I don't mean to pry for confidential info, of course; just wondering if despite the mixed reviews you were able to recoup some money and time invested...
I am also curious, like Nick Matantsev, about the pay off for this title.
Kudos to you and your team!