Jump to content
ytinU

+Huesos=procesamiento+*?

Recommended Posts

Hola, tengo una serpiente y quiero hacerle un 'ragdoll' manual, tiene la animacion de sprintar, en cualquier momento aparecera una bota gigante que te pateara y quiero que se vea real como queda la serpiente estampada con otros colliders....

snake.pngsi le pongo 4 huesos, se ve muy robotico..

Pues obviamente le pondre más huesos porque así lograre el efecto que quiero, y pues mi duda es cuanto afecta el rendimiento de esto al saber que cada hueso tendrá un collider con rigidbody y bueno fuera que solo hubiera 1, pongamos unas 20 serpientes con 25 huesos(con Cllr y RGBD) moviendose a la vez....., a cierto.. el cuarto donde estan las serpientes hay objetos que se mueven si la bota o la serpient chocan con ellos, quizás si los colliders son más pequeños/grandes es menos el procesamiento?

Edited by ytinU

Share this post


Link to post
Share on other sites

Afecta y bastante, pero si el "core" de tu juego va precisamente de la serpiente, creo que puedes permitirte el lujo de ponerle como mínimo 15-20 joints de ragdoll...

Share this post


Link to post
Share on other sites

A vale.... sí, el juego trata principalmente de serpientes y por lo de minimo supongo que la bajada de FPS será minima, puede parecer una pregunta tonta pero nunca en mis juegos se movieron tantos colliders siempre un boxcollider para mi player y otros más para la IA.

Share this post


Link to post
Share on other sites

La cantidad de colliders influlle en los frames por segundo, pero no demasiado, hay cosas que influllen mas....

El sistema de fisicas de unity es bastante robusto

Porejemplo estoy haciendo un proyecto de shooter de naves, tengo una isla creada proceduralmente con plains (no terrains) la cual se va generando mientras avanzas en tiempo real, son 11x11 planos de 20x20 "casillas" cada uno con meshcollider (que ademas los planos los puedo modificar tambien en tiempo real) y ademas siempre hay arboles (tambien mesh, no unityTrees)

Entre 4000 y 5000 arboles simultaneos, cada uno con un box collider (200 poligonos por arbol)

Y el juego me va a 60fps (a veces algunos frames tiene que trabajar mas y pega bajones igual hasta 40 frames depende de cuanto escenario/arboles tenga que "generar/cargar" a la vez

Tengo una grafica viejuna, gt7800 512de ram

Añadir muchas joints tambien puede bajar el rendimiento pero este depende al final de muchas cosas distintas, es bueno de vez en cuando echar un vistazo al profiler y ver que procesos son los que mas milisegundos consumen e intentar optimizar eso procesos

Porjemplo: en un proyecto yo tenia un monton de objetos que tenian que girar todos a un mismo angulo, el cual tenia que calcularlo con un proceso de tres lineas muy sencillas y luego girarlo (otra linea), y tenia ese script en el objeto, el cual tenia igual hasta 500 instancias... Eso me consumia casi 5 milisegundos

Ahora calculo el angulo en un script independiente y lo guardo en una variable global y los objetos solo giran a ese valor que ya esta calculado, solo una linea de script, 1 milisegundo :) 

Tambien simplificar shaders va bien para el proceso de renderizado, reduje casi 10 milisegundos de graphics cambiando una tonteria en el shader mas usado en el proyecto, con lo cual de ir a 30fps raspaos, paso a unos 40-50, el juego sigue siendo una mierda, pero ahora va mas fluido :)

Otro consejo: 

No metas objetos con colliders dentro de otros objetos con colliders, esta es una cosa que no se porque reduce el rendimiento de phisics, si es necesario es mejor agruparlos dentro de objetos vacios,

Este problema me trajo muchos quebraderos de cabeza porque aveces tambien fallaban los rigidbodys, y los raycast/spherecast y familia, pero ya me lo he aprendido :)

 

 

 

Share this post


Link to post
Share on other sites

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...