به یک فریلنسر با تجربه در JavaScript (بدون فریمورک) نیاز دارم برای بهبود و تکمیل یک پروژهی موجود شبیهسازی فیزیکی.
پروژه با HTML, CSS, JS نوشته شده.
الگوریتمها بخشی بهصورت دستی طراحی شدهاند و بخشی هم با شبیهسازی Planck.js.
خروجی فعلی قابل استفاده است اما نیاز به بهبود، رفع باگ و حرفهایتر شدن دارد.
تکنولوژی و محدودیتها
فقط HTML + CSS + Vanilla JS (بدون فریمورک/TypeScript/jQuery، بدون سمتسرور).
خروجی روی Canvas 2D (Stage).
استفاده از موتورهای فیزیک 2D جاوااسکریپت آزاد است (مثل Planck.js یا مشابه)، به شرطی که کد ساده و خوانا باشد.
جریان اجرا
صفحهی سیاه با دکمهی Start.
با کلیک روی Start، یک Round آغاز میشود.
ورودیهای Round:
configObjects: آرایهی JSON از اشیای SVG (تولید با svgmaker.js – فایل موجود و قابل ویرایش)
autoDeployFrequency (بهصورت ms، پیشفرض 1000)
defaultWallBounces (پیشفرض 3)
loop (true/false)
در هر autoDeployFrequency یک SVG جدید خارج از دید ایجاد میشود، با جهت حرکت به سمت Stage (نزدیک مرکز ±20%).
پس از ورود کامل شیء به استیج، برخورد با دیوارها فعال میشود.
هر شیء با دیوارها و اشیای دیگر برخورد دارد تا شمارندهی برخورد با دیوار به حد مجاز برسد؛ سپس برخورد دیوار غیرفعال شده و شیء از استیج خارج میشود.
تمام وضعیت اشیاء باید در stageObjects ذخیره شود: دادهی اولیه، موقعیت، سرعت، چرخش/سرعت زاویهای، مقیاس، تعداد بونس دیوار، فعال/غیرفعال بودن برخورد دیوار و… .
نیازمندیها
رفع باگها و بهینهسازی عملکرد.
پیادهسازی برخورد و واکنش اشکال به صورت کاملاً هوشمندانه (چرخش، کشش، ضربه، فاصله دقیق).
اضافه کردن اشکال جدید: مثلث، لوزی، پنجضلعی، اعداد و حروف (از فایلهای SVG موجود).
دقت بالا در مختصات و واکنش هر شکل بر اساس ساختار هندسی خودش.
یک دکمهی Collider Debug:
وقتی فعال شود، بهجای نمایش مربع ساده دور شکل، کالایدر دقیق بر اساس ساختار هندسی واقعی SVG و ماتریس ترنسفورمش رسم شود.
عکس رو گذاشتم اما اینطوری مربعی شکل نمیخوام
مثال: برای اعداد یا حروف، کالایدر باید دقیقاً روی خطوط SVG بیفتد، نه بهصورت باکس مربعی.
خروجی ریسپانسیو و روان (هدف 60fps روی سیستم میانرده، افت کنترلشده تا 30fps).
مدیریت حافظه (حذف تمیز اشیای خارجشده).
کد ساده، ماژولار و خوانا (بدون وابستگیهای سنگین).
ابزارهای دیباگ (اجباری)
نمایش مرزهای برخورد/کانتکتها (Toggle).
لاگ ورود و خروج اشیا.
نمایش وضعیت جاری شیء هنگام هاور موس.
تحویل
مرحله اول: یک خروجی ویدیویی ~۲ دقیقهای از عملکرد پروژه.
در صورت تأیید، کد کامل ارسال میشود و پرداخت انجام خواهد شد.
زمانبندی
اولین خروجی: امشب.
ددلاین نهایی بدون باگ: چهارشنبه عصر، 12 شهریور.
⚡ اگر در این حوزه حرفهای هستید، این پروژه برای شما ساده خواهد بود.