Jump to content
  • Advertisement

Archived

This topic is now archived and is closed to further replies.

felonius

DirectPlay and non-win32 platforms

This topic is 6764 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi, I am building a networked game and I would like to fulfill user expectations and user DirectPlay for this. I would like, though, to be able to let non-windows versions of the game communicate with the windows versions. One purpose of this is to create a Linux server version of the game to act as a dedicated server. This should be able to interact with the windows clients. Is this at all possible, except by abandoning DirectPlay totally and relying on some lower level protocol stack such as TCP/IP? Any suggestions would be appreciated? B.S. Jacob Marner
Graduate Student of Computer Science, The University of Copenhagen, Denmark.
http://fp.image.dk/fpelisjac/rolemaker/


Share this post


Link to post
Share on other sites
Advertisement
In a nutshell, you have to abandon DirectPlay in order to communicate across platforms. The DirectPlay protocol hasn''t been (and mostly likely won''t be) released or ported to other platforms.

Share this post


Link to post
Share on other sites
DirectPlay doesn''t give you that much over sockets anyway.

An alternative you may want to explore is Apple/Bungie''s OpenPlay, and open-source game networking library. I believe that there are Mac, Win32 and linux implementations.



-vince


Share this post


Link to post
Share on other sites
You are both probably right. I have to use something else than DirectPlay then.

It is a shame, though. DirectPlay is service provider independent while others (including OpenPlay) only supports TCP/IP on all platforms. This is the most important protocol but I would still like to support direct modem connections, IPX, null-modems, etc.

I took a look at OpenPlay. It is given in source code meaning that in principle can be ported to any system (providing that to proper drivers are written). A Linux version is under development but is not done. For know only Mac and Windows versions exist.

If anybody knows any other programs for platform/service independant commiunication please let me know.

B.S. Jacob Marner
Graduate Student of Computer Science, The University of Copenhagen, Denmark.
http://fp.image.dk/fpelisjac/rolemaker/


Share this post


Link to post
Share on other sites

Not very sure if it''s platform independant..

http://www.rogerwilco.com/

Share this post


Link to post
Share on other sites
I just looked at Roger Wilco. It is not a communication protocol, but a application layer program for sending voice information over networks. It only works for Mac and Windows and only work on TCP/IP.

In conclusion, Roger Wilco is not what I need. Apple OpenPlay is then a better solution.

B.S. Jacob Marner
Graduate Student of Computer Science, The University of Copenhagen, Denmark.
http://fp.image.dk/fpelisjac/rolemaker/


Share this post


Link to post
Share on other sites
Nothing is preventing you from abstracting out your session/transport layer from the application. Create an network encapsulating interface for your network calls, and write a DirectPlay implementation and a TCP/IP implementation. Then you can still have your server in linux.

Share this post


Link to post
Share on other sites
Uh, that won''t work. DirectPlay uses its own protocols and the protocol spec is not public. So a DirectPlay client will not be able to talk to a non-Windows server.



-vince


Share this post


Link to post
Share on other sites
vince, I know that DirectPlay protocols haven''t been released. I said so myself above. I think you missed my point. The point is to abstract out the networking code by protocol. ex:


class NetStuff {
public:
virtual void CreateConnection(int address) = 0;
virtual int SendData(char * buffer, int size) = 0;
};

class TCPNetStuff : public NetStuff {
};

class DPlayNetStuff : public NetStuff {
public:
void DPlayLobbyConnect(void);
};


Then a network interface will be either an instance of TCPNetStuff or DPlayNetStuff. So just don''t compile the DPlayNetStuff implementation for the non-windows clients. You''ll still have the TCPNetStuff network interface to communicate over with other OS''es.

Share this post


Link to post
Share on other sites
But my point is that DPlay clients can''t talk to non-DPlay servers/clients.

What''s the use of having a DPlay implementation if it can''t talk to anyone else?

I agree abstraction of the networking API is a good thing - it has already saved my butt many times. It''s just that for this scheme to work all the clients/servers would have to be DPlay.




-vince


Share this post


Link to post
Share on other sites

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!