Jump to content

Optimizar mapas y lag


Recommended Posts

Hice dos partes, una en servidor y otra en cliente para usar el engineSetModelLODDistance. Ahora bien, ¿alguna idea para poder optimizarlo aún más o mejorarlo?

Cliente:

addEventHandler ( "onClientResourceStart", resourceRoot, 
    function ( ) 
        local objetos = getElementsByType ( "object" ) 
        for i=1, #objetos do 
            local v = objetos[i] 
            local model = getElementModel(v) 
            engineSetModelLODDistance(model, 100)   -- Set maximum draw distance 
        end 
    end 
) 

Servidor:

local objetos = { } 
local mapas = { "barzumo.map", "ciudad.map", "concesabrina.map", "conce.map", "casastem.map", 
"ITV.map", "karts.map", "mapeozumo.map", "Prision.map", "Taller-LV.map", "Taller-MAACC.map", "ghetto.map" } 
  
addEventHandler ( "onResourceStart", resourceRoot, 
    function ( ) 
        for i=1, #mapas do 
            local v = mapas[i] 
            outputDebugString ( "Mapa: "..tostring ( v ).." cargado.", 3 ) 
            local map = xmlLoadFile ( "mapas/"..v ) 
            if map then 
                local children = xmlNodeGetChildren ( map ) 
                for i=1, #children do 
                    local value = children[i] 
                    if xmlNodeGetName ( value ) == "object" then 
                        table.insert ( objetos, { 
                            x = tonumber( xmlNodeGetAttribute( value, "posX" ) ), 
                            y = tonumber( xmlNodeGetAttribute( value, "posY" ) ), 
                            z = tonumber( xmlNodeGetAttribute( value, "posZ" ) ), 
                            rx = tonumber( xmlNodeGetAttribute( value, "rotX" ) ) or 0, 
                            ry = tonumber( xmlNodeGetAttribute( value, "rotY" ) ) or 0, 
                            rz = tonumber( xmlNodeGetAttribute( value, "rotZ" ) ) or 0, 
                            model = tonumber( xmlNodeGetAttribute( value, "model" ) ), 
                            interior = tonumber( xmlNodeGetAttribute( value, "interior" ) ) or 0, 
                            alpha = tonumber( xmlNodeGetAttribute( value, "alpha" ) ) or 255, 
                            scale = tonumber( xmlNodeGetAttribute( value, "scale" ) ) or 1, 
                            doublesided = xmlNodeGetAttribute( value, "doublesided" ) == "false" and 0 or 1, 
                            colision = xmlNodeGetAttribute( value, "collisions" ) == "false" and 0 or 1, 
                            dimension = tonumber( xmlNodeGetAttribute( value, "dimension" ) ) or 0, 
                        } 
                        ) 
                    else 
                        outputDebugString ( "Unsopported element: "..xmlNodeGetName ( value ), 2 ) 
                    end 
                end 
            end 
        end 
  
  
    for i=1, #objetos do 
        local v = objetos [i] 
        local x, y, z = v.x, v.y, v.z 
        local rotx, roty, rotz = v.rx, v.ry, v.rz 
        local model = v.model 
        local interior = v.interior 
        local alpha = v.alpha 
        local scale = v.scale 
        local doublesided = v.doublesided 
        local collisions = v.colision 
        local dimension = v.dimension 
        object = createObject ( model, x, y, z ) 
        if object then 
            setElementRotation ( object, rotx, roty, rotz ) 
            if doublesided == 1 then setElementDoubleSided ( object, true ) else setElementDoubleSided ( object, false ) end 
            if collisions == 1 then setElementCollisionsEnabled ( object, true ) else setElementCollisionsEnabled ( object, false ) end 
            setObjectScale ( object, scale ) 
            setElementAlpha ( object, alpha ) 
            setElementInterior ( object, interior ) 
            setElementDimension ( object, dimension ) 
        end 
    end 
        setFarClipDistance( 5000 ) 
        setOcclusionsEnabled ( false ) 
    end 
) 

Link to comment
El problema está en que cuando lo paso a cliente no carga nada, no crea ningún objeto. Según el outputDebugString sí que carga los mapas pero no crea absolutamente nada, ningún objeto.

¿Alguna solucion?... El código es el de arriba.

En el client side para que se pueda leer un archivo lo tiene que tener descargado el cliente, tuviste eso en cuenta?

Link to comment
Ahora veo un problema, pueden descargar los .map y quedarse con los mapeos, básicamente porque se añaden como file. ¿Algo que se pueda hacer al respecto? Y muchas gracias, ya está totalmente optimizado :)

Cargas los archivos desde el server-side (como lo estabas haciendo antes) y triggeas el createObject y sus funciones anidadas al cliente.

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...