¿Server lagoso pero no es problema de tu internet?
El problema es que lo que pones en el server no lo pueden correr tan bonito como tu lo corres en tu intel Xenon con tu tarjeta grafica FuerzaG xX9900xxE.
El tutorial explica que puedes hacer para que tus clientes pueden jugar en tu server tranquilamente tomando en cuenta los recursos que usas.
¿Que es un usuario? ¿De que esta hecho? ¿Se puede comer?
Spoiler
Para empezar. Tu no puedes decir que "El Server es para todos", Porque sencillamente nada en este mundo es de todos. Ni siquiera Dios.
Puedes hacer un estudio demográfico acerca de tus usuarios actuales y los usuarios que vas a tener en el futuro (potenciales).
-¿Quienes son?
-¿cuantos años tienen?
-¿que quieren?
-¿que les rompe las pelotas?
-¿de donde son?
-etc.
Hacer estos tipos de estudios es clave para anticiparse a las reacciones de los usuarios al implementar funciones, modos de juego o extra ítems.
Supongamos que ya sabemos como son nuestros usuarios pero nosotros debemos partir que los usuarios (como un todo de los usuarios de cs en el mundo):
-Son noobs.
-nunca han jugado cs en su vida y es su primera vez.
-tienen una Pentium 4 y juegan Cs con Ares, Messenger, el feisbuuk, Y escuchando videos de música. Todo al mismo tiempo y abiertos en el escritorio.
-usan tarjeta on board o simplemente no tienen tarjeta alguna.
-se quejan del interp y el fps pero no tienen idea de como funcionan o que es.
Así que tomando en cuenta todo esto, nosotros no les podemos decir a los usuarios que tienen que hacer para no estar chillando en el Server por el lag. Porque sencillamente no lo harán y secuencialmente dejaran el Server; Tenemos que hacerlo nosotros.
¿A que va esto? ¿Porque mi fabuloso Server Da lag si mi Internet es de 99999K?
Cuando uno carga previamente (precache) un recurso, este recurso se guarda directamente en la RAM.
Cuando entran usuarios con 256MB de RAM o un procesador de mas de 5 años, Estarán muy limitados al tener sus Cs con sus 999 fps y por esta razon, hay que saber que vas a poner antes que que se vayan tus players por poner algo que tu veas "bonito".
Hay 4 tipos de recursos principales que tus usuarios siempre descargan:
-Mapas (agregando los WADS y los Skyboxes). [.bsp .wad y .gfx]
-Modelos. [.mdl]
-Sonidos. [.wav .mp3]
-Sprites. [.spr]
Los modelos:
Spoiler
Que son?
Los modelos son archivos que se pueden usar en entidades del juego, como:
-los personajes del juego/mod.
-las armas del juego/mod.
-mueblería (props.) en mapas de alta calidad (un árbol, una maquina de café, un balde de basura con basura, etc.)
-NPCs (personajes no controlables/no jugables.)
-seudo sprites para mostrar en pantalla
-Entre otros.
Hay que tener en cuenta de que los modelos que no son generados por la compañía valve son llamados "skins". Estos skins generalmente son de mejor calidad. Pero pueden afectar el rendimiento del usuario por las limitaciones fisicas de su computador.
Todos estos modelos se ubican en la carpeta "models" y son de formato .mdl, pueden ser abiertos con Jed's model viewer (Link).
Para hacer Ediciones a los modelos necesitan ser descompilados, lo pueden descargar en la misma pagina.
Para nosotros (los admins), solo nos interesan 2 aspectos de un modelo.
Los polígonos.
Son los responsables de que los modelos se vean como se ven y no como una figura de tetris.
La cantidad de polígonos de un modelo default (Cs) tiene una máxima de 1600 polígonos.
La cantidad de polígonos de un modelo custom (skin) es determinada por el autor de tal skin.
(La máxima que he visto es de 45000 polígonos)
Al tener modelos muy detallados genera muchos bajones de fps, ya sea por la falta de una tarjeta de video que soporte tanto detalle o por un modelo mal hecho.
Algunos sugieren que se puede mejorar la situación si los usuarios juegan en modo Software.
Aunque modo software es no depender de las ventajas que da la tarjeta de video, es subjetivo decir si funciona o no, porque eso depende de como esta configurada la tarjeta de video y puede ser peor, Agregando que si los modelos están mediocremente hechos, los modelos se podrán ver de adentro hacia afuera lo que forzara al CPU a hacer un trabajo innecesario.
Hay métodos para reducir los polígonos por 1/2 o 1/3, pero el trabajo solo debe ser hecho por un modelador 3D.
Las texturas.
Piensen que las texturas es la pintura del modelo.
Son de formato .bmp y se pueden abrir con cualquier editor de imágenes.
Usando imágenes de 512 o 1024 píxeles dan como resultado modelos relucientes como es la demanda en estos dias.
Detalles en un modelo como este no son apropiados en tu Server (si lo fuese estarian jugando otra cosa como MW3), Pero no hay problema, hay una solución razonable.
Reduzcan las texturas. Serán los mismos modelos pero con un poco menos de definición, apto para los clientes que nunca podrán jugar MW3 en sus maquinas y con poco peso, para que los clientes no se demoren descargando eternamente.
Para reducir las texturas elijan un editor de imágenes que pueda cambiar la profundidad del color, yo recomiendo infranview (Link)
Una vez que hayan elegido su editor (cuidado, palabras tecnicas):
Quote:
-Reduzcan la imagen un 50% manteniendo su relación de aspecto (osease 50% horizontal y vertical). Y NO usen dimensiones que Uds. establezcan (por ejemplo una textura de 1024x128 lo conviertan en 300x300). Desalinearan las texturas y no se van a ver bien al copilarse de nuevo.
-Reduzcan la profundidad del color a 8BPP (256 colores) y asegúrense que usen del método de "dithering Floyd-Steinberg".
Si han seguido los pasos pueden tener algo como esto:
Horrible no? Intenta de nuevo.
Este es un ejemplo de como este modelo luce de la manera mas eficiente y el detalle (para mi) sigue siendo el mismo.
Y aquí están las comparaciones de peso.
Los sonidos.
Spoiler
Que son?
Los sonidos se usan para anunciar cualquier evento o estado de algo o alguien.
Los sonidos en si no causan lag, el que lo causa es que tipo de sonido y en cuanto tiempo. Uno desperdicia CPU del cliente forzando reproducir un sonido aunque no suene nada (claro, puede reproducir sonidos de 1 BIT que no suenen nada. Ahí no hay problema siempre y cuando no sea infinitamente) y si se llegan a reproducir entre 10 o mas sonidos a la vez, tendrá riesgos de kickeos de sobreflujo (overflows).
Sonidos para eventos cortos no deberían tener más de 100Kb en mi opinion. En el caso que sea un sonido parte del mapa y presente conflictos, puede considerar entre bajar la calidad de los sonidos o buscar un plugin que los reemplace, si quiere conservar los sonidos claro.
Los mapas.
Spoiler
Que son?
Los mapas son el lugar donde tu juegas.
Generalmente un admin revisa un mapa por su peso. De ahí uno puede establecer y decidir si valen la pena o no.
Pueden ver mapas con el BSPViewer (link) o crafty (link). Pero IMO es mejor probarlos en tu Server o tu Cs.
Los mapas para un mod especifico o hechos por comunidades,(Sinceramente, no he visto ningún mapa sobresaliente que haya salido de una comunidad) son horribles, sobre todo los de zp. Mapas mal completados, con entidades mal formadas o mal ubicadas dan inimaginables errores y bugs en el mapa, y por consiguiente, en los clientes lag.
Existe una manera de "diagnosticar" un mapa ademas de por su peso.
R_speeds.
Spoiler
R_speeds es la velocidad de renderizacion (Rendering speed). La velocidad en la que el motor dibuja los cuadros que ves en la pantalla. Se conforma de 2 partes:
- Wpoly Son todos los items del mapa como tal(las paredes, el piso, el cielo)
- Epoly son todas las entidades presentes en el mapa (los players, las armas, NO las entidades de un mapa, como una puerta o una ventana)
Abre tu mapa e ingresa en la consola "r_speeds 1".
Si estas en OpenGL, en a esquina superior derecha vas a ver una lista de 4 cuadros, como en la imagen:
Spoiler
60fps es el numero de cuadros que se dibujan en la pantalla por segundo. 0ms es el tiempo que requiere para completar cada ciclo (el tiempo que se demoro en dibujar tal cuadro) 112 wpoly es "un resultado del motor dividiendo las areas del mapa que requieren una textura en los poligonos basados en la escala de la textura para que se renderizen" (Agradezco si alguien da una explicacion mejor). Estos son los llamados r_speeds. Areas mas grandes en un mapa, mayor Wpoly. 0 Epoly es la cuenta de poligonos de las entidades, los .mdl que se ven en la pantalla.
En cambio si estas en modo software vas a ver esta otra imagen:
Spoiler
20.1ms: el tiempo que requiere para completar cada ciclo 205: el número total de superficies poligonales en vista. 180: el número de superficies poligonales en vista que son dibujados. (para los mappers, este es el que tiene que estar en el suelo). 155: total de poligonos visibles que no son dibujados. 0 surf: el numero de superficies dinamicamente iluminadas.
un mapa sin lag, debe tener alrededor de 300-400 Wpoly aunque altos Epoly tambien causan Lag, por ejemplo poniendo muchas entidades en un solo lado (Los Zm_. Si. Ustedes.) o todos los players en una misma area, asi que tambien es de importancia revisar los dos conceptos en un mapa.
Los sprites:
Spoiler
Que son?
Los sprites son imágenes .bmp o .gifs que son convertidos en formato .spr y se usan en efectos especiales, por ejemplo en pirotecnia.
Un sprite al igual que un sonido, no tienen problema a menos que tengan un gran tamaño o son muchos a la vez y en un solo lugar. Un ejemplo claro de esto es lanzando una SG.
Si es el caso de que "necesite" un efecto que involucre muchos sprites pero sin tener ese inconveniente, le recomiendo hacer un sprite secuencial con tal efecto. Quizás no solucione el problema por el peso y la duracion total del sprite, pero será 1 sprite a la vez, no 10 o 20. o si requiere uno pero que es muy pesado (ejemplo flame.spr de 256Kb) puede hacer varias cosas:
-reducir el tamaño del sprite y con el plugin, aumentar el display del sprite. (al revés es empeorando la cosa).
-cambiar el sprite.
TL;DR
Tú puedes arruinar la experiencia del usuario:
-Mostrando detalles innecesarios a un model. (CPU-RAM).
-Mostrando partes de un model que no deberían verse (CPU).
-Mostrando partes de un mapa que no deberían verse (CPU).
-Usando sonidos a cada rato por cualquier motivo (CPU-RAM).
-Obligar a escuchar canciones de por ejemplo, Wendy Sulca solo porque te gusta (RAM).
-Usar mapas mal diseñados o con muchos recursos innecesarios (RAM).
-Usar sprites para absolutamente cualquier evento (CPU).
-Usar sprites de gran tamaño para algo pequeño (RAM).
-Aplicar un sprite sobre otro sprite, sobre una secuencia de sprites (CPU).
-Mala aplicación de todos los recursos de arriba con tu 1337-C0D1G0 (CPU-RAM).
Pero eso se arregla:
-Haz que los modelos se vean decentemente bien, al menos reduciendo las texturas.
-Usa mapas buenos, o por lo menos, sin bugs.
-Si quiere un sonido de background en tu servidor, hágase un favor y busque verdaderos sonidos de fondo. No tu música preferida en mp3.
-Hay una línea muy ligera, entre efectos de ambiente y efectos especiales de una fiesta de cumpleaños de 5 años.
-Los sprites son como el maquillaje de una chica, algunos les gusta sin maquillaje, otros con moderación, pero a nadie le gusta que estén rellenos de maquillaje.
-Los códigos no son bocadillos, donde uno hace el bocadillo, se comen el bocadillo y ya no hay más bocadillo, una optimizacion no le vendria mal.
Terminando.
Nosotros vivimos en un mundo de perfeccionistas y gente incompleta, pensando que en como luce bien el nuevo Server es el 75% de todo tu trabajo. 5% es en lo que la gente piensa de ello y 20% es en las mejoras y demás. Se como una esponja; habrá grifos de limpias y puras recomendaciones y mejorías a tu servidor y habrá caños llenos de malas ideas y trolls. Absorbe lo que quieras, siempre hay espacio para mejorar.
Por ultimo yo estoy abierto a cambios, si alguno tiene dudas, mencionar inconsistencias en lo que escribí o quieren mas énfasis en alguno de los temas no tengan miedo al mencionarlo, ya comí.
Saludos.
muy interesante gracias, me sirvió mucho, no sabia por que algunas veces los servidores se veían como "cortados" o con bajos fps (ya sea zombie mod u otro mod con varios models), lo que me causó duda es como se podrían bajar la cantidad de polígonos de un model, ya que yo edito/convierto models con el milkshape, es muy complejo ? thanks :B
EDIT: acabo de reducir un v_ model de una m4a1 que pesaba 3 MB lo reducí a 1 MB solo con bajar el tamaño de las texturas (de 500xXXX a 200xXXX), insisto, me sirvió demaciado, pero me surgieron 2 dudas:
1) cual es el tamaño mínimo recomendado para reducir un BMP ?
2) por que al reducir el tamaño del model, evita que se bajen los fps al ver ese model ?
3) a que se debe ese error de que algunas veces, al guardar las imágenes y achicarlas (minimizar el tamaño) el model se ve completamente negro, aun que las imágenes estén bien con el nombre correcto y todo bien ? me paso eso repetidas veces con algunos models y con otros no :/
en general me dí cuenta también que el solo bajar el tamaño de las texturas te baja ya 1 MB en el model, es posible bajar aún mas ?
...lo que me causó duda es como se podrían bajar la cantidad de polígonos de un model, ya que yo edito/convierto models con el milkshape, es muy complejo ?
Hay una herramienta llamada "Direct x mesh tools" que (lo poco que lo usé) es reducir una cantidad de poligonos a un modelo o un sector del modelo, el problema es que tendria que moldear todo el modelo de nuevo, pero con menos poligonos. deberia ser facil si ya se sabe como esta el modelo formado.
Quote:
Originally Posted by xLeoNNN
1) cual es el tamaño mínimo recomendado para reducir un BMP ?
Dependiendo en donde se esta usando la textura, si se usa para efectos de transparencia o cromado lo recomendable seria en 64x64.
Quote:
Originally Posted by xLeoNNN
2) por que al reducir el tamaño del model, evita que se bajen los fps al ver ese model ?
cada vez que se muestra (render) un modelo a un cliente, se ocupa un poco de espacio en la memoria Ram. esto no es ningun problema a menos que su memoria fisica este saturada o utilize la memoria virtual del computador (de ahi estan las personas que les da lag en los server de 32 slots, por la cantidad de players que son mostrados).
Quote:
Originally Posted by xLeoNNN
3) a que se debe ese error de que algunas veces, al guardar las imágenes y achicarlas (minimizar el tamaño) el model se ve completamente negro, aun que las imágenes estén bien con el nombre correcto y todo bien ?
Algunos modelos (Generalmente, de source) tienen una textura (que tal textura es transparente y cromada) que se encarga en el brillo de modelo, el compilador no permite habilitarlos por defecto asi que tiene que habilitarlos en el model viewer.
Quote:
Originally Posted by xLeoNNN
en general me dí cuenta también que el solo bajar el tamaño de las texturas te baja ya 1 MB en el model, es posible bajar aún mas ?
Claro. pero agregando de que es un trabajo tedioso, puede incluso dañar el modelo. por eso es mas confiable en solo reducir las texturas o en los Skins de alta calidad, sus detalles.
Quote:
Originally Posted by AlgoChikitito
Simplemente , magnifico, gracias ;)
Quote:
Originally Posted by rak
Muy bueno!.. interesante para reducir peso en los models D:
gracias por la info nuevamente, es que me topé con que algunos models del mw2 o del CS:S ya convertidos para cs 1.6, hacía los mismos pasos y solo en algunos me resultaba, otros no. y como dije, lo que me causó curiosidad es que el zp 4.3 default no bajaba los fps ni nada, pero yo a mi zp no le tengo tantos temp entity, que al abusar de estos tengo entendido que también bajan los FPS, pero tenia una gran variedad de models (la mayoría mayor a 2 mb, incluso hasta 3,5) y al apuntar al piso, no pasaba nada, pero al apuntar a estos jugadores con esos models claramente bajaban los FPS y se veía como "cortada" la mira, no de corrido, y obvio que es incomodo para la jugabilidad.
ahora me daré la paja de editar todos los modelos de mis servidores para que no persista el problema de la baja de FPS, saludos y gracias (: