Fallen Aces

Fallen Aces

51 ratings
Fallen Aces SDK and Workshop Documentation
By Metadata Rosenberg and 2 collaborators
This guide is a work-in-progress documenting the Fallen Aces SDK and its functionality.
3
2
2
   
Award
Favorite
Favorited
Unfavorite
AceEd Documentation V.0.8.7
Foreword
Hello, thanks for playing Fallen Aces. This is documentation for the official map editor used to create all the levels seen in the game. All the tools present within the editor that were used to create the currently available levels are now yours to start creating your own maps. The editor is a work in progress as we create more features for the game and we plan to improve and iterate on it more as development of the game moves forward. Below you find a basic rudimentary guide on how the editor works and tips on how to start creating your own maps. We are very excited to see what kind of maps the fans will make, with that said let’s get started.

Google doc with full resolution gifs and images available at the following link:
https://docs.google.com/document/d/1SOrvt40jvKH5q_q5Z6tRbVq7W-dCM5W5kkghOdSy5fw/edit?usp=sharing

☠︎︎ Warnings and Disclaimers ☠︎︎
As previously mentioned, the Fallen Aces SDK is a work-in-progress. Creators should know that saves made on custom maps may not load correctly if additional changes are made. Custom maps can also utilize level flags, these can conflict with existing base game flags and cause issues with your profile. If you're using utilizing profile flags in your custom map, please prefix them with the name of your mod to avoid any conflicts with the base game!

If you plan to utilize advanced SDK features or play a lot of custom maps, we highly recommend making a new profile in-game separate from your main story profile. Add "mod" somewhere in the profile name so you don't forget which is which!


Editor Hotkeys
Hotkeys
WASD - Movement
Pgup - Undo
Pgdown - Redo
Tab - Switch between cursor and look mode in 3D view
T - Toggle props on and off
G - Toggle fog on and off
F - Toggle fullbright on and off
Q and E - Decrease and increase camera speed/Increase and decrease texture plane speed
F1 Fullscreen
1 - Vertex mode (2D)
2 - Lines mode (2D)
3 - Sector mode (2D)
4 - Things mode (2D)
5 - 3D view mode
` - Deselect in 3d view.
Ctrl C + Ctrl V - Copy and paste
H - Disable Highlight
Shift + Right Click - Rotate Sector
Glossary
Glossary of Terms
Vertices
Draw Tool
Lines
Sectors
Things
Search
3d Mode
Fog
Fullbright
Disable Highlight
Pointlights
Script
Trigger
Grid Size
Layer
Events
Setting Up Game Directory
When you first boot up AceEd, the editor must be able to have a correct path to your Acesdata folder. Your Acesdata folder is within your Fallen Aces folder directory and is typically found in your steamapps folder. Ex: C:\Steam\steamapps\common\Fallen Aces\AcesData Or if your game is outside of steam or in another folder just copy the correct path to your AcesData folder. Ex: W:Chungus\Fallen Aces\Acesdata. You won’t be able to properly make maps unless this step is completed.
Saving Your Map
To save your map file you press the save button in the upper left hand corner of the editor. The editor will then direct you to where you wish to save your map file. You must locate your Acesdata folder. Select it then select Episodes. Within this folder you will see Episode folders, these are folders containing maps from the main campaign, but ignore those for now. You create your own episode folder with a name of your choosing. Let’s use Wiseguy as our episode name.

Inside your Wiseguy folder you will then type in Wiseguy again for a new subfolder, this is where you will save your map. Decide what you want your map to be called. Let’s use Wiseguy again for consistency.

Once you save your map. The editor will automatically make a Backups folder. This is where the editor will automatically make backups of your map in case something happens to it like it becoming corrupted or you messed something up. You can always use one of these older backup maps to recover what you’ve lost.

This is what your Wiseguy folder should look like

And this is what the inside of what your Wiseguy folder should look like which will contain your saved map file. So the path would look something like:
Fallen Aces\Acesdata\Episodes\Wiseguy\Wiseguy

NOTE: Make sure your map is in it’s own episode folder or it will not show up in the episode select screen on the main menu.

Okay now that your map is saved you will want to create a textfile named episodeinfo. Or simply copy and paste episode into another folder and change the contents inside as you see fit.

Now in the episode into the document you will type this as seen above. Your title in between the parentheses can be anything but it’s best to name it what you named your map as it’s what will be seen when you load your map from the start screen.Make the changes to your document, save and close.


Your map will need a custom poster when selecting it from the episode select menu. Any PNG will do. Just paste an image in your first wiseguy folder and name it “poster” it is recommended that you use 965x1291 for the poster size.

Inside of your wiseguy subfolder you need to create a text file called chapterInfo. Within it you need to type out as follows

Title = “your title”;
Order = 0;
World_file_name = “wiseguy.txt”;

Your title will be the name that shows up on the loading screen. Order is what priority your map is in the selected order of maps (This is good for if you are making multiple maps in an episode and wish to have them played in a certain order)
And the world file name should match your map file name exactly.

You will repeat a similar step you did before for the loading poster except this time inside the Wiseguy folder that contains your map file. You will place a png to use as your loading screen background. Name it loading. Recommended size is 1920x1080


That’s it. Your map has been set up and should be able to be properly loaded from the episode menu within the game.




Sectors
Sectors
Playable areas in Fallen Aces are made up of sectors, which are versatile spaces that have walls, a ceiling, and a floor. Sectors are defined by vertices, points that determine their shape, and lines that connect the vertices, representing walls. A sector can be a room, an outdoor area with a sky, an obstacle in the environment, or even an elevator platform. There are two types of sectors: standard and inverted. Standard sectors act as a space the player can walk around in, such as the aforementioned room or outdoor area. Inverted sectors are the opposite, typically defining a space where the player can't go.
Creating a Basic Map
Creating a Basic Map

Basic Sectors
This is a guide on creating your first basic Aces level. If you find yourself needing guidance on more advanced features, referencing the official in-game levels is a good way to learn more about the editor - as well as simply asking for advice or help in the New Blood discord.

First create a map by selecting the sector draw tool and drawing a square. Vertices of a sector are placed using left click, and the sector creation is confirmed by right clicking. You can select the vertices at each corner of the sector with left click and drag using right click to increase and decrease its size relative to the sector grid.

(Advanced tip: At times, you may find that various sectors may overlap in vertices. For example, in detail-dense levels or two buildings standing right next to each other with no space in-between. If you didn't use layers, their vertices may be difficult to select individually. For this, you can switch between which sector’s vertices you’re trying to choose by pressing Alt while hovering over the vertices in question. This can also be used for overlapping things, like lights or enemies.)



Once a sector has been made, you want to place the player camera inside of the sector. To do this you will select things/add and a blue question icon will appear beneath your mouse. Left click where you wish to place the player camera. Right click the object you just placed and select the definition ID, then select Mike from the Misc category. Once placed, this will be where the player will start when the level is loaded.

You can change the direction of the player or any prop placed by selecting the angle icon and moving the angle line in the direction you wish it to face.

Now, let’s give the sector some basic texturing.

There are two ways to give a sector textures. The first is to enter Sector mode (3 on your keyboard) and right clicking the desired sector. The second is to enter 3D View (5 on your keyboard) and right clicking the sector while looking at it. This will bring up the Sector’s properties menu, where you’ll need to click the image under “Floor texture” or “Ceiling texture”.


Now, click on the image after the “path” line and you’ll be able to select any texture from the texture picker.


Once you apply the ceiling and floor textures, you’ll also need to texture the walls of the sector. This, once again, can be done either from the 2D view or the 3D view. In the 2D view, select the Lines mode (2 on your keyboard), then right click any line, which represents the walls of the sector. This will show the Line properties window, where you can select the texture for your wall the same way you did for the floor and the ceiling.


In 3D view, you simply need to right click any wall you’re looking at.

It may be inconvenient to apply textures to each wall or sector individually. You can select multiple lines or walls at the same time with left click, then right click once all the desired lines/walls have been highlighted with red. If you’re using the 2D view, you can even hold left click and drag to box select multiple lines at once. Changes you made in the properties menu will be applied to all the selected lines/walls.”

In 3D view, you can hold shift + left click, then drag to select multiple surfaces at once.

You can also copy-paste textures by selecting the wall you want to copy the texture from, press Ctrl+C, select whichever walls you want to apply the textures to, and press Ctrl+V.

Now, let’s add some sectors connected by a hallway. Sectors, when drawn with overlapping lines, will be directly connected to each other. We can use this to easily make multiple connected rooms. The brown lines of a sector indicate a solid wall, the blue lines indicate where two sectors are connected.

You may want your sectors to have different floor/ceiling heights. Those can be changed in two ways. The first is by going into sector properties (the same menu we used to give the sector textures) and manually inputting the numerical height, measured in units. These numbers can
be negative as well.


The second way to change floor/ceiling height is in the 3D view. You may notice a panel at the bottom with various options. The ones we want selected are Position and “Y Axis Controls Height.” This lets us change the height of any sector/thing in 3D view by selecting them, holding right click and moving the mouse up or down.

When trying to texture the part of a sector that connects to another sector, you may notice that it has more than just one surface available for texturing. Specifically, the “Middle”, “Upper” and “Lower” parts. The middle part of the connected sector is invisible by default, but we can texture the upper and lower parts provided they are visible to the player. You can either copy-paste textures onto these surfaces using the method above, or manually select the “Upper” or “Lower” sections of the Line menu shown in the screenshot to pick their textures individually.


Another thing to note is texture alignment. You may find some of your connected walls have misaligned textures, which we can fix by selecting all the walls that need alignment, then pressing “Tab” to switch to cursor mode and pressing “Auto Align” in the bottom panel.

There can be situations where you want a wall to be invisible. For example, if you’re making an outside area you may not want the ceiling or walls to be visible. To make them invisible, right click them to open the property menu and then click on “Plane Options”. From there, uncheck the “Visible” and/or “Solid” properties.


You may also wonder what happens if we make the ceiling have a higher height than the floor, or if we drag the ceiling beyond the floor in 3d view (and vice versa).

This creates an inverted sector. Thus far, we’ve been working entirely with normal sectors, which work from inside-out, meaning the playable area is inside the sector. Think of it as being on the inside of a cube, with all the walls inside being textured.

An inverted sector is the opposite. We can use inverted sectors for a large variety of things, from detail to making entire playable areas entirely out of inverted sectors. Normal sectors may help you quickly make interiors or large outside areas, while inverted ones can help with making platforms, multiple floor buildings, roofs, and many other things.

After you’ve got a few textured rooms, it’s time to start looking at lighting.
Creating a Basic Map (Lighting)
Lighting


There are a couple features you can use to give your rooms light. The first is by directly coloring
a sector by right clicking it and selecting the “Lighting” option, then using the color picker and sliders to customize the way your sector looks (NOTE: The sector will not change color until you click the X in the top right of the color picker after you’re done).

You can also change the lighting of a specific surface inside the sector by right clicking it, selecting “Plane Options” and checking the “Override Lighting” box. This lets you set the color of that specific plane independent of the sector’s color and light settings.


The second option is to use PointLight entities, which can be found in the “Things” menu (4 on your keyboard)


You can then edit the newly created light in numerous ways - its radius, intensity, color, and even being able to turn the light on/off based on event triggers.


Note: you can use Fullbright mode for better visibility while mapping by pressing F on your keyboard or clicking the icon in the top panel. You can also disable point light preview in the same panel.


You may want to change the existing sector to have more cuts or subsectors to be able to create more intricate shapes or height variations inside sectors. This is where the Cutout Tool will help you. You can select it in the “Sectors” tab above, then left click to start drawing a line in a sector, with right click confirming the last vertex you place. This creates a cut in the sector.

The cut tool has a large variety of uses - in this example, it’s used to create a set of stairs from an existing sector.

One last thing to mention regarding making geometry is the Layer system. On the bottom right you can see the layers currently present in the level - the plus sign can create additional ones, while the minus removes the currently selected layer.

This feature helps you separate geometry and objects into their own individual layers, meaning you can organise your work more efficiently and avoid causing unintentional damage to sections of the map you’re not currently working on. This is also essential for making buildings or structures with multiple floors - as it is very difficult to make all the room-over-room geometry on the same layer.

In order to start working on an existing layer, simply click it in the bottom right menu. You can make unselected layers visible without being intractable by pressing the eye icon to the right of the layer. To rename a layer, double click the text.


This covers most of what you need to know regarding basic geometry creation and editing.

Creating a Basic Map (Events)
Events

Levels can also have Events. To put it simply, events are things that the player or the entities in the level can trigger or make happen. For example - spawning enemies when walking over a sector, making an enemy break a door, make an enemy play a voice line, move elevators, trigger scripts, and much more.

To add an Event, select any Thing in the level that can have events attached to it (for this example, we’ll choose a door) and click the “Events” tab in its properties menu. Press the magnifying glass icon next to any of the event types - in this example, we’ll be adding an event on open. You can then add new events by pressing the + icon in the top right of the menu.


We can now type the event number into the “Event on open” field.




Now, let’s place an enemy in the next room over and give him an event as well.






This setup will now spawn the enemy as soon as the player opens the door.
Creating a Basic Map (Cutout Tool)
Using the Cutout Tool
The cutout tool can be used to cut out shapes and geometry from pre-existing sectors. This tool is recommended if you are planning on creating anything within a sector, or connecting 2 sectors with a doorway or window.

Creating a sector within another without using the cutout tool may result in Z fighting, so it is recommended you use the cutout tool to avoid these problems.
Creating a Basic Map (Things and Doors)
We can now start placing down some more entities. You may remember we placed the player and point light by using the Things menu (4 on your keyboard), which we’ll use again to start placing down enemies, weapons, doors, props, and so on. Simply create a Thing using said menu and use the search bar to find what you require for your level.

Some Things may have unique functionality to them. For example - decals (like posters, leaves, newspapers) require their angle to be facing the surface they’re applied to. The white line coming out of the decal’s position gives you a clue on where it’s currently facing.


Doors
To create a door. Simply place a door object within your map and then set it’s height/length and thickness. Doors will vary in size but for regular human sized doors somewhere between H:2.5 L:1.6 - H:2.8 - L: 2 is recommended for proper proportions.

Under Type you can select how you would like your door to open and close. For example if you wanted a swinging door or sliding door.

Swinging Door
If a swinging door is chosen, you can set the swing limits in the options. This chooses which directions you wish the door to swing open to. If for example you would want the door to open inwards only you choose forward only.

Shrinking Door
A shrinking door effect can be used for things like curtains or security gates that fold in on themselves

Sliding Door
The direction a sliding door can open can be chosen from the direction option and the speed and time in which it can be opened can be set here.

Effect Set
An effect set will choose what type of sound the door will make when opened. For example a wooden door making a wood sound or a rolling hydraulic door making a hydraulic sound.

Texture
In Global properties you can choose it’s render mode. Cutout is recommended if you wish to be able to see through doors.Transparent works too but it may cause sorting issues so it’s best to stick to cutout for rendering. You can also choose if the AI can see through the door or if bullets can pass through the door. These options are good for things like chain link fence gates.

Two sided Texture
This can be used if the door texture looks different on the back and front. If this option is selected the texture will properly wrap around the door and have the correct texture on each side of the door.

Breakable
You can set whether the door is breakable with damage or not. You can use custom hit points or have it break with standard HP.

Diff tex on break
Changes the texture to something else if the door is broken.

Break with event
This can cause the door to break on a specific event.

Lockable
With this option you can choose whether or not the door is locked. You can choose if is locked from behind or from the front, or both. Setting the lock ID to a corresponding key thing will allow that key to be used to open that specific door or any doors with that same lock ID.

Key
Variant
You may choose which style of key or color you would like the key to look like.

Inside Tagged Entity
You may place the key inside an enemy or object if they share the same corresponding tag,

Lock ID
This number should correspond with whatever door objects you wish for the key to open.

Name
You can give the key a name. For example “Barkeeper’s Key” and it will appear as that in Mike’s journal under key description.

Description
This can be used to give additional details about the key. For example “Opens bar safe”



Creating a Basic Map (Audio Player)
Audio Player
Audio Player can be used to play sounds within the game. To choose a sound you can plug in a number that corresponds with the audio pool below.


For example choosing General Sfx and having the Index in audio pool number being set to 11 will play the ”piano” sound.


Choosing ambience will pull from the ambience audio pool, for example if set to element 7, it will play the “dogs barking in distance” sound.







If the external option is checked, you can load sounds from the Audio directory within FallenAces/AcesData/Audio


Custom sounds can be placed and loaded here. External audio must be in .ogg, .mp3, or .wav format in order to play properly in game. To have an audio player play a sound from external audio you must set up a path. For Example: ambience\alleysounds1 (the file extension is not required)





Choosing the type of sound will choose how it will be played.
Sound will play the sound once.
Independent ambience will loop the sound.
Global is similar to independent ambience, however only one global sound can play at once. (this works best for looping background ambience)

When a global sound is played, any other global sounds stop playing.

You can set the minimum distance and maximum distance the sound can reach, this can be visualized via the spheres seen in the editor in 3d mode. Yellow is min distance. White is max distance.


The audio can be set to 2d or 3d. 2d is used for things like background ambience or music and will play globally. 3d is best for sounds that are emitted from specific areas like a barking dog or a car passing by for example.

Audio can be set up to play on a specific event using the event tag options.


Creating a Basic Map (Patrols)
Creating Patrols
To make an enemy or NPC follow a patrol route you must first place a waypoint thing. You’ll need a starting waypoint and an ending waypoint. Both of these waypoints should have the Action on Arrival set to reset to reset the patrol and make it loop infinitely. Wait time can be set to anything, 0 is none but an average amount of time usually about 5 tics. NPC’s will follow the nearest waypoint closest to them so it’s best to place the NPC closest to the waypoint you want them to start at first. Place as many waypoints as you need in between the stop and end points, if you want an NPC to stop at any waypoints on their patrol, set the action to Wait and choose a length of time you wish for them to wait.
Adding Custom Sprites and Textures
Adding Custom Sprites
1: Create a new folder somewhere, name it "Sprites"
2: Create a new folder inside that, name it "New Sprites"
3: Create another folder somewhere outside of "Sprites", name it "New Sprites Before Packing"
(Optional) 4: Trim the sprites so there's no wasted space, as the sprite packer doesn't do it.
5: Add the pngs to "New Sprites Before Packing" folder
6: Open the sprite packer.

If the sprites don't have meta data yet, follow these steps.
1: Click "Edit Sprites"
2: Navigate to "New Sprites Before Packing" folder ( You can click the bar at the top )
3: Click on sprites that don't have metadata yet.
4: Click "Confirm"
5: Select a sprite.
6: Adjust pivot by holding right click on the sprite, you'd usually want it near the bottom.
(Optional) 7: Adjust the collision box by adjusting the corner points, default is usually fine.
8: Adjust in-game scale by middle clicking on the sprite and typing in a value, to get a size comparison to Mike, hold tab with the sprite selected.
9: Click "Save", the sprites now have metadata ( Which is located in the "New Sprites Before Packing" folder)

Now that the sprites have metadata, we can pack them all into an atlas/texture page.
1: Click "Add sprites from folder"
2: Navigate to the "New Sprites Before Packing" folder and click on it, then click "confirm"
3: Click "Pack"
4: Once finished, click "Export". Export it to the "New Sprites" folder you created earlier. There should be a txt file and png(s) there.
5: Now use the Texture Package Generator to generate a texture package from the "Sprites" folder. Name it "newSprites.bin"
6: Move "newSprites.bin" into "AcesData/Texture Packages"
7: Copy the "New Sprites" folder into "AcesData/Sprites"

Alternatively, you could put those in a mod instead of AcesData.
EG: "Mod Folder/Texture Packages" & "Mod Folder/Sprites"

At this point, you can reference the sprites by their names in actor definitions.

NOTE: Ensure no sprites are larger than 4096x4096

Adding Custom Textures
1: Create a new folder somewhere, call it "New Textures".
2: Place new textures in there under the sub-folders where they would be in the main textures folder;

(For example: If you want a metal texture to be in say: "General/_Metal/textureName.png",
then create those folders and place the texture in there.

It will appear in those folders along with all the textures from the core texture package in the editor.)

3: Open Texture Package Generator.
4: Paste path to the "New Textures" folder in input.
5: Type in output "newtextures.bin"
6: Click Generate.
7: "newtextures.bin" will appear where the generator is located, cut and paste that in "AcesData/Texture Packages" alongside the others. ( Alternatively, you can place it in a mod. )
Using the Workshop Uploader
Using the Workshop Uploader
Once you have created a mod, you need to mimic the game’s file structure to successfully upload it.

For example…

TestMod\Audio\Music\newsong.ogg
TestMod\Episodes\MyNewMap\(all relevant level data)
TestMod\Texture Packages\newtextures.bin
When you have the mod ready to upload and all the files in their respective folders, go ahead and open the Fallen Aces Workshop Uploader. You can find it as a launch option or in
\Steam\steamapps\common\Fallen Aces\Tools\Lead Pipe\Lead Pipe.exe

With the Uploader open, click Mod Directory and point it at whatever folder contains your mod. In this example we’re doing the TestMod folder which contains our audio, map, and new textures.

Enter your mod title which will be displayed on the workshop page.
Add a preview image (Maximum size 1MB)
Then write a mod description.

Make sure you save your mod before uploading in the event you need to make changes in the future. It is required to save your mod before uploading. Do NOT save the .acesmod file to the folder you are uploading! Keep it safe on your desktop or anywhere else.
Once all fields are filled out, go ahead and press upload.

If done correctly, you should get a message saying the upload was successful and it will now appear on the Steam Workshop!




26 Comments
AnotherAlex 7 hours ago 
I want to make custom enemies....can the game do that?
The Tinkerer 8 Jun @ 4:28pm 
Figured it out! Make sure the quotes in your info text files are normal quotes, not the fancy unicode ones. Messes up parsing.
The Tinkerer 8 Jun @ 3:30pm 
Everything is named and spelled properly, although I do not have a .BVH file. How do I acquire one?
The Tinkerer 8 Jun @ 3:20pm 
When I click the poster in the main menu, it plays a clicking animation but the map does't load. Help!
Not a Mamut Mamut 6 Jun @ 8:32am 
my level editor cant find the AcesData folder even if i type it in or paste it idk what to do :(
CECERT 6 Jun @ 6:00am 
maybe i am just missing something but how do i add money? couldn't find it in the things
LongLivee Gaming YT 3 Jun @ 3:02pm 
@craazyAAAA it's saying that there is no AcesData when I type the directory in
dard98 3 Jun @ 2:14pm 
How do i make an intro to work? I put name of the file of the video (in WEBM format), but it's just black screen and only way to continue is to press skip.
LozHenge 3 Jun @ 2:13pm 
Is there any documentation on how to use Move States and Movable Geometry, such as how to use them with inverse sectors marked for movable geometry and scripts?
I'm having trouble following the examples set in existing levels and the movement I have in mind is more complex than just use an unusable sliding door
AnotherAlex 3 Jun @ 11:10am 
okay figured out on the second floor things, but where do i place my custom map to test it?