has anyone actually used Dplay and think it's bad.

Started by
17 comments, last by cronong 20 years, 9 months ago
> I think RoundTripLatencyMS, ThroughPutBPS, PeakThroughPutBPS, and BandwidthBPS
> would require extra packet information to be transmitted.

Packets marked as ''garanteed'' delivery will play a determinant role in updating this value, I imagine. Garanteed packets are numbered, if this is what you are referring to as ''extra information''; honestly, I don''t know how you would implement some form of reliable UDP protocol that garantees packet delivery without at least an embedded packer number. Besides, anything that relates to BPS and MS is stated in the docs with the comment: "This value is approximate, and you may want to calculate your own value for greater accuracy." If there were no garanteed delivery packets exchanged within some recent timeframe when the call to ''GetConnectionInfo()'' is made, then I suspect DP9 will send such a packet to have some meaningful measurements (hey, you asked for timing result, right?).


-cb
Advertisement
Heh,

I don't use Dplay because it is proprietary, has questionable feature creep that I honestly don't need in a low-level library and because I don't use Windows as a server platform.

Also, how many more retards will make games that aren't compatible with {N|P}AT? Dplay doesn't help in this area. Why must people use original IP header information and stuff it into the payload to use higher up in the stack in processes that effect connectivity ( hell, or anything really )? This is simply amazing to me, in the year 2003 with IPv4 still predominately in use.

Is Dplay capable? Sure. Does it meet my needs? No, and it probably never will.. version 10 or 100 unless the fundamental proprietary aspect changes ( or the nature of my work changes completely ).

I think if you have some very specifically supported needs, you don't need to know much of anything ( or touch anything under the hood ) related to the aforementioned specifics, or you're not relying on a ton of flexibility ( forseen on any level ) in your network code..... then Dplay is great for you providing you're homogenous across the board.


.zfod


*EDIT* Re-wording

[edited by - zfod on July 9, 2003 8:12:46 PM]

[edited by - zfod on July 9, 2003 8:13:54 PM]
I have used DPlay in applications with upwards of a couple thousand simaltaneous connections. It can be made to work but you have to play by it''s (unwritten) rules or you will get regret it.

The first is that DPlay must have plenty of cpu. If you don''t give it enough cpu time it will start dropping connections (which increases it''s workload which leads to more dropped connections which increases it''s load further). If you don''t use the thread pool feature you *must* put Sleep''s in your loops to unsure that DPlay threads get enough cpu. Relying on the OS thread schedule is not enough, DPlay demands more.

Practically speaking you pretty much have to use the thread pool feature if you want to scale this high.

DPlay will throttle it''s bandwidth to a given user. This is fine but under load it will throttle it to the point that its pings get through but no data does. This means that you have a "live" connection but it has no useful activity. Meanwhile DPlay keeps allocating resources for all this backed up data until your server falls over.

I eventually gave up fighting and switched to a staight winsock based network layer. It took me about a week to do and stabilty and resource usage improved dramatically.


-Mike
Ah, thanks Mike. That''s the sort of info I was hoping someone would post. So the bottom line is that DPlay would probably be okay for a small MMOG (<1000 connections?).

Good to know. -Ron
Creation is an act of sheer will
lol,

I don''t know Ron, but I read what Mike was saying as a clear indication that you would NOT want to use Dplay.

Just because you can get something to behave in a certain fashion doesn''t mean that it is optimal or intelligent, which is what I gleaned from his post.

I''m not trying to sway anyone in any certain direction, just trying to point out what I see ( my own experience and from what has been said from others'' ).


.zfod
DPlay should at the least be seen as a crutch that gets people who aren''t skilled with coding networking in the door to code on-line games.

It just works. Which is why I liked it a lot when I first used it. There were no surprises when I went from LAN to the net with my DPlay project. Now that I understand networking enough I was able to get the same lack of surprises with Winsock and TCP/IP.

Ben


IcarusIndie.com


KalvinB - (to Jessika) do you accept Jesus as your lord and savior

Jessika - Sure I can accept all forms of payment.
> I have used DPlay in applications with upwards of a couple thousand simaltaneous connections.

Thanks a lot, Mike. Very useful information.

> I eventually gave up fighting and switched to a staight winsock based network layer.

Do everyone, yourself and MS a favor and bitch your case by email at ''directx@microsoft.com''. Last time I did have problems with a MS API and bitched loud enough, I got an excuse email back from the Program Manager himself and a free MSDN/Ent subscription.

-cb
quote:Original post by zfod
I don''t know Ron, but I read what Mike was saying as a clear indication that you would NOT want to use Dplay.


I guess it''s all in how you read it, hehe. It depends, I suppose, on when DPlay started to become problimatic. He said he was running ~2000 connections and having problems. So I just cut his number in half and figured it''d probably run fine at that level Mike, any input on at what point you started to see instability?

I think we can safely say that the 30 person limit is no longer true
Creation is an act of sheer will
It''s not a number of connections thing, it''s what your workload is.

I have seen DPlay work fine, with no special care in how it was used, with 5000 simaltaneous connections to a single server. However there was very light traffic on the connections so the cpu utilization never got above 50%. Also this was on a 100Mb LAN so bandwidth and round-trip-time was at it''s best.

Under heavy load I''ve seen it fall over with as few as 100 connections. This is over the Internet with lots of traffic on each connection. By fall over I mean the cascade failure I mentioned above where DPlay starts dropping connections which causes it to increase it''s own workload for a time which causes it to drop more connections, etc.

IMHO DPlay works fine in situations where it was seemingly originally designed for - small LAN-based games. It can be made to work for other situations but it requires a good bit more babying. If you want a rule of thumb I''d say you need to be willing to commit 50% of your cpu on the server and probably 10%, at a minimum, on the clients to ensure good performance.

If you are already familiar with socket programming and have at least some grasp of what completion ports are then I see no advantage in using DPlay over winsock.
-Mike

This topic is closed to new replies.

Advertisement