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.

Program Announcements / Multisync v1.0 - Multiplayer plugin

Author
Message
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 9th Apr 2010 23:25
Assuming you're using GDK it could be the bug that overwrites some memory when an error occurs (anything that would trigger an error in DBPro). Why TGC haven't fixed this amazingly serious bug after all this time, I don't know.
bergice
16
Years of Service
User Offline
Joined: 5th Jun 2007
Location: Oslo,Norway
Posted: 10th Apr 2010 04:52
No im not using the GDK, so you dont need to put the blame upon TGC

Im using Leadwerks.

A good game designer can make all the diff-erence in the world mister freeman
Hawkblood
14
Years of Service
User Offline
Joined: 5th Dec 2009
Location:
Posted: 13th Apr 2010 15:45
I'm curious to know what the differences are between MikeNet and Multisync 1.4.1..... Multisync uses TCP. Does MikeNet use UDP? Are there any other differences? I posted a similar question on the MikeNet thread.

The fastest code is the code never written.
Red Eye
15
Years of Service
User Offline
Joined: 15th Oct 2008
Location:
Posted: 20th Apr 2010 21:24
Lets start by saying: "Awesome plugin!"

Lets follow by: "I got it installed on GDK and i tought if there are any example for DarkGDK? This might have bene asked before. Anyway, if there are can u point me to any?"

Thanks,

Red Eye

Cetobasilius
14
Years of Service
User Offline
Joined: 29th Dec 2009
Location: Mexico
Posted: 21st Apr 2010 20:10
check out this thread:
http://forum.thegamecreators.com/?m=forum_view&t=167714&b=22
i posted a working example of multisync with both server/client functions in one program you should check it out

hi
Hassan
14
Years of Service
User Offline
Joined: 4th May 2009
Location: <script> alert(1); </script>
Posted: 22nd Apr 2010 15:06 Edited at: 22nd Apr 2010 15:13
Hello everyone

I was wondering, how to let someone connect to my PC (my pc is running the server app) through the internet? i only succeed getting this to work connecting from my pc to itself, or to a pc on my network, but not over the net, does this have anything to do with ports? what port should i use? and which IPs i should host/connect with?

Cetobasilius
14
Years of Service
User Offline
Joined: 29th Dec 2009
Location: Mexico
Posted: 23rd Apr 2010 00:56
go to [href]www.whatismyip.com[/href] and thats your IP adress... just give that to your client, but if you are behind a router, you are gonna have to make some port forwarding... which you can google

hi
Hassan
14
Years of Service
User Offline
Joined: 4th May 2009
Location: <script> alert(1); </script>
Posted: 23rd Apr 2010 10:15
So, i need to forward my port, and the client should connect to my internet IP address, what address should i host with?

Hassan
14
Years of Service
User Offline
Joined: 4th May 2009
Location: <script> alert(1); </script>
Posted: 24th Apr 2010 13:00
still can't get it working

Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 24th Apr 2010 14:06 Edited at: 24th Apr 2010 14:07
I've posted this information numerous times on these forums but unfortunately the search feature is practically useless for finding them. So, here we go again...

1. Host with your computer's LAN IP (you can obtain this from ipconfig).

2. In your router settings forward TCP port 3999 (or whatever you've changed the port to) to the computer (using the LAN IP again).

3. Have clients on the internet connect using your internet IP. Clients on the same LAN will have to use your LAN IP.

Hope it helps.
Freedom Fighters
14
Years of Service
User Offline
Joined: 2nd Nov 2009
Location:
Posted: 29th Apr 2010 12:07 Edited at: 13th May 2010 10:48
When Can you release a UDP Version please?

EDIT: Never mind, i wrote a network dll that uses UDP for C++
=) (Hint: could be a good combination with multisync for LAN games =) Link: <Not Done Yet> )

Problem Solution That Never Fails: "Build A Bridge And Get Over It"
General Jackson
User Banned
Posted: 29th Apr 2010 22:30
Will put this plugin to good use.

Thankyou Benjamin

David R
20
Years of Service
User Offline
Joined: 9th Sep 2003
Location: 3.14
Posted: 2nd May 2010 18:36
@bergice; If I recall correctly, that green arrow next to the breakpoint means it is the next statement to run, not the current one - which probably means your problem is somewhere prior to that.

Where is typeOfPeer delcared?

09-f9-11-02-9d-74-e3-5b-d8-41-56-c5-63-56-88-c0
Bran flakes91093
15
Years of Service
User Offline
Joined: 13th Sep 2008
Location: Crazy Land
Posted: 2nd May 2010 23:16
Quote: "If I recall correctly, that green arrow next to the breakpoint means it is the next statement to run"


The yellow arrow is the next statement to run, and the green arrow represents a function that was on the stack at the time of the exception.

"A computer once beat me at chess, but it was no match for me at kick boxing."
Emo Philips
thenerd
15
Years of Service
User Offline
Joined: 9th Mar 2009
Location: Boston, USA
Posted: 17th May 2010 22:47
I'm thinking of using an old computer (nvidia geforce mx440) as a server, but when i ran the Example 1 server as a test, it came up with the standard crash dialog saying "modname: multisync.dll". I have dx 9.0c installed, but is there anything else I would need?

Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 18th May 2010 07:37
Try installing this
thenerd
15
Years of Service
User Offline
Joined: 9th Mar 2009
Location: Boston, USA
Posted: 18th May 2010 21:59
hm, I tryed that, it must be something else because it still crashes.

Eminent
13
Years of Service
User Offline
Joined: 15th Jul 2010
Location:
Posted: 12th Aug 2010 05:02 Edited at: 12th Aug 2010 05:02
Sorry for the necro but anyone know how to make a simple IM software between 2 people using this plugin?
gwheycs62egydws
14
Years of Service
User Offline
Joined: 17th Aug 2009
Location: The World
Posted: 11th Sep 2010 04:08
I tried to run Multisync 1.4.1
but it says that


Compilation Failed. Could not determine parameter type of 'net connect(ip$)' at line 11.

result = net connect(ip$)

it happens with all examples
I've got DarkNet install and I think
I have anther add on that is similar

but it seems that this command is not active

If a thought is Just a thought ~ so whats the main thought ?
Dr Tank
15
Years of Service
User Offline
Joined: 1st Apr 2009
Location: Southampton, UK
Posted: 30th Sep 2010 02:47
This may be a dumb question, but what's the difference between this and the standard multiplayer commands that come with Darkbasic? Is Multisync faster, more reliable, more widely used etc?
Red Eye
15
Years of Service
User Offline
Joined: 15th Oct 2008
Location:
Posted: 9th Dec 2010 16:16
Quote: "This may be a dumb question, but what's the difference between this and the standard multiplayer commands that come with Darkbasic? Is Multisync faster, more reliable, more widely used etc? "


Yes.................. YES!.............. YESSSSSSSSSSSSSSS!.............

Dr Tank
15
Years of Service
User Offline
Joined: 1st Apr 2009
Location: Southampton, UK
Posted: 1st Jan 2011 19:40 Edited at: 1st Jan 2011 23:55
Quote: "I also found out the connection will time out and disconnect the client after 30 seconds "

Thanks for this! Otherwise I might have been throwing a tantrum right now. Actually, something i'm doing now is stopping it from disconnecting, even without sending messages. Perhaps calling net connected(), or similar.

This is much faster than the standard DBP multiplayer commands for connecting. Also, I am able to tell the host to stop hosting, then restart, which I couldn't manage with the standard commands (I may have missed something). This is what I will be using. Thanks for the dll.
dzsana
14
Years of Service
User Offline
Joined: 10th Nov 2009
Location:
Posted: 9th Jan 2011 17:44
Hey! I just download this plugin and works well.

But there is one thing what im missing from it.

I hosted a server, and my question is how can i list the available servers on the client side.
So when i join i dont want to type the server ip. I need a functions for it to list the servers.

And other question, is there a function to get my ip?

//sorry for bad english

chill
Qqite
14
Years of Service
User Offline
Joined: 28th Feb 2010
Location: Florida, U.S.
Posted: 15th Jan 2011 03:01
I've been trying to test this and I'm not getting anywhere. When I have a player join, he's now connection num1. Someone else joins and hes now connection num2. If connection num1 leaves, is the second guy still connection num2? Or is he bumped down to connection num1?

Ventures of the worlds around us are only limited by imagination.
dieux_flippsi
13
Years of Service
User Offline
Joined: 5th Oct 2010
Location:
Posted: 15th Jan 2011 23:52
Hello, great plugin. Can we also use this in a win32 console application?
I already wrote something but its doesnt work... Client hangs when he wants to connect:

Someone has a solution on this?
thanks in advance
Hockeykid
DBPro Tool Maker
16
Years of Service
User Offline
Joined: 26th Sep 2007
Location:
Posted: 24th Jan 2011 23:29
Hi,
Every time I attempt to use multisync while joining as a client the connection fails and the error report says "Timed Out". I know it's not just my code because even Agent's MMORPG in the WIP section uses your DLL and I still receive the "Timed Out" message when attempting to join.

Any suggestions?

Uncle Sam
18
Years of Service
User Offline
Joined: 23rd Jul 2005
Location: West Coast, USA
Posted: 2nd Mar 2011 21:35
Not sure if this has been asked, but is it true that Multisync can have as many as 16384 players in one game at a time?
Qqite
14
Years of Service
User Offline
Joined: 28th Feb 2010
Location: Florida, U.S.
Posted: 22nd Mar 2011 19:03
Theres a really annoying bug that has given me tons of problems.
I can'ts "net put int" a UDT and/or DIM() variables. Everytime I want to put said variable type I have to set that variable to a local variable and then put that variable.

Ventures of the worlds around us are only limited by imagination.
Rudolpho
18
Years of Service
User Offline
Joined: 28th Dec 2005
Location: Sweden
Posted: 23rd Mar 2011 19:09
Quote: "Hello, great plugin. Can we also use this in a win32 console application?
I already wrote something but its doesnt work... Client hangs when he wants to connect:



Someone has a solution on this?
thanks in advance "


I'm having exactly the same problem.
Any ideas / workarounds would be nice (may it be that the library requires something from the DarkGDK library ie. for memblock support?)


"Why do programmers get Halloween and Christmas mixed up?"
Rudolpho
18
Years of Service
User Offline
Joined: 28th Dec 2005
Location: Sweden
Posted: 23rd Mar 2011 21:02 Edited at: 23rd Mar 2011 21:03
Ah, seems mr Benjamin answered that over here.

Quick fix is to slap this in the main loop (of the server) to handle the message queue of the app:

(Where msg is declared as MSG pointer (from Windows.h)).


"Why do programmers get Halloween and Christmas mixed up?"
Agent
19
Years of Service
User Offline
Joined: 7th Sep 2004
Location: Sydney, Australia
Posted: 12th Apr 2011 21:46
Is it possible for a server to open up a second connection as a client while it is still serving its own clients?

I have a client server game fully operational at the moment but I am looking to implement a copy protection system in which the client sends its cd-key to the server when it connects, and the server then connects to the authentication server to check if the key is valid before accepting the connection from its own client. In order to do this, I need my game server to continue serving its existing clients while it opens up a new connection as a client, to talk to the authentication server.

Can this be done?
Agent
19
Years of Service
User Offline
Joined: 7th Sep 2004
Location: Sydney, Australia
Posted: 12th May 2011 06:22
Bumping. Still need an answer to this question. Does anybody know? Benny?

Qqite
14
Years of Service
User Offline
Joined: 28th Feb 2010
Location: Florida, U.S.
Posted: 19th May 2011 20:20
@Agent

I have done the same thing with my server. Just program your authentication program as a CLIENT and have the server wait for the authentication program to connect before letting any other clients connect. I've done this by simply rejecting all outside connections until a client connects with a certain IP.



Ventures of the worlds around us are only limited by imagination.
Uncle Sam
18
Years of Service
User Offline
Joined: 23rd Jul 2005
Location: West Coast, USA
Posted: 20th May 2011 05:59 Edited at: 20th May 2011 05:59
You might consider doing it the way I did when using Multisync. I had the clients connect to the authentication server to both verify their key and give them the server list. If they have an invalid key you simply don't send them the server list. If there is no way to manually enter an IP in the client this works pretty well.

EDIT: Though what Qqite suggested is a pretty good idea too.
Agent
19
Years of Service
User Offline
Joined: 7th Sep 2004
Location: Sydney, Australia
Posted: 31st May 2011 03:37
Thanks for the suggestions, guys. The problem with this idea though is that the authentication server will need to connect to every single game server out there. First of all, how will it know where they all are, and secondly how can it connect, as a client, to more than one server at the same time?

Qqite
14
Years of Service
User Offline
Joined: 28th Feb 2010
Location: Florida, U.S.
Posted: 1st Jun 2011 14:55
Does anyone know how to establish a connection past a router without port forwarding? I'm planning on making a matchmaking service that people connect to (static IP and such) and when they want to start a game, it let's one of the players become the server and everyone else connects to that player.

I got the matchmaking down, but once everyone is ready to connect to one of the players I don't know how to bypass the port forwarding issue.

This is possible because almost 99% of PC games has this feature; you can go online to find a list of games and then join them without having to gset up ports and such.

Ventures of the worlds around us are limited only by our imagination.
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 1st Jun 2011 15:58
Quote: "Is it possible for a server to open up a second connection as a client while it is still serving its own clients?"


Unfortunately not. It was a planned feature in a future version but it never materialised.

Quote: "This is possible because almost 99% of PC games has this feature; you can go online to find a list of games and then join them without having to gset up ports and such."


Clients don't require port forwarding, only the servers do.



Support a charitable indie game project!
Qqite
14
Years of Service
User Offline
Joined: 28th Feb 2010
Location: Florida, U.S.
Posted: 2nd Jun 2011 02:27
Quote: "[quote]"This is possible because almost 99% of PC games has this feature; you can go online to find a list of games and then join them without having to gset up ports and such.""


Clients don't require port forwarding, only the servers do.[/quote]

I know that, but how are games like Halo 2 Vista and other "matchmaking" games able to give a random player the ability to server a game? Does the main server relay the data? That sounds very inefficient and slow...

Ventures of the worlds around us are limited only by our imagination.
Dr Tank
15
Years of Service
User Offline
Joined: 1st Apr 2009
Location: Southampton, UK
Posted: 3rd Jul 2011 01:42
Anyone know how to stop Multisync giving popup windows when it fails to connect etc?
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 4th Jul 2011 19:30
Quote: "Anyone know how to stop Multisync giving popup windows when it fails to connect etc?"


It only does that if you call the connect function without returning a value.



Support a charitable indie game project!
Dr Tank
15
Years of Service
User Offline
Joined: 1st Apr 2009
Location: Southampton, UK
Posted: 4th Jul 2011 22:44
Thanks dude! Multisync works really well.

One of the things that was confusing when I started though was that looking at the readme, none of the functions are listed with "()" at the end, and without "()" they work but can't return variables.

I got a crash when I tried to host when another host already existed (on the same machine). That's not something i expect users to do though so it's no big deal.

Multisync connects so much faster than the standard DBP multiplayer commands. (which seem broken when compiled in the latest DBP anyway!)
Cetobasilius
14
Years of Service
User Offline
Joined: 29th Dec 2009
Location: Mexico
Posted: 9th Aug 2011 11:25
Hey Benjamin, i have not tried this at home but, can a server be another servers' client? somewhat like this:

client------>server------>server

hi
Agent
19
Years of Service
User Offline
Joined: 7th Sep 2004
Location: Sydney, Australia
Posted: 9th Aug 2011 13:22
That's what I asked earlier, Ceto. Apparently the answer is that it was a planned feature for the future that never made it into final, so no this isn't possible.

Cetobasilius
14
Years of Service
User Offline
Joined: 29th Dec 2009
Location: Mexico
Posted: 10th Aug 2011 04:44
@Agent
oh damm i did not read before that :S sorry. It would be cool to add a feature like that!

hi
Agent
19
Years of Service
User Offline
Joined: 7th Sep 2004
Location: Sydney, Australia
Posted: 14th Aug 2011 15:34
Yeah I would *really* like that feature myself. Benjamin, if there are to be any more future versions, this is a must-have.

Dr Manette
18
Years of Service
User Offline
Joined: 17th Jan 2006
Location: BioFox Games hq
Posted: 12th Sep 2011 18:22
I've worked with tempest in the past (a few years ago) and have since been working on a new multiplayer game. I want to use this game primarily for LAN connections and later across the internet. But I want to be able to call a list of local games much like tempest did. What do people suggest as the best/most secure/fastest/easiest way to do this? I've toyed with creating a list of local servers so that someone can check their ip against a list, then see the local ips under that main ip. This seems a bit excessive traffic wise to be updating an online list for LAN IPS.... but then again it's just my one idea. Any help or pointing in the right direction I would love.

And this is also my first post in a LOOOOOOOOOOONG time. So... hey TGC I'm back!

Southside Games
14
Years of Service
User Offline
Joined: 1st Jan 2010
Location: Don\'t tell me what to do!
Posted: 12th Oct 2011 20:31
hello. I hate to sound like a total noob, but I'm finding it a little hard to go though this data you guys have been making, pick out what works, and make code. can I get a solid working bare bones tut on how to connect and send x,y,z cords?

Thanks much!
Agent
19
Years of Service
User Offline
Joined: 7th Sep 2004
Location: Sydney, Australia
Posted: 31st Dec 2011 17:50
Just wanted to share my solution to my own problem, listed a few posts above this one.

I now run a master server on a static IP. When a game server is run, it first connects as a client to the master server, and tells it "Hi, I'm a game server, this is my IP". The master server sends an acknowledgement and then drops the connection. The game server then sets up fresh netcode as a server, and begins accepting connection from game clients. If the game server is exited normally, it drops all client connections, becomes a client and connects to the master server again, telling it "We're done here, I'm out". The master server receives this signal, removes that game server's IP from its list and drops the connection. Then the game server terminates.

When clients wish to connect to a game server, they first connect to the master server on the master IP and sends it "Hi, I'm a game client, this is my authentication key". The master server checks the key and validates it. If the validation check fails, the client is immediately disconnected. If the check passes, the master server sends the client a list of game server IP's. The client can then choose one, drop the connection to the master server and establish one to the selected game server.

The advantages of this system are that the master server can enforce authentication key validation, which will provide for suitable copy protection. Additionally, this system is a pretty common way of registering servers for clients to find, so your server will always be listed for all clients. Because every client will connect to the master server during its startup, the master server can send things like message of the day and development news to clients so they can be kept up to date.

There are two fairly major disadvantages to this system though. If the master server goes down, no client in the world will be able to play the game at all. This holds true for most commercial multiplayer games however, so this could still be acceptable provided I field a nice and stable master server. The other substantial disadvantage is that if a game server quits in any way other than normally (ie, crash or Alt-F4 rather than a typed QUIT command) then the master server will never be notified that this game server is offline.

I wanted to have the master server periodically ping all game servers that it's aware of to see if they are still alive and remove any game server that doesn't respond. There seems to be no way to do this, though. If I can find a way to accomplish this periodic check-alive ping while continuing to serve clients (or to have game servers periodically send a keep-alive ping to the master server while still serving their clients) then this will no longer be a problem.

Any ideas?

Dr Tank
15
Years of Service
User Offline
Joined: 1st Apr 2009
Location: Southampton, UK
Posted: 31st Dec 2011 22:21
That's a good question. I gather things have to be client or server and not both. Perhaps there could be 2 programs running on the server. One host for accepting connection from users, and another client program that cycled through list of hosts and checks that it can connect to each. The two programs can talk to eachother by either the client connecting to the host, or via some shared file - it only need contain the list of host ips - if the checker fails to connect, it takes the entry off the list.
Southside Games
14
Years of Service
User Offline
Joined: 1st Jan 2010
Location: Don\'t tell me what to do!
Posted: 1st Jan 2012 02:38
Hey, that is a good idea Dr tank. I can't wait to see something like a master server in a dark basic game!

Login to post a reply

Server time is: 2024-04-26 10:22:52
Your offset time is: 2024-04-26 10:22:52