@ agnasg

agnasg


Eveonline 2do intento: fallido

08-08-2018 7:24 PM

Por qué no estoy sorprendido.  Realmente intenté hacer el tutorial dos veces. Con diferentes personajes, porque al parecer no hay forma de resetear el tutorial (en honor a la verdad en otros juegos tampoco. Pero en Eve se puede regresar al último punto seguro como ellos lo llaman, que a veces funciona/sirve). Constantemente me quedaba trancado porque las instrucciones o no eran claras o se referían a cosas que no aparecían por ninguna parte. Y eso que hay paneles por doquier indicando dónde están las cosas (y normalmente están en el medio y no te dejan ver nada). Me quedaba 5-10 minutos viendo la pantalla repitiéndome, “esto debe tener sentido“. Usualmente lo encontraba. Creo que ya estaba terminando el tutorial cuando finalmente me tranqué sin remedio. Me gané por mis logros una nave nueva, el punisher, instalé los equipos, y me faltó cargar las municiones.  Supuestamente está en el items hangar, pero no, no está por ningún lado. En el canal de newbies me dieron algunas sugerencias pero nada, ninguna me ayudó aunque tenían sentido.

Finalmente alguien me dijo que las municiones eran una cosa llamada Standard S, cuyo panel de info no dice que es municiones. El segundo problema es cómo cargar las armas con estas municiones. Pero hablemos de eso dentro de un rato.

En general hay un esfuerzo genuino detrás de Eve en ser un buen juego. Pero hay las pequeñas estupideces difíciles de tolerar. Por ejemplo lo de colocar la barra de progreso abajo de la ventana (con el riesgo de que no se vea si la resolución no es la correcta). O que a veces el launcher dice “Please wait… Checking the GUI version… RETRY”. ¿Qué significa esto? ¿Que espere o que presione el botón RETRY? Lo peor es que el botón no responde (finalmente despliega el mensaje connection timeout. Otras veces despliega errores como error while refreshing token. Parece programado por Microsoft en el tiempo de Windows Vista.)

Volviendo a cómo cargar las armas. La interfase es complicada porque se trata de un juego complicado. Pero es, además, artificialmente complicada. Las armas se colocan en los slots de las armas, pero para cargarlas con las municiones, se debe hacer drag and drop de las municiones sobre la nave, no sobre las armas. ¿Por qué esta inconsistencia en un juego con 15 años en el mercado? No tengo idea.

Las inconsistencias inclusive son inconsistentes entre sí: las municiones se colocan en las armas colocándolas sobre la nave en la ventana donde físicamente se ve la nave, pero cuando vamos a salir de viaje debemos mover las municiones del hangar de la nave a otro sitio, que no sabemos cuál es porque debemos mover las municiones del hangar al inventario, arrojándolas sobre el nombre de la nave (esta vez es el nombre, no la imagen). Es decir, el inventario de la nave y el hangar de la nave parecen ser dos cosas diferentes, pero para llegar al hangar debemos presionar el botón de inventario. ¿Alguien entiende esto? Es como un equipo de computación que trabajé hace 30 años, Convex, la forma como se configuraban los discos parecía diseñado por un leñador. Tenías que configurar el configurador para poder configurar una partición del disco, y luego para formater la partición, tenías que configurar de nuevo los comandos. Tengo un bloqueo mental en este momento y no puedo explicar qué significa “configurar un comando”.

En el canal de los newbies con frecuencia salía alguien con similares problemas. Aura, el npc que te guía en el tutorial a veces te dice que hagas algo, y se queda callada después que lo haces. Tienes que deshacer lo que hiciste y hacerlo de nuevo para que ella se de cuenta que ya lo hiciste. De nuevo, cómo es posible que un juego tan maduro tenga este tipo de bugs es difícil de entender.

Hay otras cosas que forman parte de la idiosincrasia del juego que o las aceptas o no. El juego es así. Es como en este mud llamado Bat (bat.org), entre los magos hay una versión llamada los Riftwalkers. Estos magos tienen un voidwalker, es un poderoso tanque, de verdad es muy divertido jugarlo, pero está lleno de arbitrariedades. Por ejemplo el enlace entre el mago y el voidwalker se pierde y tienes que reactivarlo, y, si juegas demasiado, tu voidwalker se puede molestar contigo entonces tienes que hablar con el maestro de los Riftwalkers para que interceda a tu favor y tu voidwalker   te perdone y siga siendo tu tanque. Al menos dentro de todo Bat esto fue lo único que encontré diseñado de esta forma tan absurda. Bueno, imaginense un juego completo con mecánicas como esas. ¿Lo imaginan? Bueno eso es Eve.

Al final el tutorial termina, pasa algo que al menos a mi me resultó decepcionante (que Jack Dawson muera al final de Titanic es triste. Que muera Rose sería decepcionante porque después de tanto trabajo de redención sería insólito que sea para nada). Que escritores más flojos, como diría Deadpool. La sensación que me quedó es como una duda primordial, si valió la pena pelear tanto con la interfase. Porque el problema de Eve es que tratar de hacer las cosas es tan difícil como meter un hilo en el ojal de una aguja, con dos pinzas de un metro de largo, agarrando las pinzas con  guantes de boxeo, con los ojos vendados, caminando en reversa sobre la cuerda floja, y vientos de 60 km/hora. No solamente por la arbitrariedad de cada paso, sino Eve hace un magnífico trabajo evitando que tengas una visión de lo que estás haciendo. En los combates estás como ciego, y en la pantalla también porque las ventanas se solapan, se colocan en el medio y no puedes ver al mismo tiempo información que requieres en una ventana teniendo la otra abierta. Algunas veces se les puede cambiar el tamaño, pero entonces tienes que hacer esto con frecuencia. Me imagino que en algún momento te acostumbras a todo esto, pero, en la vida, ¿no tenemos demasiadas cosas de las que nos tenemos que acostumbrar como para tener que hacerlo también con este juego?

Y ahora que lo pienso realmente no encuentro razón alguna para jugar de nuevo. Lo más divertido de Eve es cuando te sales y te pones a jugar otro juego.

Voy a jugar Eve

01-08-2018 8:48 AM

Estoy resucitando muertos insepultos así que decidí darle una nueva bocanada a Eve Online. La última vez yo lo llamé un juego estúpido, espero que esta vez tenga mejor suerte.

Lamentablemente comenzamos con mal pié. Luego de instalar presioné el botón “play” lo cual obvio significa lo que significa en cualquier juego a lo cual me respondió “not ready to play“. Salí del programa, entré de nuevo, reinstalé, etc al final terminó diciendo que no podía escribir en la carpeta SharedCache, por lo que se me ocurrió borrarla, pues se había creado la última vez que jugué el juego. Pensé que la instalación previa que hice hace años estaba interfiriendo con la nueva. Resultó ser 11gb, lo cual no parece ser cache, parece los datos del juego. ¡A alguien se le ocurrió llamar SharedCache a la carpeta que debería llamarse game data, o data, o lo que sea!

La resolución de mi pantalla es diferente, es más ancha que alta  que otras resoluciones,  es 1366×768 lo cual es 1.77, cuando lo normal es 1.33 (por ejemplo 800×600, o 1024 x 780) eso hace que cuando un programa torpe se le olvida leer la resolución de la pantalla (o lo hace en forma incorrecta como creo que hace el launcher de Eve) parte del programa no se ve, por ejemplo, en el launcher de Eve yo no pude ver la parte de abajo, justamente donde está el progress bar  que indica que está descangando game data. Es decir, el error “not ready to play” se debió a que estaba descargando el juego, no a un problema de cache.  Soy los 3 chiflados, Abbot y Costello y Mr. Bean todo en uno. Un simple mensaje diciendo “estoy descargando el juego”, o abrir el programa en la resolución correcta o colocar el progress bar arriba, o en el medio, hubiera sido suficiente.

Ya reportaré más adelante cómo me va.

Enlaces de Julio de 2018

31-07-2018 4:04 AM
  • En el post pasado comento que Node.js es una inmensa pila de basura, pero corrijo diciendo que no lo es.  O quizás si lo es.
  • Esto está bien interesante. He comentado aquí sobre la guerra que le tienen a Yanderedev, el desarrollador de Yandere Simulator en reddit (aquí).  No parece ser un caso aislado. Recientemente la escritora de personajes de MMORPG Jessica Price fue despedida por sus comentarios en un hilo de tweets que no fueron bien recibidos por el subreddit de Guild Wars 2. Enlace a una nota en Slashdot. Jessica dice “si reddit quiere que te despidan de tu trabajo, te despiden”. Enlace al artículo in The Verge. ¿La razón? Ella pidió que no le digan cómo hacer su trabajo, y mucho menos alguien que no sabe nada del tema (desarrollo de personajes). Y agregó que este era su tiempo personal, que ella no estaba trabajando. Lo cual me suena a mi relativamente razonable (yo sé que Jessica no es un angelito, por ejemplo por su opinión sobre la muerte de tot*b1scuit. Dice en su profile de twitter: I block often). ¿Hay un patrón aquí? ¿Reddit se ha convertido en una dictadura para los desarrolladores? Yo se que Yanderedev está desarrollando un comportamiento errático y tóxico, pero, quizás está excesivamente a la defensiva por una comunidad excesivamente e igualmente toxica. Por alguna razón inventó o descubrió que aquéllos que lo critican utilizan un conejo como icono para reconocerse entre sí (aquí está el meme). Ellos lo niegan y dicen que Yanderedev está paranoico. Entonces alguien muestra esta foto. ¿Esto es alguna pesadilla tipo Stephen King o David Lynch?). Perturbador.
  • Hablando de cosas perturbadoras, aquí está una lista de razones de por qué no debemos usar Python. A mi no me gusta por una sola razón: creía que los lenguajes tipo RPG donde la posición de una instrucción en una línea era cosas del pasado. A quien quiera que sea al que se le ocurrió que la indentación para definir un bloque era una buena idea, debería ser expulsado de la academia de programadores. Sin embargo, creyó que de esa forma sería más claro que con {}.  Esta es la discusión en Hackernews donde desmontan todos y cada uno de los argumentos del autor (del artículo con la lista de razones de por qué no debemos usar Python). Claro, desde un punto de vista del tipo “mi mamá cocina mejor que la tuya“.
  • Este video donde alguien critica a Yanderedev (volviendo con el tema, me estoy poniendo reiterativo) hace que revise mi estilo de programación. Yo creo que cualquier programador competente nunca va a hacer una sucesión de if’s anidados de la forma como se muestra (hay como 12 if’s anidados donde se determina el color del cabello del personaje y se hace un ajuste). Inclusive un programador novato sabe o se le ocurre que eso es mejor con un switch o con una tabla, donde el primer campo indica el el color del cabello y el segundo campo cuál es el valor para hacer la corrección. ¿Es posible que por pereza cometamos estos errores? No. Escribir código elegante debe ser algo automático para nosotros, sin importar el tiempo que requiera.
  • Hablando de código elegante, para cargar los datos en un forma de Qt, tengo que hacer una llamada al convertidor de lenguaje, transformar de std::string a const char *, etc,etc. Si esto lo tengo que hacer 3 veces o más veces la cuestión queda parecido a esto:

    [code]
    ui->formF1->setPlainText(CLang::GetClass()->get(answer_selected->answer[1]).c_str());
    ui->formF2->setPlainText(CLang::GetClass()->get(answer_selected->answer[2]).c_str());
    ui->formF3->setPlainText(CLang::GetClass()->get(answer_selected->answer[3]).c_str());<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>[/code]

    Not nice verdad? Bueno mi implementación quedó así:

    [code]
    QVector<QPlainTextEdit*> answersList={
    (ui->formF1),
    (ui->formF2),
    (ui->formF3),
    };
    for (u32 i = 0; i < answersList.size () || i < answer_selected->answer.size (); i++) {
    ui->formF1->setPlainText(CLang::GetClass()->get(answer_selected->answer[i]).c_str());
    }
    [/code]

    Si elimino o agrego cambios solamente tengo que modificar el vector answersList. Mejor, ¿verdad?

  • Un div que se muestra diferente en cada navegador.  Esto es solamente un ejemplo, cada navegador ha implementado el manejo de los divs de forma diferente, lo cual es una pesadilla para nosotros los programadores web. En los ejemplos en ese hilo se indica que solamente IE muestra los divs correctamente. Esto es una excepción. El 99% de las veces es al revés, los demás navegadores muestran los div bien y IE lo muestra mal. Yo tengo años sin dar soporte de IE y mucho menos del nuevo Edge.
  • Un larguisimo tratado sobre Rogue en su versión para la Amiga (alguna vez mencioné que la Amiga 500 fue mi primera computadora personal, y que programé en ella, en assembler durante 10 años?)
  • Un GameDevs Fact Sheet de /r/gamedev. Algo controversial que  se presente a DigitalOcean mejor que Linode (y varios comentadores lo, comentan) pero qué se yo. Sigo utilizando Bluehost para todas mis necesidades de almacenamiento. También recomiendan Trello para planning. Voy a seguir intentando usarlo.
  • Scott Pilgrin vs Todo el Mundo. ¿He mencionado lo fanático que soy de esta película? Y no estoy solo, este tweet donde su autor desnuda a Scott, egoista, manipulador, mentiroso. Sin embargo la película muestra su redención a un mejor comportamiento de una forma que ninguna otra película logra alcanzar. El tweet tiene 35k likes y 8k retweets, así que definitivamente no estoy solo.
  • ¿Cómo hacer para tardar 7 años haciendo un juego? Yo soy experto en esto, esta me la sé. El autor incluye cosas como programar tu propio motor (game engine), seleccionar un lenguaje como C++ que en el “mientras tanto” ha tenido 3 versiones (x00, x11, x17), hacer tu propio editor (en este momento estoy en esta fase, haciendo un editor en Qt para manejar la data del juego), hacer una campaña crowfunding (no, esto es demasiado, yo no he llegado ahí, ni lo haré, jamás, lo juro (sic)), hacer blogs sobre tu juego (¿yo?), hacer todo el testing en casa, etc. Pasa al siguiente bullet, yo no voy a decir nada sobre esto.
  • ¿Te has preguntado por qué std::map.find existe pero std::vector.find no existe? En esta respuesta en stackoverflow hay una interesante discusión sobre este tema, incluyendo consideraciones filosóficas sobre diseño OOP. A mi me parece que mvec.find(key) != mvec.cend() es preferible que std::find(mvec.cbegin(), mvec.cend(), key) != mvec.cend() como alguien dice, y no creo que tenga que ver con eficiencia, que es o no es miembro, ni que STL es un asco. Es simplemente lo caótico que puede ser un artefacto sometido a fuertes e intensas decisiones. Alguien decidió que find no fuera miembro de std::vector. Sufran las consecuencias.
  • Finalmente luego de 6 años pensándolo abrí una cuenta y descargué League of Legend. Todo bien y sin problemas… pero, cuando me pidió el nombre para mi summoner, generaba el error “An unexpected error has occurred”. Googleando comencé a sospechar, no que lo haya leído en alguna parte, que quizás los nombres que estaba usando, que son los que uso en todos los juegos (agnas, por supuesto) estaban reservados o algo así. Ingresé entonces un nombre random, algo así como “qweweaSF” que es lo que resulta de tipear en el teclado cualquier cosa. Funcionó, pero ahora resulta que no puedo cambiar el nombre, y aparentemente hay que pagar por un cambio de nombre. Fuuuuuuuuuuuuuuck.
  • Si normalmente trabajas en  C++ y PHP, y dedicas un mes a trabajar solamente en  C++, no vas a saber que hay de malo en este código:

    [code]$token = "Token "+ $i;
    $image = "/images/" + $row->$token;[/code]

  • Un cepillo de dientes sin baterias recauda 400 mil dólares en kickstarter. ¿Un momento? ¿Qué es un cepillo de dientes sin baterías? Bueno, existen los cepillos de dientes, y los perezosos usan también cepillos de dientes eléctricos. Esta gente sacó un cepillo de dientes que funciona como los  eléctricos pero sin batería. Cierto. El chiste es que alguien sacó este video mostrando un demo falso del cepillo es decir, sus creadores mostraron un video del cepillo supuestamente funcionando pero que en realidad está editado para mostrar el cepillo funcionando pero en realidad es la repetición del mismo clip durante 15 minutos. Uff espero no tener que explicar eso otra vez. Y como dicen en reddit, ¿no es un cepillo eléctrico sin baterías un cepillo de dientes? Sí pero este cuesta $96. Ouch, cómo hay idiotas en este mundo.
  • ¿Tiro libre de Messi? ¿Gol de Cristiano? Nada que ver, esta narración de un juego de ajedrez es mucho más emocionante que cualquier juego del mundial de futbol: https://www.youtube.com/watch?v=kUr_gdKQ8j4

Se cansa uno.

World of Warcraft Hecatombe

29-07-2018 6:37 AM

Como ya dije previamente, dejé de jugar wow al menos hasta el 8 de agosto porque me llenó de frustración el prepatch de Battle for Azeroth (BFA), y las pocas ganas de jugar wow que me quedaban se me esfumaron. No sé qué va a pasar el 14 de agosto pero tengo mis sospechas. Blizzard parececiera tener un plan para ahuyentar a todos los jugadores, y al menos en mi caso está funcionando. Lo peor es que no estoy solo. El precio de la ficha está en 195k al momento de escribir esta nota, una caída sin precedentes de 20K o casi el 10% de su valor. Ese precio está manipulado por supuesto, pero dado que con una ficha puedes pagar una suscripción que cuesta $14 y hay un tema legal alrededor de su valor, la manipulación la pueden hacer pero hasta cierto punto). La caída del precio de la ficha significa que la gente no la está comprando, es decir, la gente está dejando de jugar. Ya reportaré mis impresiones de BFA en agosto. Tengo que regresar a khpx.