Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Eduarjr en 23 Diciembre 2016, 03:46 am



Título: Como mejorar esta función
Publicado por: Eduarjr en 23 Diciembre 2016, 03:46 am
Tengo un juego basado en agar.io y quiero mejorar está función de modo que el juego vaya más rapido , alguien que de verdad sepa puede hacerlo ?

 
Código
  1. function updateNodes(view, offset) {
  2.        timestamp = +new Date;
  3.        var code = Math.random();
  4.        ua = false;
  5.        var queueLength = view.getUint16(offset, true);
  6.        offset += 2;
  7.  
  8.        for (i = 0; i < queueLength; ++i) {
  9.            var killer = nodes[view.getUint32(offset, true)],
  10.                killedNode = nodes[view.getUint32(offset + 4, true)];
  11.            offset += 8;
  12.            if (killer && killedNode) {
  13.                killedNode.destroy();
  14.                killedNode.ox = killedNode.x;
  15.                killedNode.oy = killedNode.y;
  16.                killedNode.oSize = killedNode.size;
  17.                killedNode.nx = killer.x;
  18.                killedNode.ny = killer.y;
  19.                killedNode.nSize = killedNode.size;
  20.                killedNode.updateTime = timestamp;
  21.            }
  22.        }
  23.  
  24.        for (var i = 0;;) {
  25.            var nodeid = view.getUint32(offset, true);
  26.            offset += 4;
  27.            if (0 == nodeid) break;
  28.            ++i;
  29.  
  30.            var size, posY, posX = view.getInt32(offset, true);
  31.            offset += 4;
  32.            posY = view.getInt32(offset, true);
  33.            offset += 4;
  34.            size = view.getInt16(offset, true);
  35.            offset += 2;
  36.  
  37.            for (var r = view.getUint8(offset++), g = view.getUint8(offset++), b = view.getUint8(offset++),
  38.                    color = (r << 16 | g << 8 | b).toString(16); 6 > color.length;) color = "0" + color;
  39.            var colorstr = "#" + color,
  40.                flags = view.getUint8(offset++),
  41.                flagVirus = !!(flags & 0x01),
  42.                flagEjected = !!(flags & 0x20),
  43.                flagAgitated = !!(flags & 0x10),
  44.                _skin = "";
  45.  
  46.            flags & 2 && (offset += 4);
  47.  
  48.            if (flags & 4) {
  49.                for (;;) { // skin name
  50.                    t = view.getUint8(offset, true) & 0x7F;
  51.                    offset += 1;
  52.                    if (0 == t) break;
  53.                    _skin += String.fromCharCode(t);
  54.                }
  55.            }
  56.  
  57.            for (var char, name = "";;) { // nick name
  58.                char = view.getUint16(offset, true);
  59.                offset += 2;
  60.                if (0 == char) break;
  61.                name += String.fromCharCode(char);
  62.            }
  63.  
  64.            var node = null;
  65.            if (nodes.hasOwnProperty(nodeid)) {
  66.                node = nodes[nodeid];
  67.                node.updatePos();
  68.                node.ox = node.x;
  69.                node.oy = node.y;
  70.                node.oSize = node.size;
  71.                node.color = colorstr;
  72.            } else {
  73.                node = new Cell(nodeid, posX, posY, size, colorstr, name, _skin);
  74.                nodelist.push(node);
  75.                nodes[nodeid] = node;
  76.                node.ka = posX;
  77.                node.la = posY;
  78.            }
  79.            node.isVirus = flagVirus;
  80.            node.isEjected = flagEjected;
  81.            node.isAgitated = flagAgitated;
  82.            node.nx = posX;
  83.            node.ny = posY;
  84.            node.setSize(size);
  85.            node.updateCode = code;
  86.            node.updateTime = timestamp;
  87.            node.flag = flags;
  88.            name && node.setName(name);
  89.            if (-1 != nodesOnScreen.indexOf(nodeid) && -1 == playerCells.indexOf(node)) {
  90.                document.getElementById("overlays").style.display = "none";
  91.                playerCells.push(node);
  92.                if (1 == playerCells.length) {
  93.                    nodeX = node.x;
  94.                    nodeY = node.y;
  95.                }
  96.            }
  97.        }
  98.        queueLength = view.getUint32(offset, true);
  99.        offset += 4;
  100.        for (i = 0; i < queueLength; i++) {
  101.            var nodeId = view.getUint32(offset, true);
  102.            offset += 4;
  103.            node = nodes[nodeId];
  104.            null != node && node.destroy();
  105.        }
  106.        ua && 0 == playerCells.length && showOverlays(false)
  107.    }
[/i]

ARCHIVO COMPLETO POR SI DESEAS VERLO: http://ogar.pw/assets/js/main_out.js