Castle Game Engine – Engine game 3D/2D lintas platform gratis dan open source berbasis Pascal
(castle-engine.io)- Engine gratis dan open source yang memungkinkan developer Pascal membuat game 3D/2D dan UI dalam satu proyek, lalu mendistribusikannya ke berbagai platform
- Editor visual dan sistem komponen menangani elemen game dan UI seperti scene, kamera, navigasi, pencahayaan, tombol, gambar, dan label secara terpadu
- Mendukung workflow berbasis model 3D, animasi 2D, dan sprite sheet, serta dapat memanfaatkan integrasi glTF, X3D, IFC dengan Blender dan Sketchfab
- Menyediakan fitur rendering seperti efek shader, bayangan, cermin, rendering berbasis fisika, bump mapping, dan koreksi gamma, sehingga berbagai ekspresi grafis bisa dibuat hanya dengan engine bawaan
- Memiliki tool build baris perintah, image Docker, dan dokumentasi CI utama, sehingga strukturnya mudah diterapkan untuk aplikasi open source maupun komersial
Editor dan cara pengembangan
- Castle Game Engine adalah engine game 3D/2D untuk desktop, mobile, konsol, dan web
- Di editor visual, Anda dapat merancang game 3D/2D dan antarmuka pengguna
- Mendukung penskalaan UI otomatis dan anchor
- Dapat diintegrasikan dengan berbagai IDE seperti Visual Studio Code, Lazarus, dan Delphi
- Komponen menangani viewport dan susunan UI secara terpisah
- Dunia 3D/2D dapat menggunakan scene, kamera, navigasi, primitive, pencahayaan, dan lainnya
- UI dapat menggunakan tombol, gambar, label, dan lainnya
- Basis kodenya adalah modern Object Pascal, dengan build cepat dan eksekusi cepat sebagai bawaan
Aset, grafis, dan distribusi
- Metode definisi data mencakup model 3D, animasi 2D, dan sprite sheet
- Menggunakan standar terbuka seperti glTF dan X3D, sehingga dapat terhubung dengan tool pembuatan dan repositori aset seperti Blender dan Sketchfab
- Fitur grafisnya mencakup efek shader yang dapat dikombinasikan, bayangan, cermin, rendering berbasis fisika, bump mapping, dan koreksi gamma
- Target lintas platform mencakup Windows, Linux, macOS, FreeBSD, Raspberry Pi, Android, iOS, Nintendo Switch, dan web
- Anda dapat bekerja dari platform desktop mana pun
- Kesesuaian dengan open source dan CI didukung oleh tool build baris perintah dan image Docker
- Menyediakan dokumentasi dan file siap pakai untuk GitHub Actions, GitLab CI, Jenkins, Woodpecker CI, serta CI lainnya
- Engine ini sepenuhnya open source dan dapat digunakan untuk membuat aplikasi apa pun, termasuk aplikasi proprietary
1 komentar
Komentar Hacker News
https://castle-engine.io/why_pascal
Saya harus sedikit menyiramkan air dingin di sini. Sebagian besar alasan yang tercantum adalah hal-hal yang juga dimiliki bahasa modern lain, seperti keamanan, lintas platform, dan pustaka; salah satunya adalah keterbacaan, tapi ini sulit saya terima
Saya menangani kode Pascal 8 jam setiap hari, tetapi menurut saya tidak lebih mudah dibaca daripada sintaks C pada umumnya; justru jauh lebih sulit dibaca. Karena harus memakai kata utuh untuk merepresentasikan sintaks, otak sulit langsung membedakan “ini struktur kode” dan “ini kode sebenarnya”, dan kata-katanya benar-benar harus dibaca. Menurut saya ini desain yang sangat tidak produktif
Halaman ini terasa seperti ditulis 20 tahun lalu. Khususnya alasan seperti keamanan tipe mungkin akan jauh lebih meyakinkan pada masa itu
Saya tidak tahu apakah hal seperti ini juga mungkin di bahasa lain
Kecuali dalam kasus ekstrem, misalnya mencoba menulis kode berorientasi objek dengan bahasa esoterik atau bahasa berbasis XML yang hanya punya fitur imperatif, menurut saya keterbacaan bergantung pada pembacanya
Go adalah satu-satunya bahasa lain yang mudah saya ikuti meski saya sendiri tidak terlalu mengenal bahasanya, tetapi Go fiturnya jauh lebih sederhana dan terbatas. Sebaliknya, Free Pascal adalah bahasa tipe kitchen sink yang berisi hampir segalanya, tetapi tetap termasuk mudah dibaca
Namun menurut saya alasan utama memakai Free Pascal bukanlah bahasanya sendiri, melainkan Lazarus IDE, FCL, dan framework LCL. Kompiler yang cepat, pengoptimal yang lumayan, backend LLVM baru yang bisa dipakai saat butuh performa lebih, serta banyaknya platform yang didukung juga menjadi kelebihan
Kompatibilitas ke belakang juga sangat penting. Jika kode yang berjalan baik beberapa tahun lalu rusak tanpa faktor eksternal, maka betapapun rapi, konsisten, dan elegannya sebuah bahasa, yang penting bagi saya adalah kode yang tadinya berjalan baik tetap terus berjalan
Dan setelah melihat sebuah kata beberapa kali, Anda tidak lagi “membacanya” dalam arti yang dibicarakan di sini, melainkan mencocokkannya seperti gambar dengan kata lain yang ada di kosakata dalam kepala. Dengan asumsi tidak digunakan kata-kata yang sangat mirip dalam kosakata bahasa tersebut, membaca kata tidak lebih sulit daripada membaca kurung kurawal
Simbol satu karakter bagi sebagian orang bisa sulit dipahami, sama seperti kata-kata bagi Anda. Dengan IDE yang baik dan struktur kode yang rapi, membedakan struktur dan kode juga menjadi lebih mudah
Namun alasan utama saya ingin memakai game engine Pascal untuk game adalah karena bisa menghindari garbage collection
Tulisan terkait:
Why use Pascal? - https://news.ycombinator.com/item?id=36646890 - Juli 2023, 307 komentar
Modern Object Pascal Introduction for Programmers - https://news.ycombinator.com/item?id=36371434 - Juni 2023, 3 komentar
Castle Game Engine Roadmap - https://news.ycombinator.com/item?id=36365420 - Juni 2023, 10 komentar
Modern Object Pascal Introduction for Programmers - https://news.ycombinator.com/item?id=28079093 - Agustus 2021, 3 komentar
Castle Game Engine: Cross-platform 3D and 2D game engine - https://news.ycombinator.com/item?id=23741883 - Juli 2020, 20 komentar
Castle Game Engine 6.4 released – physics, iOS services, shader pipeline upgrade - https://news.ycombinator.com/item?id=16207075 - Januari 2018, 2 komentar
Aku bahkan sudah tidak ingat kapan terakhir kali memakai bahasa keluarga Pascal. Pada 2001, di kelas pemrograman universitas, kami harus memakai Delphi; kampus memakai Delphi 4, tapi aku membeli Delphi 5. Setelah itu mungkin masih kuutak-atik 1–2 tahun lagi, tetapi rasanya setelah 2005 hampir tidak pernah kupakai
Di universitas kami harus membuat program manajemen inventaris. Karena itu jurusan IT, kebanyakan orang kesulitan karena pemrograman bukan arah mereka, tetapi aku hampir seperti “anak ajaib pemrograman”, jadi langsung terbiasa dengan Delphi
Aku sendiri tidak terlalu mengenal Delphi, tetapi begitu mulai coding dan mengetik
var,begin,end,:=, dan semacamnya, aku tahu ini keluarga Pascal. Karena di SMA aku punya Turbo C dan Turbo Pascal, aku bisa sedikit lebih unggulBagian yang sulit adalah menyimpan data inventaris ke file biner dan menemukan data dengan pencarian biner. Tutornya bergaya lama, jadi mungkin saja Delphi pun punya lebih banyak solusi bawaan yang sekarang dianggap wajar di Go atau C# modern
Semua orang kesulitan membuat build lolos, dan kalau dipikir sekarang itu kenangan yang menyenangkan. Sekarang aku menempatkan Pascal dalam kategori yang sama dengan Basic. Ini terlihat seperti proyek yang menarik, tetapi aku tidak tertarik memakai Pascal, jadi bagiku itu menjadi faktor penghalang pilihan
Meski begitu, aku tidak akan heran kalau masih ada komunitas pendukung Pascal yang cukup besar. Kalau begitu, ini kabar baik bagi mereka
Dulu ketika memindahkan kode Pascal ke C, aku biasa mengganti
begin/enddengan kurung kurawal, memindahkan deklarasi antarmuka ke file header, dan mengganti fungsi-fungsi bernama jelas dengan pemanggilanstrtokyang seperti sandi. Kalau dibandingkan, itu terasa jelek tanpa perluSekarang C adalah bahasa favoritku, tetapi kerapian Pascal dan keramahan Delphi bagi pengguna terus mengingatkanku seperti apa pengalaman pengembang yang hebat itu
Aku sudah 10 tahun memakai Android Studio, tetapi sama sekali tidak mendekati pengalaman Borland Delphi Architect 20 tahun lalu. Mungkin sekarang ada fitur yang lebih canggih, tetapi kalau dibandingkan rasanya lebih seperti kekacauan yang saling terpisah
Setelah belajar Basic di rumah, bahasa pemrograman “serius” pertama yang kupelajari saat masuk SMA adalah Pascal
Namun 1–2 tahun kemudian aku menemukan C, dan sejak itu tidak lagi menengok Pascal. C terasa lebih “profesional”, lebih fleksibel, dan lebih dekat ke hardware. Pascal terasa lebih cocok untuk pengembangan aplikasi GUI, sedangkan C tampak bisa menangani apa saja, dari bagian terdalam sistem operasi sampai driver, game, dan aplikasi GUI
Tentu saja itu pemikiran bodoh, karena Pascal juga bisa melakukan semua yang dilakukan C, tetapi bagi diriku yang masih muda, Pascal terlihat kurang “serius” dan kurang “profesional”
Sekitar 1996–97 aku bermain-main membuat efek api dengan Turbo Pascal, tetapi kebanyakan tutorial memakai
asmdanmode 13h, sementara yang kupunya hanya Turbo Pascal 5.5 yang tidak mendukung kata kunciasmSetelah mengutak-atik sebentar, pada akhir 1997 aku mengenal C, dan setelah melihat loop
fordi C, aku tidak pernah menyentuh Pascal lagiKeren. Semoga proyeknya sukses. Pilihan bahasanya menarik; aku selalu menganggap Pascal hanya sebagai bahasa lama, tapi sepertinya jelas aku keliru
Karena penasaran seperti apa bentuk codebase Pascal yang besar, aku melihat kodenya. Sejak sekitar 2001 aku tidak pernah melihat kode Pascal berukuran berarti
Yang menarik perhatianku adalah nama file: aku tidak suka cara semua file sumber diawali dengan
castle. Itu membuat lebih sulit memahami isi file dan membuat semuanya tampak miripUntuk kode sebenarnya sulit kukomentari karena aku belum pernah memakai Pascal, tetapi engine-nya sendiri terlihat keren
yypada file yacc. Mudah untuk mengetahui mana file Castle, dan juga bisa menghindari bentrok dengan file atau unit dari pustaka lainIni nyaris seperti mencari-cari kesalahan yang tidak berarti
Rasanya para pengembang Pascal itu pasti sedang bekerja dengan sangat produktif
Sebaliknya, pada bahasa yang lebih populer seperti Rust yang kupakai untuk proyek, kesanku banyak proyek terlihat seperti “membuat grep untuk ke-1000 kalinya, tapi kali ini benar-benar dibuat dengan benar”
Sangat disayangkan produk Delphi dikelola begitu buruk oleh Borland/Embarcadero
Object Pascal adalah bahasa yang hebat. Saat ini hampir bisa membuat kode native untuk semua platform. Binary yang dihasilkan kecil dan cepat; levelnya mendekati C, sehingga biasanya bisa dianggap berjalan 100–10000 kali lebih cepat daripada kode Python yang serupa
Castle Engine adalah proyek besar, dan memungkinkan pembuatan game serta aplikasi 3D dengan sangat mudah menggunakan pendekatan RAD. Berbeda dari framework Pascal besar lainnya, ini bukan produk legacy, melainkan masih dikembangkan dengan sangat aktif. Saya sangat menghormati para pengembangnya
Proyek besar dan mengesankan lain yang serupa adalah Mormot, sebuah framework ORM/SOA/MVC berbasis kode yang sangat dioptimalkan
Membuat aplikasi server dengan Object Pascal dan Mormot itu mudah, dan dalam situasi ketika NodeJS bisa menangani 500 request per detik, kode Pascal bisa masuk ke kisaran lebih dari 10000 request per detik
Jadi ketika bahasa lain membutuhkan puluhan server untuk menangani beban, kode server berbasis Object Pascal bisa berjalan dengan mudah di satu server saja. Menggunakan bahasa ini dapat memangkas biaya secara besar-besaran
Banyak orang mengingat Object Pascal hanya sebagai bahasa untuk pendidikan, tetapi bahasanya telah berkembang dan masih memiliki fitur yang tidak ada di bahasa lain. Yang sangat penting adalah RTTI, yaitu reflection. Hanya ada satu area yang tertinggal dari tren modern: multithreading/coroutine tidak terintegrasi ke dalam bahasa itu sendiri seperti Go
Terakhir, kode yang ditulis 40 tahun lalu masih bisa dikompilasi dan dijalankan sekarang. Selama 40 tahun itu banyak bahasa sempat populer lalu menghilang, tetapi Pascal masih bertahan
Kembali ke Castle Engine, meskipun tidak familier dengan Object Pascal, saya sangat menyarankan untuk mencoba visual editor mereka. Benar-benar mengagumkan
Masa ketika saya memrogram dengan Pascal(Turbo/Borland) adalah yang paling menyenangkan. “Unit” sebagai satuan kompilasi berfungsi begitu saja, dan lapisan dependensi hanya mengizinkan bentuk DAG. Kompilasi dan penggunaannya sangat cepat, begitu juga proses editing dan debugging
Saat beralih ke Delphi, rasanya ada sesuatu yang hilang. Bukan berarti itu produk yang buruk, tetapi orang-orang mulai melihat ke tempat lain
Meski begitu, saya masih menghargai masa-masa ketika Pascal memberi saya titik awal untuk beralih dari Apple Basic ke C/C++, serta memungkinkan saya belajar sedikit demi sedikit sambil menggunakan inline assembly