Star Citizen Live Gamedev: Mission Maker
Transcript — every row opens the video at that moment
- 00:00:05
hi everybody welcome to another episode of Star Citizen live game death Mission maker I don't know what was wrong with the Cadence there I just how you doing I'm good I'm good uh uh I'm Jared I'm your humble uh sidekick this week uh with the in-depth shows we usually kind of turn over the driving force to one of our developers who takes you through a bit of their process over the next hour uh this week we have um and what do you do I make missions well I'm a lead there's a lead designer now so not as much missions anymore but I still make missions what he said uh we are going to attempt something that
- 00:00:54
every single person told me was probably a bad idea including me we are going to attempt to make a mission from scratch using the mission verb star words data Forge Robo Hesse all the cool tools that are used and see if we can't make a mission and even get inside and play it for a little bit within the span of an hour can it be done I think so finally I'll be able to prove the community wrong because everyone says I can't make missions we'll find out right so at this point in the show I'm going to turn it over to who are you again oh my God Elliott Mobile Elliott Malby and uh he's going to take you through a little bit of the the rough
- 00:01:41
flow uh introduce you to the idea of it so Elliot that's your camera right there let's go to that camera so sit back a little bit frame there you go there you go good framing so tell them what we're doing today so uh today we're going to be going through uh a mission so we we have a sort of a rough rough pitch outline for it so I am going to be making a prototype uh experience of the mission where we can play it see how it feels see how it plays and then iterate on it improve it and then decide if we if we want to like wait for more things to come in to make it even better or if we think it's a good enough experience to put it out and then improve on it as time passes by so that's pretty much it so walk us through what's the rough flow what are we aiming to do okay right so the roof flow is
- 00:02:30
we're doing a subdue and Recovery Mission which is uh I go to a location I uh knock the AI out and then I have to go and deliver them that is the very roughest flow of it Bob's your uncle simple right no okay um so is there any more to explain before we start let me jump into the process yeah so there's a couple of things that I'm going to try to do um so as people might know I don't like hand-holding um so for there's certain things we do currently in status and for example when you get to the Loki when you get to the location we uh we would Mark the ship and then when the AI spawns we then Mark the AI for you to get listen right it's warm I've got like
- 00:03:20
a 20 pound like staring at me so we we then Mark the AI for you to take out now I'm going to try and remove those aspects so I want to leverage the scanning gameplay so you actually have to ping scan whatever to find the shipping once it has been detected by your ship I'll mark it then and then when you get into the ship I won't Mark the AI directly I will wait until either they see you or you are within a certain range of them um this is kind of like an imperfect solution because it's either I mark them so you always know where they are and you B-Line straight to their location I do this but the perfect solution would be say FPS scanning um but we don't have that yet so it's kind of like playing with the mission and it's trying to understand what the end goal of the mission is going to be
- 00:04:08
like um while we finished it all right so let's start so let's start the screen share uh every good Mission starts with uh helpful encouragement from Luke Presley yes we have Luke so we're already ahead uh introduce us to our tools what are we using to call okay so what the main and biggest tool that a designer uses is Robo Hesse this is a tool that takes all of our perforce streams and loads like loads them all here so it's very quick for us to click and go through them so if I was to click this it shows other perforce streams and I can just jump between them and I can click open my tool here open my tool here open my tool there I can do things like I can get a new build I can have certain change certain files I care
- 00:04:57
about for sync so for example like latest subsumption will just pull my subsumption files ocean levels will just pull the latest object containers and levels which obviously helps to speed up testing and gameplay and then there's the things here to boot the game and things like that this tool was made by amazing Jake mule well not ours anymore and uh me me Ben Dorsey and Andrew Hesse helped to design it and it has saved so many hours not just on mft's side it is a lot of the people in the company use it so so I'd use this to boot on my tools and the tools I need are things like subsumption which is our logic based editor which I'll full screen in a minute uh star words this thing which is how we build strings for the game and
- 00:05:46
last but not least data Forge and this is how we build oh my God like everything in the game this is where you build entities it's where you build missions it's where you build everything pretty much everything that's not a mission now uh you skipped over the Star Wars it's been a long time since we've talked about Star Wars you say strings this is text strings lock ID is the code so it's uh it's text that we put in and we sort of we put in the game but it's it's in this sort of tool here so people can localize it for other languages um but it's always like linked to one one place it's quite common in in the games industry to have this sort of stuff but this is a really cool interface they've built for us to use it now cool all right so first things first um so I've talked about the rough flow um so I need to think of a story now I
- 00:06:36
have been mulling over a story for a while so what I'm going to do is I'm going to create a folder for my story to go into um and this is going to be called sub deal sub deal I can't spell by the way and recover boom and then when it responds already there we go beautiful hey my PC is not a good PC okay um so I've opened up the folder for subdue and recover and then here I'm going to make a bunch of strings so I need to make a story so uh the story usually consists of three three initial strings which would be the title the description and then
- 00:07:23
the from string I don't need to use the from string because I'm going to use a mission Giver that already exists I'm going to use Ruto I'm sure many of you know router and so what I'm going to do is I'm going to make so the lock ID is how we link it so the English text is the text and the lock ID is how we sort of link it uh to this so I'm going to do subdu SUB oh my God subdue and recover underscore title and what I'm going to do to save myself time is I'm going to copy that so I don't have to retype it new description so uh the title is going to be which I've again I've already thought of the story this was this was I planned the story ready for this because I thought it was good the title is going to be called a personal request and the description which I'll open into
- 00:08:14
a big window so everyone can see it is this ruto's asking for help his jump town operation has recently come under attack and we've been struggling to get the maze to where he needs it to be a certain pirate arguably the worst has been causing havoc and stopping his operatives from extracting it for that for Ruto he wants you to hunt and bring them down bring them back to him alive he wants to punish them and recoup his losses emotionally and let's see if they can still say all good ships have a name after he's finished with them so you're going to go to the location you're going to bring back void dude and bring him back alive and if you complete this root oil exposes other hit list for you to bring in people like detox old man Jody Morgan Blasphemous and Xperia so they're all going to be haunted next up
- 00:09:04
this is the starry string sorry I'm laughing my own jokes always there's my story string now after this I have to create a bunch of other strings to do with the actual Mission so this is going to be a bit of typing uh or yeah actually I can take it from my document where I plan some of this so we've got the title we've got the description so we're going to go through little bits of it so I'm gonna go just kind of go through so we have in in missions you have like a long objective a short objective you have a hood and you have a marker um they all have separate strings because we might want to adapt them in different ways to display different things for the player so what I've done here is I've
- 00:09:51
put um so I've done the subdue and delivered I'm doing the locate part of it so this is before you've you've found them this is finding them this is the HUD section now so what this is is on the top of play screen it will say locate and right now on the screen you'll see a weekly line and it says Mission and brackets Target name it looks very weird but what this is is that is a token and what a token is is that allows us to dynamically pull in data from the live game so this is how we're able to do things like generate a name randomly as we go along and have it fill in so this would read locate void dude or it could say locate books or it could say locate gabs it could it could say locate Jared like it could pull whatever from our random system um so I'm filling these out these are
- 00:10:40
the long and shorts so the long is the long is what you see in your Moby glass when you pull up your arm the short is what appears when we flash those notifications up to you um cool this one that I'm doing here is an objective setup now this one is specifically for How I build the mission because if I'm thinking about the mission in a theory kind of way and this is how when we build missions we think like this for other designers sakes so I go okay well the missions are subdue and deliver so what is it I've got to go there we've got to enter the location the AI is going to be spawned once I've knocked them out I take them to a location oh that's a delivery module that's the delivery modular system uh so this is a part of the delivery modular system that allows me to take
- 00:11:27
the target's name inject it onto the target so this will basically say when you've knocked void dude out it will say deliver void due to wherever cool um next up we have the uh oh so uh the way that I'm thinking about this is I want to show something cool and new that you guys might not have seen there is a designer on our team called Nick erko who has been working on uh [ __ ] having ships like the 890 jump but all have ai on so we could do things missions of the future where you just have to go and eliminate a certain person on a ship or you've got to go into the ship for some reason we want combat in there so I'm going to be using that so I want to name the ship uh so I'm gonna name the ship all good ships which is just because that's what
- 00:12:15
void dude says next up I need to make a few mushrooms so I'm just going to spam that bun a little bit uh locating subdue right so then these are the next parts so this is the the subdue part of the mission so this is the player has to this is the general part of the mission sorry this is like the header objective that's going to be go there and take them out again it uses the tokens I'm gonna just drag and drop some of the other ones in there some of this I probably won't be I feel like I should never had dead Ed but some of it's going to be because I'm literally when I'm building this I'm just starting my desk with my headphones on quietly very quietly I've already got the time nice so uh I
- 00:13:06
think that might be all the strings I was requiring so I'm going to carry on filling these out so this is again just expanding the story this is locate uh and the and subdue come on Elliot that's meant to be locate and subdue I can't spell uh all right English the target name and deliver their body to the mission destination that's going to dynamically pull in where we send the player and we've got the marker so that is again that's the marker that will be on I don't know wherever I choose to use it it could be on the ship it could be on the AI once you've found it yeah and then
- 00:13:55
so that's the moment okay the target marker so this one is definitely going to be on the air because I've got a Target marker and then Target ship last of all uh that is the marker I believe on the ship that I need yeah I don't want that empty string Okay cool so that's pretty much all the strings so the last thing I need to do is make sure that I can see the strings we have these labels to where we can stay where you can see them so I'm going to set them to PU and I'd save that and that is my that's my strings done and ready to go so I'm gonna I'm gonna get rid of that now and what does the string get you uh it gets us when we're building the mission it allows it to see a flow of objectives and see if we're giving enough information if we're not giving enough information uh it lets us check
- 00:14:43
that the the sort of the dynamic information that we pass into these strings actually works do things like that yeah basically all the text that's going to show up on screen for people whether it's a Moby glass or their advisor yeah okay just hydrating one second okay next up I am gonna build the missions uh well not the missions the modules so these are pieces of logic uh that will tie together to make the mission now because we try to think modularly I have to think about how I'm gonna do this so because I want to show you the ship thing um an occupied ship we don't have anything to spawn them yet so I'm gonna build one so I'm gonna build it but it's going to be a module and put it in the module folder and that's because it has
- 00:15:30
other use outside of the mission it's it's it isn't a mission on its own it is purely a piece of logic that fulfills a function for us so I'm going to call it Arc you pied ship spawner so then what happens here is I can go from my pony call and says can Jared look any more unprofessional is that a challenge I can try keep going right free in it okay okay so when you've made a mission you are given in it and in it is um the initialization of the module and the unana is the uninitialization of the module that's basically I've started I've shut down yes but we need to inject one more onto here
- 00:16:20
so I'm going to make a Tree in it a pre in it is the pre-initialization stage this um this is where for example I would uh so when socks came in uh Surfside object container streaming it meant that nothing in the world existed which changed how we built logic because previously everything was streamed in uh so we used to know where everything was you could build the complete opposite end of the thing to a pencil and I knew the pencil was there now I don't know anything exists so I have to tell you to go there so I know it exists um but that means I have to tell my module not to just start up because without pre in it it'll just boot up as soon as you accept it and I don't want that I want it to boot up when certain conditions are fulfilled so what I'm gonna do is I'm gonna make a
- 00:17:10
input variable so this is going to be passed into the module by myself or a designer and the input is going to be of type Mission data Century this is this replicant replicant this represents our sorry I'm thinking Mom type in there we go this represents like our locations in the world that's the sort of data form we have so I'm gonna throw on a set Module location so this note allows us to tell the pre in it not to fire until the mission location that I pass in has told it each loaded so the mission location has a an like it's assigned to an object container so when that object container is going to have loaded this will then go hey it's all ready for
- 00:17:57
you and I can move forward with it um I'm not going to say to go someplace it doesn't exist yet exactly so what I'm next going to do is I'm going to get that Mission locations object container and I'm going to make a so the difference between these two panels This is um I use the word Global but it's it's it the they like restrict the scope in which you can see variables so this one is the global so the all these variables here for the everything in this column this these variables can be accessed by any of these like Scopes here whereas this is restricted only to the pre in it these are my local variables um so I use these because I will clog up my Global variables if I didn't I don't want them there it's more efficient for me to make these ones that kind of just get like yeated once the
- 00:18:45
whole thing's turned off or has stopped running in this case so I'm going to make a local reference to the location and then I'm gonna and then I'm gonna get the object's position um because what what uh what I'm gonna have the designer do is I'm gonna have the designer pass me in the ship that they want to spawn occupied oh pardon me and then I'm gonna spawn spawn it so I need to know the position so I can sort of anchor that as the route of where I'm gonna spawn the AI in these sort of area so I need to find a local positions it's gonna be location pause pause what's called l cool uh underscore L is only so like if I'm if you're not looking here I can
- 00:19:34
tell where the variable scope is set so I can like quickly know if it's used outside of here or not uh request response around position um so this so when I open this this is our quick task selector we also have all of this you can go through and select but I just happen to know the names of the nodes because I use them on a daily basis uh right okay so next up I need to make the data that the designer is going to pass to me or I'm gonna pass to me futureelli is going to pass but also designers when they use this of type spawn description a spawn description is um imagine it like a recipe book it's a recipe book before you bake the cake and put it in the oven it's like all the
- 00:20:24
information that it's going to use to build the cake that's terrible I'm sorry uh you're doing so good I know I listen um you know what it's weird as well because I'm a lead so I have to train people you guys this is what my team get enough to build missions with so cool so occupied ships to spawn so this is gonna be that cookbook I've given um I'm gonna keep saying it you can all deal with it um and I'm gonna then then we have the sort of next thing sorry the the next inputs are the position so that's going to be the root point of where we spawn and then I have a range and a spread range is it takes the point and then it sort of smooth like makes a circle at a certain range that's safe
- 00:21:12
and then spawns it so mid is like 5K and I think point is like directly on it and what it does is it starts at that range so if I specify mid it will start from 5K out of that Circle and start searching for a safe location so it doesn't spawn into collisions and players can't get it and bloody blah blah I'm going to set it to close so it's uh and this way it doesn't always spawn in the exact same spot every single time because that would be incredibly repetitive yes it allows us to definitely get that sort of element of it feeling somewhat fresh every time you go there because if you know where everything is the mission becomes easy next up I need to make a spawn request variable so I'm going to call this occupied ship underscore Sr so a spawn request or this so the the blue the blue
- 00:22:01
input these blue things are inputs and the gray thing is an output so this is going to take this data in and then it's kind of giving me a receipt and it's going um will contact you about your receipt whenever we've done whatever you've asked us to my sorry that's terrible that's even worse um but basically allows us to get these this information back here so I can I can tell sort of if certain things have been fulfilled so for example I'm going to make a on chips Bond and I'm gonna also tidy this up because we don't build stuff like that because it looks horrible uh callbacks gonna put it in this folder thank you cool and then next up I'm gonna build the um so now the ship spawned so I'm like okay cool the ship has spawned uh
- 00:22:50
that's great now I need to actually spawn the air spill on the AI on it so what I'm gonna do is I want to check to see if this is the initial spawn of the ship which is this thing and then if it is the initial spawn of the ship I want to do a lot of sell but I don't want to do it every time because we get this call back whenever the ships are streamed back in so if you go away from it the stream ship streams out uh when you come back we need to retell the say say it's like a bounty so you've got your target Ai and he's got a bunch of mates we have to retell his mates to defend their mate or else they forget um so that's what we have this callback for it's very useful for that sort of stuff next up I'm going to send an event to a mission instance and the mission instance is going to be the parents
- 00:23:41
I find it the parents Mission this is basically because I know this module is going to be called by another module it means that I need to communicate back to that module to tell it when I've done things um so for example I'm gonna jump and get this modular event so we build a bunch of events that um if we if we identify that we're sending um a lot of events and they're always in the same sort of format we'll just use a modular event it's the same as modular Mission it's just for a modular event um and I'm gonna pass in the spawn ship so the spawn ship these are things returned to me so when that callback is fired so hey the ship spawned it will return to me these uh variables filled in so it will give me identifier tags these are tags are placed on the uh the ship so I can identify what is the
- 00:24:29
industrial spawn bowling discussed that the pilot of this ship and the ship itself that has been spawned so next I'm gonna make sure that I send back that information because future Elliot might need it and also the design might need it cool next up I need to find objects in the ship so the ship spawned and now I need to spawn AI on the ship so that means that I need to search the ship for a spawn closet manager this is uh the so we do a lot of searching via tags because it's very efficient and it's not expensive to search uh so I'm going to make a tag search here for the spawn closet spot come on spawn classes of course being where NPC ships or Fighters or whatnot pop into the universe behind a
- 00:25:19
curtain where they can't be seen usually yeah and this one this one specifically is for uh so the ship is gonna have ai on it so this one's gonna grab the ones that are on the ship directly and then tell them to spawn um so the spawn closet system even though it's called spawn closet we don't have to use it like a closet with a door we can also use it for what we call Initial spawns which is when the location is first loaded in and the player isn't there we can populate the mountain about because like if you get to a location and you was to beat the streaming and you just see them all walking out of doors you're gonna be like well hold on so you've just come out because I'm here so it makes me feel more alive if we can have them already out and trying to find their usables and sometimes the curtain is just getting them there before the player yeah exactly
- 00:26:07
next up I'm gonna return the found objects which is going to be the um uh ships manages [Applause] oh my God how much time do I have left I have my um you're doing good sweetie I mean are you a winning son no I'm like barely through the first half you're gonna have to make this a two-part cool uh I'm trying to be fast now uh next up is the loop until this is basically because there's going to be more than one spawn Closet in here um I need to go through each of the spawn closet managers and make sure that I um
- 00:26:54
I I send the request to them so another variable that I need to create for our designers is an input variable again of type spawn descriptions called NPC uh NPCs to populate ships I sometimes you just call it what it is you know there's this too in in when I was when I was in school they taught me two of the hardest things in computer science was cash invalidation and naming conventions and naming conventions is the number one yeah it's the number one um current score yeah we'll do we'll do part two next week I haven't asked Elliot but I'll volunteering for it there we go don't worry about it we'll do it thanks we'll
- 00:27:40
finish up next week we've never done a two-part NCL it's a good one uh any sponsorship yeah so so then I'm going to take the current spawn description that I've popped so popping is like a Pez dispenser I've pulled it out of the Pez machine and I'm gonna use it I'm gonna eat it now so what popping's like yeah just like a peasant yeah Japan spent that's how I describe it have a lot of popping Pez dispensers when you were a kid yeah did you not popping yeah because you pull the thing down it pops out they did not pop up no was it not much oh it's so precious out you have like some automatic fire Pez dispensers well what do they say tomato tomato I don't know what you guys called it I'm English I'm British right so it's yeah anyway
- 00:28:29
um so I'm gonna take the uh the ship spawn closet manager that uh we have here and I am going to then take the current spawn description that I've taken out and then I'm going to make a another look variable because I'm going to make multiple spawn requests here request it's called l [Music] uh so I'm gonna make multiple spawn requests so what I need to do is uh merge them all into one because they can only the information can like this node will over overwrite every time that input so I have to make it local so then I can make the more call back on one so I don't have to make like a thousand callbacks foreign this one is going to be called something
- 00:29:20
like NPCs keep buying ships guys yeah cool so that's the sport that's the spawn request for the NPCs let me check all this is right so I pop them yep I then take the managers and then I pass it in cool right nice nice so this this will spawn it so next up I need to make sure that I know when the NPCs are here so I'm going to right click and get another call back and it's going to be on the spawn closet spawn which is this and essentially all this one's gonna do is send event to Mission instance like that
- 00:30:11
and it's going to send the modular request again of AI spawned because this time it's spawning a an actual NPC like uh yeah so I'm going to send that straight back to the um the thing then from there that is that's the ship the occupied ship spawner I believe done so that should spawn ship and spawn all the AI on it for me so the next thing I need to do is now actually build the mission I've not been building the mission for the past 30 minutes no no it's it's there's a there's a thing people often wonder you continue to wear all that there's a thing people often wonder why we do a show on this or do a show on that and the number one criteria that I have personally being in year nine as I
- 00:31:03
am here is I ask myself would anyone else do this would BioWare do this as a piece of promotional material would would Activision or or anyone else and if the answer is no I'm instantly intrigued by it which is one of the things I love about one of the many things I love about star citizens I think one of the like the when I see them ever make one they have a highly polished like GUI for their tools and you know they all work flawlessly and it's like we build our tools for what we need now they don't have to look pretty they just have to kind of they don't actually look like the thing that they're showing either it's always been a it's always a manufacturer thing what I liked about what I liked about this this idea of of having you do this is to show we you know we did that we've been talking about the the mission manager
- 00:31:51
and the verbs and all this stuff for years now and I wanted to show that you haven't done any you're not programming here the the this the the the work to this point has been about building a CIS building a modular system that runs through flow graph that runs through all these you know neat tools like Robo Hasty and anything to automate a lot of the programming work so that then we can democratize the process of mission creation to dozens and dozens of other developers so designers who are typically not programmers nope can come in and just focus on being creative once they once they get the the handle the understanding of of a select few verbs they understand the syntax necessary this goes into this this goes into this
- 00:32:39
you know there's a learning curve I'm not going to sit here and say it's not a learning curve we're demonstrating the learning curve here but this is how we scale yeah this is how we go from well you know if it only took if it took you four years to make X number of missions how are you going to make how are you going to populate you know another star system with all these missions now you're going to populate you know 10 star systems while he's missing this is how we do it the the the game development is exponent Central it's a lot of the early years are is is in you know building this framework this this groundwork this Foundation any more synonyms I can think of uh this thing under the thing where it allows you to then iterate faster and more efficiently as you go forward and that's one of the reasons we've been telling the story of the mission manager anything over in this assumption over the this last year
- 00:33:28
because it having been here for as long as I have it's exciting I'm starting to feel like we're there I'm starting to feel like we're at that point now where where development can begin to scale up and we can start making things faster than you know we have at any period in the past you know barring things like you know uh long-term persistence I think you know pulling that Foundation out from under us and having to start over but so I've been talking through this we haven't explained this whole part what are we looking at right here uh it doesn't matter it doesn't concern them it doesn't concern them no I am not talking about spaceships Kenny what's a spaceship I don't know never heard of it uh we I've currently survived I've gone in I've started building this you didn't actually drink out of your water oh just open the lid
- 00:34:16
this is my life uh yeah so I've I've started building the main mission so what I've done here is once again I've created a pre in it because the pre in it will stop this from properly like running until the player gets to the location because there's certain things that I need to find when you get there uh so making sure that making sure that you don't that normally loads is pretty vital to the mission actually working uh what I'm doing here is again that's just set that up this is the module I just made this is the occupied ship spawner um and I'm passing in the location it needs to care about the ships I want it to spawn and the NPCs to populate and now I'm so everything you spent the first 20 minutes doing yeah is in that box right there is now in that box and this is how other designers build
- 00:35:02
modular missions is I build a lot of these and then they just do that and plug plug everything in and then my stuff just kind of just does a lot of heavy lifting for them so they don't have to worry uh I'll worry about it so so do you I can't spell subdue so you know I know you're the one who tries to college today yeah I know but it's like you say it makes sense to be called that it doesn't mean I can spell it subdue tag it okay cool so this is going to create an objective that the player can see then I'm gonna actually Mark some things to the play knows where to go and I'm going to use the location obviously I put here so it's actually just on the location so what I'm doing is I'm going on to my Star Wars tool and I'm grabbing the strings that we that we
- 00:35:53
that way you didn't do any of this is me that I've made uh that I've made here there we go and I'm putting in so I'm gonna I'm gonna so then we have some sort of extra options on some of these like nodes so I'm gonna display the distance here to make sure you know just how far you're going and it's not just a marker though in space yep so I'm gonna do that and then I'm gonna do a set subjective this oh my God type display disk I can't spell what do you mean Jared has been coding this whole time I'm checking his work it's called the buddy system all the rubber duck there's this thing in programming where um if you can't figure your logic out you talk to a rubber dusk duck on your
- 00:36:41
desk and vocalizing out loud it'll help you solve your problem so you remember rubber duck I call that David you know what mine's called David as well you've made me let me try to follow uh objectively okay so next up to the objective display is a fancy word for saying hood uh so this is what's going to display on your hood there you go and I am going to also make it managed per player so I don't always want to show the hood I might want to control it next up I'm going to create a oh my God a sub-objective so a sub-objective is going to parent to the objective I've just made boom
- 00:37:30
and this one's going to be called locate probably objective or Target ship location it's got OB J cool this one is going to be hidden from you because I don't want you to see it until you get to the location and I'm going to take the long string that we built that we built stop they didn't do anything earlier I did short so locate shot among and then I need to make another mission objective display but I'm lazy so I'm not going to retake the node and I'm just going to take this one from above and I'm going to get the hood for locate and do that with it however this one I need to not respect its inherited
- 00:38:17
visibility what that means is that because this is parented to this and this is uh this is not hidden but this one is this display would likely not show unless both of these were visible so I'm going to tell it not to respect its parents and just go off the rails and do what I tell it to uh cool uh next stop just play four players cool and next up I'm going to show are the objective display for one of these for the players because I want them to see this one so this is going to be the target ship location because again I'm managing it per player but I'm also telling it not to respect by default it's going to be off so I need to tell it to be on for All Mission players and we have things called Magic variables uh and that just
- 00:39:05
means that I type them in and as long as I spell it right uh code links it up which I spelled it wrong instantly it's Mission players how many how many bugs do you think are attributed just to typos when it's me quite a review I do it all the time I'm really bad at it but we tried it we try to when we identify this somewhere that you can type stuff in we try to fix it because we know it's not a good way of of like handling this sort of stuff uh cool right nice so that is that's that's the um that's that's the first part sorry that's the first part that's the second first part that's the
- 00:39:53
second first part next up I need to get a reference to the action area where I'm going to spawn them so I'm gonna do a uh well first I need to filter the action area uh set come on let's set action area filter pull pull this uh this node so action area filter exists for a reason and it's because an action area is a volume in anywhere that will detect when things have overlapped with it um and the issue that we used to have and again this is it was like hey there's a problem here and then sort of fixing it the issue we used to have is that um we could detect everything when I was building Siege of horizon I used to crash because my action area detected a sprig of mint that was on the bartender's drink and to my action area um so this filter thing I've requested
- 00:40:42
quite heavily and we got it so that I can make sure that mint doesn't enter my action area and break my game so I'm gonna filter for anything that's human controlled which means that I control it you control it if you who is watching is a human get some Epson chat for sprig of mint um Mission area so now I need to get the mission location action area so I filtered it so I have to filter it before I get it or else the filter doesn't apply so I've filtered it and now I've got got it so it's gonna um get it we've now got all the [ __ ] arrows no yeah so that will now filter down my action area which now means I get to make how much force you might have got
- 00:41:29
20 minutes left my god um all right we'll come back next week good afternoon yeah um so now I need to wonderful thing about scl said it never ends there's always another Friday it's always another Friday I have to fill Elliot I have to make missions which one of us in the worst boat yours your videos work they go out South burn those are rare I want to say something so badly okay uh uh right so I'm making the action area call back for on entered and iron exit for again human controlled things which is good but I still need to do a form of filtering so
- 00:42:19
on exit I'm going to tell the player to come back to the area however I'm going to I don't want to tell them to come back if the target's already been found because if the target's found they might as well just always have that marker because they're always going to know that information um so I need to make a entity tracker which where I will use a valid callback to know if the target's in here so this is going to be called Target cup isn't tracker empty so this is me checking to see if the target has been put in this variable and then I'm going to check to see if the person who's come in here is a mission player so um if it is empty and the entered exited person the person who's left
- 00:43:07
then I'm gonna add them back to an objective marker so I'm going to add them back the extra density to the subdue Target marker so that will be the marker that's like in the search area who then when they come back in the area actually so I don't have to retype I'm just going to copy these two notes so when they come back in the area I'm going to make sure that the the target once again is valid and then I'm gonna do a bunch cleanup so remove objective marker move object where's my node remove I bet it's remove player from yeah it is cool uh so this is gonna remove because because they might have I mean even if
- 00:43:56
they've exited to come back I always need to make sure that this doesn't exist on them this marker so I'm going to remove it I'm also then going to show objective display for players this is going to turn HUD on so I'm going to put the subdue one on for the entered entity so the person no I'm going to turn this one off because this is the one that's already on their screen yes yes yes yes uh G Kenny says Jared can you do a nice ASC about uh issue Council uh we did it was super popular everybody was really happy with it and and and the comments were really positive objective
- 00:44:56
um the one that's the locate because you're in the area now so you need to find them again this is only if the target hasn't already been found unless you want that attack track so I am going to check the Target location and do that for the incident to see true true if you're there by far and that's all cool so this is gonna play against it the market to go there goes away the hood that was there goes away and it comes up with locate and then it will show the objective in the mobile glass as well so you'll see a locate locate void dude and then kill him next up is an event so this event is one that's going to be that I've sent so if you remember I talked about those modular events in my other module that's I'm gonna register here and listen for it because you have to listen to them or else they can just get sent into the void and you never hear them
- 00:45:43
uh oh my whatever I put the modular they're all over modular events Marshall events where's Mission modules Mission modules module emissions my God my naming thing is horrible modular events uh AI spawn aiming conventions they have undone so many aspects of many many games over the years I like I would I would wager that most many I don't know the most but a not insignificant number of AAA games have had naming convention revamps during the course of their during the course of their development just this okay we got it we got to fix this like we were naming it it worked when the game was
- 00:46:31
this big and now the game's this big and we've gotta we've got a we've got to completely redo the the structure and then some technical director leaves and somebody else comes in and goes oh this naming convention is garbage and they have to go through and they redo it again naming conventions are I have many traumas in my life yeah naming conventions are one of them you want to know the what I mean apart from naming professional worst thing I've done is not linked a node like that and then booted the game and then like waited for its boot got in and then been like I didn't link my nodes yes that's even worse now I wanna I wanna stress that the reason that is so bad like oh well that doesn't seem so bad it's because in its raw state in the Raw state where you know you're not on the you know the big servers anything it
- 00:47:19
takes about 20 to 30 minutes to boot a local version of the server and client so when you have done this part and then you go to boot your local to see to see if it's working to the point and you realize you've wasted that 20 to 30 minutes you were waiting because of a single line missing that's why that's so tragic yeah and the worst part is if you pull like your lead coder over because it isn't working you've not noticed that line maybe because you like zoomed all the way out and the lines are like tiny and you're showing it over a bit logic he's like well you didn't you didn't we'll start over then you screw Zoom all the way in and he's like ah and you're like ah thanks Dave one little tiny line one little control One Mono quarter inch audio cable um so next up
- 00:48:08
I am going to set up um the object the objective marker that's on the ship however because of the whole thing where I want it to be scanned for I'm gonna make this objective Market exist but don't know but like not truly exist because I give it a null item it means that you won't see it in game um until I tell it to show and I'm going to tell it to show after uh after you found it so this is again going back to the modules we build I'm going to place another one down here uh that is called find object battery radar another one we've built which basically you pass in the ship that you care about so the AI spawned you pass in the objective that has the marker on it because it will turn it on for you and I just leave this to true so what this
- 00:48:54
will do is it will detect every way you can find a ship via Radar Now everywhere you can find a ship via a radar is passive scan which is it just pops up on your little radar on your ship there's something called blob and then there's actual actual scanning so uh show objective so then okay cool right nice so next thing I I'm doing here is I am just making sure that the objective is is definitely existing for the mission place um in case there's been any way you can sort of get around it which is that so
- 00:49:43
uh what what you saw missed here was I am checking the AI spond and I'm checking to see if it has a tag of ship because then I know that the thing has spawned is a ship because if you remember when I built the module I used the modular AI spawn for both the ship and the NPCs so um so that's why I've done that so I can filter it because then I know if it's not a ship and the only other thing it could be is the is an actual like NPC AI That's on board it so I'm going to build another separate entity tracker here which is going to do a um like a global sort of collect so this is going to be um all occupiers so this is going to track all of them and then I'm going to do something
- 00:50:30
called compare a compared bullion and I'm going to check for a bullying that I'm going to make which is kind of going into that like how do all the designers use this how are they going to pass all this information I've got 10 minutes left um how are they going to track all this information oh thank you don't worry about the 10 minutes um yeah how are they going to track all this information like how are they going to pass it in how they're going to tell me what they want and this is this is sort of pre-prepping for what I know in my mind I'm going to give them to wise so I'm going to do a thing where I detect if they've given me a Target tag which means they've they've said this specific AI I want to be the um compared to say grab random it's different when you have to talk
- 00:51:19
through the entire thing isn't it yeah yeah it's a lot quicker when I don't have to tell anyone what I'm doing but this is fun right we're all having fun no I'm I'm very happy I'm very happy this is exactly what I had hoped that stream would be that you're doing a good job hey uh so the next thing I'm doing is I'm checking that thing that I give the designers power to so I checked to see if an identifier tag which is what a designer can set has the tag of targets then I know that they've specifically given me a Target which is this stuff so what's going to happen is every AI that spawns is going to pass through here and it's going to constantly go through and if this has been set to true it's gonna check every single one of them is this got the identifier tag of Target and then if it has and then if it has that's where I can
- 00:52:09
sorry one second that's where I can go through and make sure that I pass the correct AI into the mission so uh Adams is to not proximity tracker it's gone I've lost my node you know what I haven't lost this right there friendship is still the best ship in Star Citizen hear that John crew it's friendship you know I got murdered by dark law on live he just murdered me and I checked his stream and he was just sat there like this like it was the easiest thing ever and he killed an entire Sig Dev team and just like then what like walked away third floor is pretty good though player or morally no what player okay
- 00:52:59
not morally because then we popped in his channels like you know you just killed me and I'm I'm not gonna try a Scottish accent or whatever but he was like I didn't know dark law you're a jerk and you can clip that and use it on your stream right uh so I'm going to set an object so I've I've added the target which the air spawn to the Target list and now I'm going to make a variable uh to also store the target as an object and Target oh voila and then I am likely going to also convert I think the target to no yeah I'll do that yeah yeah yeah cool yeah yeah sorry I'm
- 00:53:48
trying to think through what I'm doing next up knocked out so if and because it's subdue it means that I need to track if they've been it's not without some dude uh I'm gonna make a call back on the entity tracker and that's because right now the only way to subdue somebody is to knock them out we don't have that exactly the additional Bounty Hunter stuff put them in stasis or put handcuffs on them stuff like that yeah so one of the challenges of making missions for a game that's still in active development is you know you make them for the tools and features that are available now yes we will yeah it's uh sometimes it's like you're shoehorning things in and sometimes you most of the time it's you're always just trying to get that feeling for what it's going to end up like because you want it
- 00:54:36
to you want it to play as close as it can and then fix up when it comes to later um so uh so admission so what I'm doing here is that you've knocked the target out so void dude had a tag it on him to tell you to go knock him out uh so now I need to remove that marker because the delivery marker is going to take over and um tell you to go deliver the guy right you don't want to still have a fine boy do Marker exactly and they're knocked out in your ship uh and then what I'm doing here is I'm adding the mission as the owner of void dude because uh we have we have a lot of cleanup things in our game so obviously clean [ __ ] out the world that doesn't need to exist um and when you kill an AI it does that and if you was to leave the area the AI should be cleaned up um but because this is a mission
- 00:55:23
critical item we don't want void to be cleaned up we want him to stay uh so next up again another module the this is one of the delivery modules that I think was about 20 minutes into that run I did on the ISC about 20 minutes into the version they saw true and the version I had to sit through was like 45. what can I say I like what I do you know it's it's despite what's his name whoever was I don't remember now you know uh these shows the the reason I can sit back the reason I can I can literally kick back and put my feet up my VHS shoes and why not is because Elliot is one of those people that I trust implicitly he's proven
- 00:56:13
himself time and time again he knows his stuff uh not not spelling but this isn't this isn't a spelling bee here um and I don't have to hold his hand I don't have to guide him through the conversation through anything else I can just sit here and I can let him steer the ship which is nice every once in a while hey y'all I just say nice things about people it happens I could feel the heat radiating from over there just saying nice things Jared said didn't say nice things so uh what I've done here I've just filled in some of the nodes that I need to fill in on the delivery uh module that I'm going to call and I'm doing a thing called stop proximity tracker because I want when you go to the ship
- 00:57:01
the issue is well the issue that I see which is that whole imperfect situation that exists is you'll know where they are roughly so you can kind of guess what floor to go to and that makes for a makes for the experience that I don't want you to have I don't want you to know and go straight to them because that's boring I want it to be somewhat of a challenge for you because you've got brains right you can think for yourself so find them use your eyes wait the views and opinions of La Maltby do not represent those of cloud Imperium games or what what uh I'm just a designer a games designer I clicked controllers uh Jared just said all the other developers are incompetent I said being able to communicate effectively on a live TV
- 00:57:51
show without your head exploding from anxiety and brain detritus it's not a skill that every human being in the world has I barely have it there was such and go there for a little while towards the beginning like there's there's a moment about like seven minutes in we're at Eva it happens is that why you held my heart yes so now you know how nervous because you felt the sweat I felt it I felt this way so uh what I've just done quickly here is I've made a modular so that we have this event called the modular Mission objective event and this is basically have has this module I've built completed its core objective so in this case this is going to be the delivery objective calling back telling me it's done so I'm gonna check just to make
- 00:58:38
sure the players completed it and then after that I'm going to complete the mission because you've done your work there that's it right uh complete nice good easy real easy one next up uh we have the ship so uh the ship spawned we have a ship I've converted it to a ship reference purely so I can get this call back which is on object centered this allows me to know when you the player has entered uh the ship and then from here I can do that do the thing where I take all your markers away like let you use your eyes to go and hunt for them however I'll give you that hand of the proximity tracker to sort of guide you through it's a place to remove
- 00:59:29
entered person nice and I'm going to remove you from the target ship location set mission objective display so now I'm gonna put on an objective display which is telling you to subdue uh void dude uh yep so I need to find my string for it give me two seconds which is this boom so this is going to say like locate and subdue um Target name which would then dynamically resolve to avoid dude take my Scented Markers away when I was in grade school we had a we had a we had a pencil machine you put a quarter in you turn it and give you two pencils and the pencil smelled and they smelled like different things like fruit smells you had to pay for pencils it's a different time it's capitalism I
- 01:00:21
was just when pencils was just invented chalkboards before right I'm a bit old but not that old you won't be seeing me on the next SEO no yeah come back and finish this you come back finish this then we gotta play it and see how well you did oh God somebody remembers the smelly pencils right it's not just me uh let's see all right well actually we're at about five o'clock so where's a good place to wrap this up I literally after I finish this now done all right so what did we just do where are we at now so I've you're on so when you get to the ship now I am going to take away the markers I'm gonna put a hood display
- 01:01:08
that says uh please find to subdue him and then I'm going to start a proximity tracker the proximity tracker is just how close am I to them so when you within 10 meters I'll mark them um and this can be played with so like if 10 minutes isn't right I'll open to 15 so on and so forth um and then there's a bunch of next steps after this but we're nearly there yeah so what so what we'll do what are you doing next Friday Akin uh hopefully hopefully from Manchester I'm off home for uh for a few days but we'll have to work that out all right so let's we'll see if we do next Friday whatever bring it back and then play the mission because I really like to get in there and and see this work yep yeah yeah same all right meet you over that camera hi everybody so that's been Star Citizen
- 01:01:58
LIVE Game Dev Mission maker uh I'm not the mission maker he's the mission maker that was Elliot a good job man it's we've been doing Game Dev shows for six years or so now we've never actually you know it's impossible to make anything for Star Citizen in an hour yeah uh but I think it's always important to demonstrate process to show uh especially this the big victory of of this system is that it has opened the process of making missions to people other than programmers you know there's this there's this perception there's this mentality that you have to be a programmer in order to make games yeah you don't no certain aspects of it sure yes but you know part of the game development is making these tools making making subsumption making Robo Hesse making you know making Star Wars so that
- 01:02:45
uh just you know other people who can unders who can follow instructions and can and can learn syntax yeah uh understand you know it can build these things and that's how we scale up to the uh to the big immersive Precision Universe yeah yeah uh before we go we're gonna raid somebody uh we haven't rated anybody in a while uh CLX which is a maker of custom PCS are actually um in the process if I'm not mistaken they should be live now are are currently building a PC for atmo Esports which is you know one of the Esports organizations in the in the Star Citizen Universe uh they're going to be on with our own uh Jake uh let me check the name Jake Bradley who is apparently somebody
- 01:03:34
who works here he is on that stream um say hi say hi to Jake um hi Jake and uh yeah take care everybody we'll see you here next week bye
Transcript from YouTube’s automatic captions — punctuation and Star Citizen jargon are approximate. The video itself is hosted by CIG on the official channel.

