network feature in any oncoming clones?

Lesser known clone projects or isolated news items about rare or unusual clones.
Forum rules
Please read the Forum rules and policies before posting.
Tom Hatfield
Ee Master
Posts: 688
Joined: Mon May 07, 2001 7:00 pm
Location: Indiana, USA
Contact:

Post by Tom Hatfield »

In the field of dreams, anything is doable. As a practical matter, people are limited in either technical expertise or simple motivation. It's obvious we have the ideas, but if they were easy to implement, it would have been done long ago. (You can tell a good idea from a bad one, because people still talk about the good idea years later.)

Dungeon Master as a game doesn't need multiplayer. You don't even need multiplayer to enjoy it with other people, as this forum shows. The genre, however, could do with a kick to the head. Every game I play, I think, "this would be so much better if I could play it with my friends." Given the maturity of network software and the abundance of network API's, I'm disappointed more people haven't opened a market for well-developed, mentally intense multiplayer games instead of the hundred or so deathmatch clones we've been given. This is the real reason we need to buckle down and give DM its MP booster shot.

Again, technical expertise and motivation are our road blocks. I have a copy of Visual Studio. I know how to use it. I'm warmly familiar with one language and could learn another without too much hassle. I'm familiar with object-oriented programming and have done so many proofs-of-concept, entire forests have died to fill the pages of my notebooks. And yet, that second factor is impassable. A great idea only inspires if you're ready to be inspired by it. Something is missing.

Clearly the most promising clone at this point is Entombed. It satisfies the technology gap that DM has been missing for the last twenty years, despite DM being such a great game. (I'm way beyond appreciating 16-color graphics. I want the same kind of game that will challenge my senses.) Unfortunately, an engine alone cannot promise the type of problem solving enjoyment we expect from DM. It'll look gorgeous, to be sure, but it'll still be the same game under the hood.

That, of course, is why we continue bringing up this multiplayer idea. Nobody is quite prepared to tackle it, but everybody wants to. Eventually we'll spill over one way or the other. Either it will be deemed impractical and thus impossible, or one of us will do it. Or maybe we'll just keep talking about it until our children join the forum, and then they'll start talking about it. Our children's children's children might actually do something about it.

Perhaps a technical approach to the problem is in order. If I weren't getting ready to move my hardware to a new tower in about five minutes, I would fire this off myself. I'll give it some thought and come back later.
DSE
Lo Master
Posts: 364
Joined: Sat Mar 20, 2004 12:22 pm
Contact:

Post by DSE »

If you want MP in entombed I can have a go. the only problem that I can forsee with writing it is keeping the physics of all the players in sync (this could well stop me from finishing the MP version). Is this really going to add something to the experience ? I am still undecided about this feature ...
User avatar
Parallax
DMwiki contributor
Posts: 424
Joined: Mon Aug 28, 2006 7:56 pm
Location: Back in New Jersey

Post by Parallax »

You know, that's actually a pretty good question. It made me wonder who I'd play it with if there was a MP DM. And the answer is: I don't know.

Last week I tried connecting to the flashchat a couple of times during the day, and I was always alone in the channel. I'm not sure DM has enough followers for two strangers wanting to play DM to be able to find each other at any given time. I'm not even talking about a MMODM (wouldn't that be cool, though? ;) ), just a two-person game of coop DM.

Of course, you can always hope that 'if you build it, they will come', although in this day and age of instant gratification they may come, say 'OMG gRaFiXX $uX0rz teh r0xXxorZ LOL!!one!1!' or something to that effect and leave.

Anyways, don't let me rain on the parade. For my standpoint, the question is quickly settled: I am utterly unable to make a MP DM. If you can and are willing to, I'm sure someone, somewhere will have a game at some point.
Tom Hatfield
Ee Master
Posts: 688
Joined: Mon May 07, 2001 7:00 pm
Location: Indiana, USA
Contact:

Post by Tom Hatfield »

Wow. Parallax, you pose an interesting and somewhat frightening question: is it worth it?

I had just assumed, since there are people who want it, there would be poeple who'd use it. I also find virtually no one in Flashchat, though I don't go there often, and I'm in a different time zone than most people here (-5:00 GMT), but it's true enough that very few of us are likely to find the time to play together, let alone the inclination. Only a handful of enthusiasts have really supported the idea of DM-MP; the rest of us form the MP lunatic fringe.

I already told you how I feel on the matter: any game worth playing is better if you can play it with friends. The real question is, will you find any friends to play with? None of my friends would play Freelancer, Demise, or Nox with me for more than a few hours. Most people just don't like those types of games — you know the kind, where success relies heavily on patience.

As for Entombed, don't bother. DSE, stick with your current objective. If, in the future, you decide networking is something you'd like to tackle, go for it. The single most important factor of software development is to finish what you started. Feature creep will get you every time.

Here's what I propose: because designing a GUI that supports multiple viewports is a fairly simple matter — I have the design document if you want to peruse it — we could aim initially at a split-screen clone. (You could even play it online with VNC if that's your thing.) If that proves marginally successful, perhaps then we can tackle the network side.

Desktop computers don't have a reputation for split-screen gaming like consoles; that's always bothered me, because I much prefer my Sidewinder over those freakish N64 controllers. Anyway, barring my lack of motivation — a side effect of depression — I'm eager to put forth some effort on this. I just got my system reorganized and am preparing to downgrade a whole bunch of software (see my web page if you want to know why). Afterward, I may find some time to code.
User avatar
zoom
Grand Master
Posts: 1819
Joined: Tue Sep 23, 2003 1:27 am
Location: far away but close enough

Post by zoom »

So it could be a good idea to fake MP. If no one joins your game you
may assign computer players(controls parties).
Example: Wizardry IIV, there were some other (computer controlled) parties (no Multiplayer option) that did some things over time..mainly getting to places before you and getting items you need. They would fight you depending on your choices in the game. This goes hand in hand with different endings etc..

I reckon DM MP (in whatever mode) would be more challenging, add diversity and maybe you had more fun playing.
Perhaps you even have fun without that in the first place..
Depends maybe on the story and on the total feel of the game .(Computer party interacting in the dungeon in another way than monsters sounds cool, however). YOu could also make a Boss monster act like a computer controlled party. BUt I digress.

In Need for Speed 2 , a car racing game btw(!) there was ghost mode , where you could drive against your own record time and
tried to beat it. (for DM , this would mean you could see a slight translucent image of a former save game , like the race to fusion recording,
so you could even do things not even against time but against yourself..
/////////////////////////////////////////////////////////////
Anyway, it is probably true that we (the older generation..) won't play MP with our friends anymore (for whatever reasons, time etc.)
But when I recall the time I played on the Amiga DM I would have certainly then , and if I were that age NOW, play DM MP if it was
available..
So I believe it would not benefit the larger proportion of us here but the future players..maybe if it could be combined with
the option to switch MP completely off, play against a computer party (or more ;) ) then it would be the best solution.

I mean it should better be fun, of course... So ultimately you had to put a lot of work into sth. that would have to be tested in its ending state and being looked critically at, could happen that it is just crappy to play it..
MMO./DM would rock for sure. Get tons of items and so on, trade it etc.. well,enough
Tom Hatfield
Ee Master
Posts: 688
Joined: Mon May 07, 2001 7:00 pm
Location: Indiana, USA
Contact:

Post by Tom Hatfield »

Now you're talking about bots, which I think would have to be far to sophisticated for practical implementation. Unless they're scripted, of course, which is doable but maybe too predictable? Most games that use bots have a fairly simple ruleset: shoot enemies, grab flag, take flag to base, stuff like that. DM is about puzzle solving, and the thought of trying to make a puzzle solving agent turns my stomach. Again, you can script this, but how fun would that be? Maybe very fun; I don't know.

If you have scripted parties that exist to promote the story, then I see no problem with that. I just don't like the idea of competing with an agent that knows the game far better than I do, and that will arbitrarily win if I don't play fast enough. I also don't like the idea of trying to cooperate with an artificial entity. This has invariably failed in every attempt at mimicking human-machine interactivity. We're not going to be the ones to do it properly, so I'd rather keep my hands out of the fire.

That's not to say it's a bad idea. We're just not ready for it. If anyone disagrees, I'd love to read your dissertation on AI.

I was never suggesting an MMO game. I think MMODM would suck. We have enough of those, and I play none of them. The kind of people who play online games don't play DM for a reason, and vice versa. DM has never fit the achiever formula. In fact, DM was never intended to be an MP game at all. We're discussing possibilities, and MMO is not really one of them. Logistically speaking, how many people can you cram into a dungeon before it's just not fun? I think maybe four.

Has anyone played Alien Swarm? It's a total conversion for UT2004, mission-oriented, that supports up to eight players. The engine itself can handle 32, so why did they limit it to eight? Two reasons: first, there are eight marines in the roster. Second, the missions were designed to accommodate no more than eight players. Too many cooks spoil the soup; likewise, too many players make the game either too easy or too frustrating. Remember the D&D arcade games? They were unbelievably hard with three people because you could never tell who was who. I don't even want to think what it would have been like with four.

Don't let my opinion stop anyone from trying, but I think four players is a fairly realistic goal, though two would be more practical as a partial solution. If you can make a two-player network game, you can easily expand it to support four players. We're also talking about an independent endeavor, which already has a 99.9 percent chance of failure. Best to keep it simple.
kentaro-k.21
Artisan
Posts: 178
Joined: Wed Dec 17, 2003 1:39 am
Location: Osaka, Japan
Contact:

Post by kentaro-k.21 »

i was trying on an almost suspended clone ObjDMv1.
ObjDMv1 is an experimental quasi DM clone to test adaptivity of classic DM dungeon structure on the net play.
i agree most part of technical consideration for networking technique topics posted by Tom Hatfield. i just talk "How to" implement it in my case. however i'm not good at talking..

network communication library:
ObjDMv1 uses DirectPlay3. it is part of wellknown DirectX technology developed by MS. it'll be useful shortcut for networking application if it works only on Windows.
i selected it in some reasons:
(1)it works on many Windows versions, including Windows NT 4.0. (2) saving time cost to develop basic networking engine.
in those days i felt no demerit to have selected DirectPlay. it was enough for me to estimate possibility of DM on networking. IMO it is enough infrastructure to support up to 8 or more players.

networking code:
i have learned a lot from Quake source code. it is officially available under GPL license published by id Software (only source code is available, game data is still copyrighted).
it was very informative for me in some points:

(a) how to write message loop in fps game. approximately it is repetition of following processes (these may be wrong in detail part).
<message loop>,
<network poll/receiving>,
<Server only: process game time as needed, send status to client>,
<Client only: read from server>,
<update screen>
(b) protocol format between client/server communication.


for a reference, here is a list of commands used in current ObjDMv1. each command is identified by numeric integer. the alias name is just constant variable name to avoid writing magic nunmer in source code.
- client to server
SCMD_QKI(0x01): send one of MOVEleft, back, MOVEright, TURNleft, forward or TURNright command.
- server to client
CCMD_TICK(0x02): advance a game time once (once per 1/2 sec), then unlock keyboard input.
CCMD_PREPARE(0x03): send dungeon.dat structure in optimized form. it includes all the modification to dungeon made after game start.
CCMD_EDITRECORD(0x04): send modified record. e.g. update hit point of a creature record.
CCMD_EDITTILE(0x05): send modified tile data and associated record pointer. e.g. a creature moves.
CCMD_SETNEWPOS(0x06): update player location (X,Y,map#) when player enters game.

my issue to continue develop:
there are what is easy/hard to code on my situation.
easy: writing GUI code with MFC(Microsoft Foundation Class)
easy(happy!): write a communication/network code for the client and server. also debugging it.
hard: write dungeon viewport paiting code similar to classic DM style.

i have no good answer to solve the "hard" issue. so development of ObjDMv1 is almost suspended. although ObjDMv1 has minimal implementation to render wall set and creatures, it has not enough code to render items, clouds, missiles and so on.
probably i have to do either (a)write a own library for painting dungeon viewport, or (b)find good freeware library from the internet.

i have selected (a).
i'm gathering info enough to render complete dungeon viewport (DM snes style) in some ways: (i) using sck (swoosh construction kit) to extract viewport information. it includes decoder for "558 item", very excellent! (ii) check disasm code of DM snes version.
result of (i), got enough info to render wall/floor ornates.
result of (ii), wall position (X,Y) was extracted.
i have to gather a lot of misc info (creature position, flying missile position, and so on), then create a viewport renderer as a library. hmm it is long way to be done. :wink:

probably i can answer any questions about only implementation side of ObjDMv1. (about other side, it will be difficult question e.g. "how to host server on internet in minimal cost?" because i have no experience of app hosting service)
Tom Hatfield
Ee Master
Posts: 688
Joined: Mon May 07, 2001 7:00 pm
Location: Indiana, USA
Contact:

Post by Tom Hatfield »

Incidentally, I learned most of my better networking points from the Unreal networking architecture. You can read up on it here if you're interested; the document is not especially technical, so it's easy to absorb, and the information is golden.

In modern games you typically start rendering before processing, so the CPU continues working while the GPU does its job. Quake used the CPU for both rendering and processing (except glQuake), so it was a moot point. If your render loop is short enough, this shouldn't matter either way, unless you render in a separate thread on a multi-CPU system — which makes sense these days since a lot of people are investing in dual-core processors. In a couple years, there won't even be single-cores anymore.

Anyway, back on topic. It doesn't matter what API you use, as this is purely an issue of what you know. Personally, I'd use Winsock and be done with it, because Winsock is what I know, and DirectPlay gives me the creeps. Either way, the goal is to get two computers talking to each other, and then you have to decide what information to send and when to send it. It's a technical matter that each programmer has to solve on his/her own.

However, kentaro has fingered the basic formula: retrieve local input, retrieve remote input, process input, update local session, update remote sessions, render local output, repeat. That's what you do with a listen server; a dedicated server can ignore local input/output, unless the administrator is sending messages through a console or something. You want to send the absolute minimum amount of data during each update, which means only those data that will affect a given client. The Unreal networking architecture doc discusses this concept in great detail and describes how they implemented it.

More on this soon.
Post Reply