====== Khans&Kings ====== ===== Moduły ===== * Strona serwera: * KKserver - serwer gry, obsługuje rządania klientów: dołączanie do gry, zakończenie gry * KKlogic - obsługuje logikę gry: dodawanie surowców, rozstrzyganie walk * Strona klienta: * KKwaitingroom - interfejs pozwalajączy połączyć się z serwerem, poczekać na graczy, wybrać scenariusz oraz rozpocząć grę * KKmap - moduł rysujący mapę gry (eksportowana jako Image), oraz przechwytujący kliknięcia w poszczególne podprowincje * KKgame - główny interfejs gry * KKresearch - rysuje drzewko technologii, oraz pozwala nimi zarządzać ===== Format mapy ===== Mapy do gry K&K są zapisywanie w prostym formacie tekstowym, z rozszerzeniem: .kkmap . Format inspirowany jest formatem OSM. 1200x2050 #wielkość mapy w pikselach way [ID] [atrybuty]: (15,12) (57,53) #definiowanie ścierzek oraz ich punktów kontrolnych way mongolskokazachskaN border river: (15, 15) (72,11) #możliwe atrybuty: border, river area [type][attributes]: [ways] #type: country, province, subprovince, lake, see area province Wschodnia Mongolia: mongolskokazachskaN area subprovince forest: mongolskokazachskaN # atrybuty podprowincji: forest, capital(tylko jedna na prowincję) area subprovince forest capital: a45 area country[Wielkie Imperium Mongolskie]: mongolskokazachskaN, mongolsko kazachskaS Ścierzki nie muszą tworzyć idealnie zamkniętych obszarów o ile da się taki obszar jednoznacznie określić. ===== KKserver (strona serwera) ===== Serwer do gry K&K został oparty na protokole 9P2000. Przestrzeń nazw eksportowana przez serwer, wygląda następująco: * ctl (OWRITE) * - posiadana ilość zasobu * <[int] - ilość zasobu do dodania(lub odjęcia w przypadku liczby ujemnej) * wood (ORDWR) * > - posiadana ilość zasobu * <[int] - ilość zasobu do dodania(lub odjęcia w przypadku liczby ujemnej) * stone (ORDWR) * > - posiadana ilość zasobu * <[int] - ilość zasobu do dodania(lub odjęcia w przypadku liczby ujemnej) * ore (ORDWR) * > - posiadana ilość zasobu * <[int] - ilość zasobu do dodania(lub odjęcia w przypadku liczby ujemnej) * gold (ORDWR) * > - posiadana ilość zasobu * <[int] - ilość zasobu do dodania(lub odjęcia w przypadku liczby ujemnej) * techs/ * technology_name (ORDWR) * > podaje informacje o technologi i jej wymaganiach; format: * wymaganie1, wymaganie2 * +1 do stanu jednostek * etc. * < technologia zostaje aktywowane, jeżeli spełnione są wymagania; zasoby zostąną odjęte z puli * units/ * id/ (uid) * class (OREAD) - zwraca klasę jednostki (w K&K2 zwaną nazwą) * type (OREDA) - zwraca typ jednostki * group (ORDWR) - grupa do której należy oddział. Grupy poruszają się i atakują wspólnie * > nazwa grupy * < przyłącz jednostkę do nowej grupy * name (ORDWR) - nazwa jednostki nadana przez gracza * > nazwa jednostki * < nowa nazwa dla jednostki * level (ORDWR) - poziom jednostki * > odczytaj poziom jednostik * < [int] zwiększ poziom jednostki o [int] * ex (ORDWR) - doświadczenie * > ilość posiadanego doświadczenia * <[int] ilość doświadczenia do dodania * pp (ORDWR) - punkty promocji: ile nowych promocji gracz może sobie dodać * > ilość punktów promocji * <[int] ilość pp do dodania * range (OREAD) - qid prowincji w zasięgu ruchu: "154\n125" * str (ORDWD) - atak jednostki * > zwraca wartość współczynnika * <[int] ilość współczynnika do dodania(lub odjęcia w przypadku liczby ujemnej) * def (ORDWR) * > zwraca wartość współczynnika * <[int] ilość współczynnika do dodania(lub odjęcia w przypadku liczby ujemnej) * qua (ORDWR) - stan jednostki * > zwraca wartość współczynnika * <[int] ilość współczynnika do dodania(lub odjęcia w przypadku liczby ujemnej) * rel (ORDWR) - niechęć jednstki * > zwraca wartość współczynnika * <[int] ilość współczynnika do dodania(lub odjęcia w przypadku liczby ujemnej) * spd (ORDWR) - szybkość jednostki * > zwraca wartość współczynnika * <[int] ilość współczynnika do dodania(lub odjęcia w przypadku liczby ujemnej) * bonuses (ORDWR) * >zwraca premie jednostki oddzielone '\n': * +50% ataku na stepie [premia podstawowa] * +25% ataku w lesie [premia dodatkowa] * etc. * < dodaje nową premię * provinces/ * subprovince_id/ (qid) * province (OREAD) - nazwa prowincji do której należy * ulimit (OREAD) - maksymalna liczba garnizonów mogących stacjonować w prowincji * units (ORDWR) - jednostki stacjonujące w podprowincji * > lista jednostek: "uid1\n uid2" * <[uid] przesuń jednostkę na tę prowincję * buldings (ORDWR) - lista budynków w podprowincji: * > lista budynków: "Młyn: +1 do żywności\n Fort: +1 do Obrony, +1 do pojemności" ===== KKlogic (strona serwera) ===== Logika gry, obsługuje zapytania graczy do serwera i rostrzyga, czy są zgodne z zasadami.