|
Overview
I've
just spent the better part of a couple of weeks playing with a wide
variety of languages and platforms. In part, my goal was to broaden
my programming horizons. But my primary goal was to evaluate platforms
and languages that would be suitable for commercial development
of casual games or other games that would be browser-playable and/or
easily downloadable. C++ was my default choice - it's what I knew.
But would any other languages beat it by enabling faster development,
and/or allowing the use of a single platform for both browser play
and downloadable stand-alone play?
Languages
fully evaluated include Flash, Java, and C/C++, and I also took
a short look DarkBASIC, BlitzBASIC, and a few other alternatives.
Background
Of
late I've been interested in different alternatives for commercial
game development. After spending 12 years developing deep strategy
PC games for retail sale, I want to take a break and try something
different. One area I'm considering is casual games, mainly puzzle
games, which have grown in popularity recently.
To
be commercially successful, casual games must be small (because
of low-bandwidth internet connections), and the most popular ones
generally feature simple gameplay and 2D graphics. In particular,
casual games that can be run in a web browser, with no separate
download and install, seem to have the best prospects for success.
So I wanted to evaluate platforms that would allow fast development
of small simple 2D games, and ideally, allow them to be browser-playable.
Some
Basics
About
99.5% of retail games for PC and console are developed in C/C++.
But casual games, for playing in browsers, and to a lesser extent,
phones and mobile devices, are developed on a wider variety of languages
and platforms, particularly Flash and Java.
C/C++
games are generally compiled to native code, and distributed with
a variety of large supporting libraries (like Direct X). But for
security reasons, browsers don’t like to run native code (it can
accidentally or intentionally do all kinds of damage to a user’s
computer). Downloading a game as a standalone installer, installing
the game, and then running it outside of a browser is a possibility,
and indeed, it’s the general method used to sell a user the $20
"deluxe version" of a game. However, for casual gamers
browsing the game portals and sampling different games, the need
to download and install a game (then uninstall it later), is a major
barrier, and it seems like all the most popular games allow users
to try them on-line, in-browser. Indeed, those who run the gaming
portals have a strong desire to have the games playable in-browser,
and either won’t carry your game at all, or will give it much lower
prominence, if it’s not browser-playable.
Adding
in other important factors, my feature checklist looks something
like this:
1)
Easily playable in-browser, by the vast majority of users
2) Development Ease
3) Can be made into a stand-alone, browser-free, downloadable
program as well
4) Support across the widest variety of PCs, new and old, and
including alternate platforms like the Mac and Linux
5) Speed and flexibility of code execution
6) Small deliverable size – both the size of the executable
code and accompanying libraries, and the ability to work with
tightly compressed sound and graphics files.
7) Promising future – a language that won’t be obsolete
in a year or two
Quickly
Rejected Languages
Initially
I was pretty wide open. I looked into a lot of development alternatives,
but eventually settled on three (Flash, Java, C/C++). Before I get
to those, here’s some I gave up on early. Note, some of these may
be suitable for small games, I just felt that given my experience
and needs, they were clearly inferior to one or more of the three
"finalists". Also, in places where I list features as
missing or of poor quality, it’s possible that the features really
exist and/or can be improved with plug-ins. But if I couldn’t locate
the important features and use them quickly and easily, it’s a bad
omen for the language.
DarkBASIC
– A $100-ish version of the classic BASIC language, catering towards
game development with 2D and 3D features built in.
This
language might be suitable for a beginning programmer. I took a
look at the free demo version and quickly ruled it out for myself.
The language appears to force you to use the integrated, ugly looking,
full-screen IDE, which is apparently hardwired to 800 x 600 mode
only. There is no integrated debugger that I could locate. There
is no built in design tool for windows or U.I. elements. When you
compile standalone EXEs, they’re quite large (1.5MB for the simple
example they include). Finally, various forum postings from people
I trust indicated that if you dig deeper, there are more problems
– BlitzBASIC was more recommended for a game-oriented Basic language.
BlitzBASIC
– This is, rather confusingly, a set of three different language
products, all made by the same company and costing $50-$100.
The
products are BlitzPlus (aimed at 2D development), Blitz3D (aimed
at 3D), and BlitzMax (apparently the be-all end-all product they’re
working on at the moment, but it’s only available on Mac OS-X at
the moment). From the site, it appears that all 3 are incompatible.
However, I downloaded the trial versions for BlitzPlus and Blitz3D,
and in fact, they're very similar. They have virtually identical
IDEs, and the credits list the same lone-wolf programmer as the
sole creator of both. I don’t understand why he split 2D and 3D
functionality into separate packages. Note that BlitzPlus has support
for creating a GUI, but Blitz3D does not (hey Blitz guys, even 3D
games need an interface).
The
IDE, while better than DarkBASIC, is still nowhere near state-of-the-art.
It has a very simple debugger (the only option is ‘Debug Enabled?’
- yes or no). It runs in a window, and has a few semi-modern conventions
like tabs. The version that supposedly supports GUI development
(BlitzPlus), has no GUI design tools -i.e. no way to lay out a GUI
interactively -it all has to be done in code.
A
major problem in evaluating the Blitz programs is that they include
only a very cut-down set of documentation in the trial version –
the all important Command Reference (which tells you what functions
are available and how they work), is only in the full version. Also
missing from the demo (full version only) is the ability to compile
to EXE – you can only run games from within the IDE. These limitations
make the demo by itself almost useless except for looking at the
IDE and running the demo programs. That said, it looked like a better
package than BlitzBASIC, and probably a good starting point for
a new programmer. But there was nothing here that was going to revolutionize
game development or cut dev time down for an experienced C programmer.
Next.
C/C++
with Active X - For a number of years, Microsoft's solution
to browser-playable content (including games), was Active X (aka
.COM), a sort-of Microsoft alternative to Java. Since MS makes it,
it only runs on Internet Explorer, and it only runs in Windows.
But the big problem with Active X is that it’s totally insecure.
For Flash and Java, an application that has run amok (intentionally
or not), cannot damage the user’s system. But for ActiveX, which
was designed to have more power to use native functions, a haywire
or rogue app can do just about anything, from reformatting the user’s
hard drive to turning the user’s machine into a zombie. Even Microsoft
now realizes this, and they’ve essentially abandoned Active X. They’re
not developing it any more, and if the user is running I.E. in Windows
Service Pack 2, trying to run an Active X app will cause all sorts
of scary warning messages to appear. Active X is basically dead,
and once I had educated myself on this, I didn’t fiddle with Active
X any further.
Microsoft
is planning to replace Active X with .NET, a secure solution that’s
a lot like Java. But .NET is not pre-installed on ANY PCs now, and
it’s a 19MB download, so it’s not really viable for casual games.
Note
that one major casual game developer, PopCap (Bejeweled,
Zuma), is using Active X for their browser-playable games. But
their recently released open-source
framework does not expose the ActiveX elements, and in reading
the FAQs and other info on their site, their support for Active
X seems a bit tenuous, going forward.
Objective
C - Interesting variant of C in many ways, but it can really
only produce executables for the Macintosh, and perhaps with some
fudging, *nix OS’s (i.e. Linux). With no ability to target Windows,
it’s easy to rule out.
Visual
Basic, C#
- Both are Microsoft proprietary implementations of Basic and C,
respectively, that are included for free in the Visual Studio .NET
software (which I own). I checked out Visual Basic - it’s as I remembered
it from my corporate days more than a decade ago - very easy to
lay out forms and access data from corporate SQL servers. You can
even compile to EXEs. But it requires users to download the 19MB
.NET assembly. Fine for a corporate environment, but not realistic
for downloadable games. I didn’t actually test C#, but it’s got
the same limitations as VB (19MB .NET download required), and, from
reading up on it, doesn’t offer any really big advantages over regular
C++ to justify the limitations for the games market.
Perl,
Python - I
didn’t actually try these. They appear to be popular for web apps,
but I saw little evidence of anybody using them for games. (The
top google site for Perl Games yields a few text-only,
downloadable games. Googling for Python games yields only downloadables,
not browser-playable games). If few are using them for games, there’s
probably a reason – I skipped them. If anybody has any compelling
rationale why these do a good job of fitting my criteria above,
let me know.
Shockwave
- Macromedia, the makers of Flash, also make a higher-end product
called Shockwave. You create Shockwave playable games in their $1,200
Director program. Shockwave has support for 3D and more optimized
2D than Flash. But the Shockwave player has a much lower
market penetration than Flash. Moreover, Macromedia seems to be
de-emphasizing Shockwave and pushing many of it's features into
the more ubiquitous Flash. So I skipped Shockwave in favor of Flash.
WildTangent
- Like Shockwave, another product that theoretically allows advanced
3D games to be played in-browser. Also like Shockwave, it appears
that end-user support for playback is low, and that WildTangent
as a platform is fading. I saw virtually no discussion of WildTangent
as a viable option among development community-forums. It appears
WildTangent's day has passed, and so I skipped it.
|