Trucos de optimización que tuve que usar en el juego de la espada
▶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
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
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*
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ó
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 💓
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
Descubrí tu canal hace una semana y ya me mandé maraton de todos los videos. Ando al día nwn
¡Bien! Llevo esperando este vídeo toda la semana ^^
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í.
7:37 Siempre me quedó hasta el final. Me encantan tus vídeos.
Yo estoy esperando tu próxima Jam 😊 y estoy de acuerdo con los shaders
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
0:26 Alva: ¿Qué es un shader? Me la agarras con la mano
Es sin duda mi momento favorito de alva
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)
Gracias ahora voy a poder optimizar más los juegos para mí gt 1030
Grande alva, explotando al maximo el juego de la espada, eso si es mentalidad de tiburón
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.
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
gran video amigo, nuevo suscriptor nota: no preguntar nunca a alva que es un shader.
El resultado entero de esta Jam esta siendo "Demasiado Largo". Un crack, Alva. 😂
Oclusión Culling es lo q nadaba buscando hace días, gracias Alva 👍👍👍👍👍👍👍👍
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
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😂
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ó
Esto es como el recalentado de Navidad, que te dura hasta Febrero.
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
Alva: Al final borre el proyecto de unity, y aun con todo esto seguía sin ser suficiente...
me gustan mucho tus videos like like. te lo mereces ojala sigas subiendo esos errores y observaciones, asi aprender del maestro.
Que buenas metaforas hace Alva, por un momento me lo crei.
Siempre me voy a quedar hasta el final, me encanta que Álva me venda cosas😃
Yo regresando el video y sin seguir sintiendo el cambió de audio 🤣
excelente video que muestra que realizar 3d es difícil incluso sin usar modelos detallados.
Creo que Jesus resultó ser más egocéntrico de lo que nos imaginábamos.
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
Muy buen video condesa 👏👏
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
juegazo el shipped!
Tio, que bueno los modelos planos, no me di ni cuenta.
Grande Alva, que será lo próximo que le dará tema para un año como la Jam?
Sos un genio alva
Conclusión, no hagas juegos 3d si no sabes y si lo que haces se juegan mal ve poco a poco
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?
mi loco parece pureya en live action XD buen video comoquieras
Que interesante!.A lo mejor usando ECS y DOTS no hubieses tenido tanto problemas.
son muy buenas expicaciones, en conclusión viva Guinxu
Esto se ve prometedor
Me encanta como dice que no hay bugs y en el fondo estaba el rey hundiéndose
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?
No sabía que Alva majo fuera el grande que creo el juego de la espada
Cuanto orgullo siente alva por su juego
Alva podrías hacer un tutorial de modelación 3d
7:10 Rey:Los veré en el infierno, pero primero, mis bendiciones por ser el nuevo rey 😎👌
Qué versión de unity recomiendas? 🙌Sos un crack
La espada de Alva nos dará contenido para el resto del año
Alva lo que tenías que hacer era usar una técnica de gpu instancing para el público así reduciendo los batches m.kzhead.info/sun/kquAhtCyeJWNmnk/bejne.html
kzhead.info/sun/fNaSgM-LgKimfK8/bejne.html
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".
Cuando va haber video sobre el bug del juego
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.
¿Para cuando un battle royale de Pureya?
Primero Snyder y ahora Alma Vajo, dos genios incomprendidos que no pudieron mostrar su visión artística en sus obras (bueno, casi)
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.
MAJOO VIDEO DE SETUP 2023
es interesante como el producto base dista mucho del estilo que conocemos siendo el producto final el clasico juego con el sello mayoneso
Alva sube Clash mini , dando tu mísera i sincera opinión , eres un grande como desarrollador 👌🤛
Título alternativo: intentando no darle de comer a Guinxu.
Espera espera espera... tú eres el genio detrás de majotori? ... ...Mi señor *reverencia*
Alva, porque el numbre de tu ultimo "pureya" no le pusiste mayuscula al principio, decision artistica?
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
¿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
0:27 xd un clasico me lo esperaba xd
Lo que querias hacer se puede hacer con la nueva versión de unreal. Con el sistema nanite.
0:27 cuando quieras y donde quieras mi king 🤠
Devalen demostró ser un ganador
Para cuando el video de lo ganado en Pureya tras los primeros meses?
Buenísimo
Hola Alva Majo soy un gran fan tuyo
eso de los modelos planos duplicados se utiliza en el wow árboles
Unreal ayuda mucho en ese tipo de optimizaciones pero el caso no es aprender otro motor de cero
Antes de que Guinxu lo exponga, se expone el solo jaja
Pudiste hacer que el juego uso los núcleos de la grafica, ya que seguramente usaba los del procesador y eso ralentizo todo :^
No había un pluggin para manejar personajes a miles? No me acuerdo si era de chapas group. Algo como massive o algo asi
Alva, ust me inspira a seguir estudiando Ing en sistemas
Sr Alva cuantos videos hara del juego de la espada Alva: Si
con nanite de unreal engine puedes colocar infinidad de polígonos en pantalla
Grande "Tu Juego a Juicio Jam" dándole de comer a Alva, por más de 3 meses 😎
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?
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.
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
termine el video y aun con todo eso "seguía sin ser suficiente"
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
me encanta tu canal
Joder, hasta el otro año hablando del juego.
entonces cual seria la solución de los juegos super bien detallados?
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