Okay, straight to the point, I'm creating a nice little multiplayer DLL and server to make the creation of persistant worlds much easier (it can be used for non-persistant worlds as well, but persistant worlds are the main focus).
It doesn't make use of DirectPlay like the current DarkBasic multiplayer commands, it sends it's commands over fairly straight TCP sockets and keeps almost everything important server side so the client is secure from people doing dodgy things to it.
It creates MD5 hashes for passwords to keep them fairly secure when transfering and storing them.
The server runs on Windows and Linux, the DLL is currently just for Windows but I'm planning on creating a shared object file for Linux out of it, since I'm not making it exclusively for the DarkBasic community, although that is my prime target at the moment.
Once it's more finished I'm planning on releasing the server under the GPL and the DLL/SO under the LGPL.
By now you're probably thinking, "Yep, more great plans by a little person that'll turn into nothing but vapourware". So... here's my current progress
In the above program the user can register a player, log in, walk around (all server based) and view other players. That's all done with only 16 lines of multiplayer code in the client.
Current commands are:
Connect (ip/host,port) -- Connect to the server
Register (username,password,profession,email) -- Register a new user, password's automatically MD5 hashed.
Login (username,password) -- Login to an existing account, password's automatically MD5 hashed.
GetMyX -- Return the player's X position
GetMyY -- Return the player's Y position
GetMyZ -- Return the player's Z position
WalkMe -- Move the player by amount specified in server configuration for walking, in the current direction.
RunMe -- Move the player by amount specified in server configuration for running, in the current direction.
WalkMeBack -- Move the player by amount specified in server configuration for walking, opposite to the current direction.
TurnMeLeft -- Turn the player left by amount specified in server configuration
TurnMeRight -- Turn the player left by amount specified in server configuration
GetNearbyPlayers -- Get player IDs for all players within a certain area of you (distance specified in the server configuration)
NextNearPlayer -- Feed the client the next near player in the list
PlayerX (playerid) -- Get the X co-ordinate of the player with the specified ID
PlayerY (playerid) -- Get the Y co-ordinate of the player with the specified ID
PlayerZ (playerid) -- Get the Z co-ordinate of the player with the specified ID
PlayerRot (playerid) -- Get the rotation of the player with the specified ID
Not bad for 3 days work, eh? Feel free to make any comments you might have about things you'd like to see included and I'll stick them in if they suit my plans for the project
.
Also going to add that I'm easily distracted, so development might not always be lightning quick, if at any point I do get absolutely tired of it and decide never to work on it again (unlikely, but possible
) I'll be sure to release all the source for others to tinker with
.
How much ham could a hamster stir, if a hamster could stir ham?