Tweak nexuiz for highest perfomance over VNC?

Tips on how to tweak Nexuiz for the best performance

Moderators: Nexuiz Moderators, Moderators


  • Im experimenting with a new Anticheat solution (to prevent cheaters on nexuiz), and that is to run both the game server and client on the server, and then letting players connect with VNC (like tightVNC http://www.tightvnc.com)to the clients.

    The reason I selected nexiuz as game, is that it is free and opensource, and probably I will need to tweak in a way to remove the whole menu and instead hard coding server, binds, name and such in the game. (And then allowing this to be changed in the VNC instead).

    This removes all ability to cheat, since the ground of all cheating is that you cannot trust the client. By only allowing the client to know and change data the player is supposed to see with their own eyes, any cheats residing on client will not be able to modify any data. The only thing any cheats can do is the same as the player is able to do with their own hands and eyes.

    But now to the core topic:
    How do I tweak nexuiz for best perfomance over VNC?

    I know that setting 640x480 will tweak a lot, same with 16bit color instead of 32bit.
    Also I will be running the DSN version or the other nexuiz-remix version for netbooks, to reduce the number of colors, and thus gaining higher performance over VNC.

    Just come with any tips to get best performance over VNC.
    It should not really affect gameplay so much.
    If the image quality gets low dosen't matter.
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm


  • Eh... so... how many cheaters have you actually encountered in Nexuiz then?
    Possibly not the worst mapper in the world.

    A blog of random pish:
    http://xeno.planetnexuiz.com/blog/?author=5
    User avatar
    Sepelio
    Forum addon
     
    Posts: 1101
    Joined: Tue Jun 27, 2006 7:57 pm
    Location: Scotland


  • I really don't know, but Im think of at least attempting to make up a really secure gaming platform. That will be as secure that it could be used in real contests for money.
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm


  • I'm fairly sure the game is set to have some form of cheat detection. I know it can already register the location of hits and then produce a graph to allow it to be analysed to look for aimbotters etc.

    As far as I'm aware proper wallhacks are also impossible.
    Possibly not the worst mapper in the world.

    A blog of random pish:
    http://xeno.planetnexuiz.com/blog/?author=5
    User avatar
    Sepelio
    Forum addon
     
    Posts: 1101
    Joined: Tue Jun 27, 2006 7:57 pm
    Location: Scotland


  • Yes, but Im think of preventing the cheats in the first place instead of detecting them.

    Now back to topic: Give me idéas of increasing performance for running nexuiz over VNC.

    I know reducing colors and resolution will increase performance, since the image that needs to be sent over network is smaller in size. Also reducing number of colors in a specific area will allow better JPEG compression.
    I will already running the netbook version or the nexuiz remix version.

    But any tweaks that will reduce the size on the image that needs to be sent over VNC?
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm



  • I don't think it's practical to run nexuiz over VNC, especially if you are not connecting to the machine running the client by a FAT pipe.

    I sometimes run OpenGL apps remotely using the X11 protocol and we have Gigabit ethernet here at university. I am connected to the machine running the app just by a single Gigabit switch and you can totally forget it for interactive gameplay.

    And in this case the client actually sends OpenGL commands over the net to the machine showing the graphics, so it's not raw image data being transferred.

    Personally i think this is an unpractical idea due to the added latency and the bandwidth constraints required for a playable game. In 10 to 20 years: maybe...
    He can talk the talk, but can he caulk the caulk?
    User avatar
    lda17h
    Alien
     
    Posts: 221
    Joined: Tue Jun 16, 2009 1:04 pm
    Location: Germany


  • well you might be able to use what you're saying for scorched earth or maybe commander keen LOL
    RoyalAbidi
    Newbie
     
    Posts: 6
    Joined: Wed Dec 23, 2009 3:28 am


  • I have heard that FreeNX or the NX Server from Nomachine (http://www.nomachine.com) gives you far better performance than normal VNC. Haven't tested it yet, but you might want to give this a shot. I think it does some sort of compression on the fly to limit the needed bandwidth.

    But anyway I wonder how you intend to deal with the lag? A fast-paced game like Nexuiz relies on having low lag and people try to avoid even wireless LAN because of the lag it produces... with a remote desktop solution you would have even more lag.

    Maybe the approach from the guys that did Quake Live might be suitable for Nexuiz (however they did that).
    <Community>: Why was the name "Nexuiz" licensed to IllFonic in a way that allows IllFonic to use the name without any suffix or subtitle for a commercial console game?
    <Lee Vermeulen>:
    <Community>: http://www.xonotic.org
    User avatar
    halogene
    Alien trapper
     
    Posts: 465
    Joined: Fri Jun 20, 2008 8:31 am
    Location: http://www.xonotic.org


  • Thank you for the replys.

    I should look into these settings and see what I can do.

    I should check out if there is a possibly to start nexuiz and bypass menu at the same time.
    By only allowing certain keypresses to go to server (like A-Z and 0-9), and by remapping keys in the VNC client, and then having a static bind on the server side, I can prevent that nexuiz are exited, since keys like ESC and such will be ignored by VNC server.
    The server must have "kiosk like" security since due to this solution

    For example, if user configures, in a specific modified VNC client:
    "CTRL-> a"
    "SPACE -> b"
    "MOUSE1 -> c"

    and such. When user presses CTRL, a "a" keypress will go to the VNC server which on the static server-side bind would mean for example "Attack".

    Instead the VNC server process will kill nexuiz and do a RCON kick on the user when the VNC client disconnects.

    Because of this, the VNC/remote control solution needs to be fully OpenSource. So FreeNX/Nomachine _cannot_ be used, since these are closed-source freeware.


    ---------------------------------------

    About quake live, it uses some sort of plugin, (a game client) which runs in browser. So its basically the same thing as running a standalone client. Which have the exact same vulnerables as real clients for cheating.
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm


  • Here is a video of my first attempt of running Damn Small Nexuiz over VNC:

    http://www.youtube.com/watch?v=BSXfUHGGb2U
    (Watch in HQ, if it doesn't work in normal)

    Any suggestions? Seems like the shadows are causing too many colors and making dark sections in 8bit mode, causing it to lag.

    Is there something like mat_fullbright?

    And what to do about the mouse? If I keep the mouse in the center, the player is still. But if I move the player will start rotating very quickly even when Im keeping it still outside center.

    Its like the mouse "accelerates" when I approach the edge. I would wish it to not accelerate.

    If it isn't possible to do "normal" mouse in VNC/nexuiz,
    is it possible to configure Nexuiz's mouse handling to handle relative positions instead? I wish it so center->Left edge of VNC window is 180 degrees CCW, center->Right edgle of VNC window is 180 degrees CW, and left edge->right edge is 360 degrees around.

    Center->top edge should then be 90 degrees upward and center->down edge should be 90 degrees downward.
    Then players has to be used to run the mouse like it was a joystick. Theres nothing to do. But its better than current.

    Any idéas on how to configure mouse in nexuiz to behave like this I have described? In other words, I would want movement based on relative mouse position instead of absolute.
    About the degrees I can configure with sensitivity.
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm


  • I still think you are wasting your time :D
    He can talk the talk, but can he caulk the caulk?
    User avatar
    lda17h
    Alien
     
    Posts: 221
    Joined: Tue Jun 16, 2009 1:04 pm
    Location: Germany


  • lda17h: How are Im wasting my time?
    Don't you think its good to try find a way to defeat cheaters completely?

    Btw, fixed the mouse, I lowered mouse sensitivity a little.

    Got better performance with r_fullbright 1, g_fullbrightplayers 1, g_fullbrightitems 1.

    Im thinking of new ideas of increasing performance, for example, let the game client generate a 2D SVG vector graphic image of the 3D view and send it over network, let the client render the vector grahics image.

    Then screen resolution of the client doesn't matter, the SVG image can be "streched" in any way.

    I think server rendering will be a good idea to prevent cheaters, but the image needs to be sent in a effective way over the network to the client.

    And a note on some cvars: Even if the "g_fullbright 1" cvar is a cheat classified cvar, its not actually unfair advantage, if I decide to continue with this of running a game over VNC, since then every player will be have to use the same settings, eg with g_fullbright 1, and thus, no unfair advantages, everyone have the same advantage. Those cvars needs to be used to gain performance over a system like VNC.
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm


  • Well, to repeat myself: I do not think it is possible (with todays technology) to make the remote graphics "fast" enough to give players an experience comparable to just locally running nexuiz.. ("fast" here refers to both the bandwidth required for streaming the gfx in an acceptable quality and also to latency). I just try to save you from spending (wasting) lots of time on this project. But hey, i'll shut up now. Go ahead! :)
    He can talk the talk, but can he caulk the caulk?
    User avatar
    lda17h
    Alien
     
    Posts: 221
    Joined: Tue Jun 16, 2009 1:04 pm
    Location: Germany


  • lda17h: In this, Im more think of sacrifying as much quality as possible, but still keep it playable, to be able to defeat cheaters.

    It will not be anywhere near of "locally playing nexuiz".

    Im also looking at other games if this could be accomplished with other FPS:es and such.
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm


  • Use gl_picmip to have less detailed textures which can be compressed easier.

    Not that it matters, because with this approach you do not have any prediction on the client side (e.g. antilag, movement prediction etc.). This means that your solution is ONLY feasible in a LAN where delays are not noticable. Your solution over the internet will fail badly due to lag. Transmission time jitter or packetloss will play havoc with what the player experiences/sees on his screen anyway...
    IRC quote:
    [kojn] I've been coming a bit more recently
    [kojn] she took it the dirty way
    GreEn`mArine
    Forum addon
     
    Posts: 1509
    Joined: Tue Feb 28, 2006 9:33 pm
    Location: Germany


  • About gl_picmip: Does this apply to Damn Small Nexuiz?
    Since the textures with r_fullbright 1 is single color, it is no problem there.
    I need other tweaks and such.

    I also found a commercial solution that is based on my idéa:
    http://www.onlive.com/
    Apparently, its only requires 1,5 MBPS to send a image in standard quality and 5 MBPS to send a image in HD quality:
    http://www.onlive.com/service/faq.html
    Its a game streaming service. Its only available i the UK.


    So there would be good to implement this in Open Source, just to prevent cheaters.
    Im very interesting in this, since this can mean a dead end for cheating in online games.
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm


  • The problem with this idea is ping. There are connections fast enough to send/receive live video at rather high qualities, but there will always be ping (unless you find a way of sending information faster than light :D). As Green Marine said, there will not be any clientside prediction in this system which would be very annoying and noticeable even on very fast connections: input lag caused by input hardware (dunno, 5ms?), your input is sent to the server (network lag, average ping at let's say 40ms) + input received at server, server renders and compresses image (tiny delay, say 15ms) + image sent back to client (bit longer, maybe 60 ms) + image uncompressed on client (10 ms?) + image rendered to a screen with a response time of 4ms
    Total: 134ms delay for any input action until it is shown on the screen. At this point it'd be extremely unplayable, mostly because of aiming which people would probably find ridiculously hard and annoying already at a ~40ms delay (?). Also, there is no antilag which means that when you shoot a target which is in your crosshair locally, it'll take 45ms before the input is received at the server which should be well enough for the enemy to move away from the crosshair in many situations. In LAN with really short latencies this might work, but I doubt it will for fast paced games like Nexuiz over the Interwebz.

    Edit: Idea on how to overcome bandwidth problems: How about you only send some very basic stuff of the scene and still let the client render details such as textures? This means moving further away from your idea though, and just closer to whatever we already have right now :P
    Sure makes eg. aimbots easier again, but they should be just as possible to construct based on the live video feed (scan for patterns looking like players, or if fbskins are on, scan for the same color as players have and aim towards that). Same thing goes for triggerbots, and probably strafebots too, which are about all the worst cheats you can create for Nexuiz (wallhacks aren't very effective due to serverside culling).

    Edit2: Just had a great idea, what if you would send a full 360 degree texture of the view from the player position, and let the client look around in this sphere freely. Hud and weapons would still need to be drawn locally, but there is no way to cheat based on info you get from there. This way there would be no mouse lag, and you could create an antilag system by sending the coordinates of the point at which the player clicks and have the server check if it hit a player or not. Movement could *maybe* feel responsive if the client would apply distortion effects/interpolate between the frames in some clever manner based on which movement keys are pressed, until it receives a new image from the server. Heck, the server could maybe even predict where the player will be after [insert ping here] ms, and send this picture instead. This solution would sure be fun to see in action, but probably requires huge amounts of bandwidth, processing power and coding effort :D
    Image
    User avatar
    FruitieX
    Keyboard killer
     
    Posts: 588
    Joined: Mon Nov 13, 2006 4:47 pm
    Location: Finland


  • FruitieX:
    Yes, thats a good idéa, but a problem is that this sphere needs to be transferred over network, even if the player does not look at that direction.

    But you gave me a pretty good idéa: Im thinking of a tile system of small tiles, and when you turn or move in a specific direction, the tiles will move in opposite direction and new tiles will be transferred over network.

    A problem is that if a player moves infront of you without you looking around or you move anything, you will not see the player.

    ------------

    But Fruitex: What do you think of sending a SVG picture over the network?
    How well can a SVG be compressed compared to a JPEG? Im think that a SVG can be compressed far more than a JPEG, especially if you use 8 bit colors, eg 256 colors.

    Then players can play in fullscreen without the view becoming blurry.

    ------------

    And do you have any idea on how OnLive system is built? Its the exactly what Im trying to create.
    sebastian
    Newbie
     
    Posts: 9
    Joined: Thu Dec 24, 2009 2:53 pm


  • sebastian wrote:But Fruitex: What do you think of sending a SVG picture over the network?
    How well can a SVG be compressed compared to a JPEG? Im think that a SVG can be compressed far more than a JPEG, especially if you use 8 bit colors, eg 256 colors.


    Which layer of the system do you plan on doing the compression on? I don't see how this can be done fast in realtime.
    User avatar
    [-z-]
    Site Admin and Nexuiz Ninja
     
    Posts: 1794
    Joined: Mon Nov 13, 2006 12:20 am
    Location: Florida


  • [-z-] wrote:
    sebastian wrote:But Fruitex: What do you think of sending a SVG picture over the network?
    How well can a SVG be compressed compared to a JPEG? Im think that a SVG can be compressed far more than a JPEG, especially if you use 8 bit colors, eg 256 colors.


    Which layer of the system do you plan on doing the compression on? I don't see how this can be done fast in realtime.


    +1, Just for fun, try using a tool which "converts" a bitmap into an svg. It'll look a bit like a drawing and it takes perhaps 10 seconds to process at decent qualities.


    So yeah, possibly a thing of the future, but I'd still prefer playing with working client side prediction enabled.
    Image
    User avatar
    FruitieX
    Keyboard killer
     
    Posts: 588
    Joined: Mon Nov 13, 2006 4:47 pm
    Location: Finland


  • I must confess i have not read the whole thread.. but the load from sending 640x800 pixels over a network must be pretty intense. Esp as generally EACH pixel on the screen can change. VNC for desktop usage has the advantage that usually only small parts of the screen does change and only that change needs to be transmitted to the client. Also the "input/output" lag should be pretty annoying. There are some people that can notice the lag one can get from triple buffered v-sync and thats maybe up to 10ms. Trying to play over VNC must introduce a much higher lag and make it quite difficult to aim.
    The idea sounds interesting though.. but i'd already miss stuff like simple customisation (i do not play with the usual WASD movement keys..). Also i do not use VNC very often.. will it be possible to use the 640x800 window as fullscreen? Otherwise it could be way to small on some screens/resolutions.
    Z already pointed you to some low-tech configs (besides trying the "low" config from the settings menu).
    User avatar
    esteel
    Site admin and forum addon
     
    Posts: 3924
    Joined: Wed Mar 01, 2006 8:27 am


  • I've held back on commenting on this thread for a while as I didn't want to be too rude, but it seems you're still going at this after a lot of advice. I'll begin with explaining why cheating in Nexuiz is almost impossible... For one, wallhacks are nearly useless as the server does entity culling and only sends visible entities to the client. Aimbots and other such hacks (Trigger bots, etc) are #1 easy to spot and #2 very hard to program for this game, especially since the client side game code is sent to the player by the server. Speedhacks are out of the question, as well. Although our lead developer managed to make a nasty strafebot several months ago which calculated the perfect angles to strafe at, that is useless now as the game doesn't allow that to work anymore. Basically, I have seen a total of 3 cheaters in Nexuiz ever (Excluding the devs, we're allowed to :P).... 2 of them entirely sucked (To the point that a good player could still own him), and the other disappeared very quickly a long time ago. Well, even then, no one but a dev has made any affective cheats... And none of the devs plan on releasing their work, I assure you.

    Basically, you're wasting your time with VNC :P What I instead recommend would be distributing an engine which you modify to have a certain unique aspect about it without distributing the source for that change.. This way, they would HAVE to use your engine because they have no idea what you changed. An example of this would be changing the engine protocol slightly so that only your engine can connect to your server, and other engines which don't have this exact same protocol would not be able to connect......... The means, someone trying to compile their own (e.g. for a hack) would be SOL.

    However, with that said, I still don't think it's necessary AT ALL to do this.... not unless you're doing something professionally, where there is money involved (e.g. a prize in a contest).

    edit: typo
    Do it yourself, or stop complaining.
    (Developer Tracker) | (Nexuiz Roadmap)
    User avatar
    Samual
    Keyboard killer
     
    Posts: 508
    Joined: Mon May 25, 2009 7:22 pm
    Location: Pittsburgh, PA


  • There are cheats in nexuiz, that can give you an advantage.
    AND YOU DON"T HAVE TO HAVE THE CHEAT COMMAND ON.
    Including wall look through, network cheats, etc AND THEY WORK ON EVERY SERVER.
    And these cheats will work through nexuiz on VNC as well.
    cld71
    Newbie
     
    Posts: 7
    Joined: Mon Oct 27, 2008 4:02 pm


  • CHEAT COMMAND ON. IS LOCAL GAME ONLY!!1ONE

    Yes there is ways to cheat

    no wall hack don't work on common servers.

    net code cheats are mostly aim bots.

    no none works, obviously , over vnc.
    HOF:
    <Diablo> the nex is a "game modification"
    <Diablo> quake1 never had a weapon like that.
    <Vordreller> there was no need for anything over 4GB untill Vista came along
    <Samua>]Idea: Fix it? :D
    <Samua>Lies, that only applies to other people.
    User avatar
    tZork
    tZite Admin
     
    Posts: 1337
    Joined: Tue Feb 28, 2006 6:16 pm
    Location: Halfway to somwhere else


  • tZork wrote:CHEAT COMMAND ON. IS LOCAL GAME ONLY!!1ONE


    Wrong, cheat command can be turned on on any server.

    tZork wrote:Yes there is ways to cheat


    Yes there is/are.

    tZork wrote:no wall hack don't work on common servers.


    Wrong, wall hacks do work on every server with or without cheat on, I have used some commands to look through walls

    tZork wrote:net code cheats are mostly aim bots.


    Wrong, there are network commands to control the rx/tx communications, including the timing and lose of pl.

    tZork wrote:no none works, obviously , over vnc.


    Wrong all of them work over vnc, because the commands are in bedded in to nexuiz/Darkplaces.
    cld71
    Newbie
     
    Posts: 7
    Joined: Mon Oct 27, 2008 4:02 pm


  • don't be stupid. the cvar enabling built in cheats are sv_cheats. how would turning cheats on your local server enable it on a remote one?

    Wall hakks lets you see tough walls, yes. but they wont show you where players and items are since the engine simply does not send this info when the entity in question is obscured. on insanely open maps it will still work but well.. on that kinda map you proly know where ppl are anyway.

    a vnc based server for anticheat purpose would /should not allow access to console and sutch, thus making any command based cheat void. and since the server sends you a rendered image and not render info you cant hakk much more info outa it.

    as for the networking stuff, link/s to these or real info on them would be nice so they can be countered. if you don't have that its just speculation on your part (and you should make that clear).
    HOF:
    <Diablo> the nex is a "game modification"
    <Diablo> quake1 never had a weapon like that.
    <Vordreller> there was no need for anything over 4GB untill Vista came along
    <Samua>]Idea: Fix it? :D
    <Samua>Lies, that only applies to other people.
    User avatar
    tZork
    tZite Admin
     
    Posts: 1337
    Joined: Tue Feb 28, 2006 6:16 pm
    Location: Halfway to somwhere else


  • tZork wrote:don't be stupid. the cvar enabling built in cheats are sv_cheats. how would turning cheats on your local server enable it on a remote one?


    Your being stupid. You said, "CHEAT COMMAND ON. IS LOCAL GAME ONLY!!1ONE", this is wrong because if I have the master password for the server I can get in by using master and change the server from sv_cheat 0, to sv_cheat 1. Granted I either have to wait for the game to be over or restarting the map, but no turning cheat command on isn't for local game only. I have seen cheat turned on for galt and hoctf servers.

    tZork wrote:Wall hakks lets you see tough walls, yes. but they wont show you where players and items are since the engine simply does not send this info when the entity in question is obscured. on insanely open maps it will still work but well.. on that kinda map you proly know where ppl are anyway.


    Yes, I know what wall hacks are. And your wrong there are commands that will let you wall hack aka seeing other players. I am not talking about using the map. The map is useless in a game, I am talking about see the other user through the wall just like you see them in the game and not just your own team, you see everything and anything.

    tZork wrote:a vnc based server for anticheat purpose would /should not allow access to console and sutch, thus making any command based cheat void. and since the server sends you a rendered image and not render info you cant hakk much more info outa it.


    Your talking about "SERVER", I am not talking about server, I am talking about client side.

    tZork wrote:as for the networking stuff, link/s to these or real info on them would be nice so they can be countered. if you don't have that its just speculation on your part (and you should make that clear).


    Don't want to list the commands here, then everyone would be using these commands to "cheat".

    Maybe I will make a video using the "cheat" commands, but I wouldn't list the commands out.
    cld71
    Newbie
     
    Posts: 7
    Joined: Mon Oct 27, 2008 4:02 pm


  • Haha, epic fail in some places :D

    Let's just make some things clear for you: tZork was talking about a simple, regular player, and still client side. Typing in the console without rcon or vdo sv_cheat 1 will make no effect on your current game. Asap you start a server, cheat's will be enabled on your server. Sure, if you have master access, and you know the master password, you can change a quite few things... or not, because commands that a master can do are restricted. I'm not sure, but on DCC a master can't change the cvar sv_cheats from 0 to 1.

    I am talking about see the other user through the wall just like you see them in the game and not just your own team, you see everything and anything.


    One thing that comes to my mind: it might be the mapper's fault, but you might have tried it on a broken map, that didn't have the visibility stage compiled. Map compiling takes 3 stages: meta, vis, light. Vis creates the visibility portals, the information what _should be_ blocked. This fails sometimes real hard, but well done, it's realy effective, especially because as tZork noted DP simply refuses to send any packet to you about te player, entity, rocket models etc. that you can't see. Therefor wallhacks won't work.

    Also, someone got the paranoia pills again. "I won't reveal the super-duper secret omfg wallhack atom cheatcodes I just revealed, because every n00b will use it!!!oneoneeleven111"
    Code: Select all
    r_showtris 1
    r_showdisabledepthtest 1


    To make it clear again: these are developer tools, to see what rendering the GPU does actually. On poorly vis'd maps, you'll see the whole map in wireframes, and all the entities and the players. That's why you still can use it, because the server thinks you could see it, so sends the packet. But this refers for mainly third party maps. Try this on final_rage, and you won't see anything beneficial. Not to mention, this makes your FPS literally to drop to it's tierce.
    "One should strive to achieve; not sit in bitter regret."
    WE ARE NEXUIZ.
    Image
    Image
    User avatar
    C.Brutail
    Laidback mapper
     
    Posts: 2357
    Joined: Tue Feb 28, 2006 7:26 pm
    Location: Ironforge



Return to Nexuiz - Performance Tips




Information
  • Who is online
  • Users browsing this forum: No registered users and 1 guest