Those are some very good questions. As with everything there are pros
and cons with either solution so I'll explain each of your questions
below in more detail in a question and answer format.
Q: If we leave aside the cross platform issue and just talk about ease
of developement, I'm just wondering what the reason to use C would be,
sinse from your description it sounds rather like the long way round.
A: Well, there are a number of key advantages to using a language like
C++. besides the cross-platform issue C++ is a low level language that
can be used to write anything from the Windows kernel, which is the
core component of any os, to writing hardware drivers, to more
advanced applications like games from scratch. The high level
languages like Visual Basic can not do this because it depends on a
runtime, a special API, that is most likely itself written in C or C++
which is both a strength and a weakness of languages like Visual
Basic. visual Basic can write games and other applications but can not
write an operating system or write hardware drivers etc.
More importantly because C++ is more low level it is compiled into
binary code, AKA machine language, and can instruct the system what to
do directly without an intermediate piece of software between your
program and your computer. This improves over all performance of the
game or application. Unfortunately, most high level programming
languages are easier but take a hit in regards to performance.
For instance, if I program a game in Java or a .Net language my source
code is compiled into an intermediate language that is interpreted on
the fly by a runtime interpreter. If I write a game in C# .Net, for
example, it creates a *.exe file, but its actually just instructions
for the .Net runtime executable file which is written in C++.
Although, this isn't a major concern for modern machines benchmark
tests still show that .Net or Java apps lag behind in performance
compared to an app written in C++.
Another issue is installing dependencies. Back when I was using C#
.Net for STFC and Montezuma's Revenge a lot of people didn't like the
fact they had to download a 300 MB setup file for .Net, another 300 MB
to upgrade DirecttX to get Managed DirectX for .Net, and then finally
download and install the game itself. We were talking atleast 500 MB
or so in dependencies for Windows XP just to bring the system up to
date in order to play a game.
With C++ you may have to install dependencies, but generally speaking
if the app is using core APIs, native libraries, that come as a part
of the operating system nothing special needs to be installed. This
was one of the factors why I chose C++ to begin with. I don't mind
installing one or two extra dll libraries, which maybe adds an extra
meg or two to the setup file, but asking people to install 500 MB of
.Net dependencies or 50 MB of Java dependencies or whatever is just a
Finally, there is the issue of security. C++ apps are compiled to
binary which is not impossible to crack, but more difficult than most
programming languages. Usually a developer can by a tool to encrypt
the executable to make it very very hard to reverse engineer. .Net and
Java don't have these safeguards, because they are compiled to an
instruction language, an intermediate language, that can easily be
decompiled back to Visual Basic, C#, or Java source code. Such apps
need an obfuscator, to rewrite the intermediate language to keep this
from happening, but it is widely known that high level languages are
less secure than C++ for that reason.
Q: Even entombed, was I believe programmed not in C but in in c# or
C.net, and went from initial concept to 10 level monster in less than
18 months, with more floors following very quickly, yet it apparently
uses one of these shortcut languages you mention.
A: Yes, Entombed was written in C# .Net. C# .Net is a rapid
development version of C++, extremely simplified compaired to the C++
language, and a developer can get things done very quickly in C# .Net.
As you might recall when I took over Montezuma's Revenge from James
North I had completely rewritten the game from scratch in like three
months after getting the source. Of course, I updated, changed, and
modified things, but I was on a fast track with that game. It took me
something like 14 months to nearly complete it, and that's when Utopia
landed on me like a house of bricks. If not for that unfortunate
situation I'd have it all done in 15 months from starting date. So C#
.Net or Visual Basic .Net are definitely one way to rapidly design
software for Windows.
Q: Is in fact cross platform compatibility the only reason why you
couldn't write mota in vb6, or another shortcut orientated language?
A: No. As I said above there were other factors to consider as well.
At the time I started writing games .Net wasn't even a core component
of Windows, and .Net games etc weren't that common and a lot of people
were upset at having to download and install several hundred MB of
extra Windows components to bring XP up to date. Now, days with .Net
3.0 and .Net 4.0 being intergrated into Vista and Windows 7 this is a
problem that has largely passed for new Windows users. All the same I
felt it was in everyone's best interests if I cut the file size down
by using common core APIs and components present on XP, Vista, Windows
7, etc without the high level .Net components.
As for VB 6 specifically I think my feelings are clear on that
subject. Its officially no longer supported by Microsoft, was dropped
in Windows 7, and I knew clear back in 2006 that Visual Basic 6 was
being phased out to make way for C# .Net or VB .Net for Windows Vista
and beyond. So that's why I initially started with .Net then
eventually changed to C++.
That said, I'm beginning to regrete my decision of going to C++,
because it has slowed down development and I'm having to learn or
relearn things I haven't worked with in years. I generally program in
C# .Net or VB .Net professionally so I'm more up to speed with those
languages than I am with C++ and I'm kicking myself for doubling my
work load for this reason or that.
As you know I've got some other games in the works, I want to work on
after MOTA, and i'm truly thinking of going back to .Net. However, now
that I have a fully qualified game engine in C++ future games wouldn't
take as long as MOTA has just because I have all the low level nitty
gritty stuff done, and I have all the advantages, perhaps more, than
if I were to use say VB, C# .Net, or Java.
Gamers mailing list __ Gamers@audyssey.org
If you want to leave the list, send E-mail to gamers-unsubscr...@audyssey.org.
You can make changes or update your subscription via the web, at
All messages are archived and can be searched and read at
If you have any questions or concerns regarding the management of the list,
please send E-mail to gamers-ow...@audyssey.org.