[MISC] CraftProxy 0.2.0 - Reduce bandwidth use by caching chunk data [1.6]

Discussion in 'Archived: Plugin Releases' started by Raphfrk, May 1, 2011.

  1. Offline

    Raphfrk

    CraftProxy - Reduce bandwidth use by caching chunk data
    Version: 0.2.0

    Description

    This plugin and local client allows chunk data to be cached locally by players. This reduces the bandwidth required for hosting the server. It also helps users who are on slower connections.

    I am not sure what the status of this system is. It doesn't count as a plugin, since it has 2 parts.

    Even when running the plugin, players who don't use the client proxy can still connect. However, they will use the full bandwidth.

    The system can reduce bandwidth by 70-90% (after the 2nd login).

    Setup

    Server

    Add the plugin file to the plugins folder

    Client

    Start minecraft client and login
    Double click on the client jar file
    Enter login details
    Enter the server location/port in the GUI
    Press start on the GUI
    Connect to localhost on the minecraft client

    Stable Builds

    None yet

    Dev Builds

    Warning: These may not be stable

    Client
    Plugin

    Had it get the compress/decompression gain backwards.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 14, 2016
    Jushy, Martin1704, Nathan C and 24 others like this.
  2. Offline

    Raphfrk

    These guys have figured out the protocol.

    It probably wouldn't be that difficult to support multiple versions (esp 1.5 and 1.6). However, I am trying not to make the software to complex, as that leads to more bugs.

    The change to the login packet makes it harder to automatically detect what the version number is.
     
    mgmchenry likes this.
  3. Offline

    Takel

    KISS principle. I completely agree with your sentiments in sticking to supporting one version at a time since this is really dipping your fingers into a rather sensitive part of the game.

    I'm honestly extremely grateful for this plug-in because it allows my connection to support vastly more people than I'd otherwise hoped on my own machine rather than look into a hosted solution which isn't ideal for my tinkering obsession. Once I figure out how best to incorporate and configure your Server Port plug in, I'm going to be sitting pretty.
     
  4. Offline

    Kyrin

    I'm using MultiVerse, 1.6.4, but that isn't set in stone, if there are compatibility issues, I can adjust, I just have a lot different worlds that we use on my server.
     
  5. Offline

    Raphfrk

    Are you using the latest version of Bukkit? I will see if I can replicate the issue this evening.
     
  6. Offline

    mgmchenry

    Thank you very much for all the detail in your response!

    I suspected as much. Excellent!

    I see. I was about to migrate it to 1.5 anyway. But I'll be running on 1.5 for a long time yet. I don't think you need to worry about the added complication of supporting multiple protocols (though that sounds like fun software engineering to me) as long as you can just run an old build. Github isn't going anywhere, so I'm happy with that.

    All in all, great work. Thank you very much!

    Necessitated by SMP Nether. I'm glad it's finally in there.

    For my China users with 300ms ping times, there will always be latency. But that doesn't explain why a person can right click on a chest and get no response, walk across a field and be attacked by several mobs that can not be damaged, sit for a minute admiring the sun coming up, suddenly see an inventory screen pop up with the contents of the chest that is now half a mile away, then take all the damage from the mobs he passed and suddenly die.

    These things would happen one day and then not the next. We blame the great Firewall of China. The problems are erratic and I can't be sure what the underlying cause is..

    One of my China users is an American-born English-speaking programmer, but has not been able to give me any useful feedback on what is happening.

    I suspect that Minecraft is delaying processing of some packets until others are completed or given up on - possibly delivery of chunks that could not be cached. I would still see updates from lagged players moving around basically normally. I can't be sure whether they were getting my position updates because my friend was too busy being pissed off at the software to help me troubleshoot it. Craftproxy could be an instant win for us. A silver bullet, if you will.

    But if it isn't an easy fix, it gives me something I can hack into easily and create log files to track down the actual shape of the problem.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 14, 2016
  7. Offline

    Kyrin

    I'm using RB#803, and v96 of the proxy as a plugin, I assume my clients are using the latest, but I will double check with them later today and get back to you with results...

    UPDATE: Appears to be working.
     
  8. Offline

    mgmchenry

    That was some fun reading! Thanks!
     
  9. Offline

    Meiun

    as i said, i have the problem with or without the proxy handling authentication.

    i want either the server, servers or proxy to handle authentication. i dont want cracked clients joining.
     
  10. Offline

    Raphfrk

    If you are using serverport, then the proxy must handle authentication, since the proxy can't connect to the servers if they are in online mode.

    If you are using 1 server, then leave the proxy with auth_off and then set the server to online mode.
     
  11. Offline

    Pim1234

    well, this works fine with mineshafter :)
     
  12. Offline

    den

    Gravel falling onto other gravel blocks that are also falling causes a bad packet error.
     
  13. Offline

    ledhead900

    Why does notch try to everything himself - I mean we got hardworking devs here that figure this stuff out before he trys to do damn thing about it, he goes and shoves a buffer in a buffer is not needed that much he only makes latency worse, what he needes is client side chaching like this does and no buffer issues you have an optional buffer if u need it but "not required".

    not that only that I heard reports that he lied about fence fix and he put that in the changelog just for kick this was taked from a his restricted irc apprently dinnerbone overheard it if we could confirm this that would good im so sick of notch freaking flabbing about things that are never working or tested. I swear is "IRC Testers was a bump post"
     
  14. Offline

    Raphfrk

    Is this with 1.5 or the 1.6 version?
     
  15. Offline

    den

    1.6
     
  16. Offline

    Raphfrk

    That could be a bukkit/minecraft server issue :). It probably means that I have messed up the new protocol.

    What is the best way to trigger it? If I build a column of sand 3-4 blocks high and destroy the bottom one?
     
  17. Offline

    ledhead900

    @Raph and den
    I think its a safe bet to just forget about 1.6 for a little bit longer Notch may yet adjust more things early next week.
    Bukkit Devs also think its a good idea according there Home page.
     
  18. Offline

    den

    Stack a 5-6 high pillar of gravel and knock out the bottom one.
     
  19. Offline

    Raphfrk

    This should be fixed now.
     
  20. Offline

    sfxworks

    I'm sorry I don't understand the description very well.

    Do the players need a client side file as well or is this all server side?
     
  21. Offline

    Raphfrk

    It is the same file for both players and server.

    It acts as a plugin when placed in the plugins directory and brings up a GUI when doubled clicked by the user.
     
  22. Offline

    Kimundi

    I made a diagram that shows how the Proxy works, feel free to include it in the OP:
    [​IMG]
     
  23. Offline

    TruffleDucks

    I still don't get this after reading it countless times
     
  24. Offline

    den

    Get what? The plugin?

    Say you load into a server. You're in the spawn point upon loading in. You run off in some direction for quite a ways and build a house. As you're running you are downloading the chunk data from the server on-demand. Now lets say you die and have to run back to your house, you appear in the spawn but with this plugin your game does not have to re-download any of the chunks you already visited on your journey unless they changed.

    On a server with plenty of CPU power but a lack of bandwidth, this is the difference between a normal game experience and the entire server population screaming "LAAAAG" in chat.
     
    thepackett likes this.
  25. Offline

    Raphfrk

    Thanks.
     
  26. Offline

    sfxworks

    So you run the server and have the jar in the plugin's folder? or run the jar as an executable and then run the server? or run the jar as the server?.................

    And for users
    Do they run the jar? or do they run the jar and then the minecraft client??
     
  27. Offline

    Raphfrk

    You can just place it in the plugins folder.

    They run the jar and the minecraft client.
     
  28. Offline

    TruffleDucks

    Ohh... I do hear a lot of people yelling that, including me :). How do I install this? Do I just shove that nasty plugin into my folder?
     
  29. Offline

    thepackett

    after staying on for a while (using 1.5 version... i think...) it disconnects me saying
    "internal exception: Java.IOException: Bad packet id 116"
    It won't let me connect again using craftproxy giving the same error over and over again
    any clue how to fix this?

    EDIT: here's my config file if it helps

     
  30. Offline

    sfxworks

    Ok. I put the jar file in the plugins folder. Ran the bukkit serer. My server runs on 1337. I just opened the port 1440 and changed the config file to use that instead of port 20000. What do my players use to connect? They just tried to type in the information (im assuming localhost doesnt matter because its a remote host and I would only use localhost if they were on my network) and it just says stopping server when they click start.

    Code:
    clientversion=
    bridge_connection=false
    reconnectfile=
    monitor=
    seed=
    cache_limit=
    default_server=1337
    quiet=false
    debug=false
    listen_hostname_port=1440
    password=
    auth_off=true
    log=
    banned=
    info=false
    dimension=
    staticlocalhost=false
    log_time_off=true
    disable_flood=false
    
     
  31. Offline

    TruffleDucks

    Can you do a video tutorial on this? My server port is on 25564 with localhost 25564, but it still can't connect.
     

Share This Page