Castle Game Engine – Pascal tabanlı ücretsiz, açık kaynaklı, çapraz platform 3D/2D oyun motoru
(castle-engine.io)- 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
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
Bunun başka dillerde de mümkün olup olmadığını bilmiyorum
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
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
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
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çebildimZor 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
Eskiden Pascal kodunu C'ye taşırken
begin/endifadelerini süslü parantezlere çevirir, arayüz bildirimlerini header dosyasına taşır ve iyi adlandırılmış fonksiyonları şifreli gibi duranstrtokç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
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
1996-97 civarında Turbo Pascal ile alev efekti yaparak oynuyordum; çoğu öğretici
asmvemode 13hkullanıyordu, bende iseasmanahtar sözcüğünü desteklemeyen Turbo Pascal 5.5 vardıBiraz kurcaladıktan sonra 1997'nin sonunda C ile tanıştım ve C'nin
fordöngüsünü gördükten sonra Pascal'a bir daha dokunmadımHarika. 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
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
castleekleme yöntemini sevmedim. Dosyanın ne hakkında olduğunu anlamayı zorlaştırıyor ve hepsini birbirine benzer gösteriyorGerçek kod hakkında konuşmam zor çünkü Pascal kullanmışlığım yok; ama motorun kendisi hoş görünüyor
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üyorAnlamsız bir kusur aramaya yakın
Şu Pascal geliştiricileri inanılmaz üretken şekilde iş çıkarıyor gibi geliyor
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
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