Sorry your browser is not supported!

You are using an outdated browser that does not support modern web technologies, in order to use this site please update to a new browser.

Browsers supported include Chrome, FireFox, Safari, Opera, Internet Explorer 10+ or Microsoft Edge.

DarkBASIC Professional Discussion / Multiplayer DB games.

Author
Message
HB Productions
23
Years of Service
User Offline
Joined: 7th Apr 2003
Location:
Posted: 7th Apr 2003 22:59
I've been searching high and low for some multiplayer DB games to download on the net to see how good the multiplayer function of DB is, but could find nothing.

Can someone please tell me if they have a decent multiplayer game?
Rob K
Retired Moderator
23
Years of Service
User Offline
Joined: 10th Sep 2002
Location: Surrey, United Kingdom
Posted: 7th Apr 2003 23:15
www.starwraith.com

StarWraith 3 - Plus in DBP's help files, there is a technical document from the author explaining how to use DBP's multiplayer functions.

Current Project: Retro Compo. Entry.
HB Productions
23
Years of Service
User Offline
Joined: 7th Apr 2003
Location:
Posted: 7th Apr 2003 23:21
An amazing game!! [b])

Shadow Robert
23
Years of Service
User Offline
Joined: 22nd Sep 2002
Location: Hertfordshire, England
Posted: 8th Apr 2003 00:46
i can't remember his site, but Xtom's Hotcar and DarkConflict have multiplayer capablities

Tsu'va Oni Ni Jyuuko Fiori Sei Tau!
One block follows the suit ... the whole suit of blocks is the path ... what have you found?
EddieRay
23
Years of Service
User Offline
Joined: 28th Feb 2003
Location: USA
Posted: 8th Apr 2003 01:03
Also, if you check the online help in DBPro, under "Technical Documents", there is a document called "Multiplayer Secrets". It's written by the guy who wrote Star Wraith 3.

So you can see how SW3 works for yourself, then you can read about how he actually accomplished it.

Personally, if I was going to doing anything "serious" with multiplayer, with DBPro, I'd seriously consider a writing a simple DLL to send and receive packets with straight UDP or TCP... and bypass all the DirectPlay crap. For any serious multiplayer game, you'll want a dedicated server running on some Unix box (or whatever), so you likely won't be able to use DirectPlay anyway.

Shadow Robert
23
Years of Service
User Offline
Joined: 22nd Sep 2002
Location: Hertfordshire, England
Posted: 8th Apr 2003 01:11
yeah, i'd agree except for bypassing DirectPlay ...
if you used a Linux Machine then it'd require you to code the ENTIRE Server Side Runtime specifically in C using Linux based libraries, for a dedicated server this isn't a grand problem - but you still need to setup some human interface details to let the server be setup under linux and not have the configuration setup in a Windows Machine in DBpro (remember DBpro requires DirectX and won't run on a Linux machine without subsiding the whole point in using it in the first place)

however i'd use DirectPlay for 2 reasons, compatibility and speed... you don't have to maintain the speed manually with DirectPlay as it'll automatically adjust to the current network speed - this make it far more useful and stable especially on Narrowband connections.

i'd use SW's code as reference only btw, although its how its layed out as a reference of what he did ... it also isn't the right approach for DBpro, and you can achieve alot of the takes more effectively and simpler in Pro

Tsu'va Oni Ni Jyuuko Fiori Sei Tau!
One block follows the suit ... the whole suit of blocks is the path ... what have you found?
Rob K
Retired Moderator
23
Years of Service
User Offline
Joined: 10th Sep 2002
Location: Surrey, United Kingdom
Posted: 8th Apr 2003 01:34
There is already a TCP / UDC DLL for DarkBasic Pro - go to the RealGameTools forums - http://www.realgametools.net/forums.

Current Project: Retro Compo. Entry.
EddieRay
23
Years of Service
User Offline
Joined: 28th Feb 2003
Location: USA
Posted: 9th Apr 2003 02:17
Thanks for the tip Rob.

Raven: DirectPlay is only "compatible" with itself. Certainly, if you want to make a dedicated server, you could just write it in DBPro and run it on a Windows box. But then you can only run it on a Windows box. As far as "speed" goes, it's pretty easy to adjust the rate of sending/receiving of packets to a network without using DirectPlay.

DirectPlay also involves the server machine "listening" on a bunch of ports that are dynamically allocated, so you end up having to make big holes in your firewall to let game clients contact a server, etc., and that can be avoided with the simplicity of a single UDP port open on a server that's not using DirectPlay.

Theoretically, there are some nice features in DP... like "sessions", "players", etc. But it's probably worth the work to avoid using it if you really want the server to be able to run "anywhere", and you want complete control over the characteristics of the nework traffic generated by the game server, clients, etc. I'm not saying it'd be "easy", but it'd doable, and at least the nitty-gritty appears to be done in a DLL so that's even better.

The biggest thing I worry about with any multi-player mechanism is whether DBPro "blocks" while trying to handle the network traffic. If you call a ProcessMsgs() function during each run through the game loop, it needs to return in a timely manner (i.e., instantly). Maybe DP provides this by caching writes to the network and performing them in the background. Maybe not. WinSock has a bunch of asyncronous calls for avoiding "blocking" of the program, so I know it's at least possible with raw send() and recvfrom() calls (or the WinSock asyncronous equivalent).

Personally, I'll probably try both ways. I just don't like the fact that I can't have DBPro using the whizzy DP commands and write the server part anywhere I want (unless I somehow emulate the DP protocols).

TogaMario
23
Years of Service
User Offline
Joined: 30th Jan 2003
Location:
Posted: 9th Apr 2003 06:30 Edited at: 9th Apr 2003 06:30
How's a router gonna effect DB's processes? I got my "true" ip address from using ipconfig.exe but is there something else i'll need to do to get DBPro's multiplayer setup to work? Or sending memblock packets?

P.S. This is what the alphabet would look like if Q and R were eliminated.
The One Ring
23
Years of Service
User Offline
Joined: 15th Sep 2002
Location: United States
Posted: 9th Apr 2003 06:53
Just curious, but why would a Windows user playing a DirectX game (Windows only ) want to use a game server on Unix??

Good, bad... I'm the guy with the gun. - Ash in Army Of Darkness(1993).
EddieRay
23
Years of Service
User Offline
Joined: 28th Feb 2003
Location: USA
Posted: 9th Apr 2003 07:16
That's the issue, TogaMario... DirectPlay uses multiple ports to support its protocols. Try hosting a DP game with a firewall... and you begin to see the problems. It's not just computer with IP address A connecting to computer with IP address B on port C. Check out the FAQ for games like Baldur's Gate 2 or other games that use DirectPlay, and look for topics related to hosting a game with a firewall in the way, and they'll list a whole bunch of ports that need to be opened up in the firewall to get it to work. If you just use straight TCP or UDP, you can open ONE port to let the game traffic in, and you can ensure security yourself - your protocol won't allow people to do whatever they can do with DP on your system, which of course, you have no control over (good ole Micro$oft). Heck, some ISPs may not even allow DirectPlay traffic through, especially if it starts to become a nuisance or the hackers find something they can do with it.

EddieRay
23
Years of Service
User Offline
Joined: 28th Feb 2003
Location: USA
Posted: 9th Apr 2003 07:27
The One Ring: Because a game server is typically easier to write and manage on a Unix server, due to the true multi-tasking, multi-process, robust nature of Unix, simple open-standard networking APIs (not M$ made-up APIs like WinSock), and any number of similar technical reasons. Also, many commercial games provide Unix-based versions of server software (Neverwinter Nights, the Quake games, etc.), because they know that Unix is a platform well-suited for the task.

Shadow Robert
23
Years of Service
User Offline
Joined: 22nd Sep 2002
Location: Hertfordshire, England
Posted: 9th Apr 2003 17:00
actually they're only used because network packets are so open that linux/unix makes them a bugger to hack... plus they don' incure the overhead charges that a Windows based system does.

but unless you're developing a huge MMO game it'll make little difference, especially as if you've ever played Half-Life that game has horrible Netcode however it'll perform far better on DirectX with a Windows Server than it will on a Linux one.

and the point behind the Quake games was to give the largest base access for thier games ... they actually have Linux/Unix/Solaris/FreeBSD/MacOS versions of the game and server - and most on the net are actually using Windows.

but that aside the Winsockets actually use the NTOA standard which was set in Unix - so the access being created has very little difference once the network is up and running ... prior to that its a case of getting windows to acknowlage the connection.

but as i said you'll have to setup a special version of the game within Linux/Unix using C if you wanted to get a tru server going, because there is no way you can calculate what data needs to be sent and such if you just have a linux listener sending information back to people - infact that'd be 10x slower because it won't be distinghusing between the useful data and the unless data.

for example if you're running an MMORPG, you'll want to make sure that the text chat being had diesn't reach into the MB which it can quite quickly do when you have say 200 people in the same area, same goes for movements ... whilst i've been working on multiple network server->client plugins for people DBpro games i've devised a way where you only get the information you'd have in reallife ... like if someone is talking a good mile away at the other end of the village you ain't gonna see it so the server doesn't send it, same goes for movement - if it isn't within Nth amount of distance, the world doesn't show it.
whereas if you had to develop a Server capable of this on Linux then it'd be a task and a half and a good question if it was even worth the bother.

DirectPlay is a fantastic thing to use, especially for the newbie to Networking which from the sheer number of network games i don't see with any network play on here i think ya'll need to remember that most of these guys don't know an IP from DNS router!
Leave the more advanced tasks up to those of us with more experience in these matters and talk to us about them ... leave those who can't even get to grips with the DirectPlay command which have been dumbed down for DBpro use to play with DirectPlay - perhaps help them out with it.

There are more games than you realise using this and its just amazing how many people believe that the system isn't upto the task of anything, because Earth&Beyond uses it as does TheSimsOnline... and both have close to the most demanding needs for networking and perform more admirably on a 56k Dialup than games like Quake and Unreal2K do over a 128k Broadband!

i'd suggest before you go off on tangents preaching about things being better you do your homework and develop using them, because althougth code wise Linux is simpler to setup - networking wise it is just terrible. programmers are always lazy, they dont' use whats best available they use what they can use in the quickest time usually ... and this would be a good thing to remember before you think all these pro games are using the best system available.

Tsu'va Oni Ni Jyuuko Fiori Sei Tau!
One block follows the suit ... the whole suit of blocks is the path ... what have you found?
EddieRay
23
Years of Service
User Offline
Joined: 28th Feb 2003
Location: USA
Posted: 11th Apr 2003 10:54 Edited at: 11th Apr 2003 10:57
Quote: "
for example if you're running an MMORPG, you'll want to make sure that the text chat being had diesn't reach into the MB which it can quite quickly do when you have say 200 people in the same area, same goes for movements ... whilst i've been working on multiple network server->client plugins for people DBpro games i've devised a way where you only get the information you'd have in reallife ... like if someone is talking a good mile away at the other end of the village you ain't gonna see it so the server doesn't send it, same goes for movement - if it isn't within Nth amount of distance, the world doesn't show it.
whereas if you had to develop a Server capable of this on Linux then it'd be a task and a half and a good question if it was even worth the bother.
"


There's really nothing in DP to handle the above scenario - you have to code your SendTo() calls smartly, and you have to establish client groups in a sensible manner according to your logical game world (just like you say). You make it sound like you just "magically" get all that by choosing DP. You don't.

DP does have some nice "congestion control", but the rest of the "traffic" features like fragmentation, reassembly, sequencing of messages and message timeouts are nothing new and standard TCP/UDP protocols already handle much of that anyway.

Quote: "
i'd suggest before you go off on tangents preaching about things being better you do your homework and develop using them, because althougth code wise Linux is simpler to setup - networking wise it is just terrible. programmers are always lazy, they dont' use whats best available they use what they can use in the quickest time usually ... and this would be a good thing to remember before you think all these pro games are using the best system available.
"


(I'm not sure what I do to deserve these kind of "attitude swings" with words like "preaching" and "do your homework", etc. ...sigh... guess I'm just too dumb about pixel shaders, vid card drivers, and vid hardware, so I must be pretty dumb about networking too.)

DP adds complexity to my server code (C++, not DBPro) and my coding process, because instead of programming simple socket calls, I now have to deal with a bunch of M$ COM crap, a load of overly-complex-for-what-they-do classes, and I have to wade through a bunch of documentation with hopes of understanding how it all really translates down to real packets on a real network. As you say, programmers are lazy, and they want things like "simple", "quick", and "best". There isn't really any "networking" easier than socket API calls. And, I think I've already made my points about choosing DP and the potential "firewall" issues, and "run anywhere" issues.

Quote: "
Leave the more advanced tasks up to those of us with more experience in these matters and talk to us about them ... leave those who can't even get to grips with the DirectPlay command which have been dumbed down for DBpro use to play with DirectPlay - perhaps help them out with it.
"


Sure... newbies can use DBPro and DP. I was just commenting on my own thoughts about "run the server anywhere" issues, and whether you could actually code a decent server in DBPro. I apologize for getting into "advanced topics" for a new-comer thread asking a general question about DBPro multi-player capabilities. It seemed like a good place to go on an "advanced" tangent at the time...

Login to post a reply

Server time is: 2026-07-10 18:02:03
Your offset time is: 2026-07-10 18:02:03