Openapoc: يبدو أن الكثير من البلاط المدمر في منظر المدينة يبطئ اللعبة حتى تتوقف بسرعة فائقة

تم إنشاؤها على ١١ أكتوبر ٢٠١٨  ·  10تعليقات  ·  مصدر: OpenApoc/OpenApoc

أفترض أن الأمر يتعلق بالبلاط المدمر ، حيث يبدو أنه يحدث فقط بمجرد سقوط عدد قليل من المباني بسبب الغارات

يبدو Cityscape بطيئًا بشكل لا يصدق عند وضعه على سرعة فائقة
لدرجة أن تكون غير قابلة للعب

تجدون الحفظ المرفق

SuperHuman_Slow.zip

!BUG! HIGH PRIORITY !BUG! low priority Help Wanted

التعليق الأكثر فائدة

فيما يلي بيان عام للإصلاح (تم التحقق منه يدويًا فقط):
https://github.com/OpenApoc/OpenApoc/pull/563

ال 10 كومينتر

يبدو أن المركبات المعادية مثل مركبات البناء في مهمة ما تؤثر أيضًا

مثال آخر لاحقًا في حفظ اللعبة
save_SuperHuman 1.zip

يبدو أن المركبات تتعطل أيضًا
image

تقع السيارة العالقة
إنها فوق النشرة الضخمة ، باستثناء المرفقة
save_SuperHuman 1.zip

أقوم بتصحيح أخطاء المركبة العالقة (مركبة البناء 31).
مهامها في وقت حفظ اللعبة هي:

W 7613175674 bool OpenApoc::CityView::handleMouseDown(OpenApoc::Event *): CLICKED VEHICLE Construction Vehicle 31 at {42.7708,63.5,7.5}
W 7613244067 bool OpenApoc::CityView::handleMouseDown(OpenApoc::Event *): Mission GotoLocation {43,63,2}
W 7613263414 bool OpenApoc::CityView::handleMouseDown(OpenApoc::Event *): Mission RecoverVehicle 
W 7613286861 bool OpenApoc::CityView::handleMouseDown(OpenApoc::Event *): Mission GotoBuilding BUILDING_WAREHOUSE_THREE

ومع ذلك ، تتم إعادة كتابة الوجهة (43،63،2) إلى (43،63،7) عن طريق ضبط الطيران المستهدف.
بعد هذه النقطة ، تتأرجح السيارة بين محاولة الذهاب إلى (43 ، 63 ، 7) وهدف قريب عشوائي مع كل مكالمة لضبط المسار إلى:

After setPathTo: Vehicle [Construction Vehicle 31] path: (41,63,7) -> (41,63,7) -> (42,63,7) -> (43,63,7)
After setPathTo: Vehicle [Construction Vehicle 31] path: (43,63,7) -> (43,63,7) -> (42,64,6) -> (41,63,5) -> (41,62,4)
After setPathTo: Vehicle [Construction Vehicle 31] path: (41,62,4) -> (41,62,4) -> (41,62,5) -> (41,62,6) -> (42,63,7) -> (43,63,7)
After setPathTo: Vehicle [Construction Vehicle 31] path: (43,63,7) -> (43,63,7) -> (43,62,7) -> (42,61,6)
After setPathTo: Vehicle [Construction Vehicle 31] path: (42,61,6) -> (42,61,6) -> (43,62,7) -> (43,63,7)
After setPathTo: Vehicle [Construction Vehicle 31] path: (43,63,7) -> (43,63,7) -> (44,64,6) -> (45,65,5) -> (45,65,4)
...

شكرًا للنظر في هذا ashenomo <3

إذا تمكنت من إيجاد حل ، سأكون ممتنًا للغاية

من الناحية المثالية ، نريد أن تتعرف السيارة على أنها عالقة في حلقة وأن تنشئ مهمة جديدة إلى وجهة نهائية مناسبة وواضحة لأنني أظن أن عدم وجود فحص للهدف العشوائي هو وجهة مناسبة تفرض الحلقة

لقد لاحظت أنه عندما تتعطل المركبات في هذه الحلقات ، فإنها غالبًا ما تكون في بلاط أنبوب الهبوط ، أو مصانع الطائرات الضخمة

لست متأكدًا من سبب تسبب مصانع Mega-Flyer على وجه الخصوص في مثل هذه المشكلة ، ما لم يكن هناك نوع بلاط سيئ في مكان ما ؟؟؟

يبدو أن هذا هو منطق "الخطوة الجانبية" الذي يُقصد به التشغيل عندما تكون الوجهة مشغولة بمركبة أخرى. تم تغيير الهدف مؤقتًا إلى بلاط فارغ قريب. بمجرد وصول السيارة إلى هذا البلاط ، تحاول مرة أخرى الانتقال إلى الهدف الأصلي.

ومع ذلك ، في هذه الحالة ، بطريقة ما السيارة التي تسبب الخطوة الجانبية هي CV31 ، أي تعتقد أنها على وشك الاصطدام بنفسها. الشفرة
السجلات الإضافية التي أضفتها توضح هذا:

W 14531114914 void OpenApoc::VehicleMission::setPathTo(OpenApoc::GameState &, OpenApoc::Vehicle &, Vec3<int>, int, bool, bool):  ** setPathTo for [Construction Vehicle 31] to (43,63,2), maxIter:450, cV:Y, giveUp:N, currentPath n:0
W 14531141711 void OpenApoc::VehicleMission::setPathTo(OpenApoc::GameState &, OpenApoc::Vehicle &, Vec3<int>, int, bool, bool):  *** adjustTargetToClosestFlying: [Construction Vehicle 31] (43, 63, 2), piNe: N
W 14531234219 static bool OpenApoc::VehicleMission::adjustTargetToClosestFlying(OpenApoc::GameState &, OpenApoc::Vehicle &, Vec3<int> &, bool, bool, bool &): Target (43,63,7) contains vehicle [Construction Vehicle 31]. This will trigger a target adjustment.

تبدو إضافة فحص إضافي للتأكد من أن المركبات لا تحاول تجنب نفسها فكرة جيدة.
ومع ذلك ، لست متأكدًا من سبب عدم حل هذه المشكلة ..

بعض ملاحظات التصحيح الأخرى:

  • مهام السيارة هي:
W 417133364405 bool OpenApoc::CityView::handleMouseDown(OpenApoc::Event *): Mission GotoLocation {43,63,2}
W 417133397242 bool OpenApoc::CityView::handleMouseDown(OpenApoc::Event *): Mission RecoverVehicle 
W 417133421554 bool OpenApoc::CityView::handleMouseDown(OpenApoc::Event *): Mission GotoBuilding BUILDING_WAREHOUSE_THREE
  • لا يمكن الوصول إلى 43،63،2 - يشغلها مبنى MEGAFLYER_TWO.
  • تبحث النشرات عن أقرب بلاطة يمكن الوصول إليها من خلال الصعود. في هذه الحالة هو 43،63،7.
    Screen Shot 2019-04-26 at 0 18 30
  • pickNearest غير صحيح لمهمة GotoLocation هذه - لذلك لن تكتمل حتى تصل السيارة إلى المكان المحدد. وهو مستحيل.
  • نظرًا لأنه تتبعها مهمة RecoverVehicle ، ربما انتهى الأمر بمركبة محطمة عند 43،63،2 وتم تخصيص هذا النقل لاستعادتها. سأحاول لعبة حفظ سابقة لمعرفة كيف تم إنشاء هذه المهام.
  • إن إضافة الشيك الذي ذكرته في التعليق السابق (لا تأخذ في الاعتبار عند البحث عن مركبات لتتجنبها) يمنع السيارة من الدخول في حلقة ، ولكن الآن بدلاً من ذلك تتعطل عند 43،63،7.

النظر إلى هذه اللعبة السابقة المحفوظة:

أفترض أن الأمر يتعلق بالبلاط المدمر ، حيث يبدو أنه يحدث فقط بمجرد سقوط عدد قليل من المباني بسبب الغارات

يبدو Cityscape بطيئًا بشكل لا يصدق عند وضعه على سرعة فائقة
لدرجة أن تكون غير قابلة للعب

تجدون الحفظ المرفق

SuperHuman_Slow.zip

تحاول Blazer Turbo Bike 49 (بالقرب من Hades Block المدمر) الوصول إلى (86،78،2) ، وهو بلاطة طريق مدمرة. ولكن على غرار مركبة البناء المتوقفة ، أرى أن setPathTo يتم استدعاؤها في كل علامة لهذه السيارة مما يساهم على الأرجح في التباطؤ.

فيما يلي بيان عام للإصلاح (تم التحقق منه يدويًا فقط):
https://github.com/OpenApoc/OpenApoc/pull/563

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات