On Week 28

edited 2011 Jul 25 in Developers
skyjake:

During the past week there was substantial progress with getting multiplayer up and running again. I fixed several issues related to automatic map cycling, mobjs on moving planes, pausing the game, and various glitches in how the game world is presented to the user on clientside.

Testing multiplayer games in real-world conditions was also started. We had four dedicated servers running continuously for several days and played a number of test games on them. This proved to be quite informative: a number of issues was uncovered. While many had little impact on gameplay, there were a couple of more serious concerns that need to be addressed before public testing is started. I want gameplay to be relatively solid before a large number of people start using it.

The most serious issue we discovered was related to teleports: it was quite easy for a player to get stuck in the teleport. This coupled with the lack of a suicide command meant that the only way out was for the client to disconnect. Another set of issues was related to the effects of latency. For instance, it seems necessary for clients to compensate for the movement of certain fast objects like Imp fireballs, so that the player has a fair chance to dodge them.

My plan is to next implement a latency simulator to allow me to work around the latency related issues locally. This is now much easier than before as we removed the use of UDP in addition to TCP. Then I'll continue to tackle the list of known issues. If I manage to fix enough of the issues this week, we may be able to begin public testing with Friday's build.

danij:

This week I find myself struggling to write this update, not because of lack of progress but because there really isn't much to be said. I've been fixing up regressions in the ringzero branch in preparation for merging with the master.

I did manage to fix a couple of bugs present in the master branch in the process; 1) console font dimensions are not recalculated after an engine reset (during which fonts are reloaded), 2) console command "listmaterials" failed to interpret arguments of the form listmaterials <namespace-name> <search-term> correctly.

In addition to the regression fixes I implemented texture specification pruning in the texture manager (not that I expect these to become a concern memory wise) and moved fonts into the refresh module (previously fonts were owned by the GL subsystem).

My next immediate job to is to implement clearing of non-system fonts during a game change...

Comments

  • > player should respawn only after a short delay, not immediately after death
    This is going to be unpopular. Needs to be configurable, as vanilla allows to respawn immediately.
  • We aren't planning to implement a respawn wait queue/timer if that is what you are thinking (at least not at this stage). A delay of only a few milliseconds is all that is needed (or until player releases their attack buttons), so they don't respawn the very instant their health is less than one percent.

    A respawn wait queue for game type configuration is a nice idea though.
  • The way it's setup in vanilla Doom, Doom2 is when after you die it goes into an axis cam view following the player that killed you from your corpse.
    It will continue in this view until you press spacebar(or whatever key you binded) to respawn.
    There is no auto/timed respawn or immediate respawn in vanilla Doom and never has been.
    You should respawn only after you press your key to respawn, and only then, typically the spacebar.
  • Ack sorry about the double post, didn't see an edit.. :\
    Anyway this the above is ideal for deathmatch modes. There shouldn't be a spawn protection.
    Telefragging is part of game play as well.

    But when it comes to co-op play I could see a spawn protection useful!
  • > I want gameplay to be relatively solid before a large number of people start using it.

    Yes I'm sure I speak for everyone when I say I'd prefer a semi-working build with minor glitches rather than a lot of game-breaking bugs.

    > For instance, it seems necessary for clients to compensate for the movement of certain fast objects like Imp fireballs, so that the player has a fair chance to dodge them.

    Yarrr, I predict n00bs using speed haxx! An efficient way of server-client-server sync verification may be needed eventually.



    I assume there will eventually be a suicide command right? There can be much fun involved with binding a key to /die command... and usefulness of course, falling from a super-high cliff or being stuck in a lava/acid pit waiting slowly to die and respawn.
  • Regarding the suicide command... How's everybody feeling about it? DaniJ was pointing out to me the potential for misuse, but if the suicide command works so that it has a countdown of, say, 15 seconds during which the player is paralyzed, might that alleviate the risk of cheating?
  • I'd say it would help, but in terms of deathmatch I think the suicide'r should lose a frag as well..
  • Suicide wait and frag penalty could be server game state properties, like gravity or team(colour)-rules (actually, is this synced to client? I don't recall seeing it anywhere) and let server admins decide. Later we can incorporate it into the game rules module.

    I'm sure we can allow the player the ability to look around despite being paralysed from the waist down (or neck, if you want to lower the psprite too) :)
  • How could suicide be used for cheating exactly? I always noticed that suicide in online deathmatch would add a death as well as -1 a frag. Customizable server variables seems like a good idea, I remember some Q3 servers would not only -3 frags but also remove the 1 second respawn invulnerable shield. Heh.
  • Oh without a doubt all such commands should be server side. Clients shouldn't have such control or there will be problems, cheating being one of them.
    I'd say all the client should be able to do is simply play the game, well other than things like server recon pass.
    Even if it's to suicide or maybe a future feature like calling a vote for the next map cycle setup etc, the server should only allow these options to the client. ~ and for the most part, a lot of these options should be disabled buy default.
    Because if the client side is put in the hands of a couple 12 year olds etc, some how, some way, someone will try to flood the server etc. ~ I suppose this could even go for text flooding. Unless there's a cap on that?
  • I don't believe there is any flooding protection on either server or client at present, though I may be wrong.
  • skyjake wrote:
    If I manage to fix enough of the issues this week, we may be able to begin public testing with Friday's build
    Friday's build is a no-go for this. The worst issues we discovered are yet to be addressed. Also, the Windows build failed...
    any flooding protection
    Currently there is none, but it would certainly be useful.
  • Oh wow I didn't realize we might see a public test build within a month. Take your time guys.
  • I'm not a multi player, but anytime someone says something hopeful, I take it with a proverbial grain of salt and try not to get my hopes up because often times in life, things don't go as planned, at least not when you expect them to. I'm not surprised. Why should anyone be? That's not directed at anyone here. I'm just being a realist.
  • Of course heh..Its just the way things usually go. ;)
Sign In or Register to comment.