[Music] hello thanks so much for coming this is the second tech toolbox for those of you who weren't here last year what we try to do here is you know when you make video games I hope that's a thing that sounds familiar and you end up having this recurring problem that is just really tedious and maybe you write some code or you make a little tool or you make a little app that overcomes that problem that's the sort of stuff that I always find really interesting like post-mortems and other people's video games like how did you do this and how did you know I always have to go through this tedious thing or I never thought about solving a problem that way and often for most games there never will be a post-mortem and for most of those tools they'll never see the light of day that's why we put this session together and we didn't open call for just like what's the thing that you made basically for yourself what interesting problems would you solve or did you solve them in an interesting way so it's basically interesting solutions or interesting
problem we have five speakers today they get about ten minutes each the first one is Evan Todd who is going to talk to us about his system for node based dialog trees let's give me aa [Applause] hello I'm Evan I am nobody but and I'm a poor man so and this is the poor man's dialogue tree how to make a dialogue tree if you don't have any money but so essentially I'm here for talking about dialogue but I'm really here to sell you on my development philosophy and to get you to convert to it it's this very powerful paradigm that it's so powerful that it actually extends beyond game development into other aspects of life in fact it actually saved my parents
marriage it's that powerful I'm just kidding they're still divorced okay so I'm going to talk about the right way to do things which is all right I need a dialogue tree I'll go to the unity asset store I'll buy an asset and I'll kind of Frankenstein patch it into my project and this is I I'm not a big fan of this because it's expensive probably it's third party so it's designed to do a lot of things for a lot of people it's not exactly what you need and crucially it's boring because I don't know you're letting other people do your job for you and it's fun to make stuff so the poor man's way is to write your own to get 80% of the solution for 20% of the work and you get exactly what you need so this is the poor man's dialogue tree so what I needed was an editor that I could create a node based system to hook dialogue nodes together and everything the right way to do this would be write
it in the same language as your game you know make a really nice like windows form application with all this stuff it would be performant it would have the same code base as your game and everything but that takes a lot of work so I did it the poor man's way which was html5 cross-platform easy to do performance I don't really care about because it's just the tool for creating things so it doesn't have to run super fast javascript has so many libraries some sane and everyone speaks JSON so you have a really easy to read format coming out of html5 so this is what I came up with I call it dialog er and it's just a there's a library called joint jf that I used for the fancy node sort of connecting things it's really easy to set up and you can see this is actually running in its own little application it's not actually running in a browser I used something called nwj s for that which is it's really simple you
just take all your JavaScript stuff zip it up and rename it to like a dot n W file I think and then you dump it into the nwj s folder and it turns it into an application it's the easiest thing in the world to make a completely fake applicate desktop application that feels like a real thing but it's totally not a real thing yeah so join Jay s is great for making diagrams and graphs and things like shoot what's that called anyway for connecting things together nwj s is great for standalone apps you have the full node API s as well so any kind of file access networking you get all access to all that the whole thing was 700 lines of JavaScript so it was very small easy to write and it's very extensible to you can add widgets to nodes and things very easy with HTML so the way it works is I have three different types of files so there's a dot DL file which is its JSON and it's
the full 2d layout of all the nodes and all the properties and things that you need and then dot dlz is the same JSON but it's just what I need for parsing a dialog tree in the game so it's kind of optimized and then I use actually excel files for the actual strings so if you look there we go these are kind of like these are like IDs they're not actual dialogue and so what I do is I have an excel file with all these IDs in one column and then the actual strings in another column why do I use excel it's because it's really when you're a poor man and you have no money and you go want to pay anyone to translate your game you often have to do with spam translations and if you ship your strings in Excel and people will come to you and be like hey I want to translate your game how do I do that and its
really nice to be able to say oh it's just an excel file open it up and just change it yourself and then send me the excel file okay so this is this is my one of my excel files and people were just like hey can I add Hungarian I'm like whatever just add another column it's super easy so TLDR do it yourself it's more fun that way and I'm sorry this wasn't very technical but if you really are interested in dialog trees and how to do all this stuff it is on github and you can see there's also an article I wrote about it on my website if you want to see the exact details of how everything works and everything but we only have nine minutes so thank you so thanks Evan next up we have here who worked on darkest dungeon and he's going to talk to us about how they did the
data implementation for that game so hi my name is Kiera and I'm a programmer on darkest dungeon I'll be talking about automating data implementation with IDs over this talk I'm going to be talking about a short a bit about syntax a little bit about generating using IDs referencing IDs how we use the file system hierarchy to automate data implementation linking code data to file data and automatically generating data so a little bit about darkest dungeon it's turn-based RPGs it's about dealing with the challenges of stress a lot of the content is procedural so we're dealing with a lot of a lot of data they can be post up in many different ways it's on many platforms as well as a mostly a two-person programming team and
was made in C++ 11 with custom engine and fair amount of middleware so the little syntax about the talk I'm going to refer to a lot of things as classes that's just stuff that's not going to change while the game is running so examples the ladders we have a gesture that's a hero class and he has a max HP of 35 he has a skill called inspiring toon and his battle ballad is a ranged attack another thing about syntax is I'm going to be talking about ideas a lot of the talk is gonna be about that we'd be using string formats of inserting strings and other strings the numbers in the string so instead of using the kind of traditional string format code I'm going to use a bold and square bracket syntax which will make a lot more sense when I show you an example of it so one great way of using IDs is in your when stuff is missing or there's an error or something is invalid we used ideas a lot for our validation messages because we'd be just hooking up data as programmers and then having the content coming after so we've explained missing audio message ideas or missing ideas of objects that
don't have the appropriate data like if a skill is missing on effect string formats are really useful for generating file paths when you have new IDs coming and then new file paths are generated in your data will be hooked up the one thing about this is you need to have those error messages like I showed before or be able to handle data being missing so example this is our resistances we have eight resistances in the game that a hero or monster can have and whenever we add a resistance ID we generate a file path based on that ID that made um whenever we added a new one that would automatically show up in the u.s. I would automatically have an icon associated with it as well as a value for the hero and like a localization name so we can grab all those using those resistance IDs another useful thing we did with IDs is a separate files into different folders so we have the items in the game then items are associated with types and IDs so we're
able to put all the trinkets and a trick is folder and all the gems in the gem folder and automatically hook up all these icons because I don't really want to spend the time of going through and saying well the lucky guys should use lucky dice icon another thing that's useful you can break up your files into a you can bring up your data into multiple files using IDs so we have a art file and a info file for every hero and they they were worked on by two different people with two completely different pipelines so using the IDS we'd grab for a given hero clash we could link the art file and the info file share most the design data another useful thing about ideas to make sharing logic between multiple things very easy so on the Left we have a buff glass with which is referenced by Aidid by two different trinkets so in fact buff glasses did change and maybe instead of increase its attack rating then that would reflect in both trinkets when
you're using IDs you can also reference shared IDs so what we have here is we have our colors in the game notable harmful and neutral are all defined with our GBA values and then the four underneath such are all part of the game over screen they all reference they're all ripped when the neutral notable and harmful change then the game over colors would change as well this also helped with clicking step up because we can hook up these colors and then just assign them to something and then have art come in afterwards and fine tune all the different colors another useful thing when dealing with IDs you can generate the types of classes while parsing different types of classes so for example all the trinkets and darkest dungeon are items so whenever we parse the trinket class which we have hundreds of we'd automatically generate all the data that would be consistent for the item portion of logic we use the file system hierarchy to parse a lot of the to generate these IDs so we go through
the folders and grab the Associated uhm names of the folders and use those as our IDs to then hook up data with so for example every folder and data heroes is one of our hero classes and every folder and data monsters and mods for class so we just create a new folder and the base assets to be able to create a new monster in the game we'd use regular expressions to kind of grab the the string we needed out of the folder path so for instance the data monster's bloated corpse data monsters swine asar and data monsters unclean giant would all become there that's how we grab their IDs for those monsters one other useful thing we did with IDs is we link to code data to file data and this technique uses preprocessor macros and Needham's as well as and what it does is it links to declaration of a gnome two IDs and other constant data the enums are very useful in code is mostly you know and the ids are great for parsing data files so first i'm going to show
the unlinked method so this is what we accomplished with the link method I'll show afterwards but with just example IDO mend and array of strings the have to be kept the same size they can apply in consistencies and if you mess up spelling you might not catch that at at compile time is it string data so the way we linked it is by using macros we'd have nested macros that when we declare an enum would go through and create enums associated with those IDs defined at the top so whenever we added something the number types declare that would that would create an enum as well as create a string ID this is great because it always be in sync and then they'd always have them this long would always be consistent between the two of them we use that for our options in the game so each option in the game could have multiple constants linked to it there were really it only mattered in code so stuff like how
exactly a graphics option would work and whether that would choir a reset was a code decision so the data would be kept in code and then we'd access those through functions that took enums in so we'd always know that we have the data associated with it because that's how you declared the data and we'd access them through different functions to grab that so that was very useful for automatically generating data our save load is JSON base and our analytic stages JSON base and parsing consists of going through that enum grabbing the linked IDs and creating jason dictionaries so to the left is the save file for our option fountain to the right is the code for restore loading that's a file which basically consists of going through each option grabbing the Associated ID parsing the JSON so whenever we added an option in the oh and every added option will automatically be saved and restored we also used it for analytics data so we'd be posting our options analytics data to
ofwhat profile options different heroes would have so when the moma added a new option that would also show up in the analytics data because we're just going through every option grabbing the appropriate ones we want to post the analytics data and then posting it using the ID we linked with the enum and natural thanks redick's videos for working with me on 2x dungeon types for power patio for doing great job on sound and pH artists and come with lv other programmers and that's my Twitter and email and I'll examples of the source I showed on my website when I returned home thank you thanks Pierre at least find it really interesting when people do stuff that feels really counterintuitive like we're using file structures for actual logic but it's really cool to see that you you know was the right solution for your project so next up we have Kate Compton
who wrote a tool called tracery to generate text like orcish insult things like that right okay yeah give it up for Kate hi everyone I'm Kate Compton I'm Galaxy Kate at all the things that matter and yeah this is my Twitter handle you might know me because I made the planet slums for or I was one of many people who made the planet some score I did some fire stuff on some city then I got forward and I went back to grad school to get a PhD so now I'm at the UCSD express of intelligence studio which uses AI to make art and weirdness and occasionally games and basically I'm getting a PhD in doing PC G so that's where this comes from go slugs okay good luck there we go so trace rays the story of how I thought I was making a little text generation toy and it accidentally turned into a language and then Twitter box happens so
this is I don't really have my timer up here anyway this is a so it was intended as a super easy tool this is actually to keep myself from having to do a pencil and paper assignment that I that I had been given I wrote a little JavaScript program to do instead what it is is this is the minimal version of tracery on the left or the trade straight forum on the left and then I'm going to be super pissed if none of my gifts work all right that's that anyway so there's some generated text on the right of game generating bad game pitches and printing them to the screen um so let's see it's you have you input you import tracery then you had your little JSON object that describes your grammar so this is basically the recipe for how to generate whatever it is that I'm generating and this case bad game pitches you can add modifiers if you want and then you're pretty much ready to make content now you hit go and you make a bunch of content so that's that's it the
language itself is very simple it's just using a hash tag syntax to do grammar generation so here's hello world so origin is the string greetings world and then because greeting is attached in hash tags it'll go and paste in one of the greeting options and that does it recursively so you can go down as far as you want and you recursively defined symbols you can use modifiers to change text like through pluralization do proper a and variations if anybody's done text generation you know that that stuff is like the absolute devil is like getting all of the proper English syntax and you can also store and reuse generated text so if you generate a main character name you can reuse that over and over again so basically what it does is it does text generation and it does text generation in a weight is really easy to program so this is a dress generator that I made in response to the dress controversy I made this in 40 minutes which meant that I was only 10 minutes late to catch the dress coolness but yeah it generates hit a little button and it will generate dress
descriptions forever the TLDR tracery is really easy to use especially when you're in JavaScript and people wrote all sorts of nice things about how easy it was to use and how it got the deck into programming so I put that up online and somebody took it George Buckingham and he made this tool called chief ops done quick which because tracery grammars are a JSON object he was able to run a node server that you would paste your little JSON object in log in with Twitter and he would make you a Twitter bot and so anybody who could type in you know a 5-line grammar about making Pokemon insults could then have a Twitter bot running every you know five minutes or so and people did we have about 600 of these running currently every soft thing he tells me how many of them are going here a couple of my personal favorites there's a hipster cocktail generator a compliment generator or something that does Nexus Mexican literary theory generator etc and then somebody realized hey emojis are just another form of text so we can do emoji generators so they
made emoji Twitter BOTS and this is pretty cool and then somebody posted on Twitter this strange thing this is a tool that I had made an online visual editor for tracery that people were enjoying they said hey look what I got it to do turns out SVG is just another form of text and if you have an HTML page it'll parse that as an SVG object so suddenly it could make graphics this weird little thing that I had made to like make Roman comedies was making graphics so George went back and we updated tracer a little bit so now I could make graphics Twitter BOTS so there's a tartan generator and circle party and a little one that I made to do spaceships and a gorgeous one that George made to do soft focus landscapes so yeah Twitter box but this is the indie game summit so I should talk a little bit about games you can still use in JavaScript games and people have ported it to Ruby Python twine somebody a couple of people are working on unity I don't know how well that'll go my friends Greinke has used it in a number of their games and used it to
generate text on a boring conversation at dinner parties surreal greeting rituals for greeting your beloved companions so like these core Julian to your partner secrets and clearing your mind of judgment say yo oh there we go okay I just have to press GO and then it does it yes and then I'm doing some experiments with Wes experimental games as well like how could you actually use this in other forms of games and so this one on the right is a very simple simulator for a a hipster restaurant and it generates weird hipster recipes you can run your hipster restaurant and every time tlb comes trendy you can fill your recipe your restaurant with like kale pizza and kale ice cream and kale soda and this is my experiment can I use generated text to make something that is incredibly drab become infinitely replayable and so far it seems like yes this is one that is making the world's dumbest finite state machine dating sim dressing that up with procedural text
and it makes regretable romances such as playboy cybernetic cut ishes but yeah I would love to see people in this room oh good it is doing the things I would like to see people in this room using it for other things that they might want to generate in the game so everything in this gift is being generated by tracery the descriptions of the people in the spacious the name of the spaceship in the spaceship itself don't know what else it could be used for I've also done some other weird things because anything that you can represent as text you can kind of do it with this and so SVG and webpages as we've seen music there's something called ABC notation which is a text-based music format so I've done a little bit of music generation which is hampered by the fact that I'm dreadful at music but perhaps someone else could try a level way out turns out I can make code did you know that JavaScript programs can be represented as a text string and then you can put them through eval for risky risky fun it's a good idea have your users run that on your server but now I
have something that can generate programs and can like evolve them on the fly that could be weird for something I don't really know what this is for yet but long story short this has been yet another example of I'm not quite sure what this accidental accidental little language can do but I wouldn't have known what it could do without all the users who showed me what it can do so if you're some of just many many users who have showed me new things that this thing could be so I just wanted to have a slide that like thanks them so finally I brought a stack of beans that will teach you how to use tracery you can check out tracery IO where I have a whole bunch of links it's free and open source their github link feel free to contact me and any questions I didn't have a timer so I have no idea how long it took oh alright in that case cool thank you yeah happy accidents next up we have Alan Hazelden who made a
game called a good snowman is hard to build and he will talk about using puzzle scripts for level design for Viking give it up for Ellen hi there so I'm Alan Hazelden I made a game called soccer once again called a good snomint odds build that both think he puzzle games that are really hard if you play them maybe you think they're okay I don't know but I'm not going to be talking about like puzzle design I'm going to be talking about the tools we made the levels with so most games need a level those are the no jet puzzle games and generally there's two ways you can go you can have an external editor that you maybe there's a default one they use and it's kind of generic for making 3d models or whatever you'll you'll make a level Emmanuel and embed
it into the game and you're okay well run this oh this doesn't quite work so you go back to the level editor and you go okay Mabel switching you things around and then you go okay well I need to reinforce it into the game and back and forth back and forth and that can be a bit slow and tedious so sometimes you might have a built in level editor to the game you go okay I here's my level just hit it keeps going to edit mode like what happens when I try that okay here's a key going to test mode oh no that's not possible because I put this thing here oh but I need this thing to be here because of this is and it's kind of like oh good to be able to rapidly test like edit test edit test but the downside with a built-in editor is you have to make it yourself and that can mean it's not as high-quality as a tool that somebody else has written or it can mean like you've got editor codes like seeping into your game logic and weird bugs come
up where oh yeah this will work except when you actually make a normal build and always as an editor attached so those are kind of two ways people normally do things what we did for a good snow mannan how to build is kind of flipped this idea on its head and we embedded the game in the level editor which is not really the way you normally do things but it kind of worked for us and the reason it worked for us is because of call a tool called pom script which is a thing that was made by steam Lavelle who's the creator of English country tune the upcoming Stephen's Cathedral and literally hundreds and hundreds and hundreds of small games that he's been releasing for free over the last ten years he's ridiculously prolific he makes amazing games and in the middle of it he just decided to make a tool so that other people could easily make tools like oh no biggie
you just of it so it's the tool for making 2d tile-based bubble games oh really you can kind of push it around to do things it's not really designed to do but I'd like the core focus and it's got that incredibly well and then if you want to like play around and break things and yeah like so you see what can be stretched too if a web-based tool it doesn't require any programming history so it's super accessible super easy to get running so yeah so to talk about how we use PostScript first I'm going to show you the games that we used it with so this is a game called a good snowman if hearts build it's a puzzle game about being a monster and making snowmen so you can see you've got this this monster here he's just walking around the world
obviously he can push snowballs around and a snowman you're trying to make is the canonical snowman kid three balls large a medium and a small no other snowballs are valid so you push them around and obviously the the large one has to be on the bottom the media want to have to be in the middle and there someone has to go and so we kept made lately here so there we go that was that was a snowman that we just fell and obviously you can you can hug the snowmen because what was even the point of making a snowman if you can't go on side hug yet and so the other thing you've got if you've got snow is you've got knowing the circles you've also got snow on the ground and if you push a snowball on to touch of snow then snowball gets bigger that's just basic logic so here we can we can make a snowman after we started with three small snowballs and now we've got
a large and medium in a floor and we can we can build the fill and hey if I found it given different little housing so this is the game that that we made I made it with the help of Benjamin Davis who did the amazing art and a lot of the programming and ryan Ross give the music which you can sign up here if I stop talking and so yeah that shut the game and the tool we used to make the levels was columns group so this is a web-based tool like I said every Perl script game is a single text file you can see it over here on the left this is the entire source of the game at 250 lines but like half of that is level so in fact the code of the game itself fits into one
screen this is all the gameplay in the entire game right here because they say will be thing you're not like saying or if it's this case then do this and then else if through this it's just like okay fine this person in the world if the player moving into a snowball if so maybe the snowball wants to move direction-- - I don't know so it's really easy to prototype especially for 2d games the Toby so here's the game this is exactly the same game it doesn't look as pretty in fact every image in fun script is a slice by 5 pixel image there's no way to make bigger graphics unless you want to do some Frankenstein objects which is made up of multiple smaller than that it gets a bit weird like I said everything in the in the game is one text file including graphics so right at the top of the file here we can see the player just we've got the
color of the player and then a zero when it's black a dot when it transplants and that's that's the graphics of the player small snowball medium syllable word snowball it's pretty easy and so that translates into a game where you can move around you can push snowballs around and you can make snowmen unfortunately you can't hug snowmen in this session so it is kind of worthless but but that's okay because we fix that later in in the end the actual nice looking Russian so the other nice thing about postscript is that it has an embedded level editor so if I press this button we've got a little editor these are all the all the objects I can put in the world and it's level so I can quickly go okay well here to a second level equation I did was there but maybe
maybe I wanted a different level maybe I want a level where there's something stuck on this wall and something stuck on this wall so now if it's possible I don't know so I can I can try and I need a lot of the meaning and the coin is kind of awkward so you might not even be possible so maybe I'll add a patch of snow here and try that again so let's go like that and so I'm like this easily in hi code of the game I'm easily able to testing and possible so I'll move this guy up here for the patch of snow here I'll add a thing here
and then I get rid of the thing here and that's the right number of snowballs that's a pretty damn good level so what I can do is I can click this this is now just some texts of the string of the level I can copy back oh yeah that's a good final level that would be really challenging one to end the game with but for apps is what we can do is just paste it into this text file we can close the game open up the game and now all right least that level well we've
got we've got a level and it's because of digit exile I can help your alpha some scripts into the game loads the game can just locate files super easily and all the levels in the game we just made using R a tool that's in public scripts make sure syllable and then import it into the game and presto so I'll just oh God actually don't know what's going to happen if this level think that should only have one - no man so it's good lightning crashing when I want to transfer that Phillip that's what happens crashing your game in the pocket it's the best idea right so family over there whatever school you if it's the generic name and I'm sorry I I still love you I can't overstate the importance of
hugging your snowman okay so yeah so that was promised crypt it is super easy to make the levels it was super easy to test the mechanics of the game we actually started making the game and on the first day of development I had a working prototype with all of the mechanics of the game and like half the levels in the first day and I don't know what the rest of the projects like finally finally the animator needed to like draw stuff like animate some some movement I don't know like seemed like a big like if I'm really really true or
like I don't know so it was great because probably already existed I didn't need to make anything I could just go up this is the thing this is perfect for the type of game I want to make i'll prototype that and yeah let's go so yeah I really really like Paula scripts it's super accessible it's easy to make new games so I used it to prototype a good snowman parts build but I've also made like a dozen complete games they're self-contained released for free on the internet each one took between a weekend and a month to make and so that the things like you're pulling your legs you're pulling my legs where you're using pills police to sort mirrors on things and display them and lower them to redirect the passive lights around a cave fabulously where you're using an electronic lassoo that can grab crate and then move them around corners and try
not to let yourself train brainy where you're planning out the route of a train so it can pick up everyone and put them down I'm skipping stone to only home where you're skipping some stones and the ripples from those stones push lilypads around the world and loads up all obviously a safe way to transport yourself one jumping onto lily pads floating around I recommend trying that at home if you have a pond nearby yes javascript is available for free on the internet try out a pub script on it I'm Alan Hazelden I'm a Triton X that's my website thank you thanks Ellen last but not least we have Omar who is going to show us the tool that he made to make more tool so let's hear for Omar
[Applause] [Music] all right hello so I'm a Makani and today I would like to discuss and inspire you to make more of your own tools and discuss some of those hidden benefits so here I found again all done they were all organically designed and built from scratch which meant that we had to create custom pulls on the go I ended up being quite involved with making these tools and this experience led me to create a library that I would like to share today so I'm making this piece of the library called gear I am GUI it's a simple and portable libraries and a quick tool in C++ it works on computers phones consoles anything now I realize it's
probably like five people in the room still using C++ so I don't want to talk too much about the library but I would like to discuss some of the idea that might encourage you to make your own tools so why do we even need to make on tool games and jacket systems and yet many ready-made tools are focused on what I call authoring startup condition you typically add object energy properties and then you play a game so I think those tools tend to make us focus in content creation and liberal design a little too much so I think we need better tools for creating systems game design and there are made tools to create a focus on game design puzzle script actually that Allen talked about is doing that beautifully and you can create a game from scratch not just levels we also need better tools to understand what our games are doing and how they are behaving so we can understand them debug them and optimize them games are complex and messy I like to think of them as
interactive a stack just like having on things happening inside number in the stencil of it you could pass on the object files algorithm created by different people with different skills expectation so we want to make it easier for everyone to understand what's going on there and creating interactive tools to visualize the game logic in game States is a way to share that knowledge so back to the library the basic idea of GRU is to turn your I am selecting to something trivial we want to make it in habit to build to naturally so it's designed to be easy to use it's love fiction you can start that including create new tools immediately and final it's designed to create tools are always available by always available I mean that's the picture from the game Brigid or it's currently on Ellie access some of the full have been ship the users you can press f1 big game and any the game properties while the game is running so the idea is always available is that you go to stools are created jerky inside your game they don't get certainly out of which when you start work on the console or tablet
version when you play this in the game outside they all have access to you all your game running states so no brain in that runtime data is off let me to the tools you can simplify that as it happens you can file the tools inspect initially immediately when someone's playing no need to load another builds or an editor and you can ship this to everyone you can see them two designers artists in QA and you can see them deploy if you feel it it makes sense there so how does it work gmq is car driven the right simple code that generates the UI every frame you can work directly with the data used by your engine running game it's tightly connected there it's perfect for creating real-time interactive tools you can use it tweak parameters visualize game data plot stat or create a custom editor that's a very simple one on a use case you can call one function - it is one of your variable a simple widget appears if you stop calling it a widget won't appear so
you don't need to sell anything everything in advance your code flow always expects or the UI will look and that comes with a few important and useful properties all instructional process immediately as you call the function there's no later no callbacks or persistence requirement so you could instead compact and only one place you can call this from anywhere in your code it has to be in a specific spot like an update so it's all function means that you don't have to refactor your code in a particular way you can literally start creating tools and study in the middle of a function the library comes with a bunch of widgets and functionality to get going very easily so I won't get into details or auto program with it you can check the code an example on the website the base ID that you have that bit of support code that encourage you to create tools if you don't need this slide where you can probably use another or maybe the source code so it can inspire you to create your own toolkit whatever makes your life easier some of the hidden benefits I think tools are communication and that exposing live
data to your team is a strong form of communication you want to avoid the situation where the designer or the artist don't have a clue what's behind the black box of the game having to ask program which one block them this is wasting everyone's time so if you give people the ability to look inside the black box and understanding themselves there will be more productive and dependent and the more you visualize the easier it is to tame the complexity of game development that's an example of visual especial data we're just plotting the position of objects in a map along with some seventh elegy information and instead you can see patterns emerging and you can understand things very easily that you wouldn't be able to understand from from just looking at the code looking at the game from Clio point of view that gives you good graphs of what's going on with the engine and then you can expand that and the option you want if you want a slab on a box or any other useful data that you see fit you may want to create all sort of gauge or monitoring tools to communicate budgets and limitation that again is very simple codes usually the one line term the Stars you can craft things it's very simple
another the hidden benefits is that I think tools are documentation by instead of writing documentation that always out of date and that people can never find it provides a tool then it's likely to be up to date and people can play with it and interact with it and therefore understand what's happening so if you're going to create some new fancy algorithms for like as finding a physics writing the tools along with the new code is the best way to debug your code and to the commented create the tool to interact with a new code and you've got the documentation down here it's useful for the current to you for the future you and for other team members finally I think exposing that stuff helps team members share a common vocabulary like don't you hate it when everyone is team is using a different world to refer to the same thing that this versa and nobody understand what it's doing why precisely if everyone is looking at the guts of your game they will have that better understanding of what is doing what some advice just keep it simple phones that have to be amazing they just need to serve a purpose it's kind of like encourage you to make the Pullman
tool basically they'll have to be pretty to just need to make your life better happier and in turn make the game better don't have to like the last time it's perfectly fine to make a tool that you told it makes day if the tool is really easy to make then you will feel inclined to writes more throw away chosen things that fix what you need to do today or this week or this month I often a common excusing and still making people say I will ask time to make tools and that that really implies that tools are luxury or push your luck and I hope I've conveyed that Security's about why the errands some people say I'm sure about it I'd making UI head making tools I say you should can try different way of doing it maybe ask your other developers and learn tricks find other solutions my library GIM Gyu is one possible solution this is probably like million others to making the muscle you can flex the more you'll do it the better you get so you really have no excuse warmers done
r20 a few example of custom tools created using the library this is a mini searching tool you can use it to enter keywords or file objects in your scene it's fairly simple fairly trivial but it's like 20 line of codes if you need to search for something it's probably brought faster to write the code once then you look in your n on machine all the time that's an in-game tool to browse texture and run the buffer so you can look at the footprint of loaded texture and I mean you can easily catch it when an artist created a giant eyeball texture or something is the basic profiler if you build that kind of thing to be always available then anytime someone has the performance you can come and have a look or what make decoding it these are some of the tool created for tearaway they were mostly debugging tools you can click any object and inspect the state you can trigger breakpoints to double the code of certain instances that sort of thing it's things that I think I probably given when use unity but then we're doing themselves you can specialize and
I actually exactly the feature you want and present information the way you want it's really handy when you have to debug situation we can have tags on the active object that's a free game engine called Linux engine which is also using this library I'll just say don't shy away from making your own engine sometimes you will most likely fail but you will learn a lot and learning is winning so game innovation needs people straying away from the main task in creating their own tools and it's foolish but it's also very good that some people do it split with sometimes that's the end of this little talk help inspire you to consider making more on tools they can be stolen tools in game 2 if you GT maybe look into extending the editor a little more you need to select that muscle begins on Ice King and you shouldn't be enslaved by whatever tools are readily available to you custom tools can help you your productivity and they can help you innovate thank you
you
Auto-generated captions from YouTube — names and numbers may be misheard.
Distilling the key insights…
Game Developers Conference · 2026
Deconstructor of Fun · 2026
Comments