On Nov 12, 8:28pm, Sarah Bonner wrote:
> It would, perhaps, be best to introduce myself as a newbie
> programmer and a newbie MUD-owner.
> I'm looking for some resources that will be useful for someone
> wanting to get into game design, but isn't quite on an
> already-experienced level. I plan to re-acquaint myself with the
> C++ and Java languages (which I have not fooled around with for
> many suns and moons, folks) from the beginning, and then turn my
> sights on building a custom MUD engine.
You're making a typical newbie mistake, which is to build an engine.
Making games and making engines are fundamentally different things.
A sizable percentage of the time, making a MUD engine involves
reinventing the wheel. (A gigantic percentage of MMOGs probably
don't need to have from-scratch 3D engines, either, but developers
seem to love writing engines.)
I strongly recommend looking at one of the existing MUD servers, and
finding the one that best fits your needs. If the engine is missing
some features you need, add them in. Joy of open source. Most modern
MUD servers are stable, powerful, and reasonably well-supported by
their creators and a community.
Similarly, I think "I'm going to write my game entirely in C++ or
Java" (or even python, say) is a typical newbie mistake. There's a
reason that just about every engine out there contains a custom
scripting language. Engines are designed to run user code (including
the game designer's code) in an efficient, stable, and protected
manner. The MUD scripting languages generally also encapsulate key
game world concepts in a useful and extensible way.
Note that even if you plan to give your game a graphical front-end,
there's no reason that you can't use an existing engine -- there are
engines out there that support binary data communications with a
client.
Here's another piece of advice: Begin with a small, manageable
project. Don't take on the whole world with the very first thing
that you do. If possible, learn the ropes on an existing MUD.
The reason for this is that you will learn a whole lot more if you
actually finish the project, and it actually gets living players,
and you get the ongoing advice of some veterans. Feedback,
particularly the kind of feedback you get when real players beat on
your creation, is vital to learning how good your design
is. Moreover, your first bits of MUD-related code are going to be
the fruits of your learning; you don't want to build on top of it,
probably, because you'll find some weeks or months down the road
that you didn't write it as well as you needed to, and shaky
foundations are the recipe for later frustration.
By the way: Don't start by writing a mudlib or something similar in
scope for an existing engine, either. Start by modifying an existing
one that's relatively full-featured. You will learn a bunch from
reading other people's code, and again, you'll have a much more
manageable project scope.
Get comfortable with the language, the engine environment, and so
forth, before diving into your dream project. Ideas for games are
cheap; if you've had one good one, you'll probably have tons of
others.
> Some topics include an explaination of programming on the Linux
> platform and tools that I could use, such as *free* debuggers and
> IDEs).
For Java, I would highly recommend Eclipse. For C/C++, you can't go
wrong with GNU tools -- gcc plus gdb -- and for an IDE you can still
ues Eclipse.
I have to find an IDE that I really like that's intended for MUD
scrpiting languages. So I write my code using GNU emacs.
> I'd like to find some resources that also help with general MUD
> code design, such as how to organize code, writing pseudocode,
> expectations someone should have when starting their own codebase,
> and how to incorporate scripting languages and databases, as well
> as resources that detail pacing/goal-setting guidelines, balancing
> game-play with features, and learning to judge where your intended
> audience will be.
Regardless of whether you're doing a MUD or an MMOG, you'll want to
get Richard Bartle's _Designing Virtual Worlds_. It's not free, but
you can get it used for $20 and change off Amazon. It's the single
best overview of design that you're likely to find. It's well
thought out, and even if you disagree with him from time to time, it
should prove incredibly useful.
Design before you code. I usually begin every MUD project I do with
writing all of the player help files (including help files meant for
administrators). It's an excellent acid test. It will let you
discover if you have inconsistencies in your overall design, or if
you have features that are overly complex (anything that you can't
explain falls into the "overly complex" category). It will force you
to consider all aspects of the game in detail, including how players
will interface with each of the features. It will ensure that you
spec out exactly how you expect things to work. It's far easier to
revise and change the design before you get to the code stage.
I can't stress how important it is to learn to design things to
completion -- and, if you're developing as opposed to just
designing, to finishing implementations. It's something that's often
missed on MUD and MMOG forums -- practically everyone has basically
cool ideas, but fitting a bunch of basically cool ideas into a
finished design that is a coherent whole is an entirely different
matter. It means that you can't handwave the flaws and
"implementation details" that you spot. It means that you build
code that you can test and refine, as opposed to half-finished,
maybe-promising-later stubs.
> Because I'm on a limited living budget right now, I would prefer
> to get access to free eBooks, PDF files, and other electronic
> sources. I will consider looking at books, however, if you feel
> they would be definitely be worth the money.
If you really insist on building an engine from scratch, be aware
that it's no different than any other large-scale programming
project (well, large-scale for an individual working in their spare
time, anyway). Most MUD engines are in the range of 50,000 to
250,000 lines of C code for the driver alone. You'll want to buy
some very expensive books. I'd recommend, for starters, W. Richard
Stevens' _Unix Network Programming_ and _Advanced Programming in the
Unix Environment_.
-- Lydia