Hoofdstuk 2. De creatie van een KsirK skin

De skin van KsirK is volledig aanpasbaar. Voor diegene met grafische capaciteiten is het creëren van een nieuwe skin net zo eenvoudig als het kopiëren van een bestaand, bewerken of wijzigen van de grafische elementen en het bijwerken van de data in een .desktop configuratiebestand, wat u allemaal kunt doen met KsirK skinbewerker. Een laatste stap is het bestand met de beschrijving, hoe te installeren, te bewerken.

Alle voorbeelden (tekst en afbeeldingen) komen uit de standaard skin van KsirK.

Structuur van mappen en bestanden

  • Data/ : Data gebruikt door het programma voor het hanteren van skin-afbeeldingen.

    • CMakeLists.txt : beschrijft wat te installeren.

    • onu.desktop : hoofdbestand voor de beschrijving van de skin. Zie zijn beschrijving hieronder.

  • Images/ : De afbeeldingen van de skin (plattegrond, figuurtjes, etc.)

    • CMakeLists.txt : beschrijft wat te installeren.

    • pool.svg : de plattegrond en alle in de skin gebruikte figuurtjes.

    • map-mask.png : de afbeelding waarmee het programma kan bepalen boven welk land de muis is tijdens het spel (zie hieronder).

    • *.png : de andere afbeeldingen hier zijn pictogrammen voor de knoppen.

  • CMakeLists.txt : beschrijft wat te installeren.

  • Sounds/ : geluidsbestanden voor de skin.

De map Data

Deze map heeft maar één bestand, world.desktop. Dit bestand geeft een beschrijving van de inhoud van de skin. Het wordt gebruikt voor een beschrijving van de organisatie van de wereld en hoe deze te tonen. U hoeft het niet handmatig in te vullen omdat dat door KsirK skinbewerker wordt gedaan. Maar voor de compleetheid, beschrijven we hier toch zijn structuur.

In een onu-groep zitten een aantal landen, een aantal nationaliteiten en tenslotte een aantal continenten. In de verschillende groepen zitten de beschrijvingen van de figuurtjes, de beschrijvingen van de landen, continenten, nationaliteiten en doelen.

De volgende secties beschrijven de inhoud van elke groep.

De onu-groep

Tabel 2.1. De onderdelen van de onu-groep

ItemsBeschrijving
breedteDe breedte van de skin.
hoogteDe hoogte van de skin.
skinpadHet pad van de skin relatief ten opzichte van programma-data (bijv. skins/default).
nb-countriesHet aantal landen (42 in de standaard skin). Het zou hetzelfde aantal landen moeten zijn als het aantal country-groepen hieronder.
nb-nationalitiesHet aantal nationaliteiten (6 in de standaard skin). Het zou hetzelfde aantal nationaliteiten moeten zijn als het aantal nationality-groepen hieronder.
nb-continentsHet aantal continenten (6 in de standaard skin). Het zou hetzelfde aantal continenten moeten zijn als het aantal continent-groepen hieronder.
poolHet pad en naam van het pool-bestand relatief ten opzichte van skin-pad (bijv. Images/pool.svg).
map-maskHet pad en naam van het map mask-bestand relatief ten opzichte van skin-pad (bijv. Images/map-mask.png).
formaatversieDe versie van het bestandsformaat van de skin (2.0).
naamDe getoonde naam van de skin.
beschrDe uitgebreide beschrijving van de skin.
fighters-flag-y-diffHet verschil in hoogte tussen de figuurtjes van vlaggen en kanonnen.
width-between-flag-and-fighterHet aantal pixels tussen het meest linkse pixel van de vlag en het meest rechtse pixel van een eenvoudig kanon (niet schietend of exploderend).

De beschrijvende groepen van figuurtjes

Elke type sprite (vlag, infanterie, cavalerie, kanon, schietend kanon en exploderend kanon) is gedefinieerd door een groep. Alleen voor enkele sprites moet u een breedte opgeven. Deze opgave wordt gebruikt voor relatieve plaatsing tijdens animaties: De kanonnen, schietend of exploderend zullen niet bewegen rond de vlag van het land tijdens het gevecht.

Tabel 2.2. De onderdelen van een figuurtjes-groep

ItemsBeschrijving
breedteDe standaardbreedte van de figuurtjesframes van de vlag.
hoogteDe standaardhoogte van de figuurtjesframes van de vlag.
framesHet aantal frames van het figuurtje.
versiesHet aantal versies van de vlagfiguurtjes.

De landen beschrijvende groepen

Elk land dat in de onu-groep voor komt, elk land heeft zijn eigen groep waarvan het label de naam van het land is. De tabel hieronder geeft een lijst met items van deze groepen.

Tabel 2.3. De onderdelen van een land-groep

ItemsBeschrijving
idDe unieke identificatie van het land (dat een geheel getal moet zijn), moet bij nul (0) beginnen.
naamDe getoonde naam van het land.
<figuurtje>-puntElke soort figuurtje (vlag, infanterist, etc.) in het land wordt op een bepaalde positie getoond die is gedefinieerd door deze regel met twee door een komma gescheiden integers.
neighboursDe lijst met ID´s van de buren van het geselecteerde land.

De nationaliteit beschrijvende groepen

Elke nationaliteit die in de onu-groep voor komt, elke nationaliteit heeft zijn eigen groep waarvan het label de naam van de nationaliteit is. De tabel hieronder geeft een lijst met items van deze groepen.

Tabel 2.4. De onderdelen van de nationaliteit-groep

ItemsBeschrijving
naamDe naam van de nationaliteit (bijv. Japan).
leiderDe naam die aan de speler zal worden voorgesteld die deze nationaliteit kiest.
vlagDe landsvlag-figuurtje-naam in het onu-SVG-bestand.

De continent beschrijvende groepen

Elk continent dat in de onu-groep voor komt, elk continent heeft zijn eigen groep waarvan het label de naam van het continent is. De tabel hieronder geeft een lijst met items van deze groepen.

Tabel 2.5. De onderdelen van de continent-groep

ItemsBeschrijving
naamDe naam van het continent (bijv. Afrika).
idHet unieke identificatie van het continent (dat een geheel getal moet zijn).
bonusHet aantal door de speler verkregen legers, die aan het eind van een beurt alle landen in een continent bezit.
continent-countriesDe lijst met ID´s van de landen op dat continent.

De groepen met beschrijvingen van de doelen

Elk doel dat in de onu-groep voor komt, elk doel heeft zijn eigen groep waarvan het label de naam van het doel is. De tabel hieronder geeft een lijst met items van deze groepen.

Tabel 2.6. Doelen

ItemsBeschrijving
typeHet soort doel. Dat kunnen continenten, landen of een speler zijn.
nbArmiesByCountryHet minimum aantal legers instellen dat de speler in elk land moet plaatsen.
nbCountriesHet aantal landen instellen dat de speler moet bezitten.
nbCountriesFallbackVoor het type spelersdoel, als de doelspeler is gedood door iemand anders, dan is dit het aantal landen dat de speler in plaats daarvan moet gaan veroveren.
beschrEen volledige tekstbeschrijving van het doel met toepasselijke plaatshouders (meer documentatie is hier nodig),
continentenDe lijst met continent-ID´s die de speler moet gaan veroveren.

De map Images

In deze map vindt u de knoppen die speciaal voor KsirK zijn en het pool-SVG-bestand met de kaart en alle figuurtjes.

Het bestand pool.svg

U vindt in dit SVG-bestand de kaart en alle figuurtjes van het spel. Elk element is zodanig genaamd dat het spel elk apart kan selecteren en weergeven.

In de standaard skin, vindt u vlaggen, infanterie, cavalerie en kanonnen als figuurtjes. Infanterie stelt één leger voor, cavalerie vijf en kanonnen tien. Kanonnen zijn ook gebruikt om vechtende legers voor te stellen. Daarom zijn er drie verschillende kanonnen-figuurtjes: normaal statische of bewegend kanon, een vurende en een exploderende.

Elk figuurtje-afbeelding is een verzameling van verschillende weergaven van het object en elke weergave is een apart frame. Weergaven zijn verticaal georganiseerd en de frames horizontaal. De verdeling van de afbeelding in aparte frames kunt u vinden door de hoogte van de afbeelding te delen door het aantal weergaven en de breedte door het aantal frames. Deze gegevens zijn te vinden in het bestand onu.desktop.

Een voorbeeld van een figuurtje-afbeelding: cannon.png

Voor leger-figuurtjes, zijn er drie verschillende weergaven, van boven naar onder:

  • rechts kijkend

  • links kijkend en

  • vooraanzicht

Voor vlaggen is er maar een weergave. Alle achtergronden van figuurtjes moeten op transparant gezet zijn.

Een voorbeeld van een figuurtje-afbeelding voor vlag: italy.png

Tabel 2.7. De elementen van de pool

ElementnaamVoorbeeldafbeeldingBeschrijving
kaart
Kaart van de wereld van de figuurtjes. Landen kunnen willekeurige vormen hebben, maar moeten wel in op het oog herkenbare continenten gegroepeerd zijn, alleen door de locatie of ook door kleur.
italië
De vlag van het land Italië. Een dergelijk item is er voor elke nationaliteit.
infanterie
Pictogram dat een leger voorstelt.
cavalerie
Pictogram dat vijf legers voorstelt.
geschut
Pictogram dat tien legers voorstelt.
vuren
Pictogram dat legers voorstelt tijdens een gevecht.
exploderen
Pictogram dat een leger voorstelt dat een gevecht verliest.
alaska
De vorm van het land Alaska. Dit wordt gebruikt om het land te markeren. Voor elk land is er een dergelijke vorm. De kleur ervan is niet gebruikt. Daarom is kleurkeuze vrij.
reddices
De rode dobbelstenen zijn gebruikt om het resultaat van het gevecht te tonen.
bluedices
De blauwe dobbelstenen zijn gebruikt om het resultaat van het gevecht te tonen.
mark1
Deze markering wordt toegevoegd aan figuurtjes in gevecht om het aantal legers dat ze voorstellen weer te geven, hier 1. Er is ook een mark2 en een mark3 markering.

Het bestand map-mask.png

Dit is een png-bestand dat ook de kaart van skin´s wereld voorstelt, maar met gecodeerde kleuren zodat iemand elk land apart kan identificeren. Landen moeten tenminste dezelfde vorm hebben als de bijbehorende landen op het kaartbestand map.png. Het png-bestand is zodanig dat gebruikers overal in een zichtbaar land kunnen klikken en de juiste selecteren. Landen met kleine eilanden, zoals Indonesië, in de standaard kaart kunnen groter zijn dan het equivalent in het bestand map.png om de selectie van het land mogelijk te maken.

Een voorbeeld map-mask

De blauwe component (in het RGB model) van een landenkleur identificeert het land: index 0 is land 0 in het bestand onu.xml, index 1 is land 1, etc. Wit (0xFFFFFF in RGB) identificeert de afwezigheid van een land (zeeën of, waarom ook niet, niemandsland).

De knop-afbeeldingen

De bestandsnamen zijn in de code vast ingesteld, u moet ze daarom niet wijzigen. De tabel hieronder toont alle knoppen die aanwezig moeten zijn.

Tabel 2.8. De knoppen van de GUI

AfbeeldingBestandsnaamBeschrijving
newNetGame.pngProbeert aan een netwerkspel deel te nemen.
recycling.pngNadat alle spelers hun legers hebben geplaatst, is het mogelijk om de verdeling te wijzigen (recycling genaamd). Deze knop vraagt om een dergelijke herverdeling te doen.
recyclingFinished.pngGekozen om niet te herverdelen. In alle gebruikersvensters moet op deze knop geklikt zijn om echt de distributie te beëindigen.
nextPlayer.pngBeëindigt de beurt van de huidige speler en schakelt naar de volgende of naar de volgende ronde als de huidige speler de laatste was.
attackOne.pngKiest voor het starten van een aanval met een leger.
attackTwo.pngKiest voor het starten van een aanval met twee legers.
attackThree.pngKiest voor het starten van een aanval met drie legers.
defendOne.pngKiest voor het verdedigen van een aangevallen land met één leger.
defendTwo.pngKiest voor het verdedigen van een aangevallen land met twee legers.
moveArmies.pngKiest om legers tussen twee landen te verplaatsen (laatste actie in de beurt).

De map Sounds

In deze map zijn drie geluidsbestanden aanwezig:

  • roll.wav afgespeeld bij het verplaatsen van legers

  • cannon.wav afgespeeld bij het schieten en

  • crash.wav afgespeeld bij het exploderen van een kanon