while True: learn()

while True: learn() xa minte un pouco dende o seu propio título. Emprega unha estrutura de linguaxe de programación imperativa pero non ten nada que ver con iso, xa que hai que empregar unha interface visual para poñer caixas e clasificar unhas entradas particulares para que satisfagan as saídas agardadas. Esas caixas levan nomes de tecnoloxías de intelixencia artificial, mais de aí a ter unha experiencia equivalente a usalas no mundo real hai todo un mundo. E velaí o primeiro problema que me fixo comezar a contrariar o videoxogo: as promesas de mercadotecnia que aseguraban que facer unha inmersión aquí era equivalente a aprender como funcionan todas esas tecnoloxías nas que está baseado. E nada máis lonxe da realidade, máis alá dos nomes das caixas, algún detalle simpático e uns textos extradiexéticos que se esforzan por enlazar o mundo virtual e o real, non hai similitudes reais. Chega incluso ó nivel de parodia cando aparecen redes para procesar linguaxe natural pero sen ter un significado lóxico dentro do xogo.

Coido que son capaz de mirar máis aló desas falsas promesas e analizar o deseño sen esa influencia. E inda con esa lupa, diría que fai augas por varios lugares, e atopalos todos é un exercicio divertido. Vou facer unha listaxe dalgúns erros que me pareceron máis importantes e como poderían solucionarse nunha suposta segunda edición:

  • Melloras. Cos cartos gañados de solucionar os encargos podemos mercar obxectos de adorno sen utilidade real, gatos ou novas pezas de hardware. Estas pezas van aparecendo pouco a pouco na tenda e trátanse de melloras directas á eficiencia das implementacións do xogador, polo que é posible volver executar unha mesma solución anterior e obter un mellor resultado! Isto é unha rotura do contrato implícito nun xogo de crebacabezas, onde só debería importar a capacidade do xogador para obter a mellor solución. Deberían borrarse ou, como moito, ofrecer contraprestacións para que sexa unha consideración activala ou non.
  • Gatos. Estou moi a prol da trama principal de aprender a comunicarse co gato, pero a lapela para obter outro gato abre unha páxina web no navegador externo na que hai que procurar un código ou algo así, deixando o xogo en segundo plano. Nin me molestei en saber que era iso, pero se a idea era poder mercar/modificar gatos, non vexo porque non se pode facer dende dentro do propio menú.
  • Adestramento de redes. Algunhas caixas hai que adestralas antes para baixar a súa taxa de erros. Para isto simplemente hai que introducir datos por ela, darlle un botón e agardar. Certo é que a parte de agardar ten un paralelismo claro coa realidade, pero tendo en conta que aquí non hai ningunha decisión que tomar sobre ese adestramento, serían mellores ideas ofrecer unha contraprestación a unha rede mellorada até o máximo (máis tempo de execución por exemplo, que pode ser realista se trocamos a idea do adestramento por empregar unhas estruturas máis lixeiras ou pesadas), deixar que esa taxa de erros diminúa pouco a pouco na propia execución final (que non sería realista de todo, pero a estas alturas igual non importa moito) ou permitir escoller que erros diminuír en base ás entradas (por exemplo, baixar a taxa de erros dos cadrados mentres sube a confusión entre triángulos e círculos).
  • Pezas especiais de adestramento. Por se o de adestrar non fóra lea suficiente, chega un punto no que hai que poñer unhas pezas diante das redes a adestrar para baixar os seus erros. Isto unicamente hai que facelo na fase de adestramento e logo retiralas na fase de execución. Semella mellor idea que aplicasen a súa mellora na fase final e que se tratase dunha decisión real empregalas ou non, xa que cada peza incrementa o custe do procesamento e hai un límite para obter as mellores solucións.

Logo tamén está o tema das startups (cunhas mecánicas escuras que non logrei acadar), a realización dunha intelixencia artificial para conducir un vehículo (que non me pareceu interesante), a posibilidade de poder usar solucións previas (que só empreguei na fase que era obrigatorio), a construción de DLLs (que debín de saltarme o titorial pero que non me fixo falla en ningún momento), o feito de que cambiar caixas de sitio para obter o mesmo resultado lóxico pode outorgar melloras moi grandes debido a como emiten os xeradores de novas entradas (que semellan ser ao chou, pero sempre saen na mesma orde para cada problema) ou que na meirande parte dos problemas importe máis o tempo de execución cá efectividade da solución. Mais iso son temas menores para os que tampouco teño unha solución concreta, pero pon de manifesto que hai un amplo abano de frontes nos que aplicar melloras sobre este deseño.

Inda que poida parecer que fiquei enchoupado deste xogo, a miña experiencia particular foi de tan só tres horas e media, abondo para facer todas as tarefas da parte baixa da árbore e logo centrarme nas obrigatorias para ver se aparecería algo novo. Foi inevitable lembrarme do SpaceChem que, segundo recordo, é unha implementación moitísimo mellor dunha programación visual, con regras máis claras e que até é posible que axuden a razoar moito mellor sobre problemas reais de programación inda que sexa todo un universo inventado. Non me arrepinto de ter probado este while True: learn(), xa que polo menos deume que pensar, inda que non fose como agardaban os desenvolvedores.