[Music] so this is a case for making your own game engine um which is a loaded topic all right I'll get started my name is res Graham I've been making games for a long time I want to start before anything else with a pull uh by show of hands how many of you are working on a project of which you are using an offthe Shelf engine such as Unity unreal gdau something like that yeah like everyone okay how many of you are using your own Tech by show of hands oh my God a shocking number of people that's funny I we do I do rehearsals for all this stuff right and every time I did a rehearsal I was prepared to have some line that was like oh yes only three of you or something like that I'm shocked at how many of you are doing it that's awesome [Music] um so I feel like I've started early is that a bad thing
no okay we're just going to go Rogue here we go so um I'm partially surprised that this talk was chosen at all because usually when I have this conversation this is the this is the reaction that I get and those of you basically on this side of the room who are working on your own thing working on your own Tech I wonder if you get a similar reaction to this because I I I certainly do um I know it's insane here's the thing and I'll just get this out of the way right away uh I am not saying you should build like a fancy super powerful you know unreal or Unity competitor that is that is not what I'm saying at all I think that's probably the wrong choice I'm just you know a little baby a little baby engine that's what I'm talking about right um You may not actually need all of unity the other disclaimer that I have is that mostly this talk is for programmers um if you're a designer you can get something out of this if you're an artist you can get something out of this but mostly I'm talking to the programmers in the room the the reality
of creating your own engine does require a bit of technical knowledge uh to be able to go so that's that's the other disclaimer that I'll make so uh I am R you may not know who I am since I've never spoken at the Indie Summit again usually I'm across the street in the AI Summit I've been working in games for a very long time I've been programming for a very long time and I've been teaching for a bit less of time but still quite a long time I've worked at a bunch of companies I've made a bunch of games the smallest team I've worked on was two and a half people the largest team I've worked on was 250 people so I've gone from AAA and Indie and back and forth and uh I do a lot um so some of the stories that I'm going to tell in fact all the stories I'm going to tell come from real games I probably can't name names because they're not always uh positive stories but I'll tell them anyway so let's get started what is an actual game engine what when I say game engine it's like such a loaded term there are people who think things like sdl are game engines there are people who think that um Unity is is barely a game engine ogre 3D so let's let's
define what this actually is it's basically a bunch of code and or other tools that's pretty much what it is right it's just a bunch of code that is somehow all lumped together but I think we have different gradients of this so we have this like code to engine AIS and all the way on the left we have SIMPLE libraries just stuff like you know math librar zve tiny XML like things like that right these they're literally just a pile of functions a pile of classes that you can just call and they solve a particular problem hopefully quite well moving down our list we have something like Frameworks Frameworks are uh it's the exact same thing except the code all sort of works together uh you know things like sdl sfml and I would even say things like P game or the the sadly dead XNA um these are all things yeah thank you X Anda Fanboys um the one that's in the room these are these are all uh these are all Frameworks these are all things that we build upon um but they solve very specific problems as well they just work together then we
start getting into what we would consider real engines like generic engines like Unity unreal gdau all the ones that we all know and love and then we start getting into really specific stuff stuff that's like RPG Maker you know renp those types things that are like if you're going to make this very specific kind of game and this engine is specifically designed to make that kind of game great right use pame if you want to make a um interactive sort of Novel so we have this like wide gradient of things and I think most of us live if I were to just take the average of the games that are us engs that are used probably about here somewhere right we're probably right about here and I feel like we could move it a little bit over here that's kind of my pitch so what does this buy you what does a game engine actually buy you and that's really the thing to think about so why why should you use a game engine why should you consider not using a game engine the thing to ask yourself is what does it about you right games are just problems the problems have to be solved I have to render triangles onto a screen
I have to play sounds I have to handle like somebody pressing something on a on an input device these are all problems that have to be solved and if your engine doesn't actually solve those problems completely it might as well not solve them most of the time so I'll give you a couple of very real examples um and the first one I'll use Unity I'll kind of on all the engines but I'll start with unity um so game objects game objects are fine right mono Behavior is fine it's a basic game object component system that's fine I worked on a project where uh we had a you know many projects have a few objects this project had a lot of objects and now the heavy weight of mono Behavior starts weighing down the project so we couldn't use the game object system it was just too much so we built our own game object system and rewired uh from Unity to get this game object system right so we had to there's literally one game object spawned in the
scene and that was our hook into the update so we had to like do extra work to get our own object system in there that particular game is a poster child for this talk because literally all that the game used was rendering audio input the fact that it's C it's about it I mean so it's like you we could have done this another way um that is a different horror story though of maybe don't ship your prototypes the next example uh all crap on another engine is unreal so this is an interview that I had so I went on a technical interview and they wanted me for some lead AI position and uh I for NDA reasons I can't talk about the specific game but I will say that they had a strong networking component to it they needed to do a lot of fancy networking stuff and I'm like how are you going to do that in unreal unreal supports networking but what you want to do seems a little out of scope and they're like yeah we're literally ripping out and rewriting all of networking which is hard not just because networking is hard but because
ripping it out of unreal is hard so if it doesn't solve your problem 100% it might as well not solve your problem most of the time sometimes you can extend but not always so let's look at the other side how much does it actually cost you well the obvious answer is financial not for all engines but for many engines right there's a financial cost and you can do the math um which is a simple math you take your licensing fees and you subtract what time you think it's going to save you and if that cost is greater than the benefit well great that the answer is clear right maybe you uh if that cost is over the benefit then then financially it doesn't make sense to do this make your own thing um but this doesn't apply to everything right gdau and ren Pai other things like gdau is sort of this upand Comer which I'm excited about personally even though I'm giving a talk about not using game engines because it's open source anyway there's a second reason which is I think a little more Insidious right the financial reason we can we can throw off but there's a there's another reason which is constraints you have design constraints
right maybe it's only good at making a particular kind of game and even if you're using Unity how many of you have looked at the steam store and said oh yeah that's the unity Shader right like we've all seen that how many of you looked at unreal games or whatever and it's like oh there's that weird lighting thing that unreal does so it's you're making a style of game they're good at making things I'm not going to use if I'm really good at unreal I'm probably not going to make a 2d game like unreal is not as good at making 2D games you fight the engine in certain cases you fight it if you want to try and have it ship on a device like this you can do it of course you can but it's not as good as other engines that are used to doing it and maybe not even as good as doing your own thing there also technical constraints how many objects can you have in the world you're constrained by that by whatever the engine has you're constrained by whatever platforms the engine supports does it support the platforms that you actually want to ship on I don't know probably nowadays but does it really right so but that's not even the worst for me the worst and and when I started working on my own project
the one of the biggest reasons I chose not to use an engine and use my own code is when you tie your star to another engine to a third-party body of of code you are now tying the success of your company to not only the success of that company but the whims of that company you need made an interesting decision not too long ago they did right and here's the crazy thing the only reason sorry camera guy the only reason that that didn't work why did that not work because they don't have a monopoly they don't have the Monopoly that they think they do there's unreal there's G there's other things I live in the Bay Area does anybody here live in the Bay Area oh okay like basically the same people making their own Tech um here's the thing uh for for electricity to pay for this electricity I pay pg& Pacific Gas and Electric if I'm unhappy with them my one choice is this I cannot
have electricity and gas that's my choice that's all I have they have a a a monopoly on it so any game engine that you tie your success to they can change the deal unreal just change their deal now it's not for us it's for film and all that stuff but of course they did these are for-profit companies they uh they're not about your success they're about their success which is fair right I mean it has to be but you know you tie star to theirs that that's a that's a cost and possibly one of the biggest ones okay rolling your own engine I know I'm a little crazy about this but again I'm gonna say this again right do you you're not making something super generic right you want to make exactly what you want I'm actually saying basically make the game don't worry about the engine you can pull in libraries and things to solve specific things like you're probably not I mean unless unless you're in the wrong room you're probably not trying to remake A massive AAA you know the next Dragon Age
or maybe you are that'd be awesome all right so what goes into a game engine well kind of a lot let's uh let's rattle through some of these right we have platform attractions rendering sound input physics if your game uses physics World representations I mean scenes levels that kind of stuff game objects UI resources an editor the heartbeat of the game and that's the last bullet point for those of you taking pictures um it's a lot we have a lot of stuff but we can build this kind of stuff we really can um how can we make all of these types of things well we can start with Frameworks libraries that kind of stuff and I'll give an example let's say that you're making a project um and we need to build all of these things I would start with a very basic and a very simple uh framework so something like sdl sfml is also fine if you're more of a C+ Plus+ person but sdl is just a
bucket of functions that you can use it is free it is open source so you can make changes if you really want to there's OS rendering sound input probably a bunch of other things and you don't have to use any of them it's welln it's used in uh actual commercial products right it's used in real games used in real things that have shipped uh so it's solid is what I'm trying to say there many of them use it just for operating system stuff just to be like I don't want to deal with writing Mac code and deal with writing you know Android code or any of that stuff like it's really good at that kind of stuff so um and if you don't want to care about rendering you don't have to you can ignore rendering entirely like you don't have to do anything when it comes to the rendering side or you can and it's fine okay um there's sfml there's other things um I'll mention this as well I actually remove the slide on this but I feel like it's important enough to mention it um if you're going 3D there's also uh something called ogre 3D so that is that's a weird one because that walks
the line between like is it a framework or is it an engine and I don't know it's somewhere in between but it's again open source you can do what you want with it physics if your game uses physics there's things like box 2D um that's a good one um for tiled you can use level editing for level editing you can use tiled um and right that's one of the big complaints about rolling your own Tech is there's no level editor there's you know you don't have this like Synergy of creating um a a you know an inspector with an editor and all that stuff and tiled solves these problems tiled is an awesome little tool you can drag it game objects tiles whatever you want around again it's a 2d thing so it's for 2D stuff but it works quite well and they have custom nodes and things like that it exports to an XML format that's well understood and well documented you need something to read XML so you've got tiny XML so that's good um but this is all C++ everything I've said here is C++ and that's a barrier as well C+ plus is an
interesting language with an interesting history um I learned I mean when I started programming God almost 30 years ago um I started I learned C++ and so I have like a Stockholm syndrome love of C++ but I also recognize that it's not a language that one wants to learn or use uh because it's not an easy language and it keeps growing so maybe you want to use something else there was a a there's a talk right that was about integrating C into into your thing which I just saw yesterday as I was looking through what talks I wanted to go to um so that's a that's a thing I like Lua so soul for Lua works as well I have I wrote my own integration which is open source you can find on my GitHub if you want there's so many libraries out there there's so many things out there that you can pull in together to to do to to build this to forge this thing that we're trying to forge right okay you can have hello world up assuming technical knowledge you can
have a Hello World up in an afternoon you really can right you can you can get a Hello World with some basic just here's a basic tick a little window showing up you can get that in a couple hours you can have a framework in a weekend you can just get a a basic framework of you know while true do my game Loop that kind of stuff you can get that going in a weekend and I think within a week you could probably have an entire test level and I know because I I did all this I'm like can I though and I did and I had in a little it wasn't like an amazing thing I'm not going to win awards for it but I had a basic test level with a little object running around with a silly little object system in a week now this is for something really really really simple right again we're not remaking Unity this is for something really simple so some of the advantage as the advantages that we have for doing this
right well it is generally cost effective in the long term my suspicion is that nobody in this room is like making a game and they're like okay cool that was done I'm going to go be a farmer for a while or something right like we're probably in this especially for as as crazy as us Indies sort of are to have to do this right um cost effective in the long term because you're investing in your own company in your own Tech in your own world right you you build the thing that you want and nothing else so that's extremely important that's extremely powerful remember in that pre that slide minutes ago that I had with the big gradient you could build that thing all the way on the right you can say okay the type of game I'm making is this Rog likee Style game so I'm going to build I me use this framework and then I'm going to build on top of that exactly the systems that I need that enable me to make Rogue likes fairly easily and again I'm not talking about like let's start by spending you know two years building an engine right
teach a person to make an engine and they'll never make a game in their life um what you do instead it's true right you guys who build your own Tech that's where all the laughs came from by the way um which is true so what I'm saying is you make your game and you extract stuff out as necessary it's probably going to be easier to build those types of games that you want to build but we have a lot of disadvantages that we have to that we have to turn through yes there's a large upfront cost of course there is you're building your own tech there is a a much much bigger upfront cost there's no automatic knowledge and this one's interesting because I didn't quite get it until I in my own little Indie Studio I started having to like hire people and bring people on board and I'm like oh right they don't they don't know how my game object system works because it's a weird game object ECS hybrid ah I must now write documentation the bane of all programming existence um the thing that made it work is I did
have I mean the code is well commented because I'm not a monster and uh that we had relatively decent documentation for things but I I'm like oh I'm gonna have to spend a week build a bunch of documentation onboarding because this programmer has no like they'll just walk in like okay I guess it compiles now what um so that was that was something right there's no not that automatic knowledge of bringing somebody in you also often require C++ knowledge even if you don't actually require somebody to write C++ um it probably requires the the lowlevel knowledge of understanding you know how like Unity has put in a lot of time for example to to hopefully make sure that Unity never or rarely crashes which of mixed success but still if C explodes they throw an exception and catch it in the uh and catch it up and you just get a Spam of a bunch of exceptions which is better than what happens if that happens in unreal because now you have a pointer d a all pointer D reference or something and the entire editor explodes and then you're like what happened and
you have 50,000 messages that go by because everything crashes um so you know there is some level of low-level knowledge that is required here it is generally less robust in terms of tooling now this wasn't this this wasn't as much so I thought this was going to be the big issue that's it's the last bullet point on this slide because it was actually not as big of an issue as I thought so for the project I was working on which was a point-and-click adventure game it had um it it had tiled as its sort of main editor and so okay in unity let's say I want to make a level what am I going to do I'm going to take some assets from over here and I'm going to drop them over here and I'm going to attach things to them so what is it like in my project well they grabed some things from over here and they toss it into tiled they ran an exort script and then they ran the game so the only thing was there was one little tiny extra step and they couldn't just press play in the UI they had to just go to a different window and double click an executable so that was really it for Content creators there was
not much of an issue um they got used to it quite quickly so there is still less robust tooling Unity has a crap ton of tools unreal has a crap ton of tools that you would have to build if you're doing the thing or find thirdparty versions of but for a small really simple game I don't think you need the complexity of a full engine you might not need the complexity of it right do all that analysis that I just talked about but I'm just one person standing up here pitching for this right why would you listen to me here's a list of games that use their own Tech and I would be shocked if there was even a single person in this room who hasn't heard of at least five of these probably most of them right I just found this list quite easily just digging through these are all games that use their own Tech all of them so it's definitely doable and many of these games I think think are great examples of why it's good to use your
own Tech um where am I at here I'm at okay I'm at 20 minutes that's about right that's about where I expected to be because I have one final point and I'm going to in fact step away from this and address you all so that we're all uh engaging with each other because all of this culminates to my one final point I worked in AAA for a long time how many of you have worked in AAA okay a lot of you so and I'm not going to I'm not trying to sh on AA for this because there's a lot of creativity in AAA but sometimes I don't know if you guys can back me up on this it feels like that the greatest innovation in Tria is here's the name of a franchise with a number next to it that we've incremented that's it right that's it feels like that sometimes and again like it's okay yes there's a lot of innovation a lot of creativity but I worked on the Sims 4 and I can tell you that there are times where we got a design that came from The Sims 3 that came from The Sims 2 that came from The Sims 1 the relationship system is fundamentally this which I wrote on the
Sims 4 is fundamentally the same as it was on the Sims 3 as it was on the Sims 2 as it was on the Sims 1 with some changes and some additions so we build the thing that we know is going to work and then we we kind of innovate in this little space over here and we have to because the Sims 4 had 250 people who needed to continue to have jobs and pay their mortgage in Indie that's optional sadly right it is though it's optional it is it's it's sadly a little optional um and we all know it so I left triaa because I got I kind of got sick of working on other people's ideas mostly and when I go to GDC in a place like this and I walk out to the expo hall and I'll wander some of the you know big company areas and what is Microsoft doing and what is epic doing and all this stuff but where I go is I go to the Indie boost and I have been for years now because that's where the interesting Innovation is that's where
the design Innovation is that's where the creativity that I was missing in AAA is that's why I'm here and so why it might be absolutely mad for me to come up here and say all this stuff and it probably is what we're missing is technical Innovation we have two engines yes there's gdau yes there's other things we basically have unity and unreal when I talk to my AAA people when I talk to all my friends who are still there everyone's moving to unreal they're all moving to Unreal which is fine that's probably a reasonable thing for them to do but what we're missing is technical Innovation because epic is doing the technical Innovation Unity is doing their technical Innovation but they also have to be all things to everybody so they can't go too far off the beaten path so while there are some really interesting indie games that are out there now that do some interesting technical innovations that is what we are missing largely when you build your own Tech you can say oh we're going to do this really crazy thing over here and that's what we're missing and yes that's utterly insane that's utterly mad for me to stand up here and say to a bunch of
people who put their livelihood in these engines maybe don't use engines and yes maybe I am mad but we're all Indies we're all mad here thank you that's my talk you know what's crazy about doing and I've been doing talks at GDC for many many years since 9 pretty much every year and when I do runthrough of talks they are like like this run through of this talk was exactly uh it was like 30 seconds under every time and this time I'm five minutes under which is like okay that's how this works so we have questions though yes yes is this thing on Hello thank you for the awesome talk by the way I love passion um earlier you mentioned that r rolling your own engine is going to have a high upfront cost but
it might pay you back over the long run MH uh where do you see cost savings overusing something established like Unity or unreal the cost savings happens in the Simplicity of what you're trying to do so if you are trying to architect your own like epic solution then there is inherent cost in terms of supporting that Solution that's why that's why a lot of compan I mean look at CD project red that's why they're going to Unreal and to be fair even though I just on all of that uh probably that's the right choice for them right they probably should go to Unreal because their engine was in a very sad spot one of the big reasons why cyberpunk 2077 went the way it went besides corporate greed in general was because the designers were working on a moving Target right the engine was continuously being built as the designers were trying to make the content for it so it didn't really go well for them so if you're trying to do something like that then the cost savings happen much more in the long term as opposed to in in a shorter term but what I'm advocating is you
build your own Tech right internally just built upon Frameworks and so you built your own game object system and that kind of stuff and you're extracting stuff out as you're making games so that's where the cost savings tends to happen it's also mostly open source you're not paying a Unity licensing fee but that's where it comes from does that does answer your question it does thank you very much yeah you're welcome hi hi um so I really enjoyed your talk I thought it was really interesting because we end up using in our company un for but we kind of write all of our own systems on top of what Unity is and the reason that we we have to do that is almost entirely because they export or they do all the exporting to Android and iOS on our behalf do you have any recommendations for ways to get around that kind of thing um because like this is absolutely the biggest shackle towards using an engine is the fact that it exports to xcode which I think like Works in an alien language or something
yeah xcode is um xcode is special yeah I mean it's it's its own thing um oh man how much how much do I want to okay so um I I don't know how I don't know why Mac ever gets software made because it's such a like Step One is pay Apple a bunch of money and I'm like that's like if I want to make a release build on PC it's a drop down I set I go okay I'm going to set this to relase compile and I'm you know I have some data builds but I'm basically done in Mac it's like a like you sacrifice like a chicken of some kind it doesn't have to be a chicken but some kind of bird and like it's it's a whole thing so um no I don't have a good answer for you and I'll be per and I'm just going to be perfectly honest with you if I was making a like a game that had to ship across multiple mobile devices I would probably use something like Unity exactly for that reason which really sucks but it's a terrible it's a terrible thing because at that point now you are going to have to dedicate somebody to handle all of those
platforms though sdl does handle some of that for you I don't do mobile games so I don't I'm not like the person to speak with authority about how well sdl works I don't know if anybody else here is um show of hands anyone here using uh their own tech for building you are great do you guys want to connect because I don't I don't have a good answer oh you guys work together okay well then you're I don't know what to say thank you yeah sorry I'm not I'm not up on on like mobile stuff so I don't have a great answer for you on that one um can you speak to how to convince Publishers you're a safe bet even though you're writing know Tech it's not an established engine yeah that is a uh that is a problem um which is a good question to answer so how do you convince Publishers there are some Publishers that I have seen where if you are not using an engine it's a hard no for them because they feel like it's a risk so what I have done in the past to be fair
also full disclosure I'm self-publishing because of uh issues I've had with Publishers in the past but um what I've done with Publishers in terms of talking about my own Tech is one I'm a software engineer with a bunch of experience and when they see and it's it's weird to like pull this rank but they're like like I've worked at EA right like and I can pull that because even though I worked in gameplay and Ai and not systems I all that they're looking for that like okay they have the technical expertise to pull this off and the second thing is uh creating some kind of basic demo that shows them like here's my solid like super solid demo and I've had good luck with that in the past that is a barrier though actually enough that I probably should have put in the disadvantages slot because that is a real thing thank you yeah hey love the talk thank you if you had to pick what would be the most interesting lesson you learned from uh the most recent game most recent iteration of your engine whether it's technical or maybe design what features
you included or didn't include anything like that oh um the most interesting thing I learned in general yeah just from the most recent iteration of your your engine geez um good question um I don't uh there's so much that I don't know what to choose um how to deal with uh I would say one of the things that I've learned the very hard way is Simplicity is probably what you want good code doesn't mean it's like architected in this like way with using all these design patterns all these things pointing to each other good code is easy to refactor because probably what you're going to be doing most of your time is changing code so good code is easy to refactor and so Focus don't focus on the perfect focus on the on what works right now and the good as long as I can pull back and refactor it performance optimization is another piece of that right focus on things that are like uh focus on on that lowlevel like the
really lwh hanging fruit and just like those kinds of software engineering principles the other thing is remember that when you're working on a project um the that bug is is your fault like it's you're the guy you can't be like well it's in this other system so clearly you know Josie is going to take care of it Josie's not going to take care of it you're Josie right so um it's learning like the debugging tools and I think that was one of the big things is really spending time on tools and I'll give you that's actually the takeaway that I would give you spending time on some of the tools I'll give you one really solid example um so I have a Lua integration and I have a way for me to type in any Lua thing that I want at any point and it'll just execute this code and I use that to do things like dumping you know entity States and things like that and I'm like this is ridiculous so I integrated C into like basically net as a thing into it to create a little net window that allows me to just here's my entity and all the components and all the data and just dump it in and
I'm like I was like so against it because I'm like it's going to take me forever to do and it took me like two days or something and I'm like oh God and do you know much time it saved me it paid for itself in like less than a month so investing in tools and things like that and feeling those pain points and learning how to feel those pain points because you're the guy who's going to solve it it's not the tools team it's not anyone else that's probably the biggest lesson thank you hey you're welcome
Auto-generated captions from YouTube — names and numbers may be misheard.
Distilling the key insights…
Game Developers Conference · 2026
Game Developers Conference · 2026
Game Developers Conference · 2022
Comments