[MUD-Dev] Libs for 3D Client/Servers

Sean Kelly sean at ffwd.cx
Tue Jul 3 22:06:37 New Zealand Standard Time 2001

From: "Brian Hook" <bwh at wksoftware.com>

I think you're basically describing NWN, so I'll say how it relates
to some of your points.

> Tools:

>   High-quality tools are absolutely vital to quickly making and
>   editing a world, and unfortunately this is often overlooked
>   because of time constraints, programmer disdain for tool work,
>   or conflicting requirements as stated by users, management,
>   developers, and artists.  This is often the biggest stumbling
>   block to getting high quality tools in place - too many cooks
>   make a very unfocused, mish-mash of tool requirements, often
>   resulting in a plethora of poorly defined tools that don't
>   interoperate effectively.

If you've seen the demos from E3, you'll know that NWN areas are
tile-based, and you literally "paint" an area with the mouse.  It's
quite intelligent in choosing tiles so you can do things like draw a
meandering river just by sweeping the mouse across the screen.
BioWare is providing a fairly comprehensive tileset that should
apply well to most situations.  I'd give the toolset an A+.

> Libs or Lib + Sample Game:

>   I would imagine to make it really interesting that you'd have to
>   provide a sample set of art, scripts, etc. to make the game go.
>   The traditional engine licensees such as Epic, id and Monolith
>   provide full source code to one of their games as part of the
>   engine license -- this verifies that the stuff actually works
>   and isn't a bunch of untested black box routines.

>   So, for example, you would get all the code necessary to build
>   your own game, and along with it you'd get a small, low-budget
>   Diablo/PSO style game with a couple zones.

NWN does this one better by providing a number of fully completed
modules.  Including NPC's, story, etc.  They're built with the
included tools, and the tileset is designed at least partially for
the included adventures.  They're including as much art as possible,
and all the models (including the tiles) are done in 3D Studio, and
last I heard I think they had decided to allow users to modify or
supply their own models.  This was an issue of contention for a
while because of obvious constraints in how a tile can be designed.
At the very least, I think users will be able to, say, drop in new
weapon models and the like.

> Language:

>   C w/ C++ headers.  I'm sufficiently pissed at C++ that I'm now
>   ready to just go back to ANSI C and be happy. =)

hehe... To keep things as tightly integrated and easy to ues as
possible, BioWare opted for the C-like scripting language approach.
It gets rid of security concerns and reduces the danger of
user-supplied code crashing the server.  At the same time, it also
removes the ability for us programmers to get really creative with
what the game can do.  Personally, I'd like to be able to at least
plug in shared libraries to expose new features to the engine.  I
guess we'll see.

> Client Portability:

>   This is very, very tricky.  Getting portability with 3D graphics
>   is a royal pain in the ass, even between driver revs of the same
>   video card on one platform!  Not to mention endianess
>   differences, compiler differences, etc.  I've worked around this
>   before, and it's not impossible, but it's difficult to stay
>   disciplined with it when you don't have all the different target
>   platforms available to constantly sanity check your code as you
>   go along.

Last I heard, NWN had working clients/servers for Linux, MacOS,
Windows, and BeOS.  I'm personally quite inpressed.  Windows, Linux,
and MacOS are all quite different platforms.  Still, with a
well-designed low-level layer you're in pretty good shape.

>   For the hobbyist market you can aim for robustness and speed --
>   lower the bar somewhat -- instead of trying to take advantage of
>   the latest and greatest.  The odds of running across a wide
>   range of hardware are much higher if you stay away from the more
>   esoteric features out there (pixel shaders, vertex shaders,
>   vertex array range, radical multitexture implementations,
>   register combiners, stencil/dst alpha ), but then you run the
>   risk of alienating users that gotta have bump mapped, dynamic
>   lights/shadows w/ specular otherwise their l337 GeForce3 is
>   wasted.

OpenGL was the obvious choice.  I'm not sure how fancy they're
getting with bells and whistles, but OpenGL drivers have come a long
way since the early days of Quake.  And it obviously makes
portability much less of a concern.

> Server Portability:

>   I'm not in tune with the MUD market, so this is just conjecture
>   on my part.  If you're targeting the "prosumer" market, then a
>   Windows based server probably makes the most sense.  If you're
>   targeting real businesses (but not necessarily huge ones), you
>   would probably want to support *ix and Windows solutions.  There
>   has been some discussion here in the past about how the two
>   architectures have quite radically different performance
>   characteristics with regards to sockets and threads, so I'm not
>   sure how this would be resolved (other than to abstract it to a
>   very high level).

I agree.  MS' apparently intentional differences from the BSD
definition are quite bothersome, and Unix and Windows have gone in
completely different directions as far as efficiently handling
high-volume socket operations.  Personally, I really like Windows
IOCP model, and was kicking around how to implement a similar model
in Unix.  It wouldn't be incredibly difficult, but I doubt you would
get the same performance out of it as Windows would provide with the
same model.

Still, if NWN is tartgeting a maximum of, say, 128 players, you
could almost just use BSD select and ignore the fancier solutions.
It's not like they're writing MMORPG servers.

If any BioWare people are here and feel inclined, I'd love to hear
how they handled the network layer.

>   If the scope of the package was limited to several hundred
>   users, I would imagine that it would be significantly easier to
>   develop.


> Assets:

>   Once again, I think this is likely to be the biggest problem.
>   Even if a small developer was handed the basic tools necessary
>   to accomplish this task - MAX/Maya, Photoshop, C/C++ libraries,
>   etc. -- they would still have to create huge amounts of stock
>   assets.  Theoretically the tool set could also provide generic
>   building block assets (rock textures, etc.) but these would
>   probably be of the same quality as free assets you can download
>   anywhere else.

Because of the scripting language choice and the huge supply of
predone art, NWN doresn't require any third-party products to
provide content.  However the truly ambitious who have 3D Studio or
want to paint skins can do so.  As for the C/C++ support... as
above, last I heard that wasn't going to be an option.  Though I
really hope it will be.

Two other issues you didn't address that you had mentioned in your
first post were world size and player storage.  In NWN (which is
area-based, like Baldur's gate, rather than continuous) will be able
to set transition borders as server portals.  So by entering a
dungeon or whatever, you could actually be passed off to another
server entirely.  So while techinally the game doesn't conform to
the classic MMORPG model, a single world does have the capacity to
support an infinite number of players, with enough player
cooperation.  There are some ambitious projects along these
lines... the one I can think of offhand is attempting to model the
entire Forgotten Realms world, via extensive player cooperation.
The link is here 


As for player storage... my memory gets a bit fuzzy here but from
what I remember they are providing two options.  The first being
local storage and the second being a common player vault.  In the
first case, you will be able to impose various restrictions to
throttle cheating (since a person can create a dungeon that is just
a room full of treasure), etc.  The second, I believe, is a storage
area BioWare will maintain and will impose common restrictions to
all players stored there.  This facility will allow players to use
their characters in various worlds.

Personally, I'm very excited about NWN.  It's literally an exact
implementation of the "ideal CRPG" that I outlined on usenet maybe 5
years ago... a project aimed at such a potentially limited audience
that I never expected it to be done professionally.  My only
complaint is how long it's taking to be released ;) It's also the
platform I plan to use to do some AI experimentation, so I hope
BioWare either implements a pretty comprehensive scripting structure
or provides a C++ interface.  Go team.


MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list