Skip to content

Characters data files

pionere edited this page Jan 29, 2019 · 1 revision

Every character must have a data file to be used by the game. Base game has a few packs to be used as examples, you can find them in game\content\chars and game\content\rchars. Data files must be in json format.

I suggest to use notepad+ or atom to work with json files, or any other game files.

Unique characters are characters that exits in a single copy, and some of their attributes are set in stone, like class. Random characters can have multiple copies with different names and stats, but use the same pictures base. They have a great deal of randomization in their stats, traits and classes.

In this article I will explain how jsons work.

Unique Characters Data Fields

General Fields

  • "id": unique identifier, mandatory field. Every character should have a unique identifier without spaces (you can use underscore character "_" instead of spaces if needed) that matches the name of the folder with characters pictures. If they won't match, the character will appear in the game, but without a single picture.
  • "name": character first name, mandatory field. It's mandatory because without it the game will use id instead, and usually it's not a good idea.
  • "fullname": full character name, optional field. If a character has additional names, like surname, you could use full name field to set it. It's not mandatory because the game simply will use name field everywhere without it.
  • "nickname": character nick name, optional field. If a character has a nickname of some kind, you can set it here if you want to.
  • "desc": description, optional field. You can write here a short description that will be used at the character personal screen.
  • "gender": character gender, optional field. By default it's female, since the game does not support other genders atm. But it might change in the future.
  • "origin": where is this character from. Like, game or show name. Used to group characters by origin in some cases.

Personal Fields

  • "race": base character race. Since it's close to impossible to code all existing fictional races, we use the system of base races. You can find existing races in game\content\db\traits\traits_races.json. When you create a character, you should pick the closest of them, even if actual character race is different. If you don't know what to pick, or won't pick a race at all, there is Unknown race for such cases.
  • "full_race": actual name of character race. You can write anything here, and it will be visible in the game.
  • "personality": character archetype. You can find existing races in game\content\db\traits\traits_personality.json. Archetype is, generally speaking, mentality and temper. They are based on Japanese terms, since Japanese artists provided us the vast majority of characters with high quality pictures. By default it's Deredere.
  • "breasts": nuff said. There could only be values like "Abnormally Large Boobs", "Big Boobs", "Average Boobs", "Small Boobs". By default it's average.
  • "body": general constitution. Can be Slim, Chubby, Lolita, Athletic or Manly. Slim by default.
  • "color": an optional field, it sets the color of character name in dialogues. You can see the names of available colors in game\library\color.rpy.
  • "what_color": another optional field, it works just like "color", but sets the color for text said by character.
  • "arena_willing": can be true or false. It shows whether character will fight at arena on her own or not.
  • "status": can be "free" or "slave". It's fairy difficult to change the status in game, so pick wisely. IF you don't have this field in data file, status will be selected randomly. Also note that characters with combat classes (ie Assassin, Warrior, etc) will always be free despite this field.
  • "tier": general character power and equipment. Starts from 0. It's not wise to set it more than 4, it can be gamebreaking.
  • "height": character height, ie the size of her sprite in the game. Can be "tall", "short" and "average". It's average by default.
  • "gold": initial amount of gold. It's 0 by default.
  • "location": allows to bind character to specific location. You need to know the internal location name though, so usually you don't want to change it. It's city by default.

Stats and Traits

  • "basetraits": characters classes. A character can have one or two classes, you can find them in game\content\db\traits\traits_class.json

  • "default_attack_skill": the skill character uses in combat without weapons equipped. It's Fist Attack by default, but if for example character battle sprite has a sword, it makes sense to change it to sword attack.

  • "magic_skills": starting spells. By default character has none. You can find all attacks in game\code\be\skills.rpy. These lines should look like

    "default_attack_skill": "Fist Attack",
    "magic_skills": ["Fire", "Fira"]
    
  • "traits": a list of character traits. You can find them in game\content\db\traits, files are traits_body, traits_elements, traits_modificators and traits_skill.

Random Characters Data Fields

Random characters have a bit different structure. They use "random_traits" field instead of "traits". They also don't have some fields like "status" or "tier", those are controlled by the game (see examples in the rchars folder).

General Fields

  • "id": unique identifier, mandatory field. Every character should have a unique identifier without spaces (you can use underscore character "_" instead of spaces if needed) that matches the name of the folder with characters pictures. If they won't match, the character will appear in the game, but without a single picture.
  • "desc": description, optional field. You can write here a short description that will be used at the character personal screen.
  • "origin": where is this character from. Like, game or show name. Used to group characters by origin in some cases.

Personal Fields

  • "full_race": actual name of character race. You can write anything here, and it will be visible in the game.
  • "color": an optional field, it sets the color of character name in dialogues. You can see the names of available colors in game\library\color.rpy.
  • "what_color": another optional field, it works just like "color", but sets the color for text said by character.
  • "height": character height, ie the size of her sprite in the game. Can be "tall", "short" and "average". It's average by default.
  • "gold": initial amount of gold. It's 0 by default.

Stats and Traits

  • "blocked_traits": a list of traits which should not be generated for the character. E.g:

      "blocked_traits": ["Nerd", "Psychic"]
    
  • "random_traits": a list of traits to be generated for the character. A list of trait-chance(%) pairs to be exact. If some traits are mutually exclusive, the game will ignore others if one of them was randomly selected already. These lines should look like

    "random_traits": [
      ["Abnormally Large Boobs", 50],
      ["Big Boobs", 100],
      ["Dawdler", 80],
      ["Not Human", 100],
      ["Slime", 100],
      ["Water", 15]
    ]
    
  • "default_attack_skill": the skill character uses in combat without weapons equipped. It's Fist Attack by default, but if for example character battle sprite has a sword, it makes sense to change it to sword attack.