منصوبے کے بارے میں

Rust کے لیے BepuPhysics، BepuPhysics v2 کا سطر بہ سطر ترجمہ ہے، جسے اس کے مصنف نے اصل میں C# میں لکھا گیا انتہائی اعلیٰ کارکردگی والا فزکس انجن قرار دیا ہے۔ یہ پورٹ اصل کے SIMD کے لیے بہتر شدہ تصادم کی شناخت اور constraint solving پر زور کو برقرار رکھتا ہے، ملٹی تھریڈنگ کے لیے خودکار کام کی تقسیم کے ساتھ لاک فری ٹاسک شیڈولنگ شامل کرتا ہے، اور Bevy گیم انجن کے ساتھ اختیاری انضمام فراہم کرتا ہے۔ Spatial query سپورٹ میں filtered ray casts اور shape sweeps شامل ہیں۔ Build requirements قابلِ ذکر ہیں: crate کو Rust nightly 1.95.0 یا جدید تر درکار ہے کیونکہ یہ portable_simd اور generic_const_exprs features استعمال کرتا ہے، اور یہ macOS (NEON SIMD) یا x86_64 (SSE/AVX2) کو ہدف بناتا ہے۔ Installation عام Cargo dependency ہے، جس میں bevy feature flag پلگ ان کو فعال کرتا ہے۔ Bevy کا راستہ شروع کرنے کا آسان ترین طریقہ بتایا گیا ہے۔ BepuPhysicsPlugin کو default plugins کے ساتھ شامل کیا جاتا ہے، gravity کو resource کے طور پر ڈالا جاتا ہے، اور bodies کو components کے ساتھ spawn کیا جاتا ہے: Dynamic، Static اور Kinematic bodies کے لیے RigidBody variants؛ spheres، cuboids، capsules اور cylinders کے لیے colliders؛ اور mass، friction، restitution اور linear یا angular damping کے لیے material properties۔ Velocity components simulation کے ساتھ دو طرفہ sync کرتے ہیں۔ اضافی tuning components میں body-local axes کے گرد locked rotation (جس میں ایک UPRIGHT preset شامل ہے جو yaw آزاد کرتا ہے، اور ایک ALL preset)، speculative margins جو کنٹرول کرتے ہیں کہ سطح سے کتنا آگے contacts بنائے جائیں، sleep thresholds، اور query layer masks شامل ہیں جو صرف spatial queries کو filter کرنے کے لیے استعمال ہوتے ہیں، collision response کے لیے نہیں۔ Resources میں Gravity اور timestep، substeps، thread count اور determinism کے لیے BepuConfig شامل ہیں، جس کا آخری مقصد replay یا networking scenarios کے لیے ہے۔ Spatial queries ایک BepuSpatialQuery system parameter کے ذریعے expose کیے جاتے ہیں جو simulation کو shared mode میں borrow کرتا ہے، لہٰذا کئی query systems متوازی چل سکتے ہیں، اور scratch memory ہر system کے لیے allocate ہوتی ہے۔ Queries کو physics step set سے باہر schedule کرنا چاہیے۔ API میں closest-hit اور all-hit ray casts کے ساتھ shape sweeps شامل ہیں، اور QueryFilter entity exclusion، layer masks، اور statics-only یا bodies-only restrictions کی حمایت کرتا ہے۔ README ایک SweepResult::StartPenetrating variant کو نمایاں کرتا ہے اُن sweeps کے لیے جو پہلے سے contact میں شروع ہوں: چونکہ اُس صورت میں time of impact، contact point یا normal متعین نہیں ہوتا، پورٹ اسے miss یا hit سے الگ رکھتا ہے تاکہ callers کو فیصلہ کرنا ہو کہ اسے کیسے handle کرنا ہے۔ Entity resolution کو collidable mobility پر branch کرنے کے طور پر دستاویز کیا گیا ہے، handle استعمال کرنے سے پہلے، کیونکہ ایک ہی raw value والے body اور static handles غیر متعلق objects کی طرف اشارہ کرتے ہیں۔ Repository میں Bevy examples جیسے rain، tower اور hello_physics شامل ہیں، اور اس پر زور دیا گیا ہے کہ انہیں release mode میں چلایا جائے کیونکہ debug builds SIMD optimizations کے بغیر 10 سے 100 گنا سست ہوتے ہیں۔ Comparison benchmarks ایک الگ bepu-benchmarks workspace member میں رہتے ہیں تاکہ اُن کی بھاری، platform-specific dependencies library سے باہر رہیں؛ ان میں Avian comparison اور، ایک اختیاری csharp feature کے پیچھے، FFI کے ذریعے اصل C# BepuPhysics کے خلاف چلایا جانے والا وہی scene شامل ہے۔ یہ feature اختیاری رکھا گیا ہے کیونکہ اس کی native dependency MSVC پر link نہیں ہوتی۔ پروجیکٹ Apache 2.0 کے تحت لائسنس یافتہ ہے، جو اصل BepuPhysics v2 سے مطابقت رکھتا ہے، اور Ross Nordby کو اصل مصنف کے طور پر کریڈٹ دیتا ہے، جبکہ Bevy wrapper کو Avian physics engine کے ڈیزائن سے متاثر بتایا گیا ہے۔