1 पॉइंट द्वारा GN⁺ 2024-02-21 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • यह Pascal डेवलपर्स के लिए एक मुफ़्त ओपन सोर्स इंजन है, जिससे वे 3D·2D गेम और UI को एक ही प्रोजेक्ट में बना सकते हैं और कई प्लेटफ़ॉर्म पर डिप्लॉय कर सकते हैं
  • इसका visual editor और component सिस्टम scene, camera, navigation, lighting, और button·image·label जैसे game·UI components को साथ में संभालता है
  • यह 3D मॉडल, 2D animation, और sprite sheet आधारित workflow को सपोर्ट करता है, और glTF, X3D, IFC तथा Blender·Sketchfab integration का उपयोग किया जा सकता है
  • यह shader effects, shadows, mirrors, physically based rendering, bump mapping, gamma correction जैसी rendering सुविधाएँ देता है, जिससे केवल base engine से ही तरह-तरह के graphics expression संभव हैं
  • command-line build tools, Docker images, और प्रमुख CI documentation के साथ इसकी संरचना open source·commercial applications दोनों में लागू करना आसान बनाती है

एडिटर और विकास का तरीका

  • Castle Game Engine डेस्कटॉप, मोबाइल, कंसोल, और वेब को लक्षित करने वाला 3D/2D गेम इंजन है
  • visual editor में 3D·2D गेम और user interface डिज़ाइन किए जा सकते हैं
    • यह UI auto scaling और anchor को सपोर्ट करता है
    • इसे Visual Studio Code, Lazarus, Delphi जैसे कई IDE के साथ integrate किया जा सकता है
  • components viewport और UI composition को अलग-अलग संभालते हैं
    • 3D/2D world में scene, camera, navigation, primitive, lighting आदि का उपयोग किया जा सकता है
    • UI में button, image, label आदि का उपयोग किया जा सकता है
  • इसका code base modern Object Pascal है, और यह fast build तथा fast execution को मूल रूप से प्रदान करता है

एसेट, ग्राफ़िक्स, डिप्लॉयमेंट

  • data definition method में 3D model, 2D animation, और sprite sheet शामिल हैं
  • open standards glTF और X3D का उपयोग करके Blender, Sketchfab जैसे creation tools·asset repositories के साथ integration किया जा सकता है
  • graphics features में combinable shader effects, shadows, mirrors, physically based rendering, bump mapping, और gamma correction शामिल हैं
  • cross-platform targets हैं Windows, Linux, macOS, FreeBSD, Raspberry Pi, Android, iOS, Nintendo Switch, और web
    • किसी भी desktop platform पर काम किया जा सकता है
  • open source और CI friendliness command-line build tools और Docker images से समर्थित है
    • यह GitHub Actions, GitLab CI, Jenkins, Woodpecker CI और अन्य CI के लिए documentation और ready files प्रदान करता है
    • इंजन पूरी तरह open source है, और proprietary applications सहित सभी प्रकार के applications बनाने में उपयोग किया जा सकता है

1 टिप्पणियां

 
GN⁺ 2024-02-21
Hacker News की राय
  • https://castle-engine.io/why_pascal

    यहाँ थोड़ा ठंडा पानी डालना पड़ेगा। दिए गए ज़्यादातर कारण जैसे safety, cross-platform, libraries वगैरह ऐसी चीज़ें हैं जो दूसरी आधुनिक भाषाओं में भी मिलती हैं, और उनमें से एक के रूप में readability का नाम लिया गया है, जो समझना मुश्किल है।
    मैं हर दिन 8 घंटे Pascal code के साथ काम करता हूँ, लेकिन यह सामान्य C syntax से ज़्यादा आसान नहीं लगता; बल्कि मुझे यह काफी कम readable लगता है। syntax दिखाने के लिए पूरे शब्द लिखने पड़ते हैं, इसलिए दिमाग के लिए तुरंत यह अलग करना मुश्किल हो जाता है कि “यह code structure है” और “यह असली code है”, और उन शब्दों को सचमुच पढ़ना पड़ता है। मुझे यह बहुत unproductive design लगता है।
    यह पेज ऐसा लगता है जैसे 20 साल पहले लिखा गया हो। खासकर type safety जैसे कारण उस समय कहीं ज़्यादा भरोसेमंद लगते

    • मैं इस बात से सहमत हूँ कि रोज़ पढ़ते-पढ़ते यह थोड़ा नीरस लगने लगता है, लेकिन Pascal के अलावा मैंने कोई ऐसी भाषा नहीं देखी जिसे 3 साल बाद वापस आकर भी तुरंत बिना दिक्कत पढ़ सकूँ।
      मुझे नहीं पता दूसरी भाषाओं में भी यह संभव है या नहीं
    • उस हिस्से से सहमत होना मेरे लिए कठिन है। मैंने कई Free Pascal, C, C++ projects और दूसरे projects पर काम किया है, और बड़े projects में किसी और के लिखे code को C/C++/Java आदि की तुलना में Free Pascal में follow करना आसान था।
      बहुत चरम मामलों को छोड़ दें, जैसे जानबूझकर कठिन भाषाएँ या सिर्फ imperative features वाली XML-आधारित भाषाओं में object-oriented code लिखने की कोशिश, तो readability मुझे पढ़ने वाले व्यक्ति पर निर्भर लगती है।
      Go ही दूसरी ऐसी भाषा थी जिसे मैं भाषा के स्तर पर अच्छी तरह नहीं जानता था, फिर भी follow करना आसान था, लेकिन Go की features कहीं ज़्यादा simple और restricted हैं। दूसरी ओर Free Pascal एक तरह की kitchen sink language है जिसमें सब कुछ ठूँसा हुआ है, फिर भी इसे पढ़ना काफ़ी आसान है।
      हालांकि Free Pascal इस्तेमाल करने की पहली वजह मेरे हिसाब से भाषा खुद नहीं, बल्कि Lazarus IDE, FCL, और LCL framework हैं। तेज compiler, ठीक-ठाक optimizer, और जब ज़्यादा performance चाहिए तब काम आने वाला नया LLVM backend, साथ ही कई supported platforms भी इसके फायदे हैं।
      backward compatibility भी बहुत महत्वपूर्ण है। अगर कुछ साल पहले ठीक चलने वाला code किसी बाहरी वजह के बिना टूट जाए, तो भाषा कितनी भी साफ, consistent और elegant क्यों न हो, मेरे लिए अहम बात यह है कि जो code चल रहा था वह चलता रहे
    • सबसे पहले तो syntax highlighting होती है।
      और किसी शब्द को कुछ बार देखने के बाद आप उसे यहाँ बताए गए अर्थ में “पढ़ते” नहीं हैं, बल्कि अपने दिमाग के शब्दकोश में मौजूद दूसरे शब्दों और छवियों की तरह match करते हैं। अगर भाषा की शब्दावली में बहुत मिलते-जुलते शब्द न हों, तो शब्द पढ़ना braces पढ़ने से ज़्यादा कठिन नहीं है
    • जिन्हें symbols पसंद नहीं हैं, उनके लिए शब्द मददगार हो सकते हैं। C बहुत concise है और Pascal verbose है। यह कुछ-कुछ C और Python के फर्क जैसा है।
      एक-अक्षर वाले symbols कुछ लोगों के लिए वैसे ही समझना कठिन हो सकते हैं, जैसे शब्द आपके लिए हैं। अच्छा IDE और code structure हो तो structure और code को अलग पहचानना भी आसान हो जाता है
    • C और Pascal में कौन ज़्यादा readable है, इस पर मेरी कोई मजबूत पसंद नहीं है। editor colors की तरह, mood या दिन के समय के हिसाब से कभी एक ज़्यादा readable लग सकता है, कभी दूसरा।
      लेकिन games में Pascal game engine इस्तेमाल करने की मुख्य वजह यह है कि इससे garbage collection से बचा जा सकता है
  • संबंधित लेख:

    Why use Pascal? - https://news.ycombinator.com/item?id=36646890 - जुलाई 2023, 307 टिप्पणियाँ
    Modern Object Pascal Introduction for Programmers - https://news.ycombinator.com/item?id=36371434 - जून 2023, 3 टिप्पणियाँ
    Castle Game Engine Roadmap - https://news.ycombinator.com/item?id=36365420 - जून 2023, 10 टिप्पणियाँ
    Modern Object Pascal Introduction for Programmers - https://news.ycombinator.com/item?id=28079093 - अगस्त 2021, 3 टिप्पणियाँ
    Castle Game Engine: Cross-platform 3D and 2D game engine - https://news.ycombinator.com/item?id=23741883 - जुलाई 2020, 20 टिप्पणियाँ
    Castle Game Engine 6.4 released – physics, iOS services, shader pipeline upgrade - https://news.ycombinator.com/item?id=16207075 - जनवरी 2018, 2 टिप्पणियाँ

  • याद भी नहीं कि आख़िरी बार Pascal परिवार की भाषा कब इस्तेमाल की थी। 2001 में कॉलेज की programming class में Delphi इस्तेमाल करनी पड़ी थी, और कॉलेज में Delphi 4 था, लेकिन मैंने Delphi 5 खरीदा था। उसके बाद शायद 1–2 साल और थोड़ा इस्तेमाल किया होगा, लेकिन 2005 के बाद तो लगभग नहीं ही किया होगा
    कॉलेज में हमें inventory management program बनाना था। IT course था, इसलिए ज़्यादातर लोगों का programming उनकी दिशा नहीं थी और उन्हें काफ़ी मुश्किल हुई, लेकिन मैं लगभग “programming prodigy” जैसा था, इसलिए Delphi में तुरंत ढल गया
    Delphi के बारे में ज़्यादा नहीं जानता था, लेकिन coding शुरू करके जैसे ही var, begin, end, := वगैरह टाइप किए, तुरंत समझ गया कि यह Pascal परिवार की भाषा है। हाई स्कूल में Turbo C और Turbo Pascal होने की वजह से मुझे थोड़ी बढ़त मिल गई थी
    कठिन हिस्सा inventory data को binary file में store करना और binary search से data ढूँढना था। ट्यूटर थोड़ा पुराने ख़याल का था, इसलिए हो सकता है कि modern Go या C# में जो ज़्यादा built-in solutions सामान्य लगते हैं, वैसी चीज़ें Delphi में भी रही हों
    सब लोग build pass कराने में जूझ रहे थे, और अब सोचता हूँ तो वह अच्छी याद है। अब मैं Pascal को Basic जैसी ही category में रखता हूँ। प्रोजेक्ट दिलचस्प लगता है, लेकिन Pascal इस्तेमाल करने में मेरी दिलचस्पी नहीं है, इसलिए मेरे लिए यह एक बाधा है
    फिर भी, अगर आज भी Pascal के काफ़ी मज़बूत समर्थक हों तो मुझे हैरानी नहीं होगी। अगर ऐसा है, तो उनके लिए यह अच्छी बात है

    • लगता है हम लगभग एक ही पीढ़ी के हैं। हाई स्कूल में Turbo Pascal से simple games और graphics apps बनाए थे, और बाद में Delphi से business apps बनाए। language design के नज़रिए से Pascal और C का अंतर मुझे इतना बड़ा नहीं लगता
      पहले Pascal code को C में port करते समय begin/end को braces में बदलते थे, interface declarations को header files में ले जाते थे, और अच्छे नाम वाले functions को गुप्त-मंत्र जैसे strtok calls में बदल देते थे। तुलना करें तो वह बेवजह ज़्यादा बदसूरत लगता था
      आज C मेरी पसंदीदा भाषा है, लेकिन Pascal की साफ़-सुथराई और Delphi की user-friendliness अब भी मुझे याद दिलाती है कि शानदार developer experience कैसा होता है
      10 साल से Android Studio इस्तेमाल कर रहा हूँ, लेकिन 20 साल पहले का Borland Delphi Architect अनुभव अब भी उसके आसपास भी नहीं पहुँचता। आज शायद उसमें ज़्यादा advanced features हों, लेकिन तुलना में वह अलग-अलग बिखरे हिस्सों का अव्यवस्थित जमावड़ा लगता है
    • अब आप किस भाषा को ज़्यादा इस्तेमाल करना चाहेंगे?
  • घर पर Basic सीखने के बाद, हाई स्कूल में मैंने पहली “serious” programming language Pascal सीखी थी
    लेकिन 1–2 साल बाद C खोजने के बाद मैंने Pascal की तरफ़ फिर कभी नहीं देखा। C ज़्यादा “professional”, ज़्यादा flexible, और hardware के ज़्यादा क़रीब लगती थी। Pascal GUI apps के लिए ज़्यादा उपयुक्त लगती थी, जबकि C ऐसा लगता था कि OS के गहरे अंदरूनी हिस्सों से लेकर drivers, games और GUI apps तक सब कुछ संभाल सकती है
    बेशक Pascal भी C वाले सारे काम कर सकती थी, इसलिए यह बचकानी सोच थी, लेकिन उस उम्र में मुझे वह कम “serious” और कम “professional” लगती थी

    • मेरा भी कुछ ऐसा ही अनुभव रहा
      1996~97 के आसपास Turbo Pascal में fire effects बनाकर खेलता था, लेकिन ज़्यादातर tutorials में asm और mode 13h इस्तेमाल होता था, और मेरे पास सिर्फ़ Turbo Pascal 5.5 था, जो asm keyword को support नहीं करता था
      थोड़ा बहुत करने के बाद 1997 के अंत में C के बारे में पता चला, और C का for loop देखने के बाद Pascal को फिर कभी हाथ नहीं लगाया
  • बढ़िया है। उम्मीद है प्रोजेक्ट अच्छा चलेगा। language choice दिलचस्प है, और मैं हमेशा Pascal को सिर्फ़ पुरानी भाषा मानता था, लेकिन साफ़ है कि मैं ग़लत था

    • असल में Go मोटे तौर पर braces वाला Pascal ही है, और कोई भी Go को पुराना नहीं कहता
  • मुझे जिज्ञासा हुई कि बड़ा Pascal codebase कैसा दिखता है, इसलिए मैंने code देखा। 2001 के आसपास के बाद से मैंने किसी meaningful size का Pascal code नहीं देखा था
    जो चीज़ सबसे पहले दिखी वह file names थे; हर source file के आगे castle लगाना मुझे पसंद नहीं आया। इससे यह समझना मुश्किल हो जाता है कि file किस बारे में है, और सब एक जैसी दिखने लगती हैं
    असली code पर टिप्पणी करना मुश्किल है क्योंकि मैंने Pascal कभी इस्तेमाल नहीं किया, लेकिन engine ख़ुद काफ़ी अच्छा लगता है

    • यह yacc files में yy prefix लगाने से अलग नहीं है। इससे यह पहचानना आसान हो जाता है कि कौन-सी file Castle file है, और दूसरी libraries की files या units से conflict भी नहीं होता
      यह लगभग बेवजह की आपत्ति है
  • लगता है वे Pascal developers बहुत ज़बरदस्त productivity के साथ काम कर रहे होंगे

    • उपलब्ध Delphi/FPC libraries पर नज़र डालें तो practically कुछ भी ग़ायब नहीं है। CAD drawing widgets से लेकर SCADA systems बनाने के frameworks तक सब है। ज़्यादातर GitHub पर नहीं हैं, और अगर हैं भी तो उन पर सैकड़ों stars नहीं लगे हैं
      इसके उलट, जिन ज़्यादा popular languages जैसे Rust का मैं प्रोजेक्ट्स में इस्तेमाल करता हूँ, उनमें बहुत-से projects ऐसे लगते हैं जैसे “हमने grep को 1000वीं बार फिर से बनाया है, लेकिन इस बार सही तरीके से” वाली श्रेणी के हों
    • Object Pascal एक modern programming language है। classes, units, properties, generics, interfaces, reflection, closures जैसी सभी चीज़ें, जिनकी modern object-oriented languages से उम्मीद की जाती है, इसमें supported हैं
  • Delphi प्रोडक्ट को Borland/Embarcadero ने जिस तरह खराब तरीके से मैनेज किया, वह सच में अफसोस की बात है
    Object Pascal एक बेहतरीन भाषा है। आजकल इससे लगभग हर प्लेटफ़ॉर्म के लिए native code बनाया जा सकता है। बनने वाली binaries छोटी होती हैं, speed तेज़ होती है, और यह C के काफ़ी करीब है, इसलिए आम तौर पर समान Python code की तुलना में 100~10000 गुना तेज़ चल सकती है
    Castle Engine एक बहुत बड़ा project है, और RAD तरीके से game और 3D application बहुत आसानी से बनाने देता है। दूसरे बड़े Pascal framework से अलग, यह कोई legacy product नहीं है बल्कि इस पर बहुत सक्रिय रूप से development हो रहा है। डेवलपर्स के लिए सच में बहुत सम्मान है
    इसी तरह का एक बड़ा और प्रभावशाली project Mormot है, जो highly optimized codebase वाला ORM/SOA/MVC framework है
    Object Pascal और Mormot से server application बनाना आसान है, और जहाँ NodeJS प्रति सेकंड 500 requests संभाल पाता है, वहाँ Pascal code प्रति सेकंड 10000 से अधिक के स्तर तक पहुँच सकता है
    इसलिए जहाँ दूसरी भाषाओं में load संभालने के लिए दर्जनों servers चाहिए होते हैं, वहाँ Object Pascal आधारित server code आसानी से एक ही server पर चल सकता है। इस भाषा का उपयोग करने से लागत काफ़ी घट सकती है
    बहुत से लोग Object Pascal को सिर्फ़ एक educational language के रूप में याद करते हैं, लेकिन भाषा विकसित हुई है और इसमें अब भी ऐसे features हैं जो दूसरी भाषाओं में नहीं मिलते। खास तौर पर महत्वपूर्ण है RTTI, यानी reflection। आधुनिक रुझानों से पीछे छूटा हुआ सिर्फ़ एक क्षेत्र है: Go की तरह multithreading/coroutines का language में built-in integration नहीं है
    और आख़िर में, 40 साल पहले लिखा code आज भी compile और run किया जा सकता है। उन 40 सालों में न जाने कितनी भाषाएँ आईं और चली गईं, लेकिन Pascal अब भी बना हुआ है
    Castle Engine पर लौटें, तो भले ही आप Object Pascal से परिचित न हों, उनका visual editor ज़रूर आज़माने की सिफारिश करूँगा। यह सच में चौंकाने वाला है

  • Pascal(Turbo/Borland) में programming करने का दौर सबसे मज़ेदार था। compilation unit यानी “Unit” बस सही तरह काम करता था, और dependency hierarchy में केवल DAG structure की अनुमति थी। compile करना और इस्तेमाल करना बहुत तेज़ था, और editing व debugging भी तेज़ थी
    Delphi पर आने के बाद लगा कि कुछ खो गया। इसका मतलब यह नहीं कि वह खराब product था, लेकिन लोगों ने दूसरी तरफ़ देखना शुरू कर दिया
    फिर भी Pascal की वजह से Apple Basic से C/C++ तक जाने की शुरुआत मिली, और inline assembly को थोड़ा-थोड़ा इस्तेमाल करते हुए सीखने का वह दौर आज भी बहुत क़ीमती लगता है