FTL

CaptainShooby’s

Modding tutorial 01:

Events and sectors


#1 - Preparation

Start by getting ftldat from github. You can use git and clone it or download it as a zip file from the website. Install ftldat wherever you wish.

I’ve created two Windows batch files to automate ftldat usage. If you want to use them, you should create the following folders inside the ftldat folder:

Download batch files here: mediafire. Extract the zip file into the /ftldat/mods/ folder.

I you can verify that they are not malicious by simply opening them in notepad or such.

Next you’ll need to find your FTL resources folder. It’ll vary depending on your purchase vendor, operating system and installation settings. Try one of the following:

Windows:

OS X:

Once you’ve found the folder, create some backups of the dat files and place them somewhere safe. Next, copy both data.dat and resource.dat to /ftldat/mods/original/.

We won’t actually need the resource.dat file in this tutorial, but you might want to explore it on your own.

All that’s left is to run the unpack_data.bat file and wait for ftldat to finish. In case you didn’t download the batch files, you simply run the following in your CLI of choice:

ftldat unpack original/data.dat dev_data/


#2 - Standard space

First, we need to find an environment to test our own events in. We’ll use the default sector loaded as you start a new game.

Let’s begin by going to the dev_data.dat/data -folder and opening the sector_data.xml -file.

Scroll down the file a bit until you find the STRUCTURE SECTORS part. Here we find our STANDARD_SPACE sector:


We’re going to work non-destructively during this tutorial. Instead of deleting the event elements in STANDARD_SPACE, we’ll comment them out instead. If you want to see the existing events pop up as well, you don’t have to do this.

Now we can add our own event element to the list. This element will work as a link to the actual event we create later on. I suggest you use relatively high values for the min and max attributes, as they define how many beacons in the map will use your event.

You should have something like this:

The name attribute defines the ID of the event this element links to. You can use whatever you wish, but it is important to remember it and use the same one later as we define the actual events.

Note: The startEvent element is not actually used in this case, because the game launches a different one when a new game is started.


#3 - Eventually

We’re done with sector_data.xml for now. Next, find and open up events.xml.

Here, we’re going to define our custom events. You can add these lines anywhere in the file. We’ll start by creating an eventList:

We use the same name attribute as before, which means this element will be linked to the sector we modified earlier.

Inside the eventList element, we define more links to other events. This results in the game picking a random event from this list. Note that we could have just added both of these event elements to the sector instead, but I wanted to show you how eventLists work.

Next, we’ll actually define the KRYTEN and CAT events:

The KRYTEN event displays a text window and adds a random weapon to the player’s ship. The CAT event works similarly, but instead of a weapon, a new crewmember is added aboard the ship.

Extra:

Instead of defining the name of the weapon element as RANDOM, you could have it link to any weapon in the game. Take a look at blueprints.xml and AtillaBosma’s weapon guide linked at the bottom for more information.


#4 - Testing

We have now added our very own custom events to the game and we’ve made it so they should appear in the first sector. It’s time to test our modifications.

First, we need to pack our files back into the data.dat format. If you’re using my batch files, simply run the pack_data.bat and a fresh new data.dat file should appear in the /ftldat/mods/ folder.

Next you simply place this file in your FTL Faster Than Light/resources -folder and overwrite the original one. You did remember to take backups right?

That’s it. Run your game and behold the awe of modding.

As you explore sector one, you should come across the events you added. Note that you may also bump into some neutral events. When there are more beacons than defined events, the game fills in the rest with neutral events. You can find a list of these events in the newEvents file.

Next, we’ll be adding in a new sector.


#5 - Sectorize

We already know how to modify the events a sector uses. Creating a new sector is simply a matter of copying one of the originals and playing around with it. Open up the sector_data.xml again.

This time, we will add our own sectorDescription -element. Look at the other elements for reference and create something like this:

Recap:

Extra:

I am fairly sure the trackList -element defines the background music played in the sector. Modding these fall outside the scope of this tutorial, but you can experiment with sounds.xml and the resource.dat -file if you feel adventurous.


Currently there are quite a few different sector types in the game. If you want to make sure that the game offers yours when travelling from sector to sector, you should make some changes.

Navigate to the beginning of the sector_data.xml and make the following changes:

This disables the original sector types and forces the game to only use your custom one. Next time you travel to a new sector, the game will offer your custom sector in place of the originals choices.

Now, if you changed the startEvent element in your sector, you must also create a new one according to what you defined. I defined it as BLERP_START, so that is what I’ll create next.

Go back to events.xml once again and create your starting event:

Done! Go ahead and test your mod again.


#6 - Future

That’s it for this tutorial. Hopefully, you’ve learned how to create new events and sectors and how linking elements together works. What to do next? That’s up to you.

Modding FTL is still under a lot of research and new discoveries are made all the time. If you want to contribute or learn more, take a look at these links and join the modders!