Voor een rts is een minimap een belangrijk gedeelte, welke ook het grootste gedeelte van de gameplay bepaald. Veel informatie wordt hier namelijk uitgehaald. Ik ben bezig met proberen en testen, om uiteindelijk een simpele rts te maken. Hier moet natuurlijk ook een minimap bij. Dit moet uiteraard weer met zeshoekjes. De manier dat alle vakjes ingedeeld zijn staat hier.

Een minimap is een verkleinde versie van een kaart. (goh het heet minimap). Het probleem is dat als er een kaart is van 50.000 vakjes je alle vakjes door moet lopen en allemaal moet tekenen. Dit zorgt natuurlijk voor een flinke performance drop. Om dit op te lossen moet de minimap niet constant opnieuw getekend worden. Maar moet hij opgeslagen worden. Zo kan het als één geheel weergeven worden. Als er een verandering komt in de kaart hoeft alleen dat stukje veranderd te worden. En hoeft er niet constant de kaart opnieuw getekend te worden.

Wat mij het handigst lijkt voor het weergeven van veranderingen in de kaart, is om alle objecten die op de kaart weergeven moeten worden een notificatie geven als hun positie is veranderd, of hun status is veranderd. Ik heb er nog niet heel goed over nagedacht, maar dit is in ieder geval een systeem dat aardig moet werken.

Ik heb het opslaan van de gehele minimap al een beetje zitten proberen, en het werkt aardig. Slick heeft nog wel enkele rare dingetjes, zoals het omkeren van de graphics. En dat het bij plaatjes kleiner dan 256 px hoogte linksonder als oorsprong te pakken, en bij plaatjes groter dan dat, de gebruikelijke linksboven als oorsprong (in ieder geval voor opengl).

Hier is omheen te werken om gewoon het plaatje van de minimap 512*512 px te laten zijn. Om een zeshoek redelijk te benaderen in simpele graphics kan een simpel plusje gebruikt worden die 4 px breed en hoog is. Deze lijken in elkaar zeer op zeshoeken. Dit geeft wel als probleem dat een minimap al snel groter wordt dan 512*512 px. Een kaart met 63 ringen is 63*2 +1 = 127 vakjes breed. En omdat elk vakje 4px is, kom je dan al op 508 px uit. Een kaart met 63 ringen heeft 12097 vakjes. Dit is natuurlijk een vrij kleine kaart. Een vierkante kaart zou dan ongeveer 100 * 120 vakjes zijn. Als je een rts wilt die je kan spelen met meer mensen dan 2, dan heb je al snel een veel grotere kaart nodig. Dan is een kaart met 127 ringen een optimale grootte, als ik de groottes pak van Age Of Empires, waarbij de grootste kaart 240*240 is. Bij 127 ringen zijn er namelijk 48769 vakjes. wat iets kleiner is dan 240*240 = 57600 vakjes.

Een minimap van een kaart met 127 ringen komt buiten de 512 px, namelijk (127*2 +1) *4 = 1020 px. Hiervoor moet daarom een oplossing bedacht worden. De gehele minimap kan opgesplitst worden in verschillende images. Hierdoor is er wel wat overlap, maar daar is niet veel aan te doen, omdat er verschillende zeshoeken afgesneden worden.

De uiteindelijke minimap die weergeven wordt, moet natuurlijk niet 512*512 px zijn. Dit zou veelste groot zijn. De minimap moet op de een of andere manier kleiner gemaakt worden. Dit kan door de gehele minimap te scalen. Of maar een gedeelte van de minimap te laten zien. Ikzelf wil dat laatste, dit geeft namelijk het gevoel dat de kaart groter is. Ook geeft het wat overzicht weg, waardoor het een mooi gameplay element mee geeft.