PRELIMINÄR SPECIFIKATION FÖR PROGRAMUTVECKLINGSPROJEKT
Nätverksbaserat krigsspel för forskningsändamål

Uppdragsgivare
Joel Brynielsson Klas Wallenius
   
Gruppmedlemmar
Henrik Bäärnhielm Andreas Enblom
Jing Fu Zi Niklas Hallenfur
Karl Hasselström Henrik Hägerström
Oskar Linde Jon Åslund

Problembeskrivning

Bakgrund

Inom försvarsforskning använder man sig av simuleringar för att öva personal, ta fram optimala truppsammansättningar, simulera tänkta stridsförlopp etc.

Trots det stora utbudet av datorspel på den kommersiella marknaden visar studier på Försvarshögskolan att det idag inte finns något bra datorbaserat krigsspel lämpat för forskningsändamål.

Syfte

Projektet går ut på att ta fram ett generellt och utbyggbart system som låter användarna spela olika typer av krigsspel mot varandra. Det ska vara enkelt att skapa nya spel och scenarier för existerande spel. En stor del av projektet kommer att gå ut på att i samråd med uppdragsgivarna utarbeta hur systemet ska vara uppbyggt och vilken funktionalitet som ska stödjas.

Krav och avgränsningar

Forskningsvärlden behöver ett nätverksbaserat datorspel med öppen och väldokumenterad källkod skriven i Java. Dokumentation och kommentarer i källkoden skrivs på engelska. Spelet skall vara av strategityp där man flyttar enheter på en geografisk karta.

Mycket kraft måste läggas på att definiera spelet så att det blir så allmänt som möjligt så att alla tänkbara datorspel kan spelas. All indata gällande grafik, terrängens uppförande, antal enheter etc. etc. skall lätt kunna genereras av icke programmeringskunnig person via t.ex. textfiler eller editorer. En del kommersiella krigsspel erbjuder möjligheten att generera egna scenarior och kan därmed tjäna som bra inspiration.

Vi ser två huvuddelar som skall utvecklas, en serverdel och en klientdel. Servern, eller själva spelmotorn, sköter spelförloppet. Till servern kopplas ett godtyckligt antal spelklienter.

Inom detta projekt begränsar vi oss till att en sorts spelklient där en spelare manuellt flyttar sina enheter tillverkas. I framtiden tänker vi oss dock att forskare får laborera med att skapa egna "smarta fiender". Dessa består av klienter som flyttar enheter automatiskt enligt kluriga algoritmer, t.ex. algoritmer baserade på maskininlärning (inom Försvarshögskolan har försök med genetiska algoritmer gjorts).

Funktioner

Systemet kommer att utvecklas i Java och kan delas upp i tre delar; server, kommunikation och klient. I allmänhet körs servern och den delen av kommunikationen som inte byggs in i klientprogrammen endast på en dator medan flera användare ska kunna använda olika typer av klienter (t.ex. spelare i det gröna laget, spelare i det röda laget och övervakare) på ett antal olika datorer. Systemet kommer att kräva att de inblandade datorerna är ganska snabba och utan problem kan använda de mest avancerade funktionerna i Java. Kommunikationen mellan klienten och servern kommer att realiseras med HLA-systemet där det finns många färdiga implementationer för dataöverföring. Systemet kommer också att kräva att datorerna kan kommunicera med varandra med TCP/IP.

Användare av systemet kommer att vara försvarsforskare och militärer under utbildning.

Förslag till lösning

I figur 1 visas en skiss över alla de komponenter som ska ingå i systemet.

Figure 1: Alla komponenter i systemet.
\includegraphics[scale=0.5]{brainstorm.eps}

Globala parametrar kan t.ex. vara vind eller temperatur. Globala parametrar berör hela spelplanen. Vi har alltså en vindriktning i hela Sverige om simuleringen visar en karta över Sverige.

Systemet kommer att ha tre lager:

  1. Spelpjäser, vektorbaserade, har egenskaper, kan flyttas osv.
  2. Statisk vektorobjekt (SVO), vektorbaserade, står still, t.ex. vägar.
  3. Marken, automatbaserat, kan ändras beroende på regler

Diskussioner gällande SVO förs fortfarande. Vi är inte övertygade om att de verkligen är nödvändiga för produkten. Det enda speciella användningsområde vi hittintills funnit är för att modellera vägar.

För att lösa problemet med olika klienter som styr olika enheter i spelet så kommer en modul för att hantera rättigheter inkluderas i plattformen. Denna har exempelvis ansvaret för att två motståndarklienter inte kan styra varandras pjäser, medan en loggklient ska kunna läsa allt som händer i spelet.

Spelpjäser har egenskaper och actions. Egenskaper är t.ex. hälsa, attackvärde, försvarsvärde, snabbhet. Actions definierar vad en specifik spelpjäserna kan göra, t.ex. flytta, attackera. Actions kan påverka andra spelpjäser/automater/svo.

Terräng/automater

Terrängen kommer att bestå av en rutnät där varje ruta motsvarar en viss terrängtyp. Varje ruta kommer också att fungera som en tillståndsautomat. En noggrannare beskrivning av vad automaterna/terrängenheterna innebär följer nedan.

Spelpjäser/enheter

Interaktion mellan enheter och terräng

Actions

Varje spelpjäs ska ha möjlighet att utföra ett antal verb. Dessa benämns som actions.

Actions kan hanteras på två sätt:

  1. Sådana som utförs på en gång (t.ex. att i detta nu släppa bomber från flygplanet på den plats det befinner sig över).

  2. Sådana som utförs i en viss ordning (t.ex. förflyttning längs en rutt bestående av ett antal punkter, för att sedan desertera och ansluta sig till fienden). Dessa placeras lämpligtvis i en kö.

Då en action av typ två är färdigutförd, svarar servern med ''lycka'', ''misslyckad'' eller ''target lost''. Vad dessa svar betyder framgår av nedanstående resonemang.

Några actions som bör finnas med är:

Hur man löser några specialfall på detta sätt:

Användargränssnitt

Användargränsnittet kommer att bestå av en karta, och ett antal informationsrutor.

På kartan presenteras terrängen och spelpjäserna. För att ge en eller flera av sina spelpjäser instruktioner markeras dessa med musen (shift-tangenten hålls nere för att markera flera). Sedan klickar man med högerknappen (eller alt-klickar på Macintosh) för att få upp en meny med actions som de markerade enheterna kan utföra. När en action väljs utförs den omedelbart om den inte kräver några argument, och annars visas en aktionsradie för just den actionen och användaren klickar på kartan eller på andra spelpjäser för att ange de argument som denna action kräver.

Informationsrutorna kommer att innehålla värdet på de globala parameterna, systemmeddelanden och information om markerade spelpjäser.

Administration

Ansvarsfördelning

Projektledare är Andreas Enblom och Henrik Hägerström. Vidare delas medlemmarna in i tre grupper, servergruppen (Henrik Bäärnihielm, Karl Hasselström och Henrik Hägerström), kommunikationsgruppen (Niklas Hallenfur och Jon Åslund) och klientgruppen (Andreas Enblom, Jing Fu Zi och Oskar Linde).

Tidsplanering

Period Arbete
31 jan - 15 feb Inledande studier och dikussioner, studiebesök på försvarshögskolan.
15 feb - 9 april Noggrann specifikatin och design.
9 april - 27 april Implementation.
27 april - Slutdokumentation, avstämning, uppstädning och presentation.

Möten

Gruppen träffas i stort sett varje onsdag, oftast tillsammans med uppdragsgivarne för att arbeta med systemlösningar och specifikation av systemet. Utöver detta träffas också de mindre grupperna för att diskutera och designa sina delar.

Riskanalys

De största riskerna är (sorterade efter, som kursledaren uttrycker det, sannolikhet):

  1. Att automattekniken visar sig bli för långsam med teknologier som Java. Lite försök som gjorts här visar dock att det bör gå bra. Om det trots allt skulle bli ett problem får man lösa det genom att göra färre automater eller genom att minska uppdateringsfrekvensen.

  2. Att uppdragsgivarna inte tycker att spelet är tillräckligt generallt och lätt att utöka. Genom en ständig dialog med dessa försöker man undvika detta problem.

  3. Att spelet inte blir färdigt. Uppdragsgivarna har uttryckt att det är viktigare att det finns en generell, väldokumenterad och utbyggbar grund än att spelet blir helt färdigt. Vid tidsbrist kommer vi att koncentrera oss på att skapa en bra kommunikationslösning m.h.a. HLA och på att implementera serverns mest kritiska delar. På detta sätt löser vi de implementationsdelar där uppdragsgivarna har uttryckt att de har sämst kunskaper och ger dem därmed en bra grund för fortsatt arbete.

Internetrefereser

Gruppen har ett e-postalias som är pr01-krigsspel@nada.kth.se. Projektledarna Andreas Enblom och Henrik Hägerström nås via e-post på d98-aen@nada.kth.se resp. d98-hha@nada.kth.se.

Grupen har en hemsida på http://www.student.nada.kth.se/~d98-jas/prupwiki/ där i stort sett all skriftligt dokumentation hamnar förr eller senare. Hemsidan använder sig av WikiWikiWeb-teknik för att alla lätt ska kunna skapa specifikationer och andra dokument tillsammans.

About this document ...

PRELIMINÄR SPECIFIKATION FÖR PROGRAMUTVECKLINGSPROJEKT
Nätverksbaserat krigsspel för forskningsändamål

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.47)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -dir /misc/projects/proj01/krigsspel/public_html/documentation/prelspec -no_navigation -split 0 -address 'Last updated: 2001-05-14 by gecco' prelspec.tex

The translation was initiated by Jon Åslund on 2001-05-14


Last updated: 2001-05-14 by gecco