TheGame: Era Botów

Prowadzący: Marcin Kalinowski

Zadania kwalifikacyjne są tutaj.

Opis

TheGame to napisana przeze mnie i mojego kolegę Janka Maruchę gra zręcznościowa. Wygląda tak:

TheGame

       Boty w trakcie walki (gif)

Na warsztatach wykorzystamy tę grę i będziemy pisać programy walczące.

Pomimo prostoty reguł i grafiki, gra pozwala na pisanie bardzo zaawansowanych botów.

Postaramy się zaprogramować uniki, dynamiczne namierzanie przeciwnika czy też bardziej rozbudowane strategie wykorzystujące te prymitywy.

Z założenia uczestnicy będą od pierwszych chwil walczyć między sobą.

Każdy będzie realizował swój pomysł na najlepszego bota a ja będę służył pomocą.

Dzięki temu trzeba będzie zrównoważyć i wziąć pod uwagę sporo czynników by osiągnąć zwycięstwo:

  • Skomplikowanie algorytmu (np. namierzania) a czas w jakim można to napisać i uruchomić
  • Planowanie ogólnej strategii a szybkie poprawki stopniowo usprawniające bota
  • Które zdolności bota są najważniejszy by przetrwać?
  • Jak wykorzystać sposób punktacji? (Zasady te pojawią się kiedyś wraz ze szczegółową dokumentacją faz jednej klatki gry i API serwerowego)
  • I wiele innych...

Ponadto poza algorytmicznymi wyzwaniami będą też problemy programistyczne związane z zarządzaniem danymi otrzymywanymi od serwera czy wygodnym systemem planowania i wykonywania komend. Przyda się też podstawowa znajomość geometrii analitycznej.

Jest to forma bardzo zbliżona do zawodów Deadline24

Po ostatnim dniu zrobimy potyczkę kilku najlepszych botów na rzutniku - ostatecznie starcie na oczach wszystkich.

Będzie oczywiście masa nagród nie tylko za zwycięstwo ale i w wielu specjalnych kategoriach.

Wymagania

Tak naprawdę wystarczą podstawy programowania w Pythonie i trochę ogarniania komunikacji przez sieć (wysyłanie/odbieranie).

Będą sprawdzać czy ktoś da radę:

  • W prosty sposób rozmawiać na bieżąco przez sieć
  • Analizować i jakoś obrabiać proste dane od niego otrzymywane
  • Wykorzystać geometrię analityczną w prostych przykładach (np. pod jakim kątem ustawić lufę by trafić poruszający się punkt)

Potrzebny sprzęt i oprogramowanie

  • Komputer
  • Python
  • PyGame (moduł do Pythona) jeżeli chcemy rysować stan gry u siebie