Proboj
Programátorský boj

Dôležité linky

Čo je to Proboj a ako funguje?

Proboj, skratka pre programátorský boj, je aktivita z KSP sústredení, kde hráči (vy) programujú vlastného bota, ktorý súťazí v predom pripravenej hre. K hre je taktiež pripravený template bota, ktorý zvláda komunikáciu so serverom a nejaké užitočné funkcie. Taktiež obsahuje veľmi jednoduchý príklad jednoduchého bota, ktorého môžete ďalej upravovať.

Štruktúra/harmonogram

Počas proboja bežia hry (matche), ktoré sa skladajú z niekoľko stovák kôl, v ktorých vaši boti hrajú. Počas tejto hry (matchu) sa nemení mapa, na ktorej hráte a ani ostatní boti, proti ktorým hráte.

Po každej hre (matchy) sa náhodne vygeneruje mapa a boti, ktorí na nej budú hrať a spustí sa hra (match).

Začiatok: .. Koniec: ..

Ciele

Zabaviť sa a vyskúšať si niečo pekné nakódiť.

A pre tých kompetetívnejších z vás: Počas hry (matchu) bude váš bot získavať body za rôzne úkony (vid. Pravidlá) počas hry. Tieto body sa sčítavajú medzi hrami (matchmi). Kto bude mať na konci najviac bodov, vyhráva.

Pravidlá hry

Krátky opis hry

Každý hráč riadi vesmírnu flotilu lodí v 2D priestore. Cieľom je získať body pomocou ovládania asteroidov, ťažby zdrojov, stavby nových lodí a boja proti protivníkom. Hra prebieha v reálnom čase, kde pohyb lodí je fyzikálne realistický - ak je loď v pohybe, zostáva v pohybe.

Herné prostredie

Základné zdroje

Lodné typy

MotherShip (Materská loď)

SuckerShip (Cucač)

DrillShip (Vŕtačka)

TankerShip (Cisterna)

TruckShip (Tatrovka)

BattleShip (Bojová loď)

Herné mechaniky

Pohyb lodí

Ťažba asteroidov

Červie diery (Wormholes)

Bojový systém

Hracie príkazy

V každom kole môže hráč vykonať niekoľko z týchto príkazov:

Buy (Nákup lode)

Move (Pohyb)

Load (Presun kameňa)

Siphon (Presun paliva)

Shoot (Útok)

Repair (Oprava)

Ovládanie asteroidov a bodovanie

Získavanie kontroly

Bodovací systém za asteroidy

Skórovací systém

Prehľad konštánt

Radius                          = 15000                   // Game map radius
MaxAsteroidSize                 = 50                      // Maximum size of generated asteroids
MinAsteroidSize                 = MaxAsteroidSize / 7 * 5 // Minimum size of generated asteroids
AsteroidCount                   = 500                     // Number of generated asteroids in the game
WormholeCount                   = 25                      // Number of generated wormhole pairs in the game
ShipMaxHealth                   = 100                     // Maximum health points for ships
ShipStartFuel                   = 100                     // Starting fuel for new ships
ShipMovementMaxSize             = 10000                   // Maximum movement delta per turn - larger movements are scaled down
ShipTransferDistance            = 20                      // Maximum distance for resource transfer between ships
ShipShootDistance               = 500                     // Maximum shooting range for ships
ShipShootDamage                 = 25                      // Damage dealt by ship weapons
ShipRepairDistance              = 50                      // Maximum distance for ship repair operations
ShipRepairAmount                = 30                      // Health points restored by repair
ShipRepairRockCost              = 15                      // Rock cost per repair operation
WormholeRadius                  = 5                       // Radius within which ships get teleported by wormholes
WormholeTeleportDistance        = WormholeRadius * 2      // Minimum distance from target wormhole (2x radius) to prevent teleport loops
ShipMiningDistance              = MaxAsteroidSize         // Maximum distance for mining operations
ShipMiningAmount                = 10                      // Units mined per tick
ShipConqueringDistance          = MaxAsteroidSize         // Maximum distance for conquering operations
ShipConqueringRate              = 10                      // Surface units conquered/lost per tick

What's in the box?

Ako spustím hru ?

  1. Napíšete správne veci do config/games.json

games.json:

[
  {
    "gamefolder": "game",
    "players": [
      "py1",
      "py2"
    ],
    "args": ""
  }
]
    • linux ./runner_linux

Čo odovzdávať?

Stačí zazipovať súbory player.py a proboj.py (nie priečinok!), prípadne ďalšie, ak si nejaké navyše vytvoril.