@ agnasg

Cómo saber si estás enamorado, en una simple y fácil lección

22-02-2018 10:47 AM

Estoy tratando que ciertos detalles a los que nunca le presto atención, no se escapen esta vez en un pet proyect actual (khpx), incluyendo no tener externs inútiles en los archivos y que las funciones se llamen de una forma uniforme y consistente. Por ejemplo, ¿cómo se debe llamar la función de inicialización de los mapas, init_map () o map_init ()? Estoy descartando initMap () porque estoy dejando la notación Camel solamente para los nombres de las variables locales después del módulo: map_getTheCoordinates (), por ejemplo.

Pues pensaba que yo tenía alguna preferencia linguistica sobre el tema, volviendo a la controversia init_map () vs. map_init (), pero no, resulta ser que en los fuentes de umoria podemos encontrar store_init () y magic_init(), pero también init_signals(). Por otro lado en los de rogue se ve init_player(), init_colors(), init_materials (). Por su parte en doom, predomina InitSlidingDoorFrames (), InitData (), InitThinkers (), etc. Así que no, no hay alguna regla discernible por lo que voy a inventar una, me quedo con map_init (), khpx_init () y help_init (). De esa forma la búsqueda en los drop down menu de Visual studio aparecen ordenados por módulo y por función.

Toda esta atención y dedicación a khpx me resulta inusitada, debe ser que estoy enamorado. Porque eso es amor, eso es estar enamorado: cuando le dedicas el tiempo y tu esmero al objeto de tu amor. Fácil de deducir y entender.

4 horas de “trabajo”

14-02-2018 12:33 PM
¿Quieren ver como pierdo 4 horas de trabajo? Este bug:
CUSTOMVERTEX* pV;
for (i = 0; i < MAX_MODIFIED_OBJS; i++) { 
        pV = pVertices += i * 4; 
        pV++; 
        pV->Z = 2.1f;
        pV++; pV++;
        pV->Z = 2.1f;
}

En mi defensa, este bug estaba profundo en el sistema de update antes del final rendering. En khpx el código está extremadamente modulado, con funciones lo más compactas posible (que es como se debe programar) Eso trae como consecuencia el problema de que para conseguir un bug tienes que seguir la secuencia de funciones y un bug puede desaparecer aun cuando sea obvio, como el de arriba.

La idea de esa rutina es colocarle 2.1f a la coordenada “Z” de los objetos de tipo CUSTOMVERTEX con índice 1 y 3. Lamentablemente la variable pV tenía serios problemas al ser inicializada. MAX_MODIFIED_OBJS eran 6 objetos de tamaño sizeof (CUSTOMVERTEX) * 4. Esta rutina generaba la inicialización solamente de los objetos 1, 2 y 4 lo cual parecía algo tan bizarro como imposible. Adiós a 4 horas de productividad echadas a la basura. Que lástima.

De la diversión y otros placeres medievales

11-02-2018 3:24 PM

Me he estado preguntando todo el día si khpx va a tener una audiencia. Algo así como un grupo de fans. Estoy viendo videos de Dark Soul, de Cupcake, otros, y obvio, tienen fans porque son divertidos, en su forma particular de ser divertidos. ¿Es khpx divertido? Es claro que hay una demanda para un space game. Stark Citizen y otros juegos similares (por no mencionar “No man sky”) revelan un apetito por el perfecto space game, que, al parecer, no ha llegado. O, quizás, los jugadores piensan que tiene que ser posible, aunque todavía no se ha visto un space game definitivamente exitoso, tiene que ser posible, un space game con el tipo de juego que ha habido en otros géneros. En el cine, sucede que las películas han tratado de emular éxitos como el de 2001 o Alien.  Pero eso no sucedió hasta Gravity o, quizás, Interstellar. Eso no ha pasado con los space games. Sí, claro, Eve, etc, etc, pero todavía parece haber un territorio no 100% explorado como ha sucedido en otros tipos de juegos. En otras palabras, sí, khpx tiene un interesante segmento del mercado, y sí van a haber jugadores interesados, a pesar de sus características nerdianas. ¿Eso lo hace per se, divertido? No necesariamente pero si te gusta el estilo, el género, las características, es un buen primer paso. Nadie se divierte con algo que no le gusta: la diversión viene después de la degustación, cuando el acto es consumado nuestro cerebro transforma lo que estamos haciendo en una reacción: ¡Que divertido! Esto sucede después, no antes. Por ello antes de la diversión tiene haber una aproximación debido al agrado: esto me gusta, deseo probarlo. No podemos divertirnos con algo que no experimentamos, y nunca vamos a experimentar algo que nos causa repulsión. Por ello, la existencia del mercado para los space games es tan importante.

Pero eso no importa. A mi solamente me interesa un jugador: yo.

Se ha dicho que si un juego al menos tiene un jugador, ya ha dado el primer paso en la dirección correcta (no se quién dijo eso, y si nadie lo ha dicho, bueno, ya lo dije). Ya en otros sitios he mencionado las bondades de khpx, todavía si me permiten mencionaré una más: khpx es simple en su interfase, simple en los efectos especiales, tiene las cosas básicas que debe tener todo space game (exploración, uso de recursos, progresión a través de la dominación de planetas, recursos y tecnologías, y otras populares características), y además ofrece múltiples sistemas de progresión: misiones, piratería, penetración tipo ninja, venta de armas, alianzas.

Yo lo que quiero es un space game

18-01-2018 5:24 AM

Mi cerebro trabajando a las 3am

Mi cerebro trabajando a las 3 de la mañana es una máquina prodigiosa. Ayer estaba resolviendo una complicada formula trigonométrica, que involucraba modificaciones en al menos 3 funciones en mi juego espacial khpx, sin mucho éxito. Creo que le dediqué 1-2 horas al tema, y parte de mis pensamientos durante los 40 minutos de Lost (voy por la última temporada, Locke realmente me tiene molesto). Hoy, en 2 minutos resolví el problema, agregando un término en la ecuación (algo así como a=b+c => a=b+c-d. Ese término ‘d’ me consumió sin éxito 2 horas ayer).

Los programadores sabemos la potencia que tenemos en las horas de la mañana, y por eso no la desaprovechamos nunca. Usualmente dejo las más complicadas actividades para estas horas, y las cosas rutinarias o que puedo hacer en piloto automático para el resto del día.

“Irrelevante es una término legal”

Esta pregunta en stackoverflow es una maravilla. ¿Puede “a== 1 && a ==2 && a==3” evaluar a TRUE (verdadero) en alguna situación, en javascript?

El preguntón recibió esta pregunta en una entrevista de trabajo y su respuesta fue “imposible”. Ouch… craso error. En computación, como explico más adelante, no existe tal cosa: todo es posible.

Las respuestas son brillantes. Yo por mi parte respondí  a la primera parte de la pregunta ( ¿Puede “a== 1 && a ==2 && a==3” evaluar a TRUE?) con un “Sí, en cualquier lenguaje de programación” y a continuación muestro la versión en C/C++:


#define a   (b++)
int b = 1;
if (a ==1 && a== 2 && a==3) {
    printf ("Yes, it's possible!\n");
} else {
    printf ("it's impossible!\n");
}

Por supuesto, hubo respondones que adujeron que la pregunta es en relación a javascript, y que C/C++ es irrelevante. Mi querido amigo, mi apreciado lector, irrelevante es una término legal, usado en los tribunales, en programación todo es relevante, incluyendo los comentarios que te hizo tu mamá cuando te despertaba para que te fueras a la escuela. Si insistes en usar el término “irrelevante”, la próxima vez que te persiga un bug, te va a torturar durante días, hasta que digas “nada es irrelevante en programación, nada es irrelevante en programación. Lo juro.” Imposible, irrelevante, nunca, siempre,”no puede ser”, son términos inexistentes en la jerga de cualquier programador profesional.

Star citizen ha recaudado más dinero que la deuda externa de Venezuela

Este artículo. Aquí están los comentarios en reddit.  Por si has estado debajo de una piedra en la redoma de Petare en los últimos 3 años, Star citizen, un juego ambientado en el espacio (space game) inició un Kickstarter  hace tres años, y lleva recaudado casi 100 millones de dólares. Todavía parece que no hay una fecha oficial del lanzamiento. La gente ya no se acuerda del juego, y sigue recaudando dinero, hoy en día. ¿Hay algo positivo en todo esto? ¿Podemos aprender algo? La primera lección es que un Kickstarter aguanta lo que sea (en este momento hay 15 millones de patrocinadores en  kickstarter.com , casi 140 mil proyectos financiados). Lo segundo es que la búsqueda por el perfecto space game no se detiene. Toda la decepción de “No Man’s Sky” no desanimó a los jugadores.

¿Mi respuesta? khpx…

“poder jugar con un comerciante, un artesano o un diplomático, establecer mis rutas comerciales, impactar al mundo en alguna manera… ¡o hacer lo que quiera!” (“to be able to play a trader or a crafter or as a diplomat, set my trade routes, impact the world this way… or do whatever I want!”)

Objetivo del juego: abierto, libre

26-12-2017 8:42 AM

“Ningún precio es demasiado alto por el privilegio de ser el dueño de sí mismo”

– Friedrich Nietzsche

Leo con cinismo invertido (algo que acabo de inventar) una interesante descripción rápida de Minecraft:

“El juego, un sandbox tridimensional sin objetivos particulares, permite a los jugadores construir mundos enteros mediante la “minería” y la construcción con bloques pixelados tipo dibujos animados.” (“The game, a three-dimensional sandbox with no particular goals, allows players to construct entire worlds by “mining” and building with cartoonish pixelated blocks.”). La descripción aparece en un artículo en wired magazine sobre el botnet Mirai (un malware que infecta cámaras de seguridad y routers para generar ataques DDOS). Altamente recomendable su lectura.

El contexto en el que se menciona Minecraft dice también que es un juego de $27, con 55 millones de jugadores mensuales (que lo juegan en algún momento en el mes) y que hay un millón de jugadores en línea todo el tiempo. Y todo eso con un juego donde el objetivo es armar “cosas” con cajitas que lucen como de dibujos animados. O como ha sido llamado con frecuencia, con un lego digital. Lo cual resulta peyorativo y todo un logro al mismo tiempo.

En el otro lado del universo, en /r/IndieDev, 99 de cada 100 juegos apenas alcanza 100 jugadores los primeros 100 días. Y los hay con descripciones tan tontas como las de Minecraft, tan inteligentes y sofisticadas como las de Eve, tan incomprensibles como las de Limbo. Las descripciones no importan. De hecho, el juego tampoco importa. Lo que importa al final es lo que los jugadores hacen con el juego. Al escribir sobre khpx que es “un juego ambientado en el espacio” (o un juego espacial) donde puedes explorar y conquistar, pero con mínimas limitaciones, lo que busco es que sea un juego donde el jugador es el que decide cuál es y dónde está el juego, donde el límite es su imaginación, lo cual suena un lugar común, pero sigue siendo igual de apetecible. Es un juego abierto, en el sentido de que su objetivo le pertenece al jugador.

Una grúa telescópica de las que usan en los puertos

Pero hay jugadores que encuentran un juego sin un objetivo definido similar a un cuadro de Picasso: algo que no tiene sentido. Y huyen despavoridos ante la posibilidad de verse abrumados por “el sin sentido”. Un ejemplo de esto son las personas que ante un conjunto de piezas genéricas de lego son incapaces de hacer algo discernible con ellas. O los que encuentran absurdo un cubo de rubik: esto no se puede hacer. Para ellos mi recomendación: huyan, huyan sin ver para atrás, khpx no es para todo el mundo. Siempre queda farmville.

Dora Maar

O lo puedes intentar. Todo se hace simple si lo intentas. Por ejemplo, yo pasé dos semanas escribiendo este post, buscando básicamente la mejor forma de expresar estas ideas. Una vez escrito luce obvio, claro, simple. Pero ante la hoja de papel en blanco (o la pantalla en blanco) las cosas no lucen tan fáciles. Como quiera que sea khpx incluye:

  • Tecnología de scanners, telemetría, analizadores de espectro y más.
  • Mapas
  • Detector de formas de vida
  • Múltiples tipos de armas con diversos niveles de desarrollo
  • Manejo de flota
  • Manejo de múltiples sitios en diferentes planetas con explotación de diversos recursos

Con todo esto, y algo de imaginación es mucho lo que se puede hacer. Creo.

El mensaje en este post ya está escrito y descrito: khpx es libertad de ser dueño del juego, nada más, nada menos. ¿Será posible?
 

NOTA: Fecha de inicio:09-12-17. Última edición: 26-12-17

khpx

09-12-2017 8:03 AM

Este zombie (he desarrollado varias versiones, desde 2012) es un juego de estrategia con elementos del género 4x (eXploración, eXpansión, eXplotación, eXterminio) donde el jugador puede practicar la minería, la cosecha, desarrollo de tecnología, y en general desarrollo y dominio de recursos. Sin embargo, mi concepción es que khpx es un juego ambientado en el espacio. El resto son etiquetas inútiles que dicen mucho y explican poco.

El jugador comienza con una nave espacial tan pequeña que en realidad es un satélite modificado y armado que puede trasladarse de un sistema a otro. A través de diversas estrategias puede ir adquiriendo nuevas armas, equipos, naves, minas, territorios agrícolas y teóricamente el control de diversas tecnologías que le permitirá expandir su dominio. En el diseño actual hay un elemento generalmente  impopular que cambia radicalmente el balance de un juego, y que hay que mencionar desde el comienzo : permadeath, es decir, si mueres pierdes todo lo que has logrado hasta el momento. El por qué de  permadeath  lo discutiré más adelante y en otros posts.

No hay profesiones ni especialización, el jugador puede ejecutar cualquier actividad sin entrenamiento o sin necesidad de usar puntos o dinero. La actividad sube de nivel y de efectividad con su uso. Todas las actividades están disponibles desde el día 1, así que depende del jugador cuáles desarrollar.

Desde el punto técnico es un descanso para mí porque está hecho en DirectX, sin engines ni librerías adicionales, sin gráficos sofisticados, meshes y texturas, solamente con dibujos en modo wireframe. El juego no pretende ni es una simulación: vive en un universo con reglas diferentes, no necesariamente completas. Es decir, es posible que no estén implementadas ciertas reglas físicas/químicas comunes en nuestro universo. Los sonidos y los efectos están reducidos al mínimo. Esto, al menos en la primera versión. Su enfoque, en fin, es minimalista, estilo años 90, pero actualizado desde el punto de vista de las interfases.

Todas las acciones se realizan desde una cónsola, reminiscencia de la consola de unix. Voy a agregar hypertext (textos clicklables) en los listados para activar el panel de manejo de los elementos, pero estos paneles se podrán acceder igualmente a través de comandos. En estos casos estoy agregando el uso del mouse porque asumo que los jugadores van a protestar la interfase y van a exigir algo más amigable, sobretodo porque algunas personas seguramente encontrarán el uso extensivo de la cónsola como algo aburrido/tedioso/repetitivo, sobretodo a la luz de los juegos actuales. Para mi, esta es una de las principales motivaciones: un juego donde toda la interfase es a través de comandos de texto. Constituyen unas vacaciones del mouse, si se quiere, y me recuerdan  los juegos de los años 80s.

La economía es un dolor de cabeza para cualquier diseñador de juegos, y  khpx no es la excepción. Inicialmente (porque imagino que esto va a evolucionar si alguna vez khpx llega a tener > 10 jugadores) la economía funcionará con el comercio directo entre jugadores a través de un sistema universal de comunicaciones: no hay casa de subastas, no hay vendedores npc. Los artefactos (naves, robots, equipos de comunicación y análisis) son producidos por los jugadores juntando las partes producidas por las fábricas que el jugador posea. Los planos (blueprint) los tienen los ingenieros que estén en la nómina del jugador: por eso es importante dominar planetas y/o ciudades con alto potencial tecnológico. La consecuencia lógica de esto puede ser que se desarrolle un comercio alrededor de las ciudades con potencial tecnológico o posiblemente con los ingenieros. Me refiero a que sea posible vender una ciudad (o el control de una ciudad para ser más exactos) o el control sobre un ingeniero. Esto resulta retorcido desde el punto de vista de los juegos actuales pero no desde el punto de vista pragmático: si a mi me dan un blueprint para construir un scanner que me permite detectar formas de vida en un planeta, más allá de usarlo como decoración en mi oficina no sabría que más hacer con él: necesito a un ingeniero y una fábrica para construirlo. En algunos juegos con tener el blueprint mágicamente el jugador se hace un experto en tecnología de scanners planetarios. khpx no es uno de esos juegos.

Mi intención es que eventualmente los jugadores orientados a la economía y al pvp (“economy focused player” and pvp players)  huyan lejos porque khpx hace énfasis en las 3 primeras X de eXploración, eXpansión, eXplotación, eXterminio. Exterminio tiene más que ver con pvp y jugadores depredadores, quienes usualmente se divierten mucho, pero lamentablemente se divierten solos. Los demás jugadores quedan como peones o presas, lo cual no es divertido, en general. En los juegos que involucran expansión y control de recursos, los primeros jugadores tienden a ganar rápidamente demasiado control. La prohibición de pvp es mi intento para evitar  el problema de tribalwars.net, donde eventualmente, un jugador con demasiada fuerza aplasta a sus vecinos. Yo no soy Rubrius Gallus (Masada), así que tendré que disponer de las ideas que tengo a la mano, como han hechos todos los diseñadores hasta hoy. khpx es una interesante oportunidad para probar el concepto y, quizás, desarrollar uno nuevo, si todo sale bien.

¿permadeath? pm en khpx significa que si no estás alerta, si no actúas con astucia, si no piensas en la mejor estrategia para cumplir con tus objetivos eres historia. pm en khpx significa ¡despierta!, ya no estás en farmville. El último objetivo de permadeath en khpx es que descubras (bien sea tarde o temprano) que es mejor “tratar de escurrirte en el territorio controlado por el enemigo, investigar el sitio, y  agarrar el botín sin que nadie te detecte (“trying to sneak into enemy controlled space, track down a complex, and grab the loot without anyone detecting you“). La confrontación directa, o estar descuidado en khpx es mortal.

Presentación rápida (“Elevator pitch“)

khpx es un juego ambientado en el espacio que mezcla nuevos elementos de diseño con la tradicional exploración y combate con comandos de texto para crear una experiencia única.

“khpx is a space game that blends new design elements with classic terminal-based exploration and combat to create a unique experience.”

Cierre de Noviembre 2017

24-11-2017 5:31 PM

El post con sólo enlaces que siempre publico y que todo el mundo está esperando con ansias y lee con fruición

  • This was never our intention. Sorry we didn’t get this right.” (“Esto nunca fue nuestra intención. Lo sentimos no lo hicimos correctamente”). Si me dieran un bitcoin por cada vez que he oído o leído esto de una corporación sería millonario en este momento. EA deshabilitó momentaneamente el acceso a los privilegios en forma paga en Star Wars Battlefront 2, tratando de deslizar el tiempo y que la tormenta termine. Buen intento EA.  (Si has estado debajo de una roca y no sabes de qué se trata todo esto, en Star Wars Battlefront 2 puedes comprar loot boxes, lo cual posiblemente te permita convertirte en Dark Vader, utilizando tu tarjeta de crédito. Dinero fácil). Una empresa, al igual que cualquier persona, hará cualquier intento legal (y a veces dudosamente legal) para conseguir dinero, aprovechándose de cualquier oportunidad disponible. Los únicos que creen que esto no es posible o no debe ser son los adolescentes y los comunistas. Discutir sobre el tema es perder el tiempo.
  • I guess my pessimism is justified.” (supongo que mi pesimismo es justificado Creo entender en este post en gamasutra que uno no debe colocar todas sus esperanzas en un juego porque puede ser que sus ventas no sean las esperadas. Si te estás dedicando exclusivamente al desarrollo de juegos para vivir, será mejor que tengas al menos 5000 seguidores y que cualquier post sobre tu juego genere al menos 50 comentarios instantáneos. De lo contrario, es posible que pase desapercibido. Hay que dedicarse al desarrollo de juegos por las razones correctas. Y usualmente, el dinero no puede/debe ser una de esas razones. Ya he escrito en este sitio sobre lo difícil  que es desarrollar un juego. En este momento estoy trabajando (devlog) en uno con aspiraciones de opera espacial, pero si revisas la bitácora descubrirás que eso se reduce a estudiar velocidades orbitales y fórmulas trigonométricas, lo cual no parece sublime ni romántico ni muy al estilo de Guiseppe Verdi. Como leí reciente en el sub-reddit de writing , “You have to love the effort divorced from the result” (algo así como la meta es el camino). De lo contrario hay que prepararse para el fracaso, más que para el éxito.
  • En la misma tónica, el viejo tío loco recuerda que uno de sus mejores juegos (Avernun) después de 20 años todavía le está generando dinero, pero recibió una evaluación de 17/100 de pcgamer, y fue comparado con vómito, e incluye una lista de cantantes que han muerto ahogados en su vómito. En general los comentarios actuales sobre Avernun son mixtos tendiendo a ser malos (ver aquí por ejemplo), pero el punto es que hay que tener la piel gruesa en este negocio (o en cualquier negocio), porque bien sea si los resultado son malos o parecen malos, hay que actuar como los músicos en la cubierta del Titanic hundiéndose. Relajados y en lo suyo.
  • Yo me mantengo cuidadosamente alejado de los foros de los desarrolladores, y reviso solamente algunos, los que me parecen interesantes. Pero de vez en cuando hay algún post que vale la pena revisar como es el caso del nuevo proyecto (pero que comenzó en 2014) de Lucas Pope, el desarrollador de Papers,please (Steam). Este es el post (mensaje reciente), estuve leyendo las 40+ páginas de comentarios, etc.. Lo interesante aquí por supuesto es el 1-bit Rendering, lo que le da al juego una apariencia como las de los juegos de Mac, en sus comienzos. Claro, también me intriga su selección de temas e historias. ¿Explorar un galeón perdido en 1800s y que aparece súbitamente desierto? Intrigante. Otro punto es que no entiendo como él y otros desarrolladores manejan o protegen su propiedad intelectual. En las mencionadas 40+ páginas hay algunos posts (por ejemplo este) donde aparecen todo tipo de ideas sobre el juego. ¿Qué pasa si él incorpora estas ideas y el autor reclama ser colocado en los créditos o una paga como contribuidor? Perturbador.Como una nota aparte, la razón por la que no me gustan foros como tigsource es porque están llenos de comentarios como “looks very cool already, excited to see where this goes” o “Nice, I’ll be keeping an eye on this “. reddit y stackoverflow tienen estrictas políticas para evitar esto, usualmente. Disclaimer: yo compré y jugué Papers,please y me gustó bastante. Creo que lo jugué durante toda una hora o quizás dos. Increíble.
  • Anoche estuve en Vault of Wardens, en wow, con mi healer, en dificultad mítica. Ya había estado ahí antes pero la experiencia fue nueva y excelente, sobretodo por el reto. Ni idea por qué pero el último boss, Cordana Felsong, fue difícil. Me recordó a uno de los bosses de pandaria, por los guardianes que arrasan con todo a su paso. Quizás nuestro dps era bajo o algo nos faltó pero casi fueron 2 wipe. Ouch!
  • Se me fundió una neurona colocándole el título a este post.

Tomorrowland

22-11-2017 4:03 AM

Esta película Tomorrowland es insufrible, lo cual es una lástima porque su belleza visual, los actores y la velocidad de la dirección la hacen parecer una buena película, pero no lo es. Verla completa es un epopeya y lo hice no una, sino dos veces, solamente para estar seguro. La razón es fácil de deducir, desde el comienzo estamos perdidos porque no sabemos ni tenemos alguna idea de para dónde va la película. De hecho lo descubrimos en los últimos 10 minutos. Es como esta vieja película romántica de Molly Ringwald,  Sixteen Candles, donde los protagonistas de una historia romántica se besan por primera vez faltando 5 minutos para que termine la película.

Tomorrowland hace un excelente trabajo ocultando de qué se trata durante toda la película, exactamente lo contrario de lo que una buena película debe hacer.

La banda de los satélites asesinos

11-11-2017 8:02 AM

Como ya mencione en un post anterior, estoy trabajando en un viejo zombie que extraje del baúl: khpx, una aventura espacial con satélites asesinos. Gira alrededor del concepto de “eat or be eaten“, o, si no matas te matan. Por aquélla época yo jugaba Tribal Wars , que parece ser un juego de estrategia, pero en realidad es muy simple, si dejas que alguien se establezca cerca de tu pueblo, estás muerto. Anyway, khpx fue programado cuando yo estaba migrando de C a C++, es decir, no usa clases, entre otras cosas. ¡Que refrescante!. El código es claro, todo parece estar a la mano, y modificar lo que sea, o agregar nuevas cosas es simple. ¿Usar clases es complicado? No exactamente, pero hay una metodología que se debe seguir para usarlo, y hace que el código comience a oscurecerse, y funciona más como una camisa de fuerza (de las que usan en los psiquiátricos).

Hay interminables discusiones sobre cómo hacer para programar un juego de forma que sea fácil de mantener, pero no es de eso de lo que quiero hablar, sino del mantenimiento del juego, básicamente de lo que estoy haciendo en este momento con khpx. Las clases permiten agrupar funciones y sus datos, y supuestamente esto es bueno porque puedes generalizar este agrupamiento y crear grupos de grupos con funciones y datos comunes. ¡Te atrapé! Ahí está problema, como se supone que debemos hacer eso, el código resultante es oscuro, y difícil de modificar porque cualquier cambio se replica en el resto del sistema con consecuencias que no puedes descubrir sino horas después lo cual genera una pérdida de tiempo innecesaria. Sí, ya sé, una buena documentación resuelve eso, claro. Que bueno. Maravilloso.

Las clases permiten agrupar funciones y sus datos, pero eso también lo puedes hacer colocando las funciones y datos en archivos separados, con una nomenclatura uniforme. Por ejemplo, los juegos tienen objetos que deben ser manipulados en el ciclo inicialización, actualización, despliegue (init, update, render), entonces colocamos en el archivo las funciones initObjet (), updateObjet (), renderObjet (), y listo. Claro estas funciones pueden llamar a otras funciones similares dependiendo del tipo de objeto, y eso es todo, sin más complicación.

Por eso luego de pensarlo 3 nanosegundos abandoné la idea de migrar khpx a un sistema con clases, apuntadores a objetos, singletons, etc, etc. Me acabo de ahorrar días de no programar el juego programando el juego. Por lo demás, si googleas classes vs. funtions encontrarás comentarios tales como estos, donde palabras más palabras menos la conclusión pragmática es no uses clases. Normalmente.

khpx devlog

Wow classic

08-11-2017 12:46 PM

La siguiente expansión de World of Warcraft es Battle for Azeroth, pero esa no fue la única noticia en Blizzcom este año, también fuimos sorprendidos con el anuncio de que World of Warcraft: Classic va a ser una realidad en algún momento del próximo año. Al parecer Blizzard finalmente está listo para lanzar wow vanilla nuevamente, con todos los problemas técnicos que eso implica (es un juego diferente, requiere sus propios servidores, con todos los costos involucrados). La pregunta es si los jugadores están listos para enfrentarse a wow vanilla. Yo no jugué wow en el período 2004-2006 pero si en Burning Crusade en 2007: es realmente difícil, no solamente los calabozos y los raids, sino inclusive y especialmente las misiones. No es solamente el detalle de mata 10 ratas, luego 10 superratas y finalmente a la jefa de las ratas. Eso es lo de menos. En wow vanilla hasta la más insignificante rata es un reto si no estás lo debidamente preparado.

Hoy requieres tener un buen gear con pociones, gemas, encantamientos de la mejor calidad para poder sobrevivir en los dungeons míticos. Pero en wow clásico requieres todo eso para andar por el mundo haciendo misiones: el medio ambiente te va a liquidar sin misericordia si no andas alerta.

 

Ese nivel de dificultad puede agarrar desprevenido a más de uno: subir de nivel puede ser labor de una semana en vez de unas cuantas horas como es en wow Legion. Así que estoy de acuerdo con lo que han dicho algunos comentadores que este va a ser un juego para una élite y no para el público en general, lo cual explica la renuencia de Blizzard a aceptar la exigencia de los jugadores en el sentido de tener wow classic nuevamente: “en realidad tú no quieres eso” (dicho por un ejecutivo de Blizz hace algunos años)

Lo cual nos lleva a la pregunta de para qué queremos esto: con el tiempo los jugadores conseguimos nuestra casa: el juego donde nos sentimos a gusto. Hay algunos jugadores (en steam por ejemplo) que compulsivamente juegos decenas de juegos. Pero esos son también una minoría. Yo creo que wow classic ni siquiera va a tener un volumen significativo en el lanzamiento. Lo cual me lleva a pensar que quizás esta sea una idea que no se va a materializar. El tiempo lo dirá.