This posting is to discuss some of the problems with the mission-joining phase of playing OFP multiplayer. (I'm not going to discuss Join-In-Progress, because I think it's been discussed to death, except to state that I think it remains essential for online play, irrespective of how hard it might be to implement.)
Up until the beta 1.26 release, I hadn't bothered playing OFP multiplayer at all, because I found it simply too bugridden to be worth the effort. However I must commend BIS for their work with the Beta releases, they've made huge improvements to the network code and the engine is in place to make online play a lot of fun.
Except, that is, for the problems associated with playing on public servers. Here's a typical session of playing OFP online:
1. Find a server to play on. That's hard to begin with here in NZ, because only NZ & Australian servers are typically going to give good enough ping for online play (and I'm on DSL - I pity someone trying to play on a modem). But that's only half the problem - the other half is finding a server with people on.
(an aside: I use All-Seeing-Eye. Gamespy Arcade is an evil blot on the software landscape, and should be taken out and shot. BIS and/or Codemasters (whoever is responsible for choosing to use GSA) should be ashamed of themselves.)
Here's the problem: finding a server that's in the "waiting for players" state is a nice idea in principle. In reality it doesn't happen. Most servers with people on will be "waiting for players" for typically 45 seconds in a 30 min gamecycle. Whenever I do a refresh of ASE I see dozens of dedicated servers "waiting for players" with NOBODY on them, and no more than 20 servers with people actually playing. (For example right now ASE reports 7 1.27 servers "in game", and 49 servers "waiting for players", all with nobody on them).
So the reality is that in finding a server, we're extremely unlikely to find one waiting for players. So we find a low-ping server, join it, and wait.
2. So the in-progress game ends, and we can play, right? Wrong. First we have to endure the "join the mission" debacle. Here's what typically happens:
- you join a server with 5 people on, playing coop. While you're waiting, 3 other people also join the server to wait.
- the mission ends, and the server cycles to the next one, which as luck would have it is an 8-player deathmatch, and there are now 9 people on the server.
- unfortunately there's no admin on the server. everyone wants to play, so someone suggests "#vote missions"
- which is an extremely bad idea. the players select a mission (after a minute or two arguing over which one to play and whether to turn cadet on or off) only to find themselves at the "wait for server" screen, because one of the players hasn't voted for a mission or doesn't know how to or is AFK or doesn't speak very good english and doesn't know what to do. So all the players who want to play can't.
- The usual course of events at this point is that someone suggests kicking the non-responsive players (which seems to need everyone else to "#vote kick ..." and is therefore only occasionally effective).
- eventually everyone realises that the only solution is for everyone to disconnect from the server and reconnect.
- upon reconnecting about half the time you'll still be stuck at the "wait for server" screen. If you're lucky, the server will be back at the mission join screen with the same 8-player deathmatch, only there's now 12 players on the server.
- sometimes someone will suggest "#vote mission" (without the s) instead, which will cause the server to randomly pick a mission. Let's say for argument'e sake this works (i've seen it happen once) and you now get a 12-player deathmatch mission on a different island.
- not a complete success - everyone would much rather play co-op, or CTF, but it's better than nothing. Only now there's 13 players on the server (people tend to notice servers with 8 or more players on and join them).
- there's a mad dash for the 12 player slots, which involves clicking your name on one side of the screen, dragging it (laggy GUI interface and all) over to the other side of the screen to one of the "not assigned" slots, and releasing the mouse button, only to find that someone else grabbed the same player slot before you, so your name reappears on the left hand list. so you repeat. It's taken me up to 4 tries at times to find an empty slot.
- eventually all the slots get filled, everyone presses their start button and we're ready to go - aren't we? Nope, that 13th player is still there in the "unassigned players" list, so the mission won't start. If you're _lucky_, they'll just be AFK so you won't have to listen to them whine about not being allowed in the mission.
- so once again everyone tries to vote the player off, but just as you're doing that you see the "Player X is connecting..." message. That pesky 13th player disconnects, but even though their name hasn't appeared on the list yet, the server won't start the mission while another player is connected.
- this cycle (convincing people to leave or voting them off while others keep joining because they see the server has lots of people on AND is still in the "waiting for players" state) can go for several rounds before you actually get into the next phase - choosing a role.
- and here (choosing whether you want to be a soldier or a machinegunner etc) all the mouse-drag GUI problems occur. But there's another catch. Whoever had their name at the top of the side list in the previous screen now becomes a "pseudo-admin". They're now the only ones with a start button, and when they press start, the mission loads. If they know about this quirk, they'll wait for everyone to pick a role. However many people don't. They're unware of their status (and probably didn't really pay attention to the fact that they were at the top of the list in the previous screen), so they see that start button and figure they have to press it to indicate they're ready. And if you're on the same side but hadn't picked a role yet (because of all the GUI problems mentioned earlier) you find that you get to spend the next 10-30 minutes at the "game-in-progress" screen.
- if you're lucky, you actually get to load the mission, but if you're on a modem (or didn't have the mission and have to wait for it to download) you can't afford to take any time reading the briefing, because you'll be the last one there while everyone else waits. If you're lucky, they'll be patient and not "#vote kick" you. But don't spend time reading that briefing if you don't want to get abused.
- and finally, if you're very lucky, you might actually get to play some OFP. Just pray that some idiot on your side doesn't run you over with an APC in the first 30 seconds so you spend the next 30mins as a seagull.
Typical elapsed time for the above drama? I've seen it take up to half an hour just to get into a mission, which some server admin has set to run for only 10 minutes (presumably because people don't like waiting). The server not starting because there are too many players connected for the current mission is the biggest problem.
Okay, so those are the problems. Do I have solutions? Well kind of. I think it's blindingly obvious to everyone (except BIS) that join-in-progress would fix this. But as I said, I'm not going to discuss that.
Firstly, the drag-your-name user interface has got to go. Online, it's a major pain in the <expletive>. At the first "join mission" screen where your options are typically "join east" or "join west" there should just be big clickable "join east" or "join west" buttons that just put you in the next available slot. And if you click too slow, you miss out on playing.
Which comes to my second suggestion. I think this is obvious. The server shouldn't wait for extra players when all available slots are full AND everyone in those slots has said "I'm ready"
The next problem is the "secret side admin", where clicking start at that second screen has much greater importance than many people realise, leaving some out of the game. I think to solve all this waiting for players (and having to "#vote kick" people who are AFK or just too stupid to figure out what to do) is to simply have a standard timeout (say 60 seconds) at each screen where the players must choose something (eg which side to join, or which role to take). If you don't do the right thing in 60 seconds, you miss out. And at the second screen, where players are choosing a role (soldier/officer etc) there should be a second timeout, of about 5 seconds, after everyone in the game has chosen a role. If no-one changes their mind in that 5 seconds (and the other 60sec timeout doesn't finish first), the game should just start. if someone changes their mind about what to play as (and again, we need to lose the name-dragging and just have nice big buttons to click on) the 5 second timeout starts again. That way there's a chance to change your mind, but if everyone picks a role the game just starts and there's no need for a secret pseudo admin to click start.
Finally, the mission briefing. What would be really great (but I admit probably a lot harder to implement) would be for the game client to download the briefing first and display that while the rest of the mission loads. Even if it was just the briefing text without the map, at least you could read that and get a feel for it. And again, stick a default timeout on it so that if someone suddenly goes AFK while the mission was loading, they don't hold up everyone else.
(BTW, while we're talking briefings, this is completely unrelated, but would it be possible to add functionality so that the different sides in MP could get different briefings? It would make recon actually useful in a team vs team co-op game. My brother and I would _really_ like this for the short missions we're working on)
These are just some ideas for solving the problems I see with online multiplay. They may not be the best ideas, but we need systems that don't require an admin on public servers, and Do The Right Thing in the case of stupid (or Away From Keyboard - AFK) players. Another suggestion regarding the side pseudo admins - enabling/disabling the AI should be a server config setting, either as a server global setting or preferably as a per-mission setting in the config file.
Right, that's my lot for now, I should be in bed but I was unable to sleep with this churning in my head. BIS, I hope you'll think seriously about these problems, it makes online play a real pain in the rear.
One final question: BIS, have you guys actually tried to play OFP online? When I compare some of your comments with my actual experiences trying to enjoy this game, I really wonder. I dare (no, I double-dare!) the entire programming team to spend the next week playing a few games of OFP online, on public servers where you don't know the other players, and there's no admin logged in, and then tell me you don't think Join-In-Progress is important (let alone everything else I've discussed above).
I hope you'll consider these issues carefully.