Robot Warfare 1 (RW1) --> Robotic Wapenshaw 2D (RW2D)

Использование и разработка софта (преимущественно на ПЦ)

Moderator: Shaos

User avatar
Shaos
Admin
Posts: 25139
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Robot Warfare 1 (RW1) --> Robotic Wapenshaw 2D (RW2D)

Post by Shaos »

Shaos wrote: 04 Jul 2026 13:25 При детальной сверке выяснилось, что в классе A чемпионата 103 был один бой (один из 420) в котором примерно после 543-го такта события в новой версии стали развиваться иначе ... в старой версии (слева) нижний робот поехал направо, а в новой версии (справа) нижний робот поехал налево! Причём старое поведение наблюдалось в версиях 2.0.5, 2.0.6 и 2.1-beta (у меня есть их EXE-шники), а новое поведение - в 2.1-beta2 (тоже есть EXE из последнего релиза 2003 года) и новой сборке - причём результат боя как такового остался прежним - робот Мухомор (красный робот с белыми точками) победил (точнее дождася когда нижний робот совершил харакири путём вызова инструкции RET из главной функции программы), но с разным количеством тактов и с разным расходом ракет. В чём дело пока не разобрался т.к. исходников старой виндовой версии у меня нет - только 2.1-beta2+ (aka 2.2-alpha) из которой я собственно и сделал опенсорсную RW2D в 2013 году и историю изменений я вёл достаточно куцо, чтобы понять, что я собственно там понаделал...
Вобщем разбег событий произошёл на такте 547 - у робота "Drive Smiler" в этом такте стоит команда IF D>1 : Label после того как он посмотрел правым глазом (т.к. он сейчас направлен вниз, то это значит он посмотрел в левую сторону), где в 6 клетках от него лежит камень, что он и увидел (дистанция D=6), начав выполнять подпрограмму в которой он поворачивается направо выполнив команду RIGHT, чтобы затем уйти в левую сторону в направлении к тому камню, однако в старой версии (которую не могу так детально отлаживать т.к. у меня нету её исходников), это условие НЕ выполнилось:
Screenshot from 2026-07-04 23-30-26.png
т.е. D было равно 1, значит робот что-то увидел в соседней клетке, чего визуально не видно - и вместо того, чтобы идти на вызов подпрограммы с поворотом он пошёл дальше, где по ходу его программы стоит команда LEFT (повернуться налево) и ACT 1 (посмотреть правым глазом). В этой клетке раньше был камень, который был расстрелян Мухомором в районе 530-го такта:
Screenshot from 2026-07-05 00-40-53.png
P.S. Кстати тут ещё один глюк виден - справа от нижнего робота должна быть дырка (код 10 на текстовой карте выше), но в окне визуализатора её не видно - при взрыве реактора она зачистилась в визуализации, но осталась на карте (она и должна была остаться) - этот визуальный глюк есть во всех версиях - и старых, и новых...
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25139
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Robot Warfare 1 (RW1) --> Robotic Wapenshaw 2D (RW2D)

Post by Shaos »

Google AI Gemini помог найти что я собственно пофиксил в 2002 году и тем самым изменил повторяемость некоторых старых боёв:

Code: Select all

 case 0: MAP_(comx[i],comy[i],0x50|comk[i]); // 05.11.2002 !!!
В старом коде оно выглядело вот так (досовская версия тоже содержала этот глюк - исправил rw1o репу тоже):

Code: Select all

 case 0: MAP_(comx[i],comy[i],k);
Тут для перерисовки летящей ракеты вместо направления полёта comk{i} брался индекс робота k - разбираюсь как оно могло повлиять на события конкретно этого боя...

P.S. Короче всё просто - чуть раньше в такте 531 робот "Drive Smiler" своим левым глазом увидел ракету, у которой было указано ошибочное направление движения, которое сохранилось в регистре K (там стало 1 вместо 0):
Glitch103a-that-moment.png
И чуть позже среагировал на это (вызвав странную инструкцию IF M<K когда количество ракет было нулевым M=0), изменив всю логику дальнейшей работы своей программы:
Glitch103a-trace.png
Не все роботы читают направление движения ракет, поэтому такое расхождение случилось только в одном бое из 420 в этом классе чемпионата 103 - т.е. эта бага была не страшная, но неприятная - чтобы новая версия визуализатора могла повторять старые бои один в один надо пожалуй завести новую опцию -legacy которая будет повторять старое поведение - тогда всё везде сойдётся...
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25139
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

Re: Robot Warfare 1 (RW1) --> Robotic Wapenshaw 2D (RW2D)

Post by Shaos »

Обновил репу https://gitlab.com/shaos/rw2d добавив опцию -legacy:

Code: Select all

v2.2.5 (05-JUL-2026)
 - New option -legacy that replicates historical flying missile bug in versions before v2.1-beta2
 - Faster mode -f2 became even faster (adaptive to keep 66% of time busy)
 - Extended optional debugging info on -d
 - Added 1-class championship runner RW2D_CHM.C (based on never released RW1_CHW5.CPP)
И сборки - теперь там есть проводилка одного класса чемпионата (на одной и той же псевдослучайной карте задаваемой 16-битным числом) - каждый с каждым по два раза (второй раз роботы меняются местами):

Code: Select all

753d3cf0cfd772e9e0141ca6c73c0fd5b816c1ba4f5c893cf881578fdaba6b7f5ae78ce54c35f25cf65050a66d896ca17a852a177959d588b71eb63dd828d639  rw1_comp.exe
b98c00d11da48883c3b136136807224180dc30b0b6b0c97ac00dd719b290857159292dde3eb48896898205b081dd9fa001379753f1086c4f0b0962e56bca99fd  rw2d_chm.exe
1ef695a03952a328f2c9f92950c2713fa4542975b3713497938316bbf868ab5a588d1618abc53708b2c1b3f86e69a1e91b88befe06a17533583d5b0ebdc95863  rw2d_win.exe
You do not have the required permissions to view the files attached to this post.