প্রকল্প সম্পর্কে

Prowl হলো সর্বশেষ .NET-এ বিশুদ্ধ C# দিয়ে লেখা একটি ওপেন-সোর্স 3D গেম ইঞ্জিন, যা MIT লাইসেন্সের অধীনে প্রকাশিত। এটি স্পষ্টভাবে Unity দ্বারা অনুপ্রাণিত: এটি অনুরূপ এডিটর ও স্ক্রিপ্টিং API রাখে, GameObject ও MonoBehaviour কম্পোনেন্ট আর্কিটেকচার ব্যবহার করে, এবং Unity প্রকল্প পোর্ট করা যতটা সম্ভব সহজ করার লক্ষ্য রাখে, একইসাথে ছোট ও কাস্টমাইজযোগ্য (KISS) থাকতে চায়। এডিটর, রেন্ডারার, ফিজিক্স, অডিও ও UI-এর সম্পূর্ণ পুনর্লিখনের পর প্রকল্পটি বর্তমানে 1.0-preview অবস্থায় আছে; পুরোনো সংস্করণের প্রকল্পগুলো সামঞ্জস্যপূর্ণ নয় এবং কোনো মাইগ্রেশন পথ নেই, এবং 1.0-এর আগে আরও ব্রেকিং পরিবর্তন সম্ভব। এডিটর ও ওয়ার্কফ্লো: একটি পূর্ণাঙ্গ এডিটর Scene View, Hierarchy, Inspector, Project Browser, Console ও Game View প্রদান করে, সাথে কাস্টম কম্পোনেন্ট/প্রপার্টি/সিন-ভিউ এডিটর, ট্রান্সফর্ম গিজমো (মুভ, রোটেট, স্কেল), আনডু/রিডু, ডকযোগ্য ও রিসাইজযোগ্য প্যানেল যার লেআউট সংরক্ষিত থাকে, ড্র্যাগ অ্যান্ড ড্রপ, মাল্টি-সিলেক্ট, সার্চ/ফিল্টারিং, অ্যাসেট থাম্বনেইল ও 3D প্রিভিউ, অ্যানিমেশন কার্ভ ও গ্রেডিয়েন্ট এডিটর, রিবাইন্ডযোগ্য শর্টকাট, থিমিং, এডিটরের ভেতরে প্লেটেস্টিং এবং স্ক্রিপ্ট হট-রিলোডিং। এডিটরটি ইংরেজি, জার্মান, স্প্যানিশ, ফরাসি, ইতালীয়, জাপানি, কোরিয়ান, পোলিশ, পর্তুগিজ, রুশ, তুর্কি ও চীনা ভাষায় স্থানীয়কৃত। অ্যাসেম্বলি ডেফিনিশনসহ ম্যানেজড ও নেটিভ প্লাগইন সমর্থিত। রানটাইম এডিটর থেকে সম্পূর্ণ স্বতন্ত্র, তাই একটি গেম সরাসরি এটিকে রেফারেন্স করতে পারে এবং কোনো এডিটর নির্ভরতা ছাড়াই শিপ করতে পারে। রেন্ডারিং: Silk.NET-এর মাধ্যমে একটি OpenGL ব্যাকএন্ড, একটি ডেডিকেটেড রেন্ডার থ্রেড ও একটি এক্সটেনসিবল পাইপলাইন (কাস্টম পাইপলাইন সমর্থিত)। ডিফল্ট ফরওয়ার্ড-লিট পাইপলাইন একটি পাতলা G-buffer প্রি-পাস ব্যবহার করে (ডেপথ, নরমাল, মোশন, রাফনেস, মেটালিক)। এটি HDR ও PBR মেটালিক ওয়ার্কফ্লো প্রদান করে যাতে অ্যালবেডো, নরমাল, সারফেস ও এমিশন ম্যাপ থাকে; বোন অ্যানিমেশন ও ব্লেন্ডশেপসহ মেশ ও স্কিনড মেশ রেন্ডারার; লাইন রেন্ডারার; গ্রিড, আইসোমেট্রিক ও স্বয়ংক্রিয় আলফা-ভিত্তিক শিট স্লাইসিংসহ স্প্রাইট এবং একটি স্প্রাইট এডিটর; রেন্ডার টেক্সচার ও Texture3D; GPU ইনস্ট্যান্সিং ও ফ্রাস্টাম কালিং। লাইটিং-এ পয়েন্ট, স্পট ও ডিরেকশনাল লাইট শ্যাডো ম্যাপিংসহ, ডিরেকশনাল লাইটের জন্য ক্যাসকেডেড শ্যাডো ম্যাপ (সর্বোচ্চ চারটি ক্যাসকেড), পয়েন্ট লাইটের জন্য কিউবম্যাপ শ্যাডো এবং ডায়নামিক প্যাকিংসহ একটি শ্যাডো অ্যাটলাস অন্তর্ভুক্ত। পোস্ট-প্রসেসিং-এ HDR টোনম্যাপিং (ACES, Reinhard, Uncharted, Filmic, Melon, AgX), ব্লুম, FXAA, TAA, SMAA, GTAO, স্টোকাস্টিক SSR, বোকেহ ডেপথ অফ ফিল্ড, ভলিউমেট্রিক ফগ ও সিনেমাটিক ইফেক্ট রয়েছে। এছাড়াও উপস্থিত: ট্রান্সপারেন্সি, রিফ্র্যাকশন/হিট-হেজ/ফ্রস্টেড গ্লাসের জন্য একটি ডেপথ-সচেতন গ্র্যাব পাস, প্রসিডিউরাল/কিউবম্যাপ/গ্রেডিয়েন্ট স্কাইবক্স, কোয়াডট্রি LODসহ একটি টেরেইন সিস্টেম, হাইটম্যাপ ও স্প্ল্যাটম্যাপ পেইন্টিং, GPU-ইনস্ট্যান্সড ঘাস, LOD দূরত্বসহ গাছ রেন্ডারিং, হোল ও একটি ডেডিকেটেড টেরেইন এডিটর, এবং একটি GPU-ইনস্ট্যান্সড পার্টিকেল সিস্টেম যাতে এমিশন, ওভার-লাইফটাইম মডিউল, কোলিশন ও লোকাল বা ওয়ার্ল্ড স্পেসে UV অ্যানিমেশন রয়েছে। একটি কাস্টম শেডার ভাষা #include, মাল্টি-পাস ও শেডার কীওয়ার্ড/ভ্যারিয়েন্ট সমর্থন করে; UV আনর্যাপিং এবং বেকড লাইট প্রোবসহ একটি প্রোগ্রেসিভ লাইটম্যাপার অন্তর্ভুক্ত। ফিজিক্স Jitter Physics 2 ব্যবহার করে: বক্স, স্ফিয়ার, ক্যাপসুল, সিলিন্ডার, কোন, কনভেক্স হাল, মেশ, মডেল ও টেরেইন কোলাইডার; সাসপেনশন ও স্লিপ-ভিত্তিক গ্রিপসহ একটি রে-কাস্ট-ভিত্তিক হুইল কোলাইডার; অনেক জয়েন্ট ও কনস্ট্রেইন্ট (বল সকেট, হিঞ্জ, হিঞ্জ অ্যাঙ্গেল, ফিক্সড অ্যাঙ্গেল, কোন লিমিট, ডিস্ট্যান্স লিমিট, টুইস্ট অ্যাঙ্গেল, প্রিজম্যাটিক, ইউনিভার্সাল, পয়েন্ট অন লাইন, পয়েন্ট অন প্লেন, অ্যাঙ্গুলার ও লিনিয়ার মোটর); একটি ক্যারেক্টার কন্ট্রোলার; ট্রিগার ভলিউম; কোলিশন লেয়ার ও LayerMask ফিল্টারিং; এবং রে-কাস্টিং প্লাস শেপ কোয়েরি API। অডিও MiniAudio ব্যবহার করে, যাতে অ্যাটেনুয়েশন ও ডপলারসহ স্পেশিয়াল 3D অডিও, WAV/MP3/OGG/FLAC সমর্থন, একটি ইফেক্ট চেইন (ডিলে, ডিস্টরশন, বিকোয়াড ফিল্টার, রিভার্ব, ফেজার) এবং কাস্টম IAudioEffect ইমপ্লিমেন্টেশন রয়েছে। অন্যান্য সিস্টেম: Prowl.Echo-এর মাধ্যমে সিরিয়ালাইজেশন; ট্যাগ ও লেয়ার; ফগ ও অ্যাম্বিয়েন্ট লাইটিংসহ সিন; নেস্টিং, অ্যাপ্লাই/রিভার্ট/ব্রেক-ইনস্ট্যান্স ও ওভাররাইড ট্র্যাকিংসহ প্রিফ্যাব; প্রকল্প সেটিংস; dotnet build-এর মাধ্যমে স্ক্রিপ্ট কম্পাইলেশন; কম্পোজিট ও প্রসেসরসহ একটি ইনপুট অ্যাকশন সিস্টেম, .inputactions অ্যাসেট ও একটি ডেডিকেটেড এডিটর, অ্যাকশন ফেজ এবং কীবোর্ড/মাউস/গেমপ্যাড বাইন্ডিং; GameObject-ভিত্তিক UI যাতে RectTransform-চালিত লেআউটসহ ওয়ার্ল্ড-স্পেস UI, বাটন, স্লাইডার, লেআউট গ্রুপ ও ড্র্যাগ-অ্যান্ড-ড্রপ হ্যান্ডলার রয়েছে; ইন্সপেক্টর-কনফিগারযোগ্য পার্সিস্টেন্ট কলব্যাকের জন্য Prowl Actions; এবং একটি ম্যাথ লাইব্রেরি যাতে ম্যাট্রিক্স (Float4x4), কোয়াটার্নিয়ন, Transform2D এবং AABB, বাউন্ডস, ফ্রাস্টাম, কোন, রে, প্লেন, লাইন সেগমেন্ট ও রেক্টের মতো শেপ রয়েছে। অ্যাসেট পাইপলাইন GUID-ভিত্তিক রেফারেন্সসহ মেটা ফাইল, ইমপোর্ট ক্যাশিং ও স্বয়ংক্রিয় পুনরায় ইমপোর্টের জন্য ফাইল ওয়াচিং, অ্যাট্রিবিউটের মাধ্যমে কাস্টম ইমপোর্টার, ডিটারমিনিস্টিক GUIDসহ সাব-অ্যাসেট, ফরওয়ার্ড ও রিভার্স ডিপেন্ডেন্সি ট্র্যাকিং এবং থ্রেডেড লোডিং ব্যবহার করে। সমর্থিত ফরম্যাটের মধ্যে মডেল GLTF, GLB, OBJ ও FBX; টেক্সচার PNG, JPG, BMP, TGA, PSD, HDR, DDS ও EXR; এবং অডিও WAV, MP3, OGG ও FLAC অন্তর্ভুক্ত। বিল্ড সিস্টেম প্যাকড .prowlpak অ্যাসেট ফাইলসহ স্ট্যান্ডঅ্যালোন অ্যাপ্লিকেশন এক্সপোর্ট করে, শুধুমাত্র ব্যবহৃত অ্যাসেট এক্সপোর্ট করে, প্রতি-প্ল্যাটফর্ম বিল্ড প্রোফাইল এবং Windows, Mac ও Linux সমর্থন করে। কোডবেসটি রানটাইম ও এডিটরজুড়ে 450+ টেস্টসহ ইউনিট টেস্টেড। শুরু করতে .NET 10 প্রয়োজন। প্রি-বিল্ট 1.0-preview রিলিজ পাওয়া যায়, অথবা রিপোজিটরি ক্লোন করে Visual Studio 17.8+, VS Code বা Rider-এ সলিউশন খোলা যায়। প্রকল্পটি এডিটর ও এক্সপোর্ট করা বিল্ড উভয়ের জন্যই ক্রস-প্ল্যাটফর্ম, এবং একটি Discord সার্ভারের মাধ্যমে কমিউনিটি সহায়তা পাওয়া যায়।