¿Como acabar con el lag?


#1

Vengo a hablarles de todas las cosas muy especificas que pueden producir lag y a la vez es redundante en tu juego. Intentaré ser breve y distribuir los problemas en secciones para que sea cómodo para ti encontrar en lo que trabajas, ahora si proceso a mencionar:

En la construcción:

  1. Uso de cuerpos geométricos de Roblox (Cilindro, esfera y special mesh): las figuras geométricas de Roblox antes mencionadas + unions es algo malo para los juegos, ya que el cilindro y la esfera tienen cantidad alta de polígonos y al querer hacer detalles pequeños con eso es muy redundante e innecesario y si lo unes para forma un union mucho peor porque al calcular la unión de cuerpos que no tienen posición alineadas con los polígonos Roblox automáticamente crea aun más polígonos para hacer el union sin afectar la estructura, la solución sería intentar hacer modelos con partes y rampas o simplemente buscar un mesh con pocos polígonos, aun que también puedes aprender a usar blender, es útil para optimizar y hacer que quede en forma el modelo.

  2. Colisión de unions y meshparts: Aun que parezca broma la colisión de Roblox aun que no podamos verla consume de nuestra memoria ram y aveces puede ser en exceso (El jugador), la solución sería quitar la colisión de aquellos objetos por los cuales el jugador no tiene contacto porque no tiene alcance a ello y también puedes poner el CollisionFidelity a Box (Esto afecta al tipo de colisión pero es muy “rentable”).

  3. StreamingEnabled: Este no es un problema, más bien es un beneficio, StreamingEnabled es una propiedad del Workspace, un objeto que se encuentra en nuestro explorador, si activamos esta opción es muy útil para optimizar ya que el proceso del jugador será adaptado a las estadísticas tanto del propio jugador como el servidor (Básicamente modera el proceso físico), lo malo es que si vas a hacer un juego con StreamingEnabled debes considerar las condiciones de uso y reglas que requiere tus scripts para no fallar, visita este artículo: http://wiki.roblox.com/index.php?title=Network_streaming

  4. Transparencia: Esta es uno de los problemas más grandes de baja en FPS que cualquier jugador podría tener, Roblox para simular la transparencia lo que hace es hacer un doble proceso, con lo que se ve atrás + la capa de transparencia simulada según los colores de atrás y el objeto transparente, el problema no es 1 parte transparente en si, si no hacer un cúmulo de estos o usar muchas partículas con transparencia incluida (Ya sea por formato de imágen o por simplemente usar la propiedad de transparencia).

  5. Físicas, si eres constructor y quieres hacer un showcase con físicas (BodyForce, BodyGyro, etc) ten en cuenta que al no configurar el dueño de proceso de físicas puede pasarte que al acercarte con un part que tiene gravedad o se cae pueda sufrir un leve tirón y esto es inevitable sin usar código, lo mejor sería pedir ayuda a un programador y otro detalle a destacar es que esto no es índice de verdadero lag, es algo normal, así funciona Roblox.

  6. Uso de texturas: Las texturas en sí no son de consumir mucho del cliente (Pero si tardan en carga), el verdadero problema es cuando usas una textura para un mesh continuamente en forma de bucle y con varias capas o con un mesh con muchos polígonos, adaptar esta textura suele usar muchos pixeles transformados que luego el usuario debe procesar, también es recomendable no usar texturas con tamaño exagerado, algunos suben texturas con tamaño “x: 800, y: 1200” cuando en realidad solo es necesario una resolución de “x: 250, y: 350”, ya que Roblox no necesita tantos pixeles para adaptar una textura a una superficie pequeña/mediana, solo pon texturas con gran resolución si es necesario.

Programación:

  1. Freemodels/Modelos gratis: ¿Eres nuevo y practicas con freemodels? Pues déjame decirte que en general los freemodels están muy mal optimizados por lo que no es recomendable usarlos, además es común que usuarios tengan intención de meter scripts dañinos a tu juego dentro de esos modelos, recomiendo revisar dentro de los modelos si tiene algún script, o también puedes buscar en el explorador escribiendo “Script”.

  2. Eventos: El evento en sí varía mucho, según qué evento usemos varía mucho más la constancia de fuego que recibe nuestra función, hay eventos que no son para nada óptimos si pones grandes cantidades de código, como el RunService.RenderStepped ya que hace una cantidad colosal de llamadas a nuestra función y si esta función es grande puede afectar mucho al cliente tener que procesar eso a cada fracción de 1 segundo. Lo mejor es encontrar una forma de usar menos eventos constantes y reemplazarlos por otro tipo de funcionalidad o también puedes desconectar los eventos cuando no son necesarios.

  3. Transmisión: La comunicación entre cliente y servidor es un tema totalmente diferente, hay que ser realmente cuidadosos con el ancho de banda de Roblox porque es muy limitado, aquí un artículo al respecto: ¿Como optimizar la respuesta del servidor?
    En resumen dice que lo más recomendable es no hacer envío constante de información al servidor y que lo más optimo es enviar números como argumentos en vez de otros tipos de valores.

Hasta aquí llegan mis consejos, luego añadiré más.