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 Skin Editor. 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, sprites, etc.)

    • CMakeLists.txt : Beschrijft wat te installeren.

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

    • 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 Skin Editor 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 sprites, 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 (b.v. 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 (b.v. 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 sprites 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 sprites

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 sprite-groep

IngangBeschrijving
breedteDe standaardbreedte van de sprite-frames van de vlag
hoogteDe standaardhoogte van de sprite-frames van de vlag
framesHet aantal frames van de sprite
versiesHet aantal versies van de vlag sprites


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
idHet unieke identificatie van het land (dat een geheel getal moet zijn), moet bij nul (0) beginnen
naamDe getoonde naam van het land
<sprite>-pointElke soort sprite (vlag, infanterist, enz.) 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-sprite-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. Africa)
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 in 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 dat de speler in elk land moet plaatsen
nbCountrieshet aantal landen 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 sprites.

Het bestand pool.svg

U vindt in dit SVG-bestand de kaart en alle sprites 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 sprites. 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-sprites: normaal statische of bewegend kanon, een vurende en een exploderende.

Elke sprite-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 sprite-afbeelding: cannon.png

Voor leger-sprites, 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 sprites moeten op transparant gezet zijn.

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

Tabel 2.7. De elementen van de pool

ElementnaamVoorbeeld afbeeldingBeschrijving
kaart
Kaart van skins's wereld. 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 sprites 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 de kaart. 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 landskleur 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