NULÄGET
Projektet har nu fortskridit i drygt 5 månader. Under utvecklingens gång har vi
stött på flera utmaningar som har förlängt utvecklingstiden för respektive
modul. Dessutom har vi varit tvugna att omorganisera stora delar av koden genom
att dela upp dess namnutrymmen i separata moduler. Det är en nödvändighet när vi
nu närmar oss 20 000 rader kod.
Sedan förra statusrapporten har cirka 300 revisioner publicerats i vårt privata
versionshanteringssystem. Av den anledningen har vi valt att dela in rapporten i
två sektioner: hur tidigare moduler vidareutvecklats, samt vilka moduler som
har tillkommit.
Modell- och enhetsladdare
-------------------------
Grundläggande hantering av nyckelord har omarbetats. Detta har medfört
uttökad skalbarhet av laddaren. Laddaren förstår nu även skräddarsydda
enhetsdeklarationer vilket gör det möjligt att enkelt spara enhetsspecifik
data i s.k. unit-filer. Laddaren beräknar samt omformar modellerna så att de
kan omskalas av nuvarande enhetshanteringssystem.
Pathfinding
-----------
Pathfinding-algoritmen har nu flyttats till en separat tråd enligt tidigare
statusrapport. Algoritmen har även optimerats, och beräknas, under
godtyckliga förhållanden, vara 110x snabbare. Denna markanta prestanda-
förbättring har bland annat uppnåtts via negligering av dubletter. Den nya
strukturen har dock medfört vissa kalkyleringsproblem: vid vissa tillfällen
lyckas systemet inte hitta närmaste väg från punkt A till B.
Ljudsystem
----------
Ljudsystemet har stabiliserats och i sektioner flyttats till separata trådar,
som arbetar mot en arbetskö. När arbetskön är tom, sover trådarna i fyra
sekunder. Till skillnad från tidigare implementation, stöder nu ljudsystemet
även hårdvara som saknar ljudkort.
Modeller & Texturer
-------------------
Texturer för himlen har genererats. Arbetsflödet för modeller har ändrats.
Modellerna görs nu i CAD och importeras därefter till Blender (ett modelleringsprogram
för 3d-grafik) där man manuellt sätter texturkoordinater och material.
I slutändan exporteras modellen till det format som vår modelladdare stödjer.
En tumnagel genereras vid exportering.
Terrängmotorn
-------------
Terrängmotorn klarar nu av att rendera vatten samt "Fog of War".
Fog of War, FoW, kan beskrivas som en sorts dimma som täcker terräng som
befinner sig utanför spelarens enheters synfält.
(( paragraph ))Om belyst terräng befinner sig innanför någon enhets synfält,
renderar terrängmotorn terrängen annorlunda för att visa att den är belyst.
--------------------------------------------------------------------------------
<h2>Nya system</h2>
Miljösystem
-----------
Detta modul hanterar världsklockan, samt hur världen förändras med klockan. Vid
initiering av en karta, sätts tidsspecifika informationspaket. Dessa strukturer
innehåller bland annat information om ljus, himmel och ljud. När deras timme
sedan infaller appliceras datan, och spelaren upplever förändrade
förutsättningar. För att förhindra omedelbara övergångar sker övergångarna
stegvis baserat på antalet beräkningar per timme.
Värt att notera är att modulen även innehåller laddningskod för himlar.
Modulen är i princip klar, men lär vid senare tillfälle expanderas efter behov.
Enhetshanterare och AI
----------------------
Enhetshanteraren har på alla fronter förbättrats, och kan inte jämföras med
tidigare implementering: bland annat så styrs hela systemet i princip av
skriptspråket Lua. Detta betyder att källkoden ligger tillgänglig utanför
programmet, och kräver ingen kompilering. Filerna tolkas in vid uppstart, och
exekveras därefter efter behov. AI:n tar inte längre hand om hur enheter
förflyttar sig på världskartan. Detta sköter numera enhetshanteraren.
Ett stort antal funktioner har implementerats, däribland:
* Det går nu att bygga både enheter och byggnader.
* Resurshantering -- det kostar numera pengar att bygga enheter. Enheter
förbrukar energi beroende på sysselsättning. Solpaneler och jordvärmepumpar
genererar energi.
* Fog of War - för förklaring, se ovan.
* Ljussättning - ljus från speciella enheter och byggnader har implementerats.
* Saker som enheterna ska göra, till exempel för byggnader att bygga enheter
eller för flyttbara enheter att gå till olika platser, går nu att köa.
* Enheter kan nu animeras.
* Det är nu möjligt att bestämma hur en enhet klarar av sluttande terräng.
I övrigt har ett stort antal nya egenskaper hos enheter implementerats, till
exempel hur långt de kan se och hur nära enheter måste vara för att attackera.
Användargränssnitt
------------------
Detta nya system omsluter spelets huvuditerationssats. Detta har inneburit stora
förändringar. Systemet består av ett antal objekt som lägger fundamentet för
fönster, paneler såsom kontroller (ett synligt objekt med någon funktion).
Utifrån dessa bygger man senare ändamålsspecifika objekt, t ex bild, text,
knapp etc.
Grunden består av ett rekursivt händelsesystem som är nära integrerat med
fönsterhanteringsmodulen.
För att bibehålla korrekta proportioner på samtliga skärmar använder sig
användargränsnittet av s.k. aspektkorrekta relativa koordinater. Storlekarna
på paneler och kontroller skalas därmed om beroende på aspekten på spelfönstret.
FRAMTIDEN
Arbetet fortskrider som vanligt enligt schemat. Grunden har nu lagts. Det som nu
återstår är att skapa en fullständig spelupplevelse baserat på vårt koncept.
Den artificiella intelligensen kommer inneha en mycket central roll, men detta
innebär inte enbart flertaliga timmars frenetiskt knappande, utan även kreativt
skapande av ljud och bild.
GRUPPEN
Samarbetet har förbättrats på flera fronter. Vi koordinerar vårt arbete bättre,
och lyssnar på varje individs önskemål och tankar.
INDIVIDEN
Alla har tagit sitt ansvar och arbetat kreativt och initiativrikt på sina delar
av projektet.