Licencjacka Pracownia Oprogramowania Instytut Informatyki Uniwersytetu Wrocławskiego Jakub Kowalski, Andrzej Pilarczyk, Marek Kembrowski, Bartłomiej Gałkowski Dokumentacja projektu QUAIKE Założenia ogólne 21 czerwca 2009 Wersja 0.55
QUAIKE. Założenia ogólne Tabela 1. Historia zmian w dokumencie Lp. Data Nr wersji Autor Zmiana 1. 2009-03-16 ε Jakub Kowalski Utworzenie dokumentu 2. 2009-03-16 0.01 Jakub Kowalski Zakresy odpowiedzialności 3. 2009-03-17 0.2 Jakub Kowalski Cechy oprogramowania 4. 2009-03-17 0.22 Jakub Kowalski Podstawowe przypadki użycia 5. 2009-03-17 0.25 Jakub Kowalski Wymagania dokumentacyjne 6. 2009-03-18 0.28 Jakub Kowalski Inne wymagania 7. 2009-03-18 0.32 Jakub Kowalski Ogólny opis 8. 2009-03-18 0.36 Jakub Kowalski Opis użytkownika 9. 2009-03-18 0.40 Andrzej Pilarczyk Wprowadzenie i korekta 10. 2009-03-30 0.45 Andrzej Pilarczyk Korekta 11. 2009-05-27 0.46 Andrzej Pilarczyk Zmiana w słowniku 12. 2009-06-17 0.50 Andrzej Pilarczyk Przeredagowanie i uzupełnienie dokumentu 13. 2009-06-21 0.55 Jakub Kowalski Korekta i uzupełnienie dokumentu Spis treści 1. Wprowadzenie........................................ 4 1.1. Cel dokumentu...................................... 4 1.2. Ogólny opis programu Quaike............................. 4 2. Użytkownicy......................................... 4 2.1. Opis użytkowników................................... 4 2.2. Podstawowe potrzeby użytkownika........................... 5 3. Ogólny opis programu Quaike.............................. 5 3.1. Określenie pozycji oprogramowania Quaike na rynku................. 5 3.1.1. Zastosowania akademickie........................... 5 3.1.2. Zastosowania indywidualne........................... 5 3.2. Koszty wykonania projektu Quaike.......................... 6 4. Cechy oprogramowania Quaike.............................. 6 4.1. Możliwość pisania własnych botów........................... 6 4.1.1. Standardowa biblioteka funkcji bota...................... 6 4.1.2. Ogólne zasady rozgrywek............................ 6 4.1.3. Możliwość zamkniętych publikacji bota.................... 6 4.2. Możliwość oglądania graficznego przedstawienia pojedynków między botami.... 6 4.2.1. Wspomaganie testowania botów........................ 6 4.2.2. Możliwość tworzenia zapisów pojedynków................... 7 4.3. Różnorodne zasady rozgrywki.............................. 7 4.4. Możliwość prostego tworzenia własnych map..................... 7 4.5. Ocenianie stanu rozgrywki na serwerze......................... 7 4.6. Zaplecze internetowe................................... 7 2
Spis treści 5. Podstawowe przypadki użycia.............................. 7 5.1. Pisanie własnych botów rola użytkownika-programisty............... 7 5.2. Ustawianie rozgrywek i tworzenie map rola prowadzącego turnieje........ 8 6. Inne wymagania dotyczące programu Quaike..................... 8 6.1. Spełniane normy..................................... 8 6.2. Wymagania stawiane serwerowi............................ 8 6.3. Wymagania sprzętowe.................................. 8 6.4. Licencja.......................................... 8 6.5. Instalacja......................................... 8 6.6. Wymagania wydajnościowe............................... 8 7. Wymagania dokumentacyjne............................... 9 7.1. Wymagania dokumentacyjne dla programistów.................... 9 7.2. Wymagania dotyczące dokumentacji użytkowej.................... 9 7.2.1. Dokumentacja aplikacji klienta......................... 9 7.2.2. Dokumentacja edytora............................. 9 7.2.3. Dokumentacja serwera............................. 9 7.3. Pomoc zdalna...................................... 10 8. Zakres odpowiedzialności autorów............................ 10 9. Słownik............................................. 10 Literatura............................................. 10 3
QUAIKE. Założenia ogólne 1. Wprowadzenie 1.1. Cel dokumentu Celem niniejszego dokumentu jest określenie przeznaczenia projektu Quaike oraz wyspecyfikowanie stawianych przed nim wymagań. Decyzje dotyczące implementacji będą opisane w kolejnych dokumentach. 1.2. Ogólny opis programu Quaike Program Quaike 1, czyli Quakelike Unerring Artificial Intelligence Kosher Environment 2, będzie interfejsem dla programów walczących. 3 Celem Quaike-a jest ułatwienie pracownikom polskich uczelni wyższych prowadzenia zajęć związanych ze sztuczną inteligencją. Program Quaike będzie umożliwiał przygotowanie ram 4 turniejów programów walczących. Ponieważ Quaike udostępnia bibliotekę funkcji przydatnych podczas pisania botów, jest on pomocny również studentom, którzy podczas zajęć muszą napisać program walczący, gotowy zmierzyć się z innymi botami w przygotowanym przez wykładowcę turnieju. Dostęp do programu Quaike nie jest ograniczony i mogą go zdobyć wszyscy zainteresowani tematyką sztucznej inteligencji. Program Quaike ma umożliwiać rozwijanie własnych botów. Raz napisany bot nie jest usuwany po zakończeniu turnieju na który go napisano i jego autor może dalej nad nim pracować. W tym celu działa napisany przez autorów projektu serwer, na którym każdy użytkownik może sprawdzić swojego bota w walce z innymi botami. 2. Użytkownicy 2.1. Opis użytkowników Program Quaike jest przeznaczony przede wszystkim dla środowisk akademickich oraz osób zajmujących się programowaniem, zainteresowanych zagadnieniami związanymi ze sztuczną inteligencją. Konstrukcja programu umożliwia jego wygodne używanie jako narzędzia wspomagającego wykłady na temat sztucznej inteligencji. Pracownia do takiego wykładu może być w całości lub w części oparta na Quaike-u. Indywidualnymi użytkownikami będą najprawdopodobniej młodzi programiści zainteresowani udziałem we wszelkich zawodach o tematyce programistycznej. Dla tej grupy docelowej nawiązanie do tematyki gier komputerowych i możliwość zmierzenia się z żywym przeciwnikiem stanowią dodatkową atrakcję. 1 wym. /kłajk/ 2 tłum. quakopodobne, nieomylne, koszerne środowisko sztucznej inteligencji 3 W dalszej części dokumentacji nazywanych również botami. 4 Wybór map i zasad rozgrywki. 4
2.2 Podstawowe potrzeby użytkownika 2.2. Podstawowe potrzeby użytkownika Do podstawowych oczekiwań związanych z programem Quaike należą: - dokumentacja i materiały instruktażowe ułatwiające nauczenie studentów korzystania z oprogramowania Quaike; - możliwość efektywnego tworzenia botów i ich testowania; - atrakcyjność rozgrywki pod względem wizualnym; - możliwość korzystania z programu Quaike w różnych systemach operacyjnych z rodziny Windows. Natomiast podstawowymi potrzebami użytkowników indywidualnych są: - wygodny, graficzny interfejs użytkownika; - dokumentacja i materiały instruktażowe pozwalające zapoznać się z programem; - możliwość zapisywania i odtwarzania rozgrywek; - możliwość testowania własnych botów bez konieczności dostępu do serwera; - istnienie biblioteki gotowych funkcji, upraszczającej pisanie własnych botów; - internetowe zaplecze prowadzenia rozgrywek. 3. Ogólny opis programu Quaike 3.1. Określenie pozycji oprogramowania Quaike na rynku 3.1.1. Zastosowania akademickie Wykładom ze sztucznej inteligencji najczęściej nie towarzyszy pracownia, lub też w ramach pracowni są wykonywane drobne zadania zaliczeniowe (np. programy grające w kółko i krzyżyk). Użycie Quaike-a pozwala na poprowadzenie pełnowymiarowej pracowni, na której studenci mają okazję zastosować w praktyce wiedzę zdobytą na wykładzie, opracowując przez cały semestr własne algorytmy. 3.1.2. Zastosowania indywidualne Nie ma w Polsce podobnego oprogramowania, którego kluczową cechą byłaby możliwość ciągłego ulepszania botów i swobodnego sprawdzania swoich umiejętności algorytmicznych w pojedynkach staczanych z botami zaprogramowanymi przez innych użytkowników. Istnieją turnieje programów walczących, jednak każda ich edycja jest osobnym wydarzeniem. Użytkownicy za każdym razem piszą boty do innej gry, która po zakończeniu turnieju nie jest dalej rozwijana. Gry oferowane na takich turniejach nie mają rozbudowanej mechaniki, a poziom ich zaplecza dokumentacyjnego i technicznego (np. biblioteki wspomagające pisanie botów) nie jest zbyt wysoki. Uwolnienie programu Quaike od powyższych ograniczeń stanowi więc o całkowicie nowej jakości oprogramowania tego typu. 5
QUAIKE. Założenia ogólne 3.2. Koszty wykonania projektu Quaike Program Quaike jest wykonany z użyciem oprogramowania bezpłatnego lub dostępnego dla studentów w ramach programu MSDN AA oraz bibliotek dostępnych na licencji GPL. 4. Cechy oprogramowania Quaike 4.1. Możliwość pisania własnych botów Podstawową cechą programu Quaike jest umożliwienie użytkownikom pisania własnych botów, mogących się mierzyć w pojedynkach z botami innych użytkowników. 4.1.1. Standardowa biblioteka funkcji bota Quaike udostępnia bibliotekę funkcji standardowych usprawniającą pisanie programów walczących. Biblioteka ta jest szczegółowo opisana w zeszycie dokumentacji zatytułowanym Opis biblioteki standardowej [2] dołączonym do oprogramowania. 4.1.2. Ogólne zasady rozgrywek Szczegółowy opis zasad rozgrywki znajduje się w oddzielnym, przeznaczonym dla użytkowników docelowych, zeszycie dokumentacji zatytułowanym Zasady gry [1]. Wyjaśniono w nim mechanikę systemu botów użytkownikowi zainteresowanemu pisaniem programów walczących w systemie Quaike. 4.1.3. Możliwość zamkniętych publikacji bota Każdy użytkownik ma możliwość wyekspediowania swojego bota na serwer gry. Umożliwia to innym graczom rozgrywanie pojedynków z tym botem. Serwer przechowujący boty jest bezpieczny, tzn. nikt niepowołany nie może zdekompilować programu innego użytkownika i obejrzeć jego kodu. 4.2. Możliwość oglądania graficznego przedstawienia pojedynków między botami W skład programu Quaike wchodzi moduł, za pomocą którego można oglądać walki botów w przejrzystej, graficznej oprawie. Plansza gry ze znajdującymi się na niej przedmiotami jest wyświetlana na bieżąco. Można też obejrzeć bieżące statystyki botów wraz z informacjami na temat ich ekwipunku. 4.2.1. Wspomaganie testowania botów Walki bota znajdującego się na komputerze użytkownika można oglądać w specjalnym trybie, w którym są uwidaczniane zawartości wybranych zmiennych lokalnych programu bota. Umożliwia to efektywne testowanie zachowań i wychwytywanie błędów w algorytmach, a przez to ułatwia programowanie botów. 6
4.3 Różnorodne zasady rozgrywki 4.2.2. Możliwość tworzenia zapisów pojedynków Istnieje możliwość utworzenia zapisu pojedynku, który w takim przypadku będzie mogł zostać odtworzony na komputerze użytkownika bez konieczności dostępu do serwera gry. Oglądając zapis pojedynku użytkownik zyskuje nowe możliwości. Nic nie stoi na przeszkodzie, aby w pewnym momencie wstrzymać odtwarzanie zapisu, czy nawet cofnąć się o kilka tur, aby zobaczyć jeszcze raz, jak zachowały się boty w konkretnej sytuacji. Takie cechy są bardzo przydatne do analizy działania oprogramoywanych botów. 4.3. Różnorodne zasady rozgrywki Istnieją dwa sposoby prowadzenia pojedynków. 1. Boty są pisane specjalnie do walki na danej, znanej autorowi mapie. 2. Boty walczą na mapie o podanej na początku rozgrywki specyfikacji. Autor bota nie musi znać mapy. 4.4. Możliwość prostego tworzenia własnych map Częścią programu Quaike jest moduł umożliwiający tworzenie nowych map za pomocą wygodnego interfejsu graficznego. 4.5. Ocenianie stanu rozgrywki na serwerze Dzięki oceianiu ruchów botów przez serwer, użytkownik nie może zmienić zasad rozgrywki w swojej kopii programu. Ma także pewność, że wszystkie pojedynki będą rozegrane sprawiedliwie i bez możliwości zewnętrznej ingerencji. 4.6. Zaplecze internetowe Każdy serwer programu Quaike stanowi niezależne zaplecze internetowe na którym znajdują się informacje o mapach i zarejstrowanych botach. W przyszłości na serwerach będą dostępne statystyki poszczególnych botów, które będą mogły pomóc w wyborze odpowiedniego przeciwnika, oraz umożliwią stworzenie różnego rodzaju klasyfikacji motywujących do ulepszania swoich programów. 5. Podstawowe przypadki użycia Przypadki użycia oprogramowania Quaike są realizowane przez dwóch aktorów: użytkownika-programistę piszącego boty (np. studenta) i użytkownika prowadzącego turnieje (np. prowadzącego pracownię). 5.1. Pisanie własnych botów rola użytkownika-programisty Użytkownik-programista korzysta z systemu, aby pisać własne programy walczące, publikować je i testować w walkach z botami innych użytkowników. 7
QUAIKE. Założenia ogólne 5.2. Ustawianie rozgrywek i tworzenie map rola prowadzącego turnieje Prowadzący turniej ma za zadanie przygotować rozgrywkę, ustalając szczegółowe zasady rozgrywania pojedynków, i nadzorować jej przebieg. Prowadzący może także tworzyć własne mapy, aby urozmaicić grę. 6. Inne wymagania dotyczące programu Quaike 6.1. Spełniane normy Program spełnia standardy i normy zalecane przez twórców języka C#. 5 6.2. Wymagania stawiane serwerowi Quaike pracuje na serwerze działającym pod kontrolą systemu Windows. Serwer Quaike-a wymaga stałego łącza internetowego. 6.3. Wymagania sprzętowe Komputer użytkownika musi mieć dostęp do Internetu w celu prowadzenia pojedynków z opublikowanymi botami. Zalecane minimalne wymagania sprzętowe to: procesor 1 GHz, 512 MB pamięci RAM. 6.4. Licencja Program Quaike jest objęty licencją z rodziny Freeware. Dokładna treść licencji znajduje się w [3]. 6.5. Instalacja Program Quaike jest udostępniany dla rodziny systemów operacyjnych Windows w postaci instalatora. Aby zainstalować program należy uruchomić instalator i postępować zgodnie ze wskazówkami pojawiającymi się na ekranie. 6.6. Wymagania wydajnościowe Wąskim gardłem wydajności programu jest wymiana informacji z serwerem gry, dlatego ta komunikacja jest tak zaprojektowana, aby użytkownik nie był zmuszony do długiego oczekiwania na realizację tych spośród zadań Quaike-a, które realizują się w czasie rzeczywistym. 5 Standard ECMA-334 8
7. Wymagania dokumentacyjne. 7. Wymagania dokumentacyjne 7.1. Wymagania dokumentacyjne dla programistów Dokumentacja programu Quaike jest na bieżąco aktualizowana i rozwijana podczas całego cyklu wytwarzania programu. W jej skład wchodzi historia zmian. 6 Każdy zeszyt dokumentacji jest oznaczony numerem wersji kodu źródłowego, której dotyczy. Dokumentacja jest przechowywana wraz z kodem źródłowym w bazie systemu kontroli wersji (SVN). Dostęp do dokumentacji mają wszyscy członkowie zespołu. 7.2. Wymagania dotyczące dokumentacji użytkowej Program Quaike zaprojektowano w taki sposób, aby żaden użytkownik nie miał problemów z jego obsługą. Szczególny nacisk położono na projektowanie i dokumentację graficznego interfejsu użytkownika. Podział dokumentacji wynika z możliowści podziału oprogramowania na trzy, w dużej mierze niezależne od siebie aplikacje. 7.2.1. Dokumentacja aplikacji klienta Dokumentacja przeznaczona jest dla autorów botów i osób zainteresowanych oglądaniem rozgrywek, umożliwia poznanie interfejsu aplikacji klienta oraz zasad gry. W skład tej części dokumentacji wchodzi opis przygotowanych przez twórców botów i map, a także opis biblioteki standardowej. Oprócz tego przygotowano samouczek pozwalający napisać pierwsze działające boty. W skład dokumentacji aplikacji klienta wchodzą następujące dokumenty: - Instrukcja obsługi klienta - Zasady gry - Samouczek pisania botów - Opis biblioteki standardowej - Opis standardowych map - Opis standardowych botów 7.2.2. Dokumentacja edytora Dokumentacja przeznaczona jest dla autorów map umożliwia poznanie interfejsu edytora oraz zasad tworzenia map do Quaike-a. W skład dokumentacji aplikacji klienta wchodzi dokument zatytułowany Instrukcja edytora. 7.2.3. Dokumentacja serwera Dokumentacja przeznaczona jest dla osób chcących mieć własny serwer rozgrywek Quaike umożliwia zapoznanie się z opcjami serwera oraz sposobami jego zarządzania. W skład dokumentacji serwera wchodzi dokument zatytułowany Instrukcja serwera. 6 Odpowiednia tabela znajduje się na drugiej stronie każdego z dokumentów. 9
QUAIKE. Założenia ogólne 7.3. Pomoc zdalna Wszelkie uwagi dotyczące działania programu Quaike należy zgłaszać autorom projektu za pomocą poczty elektronicznej wysyłając wiadomość na adres projectquaike@gmail.com. 8. Zakres odpowiedzialności autorów Jakub Kowalski projektant, kierownik projektu, autor i wykonawca testów, grafik, programista, autor dokumentacji, autor standardowych map i botów Andrzej Pilarczyk projektant, autor dokumentacji Marek Kembrowski programista (edytor, klient, serwer), projektant Bartłomiej Gałkowski programista (edytor) 9. Słownik Słownik znajduje się w [4]. Literatura 1. Jakub Kowalski, Andrzej Pilarczyk, Marek Kembrowski, Bartłomiej Gałkowski, Dokumentacja projektu Quaike. Zasady gry. Wrocław, LPO IIUWr 2009. 2. Jakub Kowalski, Andrzej Pilarczyk, Marek Kembrowski, Bartłomiej Gałkowski Dokumentacja projektu Quaike. Opis Biblioteki Standardowej. Wrocław, LPO IIUWr 2009. 3. Jakub Kowalski, Andrzej Pilarczyk, Marek Kembrowski, Bartłomiej Gałkowski, Dokumentacja projektu Quaike. Licencja. Wrocław, LPO IIUWr 2009. 4. Jakub Kowalski, Andrzej Pilarczyk, Marek Kembrowski, Bartłomiej Gałkowski, Dokumentacja projektu Quaike. Słownik. Wrocław, LPO IIUWr 2009. 10