Trucos de optimización que tuve que usar en el juego de la espada
HTML-код
- Опубликовано: 30 ноя 2021
- ▶La Biblia de Shaders en Unity: learn.jettelly.com/es/biblia-...
▶The one who pulls out the sword will be crowned king: condesa-milanesa.itch.io/the-...
▶Majorariatto Collection: store.steampowered.com/bundle...
En este video te explico los problemas de rendimiento que tuve poniendo cientos de personajes lowpoly en mi juego de jam, incluso con una RTX 3080, y qué trucos usé para que funcionase en ordenadores viejos a una tasa de frames decente.
▶Mis juegos: www.majorariatto.com/es
▶Twitter: / 5ro4
▶Twitch: / 5ro4
▶Bundle de mis juegos en Steam: store.steampowered.com/bundle...
Música: • Alva Majo channel theme
Soy Alva Majo, un desarrollador de videojuegos indie español que hace sus propios juegos indie en Unity para PC, Steam, Android e iOS, te enseña cómo con humor y tutoriales, comparte sus éxitos y fracasos, incluyendo cuánto dinero gana, y pone una lista de palabras clave camuflada en la descripción para posicionar mejor sus videos. Por qué no mencionar también a Guinxu, Joseju, elxokas o incluso Jasperdev. Suscríbete para más lifehacks y productividad. Наука
No puedo dejar de pensar lo orgulloso que esta alva de su juego para dedicarle mas de 3 videos
No lo apures , puede sacar 3 videos más.
Y de 8 minutos
Los días perros nunca acabaron
alguien necesita excusas para subir videos
No es que este orgulloso es que quiere monetizarlo
alva es un visionario, hizo una jam para hacer 10 videos y la gano el para hacer otros 10 videos mas de sobre como gano, increible el nivel de dios.
Alguien lo dudaba ... Ya está tardando Dvalen.
plennyshakesyonks
cualquier youtuber espera el contenido para crearlo, el crea la situación que crea el contenido para luego el crear contenido de ese contenido creado por el mismo D:
Lo peor es que habian otros juegos que le daban mil vueltas a este pero como lo ha creado él pues ganó
STONKS!
- Por qué mi reino va tan lento?
- Hay demasiados plebeyos, señor!
- Tendré que 'optimizarlos'
Hay que sacrificarlos es mas rapido jajaja
aborto
Broooo noooooo, 13k llamadas de pintado XD
El número de polígonos y las sombras NO son el problema. Y los animators medio medio, pero no por lo que piensas. El problema es que tu CPU está dándole 13K+ llamadas de pintado a la GPU cada frame. Sin entrar en detalle en cada llamada hay bastante tiempo muerto gastado en comunicación entre CPU y GPU y por muy eficiente que sea todo lo demás el tiempo gastado en comunicación limita el rendimiento. No importa el hardware que tengas y las optimizaciones que hagas si las llamadas de pintado son demasiado altas.
Lo que quieres hacer en estos casos es agrupar las meshes iguales que utilizan el mismo material en las mismas llamadas de pintado. Esto se llama Gpu Instancing o Batching. Y seguro que puedes leer más al respecto en el libro de Jetelly
Instanciar Skinned Meshes no es inmediato, pero si buscas hay muchas herramientas y plugins para ello (Mesh animator por ejemplo). Para todo lo estático es tan fácil como darle al "Enable GPU Intancing" que hay abajo de todos los Materiales estandar de Unity. Con que actives eso en todos los arboles, elementos de la ciudad y en general cosas que se repitan mucho verás una buena mejora. Pero realmente la mejora brutal la notarás cuando instancies las meshes animadas de los plebeyos.
Y por cierto, quitando las sombras y añadiendo cientos de rectángulos estás empeorando aún más el rendimiento (a menos que hagan batching) ya que añades cientos de llamadas de pintado de más que es lo que está matando el rendimiento.
diosazo
Mucho texto 😎👌
Wat
Dicelo por el directo
😮😮
Que es un shader? Me la agarras con la mano
-Jesucristo 2021
*suena majotori de fondo*
Despues de 2 meses de videos de la Jam, 1 mes de videos del juego con el que hizo trampa en su propia Jam. Un grande Alva
Hay que amortizar. 😎
2 meses?
Si fueron 7 meses con juegos de subs
Alva dejá de usar pantalla verde en tu habitación, es mejor que te grabes a tí en tu fondo real a qué esté desenfocado y quede cutre.
Hablas como alva XDDD
@@EDGE_PRIME de tanto verlo a uno se le pega
@@roydellano5510 XDDD cierto, ya anda mañoso
Le da pereza ordenar la habitacion, seguro
Es una metafora sobre el desarrollo de video juegos, el tener q arreglar la habitación le quita tiempo y al no tenerlo se decide por perder calidad pero poder entregar un trabajo a tiempo, un grande alva por dejarnos enseñanzas en segundo plano 💓
1:28, estas renderizando 2.5 millones de triangulos, lo cual lo puede mover cualquier gpu tranquilamente, el problema es que estas haciendo 13541 Draw calls (Apartado batches) lo cual es una barbaridad, en vez de hacer tantas draw calls que me imagino que estara haciendo 1 por modelo 3d tendrias que hacerlo por Instanced Rendering para dibujar todos los modelos (los que son iguales pero con diferentes texturas como las personitas) de una tirada lo cual iria mil veces mas rapido, esto es porque la comunicacion entre la cpu y gpu es lento, aunque ni idea de como se hara eso en unity yo solo se de opengl.
@Mauricio Macri la cpu está saturadisima porque tiene que hacer la animación de forma individual para cada personita.
Por lo tanto el juego va lag
@@rising_fredo_pixel no es la animación, es el llamado a dibujar a la gpu.
@@amaury_permer gracias bro. Dije animación para explicarselo "en cristiano" al otro
@@rising_fredo_pixel y como no se dio cuenta xd no se supone que es desarrollador de videojuegos y sabe de esto, decepcionante la verdad, y no soy hater me gustan mucho sus videos. El problema me parecio muy obvio ahora que lo dices,
@@tutorialessencillosparagen4157 es que Alva es más de juegos en 2D. Supongo que ahora ya aprendió
0:26
Alva: ¿Qué es un shader? Me la agarras con la mano
Es sin duda mi momento favorito de alva
Las sombras las puedes "cocinar" con unity para que se te creen esos rectángulos tienes que quitarlas el real time y ponerlas en baked
3:16 la epica silla de alva majo
(Pon la velocidad a 0.25% y pausa y despausa hasta que aparezca el frame de la silla)
si pulas el botón de punto, o coma puedes avanzar y retroceder frame por frame (para esto el video tiene que estar pausado)
Un truco, con el punto y la coma del teclado puedes avanzar y retroceder un frame del vídeo 😉
XD
Con el punto y coma del teclado puedes avanzar el vídeo fotograma a fotograma, mucho más fácil
puedes ir frame por frame con las teclas de coma y punto
1:31 el número de personajes con sus animaciones sobrecarga a la cpu, no a la gpu.
Exacto. El problema es más con los 13.000 draw calls por no unificar los materiales. Con marcar un solo check en los materiales ("enable GPU instancing") se le solucionaba todo
@@damiangonzalez_esp uff bro
Por esa y otras razonrs en mi opinión es más importante la cpu que la gpu para jugar (asumiendo que esta última es capaz de levantar la escena del juego que quieres jugar con soltura)
Esto es como el recalentado de Navidad, que te dura hasta Febrero.
¡Bien! Llevo esperando este vídeo toda la semana ^^
7:37 Siempre me quedó hasta el final. Me encantan tus vídeos.
Descubrí tu canal hace una semana y ya me mandé maraton de todos los videos. Ando al día nwn
La tecnología aún no estaba preparada para esa visión artística. Gracias por el video, me ayudará mucho. :D
Al fin te atrapé esponja
Que haces aquí XD
@@nappeywappey Pues comentando xD
Podrías investigar sobre el instanciado de GPU, te hubiera venido bien en ese contexto. También, Unity tiene la Universal Rende Pipeline que es mucho mejor para juegos así.
Grande alva, explotando al maximo el juego de la espada, eso si es mentalidad de tiburón
Alva: Al final borre el proyecto de unity, y aun con todo esto seguía sin ser suficiente...
Yo regresando el video y sin seguir sintiendo el cambió de audio 🤣
Creo que Jesus resultó ser más egocéntrico de lo que nos imaginábamos.
Te falto sustituir el componente animator por el animation de to la vida que consume muchos menos recursos si solo ibas a usar una animación por plebeyo y en en su material marcar la casilla enable gpu instancing, esto reduce draw calls de una manera muy bestia y te permite hacer cosas locas como el juego de la espada sin que pete tú ordenador con rtx 3080😂
En unity tuve un problema similar, una opcion para optimizar es q en vez de q cada personaje tenga su propia mesh render, agrupar todas las pieles en una sola mesh mas grande
Gracias ahora voy a poder optimizar más los juegos para mí gt 1030
Yo estoy esperando tu próxima Jam 😊 y estoy de acuerdo con los shaders
Título alternativo: intentando no darle de comer a Guinxu.
El resultado entero de esta Jam esta siendo "Demasiado Largo".
Un crack, Alva. 😂
Lo primero que hay que hacer es abrir el profiler Alva. Development build + profiler... tranqui 120 😎
El animator tiene su propio sistema de culling, quizás eso te pueda ayudar un poquín más.
Que buenas metaforas hace Alva, por un momento me lo crei.
bueno optimización, de esto si que se, podrias agrupar los canales de todas las texturas para no guardar texturas RGB que solo van a ocupar el canal rojo y verde, aprovecha el azul para algo mas, por otro lado, espero que hayas hecho una textura que sea un mask, pues todo eso se podria hacer con colores y seria mas barato en rendimiento, ocuparia menos vram, y se calcularia el basecolor en el vertex shader, también podrias haber utilizado otras tecnicas como el instanciado, porque por mas que tengas una 3080, tener tantos objetos por separado, hacen que el procesador tenga que decirle a la GPU "che flaco renderizame al pibe X" siendo X la persona de la multitud renderizada, entonces tendrias que esperar a que el procesador le diga a la GPU que renderice todo, como el juego tiene pocos poligonos y se pueden usar otras tecnicas, yo diria que tengas la ciudad como 1 solo objeto, los personajes como otro, el foliage como otro, y el terreno con el cielo como otro, ya que es un juego low poly y no hace falta tampoco hacer mucho, lo que haz hecho con los personajes lejanos, se les llama impostor, tenés 2 tipos, los que miran a la camara y utilizan un flipbook que contenga el modelo que quieres mostrar pero renderizado desde distintos angulos, y los que son fijos y no miran a la camara, pero para eso tenés que usar mas poligonos, el problema de esto, es que en el caso del primero, estás usando el vertex shader para en vez de calcular los vertices del modelo, calcular el offset de esos vertices para que siempre vean a la camara, el normal es normalmente (XD) en espacio de tangente, por lo que al desplazar el vertice no deberia darte problemas, si lo tienes configurado para que el normal esté en el espacio absoluto, tendrias que hacer que se adapte al offset de los vertices, como? pues con mas matematicas, por otro lado, recuerdas que mencioné lo de las texturas? yo en mi juego tengo 2 texturas 8k que representan el basecolor, normalmap, roughness map, ambient occlusion map, y specular map, en algunos casos remplazo alguno de los ultimos 3 y de esta manera, utilizo el RGB del basecolor y aprovecho el alpha del basecolor para meter la textura de roughness, el normal map es RGB pero hay un truco gracias a las matematicas, puedes utilizar solo RG y en mi caso el Blue y el Alpha meto el AO y el specular, entonces, tengo que calcular el B del normal map, pero existe una operación matematica no muy complicada, y es teorema de pitagoras, Red y Green son X e Y, y calculas la profundidad (Z), esto hizo que tenga solo 2 texturas 8k que en total son 600, de 1.1GB que pesaba originalmente (ya venia una textura empaquetada, y era la AOSR, Ambient Oclusion en el rojo, Specular en el verde y Roughnes en el blue, y la textura la guardaba como RGB, sin alpha channel) además, otras tecnicas que he utilizado ha sido la de usar la cabeza para algo util, como por ejemplo, abrir google, buscar cuantos ciclos tarda en hacer cada instrucción cada modelo de GPU, y en base a eso, buscar la manera de hacer los shaders lo mas optimizados posibles, reduciendo la cantidad de ciclos en promedio que va a costarle a la mayoria de GPUs a las que apunta mi juego en renderizar el shader, por eso los ports de consola suelen ir bastante mal en PC XD, y otra cosa mas, las matematicas son muy importante cuando hablamos de entornos 3D, ya que en los juegos 2D, no tienes que renderizar objetos según una rotación y posición en 3 dimensiones, si no que en los juegos 2D, solo tienes que rotar en un eje, además de usar texturas, usas pocos vertices, pero sobretodo, no usas tanto el pixel shader, ya que no tienes que calcular el specular, el roughness, el normal map, el ambient occlusion, y muchas cosas mas, también se aplica para el post-procesado, lo mismo pasa con todo lo de fisicas, etc, es mucho mas lineal, en cambio en los juegos 3D, tienes que usar muchos trucos para que se vea realista y consuma pocos recursos, por cierto, aprovecho para refregarte que mi juego se ve mas realista que el tuyo y me va mejor y tengo una rx470, que se siente que un gamedev con una grafica de 4 años de gama baja-media sea capaz de hacer eso? jaja, na mentira estoy jodiendo xd
estoy estudiando desarrollo de videojuegos y esta info me sirvio una banda. Gracias
8:01 ya he comprado el bundle en Steam :3
Y Shipped lo compré por segunda vez para tenerlo también en Switch
Oclusión Culling es lo q nadaba buscando hace días, gracias Alva 👍👍👍👍👍👍👍👍
Alva lo que tenías que hacer era usar una técnica de gpu instancing para el público así reduciendo los batches m.ruclips.net/video/_GGVlzAcWgA/видео.html
ruclips.net/video/IrYPkSIvpIw/видео.html
Todavia estoy aqui, como siempre...
Buen video Alva, ya se extrañaba estos videos de ti sufriendo por los bugs
Pdta: tengo Pureya :) desde que salió
Siempre me voy a quedar hasta el final, me encanta que Álva me venda cosas😃
Me encanta como dice que no hay bugs y en el fondo estaba el rey hundiéndose
Conclusión, no hagas juegos 3d si no sabes y si lo que haces se juegan mal ve poco a poco
excelente video que muestra que realizar 3d es difícil incluso sin usar modelos detallados.
La espada de Alva nos dará contenido para el resto del año
7:10
Rey:Los veré en el infierno, pero primero, mis bendiciones por ser el nuevo rey 😎👌
gran video amigo, nuevo suscriptor
nota: no preguntar nunca a alva que es un shader.
Alva: "Seguiré exprimiendo mi juego y subiendo videos las veces que sean necesarias... ¿Para que mis suscriptores aprendan de mis errores y no los cometan a futuro? Puede ser... ¿Para que Guinxu no tenga material para sus videos _hackeando_ mis juegos? TOTALMENTE".
Viendo vídeos de un desarrollador de videojuegos indie , yo sin entender la mayoría de lo que dice pero está bien, disfruto el vídeo
Tio, que bueno los modelos planos, no me di ni cuenta.
Primero Snyder y ahora Alma Vajo, dos genios incomprendidos que no pudieron mostrar su visión artística en sus obras (bueno, casi)
¿Y ese tono verduzco en la piel? ¿Y esos bordes que parecen recortados por un niño? Ah sí!!! Es que Alva es un "genio" y utiliza un croma para poner de fondo su propia habitación XD
Muy buen video condesa 👏👏
Chu impresionante el laburo q llevo el juego yo antes programaba y uno solo de esos errores q comentas ya me daba pereza corregirlo xD
No sabía que Alva majo fuera el grande que creo el juego de la espada
Que interesante!.A lo mejor usando ECS y DOTS no hubieses tenido tanto problemas.
Esto se ve prometedor
Sos un genio alva
juegazo el shipped!
me gustan mucho tus videos like like. te lo mereces ojala sigas subiendo esos errores y observaciones, asi aprender del maestro.
Cuanto orgullo siente alva por su juego
Te viniste arriba al principio con los elementos en pantalla, suele pasar.
es interesante como el producto base dista mucho del estilo que conocemos siendo el producto final el clasico juego con el sello mayoneso
este es como el chico que se lleva el balon a la casa para dejar todos sin futbol
3 videos
aunque me llama mucha la atencion su juego y el de guinxiu
Muy desde dentro del bar, las cinemáticas al no ser interactivas, no se pueden renderizar y meter en el juego en forma de vídeo?
0:27 xd un clasico me lo esperaba xd
0:27 cuando quieras y donde quieras mi king 🤠
Antes de que Guinxu lo exponga, se expone el solo jaja
MAJOO VIDEO DE SETUP 2023
¿Para cuando un battle royale de Pureya?
Joder, hasta el otro año hablando del juego.
son muy buenas expicaciones, en conclusión viva Guinxu
Espera espera espera... tú eres el genio detrás de majotori? ...
...Mi señor *reverencia*
Las sombras no se tendrían que hacer manualmente si bakeas staticamente y haces que los objetos que se mueven si que las tengan a tiempo real, el animator supongo que se desactivaba cuando se activaba el LoD y por último no se si había muchas luces dentro del castillo o que pero si la pipeline estaba en forward en lugar de deferred forward escala fatal con muchas luces y con escenarios grandes.
Grande Alva, que será lo próximo que le dará tema para un año como la Jam?
mi loco parece pureya en live action XD buen video comoquieras
Devalen demostró ser un ganador
No quiero ni imaginar que dolor de muelas habrá tenido que ser hacer una build para el portátil cada vez que quería testear algún minimo cambio.
0:27 me la agrras con la mano que alburiadon les pego a los que no entendieron jjajajajajaja
1:30 eso te pasa porque cada muñequito era un modelo individual, en vez de un solo modelo con muchos muñequitos con un solo animator, es basicamente prerrenderizar una multitud en vez de hacerla a mano y a lo bruto como un mono con un palo golpeando piedras, o lo que es lo mismo: un brazilero jugando al cs con hacks
alva, tengo una duda que no logro solventar sobre el occlusion culling, si hago el previsualizado veo como si muevo la camara van desapareciendo las cosas, pero luego cuando doy a play para arrancar el juego me fijo en la ventana de la scene y jugando no veo que desaparezca nada, eso es normal que en la escena no desaparezca? relamente se estan quitando?
termine el video y aun con todo eso "seguía sin ser suficiente"
Hola alva majo, necesito algo de ayuda. Desearia que mi joystick se aparte de la funcion del touch de la pantalla, me explico
El joystick mueve mi camara y se mueve a la vez solo quiero que se mueva y no controle la camara. AYUDA
Alva podrías hacer un tutorial de modelación 3d
Lo facíl que hubiese sido si alva majo renderizaba en un video la cinematica, en plan película. Y luego solo remplazar en el momento de que te llevan por la carretilla la escena por el video.
Grande "Tu Juego a Juicio Jam" dándole de comer a Alva, por más de 3 meses 😎
time.deltatime, instanciar por gpu, reducir los drawcall, de varios objetos reducirlo a uno solo. usa shaders ligeros, no tirar siempre de void update tema código objetos en el lateupdate, otras cosas en de mas lentos como ongui por ejemplo,,, convertir ciertos objetos a static, usa il2cpp 64 bits a poder ser, etc, etc.
-Y qué es un shader?
- Un script para programar la tarjeta gráfica.
- Y que es un script?
- Me la agarras con la mano
Encontraron un bug en el juego ese JAJDJAJSJ de cambiar la sensibilidad cuando estás sacando la espada al tocar pausa mientras lo haces
Y luego se sale facilmente JADJJA un capo el alva
En lugar de haber cambiado las sombras de cada objeto hubiera sido más fácil hacer un bake en las texturas, de igual forma no iban a moverse
Alva sube Clash mini , dando tu mísera i sincera opinión , eres un grande como desarrollador 👌🤛
con nanite de unreal engine puedes colocar infinidad de polígonos en pantalla
Pudiste hacer que el juego uso los núcleos de la grafica, ya que seguramente usaba los del procesador y eso ralentizo todo :^
Hola Alva Majo soy un gran fan tuyo
No pille lo de me agarras con la mano hasta que me di cuenta que shaders es sombreado xD
the one who pulls out the sword will be crowned king 🎶🎶
Hola creador del sexo, soy un usuario de sexo y quiero agradecerle por su gran creación, la última versión me ha venido de perlas y estoy ansioso de ver el futuro del proyecto, un abrazo!
Unreal ayuda mucho en ese tipo de optimizaciones pero el caso no es aprender otro motor de cero
Yo creo que es un buen momento de aprender a paralelizar las tareas en la CPU.
Sr Alva cuantos videos hara del juego de la espada
Alva: Si
Qué versión de unity recomiendas?
🙌Sos un crack
eso de los modelos planos duplicados se utiliza en el wow árboles
Alva, ust me inspira a seguir estudiando Ing en sistemas
Nunca he utilizado el Unity, no puedes hacer un frustum culling y desactivar el animator de los personajes fuera del frustum y que en lugar de seguir animando los personajes, simplemente se desplace?