{"id":494,"date":"2026-01-21T15:49:35","date_gmt":"2026-01-21T15:49:35","guid":{"rendered":"https:\/\/salvador.mata.com.mx\/blog\/?p=494"},"modified":"2026-01-21T15:49:35","modified_gmt":"2026-01-21T15:49:35","slug":"como-optimizar-el-rendimiento-en-range-upbge","status":"publish","type":"post","link":"https:\/\/salvador.mata.com.mx\/blog\/2026\/01\/21\/como-optimizar-el-rendimiento-en-range-upbge\/","title":{"rendered":"C\u00f3mo optimizar el rendimiento en RanGE \/ UPBGE"},"content":{"rendered":"<h1>\u2699\ufe0f C\u00f3mo optimizar el rendimiento en UPBGE \/ BGE<\/h1>\n<p>Si est\u00e1s desarrollando juegos con <strong>UPBGE \/ BGE<\/strong> \ud83d\udd79\ufe0f y ya tienes suficiente conocimiento para crear prototipos que funcionan bien, puede que hayas notado que, a medida que tu nivel crece, aparecen ca\u00eddas en los FPS en ciertas \u00e1reas o situaciones (por ejemplo, cuando varios objetos colisionan). Esto significa que el <strong>rendimiento del juego<\/strong> no es \u00f3ptimo&#8230; y probablemente te est\u00e9s preguntando: <strong><span style=\"color: #339966;\"><em>\u00bfpor qu\u00e9 ocurre esto?<\/em><\/span><\/strong> \ud83e\udd14<\/p>\n<p>La respuesta es simple: necesitas <strong>optimizar cada parte del juego<\/strong> \u2014la l\u00f3gica, shaders, interacciones f\u00edsicas, luces, entradas, depuraci\u00f3n y m\u00e1s. \u26a1 \u00a1As\u00ed que veamos esto m\u00e1s de cerca!<\/p>\n<hr \/>\n<h2>\ud83d\udcca Informaci\u00f3n del perfilador en RanGE\/UPBGE<\/h2>\n<p>Seg\u00fan <strong>mogurijin<\/strong> en su <a href=\"https:\/\/mogurijin.wordpress.com\/2012\/01\/03\/bge-profile-stats-and-what-they-mean\/\" target=\"_blank\" rel=\"noopener\">post<\/a>:<\/p>\n<p>Muchos desarrolladores conocen la opci\u00f3n <strong>\u201cShow Framerate and Profile\u201d<\/strong> del motor, y el caos de texto que aparece en pantalla \ud83d\ude05. Sin embargo, no todos entienden realmente lo que significan esas estad\u00edsticas. Este art\u00edculo busca ayudarte a comprender qu\u00e9 indica cada valor y c\u00f3mo ajustar tu configuraci\u00f3n para mejorar el rendimiento.<\/p>\n<p>Adem\u00e1s del FPS, el perfilador muestra nueve categor\u00edas:<\/p>\n<ul>\n<li>\ud83d\udd39 Physics<\/li>\n<li>\ud83d\udd39 Logic<\/li>\n<li>\ud83d\udd39 Animations<\/li>\n<li>\ud83d\udd39 Network<\/li>\n<li>\ud83d\udd39 Scenegraph<\/li>\n<li>\ud83d\udd39 Rasterizer<\/li>\n<li>\ud83d\udd39 Services<\/li>\n<li>\ud83d\udd39 Overhead<\/li>\n<li>\ud83d\udd39 Outside<\/li>\n<li>\ud83d\udd39 GPU Latency<\/li>\n<\/ul>\n<p>Para obtener lecturas m\u00e1s precisas, desactiva la opci\u00f3n <strong>\u201cUse Frame Rate\u201d<\/strong> y deshabilita el <strong>VSync<\/strong> desde los controladores de tu tarjeta gr\u00e1fica \ud83d\udda5\ufe0f.<\/p>\n<hr \/>\n<h3>\ud83e\udde9 Physics<\/h3>\n<p>Representa el tiempo que toma la f\u00edsica en ejecutarse. UPBGE\/BGE usa <strong>Bullet Physics<\/strong>, por lo que este valor indica cu\u00e1nto tarda ese motor en calcular colisiones y movimientos. Para reducir este tiempo:<\/p>\n<ul>\n<li>Usa <strong>formas simples<\/strong> (caja, esfera, c\u00e1psula) en lugar de mallas complejas.<\/li>\n<li>Crea una <strong>\u201cmalla proxy\u201d<\/strong> invisible para c\u00e1lculos f\u00edsicos en vez de usar la malla visible y detallada.<\/li>\n<\/ul>\n<hr \/>\n<h3>\ud83e\udde0 Logic<\/h3>\n<p>Este valor mide el tiempo invertido en <strong>Logic Bricks<\/strong> y <strong>scripts Python<\/strong> \ud83d\udc0d. Para optimizarlo:<\/p>\n<ul>\n<li>Reduce la cantidad de bricks y condiciones innecesarias.<\/li>\n<li>Perfila tu c\u00f3digo Python antes de optimizar (usa <code>cProfile<\/code> o herramientas similares).<\/li>\n<li>Si es necesario, migra partes cr\u00edticas de Python a <strong>C\/C++<\/strong>.<\/li>\n<\/ul>\n<p>\ud83c\udf93 Recomendado: charla de <strong>Mike Fletcher (PyOpenGL)<\/strong> sobre c\u00f3mo perfilar y optimizar c\u00f3digo Python.<\/p>\n<hr \/>\n<h3>\ud83c\udfac Animations<\/h3>\n<p>Incluye el tiempo que Blender usa para procesar datos de poses, interpolar fotogramas clave o resolver IK. Para reducir el tiempo:<\/p>\n<ul>\n<li>Usa <strong>menos huesos<\/strong> en tus armatures.<\/li>\n<li>Cambia al sistema IK <strong>iTaSC (Simulation)<\/strong>, que suele ser m\u00e1s r\u00e1pido que el Legacy Solver.<\/li>\n<\/ul>\n<p>\ud83d\udca1 Algunos usuarios han reportado mejoras de rendimiento de hasta <strong>4x<\/strong> usando iTaSC.<\/p>\n<hr \/>\n<h3>\ud83c\udf10 Network<\/h3>\n<p>El BGE tiene c\u00f3digo de red, pero es muy b\u00e1sico y solo se usa internamente para los sensores y actuadores de tipo <strong>Message<\/strong>. Dif\u00edcilmente afectar\u00e1 el rendimiento, pero si notas problemas, revisa cu\u00e1ntos mensajes se est\u00e1n enviando \ud83d\udce9.<\/p>\n<hr \/>\n<h3>\ud83e\udded Scenegraph<\/h3>\n<p>Controla la posici\u00f3n, rotaci\u00f3n y escala de los objetos, as\u00ed como las relaciones padre-hijo. Si este valor es alto:<\/p>\n<ul>\n<li>Reduce la cantidad de objetos activos en la escena.<\/li>\n<li>Optimiza jerarqu\u00edas innecesarias.<\/li>\n<li>Usa <strong>iTaSC<\/strong> para IK si est\u00e1s usando huesos.<\/li>\n<\/ul>\n<p>Tambi\u00e9n maneja los c\u00e1lculos de <strong>culling<\/strong> (frustum y oclusi\u00f3n).<\/p>\n<hr \/>\n<h3>\ud83c\udfa8 Rasterizer<\/h3>\n<p>El <strong>Rasterizer<\/strong> se encarga de renderizar la geometr\u00eda, shaders y filtros 2D. En versiones recientes, su tiempo se refleja en la categor\u00eda <strong>GPU Latency<\/strong>.<\/p>\n<p>Para mejorar el rendimiento:<\/p>\n<ul>\n<li>Simplifica geometr\u00edas y materiales.<\/li>\n<li>Evita tener demasiadas luces con sombras din\u00e1micas (cada sombra implica renderizar la escena nuevamente \ud83d\udd26).<\/li>\n<li>Reduce o desactiva filtros 2D costosos (bloom, SSAO, DOF, etc.).<\/li>\n<\/ul>\n<hr \/>\n<h3>\ud83d\uddb1\ufe0f Services<\/h3>\n<p>Tiempo invertido en procesar dispositivos del sistema (teclado, rat\u00f3n, etc.). Rara vez causa problemas \u2328\ufe0f.<\/p>\n<hr \/>\n<h3>\ud83e\uddfe Overhead<\/h3>\n<p>Este valor representa el tiempo usado en mostrar texto sobre la pantalla (FPS, propiedades de depuraci\u00f3n, etc.).<\/p>\n<p>\ud83d\udc49 Cuando ejecutes tu juego en modo <strong>release<\/strong>, este tiempo desaparecer\u00e1. Mientras tanto, puedes reducirlo mostrando menos propiedades debug.<\/p>\n<hr \/>\n<h3>\ud83d\udcbb Outside<\/h3>\n<p>Tiempo consumido fuera del bucle principal del motor (por ejemplo, procesos del sistema operativo). No puedes controlarlo, pero cerrar otras aplicaciones puede ayudar \ud83e\uddf0.<\/p>\n<hr \/>\n<h3>\ud83c\udfae GPU Latency<\/h3>\n<p>Nueva en la versi\u00f3n <strong>r59097 (Blender 2.69+)<\/strong>. Mide el tiempo que el CPU espera al GPU para completar tareas. Si esta cifra es alta, optimizar la l\u00f3gica o f\u00edsica no mejorar\u00e1 los FPS, ya que el cuello de botella est\u00e1 en la GPU \ud83e\udde9.<\/p>\n<ul>\n<li>Desactiva VSync para mediciones m\u00e1s precisas.<\/li>\n<li>Evita shaders y materiales muy pesados.<\/li>\n<\/ul>\n<hr \/>\n<h3>\ud83d\udd0d Show Render Queries<\/h3>\n<p>Otra opci\u00f3n \u00fatil es <strong>Show Render Queries<\/strong>, que muestra tres tipos de medici\u00f3n:<\/p>\n<ul>\n<li>\ud83e\uddee Samples passed query<\/li>\n<li>\ud83d\udcd0 Primitives passed<\/li>\n<li>\u23f1\ufe0f Time passed<\/li>\n<\/ul>\n<p>Como siempre, <strong>menos tiempo invertido = mejor rendimiento<\/strong> \ud83d\ude80<\/p>\n<p>\ud83d\udcd8 <a href=\"https:\/\/github.com\/UPBGE\/blender\/wiki\/0.2.1\" target=\"_blank\" rel=\"noopener\"><em>Lee m\u00e1s sobre esto aqu\u00ed.<\/em><\/a><\/p>\n<hr \/>\n<h2>\u2728 Conclusi\u00f3n<\/h2>\n<p>Optimizar tu juego en <strong>RanGE\/UPBGE<\/strong> no es solo cuesti\u00f3n de reducir pol\u00edgonos: es entender <strong>d\u00f3nde se gasta el tiempo de procesamiento<\/strong> y actuar sobre ello. <span style=\"color: #ff6600;\">Cuida tus f\u00edsicas<\/span>, optimiza tu l\u00f3gica y mide constantemente tu rendimiento. \ud83e\udde0\ud83d\udcaa<\/p>\n<p>Si tienes dudas, deja un comentario y con gusto seguimos profundizando en la optimizaci\u00f3n \u2699\ufe0f\ud83d\udd25<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u2699\ufe0f C\u00f3mo optimizar el rendimiento en UPBGE \/ BGE Si est\u00e1s desarrollando juegos con UPBGE \/ BGE \ud83d\udd79\ufe0f y ya tienes suficiente conocimiento para crear prototipos que funcionan bien, puede que hayas notado que, a medida que tu nivel crece, aparecen ca\u00eddas en los FPS en ciertas \u00e1reas o situaciones (por ejemplo, cuando varios objetos [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":763,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[124],"tags":[149],"class_list":["post-494","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-game-engines","tag-performance"],"jetpack_featured_media_url":"https:\/\/salvador.mata.com.mx\/blog\/wp-content\/uploads\/2026\/01\/OPT_RangeEngine_U2d3DsgSSU.gif","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/comments?post=494"}],"version-history":[{"count":5,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/494\/revisions"}],"predecessor-version":[{"id":762,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/posts\/494\/revisions\/762"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media\/763"}],"wp:attachment":[{"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/media?parent=494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/categories?post=494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/salvador.mata.com.mx\/blog\/wp-json\/wp\/v2\/tags?post=494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}