inf112-v20 / crawling-crow

🤖 The winning team!
0 stars 0 forks source link

[BUG] Textures sometimes bug out when multiple robots are virtual on the same checkpoint #185

Closed buzzdead closed 4 years ago

buzzdead commented 4 years ago

Veldig sjeldent det skjer, men har sett det noen ganger. Hvis flere roboter rebootes på samme checkpoint slik at de er virtual så er det noe som kan skje slik at man ser feil farge på en robot for en fase, så ordner det seg. Er ikke helt sikker på problemet enda men må være noe med oppdateringen av robot teksturen selvfølgelig som henger igjen elns. Tror det skal være mulig å debugge dette med T, hvis man bare inkluderer reboots på en måte.

timharek commented 4 years ago

@thomashusebo i #191:

None ganger kommer det duplikat av en eksiterende robot.

Jeg har bare sett duplikatet bli dannet på et reparasjonspunkt, og duplikatet roterer likt som den orginale roboten, men beveger seg ikke.

Mulig det er en effekt av enten reboot på reparasjonspunkt eller kluss når mange roboter står på samme posisjon.

TwoYellowRobots

buzzdead commented 4 years ago

Forklaring av virtual mode, hvis det står en robot på arkiv punktet til en robot som rebootes inn til det arkiv punktet så "skippes" begge if setninger naturligvis i goToArchiveMarker (pos er posisjonen roboten døde på) i linje 187 i RobotView, man kan nødvendigvis ikke allerede stå på archive marker i dette tilfellet (første if), og den andre if setningen kjøres igjennom om det ikke står en robot der, så den skippes også.

Når jeg tenker meg om så kan det vel faktisk skje at man blir ødelagt av lasere på akrivpunktet sitt, og at en robot beveger seg inn på dette akrivpunktet før du faktisk rebootes.. kanskje dette er feilen?

Hva skjer hvis man roterer i virtual mode spør du? Da forrandrer man kun på virtualdirection, en direksjon som først blir oppdatert i det man beveger seg ut fra arkiv punktet. setDirection blir kun kalt på gjennom referanse til en spesifikk robot så vidt jeg vet så dette skal ikke være noe problem.

CanMoveRobot i RobotView: Nullifiserer kun den gamle posisjonen sin hvis den ikke er i virtual mode, la oss si at du er i virtual mode, og det står en robot på samme posisjon, hvis du da beveger den vekk fra posisjonen så vil du ikke slette teksturen til den andre roboten som stod på posisjonen du forlat... greit nok.

Bevege seg ut av virtual mode, man setter teksturen på den nye posisjonen, setter direction til den virtuelle direksjonen man har, og gjenoppretter den virtuelle direksjonen til NORTH igjen.

Andre ting jeg ikke har lagt så veldig mye detalj i rundt virtual mode kan være dette med å ta skade, hvis man er på en archive marker med en robot, hvor det er en annen robot også i virtual mode, og man tar skade... så skifter man jo til take damage\ lost teksturen, helt sikkert mulig at det oppstår et problem her.

buzzdead commented 4 years ago

Closer denne, tror den ble fikset sammen med #190, men om den dukker opp igjen så får vi åpne den igjen.

buzzdead commented 4 years ago

Nope, fortsatt et problem

buzzdead commented 4 years ago

Tror kanskje det fiksa det, prøv å bugtest for dette på eight mappet, der det er lettest å få det til å skje.

buzzdead commented 4 years ago

Denne anses som fikset.