Basics of Module Creation: Difference between revisions
Potatocubed (talk | contribs) mNo edit summary |
Potatocubed (talk | contribs) m adding images |
||
| (4 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
[[File:The module editor button.png|alt=The module editor button from the Lancer Tactics main page.|thumb|The scary button.]] | [[File:The module editor button.png|alt=The module editor button from the Lancer Tactics main page.|thumb|The scary button.]] | ||
An informal | An informal guide to the basic building blocks in the module editor. | ||
'''Remember:''' Any module you have downloaded can be opened in the module editor so you can see how it works. (This is true of combats also.) If there's a particular trick you liked and want to replicate, and you can't figure out a way to do it yourself, crack open the module you played and see how they did it. | '''Remember:''' Any module you have downloaded can be opened in the module editor so you can see how it works. (This is true of combats also.) If there's a particular trick you liked and want to replicate, and you can't figure out a way to do it yourself, crack open the module you played and see how they did it. | ||
| Line 9: | Line 8: | ||
Aside from that, remember that ''everything here can be changed later''. You don't have to get things right first time. | Aside from that, remember that ''everything here can be changed later''. You don't have to get things right first time. | ||
== First Time in the Module Editor == | |||
[[File:New Module Screen.png|alt=An image of the new module screen. Almost everything on the screen is greyed out, except for the 'new beat' button, which is aggressively highlighted.|left|thumb]] | [[File:New Module Screen.png|alt=An image of the new module screen. Almost everything on the screen is greyed out, except for the 'new beat' button, which is aggressively highlighted.|left|thumb]] | ||
When you open the module editor for the first time, or when you click the 'new' button within it, this is what you're going to see. You'll note one button here is aggressively highlighted, which is the 'create beat' button. You need to click this first because modules are structured in beats which 'contain' all the other stuff. No container, no module. Anyway, click the button to get a beat into your module, then ignore it and look over at the left. | When you open the module editor for the first time, or when you click the 'new' button within it, this is what you're going to see. You'll note one button here is aggressively highlighted, which is the 'create beat' button. You need to click this first because modules are structured in beats which 'contain' all the other stuff. No container, no module. Anyway, click the button to get a beat into your module, then ignore it and look over at the left. | ||
=== Module Metadata === | |||
I think this is metadata? I've never been super-certain about what metadata is. Anyway, this is where you put down all the details about your module. The key things you'll need to think about for a working module are: | I think this is metadata? I've never been super-certain about what metadata is. Anyway, this is where you put down all the details about your module. The key things you'll need to think about for a working module are: | ||
| Line 21: | Line 20: | ||
* '''Lancers.''' This bit gets it's own subheading. | * '''Lancers.''' This bit gets it's own subheading. | ||
==== Lancers ==== | |||
Right now this module is for zero Lancers. I don't know what happens if you try to run a combat scene with no Lancers but it probably isn't good. You'll want to 'add seat' until you have the number of Lancers this module is for -- there's a maximum of four and, let's say, a practical minimum of one. If in doubt, go with four. Each Lancer with a 'seat' will be fully player-controlled during combats and level-ups. Lancer seats all have an index (0-3) which is how the game will refer to them in triggers, and are set to one of four states: flex, origin, custom, or fixed. To understand these, you'll need to know what an 'origin character' is. | Right now this module is for zero Lancers. I don't know what happens if you try to run a combat scene with no Lancers but it probably isn't good. You'll want to 'add seat' until you have the number of Lancers this module is for -- there's a maximum of four and, let's say, a practical minimum of one. If in doubt, go with four. Each Lancer with a 'seat' will be fully player-controlled during combats and level-ups. Lancer seats all have an index (0-3) which is how the game will refer to them in triggers, and are set to one of four states: flex, origin, custom, or fixed. To understand these, you'll need to know what an 'origin character' is. | ||
===== Origin Characters ===== | |||
An origin character is basically a fixed NPC that can join the player's squad and can level up and such. The distinction between them and 'module NPCs' is that origin characters can level up, that level up is controlled by the player, and they have the full range of PC level up options. They have consistent portraits, and are easy to refer to in triggers, so they fill the role of NPC squadmates who have consistent characters throughout the storyline. A module can have as many origin characters as you like, and there are triggers which can add and remove them, but I'm not getting into that in this tutorial. | An origin character is basically a fixed NPC that can join the player's squad and can level up and such. The distinction between them and 'module NPCs' is that origin characters can level up, that level up is controlled by the player, and they have the full range of PC level up options. They have consistent portraits, and are easy to refer to in triggers, so they fill the role of NPC squadmates who have consistent characters throughout the storyline. A module can have as many origin characters as you like, and there are triggers which can add and remove them, but I'm not getting into that in this tutorial. | ||
===== Lancer Seats ===== | |||
So, back to Lancer seats. | So, back to Lancer seats. | ||
| Line 38: | Line 35: | ||
For now, add four seats and leave them all on flex. | For now, add four seats and leave them all on flex. | ||
== Beats == | |||
[[File:A Sample Beat 2.png|alt=A sample beat, as seen in the module editor.|thumb|How it looks in the editor...]] | [[File:A Sample Beat 2.png|alt=A sample beat, as seen in the module editor.|thumb|How it looks in the editor...]] | ||
[[File:My First Beat example 1.png|alt=How a beat's number and name appear in the game.|thumb|...and in the game.]] | [[File:My First Beat example 1.png|alt=How a beat's number and name appear in the game.|thumb|...and in the game.]] | ||
| Line 44: | Line 41: | ||
* There's a '''unique ID''' in the top right, next to the delete button. You don't need to care about this. | * There's a '''unique ID''' in the top right, next to the delete button. You don't need to care about this. | ||
* The white dots are '''inputs''' on the left and '''outputs''' on the right, indicating where other bits of module connect to this one. As your starting beat, this needs no inputs, and as the only thing you have right now, it has no outputs yet. We'll get to that. | * The white dots are '''inputs''' on the left and '''outputs''' on the right, indicating where other bits of module connect to this one. As your starting beat, this needs no inputs, and as the only thing you have right now, it has no outputs yet. We'll get to that. Beats can have any number of inputs and outputs. | ||
* It has a '''number''' and a '''name''', here set to '1' and 'My First Beat' respectively. These do not need to be unique. You can definitely have beats without names, and I ''think'' you can have them without numbers, but they do show up in-game so you probably should fill these in. Beat numbers increment automatically as you add more beats, but ''not'' if you copy a beat and paste it. | * It has a '''number''' and a '''name''', here set to '1' and 'My First Beat' respectively. These do not need to be unique. You can definitely have beats without names, and I ''think'' you can have them without numbers, but they do show up in-game so you probably should fill these in. Beat numbers increment automatically as you add more beats, but ''not'' if you copy a beat and paste it. | ||
* Five '''kinds''' of beat. Short repair allows a short repair; full repair ''gives'' a full repair, no choices offered; level up gives a full repair and bumps all characters ''currently in the party'' by one license level; none gives you no repairs but lets you look at your lancers anyway; and hidden doesn't even let you do that. Hidden is most useful for weird trickery with beats that aren't really beats but that's for a different tutorial. | * Five '''kinds''' of beat. Short repair allows a short repair; full repair ''gives'' a full repair, no choices offered; level up gives a full repair and bumps all characters ''currently in the party'' by one license level; none gives you no repairs but lets you look at your lancers anyway; and hidden doesn't even let you do that. Hidden is most useful for weird trickery with beats that aren't really beats but that's for a different tutorial. | ||
| Line 50: | Line 47: | ||
The important thing to understand about beats is that they act as 'containers' for all the stuff that follows them. In practical terms this means that whatever background image you pick will be the background for any other elements connected to the beat (unless that element has a background of its own) and that if players have a chance to pause (e.g. at a combat briefing screen or between conversations) they will be able to go back and adjust their lancers based on the permissions granted by the kind of beat. So if you have a combat briefing after a full repair, they can go back and tune their builds specifically for that combat because they're still 'in' that full repair beat. | The important thing to understand about beats is that they act as 'containers' for all the stuff that follows them. In practical terms this means that whatever background image you pick will be the background for any other elements connected to the beat (unless that element has a background of its own) and that if players have a chance to pause (e.g. at a combat briefing screen or between conversations) they will be able to go back and adjust their lancers based on the permissions granted by the kind of beat. So if you have a combat briefing after a full repair, they can go back and tune their builds specifically for that combat because they're still 'in' that full repair beat. | ||
== Back to the Module Editor, Briefly == | |||
[[File:Module Editor Icons.png|alt=A row of icons.|thumb|From left to right: beat, combat, exposition, dialogue, branch, receiver, trigger, endpoint.]] | [[File:Module Editor Icons.png|alt=A row of icons.|thumb|From left to right: beat, combat, exposition, dialogue, branch, receiver, trigger, endpoint.]] | ||
Take a look at the top of the module editor screen and you'll see a row of icons. These will create 'moments', which are the individual chunks of module you glue together to make a complete thing: in order left to right you'll see beats, combats, expositions, dialogues, branches, receivers, triggers, and endpoints. | Take a look at the top of the module editor screen and you'll see a row of icons. These will create 'moments', which are the individual chunks of module you glue together to make a complete thing: in order left to right you'll see beats, combats, expositions, dialogues, branches, receivers, triggers, and endpoints. | ||
| Line 56: | Line 53: | ||
You've already created a beat (which technically isn't a moment, but a container for moments, but that doesn't matter right now). This tutorial will now cover the rest of them, in a different order to the way they're presented, and excepting triggers and receivers. Those are for more complex setups than this intro is meant to cover. | You've already created a beat (which technically isn't a moment, but a container for moments, but that doesn't matter right now). This tutorial will now cover the rest of them, in a different order to the way they're presented, and excepting triggers and receivers. Those are for more complex setups than this intro is meant to cover. | ||
=== Endpoints | <div style="clear: both"> | ||
=== Inputs and Outputs === | |||
Inputs are the same for everything. They're basically just a place where you can connect outputs from other things. ''Outputs'' are where things can get finicky. Outputs behave slightly differently depending on what you're looking at: a '''beat''' can have multiple different outputs, and each one appears as a yellow bar on the right of the screen which the player can click on to experience whatever moment is connected. That bar will be labelled with whatever the title of the moment is; if no title is provided it will be labelled with the internal reference of the thing instead, usually something like mission_8_top_secret_betrayal. Use titles. | |||
(If you use a diorama as the background for a beat you can link moments to map locations, but that's an advanced topic.) | |||
Non-beat '''moments''' typically only have one output. When the moment is done, it 'chains' to whatever is connected to that moment's output. No option is given here, it just happens automatically. If a moment has no further content chained off it's own outputs, then when it's done the player is returned to the beat to select something else. The exception is if the moment chains to another beat, in which case the player is 'moved' to the new beat. | |||
==== More ==== | |||
Most moments have a 'more' button which you need to click to get to the advanced options. | |||
==== Autoplay ==== | |||
Most moments can have a setting called 'autoplay' toggled on or off. When autoplay is toggled on, it means that when the beat is loaded that moment plays straight away without waiting for the player to click on a button. This is good for doing storytelling bits, unavoidable conversations, and the like. You'll note that autoplay has a number next to it: if you have multiple autoplaying moments connected to a beat, this is the order they will play in. If they have the same number they play in the order in which they were created, but it's always better to be sure you've got things in the right order. | |||
==== Hiding ==== | |||
Moments connected off beats have a couple of options for hiding: 'starts hidden' and 'hide on finish'. A hidden moment doesn't appear as a yellow bar for clicking in the beat. 'Hide on finish' just means that once the moment has played once, the player can't click on it to play it again. (This is on by default.) 'Starts hidden' means that the beat cannot be clicked on until it is revealed by a trigger, but don't worry about that for now, we're only covering the basics here. | |||
==== Backgrounds ==== | |||
A lot of moments have a space for a background. This overrides the background displayed by the beat ''while the moment is playing'', and it will then revert to the beat background afterwards. If no moment background is provided, you'll see the beat background. | |||
</div> | |||
== Endpoints == | |||
[[File:Endpoint Example.png|alt=An endpoint moment connected to a beat in the module editor.|thumb|How it looks in the editor...]] | [[File:Endpoint Example.png|alt=An endpoint moment connected to a beat in the module editor.|thumb|How it looks in the editor...]] | ||
[[File:An Endpoint In-game.png|thumb|...and in the game.]] | [[File:An Endpoint In-game.png|thumb|...and in the game.]] | ||
The easiest one to explain. When you connect an endpoint, it creates an option in the attached beat to end the game and return to the main menu. ''They do not offer the user a chance to save their game''. Endpoints have no settings to tweak, and cannot be made to autoplay: they always provide the ''option'' to quit out but do not compel it. | The easiest one to explain. When you connect an endpoint, it creates an option in the attached beat to end the game and return to the main menu. ''They do not offer the user a chance to save their game''. Endpoints have no settings to tweak, and cannot be directly made to autoplay: they always provide the ''option'' to quit out but do not compel it. I don't know what happens if you chain an autoplaying moment into an endpoint. Nothing good, probably. | ||
<div style="clear: both"></div> | |||
== Expositions == | |||
[[File:A Sample Exposition Moment.png|thumb|How it looks in the editor...]] | |||
[[File:Exposition In-engine.png|thumb|...and in the game.]] | |||
Expositions allow you to display blocks of text for players to read, and also show them deliberate branching choices. Aside from the usual options expositions have: | |||
* A '''title''', make sure to fill it in. | |||
* A block of '''text''', which is what actually appears when the exposition plays. | |||
* A '''media''' option, which lets you add a 'handout', which is an image which appears beside the exposition while it plays. | |||
* An '''animate paragraphs''' option, which is default on. While this is on, the text 'unspools' into the text box. While it is off the whole text just drops in as a single block, which might be what you're looking for but I think looks strictly worse than with it on. | |||
By default expositions don't have any outputs and once played drop you right back in the beat. But! You can use the 'add choice' button to create some. In-game this creates buttons with options for the player to click, and you chain into whichever moments are attached to the button. This chain follows all the normal rules and expectations. | |||
=== Dialogues | Note that although the button says 'add choice' you can totally have just one choice. This is useful for certain edge case scenarios where you need to chain two beats together but because you can't do that directly, you can put a quick exposition in between. If you never encounter this problem, don't worry about it. | ||
<div style="clear: both"> | |||
== Dialogues == | |||
I keep calling these 'chats' in my internal notes so you'll probably see me slip into that vernacular. | I keep calling these 'chats' in my internal notes so you'll probably see me slip into that vernacular. | ||
When you add a dialogue moment you'll see it has a title space -- this is what will display when it's linked from a beat -- and a dropdown for you to select the conversation that plays in that moment. But you haven't written any conversations yet, so we'll have to start with that. | |||
=== NPCs === | |||
Up in the top left of the module editor you'll see six icons which let you look at module-level properties. In order from left to right they're metadata, combats, clocks, reserves, NPCs, and conversations. Right now (assuming you haven't been clicking through them) you'll have the metadata icon selected. You want to click the NPCs one. This will show you a list of origin characters (probably blank) with an option to click over to a list of NPCs (probably also blank). | |||
Clicking 'new' on either list requires you to create a new ID for that NPC, which must be unique, and short. This is one of the few things in a module which cannot be edited later, so make sure you have an approximate idea of who they are when you create it. | |||
==== Origin Characters 2 ==== | |||
When you create a new origin character this way, you'll be presented with a blank portrait and a default Everest mech frame. Click 'open character sheet' and you should find yourself in front of the character creation screen. This works exactly like it does when you make a character for instant action or for playing in modules yourself -- build the character as you want them to be, click 'back' when you're finished, and you'll see them in the 'origin characters' section of your module. You'll also be able to select them for fixed origin seats if you go back and try that. | |||
==== NPCs ==== | ==== NPCs ==== | ||
The 'new' setup for an NPC is much simpler. Give them an ID, then they appear in your game with a randomly generated (?) portrait and nothing else. You'll want to give them a name, at the very least, and maybe edit their portrait. If you give them a mech then you'll get dropped into the NPC mech creation screen, which is beyond the scope of this tutorial. You'll need to learn how to use that screen to make combat maps anyway, so a combat map tutorial should have you covered there. | |||
The game does distinguish between module NPC (with mech) and module NPC (without mech) but I don't know why or exactly how. The basic thing you need to know is that if you want a module NPC to show up in combat and shoot either at or alongside the player, they'll need a mech added here. If they aren't a combatant, they don't need a mech. | |||
The 'is NHP' checkbox changes the appearance of the NPC and gives you some different options when you go into the edit portrait screen. If you know a character is going to be an NHP, make them an NHP first then go edit their portrait. | |||
=== Conversations === | |||
Remember those icons in the top-left? You want to select the next one along from the NPCs icon, to get to the conversations section. You'll notice that you start each module with one speaker ('narrator') and nothing else. Where are the NPCs you created? | |||
==== Speakers ==== | |||
Well, they're not on this tab. You have to add them. Click 'new speaker' and give the speaker a character ID. This can be the same as the NPC's ID or different, but you want to be able to glance at this and know who's speaking. You'll see why in a bit. Then you click the 'unit' drop-down and you can select one of five options. | |||
* '''Lancer''' lets you specify whichever character is in that Lancer seat at the time the conversation plays. For example, I like to have the main character of my stories in the first seat (which is Lancer 0) so I create a speaker with the ID 'pc' and select Lancer here and 0 in the number selector which appears. | |||
* '''Module NPC (mech)''' is basically useless for these module-level conversations so you can ignore it. I think it might do something if you select it for combat-level conversations but I don't actually know. | |||
* '''Origin Character''' lets you specify an origin character for this speaker from a dropdown. Whenever they speak, that origin character's portrait will be displayed. If you've got pre-set origin characters in lancer seats, I find this a much easier way to specify them than Lancer 1, Lancer 3, etc. | |||
* '''Lancer With Reserve'''... I don't know what this does. | |||
* '''Module NPC.''' Basically for anyone who isn't a player character or origin character. When you select this you get a drop-down list of all the NPCs you've made at the module level -- not any in combats, only ones from the module -- and can select which speaker to attach to the speaker ID. | |||
You can also use the nametag dropdown to select what name appears above your NPCs' chat boxes when they speak. I think first name and last name are automatically generated from the name field by parsing where spaces appear, but I don't know that for sure. | |||
I don't know how the 'get equipped NHP' option works and I've never used it, so you're going to have to work that one out yourself. | |||
==== Conversations 2 ==== | |||
'''An Important Note:''' The narrator speaker is ''special''. Everything I'm about to explain is for your ordinary speakers, and I'll get to the narrator in a bit. | |||
Okay, now you should have (or be able to create) two new speakers to have your conversations. Next, you'll need to write a conversation. Click the 'new conversation' button. | |||
First, give your conversation a name/ID. You can change this later, but if you do it'll break everything that points to it, so pick something that makes sense. Also be aware that in large modules the list of conversations can get very, ''very'' long, so you want these IDs to be informative for you down the line; 'chat_1' may be easy now, but it'll cause you pain later on. ''Ask me how I know''. | |||
The big box below the conversation ID is a dropdown that lets you select the layout of people speaking in the conversation. If you select one, you can see boxes to the right which let you specify which speaker goes in which position. When the conversation is first displayed, these pictures are loaded in, in those positions, even if the speaker has no lines in the conversation and are 'just there' or whatever. If one of those boxes is left empty, any new speaker will be slotted right into it in first-come-first-served order. | |||
What's even better is that the game handles a lot of these dynamics automatically -- if you don't select a conversation 'shape' then it defaults to Monologue. If you add e.g. a third speaker to a two-person chat the shape automatically changes to make room for them. You don't have to engage with this stuff at all if you don't want to, which makes writing conversations in Lancer Tactics so easy Olive deserves an award for that alone. | |||
'''One Caveat:''' Conversations max out at five participants. If you add a sixth they'll overwrite someone already in the chat. Probably easiest to keep your number of talking heads down. | |||
But what will these people say? | |||
Click the 'line' button at the bottom of the conversation window. You'll see a drop-down with 'narrator' in it, an empty space where words will go, and a whole bunch of icons which I'll not be covering in this beginner tutorial, with one exception: the little orange sixpack on the left shows the currently-selected line. When you add new lines they get added beneath the active one, then they become the active one. You can also click it and drag it around to move the position of lines in your chats, which you will need to do frequently. | |||
The dropdown selects who's speaking. Choose one of your NPCs. Then click in the text box next to it and give them something to say. It doesn't matter what. When I need placeholder text I usually use 'butts', but 'lorem ipsum sic dolor sit amet' is available for the classicists. | |||
Do that again, with the other NPC. You can tap return when you're finished with a line and it'll automatically add a new one. | |||
Maybe do it a couple more times. Try to have the same character speaking twice in succession at least once. | |||
Now, if you go over to the left of the screen and select the conversation again you should see a button light up at the bottom-left of the screen labelled 'from start'. Click that and you can see the conversation play out. This button is magic for testing conversations as you write them, seeing how they look, how they flow, making sure people are popping in where they should, all that good stuff. Use it a lot. You can also click back into the conversation and see the button next to it light up ('from line X'). This lets you fast-forward a conversation to that line so you can test longer conversations without clicking through the whole thing every time. The best way to see how it works is to select a line in your conversation that's near the end and test it. | |||
Those are the basics of conversations. | |||
===== Directions ===== | |||
You can do all sorts of cool things with directions (think 'stage directions') in a conversation. They take effect at the point in the conversation they're added. I recommend experimenting with them and the play from start button to see what they do. In fact, see that 'neutral face emoji' on the end of the text lines? Noodle around with that as well. It's pretty self-explanatory and you can always test to see exactly what it does. You can even try the 'chorus with previous' option next to it, which ''mostly'' works how you'd think it would but not always. | |||
===== Choices and Indents ===== | |||
Keeping things basic: When Lancer Tactics reads a conversation, it reads everything at a particular indent level as a block. You don't need to care about this at all unless you're putting choices in your chats. When you put a choice in your chat (by clicking 'choice' instead of line) you put it in as a series of sequential lines at the same indent -- they look just like lines in the editor but they've got a choice icon next to them instead of a speech bubble -- and choose a speaker and some text for each option. Only the first speaker in any given sequence of choices is read by the game, but I like to keep them all the same anyway. Just in case. | |||
Following each choice line you can add a series of other lines and you'll see the option on the right to indent them one level. When a choice is selected, the game will then play every indented line following that choice, skip over every other choice line in the original sequence and every indented line following them, then keep playing the conversation from after the choice block. | |||
So if you have something like: | |||
* It's a breakfast chat. | |||
* What's your favourite breakfast? | |||
* CHOICE: Pancakes. | |||
** Pancakes are pretty delicious. | |||
* CHOICE: Waffles. | |||
** I don't like foods with double-f sounds in them. | |||
* CHOICE: I'm good with whatever. | |||
* I'm a full English person myself. | |||
The choice block is at indent 0. If you select pancakes then the game will display "Pancakes are pretty delicious." at indent 1, drop back to indent 0 when it runs out of indent 1 things to say, skip the rest of the choice block, and pick up the indent 0 lines again from "I'm a full English person myself." If you choose "I'm good with whatever." then the game will find no indent 1 lines to play, drop back to indent 0, and jump straight to the full English line. | |||
I hope that's clear because it feels really simple to hold in my head when I'm writing these things and now I'm trying to explain it I feel sorely tested. The 'run from start' conversation tester is extremely your friend. | |||
===== Jumps ===== | |||
A jump lets you jump to a completely different conversation and, optionally, come back again. There are about a hundred finicky bits going on here and this is supposed to be for beginners so I'm not going into it. | |||
===== Narrator ===== | |||
The 'narrator' speaker has a special text-box appearance which strongly resembles the exposition text boxes, never displays a talking head, and cannot be subject to most stage directions. Other than that it functions like other speakers. You ''can'' give it a choice box to make, which doesn't look like any other choice box you'll see in the game and is basically very cool. | |||
==== Conversations 3 ==== | |||
Now you've written a conversation you can go back to your module dialogue moment and select it from the drop-down. When that moment plays, it will play the selected conversation on the selected backdrop, then move on to whatever the conversation's output is connected to -- or back to the beat, if nothing. | |||
== Combats == | |||
[[File:A sample combat briefing moment.png|thumb|How it looks in the editor...]] | |||
[[File:Combat Briefing In-Engine.png|thumb|...and in the game.]] | |||
Much like with conversations, before you can add a 'combat briefing' moment to your module, you have to have a combat for it to brief you about. Head to those icons in the top-left, and the second one will take you to your (probably empty) list of combats. | |||
''Making'' a combat is well beyond the scope of this module-making tutorial; you'll have to work out how to do that somewhere else. The good news is that using the 'import' button right next to it, you can pull in ''any map you have ever downloaded'', including ones from within other modules. The bad news is that most maps are dependent on settings from Instant Action or the module context they were originally supplied within, so they won't work out of the box. But at least you'll have the terrain drawn in? | |||
Once you've got a combat ready to go, you can create a combat briefing moment. The elements of a combat briefing are: | |||
* A '''dropdown''' where you select which combat this briefing will launch you into. | |||
* A '''text box''' which becomes the text box shown on the right-hand side of the combat briefing screen. | |||
* A selection of possible '''media''' to display in the middle of the combat briefing screen. This is usually set to 'combat' which shows that funky rotating map of the battlefield you're about to fight on, but you can set it to a variety of different things -- including a funky rotating map of a completely different battlefield, if for some reason you want to do that. Probably something metavault-related. | |||
* You can '''skip briefing screen''' if you want to go straight from the beat into the fight. | |||
* You can '''autoplay''' a combat briefing, which won't normally have much effect because the player can use the Esc key or right mouse button to back out to the beat screen again, but I guess in combination with skip briefing screen you could drop the player right into the action this way. | |||
A key thing to note about combat briefings is that they have '''two outputs.''' One unlabelled for if the PCs win, and one labelled 'on PC defeat' for if they lose. If you leave either unlinked then a victory (or defeat, as appropriate) loops them back to the beat and they can try the fight again -- but it'll also trigger any level-ups or full repairs the beat allows, which can lead to some weird shenanigans. Best to remember to hook it up to something else. | |||
Speaking of which: | |||
=== | '''Important:''' In theory the outputs from a combat can be linked to anything. In practice, at the time of writing, this doesn't work. '''A combat moment can only output directly to a beat.''' If you try anything else it'll go wrong. ''Yes, this includes endpoints''. Beats only. | ||
This is | <div style="clear: both"> | ||
== Congratulations == | |||
This is all you actually ''need'' to know to get a module up and running. Lancer Tactics' module editor has great testing features for conversations, and a playtest button on the metadata tab that lets you skip fights and deliver a win or loss outcome as you like. | |||
For next steps, I would suggest learning about '''module states''', which let you track events which happen both at the module level and in combats within a module, and how to use them with '''branch''' moments to have the module start feeling more responsive. You can already respond to player choices through exposition scenes with choices added, but module states let you react to things in a more organic sort of way. | |||
Latest revision as of 15:34, 31 July 2026

An informal guide to the basic building blocks in the module editor.
Remember: Any module you have downloaded can be opened in the module editor so you can see how it works. (This is true of combats also.) If there's a particular trick you liked and want to replicate, and you can't figure out a way to do it yourself, crack open the module you played and see how they did it.
When you create a new module you'll need to give it a name. This will serve as a filename and also its identifier on mod.io if you ever upload it. Don't be scared to give your module a placeholder name, though -- when it's done you can use the 'save as' button to duplicate the whole thing under a more sensible name.
Aside from that, remember that everything here can be changed later. You don't have to get things right first time.
First Time in the Module Editor
[edit | edit source]
When you open the module editor for the first time, or when you click the 'new' button within it, this is what you're going to see. You'll note one button here is aggressively highlighted, which is the 'create beat' button. You need to click this first because modules are structured in beats which 'contain' all the other stuff. No container, no module. Anyway, click the button to get a beat into your module, then ignore it and look over at the left.
Module Metadata
[edit | edit source]I think this is metadata? I've never been super-certain about what metadata is. Anyway, this is where you put down all the details about your module. The key things you'll need to think about for a working module are:
- Module Title. I don't think this is strictly necessary, but you should put something in here anyway.
- Starting Beat. Players who fire up this module will start here. This is automatically set to the first beat you just created, but can be changed later. I found switching it around was really useful for bug-testing later on, but remember to change it back to your actual starting beat before release!
- Starting License Level. What level range is this module meant for? At the time of writing I don't think this data is surfaced anywhere, but it's useful metadata anyway and you can enforce it to prevent players bringing LL12 demigods into a LL0 scrub module. Or not!
- Lancers. This bit gets it's own subheading.
Lancers
[edit | edit source]Right now this module is for zero Lancers. I don't know what happens if you try to run a combat scene with no Lancers but it probably isn't good. You'll want to 'add seat' until you have the number of Lancers this module is for -- there's a maximum of four and, let's say, a practical minimum of one. If in doubt, go with four. Each Lancer with a 'seat' will be fully player-controlled during combats and level-ups. Lancer seats all have an index (0-3) which is how the game will refer to them in triggers, and are set to one of four states: flex, origin, custom, or fixed. To understand these, you'll need to know what an 'origin character' is.
Origin Characters
[edit | edit source]An origin character is basically a fixed NPC that can join the player's squad and can level up and such. The distinction between them and 'module NPCs' is that origin characters can level up, that level up is controlled by the player, and they have the full range of PC level up options. They have consistent portraits, and are easy to refer to in triggers, so they fill the role of NPC squadmates who have consistent characters throughout the storyline. A module can have as many origin characters as you like, and there are triggers which can add and remove them, but I'm not getting into that in this tutorial.
Lancer Seats
[edit | edit source]So, back to Lancer seats.
- A fixed seat is set to a particular origin character for your module. When a player fires up this module, that seat will always be filled with that character.
- An origin seat requires the player to pick an origin character from the list your module contains, but could be any of them.
- A custom seat requires the player to create a new character for the module, or load an already-created character. Note that if you've set a starting license level for the module and left the 'enforced' checkbox active, this new character will have to be in that level range. I don't think enforced LL applies to origin characters but I haven't checked.
- And a flex seat can be an origin character or a custom one as the player sees fit.
For now, add four seats and leave them all on flex.
Beats
[edit | edit source]

Okay, back to that beat you created about twenty years ago. You'll see it has several features:
- There's a unique ID in the top right, next to the delete button. You don't need to care about this.
- The white dots are inputs on the left and outputs on the right, indicating where other bits of module connect to this one. As your starting beat, this needs no inputs, and as the only thing you have right now, it has no outputs yet. We'll get to that. Beats can have any number of inputs and outputs.
- It has a number and a name, here set to '1' and 'My First Beat' respectively. These do not need to be unique. You can definitely have beats without names, and I think you can have them without numbers, but they do show up in-game so you probably should fill these in. Beat numbers increment automatically as you add more beats, but not if you copy a beat and paste it.
- Five kinds of beat. Short repair allows a short repair; full repair gives a full repair, no choices offered; level up gives a full repair and bumps all characters currently in the party by one license level; none gives you no repairs but lets you look at your lancers anyway; and hidden doesn't even let you do that. Hidden is most useful for weird trickery with beats that aren't really beats but that's for a different tutorial.
- Background lets you set something to display while the beat is... beating. You can noodle around with this to see what you can select, but the important thing is that files in your module's media folder have to start with "bg_" or they won't be selectable here.
The important thing to understand about beats is that they act as 'containers' for all the stuff that follows them. In practical terms this means that whatever background image you pick will be the background for any other elements connected to the beat (unless that element has a background of its own) and that if players have a chance to pause (e.g. at a combat briefing screen or between conversations) they will be able to go back and adjust their lancers based on the permissions granted by the kind of beat. So if you have a combat briefing after a full repair, they can go back and tune their builds specifically for that combat because they're still 'in' that full repair beat.
Back to the Module Editor, Briefly
[edit | edit source]
Take a look at the top of the module editor screen and you'll see a row of icons. These will create 'moments', which are the individual chunks of module you glue together to make a complete thing: in order left to right you'll see beats, combats, expositions, dialogues, branches, receivers, triggers, and endpoints.
You've already created a beat (which technically isn't a moment, but a container for moments, but that doesn't matter right now). This tutorial will now cover the rest of them, in a different order to the way they're presented, and excepting triggers and receivers. Those are for more complex setups than this intro is meant to cover.
Inputs and Outputs
[edit | edit source]Inputs are the same for everything. They're basically just a place where you can connect outputs from other things. Outputs are where things can get finicky. Outputs behave slightly differently depending on what you're looking at: a beat can have multiple different outputs, and each one appears as a yellow bar on the right of the screen which the player can click on to experience whatever moment is connected. That bar will be labelled with whatever the title of the moment is; if no title is provided it will be labelled with the internal reference of the thing instead, usually something like mission_8_top_secret_betrayal. Use titles.
(If you use a diorama as the background for a beat you can link moments to map locations, but that's an advanced topic.)
Non-beat moments typically only have one output. When the moment is done, it 'chains' to whatever is connected to that moment's output. No option is given here, it just happens automatically. If a moment has no further content chained off it's own outputs, then when it's done the player is returned to the beat to select something else. The exception is if the moment chains to another beat, in which case the player is 'moved' to the new beat.
More
[edit | edit source]Most moments have a 'more' button which you need to click to get to the advanced options.
Autoplay
[edit | edit source]Most moments can have a setting called 'autoplay' toggled on or off. When autoplay is toggled on, it means that when the beat is loaded that moment plays straight away without waiting for the player to click on a button. This is good for doing storytelling bits, unavoidable conversations, and the like. You'll note that autoplay has a number next to it: if you have multiple autoplaying moments connected to a beat, this is the order they will play in. If they have the same number they play in the order in which they were created, but it's always better to be sure you've got things in the right order.
Hiding
[edit | edit source]Moments connected off beats have a couple of options for hiding: 'starts hidden' and 'hide on finish'. A hidden moment doesn't appear as a yellow bar for clicking in the beat. 'Hide on finish' just means that once the moment has played once, the player can't click on it to play it again. (This is on by default.) 'Starts hidden' means that the beat cannot be clicked on until it is revealed by a trigger, but don't worry about that for now, we're only covering the basics here.
Backgrounds
[edit | edit source]A lot of moments have a space for a background. This overrides the background displayed by the beat while the moment is playing, and it will then revert to the beat background afterwards. If no moment background is provided, you'll see the beat background.
Endpoints
[edit | edit source]

The easiest one to explain. When you connect an endpoint, it creates an option in the attached beat to end the game and return to the main menu. They do not offer the user a chance to save their game. Endpoints have no settings to tweak, and cannot be directly made to autoplay: they always provide the option to quit out but do not compel it. I don't know what happens if you chain an autoplaying moment into an endpoint. Nothing good, probably.
Expositions
[edit | edit source]

Expositions allow you to display blocks of text for players to read, and also show them deliberate branching choices. Aside from the usual options expositions have:
- A title, make sure to fill it in.
- A block of text, which is what actually appears when the exposition plays.
- A media option, which lets you add a 'handout', which is an image which appears beside the exposition while it plays.
- An animate paragraphs option, which is default on. While this is on, the text 'unspools' into the text box. While it is off the whole text just drops in as a single block, which might be what you're looking for but I think looks strictly worse than with it on.
By default expositions don't have any outputs and once played drop you right back in the beat. But! You can use the 'add choice' button to create some. In-game this creates buttons with options for the player to click, and you chain into whichever moments are attached to the button. This chain follows all the normal rules and expectations.
Note that although the button says 'add choice' you can totally have just one choice. This is useful for certain edge case scenarios where you need to chain two beats together but because you can't do that directly, you can put a quick exposition in between. If you never encounter this problem, don't worry about it.
Dialogues
[edit | edit source]I keep calling these 'chats' in my internal notes so you'll probably see me slip into that vernacular.
When you add a dialogue moment you'll see it has a title space -- this is what will display when it's linked from a beat -- and a dropdown for you to select the conversation that plays in that moment. But you haven't written any conversations yet, so we'll have to start with that.
NPCs
[edit | edit source]Up in the top left of the module editor you'll see six icons which let you look at module-level properties. In order from left to right they're metadata, combats, clocks, reserves, NPCs, and conversations. Right now (assuming you haven't been clicking through them) you'll have the metadata icon selected. You want to click the NPCs one. This will show you a list of origin characters (probably blank) with an option to click over to a list of NPCs (probably also blank).
Clicking 'new' on either list requires you to create a new ID for that NPC, which must be unique, and short. This is one of the few things in a module which cannot be edited later, so make sure you have an approximate idea of who they are when you create it.
Origin Characters 2
[edit | edit source]When you create a new origin character this way, you'll be presented with a blank portrait and a default Everest mech frame. Click 'open character sheet' and you should find yourself in front of the character creation screen. This works exactly like it does when you make a character for instant action or for playing in modules yourself -- build the character as you want them to be, click 'back' when you're finished, and you'll see them in the 'origin characters' section of your module. You'll also be able to select them for fixed origin seats if you go back and try that.
NPCs
[edit | edit source]The 'new' setup for an NPC is much simpler. Give them an ID, then they appear in your game with a randomly generated (?) portrait and nothing else. You'll want to give them a name, at the very least, and maybe edit their portrait. If you give them a mech then you'll get dropped into the NPC mech creation screen, which is beyond the scope of this tutorial. You'll need to learn how to use that screen to make combat maps anyway, so a combat map tutorial should have you covered there.
The game does distinguish between module NPC (with mech) and module NPC (without mech) but I don't know why or exactly how. The basic thing you need to know is that if you want a module NPC to show up in combat and shoot either at or alongside the player, they'll need a mech added here. If they aren't a combatant, they don't need a mech.
The 'is NHP' checkbox changes the appearance of the NPC and gives you some different options when you go into the edit portrait screen. If you know a character is going to be an NHP, make them an NHP first then go edit their portrait.
Conversations
[edit | edit source]Remember those icons in the top-left? You want to select the next one along from the NPCs icon, to get to the conversations section. You'll notice that you start each module with one speaker ('narrator') and nothing else. Where are the NPCs you created?
Speakers
[edit | edit source]Well, they're not on this tab. You have to add them. Click 'new speaker' and give the speaker a character ID. This can be the same as the NPC's ID or different, but you want to be able to glance at this and know who's speaking. You'll see why in a bit. Then you click the 'unit' drop-down and you can select one of five options.
- Lancer lets you specify whichever character is in that Lancer seat at the time the conversation plays. For example, I like to have the main character of my stories in the first seat (which is Lancer 0) so I create a speaker with the ID 'pc' and select Lancer here and 0 in the number selector which appears.
- Module NPC (mech) is basically useless for these module-level conversations so you can ignore it. I think it might do something if you select it for combat-level conversations but I don't actually know.
- Origin Character lets you specify an origin character for this speaker from a dropdown. Whenever they speak, that origin character's portrait will be displayed. If you've got pre-set origin characters in lancer seats, I find this a much easier way to specify them than Lancer 1, Lancer 3, etc.
- Lancer With Reserve... I don't know what this does.
- Module NPC. Basically for anyone who isn't a player character or origin character. When you select this you get a drop-down list of all the NPCs you've made at the module level -- not any in combats, only ones from the module -- and can select which speaker to attach to the speaker ID.
You can also use the nametag dropdown to select what name appears above your NPCs' chat boxes when they speak. I think first name and last name are automatically generated from the name field by parsing where spaces appear, but I don't know that for sure.
I don't know how the 'get equipped NHP' option works and I've never used it, so you're going to have to work that one out yourself.
Conversations 2
[edit | edit source]An Important Note: The narrator speaker is special. Everything I'm about to explain is for your ordinary speakers, and I'll get to the narrator in a bit.
Okay, now you should have (or be able to create) two new speakers to have your conversations. Next, you'll need to write a conversation. Click the 'new conversation' button.
First, give your conversation a name/ID. You can change this later, but if you do it'll break everything that points to it, so pick something that makes sense. Also be aware that in large modules the list of conversations can get very, very long, so you want these IDs to be informative for you down the line; 'chat_1' may be easy now, but it'll cause you pain later on. Ask me how I know.
The big box below the conversation ID is a dropdown that lets you select the layout of people speaking in the conversation. If you select one, you can see boxes to the right which let you specify which speaker goes in which position. When the conversation is first displayed, these pictures are loaded in, in those positions, even if the speaker has no lines in the conversation and are 'just there' or whatever. If one of those boxes is left empty, any new speaker will be slotted right into it in first-come-first-served order.
What's even better is that the game handles a lot of these dynamics automatically -- if you don't select a conversation 'shape' then it defaults to Monologue. If you add e.g. a third speaker to a two-person chat the shape automatically changes to make room for them. You don't have to engage with this stuff at all if you don't want to, which makes writing conversations in Lancer Tactics so easy Olive deserves an award for that alone.
One Caveat: Conversations max out at five participants. If you add a sixth they'll overwrite someone already in the chat. Probably easiest to keep your number of talking heads down.
But what will these people say?
Click the 'line' button at the bottom of the conversation window. You'll see a drop-down with 'narrator' in it, an empty space where words will go, and a whole bunch of icons which I'll not be covering in this beginner tutorial, with one exception: the little orange sixpack on the left shows the currently-selected line. When you add new lines they get added beneath the active one, then they become the active one. You can also click it and drag it around to move the position of lines in your chats, which you will need to do frequently.
The dropdown selects who's speaking. Choose one of your NPCs. Then click in the text box next to it and give them something to say. It doesn't matter what. When I need placeholder text I usually use 'butts', but 'lorem ipsum sic dolor sit amet' is available for the classicists.
Do that again, with the other NPC. You can tap return when you're finished with a line and it'll automatically add a new one.
Maybe do it a couple more times. Try to have the same character speaking twice in succession at least once.
Now, if you go over to the left of the screen and select the conversation again you should see a button light up at the bottom-left of the screen labelled 'from start'. Click that and you can see the conversation play out. This button is magic for testing conversations as you write them, seeing how they look, how they flow, making sure people are popping in where they should, all that good stuff. Use it a lot. You can also click back into the conversation and see the button next to it light up ('from line X'). This lets you fast-forward a conversation to that line so you can test longer conversations without clicking through the whole thing every time. The best way to see how it works is to select a line in your conversation that's near the end and test it.
Those are the basics of conversations.
Directions
[edit | edit source]You can do all sorts of cool things with directions (think 'stage directions') in a conversation. They take effect at the point in the conversation they're added. I recommend experimenting with them and the play from start button to see what they do. In fact, see that 'neutral face emoji' on the end of the text lines? Noodle around with that as well. It's pretty self-explanatory and you can always test to see exactly what it does. You can even try the 'chorus with previous' option next to it, which mostly works how you'd think it would but not always.
Choices and Indents
[edit | edit source]Keeping things basic: When Lancer Tactics reads a conversation, it reads everything at a particular indent level as a block. You don't need to care about this at all unless you're putting choices in your chats. When you put a choice in your chat (by clicking 'choice' instead of line) you put it in as a series of sequential lines at the same indent -- they look just like lines in the editor but they've got a choice icon next to them instead of a speech bubble -- and choose a speaker and some text for each option. Only the first speaker in any given sequence of choices is read by the game, but I like to keep them all the same anyway. Just in case.
Following each choice line you can add a series of other lines and you'll see the option on the right to indent them one level. When a choice is selected, the game will then play every indented line following that choice, skip over every other choice line in the original sequence and every indented line following them, then keep playing the conversation from after the choice block.
So if you have something like:
- It's a breakfast chat.
- What's your favourite breakfast?
- CHOICE: Pancakes.
- Pancakes are pretty delicious.
- CHOICE: Waffles.
- I don't like foods with double-f sounds in them.
- CHOICE: I'm good with whatever.
- I'm a full English person myself.
The choice block is at indent 0. If you select pancakes then the game will display "Pancakes are pretty delicious." at indent 1, drop back to indent 0 when it runs out of indent 1 things to say, skip the rest of the choice block, and pick up the indent 0 lines again from "I'm a full English person myself." If you choose "I'm good with whatever." then the game will find no indent 1 lines to play, drop back to indent 0, and jump straight to the full English line.
I hope that's clear because it feels really simple to hold in my head when I'm writing these things and now I'm trying to explain it I feel sorely tested. The 'run from start' conversation tester is extremely your friend.
Jumps
[edit | edit source]A jump lets you jump to a completely different conversation and, optionally, come back again. There are about a hundred finicky bits going on here and this is supposed to be for beginners so I'm not going into it.
Narrator
[edit | edit source]The 'narrator' speaker has a special text-box appearance which strongly resembles the exposition text boxes, never displays a talking head, and cannot be subject to most stage directions. Other than that it functions like other speakers. You can give it a choice box to make, which doesn't look like any other choice box you'll see in the game and is basically very cool.
Conversations 3
[edit | edit source]Now you've written a conversation you can go back to your module dialogue moment and select it from the drop-down. When that moment plays, it will play the selected conversation on the selected backdrop, then move on to whatever the conversation's output is connected to -- or back to the beat, if nothing.
Combats
[edit | edit source]

Much like with conversations, before you can add a 'combat briefing' moment to your module, you have to have a combat for it to brief you about. Head to those icons in the top-left, and the second one will take you to your (probably empty) list of combats.
Making a combat is well beyond the scope of this module-making tutorial; you'll have to work out how to do that somewhere else. The good news is that using the 'import' button right next to it, you can pull in any map you have ever downloaded, including ones from within other modules. The bad news is that most maps are dependent on settings from Instant Action or the module context they were originally supplied within, so they won't work out of the box. But at least you'll have the terrain drawn in?
Once you've got a combat ready to go, you can create a combat briefing moment. The elements of a combat briefing are:
- A dropdown where you select which combat this briefing will launch you into.
- A text box which becomes the text box shown on the right-hand side of the combat briefing screen.
- A selection of possible media to display in the middle of the combat briefing screen. This is usually set to 'combat' which shows that funky rotating map of the battlefield you're about to fight on, but you can set it to a variety of different things -- including a funky rotating map of a completely different battlefield, if for some reason you want to do that. Probably something metavault-related.
- You can skip briefing screen if you want to go straight from the beat into the fight.
- You can autoplay a combat briefing, which won't normally have much effect because the player can use the Esc key or right mouse button to back out to the beat screen again, but I guess in combination with skip briefing screen you could drop the player right into the action this way.
A key thing to note about combat briefings is that they have two outputs. One unlabelled for if the PCs win, and one labelled 'on PC defeat' for if they lose. If you leave either unlinked then a victory (or defeat, as appropriate) loops them back to the beat and they can try the fight again -- but it'll also trigger any level-ups or full repairs the beat allows, which can lead to some weird shenanigans. Best to remember to hook it up to something else.
Speaking of which:
Important: In theory the outputs from a combat can be linked to anything. In practice, at the time of writing, this doesn't work. A combat moment can only output directly to a beat. If you try anything else it'll go wrong. Yes, this includes endpoints. Beats only.
Congratulations
[edit | edit source]This is all you actually need to know to get a module up and running. Lancer Tactics' module editor has great testing features for conversations, and a playtest button on the metadata tab that lets you skip fights and deliver a win or loss outcome as you like.
For next steps, I would suggest learning about module states, which let you track events which happen both at the module level and in combats within a module, and how to use them with branch moments to have the module start feeling more responsive. You can already respond to player choices through exposition scenes with choices added, but module states let you react to things in a more organic sort of way.