3 puntos por GN⁺ 2024-06-17 | 1 comentarios | Compartir por WhatsApp
  • Micropolis Web, basado en el SimCity Classic original de Maxis, se publicó en una versión que se ejecuta en el navegador, lo que permite experimentar este clásico simulador de ciudades sin instalar nada
  • El proyecto es una versión portada por Don Hopkins del juego diseñado por Will Wright, y todavía está en un estado experimental, no como producto terminado, por lo que sigue cambiando
  • Junto con el repositorio de GitHub, videos de demostración, y el libro y los diagramas de Chaim Gingold, se puede profundizar en la implementación y la historia de SimCity
  • Los controles usan arrastre y rueda del mouse, flechas, teclas de letras y teclas numéricas, y permiten desplazarse, hacer zoom, cargar ciudades, ajustar la velocidad, cambiar la tasa de impuestos y alternar el tileset
  • El nombre “Micropolis” se usa bajo los términos de la Micropolis Public Name License, y las funciones adicionales y los huevos de Pascua aún están en preparación

Micropolis Web ejecutándose en el navegador

Controles y avisos pendientes

  • Controles con el mouse

    • Arrastra con el botón izquierdo para mover la pantalla
    • Usa la rueda del mouse para acercar o alejar
  • Controles con el teclado

    • Usa las flechas para mover la pantalla
    • Usa las teclas de coma y punto para acercar o alejar
    • Usa las teclas de letras para cargar distintas ciudades
    • Usa la tecla \ para generar
    • Usa las teclas numéricas para configurar la velocidad
    • Usa la tecla 0 para alternar la pausa
    • Usa las teclas de corchetes para bajar o subir la tasa de impuestos
    • Usa las teclas - y = para cambiar el tileset
    • Al presionar el botón “X” de arriba se puede ocultar la ventana de ayuda
    • Las funciones adicionales y los huevos de Pascua están en preparación
    • El aviso comienza diciendo que no se debe presionar la barra espaciadora, pero en el texto proporcionado la explicación posterior no queda completa

1 comentarios

 
GN⁺ 2024-06-17
Opiniones en Hacker News
  • Portar juegos antiguos a la web es divertido. Hoy en día hay muchos juegos más pequeños que una página web común, así que cargan rápido y funcionan bien.
    Acabo de portar Quake 3 y me estoy divirtiendo trasteando con él: https://thelongestyard.link/

    • La razón por la que no me gusta el navegador para hacer juegos es justamente la latencia de entrada. Aun así, el trabajo es excelente.
    • Me pregunto por dónde convendría empezar para hacer mejor este tipo de cosas. En especial, en lo de portar juegos antiguos a Wasm.
  • Demo 1 de Micropolis Web: https://www.youtube.com/watch?v=wlHGfNlE8Os
    Micropolis Web es la versión para navegador de Micropolis, el SimCity de código abierto, y usa WebAssembly, WebGL y SvelteKit. Está basado en el código original de SimCity Classic diseñado por Will Wright y portado por Don Hopkins; la primera demo ya ejecuta el simulador en WebAssembly y las animaciones de mosaicos en WebGL, pero la mayor parte de la interfaz de usuario todavía está en desarrollo.
    Sitio en vivo: https://MicropolisWeb.com
    Código fuente y documentación: https://github.com/SimHacker/MicropolisCore
    Libro de Chaim Gingold "Building SimCity": https://mitpress.mit.edu/9780262547482/building-simcity/
    "SimCity Reverse Diagrams" de Chaim Gingold: https://smalltalkzoo.thechm.org/users/Dan/uploads/SimCityRev...
    Micropolis Web Space Inventory Cellular Automata Music 1: https://www.youtube.com/watch?v=BBVyCpmVQew
    La música fue creada por Juho Hietala, Blamstrain, y Space Inventory Cellular Automata fue implementado por Don Hopkins: https://blamstrain.com/

    • Me sorprende que Building SimCity de Chaim Gingold acabe de publicarse el 4 de junio de 2024. En su momento me encantaban los diagramas de algoritmos de SimCity, y creo que también leí una tesis doctoral que trataba en detalle el funcionamiento interno de SimCity.
      Gingold, Chaim. “Play Design.” Ph.D. thesis, University of California Santa Cruz, 2016. https://www.proquest.com/docview/1806122688
      El port a Wasm de Micropolis parece que podría ser una nueva etapa de desarrollo. SimCity Classic para Macintosh influyó mucho en mi forma de pensar sobre las computadoras y el software durante mi infancia, y me alegra ver que se le dé nueva vida.
  • No soy gamer, pero recuerdo haber jugado SimCity cuando era chico. No sé si el gameplay cambió en los últimos 25 años más o menos, o si el navegador está roto, pero parece que no se puede hacer nada
    Puedo cargar una ciudad y verla moverse, pero creo que en el SimCity de antes uno podía construir su propia ciudad. ¿No debería haber alguna forma de que el jugador realmente juegue?

  • No esperaba mucho en móviles, pero en Firefox de Android esta página congeló el navegador. Tuve que matar el proceso, y eso rara vez pasa.
    Como referencia, tengo un juego pequeño que porté yo mismo al navegador. Hacer que corriera fue muy fácil gracias a la combinación Emscripten+SDL2, pero, sinceramente, lo que más trabajo me llevó fue lograr que se pudiera jugar bien en un teléfono: https://play.neverball.org/

    • Definitivamente pienso darle soporte móvil. Ya corregí un bug que impedía que corriera en Firefox de Ubuntu gracias a un reporte de bug bien escrito que incluía un stack trace. Sería bueno que lo intentaras de nuevo y, si no funciona, reportes el bug incluyendo el stack trace y la información de la plataforma.
      https://github.com/SimHacker/MicropolisCore/issues/1
      Quería publicarlo lo antes posible para que otras personas pudieran probarlo, en lugar de esperar a que estuviera terminado y perfecto. Por eso todavía hay mucho por hacer en la interfaz de usuario, estabilidad, soporte multiplataforma, móviles, etc.
      En cuanto el simulador y el renderizador de tiles estuvieron funcionando, agregué un zoom/desplazamiento mínimo, una interfaz de control con teclado y una ventana de ayuda que se puede cerrar con el botón "+" de la esquina superior derecha.
      Lo que realmente me entusiasma es integrarlo con un lenguaje de programación visual como Snap! para permitir live coding, zonas de plugins, robots, sistemas de monitoreo y control, visualización y exportación de datos, e interfaces alternativas como dashboards de Grafana.
      Los teléfonos Android pueden conectarse con un cable USB a una Mac o PC, y los iPhone a una Mac; luego se puede revisar la consola remota, depurar e incluso hacer live coding con Chrome o con el depurador de Safari en Mac. Si se dan las condiciones, también podría funcionar por Wi-Fi, aunque puede que Google haya quitado la función o que Apple la haya bloqueado desde el principio.
    • Me sorprendió que en Firefox de un teléfono Android económico de hace 4 años tuviera una tasa de fotogramas alta y casi sin tirones. No es que tenga muchísimas texturas o polígonos, pero no estoy acostumbrado a este nivel de rendimiento en el navegador de ese teléfono.
    • En Firefox de Android, de mi lado tampoco se congeló. Aunque he visto que algunas versiones recientes de Firefox no van muy bien con el manejo de PDF, así que quizá tenga que ver con diferencias de versión.
  • Hace tiempo porté a la web el cliente de RuneScape.
    https://play.rsps.app/
    Usa Wasm, TypeScript y WebGL.

  • Repositorio fuente: https://github.com/SimHacker/MicropolisCore

  • Lo que pasa al presionar la barra espaciadora es realmente sorprendente. El fractal está genial.

    • Space Inventory se inspiró en la reseña de World Quester 2 de Game Helpin' Squad, y también quiero hacer que los menús y la interfaz de usuario de Micropolis sean tan increíbles como los de World Quester 2.
      https://www.youtube.com/watch?v=0Gy9hJauXns
  • Me pregunto si los modelos de lenguaje a gran escala podrían portar al instante juegos como este

  • ¿Por qué hay una estación de bomberos en casi cada manzana de la ciudad?

  • No se puede interactuar y, apenas el navegador empieza a cargar algo, el ventilador del CPU empieza a girar. ¿Seguro que esto no es simplemente un minero de criptomonedas mal hecho? Si no lo es, no entiendo para qué publicar algo que no funciona.

    • El objetivo es recibir feedback sobre cómo funciona en una variedad de sistemas a los que no tengo acceso. Creo que con el software, especialmente el open source, es mejor recibir feedback lo antes posible durante el desarrollo, en lugar de mantenerlo oculto hasta que esté completamente terminado y perfecto.
      No tengo dinero para comprar todo tipo de computadoras y teléfonos, e incluso si lo tuviera, no tendría tiempo para probarlos todos personalmente. Nadie me paga por hacer esto, pero si quieres puedes apoyarme en Patreon: https://www.patreon.com/DonHopkins
      Aun así, este proyecto no es una fuente de ingresos, sino algo que hago por cariño. Por ahora también estoy ofreciendo una promoción especial en la que me quedo callado durante 5 minutos al mes sobre el tema que quieras.
      Todo el código fuente se puede ver en GitHub, y puedes reportar bugs o compilarlo tú mismo. El navegador también incluye herramientas de depuración e ingeniería inversa con las que puedes inspeccionar el binario WebAssembly y el JavaScript compilado. Los shaders de WebGL están en texto plano, así que también puedes verificar si coinciden con el código fuente del repositorio.
      https://github.com/SimHacker/MicropolisCore
      Si encuentras pruebas de software de minería mal hecho, puedes reportarlo al FBI, a Interpol y a GitHub. Estoy publicando el código fuente y los binarios con mi nombre, mi cuenta de GitHub y mi dominio, así que también es fácil rastrear su origen.
      Un ejemplo de reporte de bug útil identificó el problema incluyendo información del sistema y un stack trace, y gracias a eso pude corregirlo en unos minutos: https://github.com/SimHacker/MicropolisCore/issues/1
      También me da curiosidad si probaste presionar las teclas numéricas para controlar la velocidad. Tomando como referencia los números de la parte superior del teclado, "1" lo ralentiza a 1 frame por segundo con 1 tick del simulador por frame, y "9" lo ejecuta a 120 frames por segundo con 50 ticks por frame. En Chrome en mi Mac M1 corre fluido y la interfaz responde bastante bien.
      Sería bueno que me contaras qué controles no funcionan, qué hardware, sistema operativo, navegador y GPU tienes, y si había errores en la consola de desarrollador del navegador. En un reporte de bug ayuda incluir el stack trace de la consola.