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. --------------------------------------------------------------------------------

Nya system

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.