Flesh and Blood wint als Trading Card Game snel aan populariteit en onlangs kocht ik twee voorgebouwde decks om het spel uit te proberen. Het zou ook geweldig zijn om dit nieuwe spel aan DeckLock toe te voegen, want het lijkt me interessant en ik ben er vrij zeker van dat ik vroeg of laat nog meer kaarten zal kopen.

Voor wie DeckLock niet kent: dit is een op Pelican gebouwd framework dat als eenvoudige statische website een overzicht genereert van de decks die je voor verschillende spellen bezit (bekijk de demo). Dat kwam aan bod in eerdere artikels (deel 1, deel 2 en deel 3) en momenteel worden Gwent, KeyForge en Magic: the Gathering ondersteund. Omdat Flesh and Blood snel groeit (en ik zelf enkele voorgebouwde decks kocht), is het tijd voor een update die ondersteuning voor dit nieuwe spel toevoegt.

Naast de ondersteuning voor FaB kwamen er tal van kleine toevoegingen aan het framework. Omdat die op zichzelf geen artikel rechtvaardigen, licht ik ze op het einde kort toe.

Flesh and Blood toevoegen

Net als Magic: the Gathering is Flesh and Blood een TCG met fysieke kaarten, dus decks toevoegen gebeurt op een vergelijkbare manier. Er zijn nog niet zoveel bronnen voor FaB, maar gelukkig kun je met FaBDB.net online decklijsten maken en biedt de site een API om kaartgegevens op te halen. De code lijkt sterk op die van deel 2, maar is beter gestructureerd. Omdat je ze op GitHub vindt, hoeven we er hier niet diep op in te gaan.

Update (november 2025): FaBDB.net werd inmiddels stopgezet en is niet langer online (de link verwijst nu naar een gearchiveerde momentopname). Daardoor gebruikt DeckLock de API niet meer. Flesh and Blood-decklijsten worden nu als handmatig geschreven .fab-tekstbestanden bijgehouden. De uitleg hieronder blijft staan als historische context, maar de links naar fabdb.net werken niet meer.

Het formaat voor decklijsten is vrij eenvoudig als je dit met de hand wilt doen:

Deck build - via https://fabdb.net :

Prism Blitz Precon

Class: Illusionist
Hero: Prism
Weapons: Iris of Reality
Equipment: Dream Weavers, Halo of Illumination, Heartened Cross Strap, Spell Fray Leggings

(2) Herald of Protection (red)
(2) Herald of Ravages (red)
(2) Herald of Rebirth (red)
(2) Herald of Tenacity (red)
(2) Illuminate (red)
(1) Phantasmify (red)
(1) Prismatic Shield (red)
(2) Seek Enlightenment (red)
(2) Wartune Herald (red)
(2) Enigma Chimera (yellow)
(1) Herald of Judgment
(1) Merciful Retribution
(1) Ode to Wrath
(2) Rising Solartide (yellow)
(2) Enigma Chimera (blue)
(2) Herald of Protection (blue)
(2) Herald of Ravages (blue)
(2) Herald of Rebirth (blue)
(2) Herald of Tenacity (blue)
(2) Illuminate (blue)
(2) Spears of Surreality (blue)
(2) Wartune Herald (blue)
(1) The Librarian

See the full deck at: https://fabdb.net/decks/GkNKXvRA/

Deze bestanden moet je als een .fab-bestand in de map content opslaan. De nieuwe klasse FaBReader doet dan haar werk en voegt het deck aan de website toe. Werken met Pelican biedt veel flexibiliteit, maar heeft ook een steile leercurve en persoonlijk vind ik het moeilijk om de code goed te structureren. Tijdens dit werk merkte ik wel dat het bij het maken van Pelican-plugins belangrijk is om functies eenvoudig te houden, met één duidelijke taak, en verantwoordelijkheden van elkaar te scheiden. Dat is algemeen goed programmeeradvies! Ik merkte ook dat ik dit bij de andere spellen niet zo goed had aangepakt … Er zal dus binnenkort wat geherstructureerd moeten worden.

Weergave van een Flesh and Blood-deckpagina

Zoals je op de bovenstaande afbeelding ziet, is de ondersteuning voor FaB nog eenvoudig, maar ze wordt mettertijd uitgebreid!

Andere verbeteringen

Er kwamen in heel DeckLock enkele visuele wijzigingen, met hier en daar wat extra grafieken. De KeyForge-deckpagina’s beginnen er degelijk uit te zien, maar voor de andere spellen is er nog wat werk aan de winkel.

Weergave van een KeyForge-deckpagina

Voor MtG en FaB werd een visueel overzicht van de decks toegevoegd. Voor sommigen is dat misschien een interessantere manier om een deck te bekijken dan een geschreven decklijst.

Visuele voorstelling van een MtG-deck

Een belangrijke wijziging is de toevoeging van een GitHub Action die de website bouwt zodra wijzigingen worden vastgelegd. Dat maakt aanpassingen eenvoudiger, omdat je ze rechtstreeks op GitHub kunt uitvoeren zonder lokaal iets te installeren. Het framework wordt zo ook toegankelijker voor mensen zonder Python-kennis, al blijft een degelijk begrip van de werking van GitHub nodig. Dit moet nog verder getest worden en de werkwijze zal in de documentatie worden beschreven.

Toekomstige updates

De code herstructureren en documenteren: dit was een leerproject en op veel plaatsen kan en moet de code beter voor we verdergaan. Veel code bevindt zich nog in het stadium waarin iets geschreven werd om het aan de praat te krijgen, maar fraai is het niet. Nu GitHub Actions worden gebruikt om de website te bouwen, zou ook de installatie vrij eenvoudig moeten zijn, zelfs voor wie geen Python kent (fork de repository, voeg inhoud toe, voer een commit en push uit en de actie doet de rest). Dat staat echter nog niet in de documentatie.

De lay-out heeft veel werk nodig. Momenteel is het grotendeels de standaard-Bootstrap met een beetje aangepaste CSS en, op enkele pictogrammen na, heel weinig grafisch materiaal. Iemand met betere ontwerpvaardigheden kan dit flink verbeteren. Ben jij zo iemand, lees dan hieronder hoe je kunt bijdragen!

Hoewel ik niet te veel functies van andere websites wil nabootsen, zouden hier en daar enkele belangrijke grafieken om een deck te analyseren wel handig zijn. Ook statistieken over meerdere decks heen kunnen de deckoverzichten interessanter maken: welke kaarten populair zijn, hoeveel kaarten gebruikt worden, …

Wil je bijdragen?

Helaas heb ik niet zoveel tijd om hieraan te werken als ik zou willen. Vooral pictogrammen maken en pagina’s ontwerpen kost mij veel tijd. Als iemand dit project sneller wil zien groeien, zijn er dus zeker manieren om te helpen!

  • Er bestaan heel wat andere TCG’s en ik heb geen tijd om ze allemaal toe te voegen. Als je wat Python kent en dit ook voor Yu-Gi-Oh!, Pokémon, … wilt, kun je waarschijnlijk helpen om ondersteuning voor een nieuw spel toe te voegen
  • Als je goed bent in logo-ontwerp, zijn er nog heel wat pictogrammen die je kunt toevoegen …
  • De lay-out is erg eenvoudig; iemand met webdesignvaardigheden kan die helpen verbeteren
  • De documentatie kan altijd worden uitgebreid
  • Gewoon feedback geven helpt al om de prioriteiten te bepalen

Wil je bijdragen, neem dan contact op via e-mail, Twitter, … (bekijk de contactpagina). Je kunt het project ook op GitHub vinden en beginnen programmeren. Ik aanvaard met plezier PR’s, hoe klein ook.

Code

Alle code voor DeckLock staat op GitHub: https://github.com/4dcu-be/DeckLock. Je kunt ook de demo bekijken met de decks die ik bezit en graag speel, verspreid over de verschillende spellen.

Juridisch

DeckLock is onofficiële fancontent. De letterlijke en grafische informatie over Flesh and Blood, Gwent, KeyForge en Magic: The Gathering in dit project is auteursrechtelijk beschermd door respectievelijk Legend Story Studios, CDPR, Fantasy Flight Games en Wizards of the Coast, LLC, een dochteronderneming van Hasbro, Inc. DeckLock en 4DCu.be worden niet geproduceerd, aanbevolen, ondersteund door of geassocieerd met een van deze entiteiten.