*Gracias a las aclaraciones y aportes de algunos comentarios debo aclarar algunas cosillas:* - En la ecuación del minuto 23:43 cometí un error de edición, la fracción que indica "1/3" debe ser en realidad "3/2" (por algo la constante "threehalfs" es 1.5). - A diferencia de lo que muchos podrían pensar, el algoritmo no lo creo Jhon Carmack, o el equipo de id software (la empresa detrás de Doom y Quake), este algoritmo tiene historia propia que data al año 1986 incluso, de hecho uno de los creadores William Kaham es uno de los científicos detrás de la creación del estándar IEEE754, asi que tiene sentido de donde salió ese conocimiento tan profundo de las unidades de memoria, el algoritmo paso por muchas manos (Gary Tarolli, una de ellos), siendo refinada en el camino hasta que de alguna forma llego a Quake, si quieren mas detalles de la autoría la wikipedia en ingles esta bien detallada. Es probable que la razon del porque se perdió el origen de quien o como se calculo el número mágico, sea debido al largo camino que siguió, pero bueno esto último nomas es hipótesis mía. - En el minuto 6:28, digo que se se ha reducido a la mitad los números enteros que se pueden representar, pero de hecho se han reducido aún mucho más, piénsenlo, cuando teníamos 32 bits, podíamos representar 2^32 números, con 16, se pueden representar 2^16, si restamos (2^32 - 2^16), se pierden 4,294,901,760 valores, aún mayor razón para utilizar el estándar IEEE754, una arquitectura bastante ingeniosa por cierto. - Como muchos apuntaron, en 11:29, la razón de utilizar logaritmos es muy probablemente que estos permiten simplificar la operación de números muy grandes (o muy pequeños), también probablemente sea por lo fácil que se convierte la inversa de la raiz cuadrada cuando le sacas logaritmo a ambos lados de la ecuación, chequense 13:13, se observa que la relación ahora entre salida y entrada (operadas con logaritmo) es lineal, por lo que se ha eliminado la operación raíz de la ecuación. -8:13 En este minuto me olvide cambiar los bits xd, 126 es 1111110, eso es lo que deberia estar puesto en la unidad de memoria. (Ire actualizando según vea mas aportes jsjs, gracias a todos por sus comentarios 🥸)
Muchas gracias por el dato. Sorprendente lo que puede hacer un fragmento de código. Unos genios los creadores y si en un futuro pudieras hacer o editar el video, sería genial. Excelente investigación 👍💯
me ah encantado tu explicación de como se guarda la información en la memoria de un pc, pensar que incluso hoy usando 64bits, el guardado de información en la ram a la hora de programar funciona de una forma muy parecida a como vos explicas acá. es una explicación bien técnica a nivel programación.
@@Comomevoyapasarlavida Nomas son slides de PowerPoint xd, lo que pasa que en general los programas de offfice tienen como una herramienta donde puedes escribir ecuaciones y la verdad quedan bien chéveres visualmente.
alguna vez en la universidad me mostraron ese código, pero el maestro no lo supo explicar y justo dijo que era magia jaja, mucho tiempo lo quise investigar pero no encontraba el código y ahora lo encuentro con todo y respuesta, muchas gracias, excelente video!
Dato curioso: Este código es el que me llevó a estudiar Ingenieria Informática, y expresa el fundamento del porqué estudias matemáticas en Ingenieria. Me cansé de escuchar sobre "no usamos matematicas y lo poco que usamos lo sacamos de google". Este tipo de soluciones y entendimiento es el que sobresale al resto, y me encanta. Personalmente, para esta solución, tuve que cursar 2 materias por separado para entenderla, y es sencillamente increible.
@@erickandrade154 Personalmente los contenidos de estos temas están en las materias obligatorias del plan de estudio de mi carrera (el analisis binario se ve en Estructura del computador o cualquier materia semejante, la resolución e iteración de gauss se ve en numeracion numerica/analisis numerico), pero adicionalmente, cursé cosas muy intereesantes como optimizacion de modelos y analisis matematico 3
@@jinz4246 Puede ser cierto, como es cierto el nivel de software que se entrega en el dia de hoy y es vidente con el lanzamiento de videojuegos de estos últimos 2 años exceptuando algún caso particular. ¿Puedes ir al wolframalpha y solucionarlo? Por supuesto, pero si tienes que resolver una integral, lo primero que harías seria buscar una libreria que solucione y no sea costosa, cuando con conocimientos de una carrera de grado, puedes utilizar coeficientes de gauss y lograr una solución con un margen de error ínfima. Saber esto te separa del resto, sí, es overkill para alguna gente, innecesario, y es entendible, pero les puedo asegurar que impacta.
Felicidades normalmente este tipo de contenido de alta calidad no hay en espanol, por eso siempre termino viendo contenido en ingles pero que agradable tenerlo en espanol es mucho mas fácil de comprender.
Eu não falo espanhol, mas pude compreender facilmente sua fala. Muito obrigado, foi realmente interessante! Por muitos anos tentei entender o que era este código! Obrigado
Esto es símplemente una genialidad. Ahora estamos tan acostumbrados a tener potencia computacional ilimitada y no nos sentamos a pensar cómo se puede mejorar un proceso que funciona "bien". Las librerías, motores, frameworks que hay por la web facilitan tanto el trabajo que la mayor preocupación de uno es la compatibilidad de versiones. No estoy en contra de los avances realizados, pero no se debería dejar de lado el ingenio humano y lo realmente divertido que puede ser crear algo desde cero.
Para mí no es así. Los que diseñan juegos puede que ya no se ocupen de temas que son responsabilidad del motor, pero la programación de software sigue creando desafíos y soluciones interesantes.
FAA hace un tiempo ví un reel que hablaba justamente de eso y la mayoría de los comentarios era "no trates de reinventar la rueda" la verdad el mundo del desarrollo web es usar lo que funcione para evitar trabajo extra.
mmmm la ley universal de la programacion, es , si funciona no lo toques, cuando se cree algo nuevo se mejora, pero si ya funciona bien y el redimiento no esta afectando a nada ps quedo asi, puede que por andar toqueteando te lo tires y y el control z no funcione y ahi cagaste 🤣, toca pedirle ayuda al dios git que te salve, o si manejas un historial local
Así no es como funciona el mundo real. La prueba es este mismo video, sobre un algoritmo del 1986 que se sigue reutilizando aunque la mayoría no puede explicar exactamente porque está hecho así. Los que te pagan el sueldo no van a estar interesados en tu propuesta de optimizar un microsegundo si eso implica que trabajes meses o años 😐
@@eljabon3164 esa lógica funciona para el 90% de casos trabajo de oficina o desarrollo en consultoría, para trabajo de investigación, creación de modelos matemáticos y desarrollo computacional el ingenio humano y unas bases sólidas en matemáticas son irremplazables, todos las nuevas tecnologías se basan en algoritmos nuevos y complejos el detalle es que muy pocas instituciones brindan enseñanza a ese nivel y con esa orientación por eso el 90% de ingenieros especialmente en Latinoamérica saben usar todo pero crear nada.
Muy buena calidad de video! Como aporte sobre porque se uso logaritmos, es por la propiedad que permite "convertir" multiplicaciones en sumas por la propiedad log(ab) = log(a) + log(b), la ventaja de esto es que al hacer multiplicaciones entre números muy grandes o muy chicos, se puede complicar los cálculos computacionales debido a la matemática de punto flotante de la computadora, con este logaritmo reducimos este efecto indeseado de las multiplicaciones. Por ejemplo tenemos la operación: 0.0005 * 0.0002 = 0.0000001 = 1e-7 Este número resultante ya es problemático, y si lo multiplicamos N veces se va a hacer más y más problemático. Ahora si lo comparamos con el logaritmo: Log2(0.0005 * 0.0002) = Log2(0.0005) + Log2(0.0002) =(Aprox) -10.965 -12.287 =(aprox) -23.253 Se puede ver que las operaciones son más manejables, ya que los números muy chicos o muy grandes se transforman en números con mantisas más manejables. Ultimo ejemplo: Log2(1e20) = 66.438 (aprox) Log2(1e-20) = -66.438 (aprox)
El poder de las matemáticas en su máxima expresión. Quede igual de asombrado cuando me enseñaron a resolver en Estatica sistemas de ecuaciones con algebra lineal, toda la prepa pense que eran para cosas diferentes. La de trabajo que me ahorraron en la universidad. Y luego quede mas estupefacto cuando descubri que los algoritmos transformers para las I.As en esencia se manejan con algebra lineal. Realmente el poder del computo viene mas del estudio matemático que de las mejoras del hardware.
El Sr. Tarolli pensando cuando le preguntaron sobre el número: "Y ahora como les explico que lo ví en un sueño" XD Gran video, es interesante ver los trucos que hacen los genios, nunca el algebra había sido tan interesante 👍
Excelente vídeo. Lo explicaste de una manera extremadamente fácil de entender, muchas gracias. Los “vectores normalizados” también son llamados “Vectores Unitarios”.
muy buen video! se que John Carmack hizo muchas artes magicas más con otras entregas por ejemplo el desplazamiento horizontal en tiempo real en Commander Keen es digno de un video pues con esa ingeniería Id Software le propuso a Nintendo en que pudieran crear una entrega de super Mario Bros en PC, pero los nipones terminaron rechazando esa oferta.
Soy estudiante de electrónica, este fue uno de esos temas que vi y me gusto, sufri un poco porque lo vi en mis primeros semestres pero igual gustó. Veo que lo explicas muy bien, me gusta demasiado los canales que se atreven a explorar la matematica de los problemas, increible aproximacion y muy buen video, gracias 👏
Quedo impresionado, viendo este video llego a la conclusión de que los programadores de antes, no solo sabían de programación sino que también eran matemáticos y hasta físicos, osea que eran versados en más de una materia.
En la programación siempre se ha utilizado matemáticas, pues ya que todo se rige a base de 0 y 1. Pero eso sí, sin duda los programadores antiguos con sus códigos y sus ingenios le han facilitado demasiado el trabajo a los actuales, y más mérito por la época y métodos que tenían que emplear.
el limitante de memoria ram y recursos te obligaba a crear tus propios algoritmos que fueran mucho mas optimoa y efectivos en su tarea. hoy en dia al tener muchos mas recursos se programa cada vez de peor forma.
Mucha más optimización que requiere tiempo e ingenio para hacer que se puedan ejecutar en componentes que normalmente no harían la tarea correctamente y/o a tiempo. Muy bueno eso y ojalá hagan más optimización en los juegos actuales que piden y piden cada vez más requisitos. Será que usarán la IA para ayudar con esas optimizaciones?
Antes no existían Unreal engine o Unity. Muchos estudios debían comenzar con su propio motor gráfico desde cero, y los juegos eran hechos por ingenieros, programadores y científicos computacionales. No por "diseñadores de juegos"... Es más, hoy día es MUY sencillo hacer videojuegos y la calidad está cada vez peor. Pesan más y más gigabytes y tienen menos y menos contenido.
11:29 Supongo que es para aprovechar las propiedades del logarítmo para simplificar la ecuación. Ese truquito lo solía usar en la licenciatura para simplificar la obtención de derivadas de funciones que contenían multiplicaciones, divisiones y potencias algo chocantes.
Muy bien realizado el video. Una clase muy interesante y bien explicada. Es extraño que tengas tan pocos suscriptores con el nivel de calidad que he visto en este video. Muy bien hecho.
los logaritmos son una transformación, convierte un producto en suma y una división en resta. Destaco tu didactica para este tema, deberías considerar ello como tu aporte a través de artículos o libros especializados.
Fua... De verdad no me esperaba este nivel de calidad. Hermano, eres muy bueno explicando y el tema es muy interesante, especialmente la parte matemática. Como estudiante de matemáticas puras, apruebo este video.
*Y que es precisamente lo que hacen los motores por eso es lindo aprender a programar, porque aprender es saber Programar, Analizar, y saber que hace como por ejemplo el famoso Normalize() detrás, la Programación no es escribir código, es más que eso. Ya entendiendo los conceptos y bases te permite crear el propio código y resolver otros problemas a futuro con esos Conocimientos o mejor aún aprender a crear tu propio Framework o Game Engine para que los Desarrolladores lo utilicen. Por eso siempre digo que los Frameworks y Engines no son de Programación, sino que son de Desarrollo, y confunden Desarrollar con Programar, son 2 lados distintos dentro de la Ing. de Software y Analista de Sistemas.* 🤠
El algorirmo me recuerda a los trucos que hacían con las calculadoras mecánicas. Alguien que la supiera usar muy bien podía sacar la raíz-n de un número con un aparato que apenas sumaba, restaba y multiplicaba.
Soy estudiante de ingeniería de sistemas, que conocimiento tan profundo de las matemáticas para un videojuego y pensar que en esta carrera se suele escuchar que las matemáticas son "relleno". Gracias por tomarte el tiempo de explicar tan maravilloso algoritmo.
Este video me hizo recordar lo magníficos que somos los seres humanos cuando queremos hacer algo bien, eres muy inteligente te felicito excelente video! 🤯
también me recordaste los temás de métodos númericos como el de newton, bisección y regali falsi modificado, la cual todo estas herramientas tienen sentido en esta implementación! valla genialidad que buenos tiempos cuando era joven
Supongo que el uso de logaritmos que no encontrastes explicación es para darle mayor velocidad de operación a números muy grandes, ya que, por ejemplo no es lo mismo operar n1=3.44*10^50 - 1.76*10^50, para la máquina serian muchos 0 y 1, pero al llevarlo al nivel logaritmico, seria log(n1) = 50.536 - 50.245, y esto es más fácil de operar miles de veces, ya que, estan en bucle todo el tiempo.
amigo que pedazo de video, muy interesante, muy didáctico y divulgativo, me has generado mucha curiosidad en investigar más sobre como se guardan los punto flotante en memoria y el método de newton, más contenido como el tuyo!!!
Sos una joya, me gusta la progrmacion (soy analista en sistemas) pero tambien mas me gustan las matematicas y ver tu explicación con esta edicion tan cuidada, tanta información hecha digerible. Hay tantas horas detras de estos 25 minutos de video, no solo de ediciom sino de aprender las matematicas que estan detras y los aspectos del lenguaje C. Tanto amor. Me alegra muchísimo poder conocer tu canal!
Eres buenísimo explicando, gente como tú deberían ser profesores de ingeniería. Luego te encuentras doctores y docentes con muchos posgrados y explican como somnífero. 100/10
el video me apareció por casualidad, lo comencé a ver con un poco de escepticismo, pero al final me fui con algo nuevo aprendido, muchas gracias por la explicación!
Yo soy programador empirico, por que estudie otra ingenieria. Pero este video me motiva mas a estudiar el CS en la universidad por lo interesante que es la algoritmia y la "magia" detras de la programacion. muy bonito video
Excelente explicación! No soy programador, pero últimamente me han interesado temas de computación y hace unos meses que he estado buscando entender este algoritmo. Me has resuelto muchas dudas. Saludos.
La verdad no entendí ni un poquito de nada, pero estoy seguro que con dos o tres repasadas más entendería algo sjjsjs, igual excelente video, me encantó el ritmo, la narración, se nota el trabajo respecto a la edición del vídeo, y ya, 10/10, no entendí pero me encanto
Un rato de cine 🚬. Como esquema mental se puede resumir en los siguiente: sacar log a la eq. original -> aproximar con Tylor -> Substituir la ecuación lineal por la ecuación lineal universal (de la IEEE) -> La ecuación lineal resultante se usa como punto inicial para el método de Newton. Brutal.
Ese "numero magico" es la direccion en memoria de una variable que la quiso almacenar como una constante. Lo mismo hace con la variable x ya que tambien obtiene su direccion en memoria con el keyword '&'.
No soy de los juegos, es mas, creo que nunca llegue a terminar DOOM. Me gustan las computadoras porque es el resultado de la fisica y las matematicas. Fisica, electronica, matimatica, ordenamiento logico. Muy bien documental. Saludos.
No conocía este algoritmo y cada vez quedo más impactado de los trucos matemáticos que definen la verdadera ingeniería detrás de un videojuego con un buen rendimiento. Este tipo de algoritmos no sólo son mágicos, son una verdadera genialidad de la humanidad, así como muchos otros que nos han dado las benditas matemágicas En verdad, qué locura
Esperaba un video ligero, gracioso y ligeramente informativo; terminé repasando software de sistemas, algebra lineal y cálculo, y feliz. Sí se sintió como cátedra, pero fue una buena catedra. Buen video
Que increible video, ahora pude entender mas a fondo algunos de los temas que estoy cursando en la materia de lenguajes de interfaz en mi universidad jajajs, que grande 🫡
En un resumen ridículamente simple lo que se hace es: 1. Obtener una aproximación inicial 2. Re aproximarla con el método de newton. Pero el conocimiento técnico implementado y su implementación es lo difícil para comprender, sobre todo si se está familiarizado con la programación y el funcionamiento de la arquitectura de los procesadores y el almacenamiento en memoria, Genial video, este algoritmo y la explicación que conlleva es una clase magistral de como implementar soluciones para problemas generados por los retos tecnológicos de tu época. Da' porciento la aplicación del logaritmo es debido a que transforma los números de una base decimal a una binaria compatible con la forma en la que se realizan las operaciones en un ordenador, de hecho, los logaritmos una de sus aplicaciones es la de transformar un numero de una base a otra siendo estos dos números pertenecientes a |R.
Soy estudiante de ingenieria electronica, el semestre pasado justamente cursé sistemas digitales II, POO en C/C++ y algebra lineal. Aún me quedan traumas del formato IEEE754 ya que en los parciales nos colocaban a pasar numeros gigantes a este formato a mano y sin calculadora, y eso solo era para iniciar el ejercicio... Te luciste con la explicación
hermano ! que vídeo tan majestuoso y sublime. es un deleite, sigue sacando vídeos así por favor ( amo la programación ). si puedes haz llegar este vídeo al canal Derivando, tal vez de con el origen de el número hex ( "mágico" )
no entendi nada pero gracias, por favor sigue subiendo y explicando este tipo de problematicas y planteos, usare tu canal como base para estudiar cuando tenga la oportunidad de hacer la ingeniería
Buenísimo el contenido de este video. No he visto más videos de tu canal, pero si de esto se tratará tu canal, te deseo todo el éxito del mundo para que logres pronto contratar editores y guionistas que te permitan mejorar la calidad de tus videos. En ese punto tu canal explotará
Soy ingeniero Civil en Automatización (industrial), excelente explicación y me recuerda un código que hice para la aproximación de un sistema de corte de sierras múltiples (5) consiguiendo un error de +-0.05mm una joyita, programado en PLC.
Lito con todo lo que aprendí y lo que ni idea se hacer, me voy a aventar mi juego, con permiso que voy a robarme el código XD Edit: Nuevo sub btw, excelente video
Excelente video!!! Me hiciste recordar que tengo darle una repasada todo esto en matemáticas y todo eso, mi cerebro está todo podrido por falta de práctica.
11:29 log2 es porque te indica la potencia a la que se eleva el número. Ej: Log10 de 10^X = X log2 de 2^X = X Como los número están almacenados en binario, los obtienes en entero pero en potencia de 2 y con log2 puedes tener toda la información necesaria.
Llama podrías hacer más videos sobre algoritmos interesantes en los videojuegos, creo que género mucho interés y podrías dedicar algunos vídeos a este tema
Me encanta ver buenos ingenieros pensando en cómo hacer más con menos. Mientras tanto tenemos juegos como el cod que se ven iguales 10 años después pero pesan 100GB más, y cosas como el Windows que si no tenés 8GB(ram) dedicados solo para el sistema operativo ni te molestes en instalarlo. Ya no los hacen como antes.
Vaya tenia mucho tiempo sin ver un video que pusiera mi mente a funcionar a tope :D Excelente video, y buenas explicaciones, aunque hubo una pequeña pifiada en el camino. Pero excelente explicacion.
ALA MRD que op, ame la explicacion. Literal esto era lo que los profesores me enseñaran me debieron enseñar. Odié los cursos de numeros en donde no sabia por qué usaba una cosa o la otra. Pero tu lo explicaste perfecto. Gracias!
Recien descubro tu canal, creo q lo tuyo es la explicación de codigo, tal como este tema, deben existir muchas historias de programación por descubrir, saludos
Son esos "trucos" de programación en C que lo vuelven un lenguaje ideal para programar microcontroladores. Sería fantástico un video sobre esos trucos y también un poco de lenguaje ensamblador.
Tristemente tienes razón, realmente hacen un trabajo crudo en optimización del código, texturas, assets, etc. Cada personaje de un videojuego por si solo pesa varios GB, súmale la música y audio, algunos juegos no aprovechan texturas, cada cosa tiene una textura propia, osea tienen 3 tazas, todas son diferentes y en 4k en juegos AAA actuales. Todo va sumando, lo único optimizado y bien trabajado es el número de polígonos dentro de todo, pero la optimización lleva años, pues si tienes que ver qué recortar, que vincular, y que trabajar, SOLO con el Engine y texturas, música u personajes. Nisiquiera de código del juego, hablo de un trabajo sencillo, es costoso, las empresas no van a realizar esto ni en broma, aprovecharán la herramienta que utilizan, el motor con el que trabajan, tienen una fecha límite para la publicación de su videojuego
@@sabayonlin9273 esa es otra, ahora los juegos se trabajan en menor tiempo o tienes menos tiempo antes de su salida, pero los juegos que se toman su tiempo si logran hacerlo bien, ahí tienes el caso de re2 remake o del mismo re4 remake pero luego sacan un warzone con texturas de hace 10 años que no están optimizadas
Creo que le número mágico lo hicieron por aproximación, como esa parte es fácil nadie le dio importancia y olvidaron que así lo encontraron. Súper entretenido el vídeo.
Amigo, estaría genial que publiques un video explicando el algoritmo FFT (Transformada Rápida de Fourier), un algoritmo realmente fascinante e importantísimo pero es muy difícil encontrar información detallada de este
Algún día quiero hacer de ese, porque es muy hermoso, sin embargo se me hace aun mas complejo que este, así que me va a tomar tiempo, que crezca un poco mi canal y ya ahí veo xd.
@@llamaelitista Hace algunos meses el canal Veritasium publicó un video sobre la FFT, muy bueno pero es de un nivel muy general y divulgativo. Necesitamos un video que desentrañe, de una vez por todas, los secretos de este algoritmo en detalle
El logaritmo puede surgir porque estamos manejando exponentes de 2, y el logaritmo base 2 es la función inversa del exponente. Es decir, teniendo 5=2^t nos indica que t=log_2(5)