Openapoc: Banyak ubin yang hancur di lanskap kota tampaknya memperlambat permainan hingga berhenti di Ultra-Speed

Dibuat pada 11 Okt 2018  ·  10Komentar  ·  Sumber: OpenApoc/OpenApoc

Saya berasumsi itu terkait dengan ubin yang hancur, karena tampaknya hanya terjadi setelah beberapa bangunan dihancurkan oleh penggerebekan

Cityscape tampak sangat lambat ketika ditempatkan pada kecepatan ultra
Sampai-sampai tidak bisa dimainkan

Silakan temukan simpan terlampir

SuperHuman_Slow.zip

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

Komentar yang paling membantu

Inilah PR untuk perbaikan (hanya diverifikasi secara manual):
https://github.com/OpenApoc/OpenApoc/pull/563

Semua 10 komentar

Kendaraan bermusuhan seperti kendaraan konstruksi dalam misi juga tampaknya berdampak

Contoh lebih lanjut dari nanti di save game
save_SuperHuman 1.zip

Kendaraan tampaknya juga macet
image

Lokasi kendaraan yang macet
Itu di atas mega-flyer, simpan terlampir
save_SuperHuman 1.zip

Saya sedang men-debug kendaraan yang macet (Kendaraan Konstruksi 31).
Misinya pada saat savegame adalah:

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

Namun tujuan (43,63,2) ditulis ulang menjadi (43,63,7) oleh adjustTargetToClosestFlying.
Setelah titik itu, kendaraan berosilasi antara mencoba menuju (43, 63, 7) dan target terdekat acak dengan setiap panggilan ke setPathTo:

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)
...

Terima kasih telah melihat ini @ashenomo <3

Jika Anda dapat menemukan solusi, saya akan sangat menghargai

Idealnya, kami ingin kendaraan mengenalinya macet dalam satu lingkaran dan menghasilkan misi baru ke tujuan akhir yang sesuai, jelas, karena saya curiga kurangnya pemeriksaan pada target acak menjadi tujuan yang cocok yang memaksa loop

Saya perhatikan bahwa ketika kendaraan terjebak dalam loop ini, mereka sering berada di Landing Tube Tiles, atau Pabrik Mega-Flyers

Tidak yakin mengapa Pabrik Mega-Flyer secara khusus menyebabkan masalah seperti itu, kecuali ada jenis ubin yang buruk di suatu tempat???

Sepertinya inilah logika "side-stepping" yang dimaksudkan untuk memicu ketika tujuan ditempati oleh kendaraan lain. Target untuk sementara diubah menjadi ubin kosong di dekatnya. Begitu kendaraan mencapai ubin itu, ia mencoba lagi untuk pergi ke target semula.

Namun dalam kasus ini, entah bagaimana kendaraan yang menyebabkan side-stepping adalah CV31, yaitu ia mengira akan bertabrakan dengan dirinya sendiri. kode
Log tambahan yang saya tambahkan menunjukkan ini:

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.

Menambahkan pemeriksaan tambahan untuk memastikan kendaraan tidak mencoba menghindar terdengar seperti ide yang bagus.
Yang mengatakan, saya tidak yakin mengapa melangkah ke samping tidak menyelesaikan ini ..

Beberapa catatan debug lainnya:

  • Misi kendaraan adalah:
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 tidak dapat dijangkau - ditempati oleh gedung MEGAFLYER_TWO.
  • Selebaran mencari ubin terdekat yang dapat dijangkau dengan naik. Dalam hal ini adalah 43,63,7.
    Screen Shot 2019-04-26 at 0 18 30
  • pickNearest salah untuk misi GotoLocation ini - jadi misi ini tidak akan selesai sampai kendaraan mencapai tempat yang tepat. Yang tidak mungkin.
  • Mengingat itu diikuti oleh misi RecoverVehicle, mungkin kendaraan yang jatuh berakhir di 43,63,2 dan transportasi ini ditugaskan untuk memulihkannya. Saya akan mencoba savegame sebelumnya untuk melihat bagaimana misi ini dibuat.
  • Menambahkan cek yang saya sebutkan di komentar sebelumnya (jangan memperhitungkan diri sendiri saat mencari kendaraan yang harus dihindari) mencegah kendaraan masuk ke loop, tetapi sekarang malah macet di 43,63,7.

Melihat savegame sebelumnya ini:

Saya berasumsi itu terkait dengan ubin yang hancur, karena tampaknya hanya terjadi setelah beberapa bangunan dihancurkan oleh penggerebekan

Cityscape tampak sangat lambat ketika ditempatkan pada kecepatan ultra
Sampai-sampai tidak bisa dimainkan

Silakan temukan simpan terlampir

SuperHuman_Slow.zip

Blazer Turbo Bike 49 (dekat Blok Hades yang hancur) mencoba mencapai (86,78,2), yang merupakan ubin jalan yang hancur. Tetapi mirip dengan kendaraan konstruksi yang macet, saya melihat setPathTo dipanggil di setiap centang untuk kendaraan ini yang mungkin berkontribusi pada perlambatan.

Inilah PR untuk perbaikan (hanya diverifikasi secara manual):
https://github.com/OpenApoc/OpenApoc/pull/563

Apakah halaman ini membantu?
0 / 5 - 0 peringkat