Skip to content

Tutorial01

Nicolas Ronvel edited this page Jun 17, 2016 · 9 revisions

Troubleshooting - During the course of this tutorial, it could happen that your template modifications are not updated. First, check your Json code with a tool like Json Validator. Maybe a special character is missing ? This tool will help you find it.

It could also be that something is not working good in the software. Remember that it's still in an alpha version. Create a new Issue and describe your problem, with the name & verison of your browser, the content of your Javascript console (if you know how to get it), and the code of your template.

Tutorial - A simple template from scratch

Welcome to this first tutorial for Geckos, which will explain, step by step, how to create a simple template. The card that we'll create through this process is a card for the Blood Bowl Starplayers. You can then have your own Star Players cards, or have the classic ones with your minis photos on it.

Nobbla, Classic Chainsaw Player

A Blank Template

Let's start with a "blank" template. We need a simple text file, that will be filled with a json object. Just call it myTemplate.json, and open it (with atom.io, notepad++ or another text editor of your choice).

Some fields are required, so we define the card's size, the background, and one field that we'll use to set the name of our Star Players :

{
  "fields": [
    { "name": "name", "label": "Name", "default": "Nobbla " }
  ],
  "canvasFields": [
    
  ],
  "canvasBackground": "#FF0000",
  "canvasWidth": 536,
  "canvasHeight": 750
}

So, this is our starting point. Let's put that template in the Geckos. Open up the demo page, display the Templates pane, and paste the above code in the template area. Click the Set button to validate the changes.

Go back to the Cards pane, and select the existing card. It's been updated but its old name has been kept. Because the default template and the one you created share the same field : name. Finally, Create a new one. Nobbla is there in the list ! It's the default value we set in the field name for our template.

A Background and a Name

Right now, our card is a big red rectangle. That's because our canvasFields section is empty. Using FabricJS (and its kitchensink), we could build the items of the card : stars, boxes, ... But that will be for another card and another tutorial.

Instead, I've got a card background set in a png file. We'll set it as background for our card. Here's the image file we'll use.

As the file is hosted on a web server, we could use its url to use it, and get this image field to add to the canvas (the canvas is where the card is drawn) :

"canvasFields": [
  { "type": "image", "width": 536, "height":750, "src": "http://tof.canardpc.com/view/2346e727-216f-4841-bff4-8041db9d94e2.jpg" }
],

That'll work, but what if the webserver is down ? Or if the image on the server is deleted ? Then, our template becomes useless. And that's not good. But there is a way to embed images into template. It's called DataUrl. The goal here is to translate a file into a string, that the browser will be able to untranslate, getting back the original file.

To achieve this, you can use the DataUrl Maker and drop your file on it to get your DataUrl. The string you'll get will replace the url of the file. It will increase the size of your template greatly, but your template will be self-contained :

"canvasFields": [
  { "type": "image", "width": 536, "height":750, "src": "data:image/png;base64,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" }
],

Paste this new code section in place of the old canvasFields section. Then press the Set button, and watch your card being updated.

We now have the background of our card, but we want to be able to edit it. We already have an editable field with the name variable. We'll work with it. As this is an Input Text Field, it generates a variable with the name $name.

Let's add a textbox element to the card, between the top stars. Why not a text element ? Because the textbox element will allow us more flexibility, with the alignment and the wrapping. Add this code to the canvasFields section, separated from the background image definition with a comma.

{ "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center" }

As you can see, it's pretty simple : we add a textbox, at the position {91, 11}, with a width of 351 pixels, and a text-alignment centered. This render our card name correctly thanks to the variable $name, who gets the value set in the corresponding field. But the text is poorly rendered. The FabricJS documentation lists many properties for the textbox item.

{ "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700 }

We've just added three properties :

  • fill sets the color of the text. It accepts any color in the form of a RGB hexadecimal value.
  • fontFamily indicates which font will be used. It looks on the user font, so make sure it's a common font (or wait for it ...).
  • fontWeight can accept numeric values (400, 600, 800, ...) or text values ("bold", "normal", ...). It defines the boldness of the text.

We've not added a property to set the fontSize. It exists, and is set by default to 40 (see FabricJS doc), and this size is well suited for our needs. But let's set it to 38 to see it in effect. Our whole canvasFields section now looks like this (I've reduced the DataUrl for the code to be easier to read, consider to restore it if you're testing it) :

"canvasFields": [
  { "type": "image", "width": 536, "height":750, "src": ""data:image/png;base64,iVB...." },
  { "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 38 }
],

Our card now displays the name of our Star Player ! If you change it in the left editable field, it changes as well on the card image (as soon as you leave the field). Great ! Let's add some more fields !

What it should look like

Some selection to make

Before considering adding some more editable fields to our template, let's complete the card. The different boxes which will contain the editable values have no text to describe them. We will add them by adding some textbox elements to the canvasFields section. Those elements will not be linked to a variable, and we could have set them on the background image.

But what if we want to make our template accessible to other languages ? We'll just have to change the value of those fields instead of having to edit the image, and get the new dataurl for the background image. So, textbox elements it is !

  { "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 38 },
  { "type": "textbox", "text": "MOVEMENT", "left": 386, "top": 126, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
  { "type": "textbox", "text": "STRENGTH", "left": 386, "top": 218, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
  { "type": "textbox", "text": "AGILITY", "left": 386, "top": 310, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
  { "type": "textbox", "text": "ARMOUR", "left": 386, "top": 402, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
  { "type": "textbox", "text": "TEAMS", "left": 386, "top": 494, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
  { "type": "textbox", "text": "SKILLS", "left": 18, "top": 494, "width": 347, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 }
],

I've repeated the $name field to show you what part of the template I've modified. Don't repeat it. To know where to put those new fields, open up your background image in an image editor, like Paint.NET, and select the area where you want to put your field. The coordinates of your selection are usually shown on the bottom info bar.

No height is set for the TextBoxes, as they auto-adjust their height, depending on how much text they got.

Now, let's think of our 4 fields for the player's attributes : Movement, Strength, Agility & Armour. We could use a text input field, but the user could then put an Agility value of "XX", which is meaningless. We'll opt instead for a dropdown menu, with only the existing and accepted values proposed.

First, we'll go back to the fields section of the template. We'll add four options fields. For each, we define the options that the user will be able to select. Each option has a value and a text. The text is (for now) only used as a way to display the options.

"fields": [
  { "name": "name", "label": "Name", "default": "Nobbla" },
  { "type": "options", "name": "movement", "label": "Movement", "default": "6", 
    "options": [ 
	  { "option" : "1", "text": "1" },
	  { "option" : "2", "text": "2" },
	  { "option" : "3", "text": "3" },
	  { "option" : "4", "text": "4" },
	  { "option" : "5", "text": "5" },
	  { "option" : "6", "text": "6" },
	  { "option" : "7", "text": "7" },
	  { "option" : "8", "text": "8" },
	  { "option" : "9", "text": "9" },
	  { "option" : "10", "text": "10" }
    ]
  },
  { "type": "options", "name": "strength", "label": "Strength", "default": "3", 
    "options": [ 
      { "option" : "1", "text": "1" },
	  { "option" : "2", "text": "2" },
	  { "option" : "3", "text": "3" },
	  { "option" : "4", "text": "4" },
	  { "option" : "5", "text": "5" },
	  { "option" : "6", "text": "6" },
	  { "option" : "7", "text": "7" }
    ]
  },
  { "type": "options", "name": "agility", "label": "Agility", "default": "3", 
    "options": [ 
	  { "option" : "1", "text": "1" },
	  { "option" : "2", "text": "2" },
	  { "option" : "3", "text": "3" },
	  { "option" : "4", "text": "4" },
	  { "option" : "5", "text": "5" }
    ]
  },
  { "type": "options", "name": "armour", "label": "Armour", "default": "8", 
    "options": [ 
	  { "option" : "5", "text": "5" },
	  { "option" : "6", "text": "6" },
	  { "option" : "7", "text": "7" },
	  { "option" : "8", "text": "8" },
	  { "option" : "9", "text": "9" },
	  { "option" : "10", "text": "10" }
    ]
  }
],

Edit your template code, and click the Set button. Under the previous Name field, 4 new fields appears : that's our options fields !

Our new fields

Now, like we did previously, we'll add four new Textboxes in our canvasFields section. Those elements will have a text property set with the variables that are generated by our options. Right now, the only variable generated by an option field is the text of the value property.

So, we add four new fields for our canvas, linked to our four new variables. We use again textboxes, with an adjustment of the color and the size. Here is the added code, the first line being one already existing for you to know where to paste this code :

{ "type": "textbox", "text": "SKILLS", "left": 18, "top": 494, "width": 347, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
{ "type": "textbox", "text": "$movement", "left": 389, "top": 160, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 },
{ "type": "textbox", "text": "$strength", "left": 389, "top": 252, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 },
{ "type": "textbox", "text": "$agility", "left": 389, "top": 344, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 },
{ "type": "textbox", "text": "$armour", "left": 389, "top": 436, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 }

We've now got an editable card, but some fields are still missing. Let's illustrate our card !

Mug Shot

Our Star Player need a photo to be correctly identified. For this purpose, we'll use an Image field. This type of field allows the user to load an image for each card.

Right now, the Image input is pretty basic. But it's planned to evolve. For the moment, the user has to ensure his image file corresponds, in ratio, to the image frame on the card.

To add the Image input field, just add this line to the fields part of the template :

{ "type": "image", "name": "portray", "label": "Portray" }

This field will generate a $portray variable, which will contain the image field in the form of a dataurl (remember ?). Just what we need to add a field image to our canvas :

{ "type": "image", "left": 15, "top": 124, "width": 354, "height":352, "src": "$portray" }

Set the template to update your modifications, and a new field appears.

Select your image file

Load your image and see it on the card :

Nobbla in person !

Skills to complete the card

Three fields are still missing. Let's start with the easier one.

Each Star Player requires a certain amount of Gold Pieces to be recruited. Let's add an input field that will appear in the bottom of the card. The editable field :

{ "name": "cost", "label": "Cost", "default": "80.000 GP" }

And the canvas field :

{ "type": "textbox", "text": "$cost", "left": 18, "top": 684, "width": 504, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 40, "fontStyle": "italic" }

The new thing here is the use of the fontStyle property in the canvas field. It sets the text to italic.

The next input field will be a new one : the Multiline Text Input field. It works like the classic Text input field, but allows the user to add line-breaks. We'll add two fields :

{ "name": "skills", "label": "Skills", "default": "", "type": "multiline" },
{ "name": "teams", "label": "Teams", "default": "All", "type": "multiline" }

We now add two more textboxes that will be linked to these two fields :

{ "type": "textbox", "text": "$skills", "left": 20, "top": 524, "width": 342, "textAlign": "left", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 500, "fontSize": 28 },
{ "type": "textbox", "text": "$teams", "left": 388, "top": 524, "width": 128, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 600, "fontSize": 22 }

Those fields use an automatic wrapping method : lines that are too long are broken to be displayed on several lines.

That's it ?

For this tutorial, yes, that's it. You know have a functional template that allows you to get Star Player cards. Of course, with the help of this tutorial, I encourage you to create your own template for your own needs. I will soon open a place to share the templates, and the demo page will host various templates (when this issue is completed).

If you have any trouble with this tutorial or the software, feel free to ask me for help, via the creation of an Issue, or via a message on a forum in which I'll participate.

Full code of the template

{
  "fields": [
    { "name": "name", "label": "Name", "default": "Nobbla" },
    { "type": "options", "name": "movement", "label": "Movement", "default": "6", 
      "options": [ 
        { "option" : "1", "text": "1" },
        { "option" : "2", "text": "2" },
        { "option" : "3", "text": "3" },
        { "option" : "4", "text": "4" },
        { "option" : "5", "text": "5" },
        { "option" : "6", "text": "6" },
        { "option" : "7", "text": "7" },
        { "option" : "8", "text": "8" },
        { "option" : "9", "text": "9" },
        { "option" : "10", "text": "10" }
      ]
    },
    { "type": "options", "name": "strength", "label": "Strength", "default": "3", 
      "options": [ 
        { "option" : "1", "text": "1" },
        { "option" : "2", "text": "2" },
        { "option" : "3", "text": "3" },
        { "option" : "4", "text": "4" },
        { "option" : "5", "text": "5" },
        { "option" : "6", "text": "6" },
        { "option" : "7", "text": "7" }
      ]
    },
    { "type": "options", "name": "agility", "label": "Agility", "default": "3", 
      "options": [ 
        { "option" : "1", "text": "1" },
        { "option" : "2", "text": "2" },
        { "option" : "3", "text": "3" },
        { "option" : "4", "text": "4" },
        { "option" : "5", "text": "5" }
      ]
    },
    { "type": "options", "name": "armour", "label": "Armour", "default": "8", 
      "options": [ 
        { "option" : "5", "text": "5" },
        { "option" : "6", "text": "6" },
        { "option" : "7", "text": "7" },
        { "option" : "8", "text": "8" },
        { "option" : "9", "text": "9" },
        { "option" : "10", "text": "10" }
      ]
    },
    { "type": "image", "name": "portray", "label": "Portray" },
    { "name": "cost", "label": "Cost", "default": "80.000 GP" },
    { "name": "skills", "label": "Skills", "default": "", "type": "multiline" },
    { "name": "teams", "label": "Teams", "default": "All", "type": "multiline" }
  ],
  "canvasFields": [
    { "type": "image", "width": 536, "height":750, "src": "data:image/png;base64,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" },
    { "type": "textbox", "text": "$name", "left": 91, "top": 11, "width": 351, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 38 },
    { "type": "textbox", "text": "MOVEMENT", "left": 386, "top": 126, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
    { "type": "textbox", "text": "STRENGTH", "left": 386, "top": 218, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
    { "type": "textbox", "text": "AGILITY", "left": 386, "top": 310, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
    { "type": "textbox", "text": "ARMOUR", "left": 386, "top": 402, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
    { "type": "textbox", "text": "TEAMS", "left": 386, "top": 494, "width": 132, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
    { "type": "textbox", "text": "SKILLS", "left": 18, "top": 494, "width": 347, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 22 },
    { "type": "textbox", "text": "$movement", "left": 389, "top": 160, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 },
    { "type": "textbox", "text": "$strength", "left": 389, "top": 252, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 },
    { "type": "textbox", "text": "$agility", "left": 389, "top": 344, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 },
    { "type": "textbox", "text": "$armour", "left": 389, "top": 436, "width": 124, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 36 },
    { "type": "image", "left": 15, "top": 124, "width": 354, "height":352, "src": "$portray" }, 
    { "type": "textbox", "text": "$cost", "left": 18, "top": 684, "width": 504, "textAlign": "center", "fill": "#FFD800", "fontFamily": "Arial", "fontWeight": 700, "fontSize": 40, "fontStyle": "italic" },
    { "type": "textbox", "text": "$skills", "left": 20, "top": 524, "width": 342, "textAlign": "left", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 500, "fontSize": 28 },
    { "type": "textbox", "text": "$teams", "left": 388, "top": 524, "width": 128, "textAlign": "center", "fill": "#000000", "fontFamily": "Arial", "fontWeight": 600, "fontSize": 22 }
  ],
  "canvasBackground": "#FF0000",
  "canvasWidth": 536,
  "canvasHeight": 750
}