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.

Geek Culture / Multiplayer Programming in DB Pro

Author
Message
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 8th Jul 2005 14:19
Let's face it: multiplayer rocks the house party eight days a week. It's better to be able to play against your friends, or play against complete strangers, because competition is one of the roots of human nature. DB Pro makes multiplayer programming simple, as long as you keep the maximum number of players in the game below 256 people. But a few months ago when I first talked about the game I'm working on, a few people e-mailed me asking about it, and just today I've gotten three e-mails because of a post I made on a different thread. The question is always the same: how in the world are you making an MMO with DBPro?

The truth? I have no clue. We're developing this game step-by-step, dealing with each aspect of its design as it relates to the main loop, and multiplayer functionality is the last thing on the list. The front end is there, the input aspects are there (without being tied into the display subroutines yet... about 60% of the code is REM'd for now), and we're at the stage where we're dealing with the graphics and audio. We've been tossing around a lot of ideas about the multiplayer aspects, and lately we've been thinking of it as our number one problem. There's five people working on this game, and none of us are particularly wise when it comes to the net, so launching this game is going to remain a work in progress.

Anyway, I started this thread because there seems to be a lot of people who talk about making MMO's on these forums. There are some obvious hurdles a person (or a team of people) would need to overcome, like the obvious matter of finding a server capable of hosting an epic game. Most of us on these forums are poor (in contrast with a company like EA) so figuring out a cheap, sturdy method of hosting an MMO is something that I think should be talked about.

For our game, we have a few fundamental ground rules, and it's those rules that are causing all of the difficulty. In my opinion, a true MMO has no limit to the amount of people who can play simultaneously on the server. If five million people own the game, five million people should be able to play online. But DB Pro only allows for 256 people to play on a server. Are there methods to work around this problem? How fast can an FTP client download data from an FTP server? Fast enough? Is there some trick to DB Pro that allows you to work your way around the 256-player limit?

Another rule that my team has claimed: this game WILL NOT charge for online service. If you buy the game, you can play it online... there will be no additional service fees. The obvious way to avoid having to charge people is to create a P2P network that hosts this game. Something like Bearshare or Kazaa, but instead of trading MP3's and dirty movies, it would be game-related data. This would avoid the need for several enormous, expensive servers. But would this be do-able?

Anyway, post your thoughts about multiplayer gaming as it relates to DB Pro. I'm hoping this will turn into one of those threads that helps a bunch of people, so please, constructive thoughts only, hehe.

- Matt Rock

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
The admiral
22
Years of Service
User Offline
Joined: 29th Aug 2002
Location:
Posted: 8th Jul 2005 15:01
A p2p network probably is doable as long as you have at least one server to store all the player data on so they cant cheat because people will if they can. As for the massively multiplayer part i feel its better to create online role playing games which jsut have a few hundred people.

The admiral
Jeku
Moderator
21
Years of Service
User Offline
Joined: 4th Jul 2003
Location: Vancouver, British Columbia, Canada
Posted: 8th Jul 2005 15:02
Unless you use a 3rd party mutliplayer DLL, then you can't go past the 256-player limit. That being said, you could always have more than one server--- let's say 4, each with their own 256-player world. That 1024 players now. Maybe when the player logs into an entry server, he will be seamlessly redirected to one of the servers.

But then we have the problem of maintaining game states in MM games. Nobody wants to build an online kingdom just to have it be on a different server than when he signed in on last time.

How about if you reserve some of the player slots as inter-server CPU players? I.E. if you walk down the street to a "store" that's on a different server, the CPU player slot on your server would talk to the appropriate CPU player slot on the required server, grab the information, and display it to your game as if it were on the player's server.

Hope that makes sense, but that's what I'd do. Then you can dynamically add servers as more people buy your game. Once you hit close to the max players (i.e. 250) then add a new server and broadcast it to the first server. Voila you have dynamic expansion.


--[R.O.B.O.I. and FireTris Coming Soon]--
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 8th Jul 2005 16:58
Do you know of any 3rd party multiplayer DLL's?

Also, what of the FTP idea? How fast does it transfer information? Would this be a good idea or a bad idea, and why?

I feel like the other thread is bleeding into this thread, talking about stores and whatnot, hehe. But anyway, I love the idea of reserved slots, but there's one problem. In the game we're making now, we made an arena and a race track. In the arena, you could have boxing matches or gladiator fights (I haven't yet explained the setting for this game, just that it's futuristic, and I won't go any further, hehe), and the race track is, well, a race track. In either location you could hold massive events with a large number of people playing together. The question here is, how would it be possible for huge congregations?

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
David T
Retired Moderator
22
Years of Service
User Offline
Joined: 27th Aug 2002
Location: England
Posted: 8th Jul 2005 17:51
Quote: "Do you know of any 3rd party multiplayer DLL's?"


>_< Multisync?

"A book. If u know something why cant u make a kool game or prog.
come on now. A book. I hate books. book is stupid. I know that I need codes but I dont know the codes"
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 8th Jul 2005 19:08 Edited at: 8th Jul 2005 19:12
Quote: "Multisync?"

Heh its efficient but I'm not so sure about it being able to handle hundreds of players.

Well, the client functionality would work well enough... its just a matter of making a server program.


"Lets migrate like bricks" - Me
CattleRustler
Retired Moderator
21
Years of Service
User Offline
Joined: 8th Aug 2003
Location: case modding at overclock.net
Posted: 9th Jul 2005 00:17
give EZ_Serv a look. free demo available.

click sig link below.

DBP Plugins Latest: MSAccess, SQLServer - July 2005
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 9th Jul 2005 01:20
Personally I would suggest rather than deciding to swim the channel, you actually learn how to do the doggy paddle first.

David R
21
Years of Service
User Offline
Joined: 9th Sep 2003
Location: 3.14
Posted: 9th Jul 2005 01:43
Quote: " Personally I would suggest rather than deciding to swim the channel, you actually learn how to do the doggy paddle first."


= Don't make the mistake of making an MMORPG or similar. Start simple

(I assume that's what Raven means)

[url=www.lightningstudios.co.uk][/url]
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 9th Jul 2005 01:46 Edited at: 9th Jul 2005 01:46
No he means don't try to swim the channel without knowing how to do the doggy paddle first, you'll drown. No clue what it has to do with this topic though...


"Lets migrate like bricks" - Me
David T
Retired Moderator
22
Years of Service
User Offline
Joined: 27th Aug 2002
Location: England
Posted: 9th Jul 2005 01:47
Perhaps learn how to do simple MP before worrying about a 1024 player MMORPG?

"A book. If u know something why cant u make a kool game or prog.
come on now. A book. I hate books. book is stupid. I know that I need codes but I dont know the codes"
David R
21
Years of Service
User Offline
Joined: 9th Sep 2003
Location: 3.14
Posted: 9th Jul 2005 01:47
I think it was a metaphor.... I hope

[url=www.lightningstudios.co.uk][/url]
Jeku
Moderator
21
Years of Service
User Offline
Joined: 4th Jul 2003
Location: Vancouver, British Columbia, Canada
Posted: 9th Jul 2005 01:58
Well I'll reserve my opinion as to whether there will actually ever be more than 256 players simultaneously playing a DBPro online game. If that ever happens I'm sure TGC will advertise the dickens out of it

Quote: "Also, what of the FTP idea? How fast does it transfer information? Would this be a good idea or a bad idea, and why?"


I wouldn't go there. FTP is *maybe* a good idea for something like a high score list, but once you have multiple users executing it simultaneously, you will run into concurrency issues. There's a reason why none of the big game publishers use FTP as a means of multiplayer play--- it's too damn slow for one thing. It would easily take 5 seconds on a broadband connection to connect, transfer, and disconnect an FTP connection. Then you have to have the server constantly reading the folder for updates. It would be madness.

Maybe a one-time transfer would be ideal, like to load the world initially. But it just wouldn't work for anything real-time.


--[R.O.B.O.I. and FireTris Coming Soon]--
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 9th Jul 2005 05:05
This thread is going to figure out a way to break the 256 player limit, hehe. Ideally, I'd like to eventually piece together a bit of code that allows that limit to be broken, so it can be posted in the code base for all to see and use. The only thing that makes something impossible is the human mind

I'm not worried about "drowning," as Raven so eloquently put it. In the absolute worst-case scenario, we've been planning an alternative solution involving people running dedicated servers that host whatever the limit of their connection is. But I'd much rather make this an MMO. What about the P2P concept? I've read that there's a group trying to do it, but they make it sound much more difficult than it probably is. They're more focused on the theory and less on the action. I'm more focused on the action. Someone once said "At the heart of every brilliant idea there is an easier way." Well, lets find it

More information about the P2P project:
http://news.com.com/A+virtual+world+with+peer-to-peer+style/2100-1025_3-5698499.html?tag=nefd.lede

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
David T
Retired Moderator
22
Years of Service
User Offline
Joined: 27th Aug 2002
Location: England
Posted: 9th Jul 2005 05:07
Isn't 256 a DirectX limit?

"A book. If u know something why cant u make a kool game or prog.
come on now. A book. I hate books. book is stupid. I know that I need codes but I dont know the codes"
Perokreco
19
Years of Service
User Offline
Joined: 5th Apr 2005
Location: Bosnia and Herzegovina
Posted: 9th Jul 2005 05:22
I have an idea but i dont know is it possible If you could have 4 parallel servers on one computer then you can have one main server which calculates everything and each of other servers has 256 connections and they are all connected to main server with one connection so you have basicaly this main server
/ ' \
1st server 2 server 3rd server
///////// ////// //////////
256 connections 256 connections 256 connections
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 9th Jul 2005 05:27
Quote: "What about the P2P concept?"

It requires the players to have very fast internet connections.


"Lets migrate like bricks" - Me
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 9th Jul 2005 09:19
In what sense Benjamin? Like, they'd all need T1's in order to transfer data back and forth in real time? I had previously assumed that everyone would be sending and recieving data at about the same time, regardless of connection, because the various connection speeds would average out. Then again, I really don't know much about P2P, just that it would seem practical in a broad sense.

Quote: "If you could have 4 parallel servers on one computer then you can have one main server which calculates everything and each of other servers has 256 connections and they are all connected to main server with one connection so you have basicaly this main server"


I don't understand what you mean there, Perokreco. How do you get four servers on one system? And regardless, the language still has a 256-player limit, so unless you could combine servers in DB Pro somehow then you couldn't let the game allow for congregation, which I personally feel is at the heart of any MMO. Maybe you're on to something and I'm not in the right mindset, hehe. But please, explain that a little better

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
the_winch
21
Years of Service
User Offline
Joined: 1st Feb 2003
Location: Oxford, UK
Posted: 9th Jul 2005 09:29 Edited at: 9th Jul 2005 09:31
Most home connections have slower upload than download.

Where is your evidence the 256 limit is in the language? I would say it has more to do with the range of values you can fit in a byte than what the system is actually capable of. If having more that 256 players was realistic they would have just used more than one byte.
Chances are they tested the maximum number of players it was cabable of supporting and set the limit at a convinient point above that.
Frozen Flame
20
Years of Service
User Offline
Joined: 22nd Jul 2004
Location:
Posted: 9th Jul 2005 09:34
what about.. if you REALLY want everyone to like be on the same server.. kinda..

have many servers set up and each server is set to a zone in the game. as players pass thru the zones they change servers while loading the next zone.
The max players in a zone is 256 but if the game is big enough that shouldnt be a problem.
added that u also have a player time out so not everyone is sitting in the same spot. like 3 minutes and they get booted?


School is supposed to be teaching our kids how to read and write. Not about dangerous drugs like PHP.
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 9th Jul 2005 10:15 Edited at: 9th Jul 2005 10:18
Quote: " In what sense Benjamin? "

Bare in mind a lot of the specifics here are guesses(though I'm sure near), but you should get the idea..

Imagen 256 players in one zone, all transfering data to eachother. Each packet of data is lets say, 50 bytes, and we use the UDP protocol which means minimum overhead.

50 * 256 = 12800 bytes or 12.5KB. And thats just one refresh. Then you have to consider you are also going to recieve that amount of data as well as send it. So if you choose to have the network refresh every second thats 25KB of data transfer per second(12.5 up, 12.5 down). You would have to be clever to fit all the necessary data into a packet that small though, with some form of encryption.

This means the minimum connection speed needed would be something like a 512kb connection(256kb up, 256kb down). Now if you were to use a server to route all the data through(rather than p2p), the clients would only need a decent download speed(since it would be only sending data to one place). Each refresh the server would need to be able to send out 3200KB and have the ability to receive 3200KB.

Actually looking at it, it doesn't look that unrealistic, however it would be difficult. There is more to it than just what I described, and there would be certain limitations in some ways. You would still need to have a server to handle the zone connecting, player managing, data managing, etc, but it would be possible. Possible but difficult.


"Lets migrate like bricks" - Me
RUCCUS
19
Years of Service
User Offline
Joined: 11th Dec 2004
Location: Canada
Posted: 9th Jul 2005 11:09
Im surprised you think your going to get over 256 players. It's never been done to my understanding. Even if you did get more than 256, your code would have to be amazingly efficient to handle all of those players without lagging like hell.

On another note, you said you're not focusing on the online play right now but rather just thinking abouthow hard it will be. Well usually if you know your game is going to be online you'll want to incorperate online in the early stages so that you dont have the problem of reqriting tonnes of code to be compatible with online.


Current Projects: SHADE - Game Maker | Mecho - TGC Puzzle Entry | Halo Physics Engine | COLD - Polygonal Collision Detection
Perokreco
19
Years of Service
User Offline
Joined: 5th Apr 2005
Location: Bosnia and Herzegovina
Posted: 9th Jul 2005 11:49
Quote: "don't understand what you mean there, Perokreco. How do you get four servers on one system? And regardless, the language still has a 256-player limit, so unless you could combine servers in DB Pro somehow then you couldn't let the game allow for congregation, which I personally feel is at the heart of any MMO. Maybe you're on to something and I'm not in the right mindset, hehe. But please, explain that a little better "

This is just an assumption but if you start 4 DB server programs on one computer then you have 4*256 connections.Then that 4 computers send information about that 4*256 players to next computer(So you need two computers) using just 4 connections(in each connection you format the data so main server can understand which player is which).After that main server calculates all neccesary things and sends all the data to other computer which has 4 DB little server programs running(or 4 other computers if this doesnt work) using the same 4 connections.After that secundary servers send data to players.Hope it has more sense now
The admiral
22
Years of Service
User Offline
Joined: 29th Aug 2002
Location:
Posted: 9th Jul 2005 14:16
You could run it 4 times but it would lock up or lag VERY badly because dbpro applications take all the cpu and ram and stuff. Plus one server can struggle to hae a fast enough connection how can you expect one computer with 4 times the work to handle this?

The admiral
indi
22
Years of Service
User Offline
Joined: 26th Aug 2002
Location: Earth, Brisbane, Australia
Posted: 9th Jul 2005 18:21
if you can get 3 players working then that would be the basis of many more, once you have your loops set up to handle 3 different connections it would be a fairly straight forward process to increase the value of 3 in the required areas.

global maxplayers = 3

for i = 1 to maxplayers
ListenForClientAction(maxplayers)
next i

perhaps start with 4 players as thats a nice round number for a smaller type of game.

If no-one gives your an answer to a question you have asked, consider:- Is your question clear.- Did you ask nicely.- Are you showing any effort to solve the problem yourself &#63743;
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 9th Jul 2005 22:53
One thing... don't ever try to use DBP for a server program.


"Lets migrate like bricks" - Me
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 9th Jul 2005 23:32
Yes, DirectX has a 256 Player Limit Per Session. It also has a 4Billion Limit Per Game.

That's about all the help your getting out of me.
Simply because, you have no concept of how to built up your knowlage. This is a subject that has stumped some of the best coders on this site, with very few producing reasonable results. NO ONE has produced even close to the results your hoping for, apart from anything else the community itself just isn't big enough to test on such a wide-scale. Somehow I doubt you have several thousand friends OR the hardware to help you pratically test your code.

There are running costs to consider,
Hardware specifications to consider,
You will NEED Asyncronous Broadband (which is FAR from cheap),
Graphics will need to be reasonable,
The Graphics pipeline MUST be created so that it DOES NOT interfere with the Network Code . . . they absolutely must be independant!

There are just so many issues that people haven't even begun to explain you need to worry about let alone breaking the 256 "limit", which quite frankly is a non-issue compared to other problems you WILL face.

Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 10th Jul 2005 05:45
I'm the kind of person who refuses to quit until he's either (A) dead, or (B) proven to beyond a reason of a doubt that it's absolutely impossible. And nothing is impossible so the latter isn't an option, lol. I don't "think" we're going to get over 256 players online enjoying this game together, I know we will because it's the only way this game can be played, and I absolutely refuse to sacrifice the key component of this game, that being it's online play, because a hurdle is slowing us down. When faced with a hurdle, you don't run into it... you jump over it.

As far as the language is concerned I'm thinking this is a DLL issue. Finding or making a DLL that makes that not an issue as far as DBP is concerned. If it's on a P2P network somehow, then cost is far less of an issue because bandwidth is no longer a problem (everyone is sharing the burden). One of those P2P networks was started on a Dell computer in someone's basement, with a fairly slow internet connection. The network blossomed from that. How do we do that?

It's been done before, just not with this software. I think there's two kinds of people in the world: the optimist and the realist. Usually it's better to be someplace in the middle. See, the optimist will try and try and try until every possible option has been exausted, and still, he or she will try some more, because there's always light at the end of the tunnel. The realist considers the possibilities of that which he is confronted by, shrugs, and says it can't be done. Neither of these individuals is better than the other; they both have strengths and weaknesses. But the person who tries to balance these qualities and shortcomings... that's the person who gets things done.

In short... we're going to make this work. Some of the people I've met on these forums are the smartest people I know, digitally or physically (please note that I did say "some", lol). I refuse to believe it's impossible.

Anyway, back to the problem at hand. I think it's important to discuss what data needs to be transfered, because this is what seems to cause a problem: the packet size. What do the computer's need to know? Player position/ direction, object orientation, communication... anything else?

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
Frozen Flame
20
Years of Service
User Offline
Joined: 22nd Jul 2004
Location:
Posted: 10th Jul 2005 06:09
try making a massive chat program. wont take up much transfer..

it can be a test. connect all the computers you have access to, to it. tell others to do the same.. and record the sending and recieving results. Might work to see how many people can really connect.


School is supposed to be teaching our kids how to read and write. Not about dangerous drugs like PHP.
Jeku
Moderator
21
Years of Service
User Offline
Joined: 4th Jul 2003
Location: Vancouver, British Columbia, Canada
Posted: 10th Jul 2005 09:14
@Frozen - That's a great idea! Just a simple chat with 256 concurrent bots each typing at random intervals.

My "everyone else has one so why can't I?" blog: http://www.jeku.com/blog/
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 10th Jul 2005 10:22 Edited at: 10th Jul 2005 10:23
My current project(as some know) is a P2P multiplayer plugin designed for fast paced games. It works quite well in its current state, but I haven't really done any 'large scale' testing, so I'm not sure how well it performs with hundreds of players. Some modifications to the core could have it working pretty well with a good amount of players. Perhaps you might want to try this some time? It'll definately have support for whats required(zoning, etc). Have a think about it.

As for testing, start off small. Work out what data you'll want to send, and then add 10% extra to that for extensions to the format. Once you have some sort of test program built, test it with multiple computers. Now, I know you probably don't know 256 people that would be willing to try this all at the same time as you, so I suggest you have multiple players on each computer(you may want to build this into the program unless you want people to have to open loads of windows), proportional to the connection speed they have.


"Lets migrate like bricks" - Me
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 10th Jul 2005 11:13
Could we blend Frozen's idea with Benjamin's project? Use bots to simulate this?

We have four computers in this house, ranging from a '98 Compaq to my Sony Vaio that's less than a year old. Maybe this range will be helpful... see how the older computers give information and take it as compared to the newer ones. When my friends and I first started working on this, we immediately noticed that if you send information between a faster computer and a slower computer, the faster computer slows itself to match the slower computer (I'm sure most of you knew this, but I said this for those people who are reading this in the hopes of learning some new stuff about networking and multiplayer aspects, because this thread is meant to address not just my problem, but everyone else's as well, hehe).

How all of this developed (if you care to know *why* we're attempting this, otherwise this is irrelevant):
We'd originally planned to make multiple, smaller maps and allow each player to either host his or her own dedicated server, or join a pre-existing dedicated server. But before we even purchased DBP, one of us said "No! Wait! What if the player could drive from one server to the next?" That's when we started discussing what we internally call the "Liberty City Paradox," long load screens whilst you're in the middle of driving, walking, etc. Connecting from one server to the next might be a serious nuisance for some people. And besides this, there is of course some other, obvious problems. What if you're "driving into" a server that's full? Does your vehicle just smash into an invisible wall? Or what if the server doesn't exist anymore? And most importantly, how do you make a world map consisting of multiple dedicated servers? Wouldn't there be gaps? And presto, you have a group of twentysomethings sitting in a cafe at 3am arguing about multiplayer functionality To make a long story short, we decided unanimously that this game has to meet certain specifications in terms of multiplayer ability in order to be the same game it's been designed to be:
(1) It has to be free for people to play (excluding the price to initially purchase the game)
(2) There can be no limit to how many people can play together, at the same time
(3) you should be able to drive from the east coast of a continent to the west coast, board a ship, sail to another continent, and drive across that continent as well, all without seeing a single load screen

At the end of the day, as long as it meets these requirements, we're going to be happy, and so will the people who buy it I added that bit because I thought a little additional background might help for some reason. So if you read that and came away from it with nothing at all, I'm sorry, hehe.

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 10th Jul 2005 11:31 Edited at: 10th Jul 2005 11:34
It sounds like having a system as follows would work:

* Have a main server to handle the zone server notifying
* When a player moves into a new zone, the client informs the main server which in turn tells a corresponding zone server to start sending and accepting data from them. The data transfering would begin from when the main server notifies the zone server, as it would not use a proper connection system(so no pauses while waiting for connection!).

I dont know how you would get around the problem of players trying to enter full zones though. Maybe it would depend on the situation? For instance, a ferry service from one island to the other: If the far island is full, you will be told that you can not board the ferry. A suitable reason as to why you cannot board should be given that fits in with the game, of course. I think that would be quite an acceptable method.

One of the things you have to remember when engineering this sort of thing, is that you may not find a certain idea acceptable, whereas the players might. This is because when you play a game you (usually) accept the way it works, the methods it uses. However, when you make a game it is harder because you decide on the rules yourself, and you want the rules to be perfect.


"Lets migrate like bricks" - Me
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 10th Jul 2005 11:37
God, I could reach the post limit explaining the many many flaws in what you want.

Your criteria just isn't possible with current technology.
That just about sums it up though.

I certainly am not one to say, "That's impossible".. in-fact more often than not it's coders telling me that. Simple fact is that focus is on things that you have no prior understanding about.

Rather than talking about this, you should be putting together some fundimental test applications. If you ask questions during development, then perhaps we might be more inclined to provide from more complex and more important directy answers.

Several Guppies in a big pond, thinking they can take on the local Pike.

I'm enjoying my watery theme today.

indi
22
Years of Service
User Offline
Joined: 26th Aug 2002
Location: Earth, Brisbane, Australia
Posted: 10th Jul 2005 11:37
i can feel the passion in this post and if the post starts to show promise and some methods are being nutted out we can make this a sticky post for all to learn from, until then heads down bums up and crank out some solid methods. a lot of people have written plugins as you can already see.

If no-one gives your an answer to a question you have asked, consider:- Is your question clear.- Did you ask nicely.- Are you showing any effort to solve the problem yourself &#63743;
heartbone
22
Years of Service
User Offline
Joined: 9th Nov 2002
Location:
Posted: 10th Jul 2005 13:20
A good group starter project that would also be fun and easy to design and delegate tasks:

Write a network 5 card draw poker game for 2-5 people.
Any 5 TGC forum members could participate each starting with £1000.
Make the cash persistent (If you leave with -£533 the next time you come back owing the same debt).

Peace, the anti-Bush.
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 10th Jul 2005 17:49
Quote: "Your criteria just isn't possible with current technology.
"


Raven, I just don't understand what you mean. Other games have done it. In a different thread, Jeku posted this link:
http://secondlife.com/whatis/
If they can do it, why can't we? Unless of course you're talking about the limit created by the DBP software itself, in which case, isn't that the point of this thread? hehe, didn't mean that to sound rude. At least you're voicing your opinion and being forward.

Benjamin seems to really be onto something here. I feel like this thread is starting to produce some really good ideas.

Heartbone, if you make the media, I'll write the code But I think it should be written for a lot more than 2-5 people... perhaps Benjamin should implement his concepts. If we can get this to work, the sky's the limit

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 10th Jul 2005 23:18
Quote: "(1) It has to be free for people to play (excluding the price to initially purchase the game)
(2) There can be no limit to how many people can play together, at the same time
(3) you should be able to drive from the east coast of a continent to the west coast, board a ship, sail to another continent, and drive across that continent as well, all without seeing a single load screen"


http://secondlife.com/whatis/

you might want to check the 'pricing' page.
also I was unable to download it, while there is no mention of 'loading' screens that doesn't mean there aren't any.

Simple fact of the matter is that games like GTA3 have far too much going on for them to be streamed, so you need to load and process what is comming in.

Hell if you can even make a simple streaming engine in Dark Basic Professional without resorting to creating a new Render Pipeline, I will be quite amazed.

While yes it's alright to have your head in the clouds while you conceptualising a game.. the cold hard reality is that you will have to come back down to earth to impliment things; and when you do you will realise things WILL be sacrified.

Financially it just isn't feasible to have a persistant world.
Technologically not everyone has an Asyncronous Broadband connection making Peer-to-Peer a pointless option, particularly during heavy gaming sessions.

It's nice your trying to think outside the box, but try to make sure you can actually hold that box in your hands before you start trying to stuff everything you want into it.

I've seen several suggestions here so far for much smaller projects. Rather than going on and tinkering with the ideas to test what is and isn't possible, let alone what is without your own skill level to achieve .. you persist in trying to claim things are possible.

Ben hasn't tested his plug-in on a wide scale. You will find that it suffers from horrible speed problems the more players in play, simply because a Client-Server games your looking at relational packet sizes, in a Peer-to-Peer the packets are pretty constant up/down and you need to pass to everyone as everyone needs to pass to you.

What's more is the issue of having to sort out how to delegate the connections. In a Client-Server EVERYTHING comes from the Server, in Peer-to-Peer they come from everywhere.

Another issue with this is your not sending packets globally but locally to a single game. Server-Client that doesn't matter as you cna globally send packets that are then sent on based-on player global id.

Those are just the problems you face with your plan. Let alone getting into how to handle Pings, Packet Updates, Compenstating for Ping Variation, etc..

Still this is all purely network-side. Creating the network framework isn't even half the battle with MMO Games, creating an engine capable of handling that much throughput data from dynamic sources is going to be a challenge especially trying to keep the speed at a reasonable pace in DB/P. While sure C/C++/C# developers can achieve these things, they have MORE control over thier pipelines as well as having a language which is close to 100x quicker in executing even the most simple of For..Next loops. Let alone the 3D speed variation.

Technologically right now what you want to achieve is impossible.
Lower your goals and actually start work on something, test the waters and adapt to the temperature. Else your just going to get hypothermia and die.

Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 10th Jul 2005 23:35 Edited at: 10th Jul 2005 23:36
Raven, it sounds to me like you are rejecting ideas that don't exist. All this stuff you say is impossible, you can't possibly know because you don't know the game he is trying to make.

Quote: "Technologically not everyone has an Asyncronous Broadband connection making Peer-to-Peer a pointless option, particularly during heavy gaming sessions."

What do you mean by Asyncronous Broadband?

Quote: "Simple fact of the matter is that games like GTA3 have far too much going on for them to be streamed"

I must have missed something, because I swear I didn't see him mention streaming anywhere? Since he didn't mention it, I don't see a need to rant about how hard it is.

I'm wondering something Raven. Whether is this technically possible or not, why do you really care? The way you look to me is as if you want to be negative, and to stop the idea from even getting into testing. You have stated your points, now let Matt get on with what he is doing.

Edit: And please, please do not let this turn into an arguement.


"Lets migrate like bricks" - Me
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 11th Jul 2005 04:20
Quote: "Simple fact of the matter is that games like GTA3 have far too much going on for them to be streamed, so you need to load and process what is comming in."

San Andreas. No load screens. Bigger than Liberty City.

Quote: "you might want to check the 'pricing' page."

There are several MMO's that don't charge for online service... I used a bad example, lol. A few months ago when I was talking about this project, someone pointed that out to me, after I said that I thought our game was going to be the first.

Raven, the entire idea of this thread is to explore possibilities. There are games out there where all of the requirements my team has set forward are set in practical use. Maybe not all of them in the same game, but no single thing on that list is impossible. If DBPro won't handle it, then we'll make a DLL that will force it to handle it. But I won't say anything bad about your comments. You're trying to help by pointing out what you truly feel is impossible. How about this... I'll make a deal with you. If we release this game the way it's supposed to be released, you buy me a Coke. If we have to sacrifice elements of online gameplay, I'll buy you one (unless you don't like Coke, in which case, some other drink )

Going back to the drawing board and re-designing the way this game is supposed to be created/ played simply is not an option. Not at this point. Everyone on this team is extremely passionate about it. It may be impractical, but practicality and ingenuity are often times not seem walking hand in hand. Most of the things we use in everyday life were inventions created by people who took risks and did the impossible, and I'm sure they had people back then telling them it was impossible. But at the end of the day, they did it.

This thread, so far anyway, is half-theory and half-concept. I think that along the way, we'll see some really impressive ideas come out of it. In fact, I'll go so far as to say that by the time this thread reaches it's 100th authentic post, we'll have achieved at least some minor advance. I feel that we already have... Benjamin has what seems to be a very solid concept, and with only a few acceptions everyone has offered some very good ideas, arguements, relevant theories, and overall practical thought. Well, except me anyway, hehe. I don't know much about multiplayer programming, but that's why this thread is here. So I can learn, you can learn, we can learn.

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 11th Jul 2005 04:47
Quote: "I must have missed something, because I swear I didn't see him mention streaming anywhere? Since he didn't mention it, I don't see a need to rant about how hard it is."


Just because he didn't mention it outright doesn't mean it wasn't mentioned.

Quote: "San Andreas. No load screens. Bigger than Liberty City."


The US Playstation 2 version must work very differently to the UK Playstation 2 version because it takes a good 5minutes to load the game. Not quite as bad as the 10minute original, or in-game loading screens but you still have to sit there and wait for data to be processed.

Quote: "I'm wondering something Raven. Whether is this technically possible or not, why do you really care? The way you look to me is as if you want to be negative, and to stop the idea from even getting into testing. You have stated your points, now let Matt get on with what he is doing."


Because it's in the wrong forum. If he wants to discuss this as a 'concept' or 'theory' then fine, the can shove the thread into that forum and blitter on to his hearts content.

This is in the General chat area however, and if he insists on keeping the topic in this area then he should be willing to start practical experiments like those suggest above.

You can't get experience from just talking about about it, you have to open DarkBASIC Professional and attempt something. While what users can say is true for somethings for other things it's not.

Quite frankly this just stands as yet another "I'm making an MMORPG game." post, which I'm tired of seeing and helping then having the users produce naff all.

Why should users waste thier time explaining techniques, showing examples, or providing general help on a subject when the person who starts the topic wishes to do nothing more than talk about it?

What really is getting to me here is quite simply what Matt himself has summed up in a single sentence.

Quote: "There are games out there where all of the requirements my team has set forward are set in practical use. Maybe not all of them in the same game, but no single thing on that list is impossible."


That is my KEY point. No not everything you've suggested is impossible, infact it's all very possible... SEPERATELY.
Do you not think that if it WAS possible to achieve what your trying that games like City of Heros, World of Warcraft, Star Wars Galaxies, would not have already achieved it?

You not trying to do something new, your trying to compound effects from several game. Compromises WILL be made. Now I can help you through getting Multiplayer code working in DB/P using the internal commands at a more than reasonable speed for your needs, but you are going to have to be willing to ACTUALLY start something.

While Benjamin might have an interesting plug-in, the fact is that honestly he knows just as little about multiplayer coding as most other people around here. Yes he made a TCP Plug-in work, which while is impressive on it's own, doesn't mean he understand how to translate the technical data moving into a game universe.

It's like you can't expect one of the programmers of the Maya Render Pipeline to understand how to create an engine that rivals Doom3. The technical knowlage between the two is just vastly different.

Quite simply.. stop talking and open up DB/P.
You will never be able to understand quite a number of concepts without getting practical experience. Right now I just don't see any of that going on.

Megaton Cat
21
Years of Service
User Offline
Joined: 24th Aug 2003
Location: Toronto, Canada
Posted: 11th Jul 2005 05:10
Raven, since you're obviously one of Microsoft's leading network programmers, could you please use your contacts to hook me up in one of the departments? Please, my children, they need wine.

Jeku
Moderator
21
Years of Service
User Offline
Joined: 4th Jul 2003
Location: Vancouver, British Columbia, Canada
Posted: 11th Jul 2005 05:12
Quote: "San Andreas. No load screens. Bigger than Liberty City."


I think you're both missing Raven's point. Of course it's going to be streamed as it's an online game. Am I missing something here?

You can keep your head in the clouds if you'd like, but don't get miffed when somebody offers some criticism. And if you persist that your game is so unique and groundbreaking, busting all the rules, etc. just because you "believe" that it will, then expect to get some flack for it.

My "everyone else has one so why can't I?" blog: http://www.jeku.com/blog/
Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 11th Jul 2005 07:20
Quote: "the fact is that honestly he knows just as little about multiplayer coding as most other people around here"

True I'm not very experienced yet, but I know a fair bit more than the average person around here. What makes you think you know so much anyway? Have you ever had any actual experience using multiplayer in a project?


"Lets migrate like bricks" - Me
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 11th Jul 2005 08:35
Quote: "The US Playstation 2 version must work very differently to the UK Playstation 2 version because it takes a good 5minutes to load the game. Not quite as bad as the 10minute original, or in-game loading screens but you still have to sit there and wait for data to be processed."

Well, I've never heard about that. Here in the states, GTA3 had long load screens, but not even remotely that long. There was the primary load screen when you first fired up the game, and then semi-load screens when you travelled between the islands. GTA VC also had load screens, in the same fashion, but they weren't nearly as long. GTASA has one load screen, and that's it. You can travel from one edge of the state to the next without a single interuption in gameplay. And that game should probably be on the top ten largest games ever list, in terms of land mass anyway.

And no Raven, this isn't another "I'm making an MMORPG game" thread. As I've said countless times, this thread relates to the problems people face when attempting to create an MMO and it's an attempt to figure out methods of surpassing the limits presented by related technology in a cheap, effective way.

At the end of the day, this is a forum, not a chat room. In a chat room, you're subjected to reading everything that everyone has to say. On a forum, you have the option of selecting threads that suit your interests, and if that particular thread isn't interesting to you, you can always click on another one. The fact is, it appears to me at least that there are people who are reading this thread with a general interest. People who want to learn new things and see what others have to say about their concepts. To offer constructive criticism is one thing, but to sling insults is another. The entire foundation of this thread is that it's here for people to learn from, and while your first few posts offered thoughtful arguements that most would consider helpful, your last seems to be aimed strictly at insulting the people who are posting in this thread, and the people who are reading it as well. You're the type of person who won't believe something until it's in front of them. That's fine, and we understand that. So there's no need for you to further degrade the people who are making an actual attempt at something.

Last but not least, you continuously say "Stop talking and start coding." Well, what's the point in coding when you don't know what to code. I could sit down and pump out a silly multiplayer game overnight, as could many of the other people on this thread and in this forum. But that's simply not the point. I can't sit down and start writing code if I don't know what I'm trying to do... that would be pointless. I have an idea. Now I'm gathering input. When said input is collected, the code will be written. Then the methodology used to make an MMO will be displayed on this thread for all to see, and people can learn what's going on along the way.

No offense, but if you don't like the contents of the thread, go read another one.

- Matt

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
heartbone
22
Years of Service
User Offline
Joined: 9th Nov 2002
Location:
Posted: 12th Jul 2005 13:29
It's really hard to get two people together, let alone two hundred.
http://forum.thegamecreators.com/?m=forum_view&t=56960&b=1&p=0

We all crawled before running. You will learn a lot from a card game.

The media is simple. Take a couple of hours and scan a deck of cards. A tabletop could be designed even quicker. No need for any fancy graphics at first.

A networked card game has enough complexity to be an extremely challenging programming project. And the game would be used if completed.

Knowing how human nature is, there would be at least a half dozeen versions of the thing.

Peace, the anti-Bush.
Matt Rock
19
Years of Service
User Offline
Joined: 5th Mar 2005
Location: Binghamton NY USA
Posted: 14th Jul 2005 12:48
After a long-winded chat with a buddy from college about 3D space and the relative 4th dimension of said space, a conversation that had very little to do with this topic whatsoever, it came to mind that maybe in order to do this, we need to think about things that might not make sense in order to make it make sense. In high school we learned about some invention that the creator was making to suit another purpose entirely. It stopped making sense, the thing he was inventing, so he just followed the lead to see where his mind's eye would take him, and eventually he ended up making this thing that we all take for granted (I forgot who he was and what the object was, but the methodology stuck with me). Anyway...

What if each computer was a server for a small portion of 3D space, that being the space that the computer's user is passing through? If a tree falls in the woods, it doesn't *need* to make a sound, meaning that if no one is in a vicinity it doesn't need to be hosted... just present in numbers. Sorry, just more theoretical gibberish from me, hehe

- Matt

"Hell is an Irish Pub where it's St. Patrick's Day all of the time." ~ Christopher, *The Soprano's*
the_winch
21
Years of Service
User Offline
Joined: 1st Feb 2003
Location: Oxford, UK
Posted: 14th Jul 2005 13:00
Quote: "If a tree falls in the woods, it doesn't *need* to make a sound"


Yes but if a user walks through a wood and cuts down a tree does that tree need to be felled when the next player walks through?

Difficult to have persistant worlds when all the data is stored on random individuals computers.
Raven
19
Years of Service
User Offline
Joined: 23rd Mar 2005
Location: Hertfordshire, England
Posted: 14th Jul 2005 13:22
where the heck did you get that quote from Merro, I don't see it anywhere in the thread.

I don't understand the issue with using a Dedicated Server either.
I also don't understand a bloody work of what Matt just said, I'd put a Tenner on him being stoned or drunk.. or maybe both.

Quote: "True I'm not very experienced yet, but I know a fair bit more than the average person around here. What makes you think you know so much anyway? Have you ever had any actual experience using multiplayer in a project?"


As I said above, I'm sure you know more about the technical side of things that a lot of people around here. As far as the technical side of things I'm pretty ignorant to how it all works. I understand the end result, and the user-code... but in-between for actualy aquiring addresses, connections, transferring data. I've just never done it before so not a clue.

I do however know that since DB/E added Multiplayer commands I've been tinkering (which is just about 4years now). Learning how the packets work, what causes slow-downs (on my local connections). Differences between Server<->Client, and Peer-to-Peer Connections.

I've learn not only from my mistakes but those of friends who have also tried in DB/P. So at this point, yeah I'd say I know quite a bit about how it works and how to get the best speed out of your connections.

For example:
-- Make Host (4 Player)
<- Connect To Host
-> Send To Host Position (3 Float)
<- Get All Player Floats (1 Integer = Player, 3 Float = Position)
-- Repeat Until Exit

What is wrong with this picture? Your only sending 12byte Up and getting 64byte Down. Surely your connection can handle this, so why is it lagging?

Quick Answers:
a) Host <-> Client Are not Synced
b) Host being overloaded with Calls

I could go into more details to why and such, but it would defeat the learning process. My point is people don't think about things like 'Syncing' thier application, and when they do... they believe that setting Sync Rate 60 solves all of thier problems.

Timer-Based Loops are important in games, no matter what your writing. This extends to multiplayer games more so.

Remember 60 Syncs per Second = 0.7KB Up : 3.8KB Down
Instantly even that small download amount has ment you've caused all v34 Modems to die from the connection. Yet it is just such a small upload amount. Not to mention that connections are no Asyncronus, your either uploading or downloading. Doing both causes both to suffer speed loss. While your sending out and recieveing your data 60x per second, the Server itself is getting 240 data packets per second.

And as I said above, while it's downloading it can't upload without being Async. This is the major reason that Peer-to-Peer gaming is so much slower, because the calls are always happening relatively randomly as each computer syncs... so making sure ALL of your computers are syncing at the same time or rather within the data order is a huge task to try and achieve.

As I said there is quite a lot more to this that I don't feel like explaining here. But there are simply more perils of Multiplayer games than trying to get past the 255 Players Per Session Limit...

While yes Theoretically connections like my 1Mb:256Kb can achieve the necessary bandwidth, the fact is it is still limited by it's refresh speed. This will end up being around 80ms : 120ms, perhaps slightly better depending on the connection and countries. That's just not something you can really predict unfortunately.

Fact is that generally speaking my connection will be about to host games at 100ms. A more reasonable 3Mb : 1Mb that they have basically in every other reasonable broadband country in the world (sodding UK lack of Broadband technology despite where it was originally developed :shakes fist would be able to handle clients at something more reasonable around 8-10ms (like a 10/100Mb LAN Connection can).

I can see no doubt some users are going to bash me for my comments again, without contributing anything reasonable to the topic. But those who decide to read what I have wrote (and have done this stuff) will know that I'm not just spouting off crap.

I have done several physical stress tests to prove my figures with a number of people. I would be happy to put together a simple example of a Multiplayer DB/P Game using the built-in Commmands. The are quite simple once you understand the basics of Game Network Coding.

Benjamin
21
Years of Service
User Offline
Joined: 24th Nov 2002
Location: France
Posted: 15th Jul 2005 02:36
I do see sense in what you're saying Raven. A couple of questions however:

Quote: "What is wrong with this picture? Your only sending 12byte Up and getting 64byte Down. Surely your connection can handle this, so why is it lagging?"

What do you mean by lagging? Do you mean network lag or game lag? I have experienced the latter when using DBP's native commands. I was never sure why it lagged so much, seeing as I was only sending four 12 byte messages a second, altogether roughly 112 bytes a second that is.

I also don't know what you mean by synchronising. Do you mean having all players adjust to the maximum refresh rate needed not to slow down other players?


"Lets migrate like bricks" - Me

Login to post a reply

Server time is: 2024-11-15 15:44:13
Your offset time is: 2024-11-15 15:44:13