Modding Help How do you add custom races?

Discussion in 'Starbound Modding' started by Spammerman, Dec 19, 2013.

  1. Spammerman

    Spammerman Aquatic Astronaut

    I'ts been really frustrating that there's absolutely no tutorial or really any information on how to add combine multiple mods to a race mod loader. Like ZERO.

    I've mucked about with three different race loading mods, but I just can't seem to be able to get more than one or (at most) 2 races to actually run properly. It's left me extremely frustrated.

    Normally it just crashes out on load. Sometimes, it'll get as far as being able to select a new character's race, but it won;t be there, or it'll crash as soon as I select one.

    And if by some miracle the races are actually there, and I can actually manage to create one, then as soon as I try to play it, it either crashes, or it gives me the damned "client-server connection no longer valid" error.

    I've edited the Index in the species\<race>.species files so they were properly sequential.

    I've gone into the \<race>\interface\windowconfig\charcreation.config and made the "id" the same as the index.

    I've gone into the \interface\windowconfig\charcreation.config and inserted the "textLabels" info over from the mod's charcreation.config file and then inserted the "id" section from the race's charcreation.config.

    Then for the race loaders that had a universe_server.config I added the dropship.structure line.

    I've double and triple checked formatting (I use Notepad++ so that helps). I've double and triple checked comas. Nothing works.

    Jesus h. Christ on a Go-Kart.... What the hell am I doing wrong?
    Last edited: Dec 19, 2013
  2. Shadewarp

    Shadewarp Pangalactic Porcupine


    This is my file structure for my Grey race
    Basically, these all need to be in your race, even if you don't want to change them. They need to be there.
    For example, codex needs to be there, but you can just change the name of the codex file, and refer to the human or what ever afterwards.
    Quests is the same, you need the first quest part to be named as your race, then the rest of the tutorial is default.
    Ships isn't really needed, as you do the reference (as you have) in the universe_server
    You also need the player.config, to contain your race...

    The best you can do, is to download a race in the mods section, and check out how they have done it. :)

    Here is mine:

    Attached Files:

  3. Spammerman

    Spammerman Aquatic Astronaut

    Yeah, I've gotten that far. But when it comes to trying to add multiple races and getting them to load, everything falls apart.
  4. Jack Nief

    Jack Nief Phantasmal Quasar

    I feel your pain, I've been trying to get Argonians, Kaenid and Felins to all load together. No such luck, "client-server" error with me.... still better than a Crash To Desktop at least. However, I have gotten the Argonians to load with the Grey with no problems, so its a start.

    I'm under the impression that it's trying to call the 'broken' race's dropship.structure, but can't for some reason, since investigating the player folder shows no ships for the 'broken' characters. This isn't backed by anything, but its something I've noticed.

    Is it possible there might also be issues with the quest/codex data for those races? There's more data in those which call upon collective 'race' data.
    Last edited: Dec 19, 2013
  5. tifel100

    tifel100 Void-Bound Voyager

    You guys probably didn't do 1 of the following:
    Edit the race.species to fit the correct index.
    Edit charcreation.config to have the top line about the race, like Skin color, Hair and such.
    Edit charcreation.config to put the correct racefemale.png for that index.
    Edit charcreation.config to move the buttons(You can use kawa's 26 slots mod for this part)
    The | Suit likes this.
  6. Shadewarp

    Shadewarp Pangalactic Porcupine

  7. LadyKianna

    LadyKianna Big Damn Hero

    I suspect the problem might be the race IDs, make sure they're not all labeled as '6', give them each a unique ID.

    If not, maybe you can post some of your code and we'll be able to figure out the problem that way.
  8. Jack Nief

    Jack Nief Phantasmal Quasar

    I'm fairly certain that these aren't the issue. For the charcreation.config stuff, if there was conflicting or missing information (i.e. mislabeled a race id number in species and charcreation files, or didn't put down the 'race line') it would Crash to Desktop, but I've gotten all these races to show up AND gotten characters made, the problem is getting these characters playable without "client-server" time outs. My early attempts of race grouping always wound up with crashes since I failed to adequately 'combine' race information for each race mod. (For example, despite having both folders' charcreation.config having the correct id listings, they only had their own Top Lines, since calling either one would bring the other into conflict, the game would Crash to Desktop.)

    It's possible there's a space, or tab, somewhere in the data lines where there's not supposed to be. Since the game doesn't directly Crash to Desktop when selection a 'Bad Race' and instead only gives a "client-server" error, it leads me to believe that there's a mistake in the information being called up, not in the command scripts themselves. Its trying to call on data which doesn't technically exist. It can't be in the command scripts, otherwise there would most certainly be a crash. One time I had a single space too many in one of the command scripts, and the game would crash just after the ChuckleFish Logo. Finding and removing this single space made it run fine. I'll continue to data-mine and test whatever I can to make it work. I've already gotten two races to run together without error, it's only a matter of time before I get the others.

    TL;DR: Most of those issues would have me crash, but it's not crashing. Will investigate further.

    I'm actually currently using that one right now! :p The Argonian race actually has it set up as a necessary file. I can edit this later if I need to use Kawa's for the quick organization, though.

    I'll try to do that when I get to my PC, currently posting from my laptop, and that can't really run Starbound.
    Last edited: Dec 19, 2013
    LadyKianna likes this.
  9. tifel100

    tifel100 Void-Bound Voyager

    You said this, yet to LadyKianna's post, you said you'll try it, which was 1 of the issues I suspected you have..
  10. Spacerogue

    Spacerogue Void-Bound Voyager

    honestly the 'client server' thing doesn't seem to be a bother except for a minute of your time wasted , I'm making a race as well and after char creation it does that, but when you get back to the selection screen the character is there anyway, and you can play no problem. (tho I'll go hunt for that extra space now pfff)

    I do agree that something is amiss, but I suspect its just SB crashing because 'early beta' syndrome.

    The only race extension mod I can get to work is Kawa's , and getting other races into there (except my own) just goes wrong.
    as for this one
    looks great, wish it would work but it doesn't for me.
  11. Jack Nief

    Jack Nief Phantasmal Quasar

    I meant posting my code.

    Speaking of posting code, I seem to have had an epiphany.

    These race files all draw information from their own data files (i.e. species.config), located in selective racial folders. However, there is also a number of files which they call on which are universally used between the races. For example, the universal.config, the player.config, the ship.config, the codex.config, the quest.config and, most infamously of all, the charcreation.config.

    (most of these are probably incorrectly named, bear with me, I'm not at my PC yet)

    With every change you make to these files in one race's folder, you have to go into each and every other race's folder and make the exact same changes. If even one of these files has something wrong with it, they may as well all be wrong. And the chances of something being wrong increase with every additional race added. If you had seven additional races, you'd have to edit and check 49 or so individual files for possible errors.

    Why not have them all in their own single folder? Since the mod data is calling from all folders anyways, having all these 'universal files' in one location saves on the amount of work you'd have to do as a whole, and rather than becoming more migraine-inducing with every race, it just becomes the editing of 6 or 7 text files.


    Hail to the motherf:saywhat:ing KING, Baby. My hypothesis was correct, and for my efforts, I've now got the Argonians, the Felins and the Kaenid all playable, quests and all. How?

    Well, in each individual race folder, you'll find something like this:


    Each of these has a line of code near the top...

     "kind" : "argonian",
      "index" : 6,
      "nameGen" : [ "/species/argoniannamegen.config:names", "/species/argoniannamegen.config:names" ],
    That "index" : 6 is very important. For each race we have to increase it by 1.

    The Felins would be
    "kind" : "felin",
      "index" : 7,
      "nameGen" : [ "/species/felinnamegen.config:names", "/species/felinnamegen.config:names" ],
    And the Kaenid would be
      "kind" : "kaenid",
      "index" : 8,
      "nameGen" : [ "/species/kaenidnamegen.config:names", "/species/kaenidnamegen.config:names" ],
    Simple enough, right? Congratulations, you've done all the hard work.

    Each and every race also calls from five batch files. (Not six, my mistake)

    ModFolderNameHere/player.config (this controls the "species" data, amongst other things)
    ModFolderNameHere/universe_server.config (this controls the race's "ship" data)
    ModFolderNameHere/codex/codex.config (this controls the race's starting journal info)
    ModFolderNameHere/interface/windowconfig/charcreation.config (this is the little motherfo_Oer who's giving everyone a hard time.)
    ModFolderNameHere/quests/quests.config (this controls the race's quest information)

    I've separated these five primary batch files from the race folders into their own, meaning the modded races don't have these in their folder. That way, there's only one of each file, rather than 18 individual files to screw around with for all three races. Here's how it'd be set up for each config file....

    PLAYER.CONFIG (only need to update one line)
      "defaultHumanoidIdentity" : {
        "gender" : "Male",
        "hairType" : "male2",
        "color" : [51, 117, 237, 255]
      "species" : [ "human", "glitch", "hylotl", "apex", "avian", "floran", "argonian", "felin", "kaenid" ],
    UNIVERSE_SERVER.CONFIG (add in each race's ship line)
      "mainWakeupInterval" : 100,
      "clockUpdatePacketInterval" : 500,
      "clientWaitLimit" : 40000,
      "updateMeasureWindow" : 60000,
      "storageTriggerInterval" : 60000,
      "maxBehindUpdates" : 30,
      "connectionTimeout" : 60000,
      "socketTimeout" : 60000,
      "worldInactiveShutdown" : 30000,
      "speciesShips" : {
        "apex" : "/ships/apex/dropship.structure",
        "avian" : "/ships/avian/dropship.structure",
        "floran" : "/ships/floran/dropship.structure",
        "human" : "/ships/human/dropship.structure",
        "hylotl" : "/ships/hylotl/dropship.structure",
        "glitch" : "/ships/glitch/dropship.structure",
        "argonian" : "/ships/argonian/dropship.structure",
        "felin" : "/ships/felin/dropship.structure",
        "kaenid" : "/ships/kaenid/dropship.structure"
    CODEX.CONFIG (add in each race's codex list)
      "refreshInterval" : 2.0,
      "initialcodex" : {
        "glitch" : [ "controls", "glitchprologue", "glitchorigins", "glitchnotes" ],
        "human" : [ "controls", "humanprologue", "humanorigins", "humanescape" ],
        "avian" : [ "controls", "avianprologue", "avianorigins", "aviannotes" ],
        "apex" : [ "controls", "apexprologue", "apexorigins", "apexplea" ],
        "floran" : [ "controls", "floranprologue", "floranorigins", "floranambition" ],
        "hylotl" : [ "controls", "hylotlprologue", "hylotlorigins", "hylotldirective" ],
        "argonian" : [ "controls", "argonianprologue", "argonianorigins", "argoniannotes" ],
        "felin" : [ "controls", "felinprologue", "felinorigins", "felinambition" ],
        "kaenid" : [ "controls", "kaenidprologue", "kaenidorigins", "kaenidnotes" ]
    QUESTS.CONFIG (add each race's quest parts)
      "refreshInterval" : 2.0,
      "initialquests" : {
        "glitch" : [ "glitchtutorial.gearup" ],
        "human" : [ "humantutorial.gearup" ],
        "avian" : [ "aviantutorial.gearup" ],
        "apex" : [ "apextutorial.gearup" ],
        "floran" : [ "florantutorial.gearup" ],
        "hylotl" : [ "hylotltutorial.gearup" ],
        "argonian" : [ "argoniantutorial.gearup" ],
        "felin" : [ "felintutorial.gearup" ],
        "kaenid" : [ "kaenidtutorial.gearup" ]
    and lastly, CHARCREATION.CONFIG (this is the most important one, and requires two sections be edited)
      "textLabels" : [
    then scroll down to where the IDs are. These IDs "positions" are not every important, they come preset since I'm using Kawa's Extended Character Creator instead of Xanau's Simple Extended Character Creator. The difference wouldn't be much, for argonian it'd be "208, 0" for felin it'd be "235, 0" and for the kaenid it'd be "262, 0" for the next line down it'd be 208, -26" etc, etc.

              "id" : 6,
              "image" : "/interface/title/argonianfemale.png",
              "position" : [162, 0]
              "id" : 7,
              "image" : "/interface/title/felinfemale.png",
              "position" : [189, 0]
              "id" : 8,
              "image" : "/interface/title/kaenidfemale.png",
              "position" : [0, -26]
    After that, you should be done, and everything should be working fine! Adding another race is as simple as updating the five primary files accordingly, and editing the race's .species file ID number!
    Last edited: Dec 19, 2013
    LadyKianna likes this.

Share This Page