Java Challenge második forduló játékszabályai v1.2



Hasonló dokumentumok
MailMasterPlus API. fejlesztői dokumentáció

A Http és a PHP kapcsolata. Web-Sky Consulting Kft Tóth Imre 2009

Hány komputer van a kezemben?

PÁLYÁZATI FELHÍVÁS a Környezet és Energia Operatív Program keretében. Az erdei iskola hálózat infrastrukturális fejlesztése. Kódszám: KEOP

ÁLTALÁNOS SZERZŐDÉSI FELTÉTELEK INTERNETSZOLGÁLTATÁSRA. Szolgáltató: Station Net Kereskedelmi És Szolgáltató Kft.

Számítógépes hálózatok

NetIQ imanager Telepítési útmutató január

SSL Alapú Kártyatranzakciók az Interneten. A CIB Bank Zrt. Internetes kártyaelfogadás szolgáltatás technikai dokumentációja

ERserver. iseries. Szolgáltatási minőség

apró betűk helyett amit a K&H lakásbiztosításról tudni érdemes

PÁLYÁZATI FELHÍVÁS a Környezet és Energia Operatív Program keretében

PÁLYÁZATI FELHÍVÁS a Környezet és Energia Operatív Program KEOP-1.1.1/ Települési szilárdhulladék-gazdálkodási rendszerek fejlesztése

A SZOFTVER TELEPÍTÉSE ELŐTT TELEPÍTÉS WINDOWS KÖRNYEZETBEN TELEPÍTÉS MACINTOSH KÖRNYEZETBEN HIBAKERESÉS

Számlázás-házipénztár. (SZAMLA) verzió. Kezelési leírás

OEP Betegéletút lekérdezés háziorvosok és vénytörténet lekérdezés patikák számára. API dokumentáció. verzió: 2.01

Elektronikus Szolgáltatások Hirdetménye. Érvényes: május 24-től

Készletnyilvántartó program. (KESZLET) verzió. Kezelési leírás

DIÁKIGAZOLVÁNY. Felhasználói dokumentáció verzió 3.7. Budapest, 2015.

Konfigurációkezelés (2B)

Biztonság java web alkalmazásokban

1.2 A Weboldal célja a 2016-os Márton Áron emlékévvel kapcsolatos információk, események és egyéb tartalmak megjelenítése.

HIVATALOS JÁTÉKSZABÁLYA ÉS ADATKEZELÉSI SZABÁLYZATA

Könnyedén. és természetesen OPTEAMUS

Kezdő lépések Virtuális Tárgyaló

!!" KÉSZÍTK: ERDÉLYI LAJOS KOLLÁR NÁNDOR WD6OGW BUK8Y7


ProCOM GPRS ADAPTER TELEPÍTÉSI ÉS ALKALMAZÁSI ÚTMUTATÓ. v1.0 és újabb modul verziókhoz Rev

PÁLYÁZATI FELHÍVÁS a Társadalmi Megújulás Operatív Program keretében

átvitt bitek számával jellemezhetjük. Ezt bit/s-ban mérjük (bps) vagy ennek többszöröseiben (kbps, Mbps).

Általános Szerződési Feltételek

{simplecaddy code=1005}

Adatbázis háttér játszóházi beléptető és nyilvántartó rendszerhez Egy valós rendszer bemutatása

NETLOCK SIGN szolgáltatás Rendelkezésre állási Szabályzata

Általános Szerződési Feltételek ( től hatályos)

EGYSZERŰ ELJÁRÁS AJÁNLATTÉTELI FELHÍVÁSA A

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Új Nissan Pulsar és Note Nyílt Napok! elnevezésű nyereményjáték HIVATALOS JÁTÉKSZABÁLYA

2014/30. SZÁM TARTALOM

H A T Á R O Z A T. fogyasztóvédelmi tárgyú rendelkezés megsértése nem állapítható meg, ezért a bejelentés ezen részét elutasítom.

be/sfp-08451/2015/mlsz

társasjáték 2 4 játékos részére, 10 éves kortól A Glück Auf a hagyományos német bányászköszöntés, ami magyarul annyit tesz: Jó szerencsét!

A Heconomy BL Alkalmazási Területei

MUOE ultibajnokság játékszabályai

KITÖLTÉSI ÚTMUTATÓ, SEGÉDLET

Programozói elődöntő feladat. Főtámogató. Arany fokozatú támogatók. Szervezők

AIX 6.1. IBM Systems Director Console for AIX

Felhasználói útmutató ügyfélkapuhoz

ÁLTALÁNOS SZERZŐDÉSI FELTÉTELEK 20 és 100 m3/óra közötti mérőteljesítménnyel rendelkező felhasználók vonatkozásában július 1.

Általános Szerződési és Felhasználási Feltételek. 1. Bevezetés. 2. Eladó adatai

komplex védelem Letöltő szoftver ismertető V1.61 Azonosító: EP Budapest, február

A Magyar Field Target (Tereplövész) Szövetség Szabálykönyve FIELD TARGET VERSENYSZABÁLYOK. 9. kiadás Érvényes: január 1-től

WEBFEJLESZTÉS 2. PHP NYELVI ALAPOK

LOGalyze Telepítési és Frissítési Dokumentáció Verzió 3.0

Java Servlet technológia

INFORMATIKA EMELT SZINTŰ PRÓBAÉRETTSÉGI

Integrált ügyviteli rendszer: Kettős könyvelés modul

BÁZIS-E EGYSZERŰSÍTETT LAKÁSBIZTOSÍTÁS GYORSAN ELÉRHETŐ BIZTOSÍTÁSI VÉDELEM OTTHONÁRA

Everlink Parkoló rendszer Felhasználói és Üzemeltetési útmutató

Webszolgáltatások kommunikációs overhead-jének becslése

SA-GPCOM. Telepítési leírás. Ipari GPRS átjelző. Dokumentum verzió szám: v1.0 HUN. SA-GPCOM telepítési leírás

KÖZBESZERZÉSI ÉRTESÍTŐ

TESZTKÉRDÉSEK ECDL Online alapismeretek Szilágyi Róbert S.

ecoline SIA IP Adapter

26/05/2010 S100 Tagállamok - Építési beruházás - Ajánlati felhívás - Nyílt eljárás. HU-Szolnok: Magasépítési munka 2010/S

be/sfphpm /2015/mksz

Rétegezett architektúra HTTP. A hálózatfejlesztés motorját a hálózati alkalmazások képezik. TCP/IP protokoll készlet

be/sfp-09323/2015/mlsz

A webhelyhez kötődő szoftverek architektúrája

GroupWise 5.2 használói jegyzet

A DimSQL programrendszer évi nyitási teendői

AJÁNLATTÉTELI FELHÍVÁS

be/sfpmod /2015/mlsz

Sokan nehezen tudják elképzelni, hogy hogyan és hol tudják az jeiket megkapni.

Felhasználói leírás v1.0

FELHASZNÁLÓI KÉZIKÖNYV

Elektronikus közigazgatási keretrendszer Mentési rend ajánlás ELEKTRONIKUS KÖZIGAZGATÁSI KERETRENDSZER MENTÉSI REND AJÁNLÁS

be/sfp-4204/2015/mkosz

KELE3. Felhasználói kézikönyv

PDT Sync Pack v 1.3. PDT Sync Server és Sync Client

be/sfp-08089/2015/mlsz

Felhasználói kézikönyv

Felhasználói kézikönyv

A HTTP protokoll. A standard egy URI (Unified Resource Identifier = egységes forrás azonosító) megnevezésű címet definiál, amely lehet:

ÁEEK Kataszter. Felhasználói útmutató

AJÁNLATTÉTELI DOKUMENTÁCIÓ

be/sfphpm /2015/mkosz

be/sfphpm /2015/mlsz

Hálózatkezelés Szolgáltatási minőség (QoS)

be/sfphpm /2015/mlsz

VHR-23 Regisztráló műszer Felhasználói leírás

I-1/5-8/2012. ikt. sz. Jegyzıkönyv

LEVELEZÉS BEÁLLÍTÁSA

Nemzeti Rehabilitációs és Szociális Hivatal. Segédlet. a Nemzeti Rehabilitációs és Szociális Hivatal elektronikus pályázatkezelő

be/sfp-8796/2015/mlsz

Kiterjedt hálózatok. 8. Hálózatok fajtái, topológiájuk. Az Internet kialakulása 1

VÁTI Kht. Dokumentációs Központ Felhasználói segédlet elektronikus dokumentum küldéséhez

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

Ingrid Signo Felhasználói kézikönyv. Pénztári használatra

AllBestBid. Felhasználói kézikönyv az AllBestBid online aukciós szolgáltatás használatához március DFL Systems Kft.

Átírás:

Java Challenge második forduló játékszabályai v1.2 Változások a v1.1-hez képest: elírás javítása az űrhajó sebességénél Változások a v1.0-hoz képest: sebességek megadása beadandó projekt követelményeinek pontosítása tesztszerver / éles futtatás lehetséges eltéréseinek pontosítása futtatási környezet pontosítása Környezet A második fordulóban egy bolygóközi csomagszállító űrhajót kell irányítanotok a játékszervernek küldött parancsok segítségével. A bolygók egy síkban vannak, így egy kétdimenziós térképen kell navigálni. A játék során bármikor lekérdezhetők a következő adatok: bolygók neve és pozíciója (x, y) melyik bolygón milyen csomag van hol van az űrhajó és éppen mit szállít Minden csapat ugyanolyan pályán és csomagkészlettel versenyzik, de egymást nem látják, nincsenek egymásra hatással. Időben a pálya nem változik, új csomagok nem keletkeznek, tehát a pálya adatokat elég a játék elején lekérdezni. Az űrhajó a következő alapvető műveletek elvégzésére képes: repülés egyik bolygóról a másikra o az űrhajó mindig légvonalban repül o az űrhajó sebessége állandó (nincs gyorsítás/lassítás), de a szállított csomagok számától függ. Minden plusz csomag ugyanolyan mértékben csökkenti a sebességet. (A tesztszerveren és az éles futtatáskor is használt sebességek: üresen 170 egység/sec, 1 csomaggal 150 egység/sec, 2 csomaggal 130 egység/sec, 3 csomaggal 110 egység/sec) o ha az űrhajó egyszer elindult a célállomás felé, ez a művelet már nem megszakítható, meg kell várni, míg odaér. Az űrhajó menet közben sehol sem áll meg, csak a célállomáson. csomag felvétele: o csak akkor lehetséges, ha van még hely a raktérben o a felvett csomag eltűnik a bolygóról, átkerül a hajó rakterébe o az űrhajó rakterében maximum 3 csomag fér el. csomag lerakása o csak akkor lehetséges, ha az űrhajó a célállomásánál vagy a csomag feladási helyénél van o ha a célállomáson rakjuk le, megkapjuk a szállítási díjat és a csomag eltűnik o ha a feladási helyen rakjuk le, nem kapunk pontot, a csomag visszakerül a bolygóra

A kliens által küldött parancsok, amennyiben megfelelnek a feltételeknek, azonnal végrehajtódnak. A kliens korlátlan számú kérést indíthat a szerver felé, de a kérések közt 500 ms időnek el kell telnie. A játék menete A kezdeti tesztidőszak alatt mindenki elkészítheti a kliensprogramját és kipróbálhatja azt a játékszerveren. A szerver 2 óránként új játékot indít, minden páros órában. Szerver karbantartás miatt előfordulhat, hogy egy-egy forduló kimarad. A tesztidőszak lezárulta után mindenki beadja az elkészített programját, amelyet egy, a tesztszerveren lévőkhöz hasonló pályán futtatunk, 60 perces időkorláttal. A csapatok sorrendjét a futtatás ideje alatt megszerzett pontok száma határozza meg. Holtverseny esetén az a csapat kerül előrébb, amelyik hamarabb érte el az adott pontszámot (hamarabb rakta le az utolsó csomagot). A tesztkörnyezet és az éles futtatás környezete a lehető legjobban hasonlít egymáshoz, de a bolygón lévő egyes csomagokat mindig véletlenszerűen generáljuk. Ha az éles futtatáskor nagyon szoros eredmények születnek, további paraméterek módosításával új futtatást végezhetünk, hogy valóban a jobb (új környezethez jobban alkalmazkodó) algoritmus győzzön. Ilyen esetekben az alábbi paraméterek változtatására lehet számítani: pálya mérete / bolygók pozíciója Az alábbi paraméterek teszten és élesben is megegyeznek: bolygók száma (80) csomagszám / bolygó (30) sebesség 500 ms-os kötelező időköz a kérések között játék időtartama (60 perc) űrhajó kapacitása (3 csomag)

A feladat beadása A feladat beadásakor egy zip fájlt várunk. A zip fájl a következő felépítésű legyen: (egyéb fájlokat/mappákat is tartalmazhat): \ \src\main\java\ \src\test\java\ \target \pom.xml forrásfájlok tesztek ide kerüljön fordítás után a futtatható jar fájl maven pom A zip fájlban lévő projektnek maven 3.1-gyel buildelhetőnek kell lennie, tehát az mvn clean package parancs hatására létre kell jönnie egy darab futtaható jarnak a target mappában. Más jar fájlok ne kerüljenek a target mappába. A lefordított állományokat nem szükséges a beadott zip-be beletenni. A projekteket jdk1.8.0_20-as fordítóval fordítjuk, a maven által használt settings.xml fájl a gyári alapértelmezett. A futtatható jar a következő paramétereket várja: játékszerver URL-je, pl.: https://javachallenge.dorsum.eu felhasználónév jelszó Példa a futtatásra: java -jar test.jar https://javachallenge.dorsum.eu felh felhjelszo A játék végén (503-as hibát kapott a kliens) a programnak le kell állnia. A futtató gép paraméterei: processzor: Intel Core i5 3.3 GHz (4 magos) 2 GB memória érhető majd el a kliens számára (-Xmx) 64 bites operációs rendszer

Java Challenge szerver REST API interfész specifikáció v1.3 Dokumentum célja Ez a dokumentum tartalmazza a második fordulóban használható REST API interfész leírását. Az interfész használata Az egyes API hívásokat kizárólag http(s) protokollon keresztül lehet elérni, POST és GET metódusok használatával. Ha a játék még nem indult el vagy már véget ért, a szerver minden kérésre 503-as hibával válaszol. A szerver túlterhelésének elkerülése érdekében minden kérés között (felhasználónként) legalább 500 ms időnek kell eltelnie. Ellenkező esetben az adott kérés 403-as hibát okoz. GET kérések esetén, kliens oldalon érdemes kikapcsolni a cache-elést az esetleges ebből adódó hibák elkerülése érdekében. Alapértelmezett karakterkódolás az UTF-8. Authentikáció A felhasználók azonosítását http basic authentication segítségével végezzük. Ennek megfelelően GET /JavaChallenge1/rest/ping HTTP/1.1 Host: localhost:8080 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: hu-hu,hu;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Authorization: Basic dhn0dxnlcjpqzwxzem8= Connection: keep-alive Cache-Control: max-age=0 minden kérés fejlécében szerepelnie kell az Authorization mezőnek. Pl.: Szolgáltatások Elérés: /JavaChallenge1/rest/ping Metódus: GET Leírás: Ezzel lehet ellenőrizni a szerver működését. Kérés paraméterek: - Válasz típusa: text Válasz leírása: Normál esetben a válasz: OK

Elérés: /JavaChallenge1/rest/getGalaxy Metódus: GET Leírás: Visszaadja a bolygókat és a bolygókon lévő csomagokat. Kérés paraméterek: - "planets": [<planets>] (List) <planet>: { "name":"amazonia", (String) "x":63.0, (double) "y":6.0, (double) "packages": [<packages>] (List) <package>: { packageid: 1370, (int) originalplanet: "Amazonia" (String) targetplanet: "Stumbos IV" (String) text: "atomreaktor" (String) actualplanet: "Amazonia" (String) fee: 29 (int) Válasz mezők jelentése: planets: az összes bolygót tartalmazó lista name: a bolygó neve (egyedi azonosítója) packages: az adott bolygón lévő csomagok listája packageid: csomagazonosító, később ennek segítségével hivatkozunk a konkrét csomagra originalplanet: a játék kezdetén a csomag ezen a bolygón volt targetplanet: a csomag célállomása actualplanet a csomag aktuális tartózkodási helye. Null, ha a csomagot felvette valaki. fee a csomag szállítási díja, amit akkor kap meg a versenyző, ha a célállomáson lerakja a csomagot Elérés: /JavaChallenge1/rest/go Metódus: POST Leírás: Elindítja a versenyző űrhajóját az adott célállomás felé. Kérés paraméterek: planetname=amazonia (String) A célállomás (bolygó) neve. status: "MOVING", (enum) arriveafterms: 46000, (Integer) destination: "Tarantulon 6" (String) Válasz mezők jelentése: status: a parancs eredményét adja meg. Értéke lehet: ALREADY_MOVING az űrhajó már most is mozgásban van, először meg kell várni az előző mozgás végét NOTHING_TO_DO az űrhajó már most is a megadott célállomáson van UNKNOWN_PLANET ismeretlen bolygónév

MOVING az űrhajó elindult a megadott cél felé arriveafterms: hány ms múlva ér a célhoz az űrhajó (csak akkor nem null, ha a status MOVING) destination: az űrhajó új célállomása (csak akkor nem null, ha a status MOVING) Elérés: /JavaChallenge1/rest/whereIs Metódus: GET Leírás: Megadja az űrhajó aktuális helyét, úti célját, szállított csomagjait. Kérés paraméterek: - username: "testuser", (String) planetname: "Amazonia", (String) targetplanetname: "Amazonia", (String) arriveafterms: null, (Integer) packages: [<packags>] (l. getgalaxy) Válasz mezők username: Felhasználónév. jelentése: planetname: Az a bolygó, ahol a hajó épp van. Ha az űrhajó mozgásban van, akkor null. targetplanetname: aktuális célállomás (ha mozgásban van) arriveafterms: packages: hány ms múlva ér a célhoz az űrhajó (ha mozgásban van) az űrhajón lévő csomagok Elérés: /JavaChallenge1/rest/pickPackage Metódus: POST Leírás: Felveszi a megadott csomagot az űrhajóra. Kérés paraméterek: packageid=995 (int) A felvenni kívánt csomag csomagazonosítója. status: "PACKAGE_PICKED" (enum) remainingcapacity: 2 (Integer) Válasz mezők jelentése: status: a parancs eredményét adja meg. Értéke lehet: PACKAGE_PICKED a csomagot sikeresen felvette NOT_FOUND a megadott csomag nem található LIMIT_EXCEEDED a csomag már nem fér be az űrhajóba (túl sok csomag van már rajta) USER_NOT_ON_THE_PLANET az űrhajó nem azon a bolygón van, ahol a csomag remainingcapacity: a csomag felvétele után még ennyi csomagnak van hely a hajón

Elérés: /JavaChallenge1/rest/dropPackage Metódus: POST Leírás: Lepakolja a csomagot a hajóról. Kérés paraméterek: packageid=995 (int) A letenni kívánt csomag csomagazonosítója. status: "PACKAGE_DROPPED" (enum) scoreincrease: 0 (int) Válasz mezők jelentése: status: a parancs eredményét adja meg. Értéke lehet: PACKAGE_DROPPED a csomagot sikeresen letette NOT_WITH_USER a megadott csomag nincs a versenyző hajóján NOT_AT_DESTINATION a megadott csomag nem a célállomáson van (a kiindulási állomáson is letehetjük a csomagot, de akkor nem jár érte pont) scoreincrease: hány pontot kapott a felhasználó a fuvarért