2 puntos por GN⁺ 2024-09-12 | 1 comentarios | Compartir por WhatsApp
  • En 2024 se presentó Captain's MiniGolf v0.6, un nuevo juego de minigolf para Palm OS, completado tras casi dos meses de programación intermitente
  • Lo principal es una estructura en la que el propio jugador puede crear y exportar una base de datos de paquetes de niveles para compartirla con otros usuarios
  • Incluso sin un dispositivo Palm OS real, puede ejecutarse directamente en el navegador con el emulador cloudpilot
  • C y el viejo entorno de Palm OS vuelven a poner en evidencia las limitaciones de desarrollo, como fugas de memoria, depuración de polígonos y trayectorias, y documentación escasa
  • El código fuente se publicó bajo licencia GPL3 y puede servir como material de referencia para que otras personas creen juegos para Palm OS

Lanzamiento de Captain's MiniGolf v0.6

  • Captain's MiniGolf v0.6 es un nuevo juego de minigolf para Palm OS creado en 2024
  • Empezó como un proyecto de verano y se publicó tras menos de dos meses de programación intermitente
  • Su característica más destacada es que los usuarios pueden crear su propia base de datos de paquetes de niveles
    • Los paquetes de niveles creados pueden exportarse y compartirse
    • Queda como un punto interesante ver qué tipo de recorridos crearán otros usuarios
  • Incluso sin un dispositivo Palm OS, puede ejecutarse en el navegador mediante el emulador cloudpilot

Experiencia de desarrollo en Palm OS y materiales publicados

  • Al crear un juego para Palm OS en C, volvió a confirmarse que, sin las protecciones de los lenguajes modernos, un pequeño error puede convertirse en un problema mayor
  • Las fugas de memoria ocurrieron con más frecuencia de lo esperado, y tampoco fue fácil depurar la forma de los polígonos ni la trayectoria de la pelota
    • Una compilación de depuración que visualiza la lógica interna ayudó mucho a identificar los problemas
  • Palm OS tiene poca documentación, lo que eleva la dificultad de desarrollo, y se usaron los siguientes materiales como referencia
  • Los errores conocidos incluyen que la pelota puede quedarse atorada en una pared y que, si se crea un polígono de pared cerrado dentro del campo principal de juego, el fondo o los colores del recorrido no se procesan correctamente
  • Entre las mejoras previstas están eliminar y mover niveles, eliminar y compartir paquetes de niveles, y soporte de resolución dinámica según el tamaño de pantalla
    • La resolución actual está fija en 160x160
    • En dispositivos Palm OS 5 de alta resolución funciona a 320x320
  • El código fuente completo se publicó bajo licencia GPL3
  • El borrador se escribió en una Palm Zire 72

1 comentarios

 
GN⁺ 2024-09-12
Opiniones en Hacker News
  • En los años 90 empecé dos veces a hacer un juego de minigolf para Macintosh, pero nunca lo terminé ni lo lancé.
    Hace poco recuperé el código fuente de hace casi 35 años y estoy creando imágenes de disco para usar en emuladores. El primer intento de MiniGolf en blanco y negro está aquí: https://github.com/EngineersNeedArt/SoftDorothy-UnfinishedTa...
    El segundo intento fue una versión a color que hice cuando ya programaba mejor, y va a estar en el Volumen 2. Ahora estoy armando esa imagen de disco.

    • Glider fue una franquicia emblemática de la era de las Mac 68k. Me emociona mucho verte volver a trabajar en esto.
    • Los gráficos son realmente geniales. Me gusta el estilo.
    • De niño jugué muchísimo a Glider. Probablemente esta sea la única oportunidad que tenga para decirlo: muchas gracias por haber creado esos juegos.
    • Gracias, John. Este repositorio tiene un poco de todo lo que me gusta: arte, ingeniería e historia, y sobre todo mucho arte. Es realmente inspirador.
  • ¡Genial!
    Me pregunto si has considerado agregar una animación de la pelota cayendo en el hoyo. En el video parece que, apenas la pelota y el hoyo se superponen lo suficiente, se carga el siguiente nivel.
    Como usuario, creo que sería mucho más satisfactorio ver que la pelota realmente entra. También daría una mayor sensación de logro antes de que se cargue el siguiente nivel.

    • Ahora lo voy a considerar, gracias.
  • ¡Excelente trabajo, y gracias!
    Últimamente empecé a pensar que Palm OS u otros formatos de ejecutables homebrew retro quizá podrían tener usos reales más allá de la nostalgia.
    Cosas como los .prc de Palm OS o las ROM homebrew .gb de itch.io pueden ejecutarse en escritorio, iOS, Android y dispositivos de juego reales; funcionan offline, son eficientes, no distraen y no tienen posibilidad de compras dentro de la app.
    Por ejemplo, si miras Apotris, he comprado muchas versiones oficiales de Tetris a lo largo de los años y probablemente seguiré haciéndolo, pero esta es una implementación muy pulida que puede correr en todas las consolas. Gracias a los emuladores de GBA basados en WASM como RetroArch Web y al soporte nativo de gamepads en los navegadores modernos, se puede jugar en casi cualquier computadora sin instalar nada.
    Además, da tranquilidad tener un único archivo ejecutable independiente, con altas probabilidades de poder seguir ejecutándolo dentro de 1, 10 o 20 años. No creo que eso aplique a muchos juegos de iOS o indies web que me gustan.

    • Sería realmente bueno tener un teléfono Palm OS moderno que mantenga la filosofía original de la interfaz y pueda ejecutar todos los títulos antiguos. Ojalá fuera posible aunque sea mediante emulación.
  • Escribí código para PalmOS alrededor de 1999. Algo que recuerdo especialmente es la forma de probar las aplicaciones.
    Creo que era una función del emulador: le lanzaba eventos al software sin parar. Olvidé los detalles, pero, por ejemplo, si resistía 1.000 eventos pasaba; 10.000 era bueno, y 100.000 era excelente.
    Yo me consideraba un programador de C++ bastante decente, pero al usar esa herramienta me impactó ver lo rápido que moría mi aplicación. Fue una experiencia bastante humillante y reveladora.
    A menudo pienso en lo eficaz que era una herramienta tan simple para exponer bugs, aunque supongo que en los dispositivos actuales multitarea y conectados a internet no funcionaría de la misma manera.
    Otra cosa que recuerdo es que CodeWarrior fue el primer IDE que vi con una caja desplegable que mostraba todas las funciones del archivo fuente actual. Fue un avance bastante grande en productividad.
    Además, en 2010, cuando estaba en Japón, todavía usaba una Palm Tungsten. Había una app de diccionario japonés muy simple para Palm: si aprendías las reglas básicas de orden y dirección de los trazos, podías imitar con el stylus el carácter que veías y buscar el kanji correspondiente. Pude resolver bastantes problemas de orientación imitando kanjis desconocidos de los letreros.

    • > drop-down box with all the functions
      Recuerdo el #pragma - que se usaba para separar funciones. Ya no existe algo así. Como alternativa está #pragma region para plegar bloques de código, pero no es lo mismo.
    • Me imaginé a alguien intentando portar Rust a PalmOS. Espero que eso no ocurra.
  • Me puse a pensar si podría correr esto en hardware real, y me di cuenta de que no tengo ni idea de qué pasó con mi Palm LifeDrive cuando me cambié a BlackBerry.
    Extraño esa PDA pequeña y gruesita. Para su época era realmente impresionante.
    https://en.wikipedia.org/wiki/LifeDrive

    • La semana pasada, limpiando, encontré mi vieja Palm Tungsten E2. Si encuentro el cargador, lo pruebo y te cuento.
    • La LifeDrive era una Palm muy rara.
      Por un lado, la odiaba por los tiempos de carga desesperantes comparados con los dispositivos anteriores. Era porque el OS estaba diseñado originalmente para tener todo en RAM/ROM, y al principio ni siquiera tenía el concepto de memoria basada en archivos/bloques, así que casi cualquier acceso inesperado a memoria terminaba despertando el disco duro. También era relativamente grande.
      Por otro lado, tenía 4 GB. Podías llevar más de dos películas completas. También fue la primera Palm con Wi‑Fi, lo cual estaba bueno.
      En conjunto, para mí se convirtió en un símbolo de que Palm se estaba quedando rápidamente atrás respecto de las tendencias modernas. Por ejemplo, Symbian no se comparaba con Palm OS en usabilidad, pero desde el punto de vista del sistema operativo estaba mucho más adelantado, y después, por supuesto, llegaron iPhone y Android.
  • Me encanta, y en especial el diseño artístico. Excelente trabajo.
    Personalmente, lo que cambiaría es que al apuntar me resulta más natural mover el mouse en la dirección opuesta. Muchos de los viejos juegos de minigolf de Miniclip funcionaban así.
    Si te gustan los juegos libres y open source, recomiendo Neverball y Neverput. Neverput es un simulador de golf 3D con gráficos decentes.

    • La Palm original usaba stylus, así que, a diferencia de un teléfono táctil con los dedos, no tapabas el punto de mira. También puede haber influido que así se dejaba más espacio en la dirección del tiro.
  • ¡Hermoso! Gracias a esto empecé a extrañar mi IIIxe.
    Pasado por el filtro rosado e impreciso de la nostalgia, quizá haya sido un dispositivo cercano al punto máximo de productividad en equipos portátiles. Siempre lo llevaba conmigo y tenía suficientes funciones para recordarme las cosas que me importaban, pero carecía por completo de notificaciones que dispersaran mi atención.
    Me tomó un tiempo hacer que el iPhone se quedara callado y dejara de molestarme constantemente, pero en Palm todo era optativo por defecto. Si no le pedías explícitamente que te avisara de algo, se quedaba en silencio.
    En realidad no volvería a usarlo, pero por otro lado lo extraño.

    • Me pasa lo mismo. Me encantaba mi IIIxe.
      Si lo volviera a usar hoy quizá me horrorizaría la experiencia de usuario, pero en ese momento me aumentó muchísimo la productividad. El lenguaje de entrada manuscrita también era buenísimo. De hecho, escribí informes con eso.
      Era excelente poder escribir en el bus o mientras me movía sin tener que cargar una laptop. Eran dispositivos increíbles.
    • El control de notificaciones es una de las funciones de experiencia de usuario más potentes que se pueden tener. Uso activamente modos de concentración basados en ubicación y horario para las pocas notificaciones que permito.
  • ¡Me gusta! Una sugerencia breve: antes de cargar el siguiente nivel, estaría bueno dar un poco de tiempo para mostrar el momento en que la pelota entra en el hoyo. Si le quitas al jugador esa satisfacción, puede resultar frustrante.

  • Es un proyecto interesante. Problemas como fugas de memoria o depuración son mucho más comunes de lo que uno pensaría en el desarrollo de juegos.
    Muchos de estos problemas ya los abstraen motores como Unreal, Unity y Godot, pero si desarrollas juegos con C, OpenGL y límites de memoria, sobre todo cuando el hardware impone esas restricciones, puedes pasar por el mismo tipo de tropiezos iniciales.
    El editor de niveles es un buen elemento. Me da curiosidad la implementación; la serie Tony Hawk tenía una función de una familia similar, que derivó en Tony Hawks Pro StrCpy: https://icode4.coffee/?p=954
    Dicho eso, hacer jailbreak o ejecutar código arbitrario parece algo mucho más fácil de lograr en PalmOS que un proyecto paralelo de minigolf.

  • Lo probé en el emulador basado en navegador y el juego es realmente divertido. Casi me quedé atrapado en el modo de práctica.
    Me encantaría que hubiera ports o versiones inspiradas para Android, iOS y navegador. Es muy divertido.