متأسفانه وقتی قرار هست بازی شما کمی بیشتر در عمق مسائل فنی بره راهکارهای آماده خیلی پاسخگو نیستند. این مورد رو در بازیهای اخیر مثل پرسیتی، بوملند یا در پروژه اخیرمون باهاش دست به گریبان بودیم و هستیم.
بطور مثال همین مسأله شما فیزیک انجین در یونیتی به تازگی Havok هست که بر اساس DOTS است و قرار هست مشکلات Floating Points رو مرتفع کنه ما هنوز نتونستیم بخوبی ازش بهره ببریم امتحان کنید و حتما ما رو مطلع کنید.
ما برای بوملند خودمون فیزیک Colleagues2d ۱۳۱نوشتیم تا بتونیم قدم به قدم باهاش جلو بریم تا RollBack و FastForward داشته باشیم و در عین حال منابع کمتری از سرور مصرف کنه.
میخواستم بدونم کسی ایده ایی داره که چطور میشه roll back system سمت server تو بازی های انلاین با این سیستم فیزیک یونیتی ساخت؟ یعنی چطور میتونم شبیه سازی فعلی ام رو جلو برم در حالی که برگردم عقب و همزمان باهاش یه شبیه سازی دیگه رو اجرا کنم و نتیجه رو چک کنم. با سیستم ECS فکر کنم این امکانش هست چون چیزی به نام Worlds اضافه شده که فکر کنم این مشکل رو حل میکنه. میخواستم بدونم بدون ECS چه روشی وجود داره؟
من کجام؟ اینجا کجاست؟
در جامعه بازیسازان ایران میتونید در مورد هر موضوعی سوال کنید، به سوالای بقیه جواب بدید و تجربهتون رو به اشتراک بگذارید!
امکان انجام شبیه سازی تو یه physics scene دیگه رو تو نسخههای اخیر اضافه کردن ولی کاری که میکنه دقیقا deterministic نیستش.
یعنی میتونید که شبیه سازی جلو جلو انجام بدید. اولین سرچ multiple physics scene اینو آوردش
https://learn.unity.com/tutorial/multi-scene-physics۳۹۵
ولی نکته این جا هستش که این شبیه سازی رو اگه چند بار انجام بدین هر دفعه یه جواب کمی متفاوت میگیرید و بسته به نوع بازیتون ممکه مهم باشه یا نباشه
اگه میخواید کاملا deterministic باشه بله باید از فیزیک جدید در ECS استفاده کنید unity.physics و نسخ بدون Havocش، در ضمن اونم هنوز روی چندین معماری با هم deterministic نیست و مثلا اگه گوشی ARM و سرور x86 داشته باشید نتیجه هاشون دقیقا یکی نیستش. ولی این قابلیت اضافه خواهد شد.
اگه امکانشو دارید کد فیزیکتونو با fixed point math بنویسید خودتون. اگه اون قدر پیچیده نیست کاملا باید شدنی باشه