Notes |
|
(0002914)
|
TIHan
|
2012-03-27 03:12
|
|
This is not quite a trivial matter. In FMapInfoParser::ParseNextMap, the line that says "If we're in a multiplayer game, don't do the finale, just go back to the
// beginning." does not account for e3m8, as its nextmap is "endbunny" and not one of the "endgame"'s. Since it's "endbunny", it will start a sequence - which is something we do not want. We could mitigate the issue by telling the server to go to the beginning of episode 3 on "endbunny", but I'm not sure if we actually want to do that. This needs more discussion.
This issue does not occur when you have maps in rotation. |
|
|
|
> We could mitigate the issue by telling the server to go to the beginning of episode 3 on "endbunny", but I'm not sure if we actually want to do that.
Sounds alright to me. But there's also a separate issue.
> It *freezes* when you try to chat during the text/end screens. After trying to chat, you can't open the console/menu. All clients will also time out from the server during the screens. This also happens offline, but not in GZDoom 323. I could only reproduce this in Skulltag and ZDoom 1.22. |
|
|
(0002931)
|
TIHan
|
2012-03-27 20:40
|
|
> > It *freezes* when you try to chat during the text/end screens. After trying to chat, you can't open the console/menu. All clients will also time out from the server during the screens. This also happens offline, but not in GZDoom 323. I could only reproduce this in Skulltag and ZDoom 1.22.
I haven't looked into this too deeply, but I'm sure it has to do with what gamestate we are in. In this case, GS_FINALE.
There are loads of checks asking the client and server to do different things depending on what gamestate they are in, which the two most common ones are GS_LEVEL and GS_INTERMISSION.
I'm taking a guess here: Because the client and server are not in GS_LEVEL or GS_INTERMISSION, all communications between them get halted. Perhaps we could handle GS_FINALE in client/server - but that is more of a feature than a fix. |
|
|
|
I think the whole final should be skipped entirely in multiplayer. IMHO it's not worth to spent time trying to handle GS_FINALE online. |
|
|
|
I noticed that the clients aren't sent to the intermission screen in Ultimate Doom after completing an episode. |
|
|
(0002953)
|
TIHan
|
2012-03-28 05:57
|
|
|
|
|
That's certainly much better than freezing :). I'd say it would be nicer though if the intermission is displayed before e3m1 is loaded. IMHO it's pretty confusing to find yourself in e3m1 without any intermission. |
|
|
(0003100)
|
TIHan
|
2012-04-01 22:24
|
|
Unfortunately, getting intermissions to occur after the endgames are very difficult and would require nasty hacks. This is all thanks to how mapinfo and its parser works.
Torr mentioned we could have a "You Won" message after you defeated a boss fight and let the player know we are entering a new level. There is also an issue with this as well, as an endgame is treated as a nextmap and could easily be triggered when you hit the exit switch. |
|
|
|
In ZDaemon (1.08.08c), the players are sent directly to the intermission screen after killing the spider mastermind. After the intermission, the players are sent to E4M1. |
|
|
(0003103)
|
TIHan
|
2012-04-01 22:41
(edited on: 2012-04-02 04:10) |
|
> In ZDaemon (1.08.08c), the players are sent directly to the intermission screen after killing the spider mastermind. After the intermission, the players are sent to E4M1.
What happens if E4M1 doesn't exist for some reason?
Edit:
I'm putting this here, purely for documentation'http://pastebin.com/dMES4eV5 [^]' . This was a solution I had that determines which episode to go to after finishing a game. This actually makes it where you kill the mastermind you (edit):only go to E4M1 without an intermission. BUT, the problem is that in Doom 2, ST has custom episodes that go to the mortal conflict and invasion which make it so that when you finish doom 2, you start on the mortal conflict.... We surely do not want this.
Edit2:
The current way for the server admin to solve all of this is to make a maplist. Doesn't mean we shouldn't fix endbunny because it crashes the client.
|
|
|
|
> Doesn't mean we shouldn't fix endbunny because it crashes the client.
I agree that the crash / freeze caused by this on the clients definitely should be fixed somehow. |
|
|
(0003107)
|
TIHan
|
2012-04-01 22:52
|
|
> I agree that the crash / freeze caused by this on the clients definitely should be fixed somehow.
Then that changeset will absolutely fix that problem.
I say, go ahead and apply the fix for endbunny just so we will never crash the client for this reason. If the admin wants to go to E4M1 along with an intermission, he needs to make a maplist. |
|
|
(0003110)
|
TIHan
|
2012-04-02 04:30
|
|
I've made another crack at this.
'https://bitbucket.org/TIHan/tst/changeset/e40d4426271a [^]'
With this, any end game on a map will get its next map set to the one its currently on.
Now, don't freak out about this behavior as I have noticed something. If I set Doom 2's MAP01 nextlevel to be say "EndGame2", with the current implementation(without my changes) it will try to set map "e2m1" which doesn't exist, so the nextlevel will be MAP01 again.. So with the changeset, this will make the behavior consistent across any type of end game that could occur in any WAD. Does this make sense? |
|
|
|
|
|
|
After looking at the fix I realized that it still doesn't solve the problem with the intermission.
This should work better, although I'm not happy yet with how the next map is selected technically. |
|
|
(0012629)
|
unknownna
|
2015-06-10 09:30
(edited on: 2015-06-11 07:10) |
|
This seems to work very well for vanilla Doom. I tested it with 2 clients + 2 bots on a local server with an emulated ping of 201.
Edit:
Quote from Torr Samaho After looking at the fix I realized that it still doesn't solve the problem with the intermission.
I noticed that the intermission is skipped if a "changemap" map change is called, but this also happens in 2.0. And "nextmap" doesn't seem to work either in the build.
|
|
|
|
this pastebin contains the results of my tests of which map the "end" maps go to next:'http://pastebin.com/7r490h8p [^]'
ZandroDev1.4-EndGameFixTest does produce better results, however for example exiting hexen map40 will just go back to map40 again,
can i suggest it go back to map01 instead? or if hexdd is also loaded go to map41?
as this ticket is most likely to simply deal with the maps hanging and disconnecting players, if necessary i will make a new ticket for such suggestions |
|
|
|
|
|
|
|
|
|
|