2017-06-26, 14:54 *
Welcome, Guest. Please login or register.

Login with username, password and session length
Pages: 1 2 [3]
Author Topic: Quake Champions  (Read 2204 times)
0 Members and 1 Guest are viewing this topic.

Beta Tester
Spider Mastermind
Posts: 456

Do These Fangs Make My Butt Look Big?

« Reply #40 on: 2017-06-16, 19:26 »

I've been playing since the second (?) week of the closed beta. I think it is generally a decent game. The aesthetics are mostly on point, and I love all of the callbacks to Quake 1 over, say, Quake 2 or even Quake 3. I actually wish they'd go further in that regard and supplant the machine guns entirely with nailguns. The less hit scan weapons the better as far as I'm concerned. Slipgate - Tongue

The idea of playing different "champions" never bothered me as a concept, since Generations is already sort of that. I don't think Champions pulls it off very well though. The vast discrepancies between health and armor hinder more than they help. Certain characters have such infinitely superior physics that it's almost laughable, and almost all of the active powers feel watered down to pointlessness. I almost feel as if they should have made each champion more unique for team based game modes, while stripping the powers away entirely for things like DM and Duel.

All of that being said, I haven't played in a few weeks. Not because I feel as if it's a bad game, because it's not. It's not all that different than Quake 3, which was vastly different than Quake 2, which was vastly different than Quake 1. No, it's because the game takes FOREVER to actually play. You wait through menu after menu after menu, after loading screen after loading screen after loading screen. Not to mention the lengthy wait just to find a match and queue up. There also doesn't seem to be any way to directly duel people on my friends list. I need to be able to start the game and get in a few quick matches with minimal effort. As it is, I spend more time staring out loading screens than actually playing.

Then once you get into a match? Prepare for lag! It will say that your ping is great, but it's quite clearly a lie. Not only will you see opponents bounce around and phase through corners, but well-aimed shots will simply pass right through them. This is on top of the already infuriating delay that so many of the weapons have. It often times feels like a fast-paced game, but once the shooting starts it becomes so imprecise that it's hard to stay enthusiastic. They need to get their netcode straightened out pronto... like yesterday! Without a smooth online experience this game is nothing, regardless of whatever else they do.

Edit: Apparently there are Private Matches now? Maybe I'll take another look this weekend, especially since Blazkowicz is in now. Though it never really seemed in doubt that BJ and Doom would be added eventually, given that both series have current incarnations to promote. Now we just need Commander Keen and Dangerous Dave as champions, along with some love for RAGE. Slipgate - Tongue
« Last Edit: 2017-06-16, 19:40 by ~Va^^pyrA~ » Logged
Bird of Fire

Team Member
Elite (7.5k+)
Posts: 8320

« Reply #41 on: 2017-06-16, 21:20 »

That's the one thing I don't get is why the netcode is behaving badly.  Quake 3 has absolutely fantastic netcode.  I was able to play Quake 3 at the end of my dialup days when Quake 2 was not even allowing me to move due to my seriously crappy connection at the time.  It's sounding to me like they've ditched every single optimization inherent in Q3 and are just trying to rely on bandwidth to try to make up for it.

Some things I've learn about network optimization while working on Gen:

Some things can be run parallel on server and client.  Math is math, and as long as you have a place to start and run identical math then you can make some very complex stuff happen.  Example:  Arena BFG.  All of the projectile physics are simulated in parallel.  The BFG blast is triggered by a single event which contains an origin point vector (3 floats), integer (8 bit) that indicates which client owns the projectile, and a seed integer value (16 bit I think) to generate the random pseudo-random explosion pattern.  That's the ONLY network data sent to spawn the explosion.  If a BFG particle hits a player on the server the server sends an impact event to the client pointing out which particle number got hit, spawns an explosion at that point, and the client stops drawing that particle number.  It's extremely efficient.  I could blow up 50 Arena BFG projectiles and it would take up no more network data than 50 machinegun impacts despite rendering over 10,000 BFG particles, and each BFG particle would only send data if it hit something and exploded.  So how does this relate to a modern game?  Physics is physics.  If a crate gets knocked by an impact then all the client would need to know is enough information to start the object moving.  Until it is acted upon again by some other physics object the math can be extrapolated on the client.  If there's concerns about synchronization, then the server could send periodic updates on objects.  With an Arena shooter though... why would this even be needed?  Unless you're going to allow the player to break the scenery with weapons fire how much physics do you need?

Selective entity updating:  Was there a change to the entity that the client needs to know about?  If not, let it keep doing what it's doing client-side.  Don't send data if nothing changed.  A missile flying in a straight line just needs to tell the client "I've spawned here flying this fast" or "I hit something" or "I've timed out and got removed".  The server doesn't need to update the entity data every frame to the client.

Variable precision:  Is a float needed when an int will do?  Does this data need to be a 16-bit int or will 8 bits do?

Selective data structure updating:  Do I really need to send the ENTIRE data structure, or just what's changed?  If a rocket is spawned do I need to send every possible part of the data structure that an entity can have, or just the origin, the time it spawned, the fact that it's a rocket, who owns it, and its velocity (direction is derived from this vector) since that's all someone really needs to draw a rocket in flight?

Server framerate:  How often does the server need to update a client on what's going on in the world?  If there's 250 entities on a map, and I update it 60 times a second to 5 clients, that's a maximum theoretical of 75,000 entries being sent by the server.  If I update 100 times a second   125,000.  If I only need to update it 20 times a second that's 25,000.  Now, throw in optimizations.  Say only 5 entities need constant updating - players.  Now add in 20 entities - gunshots and rockets.  Run the server at 20 FPS.  That reduced the server overhead to a theoretical max of 2,000 updates in that second.  Say those 20 other entities don't need constant updating.  Say they were one-shot events.  That drops it to 600 updates: (5 players * 20 single events) + (5 players * 5 players * 20 snapshots ) = 600.  If we run at 60 FPS that would translate to 1600 since only the snapshot number in the second half of the equation would change.

That's not even adding in other optimizations such as area portals that exclude clients from receiving updates about events that they're not anywhere near.  With all the testing I've done in Gen, and what you guys have done, I've gotten a really good education on how to optimize stuff to not break network efficiency.  I can't think of any valid excuse for an arena shooter to have bad netcode.  I can think of plenty of bad ones - laziness, sloppy programming, incompetence, poorly integrated game logic - but no good ones.

I fly into the night, on wings of fire burning bright...

Star Citizen Referral Code: STAR-3R2G-JRKV
Pages: 1 2 [3]
Jump to: