{"id":1557,"date":"2026-05-01T11:32:16","date_gmt":"2026-05-01T09:32:16","guid":{"rendered":"https:\/\/nightfoxandco.com\/?p=1557"},"modified":"2026-05-01T11:52:39","modified_gmt":"2026-05-01T09:52:39","slug":"ngine-v1-22-0stable","status":"publish","type":"post","link":"https:\/\/nightfoxandco.com\/?p=1557","title":{"rendered":"N&#8217;gine v1.22.0+stable"},"content":{"rendered":"\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3>\u2728 Nuevas Caracter\u00edsticas y Mejoras<\/h3>\n<ul>\n    <li><strong>Sistema de Texto y Tipograf\u00edas:<\/strong>\n        <ul>\n            <li>Reescritos por completo los m\u00e9todos de carga de tipograf\u00edas y de impresi\u00f3n de caracteres. Ahora se genera un atlas con todos los caracteres y la funci\u00f3n de impresi\u00f3n almacena la lista de v\u00e9rtices de los glifos hasta renderizar todo el texto pendiente en una sola llamada.<\/li>\n            <li>A\u00f1adido soporte para el cambio de color de tinta en el m\u00e9todo <code>Print<\/code> de la clase <code>NGN_TextLayer<\/code>, mediante el c\u00f3digo de escape <code>\\a<\/code> y el color en hexadecimal (ej. <code>\\a0xFF00FF<\/code> para definir el color de tinta \u00abrosa\u00bb).<\/li>\n        <\/ul>\n    <\/li>\n    <li><strong>Reproducci\u00f3n de V\u00eddeo:<\/strong>\n        <ul>\n            <li>A\u00f1adida la clase <code>NGN_Video<\/code>, la cual permite la reproducci\u00f3n de archivos de v\u00eddeo en formato <strong>OGV<\/strong>.<\/li>\n            <li>A\u00f1adido el m\u00e9todo <code>Video()<\/code> a la clase <code>NGN_Render<\/code>, el cual renderiza el fotograma de v\u00eddeo actual decodificado por <code>NGN_Video<\/code>.<\/li>\n        <\/ul>\n    <\/li>\n    <li><strong>Gesti\u00f3n de Archivos:<\/strong>\n        <ul>\n            <li>Modificado el m\u00e9todo <code>ReadBinaryFile()<\/code> de la clase <code>NGN_Disk<\/code> para que admita la lectura parcial de un archivo.<\/li>\n            <li>A\u00f1adido el m\u00e9todo <code>LoadFileChunk()<\/code> a la clase <code>NGN_Load<\/code>, el cual lee un fragmento de un archivo desde un origen predeterminado.<\/li>\n        <\/ul>\n    <\/li>\n    <li><strong>Sprites y Animaci\u00f3n:<\/strong> A\u00f1adido el par\u00e1metro opcional <code>loop_delay<\/code> al m\u00e9todo <code>AddAnimation<\/code> de la clase <code>NGN_Sprite<\/code>. Este establece un tiempo de espera antes de repetir la animaci\u00f3n, en caso de estar configurada en bucle (por defecto tiene un valor de <code>0<\/code>, manteniendo la compatibilidad con versiones anteriores).<\/li>\n    <li><strong>Herramientas de Profiling:<\/strong> Se a\u00f1aden los m\u00e9todos <code>GetFrameTime()<\/code> y <code>GetWorkLoad()<\/code> en <code>NGN_System<\/code>, los cuales devuelven el tiempo (en milisegundos) y la carga de trabajo (en porcentaje) del frame anterior.<\/li>\n<\/ul>\n\n<h3>\ud83d\udc1b Correcciones y Optimizaciones<\/h3>\n<ul>\n    <li><strong>Motor de Render (Canvas):<\/strong> Reescritura de parte del motor de render de la clase <code>NGN_Canvas<\/code>, acelerando el renderizado un <strong>500% aprox<\/strong>. Esto permite tambi\u00e9n que las formas dibujadas apliquen el canal alpha del color sobre el contenido actual del canvas (antes el color se sobrescrib\u00eda directamente).<\/li>\n    <li><strong>Estabilidad en Evercade:<\/strong> Se fija el formato de p\u00edxel a <strong>RGBA8888<\/strong> en todas las texturas, excepto en las tipograf\u00edas, que mantienen <strong>ARGB8888<\/strong> (requerido internamente por FreeType). Esto soluciona cuelgues al ejecutar c\u00f3digo en la plataforma Evercade.<\/li>\n    <li><strong>Framerate y Temporizadores:<\/strong>\n        <ul>\n            <li>Reescritura del m\u00e9todo del contador de FPS.<\/li>\n            <li>Reescritura del m\u00e9todo que limita el framerate por software, siendo ahora mucho m\u00e1s preciso.<\/li>\n        <\/ul>\n    <\/li>\n    <li><strong>Matem\u00e1ticas del Core:<\/strong> Optimizaciones internas a nivel de c\u00e1lculo en m\u00faltiples m\u00e9todos de la librer\u00eda (ej. cambios de divisiones como <code>\/2.0f<\/code> a multiplicaciones como <code>*0.5f<\/code>).<\/li>\n    <li><strong>Correcci\u00f3n de Herramienta (NGN_FileSystem):<\/strong> Corregido un bug en el algoritmo de ofuscaci\u00f3n de la herramienta <code>NGN_FileSystem<\/code>.\n        <ul>\n            <li style=\"color: #d32f2f; margin-top: 10px;\">\u26a0\ufe0f <strong>CR\u00cdTICO:<\/strong> Este cambio en la estructura obliga a reempaquetar todos los archivos de recursos con esta nueva versi\u00f3n de la herramienta si se actualiza a esta versi\u00f3n del SDK.<\/li>\n        <\/ul>\n    <\/li>\n<\/ul>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"N&#039;gine v1.22.0+stable\" width=\"780\" height=\"439\" src=\"https:\/\/www.youtube.com\/embed\/-xRnbt0m1K0?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Descarga: <a href=\"https:\/\/github.com\/knightfox75\/ngine\/releases\/tag\/v1.22.0%2Bstable\" target=\"_blank\" rel=\"noreferrer noopener\">Repositorio oficial en GitHub<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u2728 Nuevas Caracter\u00edsticas y Mejoras Sistema de Texto y Tipograf\u00edas: Reescritos por completo los m\u00e9todos de carga de tipograf\u00edas y de impresi\u00f3n de caracteres. Ahora se genera un atlas con todos los caracteres y la funci\u00f3n de impresi\u00f3n almacena la lista de v\u00e9rtices de los glifos hasta renderizar todo el texto pendiente en una sola <a class=\"more-link\" href=\"https:\/\/nightfoxandco.com\/?p=1557\">Read More &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-1557","post","type-post","status-publish","format-standard","hentry","category-ngine"],"_links":{"self":[{"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=\/wp\/v2\/posts\/1557","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1557"}],"version-history":[{"count":3,"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=\/wp\/v2\/posts\/1557\/revisions"}],"predecessor-version":[{"id":1560,"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=\/wp\/v2\/posts\/1557\/revisions\/1560"}],"wp:attachment":[{"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1557"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1557"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nightfoxandco.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1557"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}