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

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

Moderator: Shaos

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

Re: Re:

Post by Shaos »

Shaos wrote: 01 Sep 2024 22:37 P.S. Может переделать название игры из "Robot Warfare 1" в "Robby Workout 2D" (с сохранением аббревиатуры RW2D) раз уж язык программирования роботов уже 8 лет как Robby называется, а словосочетание "Robot Warfare" уже много лет используется другой игрой? :lol:

P.P.S. А может быть даже назвать игру «Robotic Wapenshaw 2D» чтобы лучше гуглилось? :)
https://en.wikipedia.org/wiki/Wapenshaw (старо-английское слово, означающее оружейное шоу)
Язык роботов при этом всё также будет называться Robby, а в качестве расширения файла робота наряду с .R поддержать .Robot

P.P.P.S. Может ещё добавить оборудования - DIPPER (ковш) и PLANTER (минёр)? :roll:
Похоже термин "Robotic Wapenshaw" уже устоялся из-за этого поста 2024 года :lol:
Screenshot from 2026-06-18 22-35-01.png
Который помечен гуглом как пост от 2013 года почему-то...

P.S. Короче при общении с Google AI (Gemini) у меня возникла гениальная идея - возобновить соревнования роботов, но кроме старых людских роботов пустить туда новых роботов написанных разными AI coding agents - Gemini меня отчаянно поддержал и уже выдвинул своего робота для соревнований :mrgreen:

Code: Select all

Robot "GeminiPrime"
author "Gemini"
color 00FFCC  // Cyberpunk Cyan

// Hardware Loadout
front eye
left gun

main()
{
  while(1)
  {
    // Scan the environment directly in front
    act front

    // Target acquired (N=6 means enemy robot)
    if(N == 6)
    {
      right       // Align left-mounted gun
      act left    // Fire!
      left        // Realign facing forward
    }

    // Wall/Barrier detected (D=1 means distance to obstacle is 1)
    if(D == 1)
    {
      right
      right       // 180 degree turn to bounce off the wall
    }
    else
    {
      // Evasive/Hunting movement using the R (Random) register
      // Modulo 4 means it has a 25% chance to randomly turn
      if(R%4 == 0)
      {
        right     // Turn right to sweep a new area
      }
      else
      {
        step      // Otherwise, advance forward
      }
    }
  }
}
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

При тестировании оказалось, что та версия робота от Gemini оказалось не сильно рабочая - поработали с ним над более рабочим вариантом :)

Code: Select all

Robot "GeminiPrime"
author "Gemini"
color 00FFCC  // Cyberpunk Cyan

// Hardware Loadout
front eye
left gun

main()
{
  while(1)
  {
    // Scan the environment directly in front
    act front

    // Combat Reflex (Enemy = 6) - MULTIPLE commands: requires brackets!
    if(N == 6)
    {
      right
      act left
      left
    }
    // Loot Reflex: Hungry? Take it.
    else if(N == 3) step
    else if(N == 4 && E < 13) step
    // Avoidance Reflex: Wall OR Full Reactor = Turn away
    else if(D == 1 || N == 4)
    {
      left
      left
      step
      right
    }
    // Evasive maneuver - Contains an if/else structure inside: requires brackets!
    else
    {
      if(R%4 == 0) right
      else step
    }
  }
}
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Нашёл всех роботов (600+) которые участвовали в 144 чемпионатах с января 1999 по январь 2006 - также нашёл всю статистику и все нагенерённые таблицы с результатами в формате HTML - наверное надо выложить на http://rwar.net? ;)

И можно новые соревнования начинать по старым правилам :mrgreen:

Причём сразу включить туда ВСЕХ роботов, что были :roll:
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Внезапно наткнулся на ФОРК RW2D от min0ru Vladimir Suravtsov :)
Robot Warfare 2D

An AI-porting experiment — this fork uses AI agents to modernise the original codebase: CMake build system, Linux/SDL2 backend, MinGW cross-compile, and an expanding test suite. See ai/ for the task log.

Robot Warfare 2D is a programmable-robot battle game originally written for Windows with Borland C++. Robots are programmed in a simple custom language, compiled to bytecode, and fight on a tile-based 2D arena.

Origin

This repository is forked from the original source release by A.A. Shabarshin:
Copyright © 1998–2013 A.A. Shabarshin me@shaos.net
Released under the MIT licence (see LICENSE).

The robot source files in robots/src/ were taken from the original project website archive: http://robots.chat.ru/robot_s.zip

Project Goal

This fork is an experiment in AI-assisted software porting. The goal is to take the original Windows/Borland codebase and bring it to a modern, cross-platform toolset using AI agents as the primary development driver:
  • CMake build system replacing the original Borland makefiles
  • Native Linux backend (SDL2 rendering)
  • MinGW-w64 cross-compilation for Windows (preserving the original Win32/GDI frontend)
  • Automated test suite (compiler regression tests, headless runtime tests, render checks)
No manual refactoring of the core game logic — only the platform layer and build infrastructure are touched by the port.
https://github.com/min0ru/rw2d
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Сделал пример запуска 10x10 - чтобы он запустился надо просто запустить RUN1.BAT:
Screenshot from 2026-06-21 08-31-29.png

Code: Select all

killer.rw0
nsimple.rw0
follower.rw1
-hShaos
-dx10
-dy10
-s0
-n0
-gr
-a0,0,0
-a1,1,1
-a2,2,2
-a3,3,3
-a4,4,4
-a5,5,6
-a6,6,6
-a7,7,6
-a8,8,6
-a9,9,6
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Добавил опцию -tN которая задаёт лимит времени (пока лимит времени был лишь у опции -i которая включала режим соревнований с 10000 тактами ограничения по времени и текстовым отчётом в конце), а также поправил кое-какие мелочи и ещё восстановил историю изменений виндовой версии в файле HISTORY:

Code: Select all

v2.2.1 (22-JUN-2026)
 - Clarified descriptions of some options
 - New command-line flag -tN to specify a custom maximum time limit for robot fight
 - Correctly set version of compiled binary to 1 to match v1.99 behavior of compiler
 - If robot binary of version 2 is loaded and saved again then version is correctly staying 2

v2.2.0 (21-JUN-2026)
 - Integrated some fixes from min0ru fork
 - Graduated project from the legacy v2.2-alpha tag to a stable release

v2.2-alpha (20-JAN-2013)
 - Officially published source code of RW2D under the MIT License
 - Various internal compatibility tweaks to support future porting efforts (including macOS X tests)
 - Rewrote all C++ parts to pure C

v2.1-beta3 (30-NOV-2005)
 - Unreleased version that was never used to conduct championships

v2.1-beta2 (26-JAN-2003)
 - Last official shareware version (after 2006 it got a free registration key for all to use)
 - Supports up to 255 robots simultaneously
 - Fixed error in flying missile drawing procedure
 - Now it is possible to work from Program Files
 - Experimental support of tracker music through MikMod
 - New registration keys format

v2.1-beta (22-OCT-2002)
 - Dynamic changing of window dimensions
 - Two way communication with RW1_EDIT
 - Early version of v2.1

v2.0.6 (14-AUG-2001)
 - Stable version that was used to conduct RW1 championships from #106 (Jan 2002) to #144 (Jan 2006)
 - Added undocumented option -p2-name.spr to test tile engine for RW1P2
 - Fixed assignment operator for registers A,B,C
 - No more error message in case of arithmetic overflow
 - All shifts are unsigned

v2.0.5 (05-AUG-2001)
 - Stable version that was used to conduct RW1 championships from #103 (Aug 2001) to #105 (Jan 2002)
 - Ability to fill map by hand through options -a
 - Map generation option -n0 makes empty map
 - Added options -dxN and -dyN to define size of the map

v2.0.4 (01-JUL-2001)
 - Stable version that was used to conduct RW1 championships from #101 to #102 (Jul 2001)
 - Removed scrollbars
 - Winner rules relaxed (be alive is enough)

v2.0.3 (21-JUN-2001)
 - This version was used to conduct RW1 championship #100 (Jun 2001) - 1st for v2 robots
 - Modified for championships using -i option (10000 ticks limit)
 - Map number could be decimal or hexadecimal now (-n14 or -n#0E) 
 - If both option -i and -f2 used then program is minimized
 - Fixed bug of SAY array element
 - Fixed bug of array initialization

v2.0.2 (31-MAY-2001)
 - Showing list of options if EXE launched without arguments
 - You can select robots by mouse and see their energy level and missiles number
 - Option -hAUTHOR enables sending doubleclick to robots with matching author name as events from source -1

v2.0.1 (15-APR-2001)
 - First working version of RW1_WIN.EXE
 - Fixed bug in processing Var(1) in case of a register

v2.0-alpha (22-JUL-1999)
 - Started work on Windows version of RW1 fight visualizer based on classic RW1_DUEL v1.x
Приаттачиваю сюда архив с исходниками, куда вручную добавил rw1_win.exe собранный фриварным компилятором Borland C++ v5.5.1 (2000) - должно работать даже на Win95 :mrgreen:
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Читаю исходники - вспоминаю как оно всё работает

Инструкции RobbyVM не все занимают один такт - некоторые могут выполняться в рамках одного такта, причём их может набраться до 10 штук подряд - это 0x00 (NOP), 0x01 (DEF array), 0x20 (Var=Var или Var=Num), 0x30 (GOTO label), 0x31 (CALL label), 0x33 (RET), 0x41 (IFY Var Var ), 0x42 (IFN Var Var), 0x43 (GOTO Var), 0x44 (CALL Var) и 0x63 (POP)

Некоторые новые инструкции в этом интерпретаторе ещё не сделаны - это PIXEL, FILL, PLANE, COLOR, COPYP, SENDP, RECVP, PUSH и CLEAR (можно ещё GET добавить т.к. оно в Circuits.CC используется)
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Выкатил v2.2.2

Code: Select all

v2.2.2 (23-JUN-2026)
 - Renamed rw1_win to rw2d_win
 - Simplified About dialog (F1)
 - Supported other file extensions as ROBOT, RO and BCODE
 - Changed color of energy indicator for selected robots (now it's orange)
 - Extended number of pre-allocated registers to 32 for future use
Приаттачиваю архив с исходниками и бинарником (6c7c3119eed7491a1f07dd005546fbd53dd67e581cf7ddd38531303f742662b3 rw2d_win.exe):
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Вот ещё такая бага есть с 2003 года:
при выполнении команды
rw1_win yyy02.rw0 xbm102.rw0 -dm -i -n#3160
при взрыве самого левого реактора на его месте не отображается дырка, хотя
робот её обнаруживает.
Поэтому при просмотре боя с нормальной скоростью возникают вопросы - почему
робот не видит патроны сквозь эту "невидимую" дырку. Все это проявляется
практически сразу после 1000-го такта.
Скорее это вызвано тем, что каждые 1000 тактов в режиме Death Match реакторы и коробки со снарядами появляются снова - видимо при появлении не сработала перерисовка объектов (проверил - перерисовка на тысячном такте сработала, но появились только снаряды, а при взрыве того реактора действительно дырка не прорисовалась т.к. туда же наложился другой взрыв - надо исправлять)

P.S. Похожие проблемы с перерисовкой есть при подзарядке у реактора - если робот выделен, что показывает его текущий уровень зарядки и количество ракет, то его уровень энергии не растёт, пока он не двигается
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Добавил оригинальный звук из 1998 года (правда в один канал т.к. играется через WinAPI PlaySound) :mrgreen:

Code: Select all

v2.2.3 (24-JUN-2026)
 - Added original 8-bit sound from 1998 but only mixed in 1 channel
 - Removed rudiments of two-way communication with RW1_EDIT as we don't use it anymore
Выкладываю архив исходников с добавленными бинарниками rw1_win.exe и rw1_comp.exe (ниже контрольные суммы SHA256):

Code: Select all

8d0946a52875a4ddee528d61460dbed542ffe0f3a371ff3e41f218f8d9b19256  rw2d_win.exe
5936b36bc2c8b3285ec51a7f97f1a0ae0503a6d4d19b647f8a3c11f967b011aa  rw1_comp.exe
rw2d-v2.2.3.zip
Видео со звуком:


P.S. Пережал видео т.к. звуковая дорожка не во всех браузерах играла...
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

Через архив интернета нашёл как выглядел вебсайт англоязычной рассылки по моим роботам в 2006 году (после проведения последнего чемпионата №144):
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

До того как у меня появился этот форум у меня был мой собственный написанный на перле микрофорум :mrgreen:
robochat2002.png
P.S. Такой же микрофорум был по Виртбургу - все сообщения из него я уже вытащил ещё в 2015 году: viewtopic.php?t=10939
You do not have the required permissions to view the files attached to this post.
User avatar
Shaos
Admin
Posts: 25128
Joined: 08 Jan 2003 23:22
Location: Silicon Valley

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

Post by Shaos »

В процессе бесед с Google AI Gemini Pro возникла идея возродить бои роботов в блокчейне Realms, чтобы сделать их по настоящему децентрализованными :mrgreen: