1 puntos por GN⁺ 2024-02-21 | 1 comentarios | Compartir por WhatsApp
  • Es un motor gratuito y de código abierto con el que los desarrolladores en Pascal pueden crear juegos 3D y 2D, así como UI, en un solo proyecto y distribuirlos en múltiples plataformas
  • El editor visual y el sistema de componentes manejan en conjunto elementos de juego y UI como escenas, cámaras, navegación, iluminación, botones, imágenes y etiquetas
  • Soporta flujos de trabajo con modelos 3D, animaciones 2D y hojas de sprites, y permite aprovechar glTF, X3D, IFC y la integración con Blender y Sketchfab
  • Ofrece funciones de renderizado como efectos de shaders, sombras, espejos, renderizado basado en física, bump mapping y corrección gamma, lo que permite una amplia variedad de expresiones gráficas solo con el motor base
  • Cuenta con una herramienta de compilación por línea de comandos, imágenes de Docker y documentación para los principales sistemas de CI, con una estructura fácil de aplicar tanto a aplicaciones de código abierto como comerciales

Editor y forma de desarrollo

  • Castle Game Engine es un motor de juegos 3D/2D dirigido a escritorio, móviles, consolas y web
  • En el editor visual se pueden diseñar juegos 3D y 2D, así como interfaces de usuario
    • Soporta autoescalado de UI y anclas
    • Puede integrarse con varios IDE como Visual Studio Code, Lazarus y Delphi
  • Los componentes separan la composición del viewport y la UI
    • En los mundos 3D/2D se pueden usar escenas, cámaras, navegación, primitivas, luces y más
    • En la UI se pueden usar botones, imágenes, etiquetas y más
  • La base de código usa Object Pascal moderno y ofrece compilación rápida y ejecución rápida de forma predeterminada

Assets, gráficos y despliegue

  • El método de definición de datos incluye modelos 3D, animaciones 2D y hojas de sprites
  • Usa estándares abiertos como glTF y X3D para integrarse con herramientas de creación y repositorios de assets como Blender y Sketchfab
  • Las funciones gráficas incluyen efectos de shaders combinables, sombras, espejos, renderizado basado en física, bump mapping y corrección gamma
  • Los destinos multiplataforma son Windows, Linux, macOS, FreeBSD, Raspberry Pi, Android, iOS, Nintendo Switch y web
    • Se puede trabajar desde cualquier plataforma de escritorio
  • La naturaleza de código abierto y compatibilidad con CI está respaldada por una herramienta de compilación por línea de comandos e imágenes de Docker
    • Ofrece documentación y archivos preparados para GitHub Actions, GitLab CI, Jenkins, Woodpecker CI y otros sistemas de CI
    • El motor es completamente de código abierto y puede usarse para crear cualquier tipo de aplicación, incluidas aplicaciones propietarias

1 comentarios

 
GN⁺ 2024-02-21
Opiniones de Hacker News
  • https://castle-engine.io/why_pascal

    Tengo que echarle un poco de agua fría a esto. La mayoría de las razones enumeradas son cosas que también tienen otros lenguajes modernos, como seguridad, multiplataforma y bibliotecas, y entre ellas se menciona la legibilidad, algo que me cuesta aceptar.
    Trabajo con código Pascal 8 horas al día, todos los días, y no me parece más legible que la sintaxis común de C; al contrario, me parece mucho menos legible. Como hay que usar palabras completas para expresar la sintaxis, al cerebro le cuesta distinguir de inmediato entre “esto es estructura del código” y “esto es código real”, y hay que leer las palabras de verdad. Me parece un diseño muy improductivo.
    Esta página se siente como si hubiera sido escrita hace 20 años. En particular, razones como la seguridad de tipos habrían sido mucho más convincentes en ese entonces.

    • Estoy de acuerdo en que, al leerlo todos los días, puede volverse un poco aburrido, pero aparte de Pascal no he visto un lenguaje al que pueda volver después de 3 años y leerlo de inmediato sin problemas.
      No sé si eso sea posible en otros lenguajes.
    • Me cuesta estar de acuerdo con eso. He trabajado en varios proyectos de Free Pascal, C, C++ y otros, y en proyectos grandes el código escrito por otras personas era más fácil de seguir en Free Pascal que en C/C++/Java, etc.
      Salvo casos extremos, por ejemplo intentar escribir código orientado a objetos en un lenguaje esotérico o en un lenguaje basado en XML que solo tenga funciones imperativas, creo que la legibilidad depende de quien lee.
      Go fue el único otro lenguaje que me resultó fácil de seguir aun sin conocer bien el lenguaje en sí, pero Go es mucho más simple y limitado en funcionalidades. En cambio, Free Pascal es un lenguaje tipo fregadero de cocina que trae de todo y aun así sigue siendo bastante fácil de leer.
      Dicho eso, creo que la razón número uno para usar Free Pascal no es tanto el lenguaje en sí, sino Lazarus IDE, FCL y el framework LCL. También son ventajas su compilador rápido, un optimizador decente, el nuevo backend LLVM para cuando se necesita más rendimiento y la gran cantidad de plataformas soportadas.
      La compatibilidad hacia atrás también es muy importante. Si código que funcionaba bien hace unos años se rompe sin factores externos, no importa qué tan limpio, consistente o elegante sea el lenguaje: lo que me importa es que el código que funcionaba siga funcionando.
    • Para empezar, existe el resaltado de sintaxis.
      Y después de ver ciertas palabras unas cuantas veces, no las “lees” en el sentido mencionado aquí, sino que las comparas mentalmente como imágenes con otras palabras de tu vocabulario interno. Suponiendo que el vocabulario del lenguaje no use palabras muy parecidas entre sí, leer palabras no es más difícil que leer llaves.
    • Para las personas a las que no les gustan los símbolos, las palabras pueden ayudar. C es muy conciso y Pascal es verboso. Es parecido a la diferencia entre C y Python.
      Los símbolos de un solo carácter pueden ser difíciles de captar para algunas personas, igual que las palabras lo son para ti. Con un buen IDE y una buena estructura de código, también se vuelve más fácil distinguir entre estructura y código.
    • No tengo una preferencia sobre cuál es más legible, C o Pascal. Como con los colores del editor, según el ánimo o la hora del día, uno u otro puede parecer más fácil de leer.
      Pero la principal razón por la que querría usar un motor de juegos en Pascal para juegos es que permite evitar la recolección de basura.
  • Artículos relacionados:

    Why use Pascal? - https://news.ycombinator.com/item?id=36646890 - julio de 2023, 307 comentarios
    Modern Object Pascal Introduction for Programmers - https://news.ycombinator.com/item?id=36371434 - junio de 2023, 3 comentarios
    Castle Game Engine Roadmap - https://news.ycombinator.com/item?id=36365420 - junio de 2023, 10 comentarios
    Modern Object Pascal Introduction for Programmers - https://news.ycombinator.com/item?id=28079093 - agosto de 2021, 3 comentarios
    Castle Game Engine: Cross-platform 3D and 2D game engine - https://news.ycombinator.com/item?id=23741883 - julio de 2020, 20 comentarios
    Castle Game Engine 6.4 released – physics, iOS services, shader pipeline upgrade - https://news.ycombinator.com/item?id=16207075 - enero de 2018, 2 comentarios

  • Ni siquiera recuerdo cuándo fue la última vez que usé un lenguaje de la familia Pascal. En 2001, en una clase de programación de la universidad, tuve que usar Delphi; la escuela tenía Delphi 4, pero yo compré Delphi 5. Probablemente lo seguí tocando uno o dos años más, pero creo que casi no lo usé después de 2005
    En la universidad teníamos que crear un programa de gestión de inventario. Como era una carrera de TI, a la mayoría le costaba porque la programación no era su camino, pero yo era casi un “niño prodigio de la programación”, así que me adapté de inmediato a Delphi
    No conocía bien Delphi en sí, pero en cuanto empecé a codear y teclear var, begin, end, :=, etc., supe que era de la familia Pascal. Haber tenido Turbo C y Turbo Pascal en la secundaria me permitió ir un poco adelantado
    La parte difícil era guardar los datos de inventario en un archivo binario y encontrarlos con búsqueda binaria. El tutor era de la vieja escuela, así que tal vez Delphi también tenía más soluciones integradas de las que hoy damos por sentadas en Go o C#
    A todos les costaba lograr que compilara, y ahora que lo pienso es un buen recuerdo. Hoy pongo a Pascal en la misma categoría que Basic. Parece un proyecto interesante, pero no tengo interés en usar Pascal, así que para mí es un factor que descarta la opción
    Aun así, no me sorprendería que todavía haya una comunidad bastante grande que defienda Pascal. Si es así, bien por ellos

    • Probablemente seamos de edades parecidas. En la secundaria hice juegos simples y apps gráficas con Turbo Pascal, y más adelante hice apps de negocio con Delphi. Desde el punto de vista del diseño del lenguaje, no creo que la diferencia entre Pascal y C sea tan grande
      Antes, al pasar código Pascal a C, cambiaba begin/end por llaves, movía las declaraciones de interfaz a archivos de encabezado y reemplazaba funciones con buenos nombres por llamadas crípticas a strtok. En comparación, era innecesariamente feo
      Hoy C es mi lenguaje favorito, pero la limpieza de Pascal y la facilidad de uso de Delphi me siguen recordando cómo se ve una gran experiencia de desarrollo
      Llevo 10 años usando Android Studio, pero no se acerca en nada a la experiencia de Borland Delphi Architect de hace 20 años. Quizá hoy tenga funciones más avanzadas, pero en comparación se siente más como un caos de piezas separadas
    • ¿Qué lenguaje te gustaría usar más ahora?
  • Después de aprender Basic en casa, fui a la secundaria y el primer lenguaje de programación “serio” que aprendí fue Pascal
    Pero uno o dos años después descubrí C y dejé de mirar hacia Pascal. C se sentía más “pro”, más flexible y más cercano al hardware. Pascal parecía más adecuado para desarrollar apps con GUI, mientras que C parecía capaz de abarcar todo, desde las profundidades internas del sistema operativo hasta drivers, juegos y apps con GUI
    Por supuesto, Pascal también podía hacer todo lo que hacía C, así que era una idea tonta, pero para mi yo joven se veía menos “serio” y menos “pro”

    • Tuve una experiencia parecida
      Por 1996-97 estaba jugando a crear efectos de fuego con Turbo Pascal; la mayoría de los tutoriales usaban asm y mode 13h, y yo solo tenía Turbo Pascal 5.5, que no soportaba la palabra clave asm
      Después de tocarlo un poco, a fines de 1997 conocí C, y desde que vi el bucle for de C no volví a tocar Pascal
  • Qué bien. Espero que al proyecto le vaya bien. La elección del lenguaje es interesante; siempre consideré Pascal como un lenguaje viejo, pero claramente parece que estaba equivocado

    • Resulta que Go es básicamente Pascal con llaves, pero nadie llama anticuado a Go
  • Miré el código porque tenía curiosidad por cómo se ve una base de código grande en Pascal. No había visto código Pascal de un tamaño significativo desde más o menos 2001
    Lo que me llamó la atención fueron los nombres de archivo: no me gusta la forma en que todos los archivos fuente llevan castle al principio. Hace más difícil entender de qué trata cada archivo y hace que todos se vean parecidos
    Sobre el código real es difícil opinar porque nunca he usado Pascal, pero el motor en sí se ve genial

    • Esto no es distinto de poner el prefijo yy en archivos yacc. Facilita reconocer qué archivos son archivos de Castle y también evita choques con archivos o unidades de otras bibliotecas
      Es casi una queja sin sentido
  • Me da la sensación de que esos desarrolladores de Pascal deben estar haciendo las cosas con una productividad enorme

    • Si revisas las bibliotecas Delphi/FPC disponibles, prácticamente no falta nada. Hay desde widgets para dibujos CAD hasta frameworks para crear sistemas SCADA. La mayoría no está en GitHub y, aunque lo esté, no tiene cientos de estrellas
      En cambio, en lenguajes más populares como Rust, que uso en mis proyectos, tengo la impresión de que muchos proyectos son del tipo “reimplementamos grep por milésima vez, pero esta vez bien”
    • Object Pascal es un lenguaje de programación moderno. Soporta clases, unidades, propiedades, genéricos, interfaces, reflexión, closures y todo lo que uno esperaría de un lenguaje orientado a objetos moderno
  • Es una verdadera lástima que el producto Delphi haya sido gestionado tan mal por Borland/Embarcadero.
    Object Pascal es un excelente lenguaje. Hoy puede generar código nativo para casi todas las plataformas. Los binarios que produce son pequeños y rápidos; al estar cerca del nivel de C, normalmente puede considerarse que corre entre 100 y 10000 veces más rápido que un código Python similar.
    Castle Engine es un proyecto enorme y permite crear juegos y aplicaciones 3D con mucha facilidad usando un enfoque RAD. A diferencia de otros frameworks enormes en Pascal, no es un producto legacy, sino que está en desarrollo muy activo. Les tengo un enorme respeto a sus desarrolladores.
    Un proyecto igualmente grande e impresionante es Mormot, un framework ORM/SOA/MVC con una base de código altamente optimizada.
    Crear aplicaciones de servidor con Object Pascal y Mormot es fácil, y si NodeJS puede manejar 500 solicitudes por segundo en una situación dada, el código Pascal puede entrar en el rango de más de 10000 por segundo.
    Por eso, cuando en otros lenguajes se necesitarían decenas de servidores para manejar la carga, el código de servidor basado en Object Pascal puede ejecutarse fácilmente en un solo servidor. Usar este lenguaje puede reducir mucho los costos.
    Mucha gente recuerda Object Pascal solo como un lenguaje educativo, pero el lenguaje evolucionó y todavía tiene funciones que otros lenguajes no tienen. Algo especialmente importante es RTTI, es decir, la reflexión. Solo hay un área en la que quedó rezagado frente a las tendencias modernas: el multithreading/las corrutinas no están integrados en el propio lenguaje como en Go.
    Por último, el código escrito hace 40 años todavía puede compilarse y ejecutarse hoy. Durante esos 40 años, muchísimos lenguajes se pusieron de moda y desaparecieron, pero Pascal sigue aquí.
    Volviendo a Castle Engine, aunque no estés familiarizado con Object Pascal, recomiendo mucho probar su editor visual. Es realmente asombroso.

  • La época en la que programaba en Pascal (Turbo/Borland) fue la más divertida. Las “Unit” como unidades de compilación simplemente funcionaban bien, y la jerarquía de dependencias solo permitía una forma DAG. Compilar y usar era muy rápido, y editar y depurar también lo eran.
    Al pasar a Delphi, se sintió como si se hubiera perdido algo. No quiero decir que fuera un mal producto, pero la gente empezó a mirar hacia otros lados.
    Aun así, sigo valorando mucho aquellos tiempos, porque gracias a Pascal tuve un punto de partida para pasar de Apple Basic a C/C++, y también pude aprender usando poco a poco ensamblador inline.