1 pontos por GN⁺ 2024-02-21 | 1 comentários | Compartilhar no WhatsApp
  • Um mecanismo gratuito e de código aberto em que desenvolvedores Pascal podem criar jogos 3D e 2D e UI em um único projeto e distribuir para várias plataformas
  • O editor visual e o sistema de componentes tratam juntos elementos de jogo e de UI como cenas, câmera, navegação, iluminação, botões, imagens e rótulos
  • Suporta fluxos de trabalho com modelos 3D, animações 2D e sprite sheets, podendo aproveitar glTF, X3D, IFC e integração com Blender e Sketchfab
  • Oferece recursos de renderização como efeitos de shader, sombras, espelhos, renderização baseada em física, bump mapping e correção de gama, permitindo várias expressões gráficas só com o motor básico
  • Com ferramenta de build por linha de comando, imagem Docker e documentação para os principais CIs, tem uma estrutura fácil de aplicar tanto a aplicações de código aberto quanto comerciais

Editor e forma de desenvolvimento

  • Castle Game Engine é um motor de jogos 3D/2D voltado a desktop, mobile, consoles e web
  • No editor visual, é possível projetar jogos 3D/2D e interfaces de usuário
    • Suporta autoescalonamento e âncoras de UI
    • Pode ser integrado a vários IDEs, como Visual Studio Code, Lazarus e Delphi
  • Os componentes separam a composição do viewport e da UI
    • O mundo 3D/2D pode usar cenas, câmera, navegação, primitivas, iluminação etc.
    • A UI pode usar botões, imagens, rótulos etc.
  • A base de código é Object Pascal moderno, oferecendo builds rápidos e execução rápida por padrão

Assets, gráficos e distribuição

  • O modo de definição de dados inclui modelos 3D, animações 2D e sprite sheets
  • Usa os padrões abertos glTF e X3D, permitindo integração com ferramentas de criação e repositórios de assets como Blender e Sketchfab
  • Os recursos gráficos incluem efeitos de shader combináveis, sombras, espelhos, renderização baseada em física, bump mapping e correção de gama
  • Os alvos multiplataforma são Windows, Linux, macOS, FreeBSD, Raspberry Pi, Android, iOS, Nintendo Switch e web
    • É possível trabalhar a partir de qualquer plataforma desktop
  • A compatibilidade com open source e CI é sustentada por ferramenta de build em linha de comando e imagem Docker
    • Fornece documentação e arquivos prontos para GitHub Actions, GitLab CI, Jenkins, Woodpecker CI e outros CIs
    • O motor é totalmente de código aberto e pode ser usado para criar qualquer tipo de aplicação, incluindo aplicações proprietárias

1 comentários

 
GN⁺ 2024-02-21
Opiniões do Hacker News
  • https://castle-engine.io/why_pascal

    Vou ter que jogar um pouco de água fria aqui. A maioria dos motivos listados — segurança, multiplataforma, bibliotecas — também existe em outras linguagens modernas, e entre eles aparece legibilidade, o que é difícil de aceitar
    Trabalho 8 horas por dia com código Pascal, mas não acho que ele seja mais fácil de ler do que uma sintaxe C comum; pelo contrário, acho muito menos legível. Como é preciso usar palavras inteiras para representar a sintaxe, o cérebro tem dificuldade para distinguir imediatamente “isto é estrutura do código” de “isto é código de fato”, e é preciso realmente ler as palavras. Acho um design muito improdutivo
    Esta página parece ter sido escrita há 20 anos. Em especial, motivos como segurança de tipos teriam sido muito mais convincentes naquela época

    • Concordo que, lendo todos os dias, fica um pouco tedioso, mas, fora Pascal, nunca vi uma linguagem em que eu pudesse voltar 3 anos depois e ler imediatamente sem problemas
      Não sei se isso é possível em outras linguagens
    • Tenho dificuldade em concordar com essa parte. Já trabalhei em vários projetos em Free Pascal, C, C++ e outros, e, em projetos grandes, o código escrito por outras pessoas era mais fácil de acompanhar em Free Pascal do que em C/C++/Java etc.
      Em casos extremos — por exemplo, ao tentar escrever código orientado a objetos em uma linguagem obscura ou em uma linguagem baseada em XML que só tem recursos imperativos —, acho que a legibilidade depende de quem lê
      Go foi a única outra linguagem que achei fácil de acompanhar mesmo sem conhecer bem a linguagem em si, mas Go é muito mais simples e limitada em recursos. Já Free Pascal é uma linguagem do tipo pia de cozinha, com praticamente tudo dentro, e ainda assim continua relativamente fácil de ler
      Dito isso, acho que o principal motivo para usar Free Pascal não é a linguagem em si, mas o Lazarus IDE e os frameworks FCL e LCL. O compilador rápido, um otimizador decente, o novo backend LLVM que pode ser usado quando é preciso mais desempenho e o grande número de plataformas suportadas também são vantagens
      Compatibilidade retroativa também é muito importante. Se um código que funcionava bem alguns anos atrás quebra sem fatores externos, não importa o quão limpa, consistente e elegante seja a linguagem; para mim, o importante é que o código que funcionava continue funcionando
    • Antes de tudo, existe realce de sintaxe
      E, depois de ver uma palavra algumas vezes, você não a “lê” no sentido mencionado aqui; em vez disso, passa a associá-la, como uma imagem, a outras palavras no vocabulário da sua mente. Partindo do pressuposto de que não se usam palavras muito parecidas no vocabulário da linguagem, ler palavras não é mais difícil do que ler chaves
    • Para quem não gosta de símbolos, palavras podem ajudar. C é muito concisa, e Pascal é verbosa. É parecido com a diferença entre C e Python
      Símbolos de um caractere podem ser difíceis de entender para algumas pessoas, assim como palavras parecem ser para você. Com uma boa IDE e boa estrutura de código, também fica mais fácil distinguir a estrutura do código do código em si
    • Não há uma preferência objetiva sobre qual é mais fácil de ler, C ou Pascal. Como cores de editor, dependendo do humor ou da hora do dia, uma ou outra pode parecer mais legível
      Mas o principal motivo pelo qual eu gostaria de usar uma engine de jogos em Pascal para jogos é poder evitar coleta de lixo
  • Posts relacionados:

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

  • Nem lembro quando foi a última vez que usei uma linguagem da família Pascal. Em 2001, numa aula de programação da faculdade, tive de usar Delphi; a escola usava Delphi 4, mas eu comprei o Delphi 5. Devo ter mexido nele por mais um ou dois anos depois disso, mas acho que praticamente não usei desde 2005
    Na faculdade, tínhamos de criar um programa de controle de estoque. Como era um curso de TI, para a maioria programação não era o caminho, então sofreram bastante; eu era quase um “prodígio da programação”, então me adaptei ao Delphi na hora
    Eu não conhecia bem o Delphi em si, mas, assim que comecei a codar e digitei var, begin, end, := etc., percebi que era da família Pascal. Como eu tinha Turbo C e Turbo Pascal no ensino médio, consegui sair um pouco na frente
    A parte difícil era armazenar os dados de estoque em um arquivo binário e encontrar dados com busca binária. O tutor era das antigas, então talvez o Delphi também tivesse mais soluções embutidas que hoje damos como certas em Go ou C# modernos
    Todo mundo sofreu para fazer o build passar e, pensando agora, é uma boa lembrança. Hoje coloco Pascal na mesma categoria que Basic. Parece um projeto interessante, mas não tenho interesse em usar Pascal, então para mim isso acaba sendo um impeditivo
    Ainda assim, não me surpreenderia se ainda existisse uma comunidade bem grande de defensores de Pascal. Se for o caso, é uma boa notícia para eles

    • Provavelmente somos de uma faixa etária parecida. No ensino médio, fiz joguinhos simples e apps gráficos com Turbo Pascal e, mais tarde, apps de negócios em Delphi. Do ponto de vista de design de linguagem, não acho que Pascal e C sejam tão diferentes assim
      Antigamente, ao portar código Pascal para C, eu trocava begin/end por chaves, movia declarações de interface para arquivos de cabeçalho e substituía funções bem nomeadas por chamadas crípticas a strtok. Em comparação, ficava desnecessariamente feio
      Hoje C é minha linguagem favorita, mas a limpeza do Pascal e a facilidade de uso do Delphi continuam me lembrando como pode ser uma ótima experiência de desenvolvimento
      Uso Android Studio há 10 anos, mas ele não chega nem perto da experiência que tive com Borland Delphi Architect há 20 anos. Talvez hoje tenha recursos mais avançados, mas, em comparação, parece mais uma bagunça de partes desconectadas
    • Hoje, que linguagem você teria mais vontade de usar?
  • Depois de aprender Basic em casa, fui para o ensino médio e a primeira linguagem de programação “séria” que aprendi foi Pascal
    Mas, um ou dois anos depois, descobri C e nunca mais olhei para Pascal. C parecia mais “profissional”, mais flexível e mais próximo do hardware. Pascal parecia mais adequado para desenvolver apps GUI, enquanto C parecia capaz de lidar com tudo, desde as entranhas de um sistema operacional até drivers, jogos e apps GUI
    Claro que era uma ideia boba, porque Pascal também podia fazer tudo que C fazia, mas, para mim quando jovem, ele parecia menos “sério” e menos “profissional”

    • Tive uma experiência parecida
      Por volta de 1996–97, eu brincava fazendo efeitos de fogo em Turbo Pascal, mas a maioria dos tutoriais usava asm e mode 13h, e o que eu tinha era apenas o Turbo Pascal 5.5, que não dava suporte à palavra-chave asm
      Depois de mexer um pouco, no fim de 1997 conheci C e, depois de ver o loop for de C, nunca mais encostei em Pascal
  • Legal. Espero que o projeto dê certo. A escolha da linguagem é interessante; eu sempre tinha pensado em Pascal como uma linguagem antiga, mas pelo visto eu estava errado

    • No fim das contas, Go é basicamente Pascal com chaves, e ninguém chama Go de antiquado
  • Fiquei curioso para ver como é uma grande base de código em Pascal, então dei uma olhada no código. Eu não via código Pascal de tamanho significativo desde mais ou menos 2001
    O que me chamou atenção foram os nomes dos arquivos: não gosto dessa prática de colocar castle na frente de todos os arquivos-fonte. Isso dificulta entender do que o arquivo trata e faz tudo parecer parecido
    Sobre o código em si, é difícil opinar porque nunca usei Pascal, mas o motor em si parece bacana

    • Isso não é diferente de colocar o prefixo yy em arquivos yacc. Fica fácil saber quais arquivos são arquivos Castle e também evita conflitos com arquivos ou units de outras bibliotecas
      Parece mais uma implicância sem muito sentido
  • Tenho a impressão de que esses desenvolvedores Pascal devem estar fazendo as coisas com uma produtividade enorme

    • Se você der uma olhada nas bibliotecas Delphi/FPC disponíveis, praticamente não falta nada. Há desde widgets de desenho CAD até frameworks para criar sistemas SCADA. A maioria não está no GitHub e, mesmo quando está, não tem centenas de estrelas
      Em contrapartida, em linguagens mais populares que uso em projetos, como Rust, tenho a impressão de que muitos projetos parecem ser do tipo “reinventamos o grep pela milésima vez, mas agora do jeito certo”
    • Object Pascal é uma linguagem de programação moderna. Ela oferece classes, units, propriedades, genéricos, interfaces, reflexão, closures e tudo o que se espera de uma linguagem orientada a objetos moderna
  • É realmente uma pena que o produto Delphi tenha sido administrado tão mal pela Borland/Embarcadero.
    Object Pascal é uma excelente linguagem. Hoje em dia, dá para gerar código nativo para praticamente todas as plataformas. Os binários gerados são pequenos e rápidos; como ficam em um nível próximo ao C, em geral dá para dizer que rodam de 100 a 10000 vezes mais rápido do que código Python equivalente.
    O Castle Engine é um projeto enorme e permite criar jogos e aplicações 3D com muita facilidade no estilo RAD. Ao contrário de outros grandes frameworks em Pascal, não é um produto legado: está em desenvolvimento muito ativo. Tenho um enorme respeito pelos desenvolvedores.
    Um projeto igualmente grande e impressionante é o Mormot, um framework ORM/SOA/MVC baseado em código altamente otimizado.
    Criar aplicações de servidor com Object Pascal e Mormot é fácil e, em uma situação em que o NodeJS consegue processar 500 requisições por segundo, o código em Pascal pode entrar na faixa de mais de 10000 por segundo.
    Por isso, quando outras linguagens exigiriam dezenas de servidores para lidar com a carga, código de servidor baseado em Object Pascal pode rodar tranquilamente em um único servidor. Usar essa linguagem pode reduzir custos de forma significativa.
    Muita gente lembra de Object Pascal apenas como uma linguagem educacional, mas a linguagem evoluiu e ainda tem recursos que outras linguagens não têm. Um ponto especialmente importante é RTTI, ou seja, reflection. A única área em que ela ficou para trás nas tendências modernas é que multithreading/coroutines não estão integrados à própria linguagem, como em Go.
    Por fim, código escrito 40 anos atrás ainda pode ser compilado e executado hoje. Ao longo desses 40 anos, inúmeras linguagens entraram e saíram de moda, mas Pascal ainda está por aí.
    Voltando ao Castle Engine: mesmo que você não esteja familiarizado com Object Pascal, recomendo muito experimentar o editor visual deles. É realmente impressionante.

  • A época em que eu programava em Pascal (Turbo/Borland) foi a mais divertida. A “Unit”, como unidade de compilação, simplesmente funcionava bem, e a hierarquia de dependências só permitia formato de DAG. Compilar e usar era muito rápido, e editar e depurar também.
    Com a transição para o Delphi, ficou a sensação de que algo se perdeu. Não quer dizer que fosse um produto ruim, mas as pessoas começaram a olhar para outros lugares.
    Ainda assim, continuo valorizando aquela época em que, graças ao Pascal, tive um ponto de partida para sair do Apple Basic e ir para C/C++, e pude aprender usando um pouco de assembly inline.