1 puan yazan GN⁺ 2024-02-21 | 1 yorum | WhatsApp'ta paylaş
  • Pascal geliştiricilerinin 3D/2D oyunları ve UI’ları tek bir projede oluşturup birden çok platforma dağıtmasına olanak tanıyan ücretsiz, açık kaynaklı bir motordur
  • Görsel editör ve bileşen sistemi; sahne, kamera, navigasyon, ışıklandırma, düğme, görsel ve etiket gibi oyun ve UI bileşenlerini birlikte ele alır
  • 3D model, 2D animasyon ve sprite sheet tabanlı iş akışlarını destekler; glTF, X3D, IFC ile Blender ve Sketchfab entegrasyonlarından yararlanılabilir
  • Shader efektleri, gölgeler, aynalar, fizik tabanlı rendering, bump mapping, gamma düzeltmesi gibi rendering özellikleri sunarak yalnızca temel motorla çeşitli grafik ifadeleri mümkün kılar
  • Komut satırı build aracı, Docker imajları ve başlıca CI dokümantasyonuyla hem açık kaynak hem de ticari uygulamalara uygulanması kolay bir yapıya sahiptir

Editör ve geliştirme yaklaşımı

  • Castle Game Engine, masaüstü, mobil, konsol ve web’i hedefleyen bir 3D/2D oyun motorudur
  • Görsel editörde 3D/2D oyunlar ve kullanıcı arayüzleri tasarlanabilir
    • UI için otomatik ölçekleme ve anchor desteği sunar
    • Visual Studio Code, Lazarus, Delphi gibi çeşitli IDE’lerle entegre edilebilir
  • Bileşenler, viewport ve UI yapılandırmalarını ayrı şekilde ele alır
    • 3D/2D dünyada sahneler, kameralar, navigasyon, primitifler ve ışıklar kullanılabilir
    • UI’da düğmeler, görseller, etiketler vb. kullanılabilir
  • Kod tabanı modern Object Pascal üzerine kuruludur; hızlı build ve hızlı çalışma varsayılan olarak sunulur

Varlıklar, grafikler ve dağıtım

  • Veri tanımlama yaklaşımı, 3D modelleri, 2D animasyonları ve sprite sheet’leri kapsar
  • Açık standartlar olan glTF ve X3D kullanılarak Blender ve Sketchfab gibi üretim araçları ve varlık depolarıyla entegre olunabilir
  • Grafik özellikleri; birleştirilebilir shader efektlerini, gölgeleri, aynaları, fizik tabanlı rendering’i, bump mapping’i ve gamma düzeltmesini içerir
  • Çapraz platform hedefleri Windows, Linux, macOS, FreeBSD, Raspberry Pi, Android, iOS, Nintendo Switch ve web’dir
    • Herhangi bir masaüstü platformunda çalışılabilir
  • Açık kaynak ve CI dostu yapı, komut satırı build aracı ve Docker imajlarıyla desteklenir
    • GitHub Actions, GitLab CI, Jenkins, Woodpecker CI ve diğer CI’lar için dokümantasyon ve hazır dosyalar sağlar
    • Motor tamamen açık kaynaklıdır ve tescilli uygulamalar dahil her türlü uygulama geliştirmede kullanılabilir

1 yorum

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

    Burada biraz soğuk su dökmek gerekecek. Sıralanan nedenlerin çoğu güvenlik, çapraz platform desteği, kütüphaneler gibi diğer modern dillerde de olan şeyler; bunlardan biri olarak okunabilirlik gösteriliyor ama bunu kabul etmek zor
    Her gün 8 saat Pascal koduyla uğraşıyorum; genel C söz diziminden daha okunabilir değil, hatta bence çok daha az okunabilir. Söz dizimini ifade etmek için tam kelimeler kullanmak gerektiğinden beyin “bu kod yapısı” ile “bu gerçek kod” ayrımını anında yapamıyor ve kelimeleri gerçekten okumak gerekiyor. Bunun çok verimsiz bir tasarım olduğunu düşünüyorum
    Bu sayfa 20 yıl önce yazılmış gibi hissettiriyor. Özellikle tip güvenliği gibi gerekçeler o zamanlar olsaydı çok daha ikna edici olurdu

    • Her gün okuyunca biraz sıkıcı hâle geldiğine katılıyorum ama Pascal dışında, 3 yıl sonra geri dönsem bile hemen sorunsuz okuyabileceğim bir dil görmedim
      Bunun başka dillerde de mümkün olup olmadığını bilmiyorum
    • Bu kısma katılmakta zorlanıyorum. Birkaç Free Pascal, C, C++ projesi ve başka projeler yaptım; büyük projelerde başkasının yazdığı kodu takip etmek Free Pascal’da C/C++/Java vb. dillere göre daha kolaydı
      Uç örnekler, örneğin anlaşılması güç bir dilde ya da yalnızca emirsel özellikleri olan XML tabanlı bir dilde nesne yönelimli kod yazmaya çalışmak gibi durumlar hariç, okunabilirliğin okuyana bağlı olduğunu düşünüyorum
      Go da dili pek bilmediğim hâlde takip etmesi kolay olan tek diğer dildi; ama Go’nun özellikleri çok daha basit ve sınırlı. Buna karşılık Free Pascal her şeyin içine doldurulduğu bir mutfak lavabosu dili olmasına rağmen hâlâ okunması kolay sayılır
      Yine de Free Pascal kullanmanın bir numaralı nedeni bence dilin kendisinden ziyade Lazarus IDE, FCL ve LCL framework’leri. Hızlı derleyici ve fena olmayan optimize edici, daha fazla performans gerektiğinde kullanılabilecek yeni LLVM arka ucu ve desteklenen platform sayısının çokluğu da artıları
      Geriye dönük uyumluluk da çok önemli. Birkaç yıl önce düzgün çalışan kod dış etkenler olmadan bozuluyorsa, dil ne kadar temiz, tutarlı ve zarif olursa olsun benim için önemli olan düzgün çalışan kodun çalışmaya devam etmesidir
    • Öncelikle söz dizimi vurgulama var
      Ayrıca bir kelimeyi birkaç kez gördükten sonra, burada kastedilen anlamıyla “okumazsınız”; zihninizdeki sözlükteki diğer kelime ve imgelerle eşleştirirsiniz. Dilin kelime dağarcığında birbirine çok benzeyen kelimeler kullanılmadığı varsayımıyla, kelime okumak süslü parantez okumaktan daha zor değildir
    • Sembolleri sevmeyenler için kelimeler yardımcı olabilir. C çok özlü, Pascal ise uzun uzadıya. C ile Python arasındaki farka benziyor
      Tek karakterlik semboller bazı insanlar için, kelimelerin size olduğu gibi, kavraması zor olabilir. İyi bir IDE ve kod yapısıyla yapı ile kodu ayırt etmek de kolaylaşır
    • C ile Pascal’dan hangisinin daha okunabilir olduğu konusunda tercihim yok. Editör renkleri gibi, ruh hâline veya günün saatine göre biri daha okunabilir görünebilir
      Ancak oyunlarda Pascal oyun motoru kullanmak istememin başlıca nedeni garbage collection’dan kaçınabilmek
  • İlgili yazılar:

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

  • Pascal ailesinden bir dili en son ne zaman kullandığımı bile hatırlamıyorum. 2001'de üniversitedeki programlama dersinde Delphi kullanmam gerekiyordu; okulda Delphi 4 vardı, ben ise Delphi 5 satın almıştım. Sonrasında 1-2 yıl daha kurcalamışımdır ama 2005'ten sonra neredeyse hiç kullanmadığımı düşünüyorum
    Üniversitede bir stok yönetim programı yapmamız gerekiyordu. IT bölümü olduğu için çoğu kişi programlamanın kendi yönü olmadığını düşünüp zorlanıyordu; ben ise “programlama dâhisi”ne yakın olduğumdan Delphi'ye hemen uyum sağladım
    Delphi'nin kendisini iyi bilmiyordum ama kod yazmaya başlayıp var, begin, end, := vb. yazdığım anda bunun Pascal ailesinden olduğunu anladım. Lisede Turbo C ve Turbo Pascal'a sahip olmam sayesinde biraz öne geçebildim
    Zor olan kısım, stok verilerini ikili dosyada saklamak ve ikili arama ile veriyi bulmaktı. Eğitmen eski kafalıydı; belki de modern Go veya C#'ta doğal karşıladığımız daha fazla yerleşik çözüm Delphi'de de vardı
    Herkes derlemeyi geçirmekte zorlanmıştı; şimdi düşününce güzel bir anı. Bugün Pascal'ı Basic ile aynı kategoriye koyuyorum. İlginç bir proje gibi görünüyor ama Pascal kullanmaya ilgim olmadığı için benim için bir tercih engeli oluyor
    Yine de Pascal'ı savunan epey büyük bir kitlenin hâlâ olmasına şaşırmam. Öyleyse bu onlar için iyi bir şey

    • Muhtemelen benzer yaşlardayız. Lisede Turbo Pascal ile basit oyunlar ve grafik uygulamaları yaptım, daha sonra Delphi ile iş uygulamaları geliştirdim. Dil tasarımı açısından Pascal ile C arasındaki farkın o kadar büyük olduğunu düşünmüyorum
      Eskiden Pascal kodunu C'ye taşırken begin/end ifadelerini süslü parantezlere çevirir, arayüz bildirimlerini header dosyasına taşır ve iyi adlandırılmış fonksiyonları şifreli gibi duran strtok çağrılarına dönüştürürdüm. Karşılaştırınca gereksiz yere çirkin kalıyordu
      Şu anda C en sevdiğim dil ama Pascal'ın temizliği ve Delphi'nin kullanıcı dostu oluşu, iyi bir geliştirici deneyiminin ne olduğunu bana sürekli hatırlatıyor
      10 yıldır Android Studio kullanıyorum ama 20 yıl önceki Borland Delphi Architect deneyiminin yanına hiç yaklaşamıyor. Bugün daha gelişmiş özellikleri olabilir ama kıyaslayınca birbirinden kopuk bir karmaşaya daha yakın
    • Şimdi hangi dili daha çok kullanmak istersin?
  • Evde Basic öğrendikten sonra liseye gidince öğrendiğim ilk “ciddi” programlama dili Pascal oldu
    Ama 1-2 yıl sonra C'yi keşfettikten sonra Pascal'a dönüp bakmadım. C daha “pro” gibi, daha esnek ve donanıma daha yakın görünüyordu. Pascal GUI uygulama geliştirmeye daha uygun, C ise işletim sisteminin derin içlerinden sürücülere, oyunlara ve GUI uygulamalarına kadar her şeyi halledebilecek gibi görünüyordu
    Elbette Pascal da C'nin yaptığı her şeyi yapabiliyordu, yani aptalca bir düşünceydi; ama genç halime daha az “ciddi” ve daha az “pro” görünüyordu

    • Benzer bir deneyimim var
      1996-97 civarında Turbo Pascal ile alev efekti yaparak oynuyordum; çoğu öğretici asm ve mode 13h kullanıyordu, bende ise asm anahtar sözcüğünü desteklemeyen Turbo Pascal 5.5 vardı
      Biraz kurcaladıktan sonra 1997'nin sonunda C ile tanıştım ve C'nin for döngüsünü gördükten sonra Pascal'a bir daha dokunmadım
  • Harika. Umarım proje başarılı olur. Dil tercihi ilginç; Pascal'ı hep eski bir dil olarak görmüştüm ama belli ki yanılmışım

    • Meğer Go büyük ölçüde süslü parantezli Pascal'mış; ama kimse Go'ya eski kafalı demiyor
  • Büyük bir Pascal kod tabanı nasıl görünüyor merak ettiğim için koda baktım. 2001 civarından beri anlamlı büyüklükte Pascal kodu görmemiştim
    Gözüme çarpan şey dosya adları oldu; tüm kaynak dosyalarının başına castle ekleme yöntemini sevmedim. Dosyanın ne hakkında olduğunu anlamayı zorlaştırıyor ve hepsini birbirine benzer gösteriyor
    Gerçek kod hakkında konuşmam zor çünkü Pascal kullanmışlığım yok; ama motorun kendisi hoş görünüyor

    • Bu, yacc dosyalarına yy öneki koymaktan farklı değil. Hangi dosyanın Castle dosyası olduğunu görmek kolaylaşıyor ve başka kütüphanelerin dosyaları veya unit'leriyle çakışmayı da önlüyor
      Anlamsız bir kusur aramaya yakın
  • Şu Pascal geliştiricileri inanılmaz üretken şekilde iş çıkarıyor gibi geliyor

    • Kullanılabilir Delphi/FPC kütüphanelerine göz atarsanız aslında yok yok. CAD çizim widget'larından SCADA sistemleri oluşturmak için framework'lere kadar her şey var. Çoğu GitHub'da değil; olanların da yüzlerce yıldızı yok
      Buna karşılık projelerimde kullandığım Rust gibi daha popüler dillerde, birçok proje bana “grep'i 1000. kez yeniden yaptık ama bu sefer doğru yaptık” türünde görünüyor
    • Object Pascal modern bir programlama dilidir. Sınıflar, unit'ler, özellikler, generics, interface'ler, reflection, closure'lar gibi modern nesne yönelimli dillerden beklenen her şeyi destekler
  • Delphi ürününün Borland/Embarcadero tarafından bu kadar kötü yönetilmiş olması gerçekten üzücü
    Object Pascal harika bir dil. Günümüzde neredeyse tüm platformlar için native kod üretebiliyor. Üretilen binary’ler küçük, hızı yüksek; C’ye yakın düzeyde olduğu için genelde benzer Python kodundan 100 ila 10000 kat daha hızlı çalıştığı söylenebilir
    Castle Engine çok büyük bir proje ve RAD yaklaşımıyla oyunlar ile 3D uygulamaları çok kolay geliştirmeyi sağlıyor. Diğer büyük Pascal framework’lerinin aksine legacy bir ürün değil; çok aktif biçimde geliştiriliyor. Geliştiricilerine gerçekten büyük saygı duyuyorum
    Benzer şekilde büyük ve etkileyici bir proje olarak, yüksek ölçüde optimize edilmiş kod tabanına sahip ORM/SOA/MVC framework’ü Mormot var
    Object Pascal ve Mormot ile sunucu uygulamaları yapmak kolay; NodeJS’in saniyede 500 isteği işleyebildiği bir durumda Pascal kodu saniyede 10000’den fazla isteğin olduğu seviyeye çıkabilir
    Bu yüzden başka dillerde yükü karşılamak için onlarca sunucu gerektiğinde, Object Pascal tabanlı sunucu kodu tek bir sunucuda rahatça çalışabilir. Bu dili kullanmak maliyetleri ciddi biçimde düşürebilir
    Pek çok kişi Object Pascal’ı yalnızca eğitim amaçlı bir dil olarak hatırlıyor, ancak dil gelişti ve hâlâ başka dillerde olmayan özelliklere sahip. Özellikle önemli olan RTTI, yani reflection. Güncel akımların gerisinde kaldığı tek alan var: Go’daki gibi multithreading/coroutine desteğinin dilin kendisine entegre olmaması
    Son olarak, 40 yıl önce yazılmış kodu bugün hâlâ derleyip çalıştırabiliyorsunuz. O 40 yıl içinde sayısız dil popüler olup kayboldu, ama Pascal hâlâ burada
    Castle Engine’e dönersek, Object Pascal’a aşina olmasanız bile onların görsel editörünü mutlaka denemenizi öneririm. Gerçekten şaşırtıcı

  • Pascal(Turbo/Borland) ile programlama yaptığım dönemler en eğlenceli zamanlardı. Derleme birimi olan “Unit” basitçe sorunsuz çalışıyordu ve bağımlılık katmanında yalnızca DAG biçimine izin veriliyordu. Derleme ve kullanım çok hızlıydı; düzenleme ve hata ayıklama da hızlıydı
    Delphi’ye geçildiğinde sanki bir şey kaybedilmiş gibi hissettim. Kötü bir ürün olduğu anlamına gelmiyor ama insanlar başka yerlere bakmaya başladı
    Yine de Pascal sayesinde Apple Basic’ten C/C++’a geçiş için bir başlangıç noktası bulduğum, inline assembly’yi de azar azar kullanıp öğrenebildiğim o dönemi hâlâ değerli buluyorum