I would love to hear more about the story of how Troika got a source engine license and all the drama that led to vampire having to be released on the same day as HL2. I feel like most of the events surrounding that were not intentional on Troika's part, and getting the pre release version of source seems like a very interesting story!
There is a video with Leonard where he talks a bit about Vampire and the problems with the engine. I think it's the second one. It's well worth watching.
I heard that they were ready to release Vampire before valve had shipped Half-Life 2, but they weren't allowed to be the first game to release on the engine, so they were forced to wait until HL2 shipped and released on the same day because Activision wanted to try to recoup costs asap. Would love to know if this was true.
@@TorQueMoDIf I'm not mistaken this wasnt published by Activision.. It was published by Sierra Interactive which was under Vivendi.. Vivendi did end up selling their assets to Activision which was Blizzard and some IPs in 2008.. However the Bloodlines IP wasn't apart of the deal so I don't think they ever even been near the IP..
I can't believe how great these videos are. There are no animations, stock videos, sound effects or cuts, just a person talking for +10 minutes straight, and he manages to fully control my attention throughout. Thank you for sharing.
I've been doing game programming as a hobby in my spare time for the past 20 years. During this time, I've rewritten my game engine and codebase at least 10 times. While this endeavor hasn't directly generated revenue, it has significantly improved my programming skills and provided me with a deep understanding of various aspects related to computer graphics, programming, operating systems, and desktop managers. Indirectly, this experience has greatly benefited my career as a software developer, as problem-solving skills in software programming are universally valuable. In my humble opinion, pursuing this hobby is entirely worthwhile, even if you never intend to commercialize a game, provided you have a passion for programming.
This is what I like about using a managed environment/framework with a set of libraries (using MonoGame, formerly XNA): It gives me the satisfaction of coding my extended framework/engine (at a high level) while also having most of what I need to make a game like input, audio, sprite batching, game loop, math functions; and without having to interface with the hardware to get those things. So that could split the difference for those with one foot on both sides.
I'm listening :) [edit] One amazing pro of writing your own engine is, you're free to innovate. Many many coders that were once gamers have come across some mechanic or feature that they've felt didn't perform as well as it should, because their idea for how it works is simpler. Writing your own engine will give you the required freedom to actually put your theory to the test, and the understanding to theorize more accurately afterwards. Nobody could possibly know everything, or even remember it all if they tried to learn. But the nice thing about code is, a text file won't forget. If I research for two weeks to find the most optimal method I possibly can, then correctly implement it, that change isn't lost even if the exact memory is. That's why self-documenting code is my way of doing things. If I can look back on a few lines and it's obvious what's going on, I can always re-learn what I forgot should I need to tweak anything. Just my personal thoughts. Keep the uploads coming, good stuff.
In one of your previous videos, you mentioned how you always have plenty of ideas for new games. I'd love to hear how you decide which ones to turn into actual games, and which ones not to.
Godot is pretty great, and you can write with C# as well. I find it more pleasurable to use than Unity with similar results. I find the thought of writing my own engine daunting even though in the past I've tried Direct X and Win32 programming, I have a huge amount of respect for those that have done so as well as the shoulders of the giants we all stand on today.
Seems like Godot is the way going forward. Being open source and gaining increasing support/popularity it may outcompete the same way Blender did for 3D.
Holy crap you worked on some HUGE games. Super impressed, I wanna make games for a living and am starting on my first commercial project as an indie dev. I'm hoping everything goes well but I'm glad I found you, such a fountain of experience. That's wonderful, got my sub
Theres a spectrum between rolling your own and unity/unreal. Libraries with different amounts of includes wheels. SDL for example. It handles the os, input, display etc, and leaves you to writing the game.
Im writing my own (simple) game from scratch in C in my spare time. The motivation for me to not use an engine is that I want to learn how things work by doing them, and I feel that to truly innovate you need to have the technical understanding to know what you even can do
Exactly. Unity and Unreal effectively monopolised all the gamedev. This is a very sad situation, as this stifles all creativity and experimentation. The game is the engine, and using generic engine means making a generic game.
I had always wanted to make my own game engine, and back around 2018 I really got started on doing it. In part I wanted to make a game for these low end single board computers, which didn't have good GPU drivers, or in some cases no OpenGLES compliant GPU at all. In the end what I realized and got great satisfaction from was making my own 3D rasterization engine for low end ARM hardware. I learned a ton, and while I didn't go all the way yet, I think it greatly help my understanding of how graphics work.
Even though I don't make games, hearing about this stuff is really interesting. Thanks again for the great videos. Even though I know you were not the "main guy" on them, I'd love to hear your experience on working on South Park and (especially) Pillars and Tyranny. Especially given the whole kickstarter craze that was going on with Pillars.
I worked in construction in the UK for a couple of years and I found that a massive construction company involved in HS2, uses Unreal engine to compile all the CAD models before converting them to Revit models.
I'd point out that it isn't a choice between building literally everything from scratch or using an off the shelf engine, there are libraries like SDL2 (or something like Pygame for more abstracted level interactions) that cover a lot of the different operating systems so you don't have to think about it as much. These exist somewhere roughly around the middle of those two extremes.
I am a programmer, I've never worked on a game save for a couple of failed tries. For myself it's mostly an academical exercise to write your own engine. You learn the graphics rendering pipeline, up until the HW level, how physics rules, lighting, gravity, collusion works are implemented. I find it similar to the exercises in my CS class where we designed our own ALU (CPU). It is weak, it is unoptimized but you learn how it works. That's why even if you won't going to use it for your 'production' code, it's enlightening to give it a go. Also reference to Tim's challenge yourself video! Thanks Tim!
there are a lot of nice libraries that can make rolling your own engine a lot more manageable, but then you're in a grey area where imports like SDL and FMod and so on start making it look like you're using a pre-existing engine anyway. i think Godot is a step up from that, then Unreal. i've seen some 2d and retro styled 3d games come out from tiny indie studios running on their own engine and finding success but even in those cases its hard to say the time spent was worth it. there's a game called Barony which did the old id software routine and open sourced the engine a year after release, and having a compact open source code base means the game can live forever if that's what fans want.
Thank you so much for this! Came from your GDC talk about Fallout Postmortem, and was really inspired about how you made a new game engine for it within a couple years, especially with how limited technology and resources are. I had to look you up specifically to see if you talked more about that engine, and you do not disappoint! I was learning Unity before the incident. Amd while I will never build a game using it, there's still a few skills I want to grab from it. (Basically, the ability to watch a tutorial, and make the same thing while writing my own clean code) After the incident, I started working on my own game engine. I'm mostly a hobbiest, and it's definitely one I want to use for decades. Though I have Godot as a failsafe, so if I inevitably want to make a game more than I want to make an engine, I can switch to Godot for a bit. In the meantime I'm learning so much from this attempt! Things I probably should have known, like git, how shaders work, etc, but didn't. If people could make an engine from scratch in just a couple years with that level of technology, I think I deffinately can with the frameworks, libraries, and api that I have available, plus ai like Phind to help me figure things out far quicker. Anywho, you have renewed a bit of that inspiration in me today. Hopefully I'll even be able to make my dream game someday!!!
It's good to mention that most popular engines have a nice API for extending the editor, which is often unnoticed or undervalued. For programmers, I highly recommend spending some time to get better at implementing custom editors, handles, asset management, etc. You can remake the most important parts of your game (and create tools for that) inside third-party engine, and leave less important modules as is.
5:13 is, to me, the ultimate benefit of owning your own source code. As you spend more time in a codebase you start to unlock some kind of god mode where you can instantaneously tell where a piece of code exists, and can do pretty much anything. The down side of this is to burn yourself out of the codebase, or have it reach a point where it's unmaintainable for others (or yourself when you come back weeks later after spending time somewhere else), so it's important to proactively and routinely clean up and refactor all the pain points in the codebase. Thankfully, the time you've spent in the codebase allows this process to go much more smoother and much more efficiently, so it's like a win-win.
My first non-academic job was at an AI company. They had built an infrastructure for representing knowledge that was really impressive - but nobody outside of that company used it. It’s very similar to what you mentioned about new hires wanting to use a standard engine. There just wasn’t an incentive for someone to become an expert in the in-house product if they knew that in 2-3 years they’d go work somewhere that used the industry standards. That said, it did exactly what we wanted. No artifacts from using a very general standard or platform. When it worked, it worked tremendously well.
In my opinion it's often about vertical integration. I'm amazed at what Apple can do since they have total vertical control: if a Safari developer wants to change something in the kernel in order to improve performance, they can do it. People often treat abstractions or libraries as if there is no downside to using them, but I think there is an actual hierarchy to reality that means you end up distancing yourself from the root of the problem the more foreign abstractions you rely on. This is similar to what happened to the OOP design patterns nightmare. Ultimately people forget that there is a physical machine that exists and that it is the actual thing that will run your game.
Love you videos, Tim. Thank you for being an authentic human. Honestly would love to hear your thoughts on an open source MIT licensed game engine like Godot. It would be amazing to have you contribute to that project. I believe it has the potential to be like Blender - open tech that anyone can use without getting locked into an ecosystem. And without falling into the trap of building it all. Would you consider assessing and reviewing Godot?
Thanks for this video, Tim. You articulate it so well. I'm going to just share this video to explain the topic instead of my own feeble attempts from now on. lol
Thanks for this wisdom. I had not considered the cons as much for making your own engine. Using engines is good for urgency. Maybe a good balance balance is to roll your own tools that work well with some popular engine, trying to put your own "front" or adaptations on engines, so that your own specializations shine while getting the benefits of getting games done fast.
Funnily enough I was thinking about the choice of engine for The Outer Worlds after finishing my supernova playthrough the other day. So happy when I saw this pop up lol
FWIW having worked on a bunch of games, including some AAA ones, with both custom and off-the-shelf engines i'd rather be working with custom engines even if the i'm not the one who made them. I find it much more interesting this way (even with existing custom engines i like reading the code to see how different programmers handled similar issues) - and the control pro you mentioned is GARGANTUALLY GINORMOUS :-P. Also in my experience with Unreal, both the official support and most resources available out there are kinda useless in practice (with some exceptions of course) and the best approach is to just read the code (which is why incidentally so far i have avoided any Unity project). My experience might have been different if i worked at a big studio using Unreal though, the game i worked on was a AA at best. Though from a Linux gamer's perspective games made using Unity and Unreal tend to play pretty much perfectly under Wine so at least there is that.
Speaking of Linux gaming and Wine… I have been following along with Travis Vroman's Kohi Game Engine series. He's developing his own free and open source, cross-platform game engine in plain C. I was genuinely surprised at how little work went into setting up software to be cross-platform provided you went into it with cross-platform capability in mind and did that work at the outset. Seriously, the video for the set-up for Windows was 30 minutes, and the one for Linux was 17. Of course, a little work for the uniqueness of each system had to be done later on here and there, but much of the heavy lifting was already in place from the beginning. I was shocked.
Do you think that because Outer Worlds was in Unreal it was easier to avoid bugs, or was the amount of bugs that popped up pretty much normal, but the QA was better?
I had no idea Mr. Cain worked on Wildstar. As for the video in general; I think this video has so much great reasoning as to why you would make your own engine. The more popular engines are not very modular. Thankfully, there are many options that were designed with that in mind. Some of them are more like frameworks or the like. I know Raylib is a pretty lean option, which I'm curious about looking into.
OMG good input. Im retired and thinking about making my own game. Right now, cause it's 2d, it's Unity in the running, but I really want to just make my own engine.
Great perspective. I do my own engines, and I suppose I am in that rare and privileged position. I just found it too cumbersome to go through other peoples' bad abstractions and to wait on support to fix bugs, deal with updates that break your game, and so on. LOL I think I would rather work in a higher paying but boring part of the software industry for a while, save the money, and then retire into the freedom to make my own games with my own engines than suffer through a game industry that mostly uses third party engines. But I actually don't find it to be *too* bad. You can reuse a good deal of your Windows/Mac OS / other platform code from game to game. Other common problems in rendering and audio get solved more or less once, and you can reuse that stuff too. So it's not like you don't have an engine. You do. It's just that you don't start with it. You have to build it before you can reuse it on the next project.
hey Tim, have you heard about or played The Outer Wilds? :D I think it came out very closely to Outer Worlds which was very unfortunate for them to have similar name and both being space-ish games. But it's an amazing indie game :)
To me the biggest advantage of roll-your-own-engine is having a clear idea about graphics bottlenecks. When shader recompilation happens, what is culled, etc.
im currently in this exact conundrum. theres a lot of unique things i want to do that current engines dont, and im quickly discovering im OCD when it comes to efficiency, and paranoid when it comes to legal nonsense like how much of my own game i actually own. as someone whos been exposed to programming for a long time but only recently actually learning, everything i see just flat out says "give up on making your own engine", and i hate that. i know its not gonna be easy, but giving an absolute like that can stifle the more creative ideas new programmers and designers might have. ive got no illusions about my first couple games- if i had learned programming a decade ago, maybe things would be different, but i cant afford to spend the time on it now. but, eventually, i do 100% absolutely plan to make my own engine, and do the things i want to do that would be impractical in existing ones. thats why, for now, im making parceled pieces of functionality that i can roll into either Unity or Unreal. i was leaning towards Unity before, but as I learn more C++, im recognizing certain flaws and shortcomings that make me tempted by Unreal and might switch over before serious development gets off the ground.
@@pixelfairy problem is, 3rd-party libraries fall into a sort of middle-ground, where they have the shortcomings of both sides they lack the support of major dev teams, and also lack the customization and ownership of a fully custom engine so you have to be careful which ones you use, or it could actually set you back quite a bit
@@pixelfairy I've seen this being said multiple times around here, so I feel compelled to say: SDL is such a small part of an engine. It's pretty much negligible. Most people only use it for window management, as the other stuff is very limited/restrictive, which kind of defeats the point of doing a custom engine. Window management is usually under 500 lines of code. For reference, my engine currently sits at about 100k ish lines of code after 5ish years working on- and off, and the platform bootstrap/windowing code (the SDL part) is literally all confined to a single source file which currently sits at 427 lines of code. (I checked ;p) It's funny because at one point I didn't use SDL at all and it was just Win32. But there really wasn't that much of a difference in terms of code length. Just that the API was uglier and the code was not portable at all (which is the main reason I switched to SDL.) However, there are libraries that are way more impactful, like ImGui or NoesisGUI if you don't want to write your own gui framework (now THAT is a timesink, I can tell you :p) or enTT for ECS. WWise is another example. But even when taking all of those libraries and throwing them together, it is still a MONUMENTAL task.
@@pjrotsaert2832 agreed. It was just an example I brought up because we used it at work. I saw others but never had the time to try them. Our code mostly ran on Linux in production, but occasionally we had to make a windows binary for someone we're working with to check out.
Tim, great video! Since new Sim Settlements mod for Fallout 4 came out yesterday, it make me thinking on game engines and moding community. It seems that large part of Bethesda success comes from a huge moding community that their games have and it allows them to keep selling Skyrim for 9th time. It also seems that such moding friendliness was part of their game engine for awhile. Do you think that the aspect of moding friendliness should be a part of decision making as on what game engine to choose. Were you ever thinking about moders to your games in a future when you were creating them?
so far tim was ultra ignorant towards modders only acknowledge something with vampires bloodlines i wanna know a lot more technical knowledge and indeepth mechanics than his willing to reveal in videos and personally i feel kind of like a hater XD
A big part of Bethesda’s success in this area is that they go above and beyond by releasing a separate free Creation Kit editor and modding tools for each of their games. Not very many developers put this much effort into enabling users to go under the hood like that and change or add anything they want. Blizzard used to in the old days. Remember the StarCraft and Warcraft editors?
Not really a nightmare if the studio using it are also the ones who created it. Bear in mind that pretty much every major open world AAA game developer in the world uses their own internal, proprietary engines: Rockstar (RAGE), Ubisoft (Anvil, Snowdrop), CDPR (redEngine), Bethesda (Creation Engine), Guerilla & Kojima (Decima Engine), even Nintendo for BotW & FromSoft for Elden Ring all use their own internal bespoke engines. I like that there’s engine diversity in the market, not just a tech monoculture, because they contribute to the distinctive “feel” and flow of all those games.
@@tronam Most large AAA game developers have the money to develop their own game engine. They also don't have to share the revenue, which is reason enough for AAA game developer to use their own inhouse engine. It is the smaller studios that rely on existing game engines like Unity or Unreal.
There is one other thing, a con for the industry as a whole. With more and more games being made in one of two engines there are fewer roles for those specialists that build engines, so there will over time be fewer and fewer people who already have the skills to build an engine from scratch working.
Tim, I think you missed a good Option No. 3 that is available nowadays: free and open source game engines. If you take the time to look for one that is more in line with your needs, you can have most of the pros of the ready-made commercial engines while also reducing the cons somewhat (but not altogether, of course). And because it's free and open source, you also have many of the pros of the "make your own." You can, indeed, fork it and rewrite to your heart's content until it is, effectively, your own (though you don't need to) with no worries of EPIC or Unity taking a cut of your profits. And regarding things like knowing GPU pipelines, pixel shaders, memory allocation, CPU utilization, etc.... another benefit of this day and age is that there are plenty of free and open source (and cross-platform) utilities, libraries, SDKs, etc. that can handle a lot of that as well that can be utilized. For most things, there is no need to "re-invent the wheel" when creating your own game engine now. All the while, if something still isn't quite how you want it and you know how to achieve that, you are free to hop into the source code and change it. Simply put, it is a far better environment that it once was for endeavors like that, and I wish far more developers would do so. I dislike how one and/or two engines are saturating the market so thoroughly. It is monopolizing gaming technology.
Great Video Tim. Would love to see you chat to Johnathan Blow about his Jai language. That madman makes an engine for every game, and now an entire programming language. I idolize that sort of bespoke development, but i wouldn't trade it for my high productivity in Unity.
Yeah, I'm hoping to see more major studios start using Godot and building into that ecosystem. Obviously it can't compete with Unreal but I'm curious to see it go head to head with Unity
@@plebisMaximus Sure, but you don't pay any royalties and get a great deal of functionality out of the box. Prototyping a game in godot vs making your own engine are worlds apart wrt time required.
@@element1111 Also, you could fork Godot for your game and specialize the engine from there. While you might not have the hyper specialization of a custom engine, forking Godot could get you 80% of the way there.
I need to understand how stuff works so I have always coded my own engines, my latest one is great but huge for a single indie dev... I will finish it someday, for sure.
I have always found Unreal to be the easier engine to learn, however, I am an artist, and not really a programmer, so UE just always made sense to me, and the fact that I was able to teach myself Blueprint, and that for someone with my particular brain, being able to see how the logic works in a visual scripting system vs staring at lines of code, I will likely always hold that position unless something new comes along that ticks all those same boxes. Not to mention, Unity's business practices lately leave a lot to be desired. Epic isn't perfect, but by and large they have done right by their users, and continue to develop at a pace I am not sure anyone else can really compete against.
Back when I was learning programming, the course I was in hammered into us to *never* use anyone else's code if we could not explain it line by line. While in a different industry now, it is still hard to break that mindset. That I would need to read and understand, say, UE5's entire codebase, before I even think about using it. All scripts and samples of things I have made (for fun, not profit), I've released out there for people to use and tear apart.
That line is said because the professors want you to learn the language 100% before taking shortcuts. If you know C++, You can still, given time, read and understand the codebase. So don't worry about not knowing every line in UE5's codebase if you fully know C++.
I'm using c and raylib libraries, and building my own engine in it with a specific purpose. raylib provides everything that is needed for game/app dec. Prefer that than an engine because can have super high performance, can write the code I need, and know inside out of it, so when something is not working, I don't need to wonder if it's an issue on mine or engine side. And as i said, everything that is needed for an engine raylib has, so the development is really fast, and all I have to do is to write sort of a shell when is what happening. It's opengl 4.3, but has an abstraction lib that lets you program card as if ogl1.1, but that's only if you want to get under the hood, cause otherwise everything is ready to go.
I love your videos so much, you certainly have Charisma 10 :) 13:11 And the phrase that comes to my mind is "the cat is out of the bag." I wonder if it's this one.
I know you mentioned that you're semi retired but I was wondering if you're working on anything for yourself, game development-wise? Have you given any consideration to going indie? Some of my favorite games of the last decade were made by either one person, or just a handful.
I'm using GameMaker because while I would LOVE to write my own engine, my focus is making a game, and I don't want to have to deal with compiling, I/O, etc., for different hardware.
I wouldn't see it as a disadvantage if someone has on their CV that they made and worked with their own engine for years, instead of the industry standard. It means they have gained a lot of experience on actually programming something from scratch and understanding the underlying algorithms, it wouldn't be hard for that person to transition to popular game engines if it works so well out of the box.
13:30 With recent developments, I'd be very interested to see if your opinion has changed on this. Yes, Unity walked back the changes they proposed, but some developers don't trust them anymore. Do you think that's temporary or are we about to see devs switch to Godot or something similar?
Good advice. People make things so much harder than they need to. 2 types of people want to change the world and reinvent the wheel: the young and the delusional. Or maybe you’re very rich. But if you’re not young any longer the clarity of being a realist is the burden you bear.
Josh Sawyer praised the engine in fact and credited the engine and the tools/resources Bethesda provided, claiming that they wouldn't have been able to do even half of what they did in NV without their engine.
What are your thoughts now post-unity runtime scandal? That one scared me off pretty bad. I have less issue paying a sub up front for an engine now than trusting these "FREE" engines. For one game I'm having it built from the ground up too now. It might be more expensive in the long run, but it seems safer.
that is not simply true. A relatively small but knowledgeable team can come up with a good engine, specially if they know what kind of game they're targeting.
I think there is still a use case for making your own "engine", or using more minimal engines/frameworks, and that is: Low end, high performance abstract graphics games. if you are mostly a programmer that want to get a game done quick, and you can script your own graphics with drawing basics shapes, drawing pixels on screen or directly drawing to shaders, then something like Unity is way overkill and clunky.
Just a note, unity recently moved away from the revenue share model and they now charge a subscription depending upon your income. You need the subscription to port to console, but just making the game can be free.
All I heard was "I own the Arcanum source code." I remember you've said before that you've compiled it and it works on modern systems. Does that mean you could make a drop-in replacement engine that would work with retail copies of the game? As it is, it does work, but requires downloading some mods.
The pattern is all too familiar 😞 As usual, industry consolidation makes for wonderfully lowered barriers to entry (thanks to economies of scale) but also makes for awful breakdowns in communication (thank to diseconomies of scale).
you never got around to comparing unity vs unreal, what are the pros and cons of picking one over the other to us plebians who are no where near the level of considering making our own engine?
Every engine look a little different graphicly due to being made different. I fear if too many companies go over to these big engines that they loose that uniqueness. Idk maybe that is a silly thing to worry about.
Networking for sure today is the biggest lacking of programming. Almost every game now has horrible netcode because developers don't know shit. These newer developers generally grew up with the idea "I plug my ethernet cable in, and it just works" and that's where their knowledge ends. And it shows.
@@OpenGL4ever its not about implementing network code. its about having the right settings. all games that are multiplayer have networking code. it comes down to two things, are you tracking the data and are you sending the data. pubg, huge issue with tracking data. bullets "disappear" because the game isn't tracking the bullets you shoot. so you can full auto an SMG point blank into an enemy and they dont die. which doesn't make sense, because ammo wise, a full smg clip should drop that player. a lot of people many years ago when the game was new complained about tickrate. "somethings wrong with the tickrate" and the developers looked into it and found that at 100 players (start of game) tickrate could drop to 5 ticks per seconds (5 server updates a second) which would absolutely ruin performance. or so they thought. "im missing because of tickrate." few months later pubg updated their game so that you only get sent/received data of players close enough to interact. so if you are too far away, its like that player doesn't even exist. especially if there is no line of sight. now tickrate remained 60 start to finish of matches. and yet, bullets still missed. people CLAIMED they could feel it, but its placebo. because we did the hardcore testing and proved bullets were still going untracked. conan exiles. horrible netcode. servers run 30 updates a second (30 tickrate). the first thing private server owners tried to do to fix the game was increase their updates a second to 60 or higher. it broke the game. the AI would break and the game would run like ass. mainly due to physics being tied to the tickrate. bad programming in general. after that deboggle they realized client side and server side was capped data wise. you could only send so much data per second. so their solution was to crank server side data allowance and player side data allowance. this mitigated SOME of the issues, but many still persist. bad game code.... which i find funny that people think dune is gonna be something special and netcode fixed.... if they solved their netcode issues, they could EASILY backport that code into conan and give owners of the game smoother gameplay... but they haven't, because they haven't fixedshit. now we take a step back to the early 2000's with games like return to castle wolfenstein, wolfenstein enemy territory, and quake3arena.... these games ran at a whopping 15 updates a second (15 tickrate) and yet NO ONE ever complained about shooting someone and them "living" because "bullets didn't register".... no one ever complained about tickrate or performance. why? because first point the game tracked every bulllet you shot. if you shot an enemy, and your crosshair was on that enemy, the shot registered. you NEVER had a bullet phase through an enemy pretending it didn't hit. secondly, data. back then when most of us were limited to DIAL IP, we used way more data than FPS games today use.... so much so, that the only people getting 5ping where those on a t1 connection which could send/receive all the data in a single packet instead of multiple. I was on dial up, so for every packet I should get, I would receive 3.... which would increase my ping to about 50. Yeah, imagine being east cost new york and playing on a new york server and you have 50 ping. meanwhile another person literally 3 floors above had a t1 connection and had 5 ping to the same game server.... anyway, we would see data rates over 80 Kilobyes per second, which is 0.64 megabit aka 64k dial up. You could max out a 64k modem with just a single game instance of those 3 games. and if you had a 32 player server like some private servers ran, you ended up with almost double the data rate, and thusly high ping due to slower packet transfer.... in comparison? todays games? pubg uses 25 kilobytes a second max. usually 10-15 download and 5-10 upload. and yet, we have guns shooting more bullets, faster, than we ever did before. so not only is it NOT tracking the bullet data, it can't send it either. remember older games were using 80 kilobytes per second AVERAGE. and yet games today are using less? we have BETTER internet today than we ever had! I myself am on gigabit connection. that's 1000 megabits.... 125,000 kilobytes.... and yet games are using 20 kilobytes of data average today.... so games have gotten MORE complex, but use LESS data than 20 years ago. absolutely insane. but im gonna guess you are gonna TLDR and cry about being stupid.
Current engines are really general purpose, which is an advantage but also has the disadvantages Tim mentions. Engine licensing existed far earlier, less in the form of the general purpose toolset but as a genre template. Wolfenstein3D, Doom, Quake, Unreal's engines were used for a lot of different games, but mostly shooters. Even modern Call of Duty started of with a Quake 3 engine license. In the RPG there was Biowares Infinity Engine from Baldurs Gate, which got licensed to Interplay for Planescape and Icewind, and it's successor made for Neverwinter ended up in the hands of a small polish company who used it to make The Witcher. There are similar stories with the engine that is now used by Bethesda. What all of these have in common is that they are by design well suited for modding which is not a surprise because it started with "engine licenses" that were basically reskins of early shooters. The rise of general purpose engines coincides with the end of level editors, there you will find the link between game engines as a general purpose toolset and how it transformed indie developement form modding bigger games to making smaller games.
So I wanna say that I absolutely love this video and how you layed out the pros and cons. I have many years working in Unity and one or two in Unreal. I've been building my own engine within the past 3 months now and I can agree in knowing how much time it would take to construct one. It would be amazing if you were able to take me under your wing becuase I am always looking to learn in what I have a passion for and you seem like an amazing developer/mentor!
If this was back in early 2000s and you were about to make "arcanum" type of game again, but let's say the over the shelf engines exited for a while, e.g. unreal and unity, would you still go with making your own or deciding to go with unreal/unity?
I would love to hear more about the story of how Troika got a source engine license and all the drama that led to vampire having to be released on the same day as HL2. I feel like most of the events surrounding that were not intentional on Troika's part, and getting the pre release version of source seems like a very interesting story!
Having Leonard and/or Jason on to talk about it would be great!
There is a video with Leonard where he talks a bit about Vampire and the problems with the engine. I think it's the second one. It's well worth watching.
@@stuartmorley6894thankyou I’m going to look for it now!!
I heard that they were ready to release Vampire before valve had shipped Half-Life 2, but they weren't allowed to be the first game to release on the engine, so they were forced to wait until HL2 shipped and released on the same day because Activision wanted to try to recoup costs asap. Would love to know if this was true.
@@TorQueMoDIf I'm not mistaken this wasnt published by Activision.. It was published by Sierra Interactive which was under Vivendi.. Vivendi did end up selling their assets to Activision which was Blizzard and some IPs in 2008.. However the Bloodlines IP wasn't apart of the deal so I don't think they ever even been near the IP..
I can't believe how great these videos are. There are no animations, stock videos, sound effects or cuts, just a person talking for +10 minutes straight, and he manages to fully control my attention throughout. Thank you for sharing.
If you like this format and medieval/ancient history you might enjoy a channel called lindybiege which has much the same format.
Man I'm so glad youtube started recommending me Tim's videos.
same. hidden gems right here
I've been doing game programming as a hobby in my spare time for the past 20 years. During this time, I've rewritten my game engine and codebase at least 10 times. While this endeavor hasn't directly generated revenue, it has significantly improved my programming skills and provided me with a deep understanding of various aspects related to computer graphics, programming, operating systems, and desktop managers. Indirectly, this experience has greatly benefited my career as a software developer, as problem-solving skills in software programming are universally valuable. In my humble opinion, pursuing this hobby is entirely worthwhile, even if you never intend to commercialize a game, provided you have a passion for programming.
This is what I like about using a managed environment/framework with a set of libraries (using MonoGame, formerly XNA): It gives me the satisfaction of coding my extended framework/engine (at a high level) while also having most of what I need to make a game like input, audio, sprite batching, game loop, math functions; and without having to interface with the hardware to get those things. So that could split the difference for those with one foot on both sides.
I'm listening :)
[edit]
One amazing pro of writing your own engine is, you're free to innovate. Many many coders that were once gamers have come across some mechanic or feature that they've felt didn't perform as well as it should, because their idea for how it works is simpler. Writing your own engine will give you the required freedom to actually put your theory to the test, and the understanding to theorize more accurately afterwards.
Nobody could possibly know everything, or even remember it all if they tried to learn. But the nice thing about code is, a text file won't forget. If I research for two weeks to find the most optimal method I possibly can, then correctly implement it, that change isn't lost even if the exact memory is. That's why self-documenting code is my way of doing things. If I can look back on a few lines and it's obvious what's going on, I can always re-learn what I forgot should I need to tweak anything.
Just my personal thoughts. Keep the uploads coming, good stuff.
Can you please do more videos on programming?
In one of your previous videos, you mentioned how you always have plenty of ideas for new games. I'd love to hear how you decide which ones to turn into actual games, and which ones not to.
Godot is pretty great, and you can write with C# as well. I find it more pleasurable to use than Unity with similar results. I find the thought of writing my own engine daunting even though in the past I've tried Direct X and Win32 programming, I have a huge amount of respect for those that have done so as well as the shoulders of the giants we all stand on today.
It's the best one for one reason very overlooked. That is, no online authentication/login, so therefore no internet connection required.
And its sooooooooooo much lighter than unity. Booting up unity on any sort of even medium sized project becomes such a slog
yup
Seems like Godot is the way going forward. Being open source and gaining increasing support/popularity it may outcompete the same way Blender did for 3D.
@@contentdesignwizardry2458 Godot is definitely going places, very probable that it's the Blender of game engines in a few years
Holy crap you worked on some HUGE games. Super impressed, I wanna make games for a living and am starting on my first commercial project as an indie dev. I'm hoping everything goes well but I'm glad I found you, such a fountain of experience. That's wonderful, got my sub
Theres a spectrum between rolling your own and unity/unreal. Libraries with different amounts of includes wheels. SDL for example. It handles the os, input, display etc, and leaves you to writing the game.
Im writing my own (simple) game from scratch in C in my spare time. The motivation for me to not use an engine is that I want to learn how things work by doing them, and I feel that to truly innovate you need to have the technical understanding to know what you even can do
Exactly. Unity and Unreal effectively monopolised all the gamedev. This is a very sad situation, as this stifles all creativity and experimentation. The game is the engine, and using generic engine means making a generic game.
I had always wanted to make my own game engine, and back around 2018 I really got started on doing it. In part I wanted to make a game for these low end single board computers, which didn't have good GPU drivers, or in some cases no OpenGLES compliant GPU at all. In the end what I realized and got great satisfaction from was making my own 3D rasterization engine for low end ARM hardware. I learned a ton, and while I didn't go all the way yet, I think it greatly help my understanding of how graphics work.
Binged watched your videos is more fund than watching game reviews
Even though I don't make games, hearing about this stuff is really interesting. Thanks again for the great videos.
Even though I know you were not the "main guy" on them, I'd love to hear your experience on working on South Park and (especially) Pillars and Tyranny. Especially given the whole kickstarter craze that was going on with Pillars.
I worked in construction in the UK for a couple of years and I found that a massive construction company involved in HS2, uses Unreal engine to compile all the CAD models before converting them to Revit models.
I'd point out that it isn't a choice between building literally everything from scratch or using an off the shelf engine, there are libraries like SDL2 (or something like Pygame for more abstracted level interactions) that cover a lot of the different operating systems so you don't have to think about it as much. These exist somewhere roughly around the middle of those two extremes.
> SDL2
Allegro is another option.
I am a programmer, I've never worked on a game save for a couple of failed tries. For myself it's mostly an academical exercise to write your own engine. You learn the graphics rendering pipeline, up until the HW level, how physics rules, lighting, gravity, collusion works are implemented. I find it similar to the exercises in my CS class where we designed our own ALU (CPU). It is weak, it is unoptimized but you learn how it works. That's why even if you won't going to use it for your 'production' code, it's enlightening to give it a go. Also reference to Tim's challenge yourself video! Thanks Tim!
there are a lot of nice libraries that can make rolling your own engine a lot more manageable, but then you're in a grey area where imports like SDL and FMod and so on start making it look like you're using a pre-existing engine anyway. i think Godot is a step up from that, then Unreal.
i've seen some 2d and retro styled 3d games come out from tiny indie studios running on their own engine and finding success but even in those cases its hard to say the time spent was worth it. there's a game called Barony which did the old id software routine and open sourced the engine a year after release, and having a compact open source code base means the game can live forever if that's what fans want.
Thank you so much for this! Came from your GDC talk about Fallout Postmortem, and was really inspired about how you made a new game engine for it within a couple years, especially with how limited technology and resources are. I had to look you up specifically to see if you talked more about that engine, and you do not disappoint!
I was learning Unity before the incident. Amd while I will never build a game using it, there's still a few skills I want to grab from it. (Basically, the ability to watch a tutorial, and make the same thing while writing my own clean code)
After the incident, I started working on my own game engine. I'm mostly a hobbiest, and it's definitely one I want to use for decades. Though I have Godot as a failsafe, so if I inevitably want to make a game more than I want to make an engine, I can switch to Godot for a bit. In the meantime I'm learning so much from this attempt! Things I probably should have known, like git, how shaders work, etc, but didn't. If people could make an engine from scratch in just a couple years with that level of technology, I think I deffinately can with the frameworks, libraries, and api that I have available, plus ai like Phind to help me figure things out far quicker.
Anywho, you have renewed a bit of that inspiration in me today. Hopefully I'll even be able to make my dream game someday!!!
It's good to mention that most popular engines have a nice API for extending the editor, which is often unnoticed or undervalued. For programmers, I highly recommend spending some time to get better at implementing custom editors, handles, asset management, etc. You can remake the most important parts of your game (and create tools for that) inside third-party engine, and leave less important modules as is.
5:13 is, to me, the ultimate benefit of owning your own source code. As you spend more time in a codebase you start to unlock some kind of god mode where you can instantaneously tell where a piece of code exists, and can do pretty much anything.
The down side of this is to burn yourself out of the codebase, or have it reach a point where it's unmaintainable for others (or yourself when you come back weeks later after spending time somewhere else), so it's important to proactively and routinely clean up and refactor all the pain points in the codebase.
Thankfully, the time you've spent in the codebase allows this process to go much more smoother and much more efficiently, so it's like a win-win.
My first non-academic job was at an AI company. They had built an infrastructure for representing knowledge that was really impressive - but nobody outside of that company used it. It’s very similar to what you mentioned about new hires wanting to use a standard engine. There just wasn’t an incentive for someone to become an expert in the in-house product if they knew that in 2-3 years they’d go work somewhere that used the industry standards.
That said, it did exactly what we wanted. No artifacts from using a very general standard or platform. When it worked, it worked tremendously well.
In my opinion it's often about vertical integration. I'm amazed at what Apple can do since they have total vertical control: if a Safari developer wants to change something in the kernel in order to improve performance, they can do it. People often treat abstractions or libraries as if there is no downside to using them, but I think there is an actual hierarchy to reality that means you end up distancing yourself from the root of the problem the more foreign abstractions you rely on. This is similar to what happened to the OOP design patterns nightmare. Ultimately people forget that there is a physical machine that exists and that it is the actual thing that will run your game.
Love you videos, Tim. Thank you for being an authentic human. Honestly would love to hear your thoughts on an open source MIT licensed game engine like Godot. It would be amazing to have you contribute to that project. I believe it has the potential to be like Blender - open tech that anyone can use without getting locked into an ecosystem. And without falling into the trap of building it all. Would you consider assessing and reviewing Godot?
Thanks for this video, Tim. You articulate it so well.
I'm going to just share this video to explain the topic instead of my own feeble attempts from now on. lol
Thanks for this wisdom. I had not considered the cons as much for making your own engine. Using engines is good for urgency.
Maybe a good balance balance is to roll your own tools that work well with some popular engine, trying to put your own "front" or adaptations on engines, so that your own specializations shine while getting the benefits of getting games done fast.
Funnily enough I was thinking about the choice of engine for The Outer Worlds after finishing my supernova playthrough the other day. So happy when I saw this pop up lol
FWIW having worked on a bunch of games, including some AAA ones, with both custom and off-the-shelf engines i'd rather be working with custom engines even if the i'm not the one who made them. I find it much more interesting this way (even with existing custom engines i like reading the code to see how different programmers handled similar issues) - and the control pro you mentioned is GARGANTUALLY GINORMOUS :-P.
Also in my experience with Unreal, both the official support and most resources available out there are kinda useless in practice (with some exceptions of course) and the best approach is to just read the code (which is why incidentally so far i have avoided any Unity project). My experience might have been different if i worked at a big studio using Unreal though, the game i worked on was a AA at best.
Though from a Linux gamer's perspective games made using Unity and Unreal tend to play pretty much perfectly under Wine so at least there is that.
Speaking of Linux gaming and Wine… I have been following along with Travis Vroman's Kohi Game Engine series. He's developing his own free and open source, cross-platform game engine in plain C. I was genuinely surprised at how little work went into setting up software to be cross-platform provided you went into it with cross-platform capability in mind and did that work at the outset. Seriously, the video for the set-up for Windows was 30 minutes, and the one for Linux was 17. Of course, a little work for the uniqueness of each system had to be done later on here and there, but much of the heavy lifting was already in place from the beginning. I was shocked.
Which engine are you going to use when you do the Arcanum remake i hope to see?
Nice
Do you think that because Outer Worlds was in Unreal it was easier to avoid bugs, or was the amount of bugs that popped up pretty much normal, but the QA was better?
I had no idea Mr. Cain worked on Wildstar. As for the video in general; I think this video has so much great reasoning as to why you would make your own engine. The more popular engines are not very modular. Thankfully, there are many options that were designed with that in mind. Some of them are more like frameworks or the like. I know Raylib is a pretty lean option, which I'm curious about looking into.
OMG good input. Im retired and thinking about making my own game. Right now, cause it's 2d, it's Unity in the running, but I really want to just make my own engine.
0:37 Godot as well. It's on track to beat Unity.
'roll my own' Cain confirms blazes it 420
I can't tell if the audio desync is in the video or just my computer being weird. Still, fun to hear about these options.
Great perspective. I do my own engines, and I suppose I am in that rare and privileged position. I just found it too cumbersome to go through other peoples' bad abstractions and to wait on support to fix bugs, deal with updates that break your game, and so on.
LOL I think I would rather work in a higher paying but boring part of the software industry for a while, save the money, and then retire into the freedom to make my own games with my own engines than suffer through a game industry that mostly uses third party engines.
But I actually don't find it to be *too* bad. You can reuse a good deal of your Windows/Mac OS / other platform code from game to game. Other common problems in rendering and audio get solved more or less once, and you can reuse that stuff too.
So it's not like you don't have an engine. You do. It's just that you don't start with it. You have to build it before you can reuse it on the next project.
hey Tim, have you heard about or played The Outer Wilds? :D I think it came out very closely to Outer Worlds which was very unfortunate for them to have similar name and both being space-ish games. But it's an amazing indie game :)
To me the biggest advantage of roll-your-own-engine is having a clear idea about graphics bottlenecks. When shader recompilation happens, what is culled, etc.
Hi Tim, anything to say about the state of game engines after Unity just modified terms of service?
im currently in this exact conundrum. theres a lot of unique things i want to do that current engines dont, and im quickly discovering im OCD when it comes to efficiency, and paranoid when it comes to legal nonsense like how much of my own game i actually own.
as someone whos been exposed to programming for a long time but only recently actually learning, everything i see just flat out says "give up on making your own engine", and i hate that. i know its not gonna be easy, but giving an absolute like that can stifle the more creative ideas new programmers and designers might have. ive got no illusions about my first couple games- if i had learned programming a decade ago, maybe things would be different, but i cant afford to spend the time on it now. but, eventually, i do 100% absolutely plan to make my own engine, and do the things i want to do that would be impractical in existing ones. thats why, for now, im making parceled pieces of functionality that i can roll into either Unity or Unreal.
i was leaning towards Unity before, but as I learn more C++, im recognizing certain flaws and shortcomings that make me tempted by Unreal and might switch over before serious development gets off the ground.
You could make your own using a library like SDL to still not reinvent all the wheels.
@@pixelfairy problem is, 3rd-party libraries fall into a sort of middle-ground, where they have the shortcomings of both sides
they lack the support of major dev teams, and also lack the customization and ownership of a fully custom engine
so you have to be careful which ones you use, or it could actually set you back quite a bit
@@pixelfairy I've seen this being said multiple times around here, so I feel compelled to say: SDL is such a small part of an engine. It's pretty much negligible.
Most people only use it for window management, as the other stuff is very limited/restrictive, which kind of defeats the point of doing a custom engine.
Window management is usually under 500 lines of code. For reference, my engine currently sits at about 100k ish lines of code after 5ish years working on- and off, and the platform bootstrap/windowing code (the SDL part) is literally all confined to a single source file which currently sits at 427 lines of code. (I checked ;p)
It's funny because at one point I didn't use SDL at all and it was just Win32. But there really wasn't that much of a difference in terms of code length. Just that the API was uglier and the code was not portable at all (which is the main reason I switched to SDL.)
However, there are libraries that are way more impactful, like ImGui or NoesisGUI if you don't want to write your own gui framework (now THAT is a timesink, I can tell you :p) or enTT for ECS. WWise is another example.
But even when taking all of those libraries and throwing them together, it is still a MONUMENTAL task.
@@pjrotsaert2832 agreed. It was just an example I brought up because we used it at work. I saw others but never had the time to try them. Our code mostly ran on Linux in production, but occasionally we had to make a windows binary for someone we're working with to check out.
@@Anubis1101 SDL is using the zlib License since version 2.0. So you're pretty free in doing stuff with it.
Tim, great video! Since new Sim Settlements mod for Fallout 4 came out yesterday, it make me thinking on game engines and moding community. It seems that large part of Bethesda success comes from a huge moding community that their games have and it allows them to keep selling Skyrim for 9th time. It also seems that such moding friendliness was part of their game engine for awhile. Do you think that the aspect of moding friendliness should be a part of decision making as on what game engine to choose. Were you ever thinking about moders to your games in a future when you were creating them?
Great question, I hope Tim sees it.
so far tim was ultra ignorant towards modders only acknowledge something with vampires bloodlines
i wanna know a lot more technical knowledge and indeepth mechanics than his willing to reveal in videos
and personally i feel kind of like a hater XD
A big part of Bethesda’s success in this area is that they go above and beyond by releasing a separate free Creation Kit editor and modding tools for each of their games. Not very many developers put this much effort into enabling users to go under the hood like that and change or add anything they want. Blizzard used to in the old days. Remember the StarCraft and Warcraft editors?
Thank you for your insights, good sir. Very helpful !
Would you ever consider doing a Q&A with your audience? I've got a bunch of questions for you, I'm sure I'm not the only one.
When you hear the stories of development studios making their engine along side a game project, it always sounds like such a nightmare.
Not really a nightmare if the studio using it are also the ones who created it. Bear in mind that pretty much every major open world AAA game developer in the world uses their own internal, proprietary engines:
Rockstar (RAGE), Ubisoft (Anvil, Snowdrop), CDPR (redEngine), Bethesda (Creation Engine), Guerilla & Kojima (Decima Engine), even Nintendo for BotW & FromSoft for Elden Ring all use their own internal bespoke engines.
I like that there’s engine diversity in the market, not just a tech monoculture, because they contribute to the distinctive “feel” and flow of all those games.
@@tronam Most large AAA game developers have the money to develop their own game engine. They also don't have to share the revenue, which is reason enough for AAA game developer to use their own inhouse engine. It is the smaller studios that rely on existing game engines like Unity or Unreal.
There is one other thing, a con for the industry as a whole. With more and more games being made in one of two engines there are fewer roles for those specialists that build engines, so there will over time be fewer and fewer people who already have the skills to build an engine from scratch working.
Hope you're excited for BG3 Tim. :D
Tim, I think you missed a good Option No. 3 that is available nowadays: free and open source game engines. If you take the time to look for one that is more in line with your needs, you can have most of the pros of the ready-made commercial engines while also reducing the cons somewhat (but not altogether, of course). And because it's free and open source, you also have many of the pros of the "make your own." You can, indeed, fork it and rewrite to your heart's content until it is, effectively, your own (though you don't need to) with no worries of EPIC or Unity taking a cut of your profits.
And regarding things like knowing GPU pipelines, pixel shaders, memory allocation, CPU utilization, etc.... another benefit of this day and age is that there are plenty of free and open source (and cross-platform) utilities, libraries, SDKs, etc. that can handle a lot of that as well that can be utilized. For most things, there is no need to "re-invent the wheel" when creating your own game engine now. All the while, if something still isn't quite how you want it and you know how to achieve that, you are free to hop into the source code and change it. Simply put, it is a far better environment that it once was for endeavors like that, and I wish far more developers would do so. I dislike how one and/or two engines are saturating the market so thoroughly. It is monopolizing gaming technology.
Great Video Tim. Would love to see you chat to Johnathan Blow about his Jai language. That madman makes an engine for every game, and now an entire programming language.
I idolize that sort of bespoke development, but i wouldn't trade it for my high productivity in Unity.
'The die is cast'; also, 'the hourse is out of the barn', 'has left the barn' etc.
the snail has left the bucket! . Did you have a chance to look at that Blue Dot short movie, metahuman animator showcase from Unreal engine?
What of open source alternatives like godot?
I was just going to ask about this :D
Yeah, I'm hoping to see more major studios start using Godot and building into that ecosystem. Obviously it can't compete with Unreal but I'm curious to see it go head to head with Unity
I don't think it really changes the conclusion. An open source engine is still more work to specialize than making your own engine.
@@plebisMaximus Sure, but you don't pay any royalties and get a great deal of functionality out of the box. Prototyping a game in godot vs making your own engine are worlds apart wrt time required.
@@element1111 Also, you could fork Godot for your game and specialize the engine from there. While you might not have the hyper specialization of a custom engine, forking Godot could get you 80% of the way there.
I need to understand how stuff works so I have always coded my own engines, my latest one is great but huge for a single indie dev... I will finish it someday, for sure.
I have always found Unreal to be the easier engine to learn, however, I am an artist, and not really a programmer, so UE just always made sense to me, and the fact that I was able to teach myself Blueprint, and that for someone with my particular brain, being able to see how the logic works in a visual scripting system vs staring at lines of code, I will likely always hold that position unless something new comes along that ticks all those same boxes. Not to mention, Unity's business practices lately leave a lot to be desired. Epic isn't perfect, but by and large they have done right by their users, and continue to develop at a pace I am not sure anyone else can really compete against.
Back when I was learning programming, the course I was in hammered into us to *never* use anyone else's code if we could not explain it line by line.
While in a different industry now, it is still hard to break that mindset. That I would need to read and understand, say, UE5's entire codebase, before I even think about using it. All scripts and samples of things I have made (for fun, not profit), I've released out there for people to use and tear apart.
That line is said because the professors want you to learn the language 100% before taking shortcuts. If you know C++, You can still, given time, read and understand the codebase. So don't worry about not knowing every line in UE5's codebase if you fully know C++.
I'm using c and raylib libraries, and building my own engine in it with a specific purpose. raylib provides everything that is needed for game/app dec. Prefer that than an engine because can have super high performance, can write the code I need, and know inside out of it, so when something is not working, I don't need to wonder if it's an issue on mine or engine side. And as i said, everything that is needed for an engine raylib has, so the development is really fast, and all I have to do is to write sort of a shell when is what happening. It's opengl 4.3, but has an abstraction lib that lets you program card as if ogl1.1, but that's only if you want to get under the hood, cause otherwise everything is ready to go.
From one engine builder to another, I salute you.
@@CainOnGames Thanks Tim. That actually means a lot to me.
What are your thoughts on the recent events with Unity? and what are your thoughts on something like Godot as a game engine?
i loved this topic, please more!
Hey, Tim!
Random question that may have already been answered, but how did you end up using your face for the low res desktop icon from Fallout?
I love your videos so much, you certainly have Charisma 10 :)
13:11 And the phrase that comes to my mind is "the cat is out of the bag." I wonder if it's this one.
"The cat is out of the bag" is when a big secret is revealed. I don't think it applies here.
Yeah, was probably looking for a phrase like "that ship has sailed"
@@zeikjt yeah or that snail has left the bucket ;)
I'm not asking for myself but just curious, if you wanted to sell the Arcanum engine, could you?
I know you mentioned that you're semi retired but I was wondering if you're working on anything for yourself, game development-wise? Have you given any consideration to going indie? Some of my favorite games of the last decade were made by either one person, or just a handful.
I'm using GameMaker because while I would LOVE to write my own engine, my focus is making a game, and I don't want to have to deal with compiling, I/O, etc., for different hardware.
Goldsrc for hl1, source for the hlsource remake
I wouldn't see it as a disadvantage if someone has on their CV that they made and worked with their own engine for years, instead of the industry standard. It means they have gained a lot of experience on actually programming something from scratch and understanding the underlying algorithms, it wouldn't be hard for that person to transition to popular game engines if it works so well out of the box.
13:30 With recent developments, I'd be very interested to see if your opinion has changed on this. Yes, Unity walked back the changes they proposed, but some developers don't trust them anymore. Do you think that's temporary or are we about to see devs switch to Godot or something similar?
Good advice. People make things so much harder than they need to. 2 types of people want to change the world and reinvent the wheel: the young and the delusional. Or maybe you’re very rich. But if you’re not young any longer the clarity of being a realist is the burden you bear.
That dog has sailed.
Some of your colleagues at Obsidian must have interesting stories about working with the Creation Engine while developing New Vegas.
Gamebryo* not creation.
@@snow15243tbf Creation Engine is just a further developed Gamebryo Engine
Josh Sawyer praised the engine in fact and credited the engine and the tools/resources Bethesda provided, claiming that they wouldn't have been able to do even half of what they did in NV without their engine.
What are your thoughts now post-unity runtime scandal? That one scared me off pretty bad. I have less issue paying a sub up front for an engine now than trusting these "FREE" engines. For one game I'm having it built from the ground up too now. It might be more expensive in the long run, but it seems safer.
"The horse has bolted (out the gate)" 😅
I'm writing my own, it's hard but using an off the shelf engine is too limiting. What I am working on would not be possible otherwise.
You should use V12 engine with overhead cams and at least twin carburettors. Might be super charged too, for good measure.
Always very interesting 👌
Remaking Unity, Unreal or Godot would take me about 100 lifetimes, so ill just stick with third party engines.
that is not simply true.
A relatively small but knowledgeable team can come up with a good engine, specially if they know what kind of game they're targeting.
"Hi ... everyone ... it's me ... Tim" 😊
🙂
😊
I think there is still a use case for making your own "engine", or using more minimal engines/frameworks, and that is: Low end, high performance abstract graphics games.
if you are mostly a programmer that want to get a game done quick, and you can script your own graphics with drawing basics shapes, drawing pixels on screen or directly drawing to shaders, then something like Unity is way overkill and clunky.
Just a note, unity recently moved away from the revenue share model and they now charge a subscription depending upon your income. You need the subscription to port to console, but just making the game can be free.
I heard you had major engine trouble when working on Vampire. Could you talk about that story?
All I heard was "I own the Arcanum source code." I remember you've said before that you've compiled it and it works on modern systems. Does that mean you could make a drop-in replacement engine that would work with retail copies of the game? As it is, it does work, but requires downloading some mods.
The pattern is all too familiar 😞
As usual, industry consolidation makes for wonderfully lowered barriers to entry (thanks to economies of scale) but also makes for awful breakdowns in communication (thank to diseconomies of scale).
Thanks for the info!
I guess a middle of the road solution is to use an open source game engine like Godot. But they're not as expansive of course.
I love the Source engine.
This is very sad. Every game looks and feels the same now, and Unreal has way too much control. I see this going very badly very quickly.
The only "game engine" I want is one that fits in my Highwayman!
you never got around to comparing unity vs unreal, what are the pros and cons of picking one over the other to us plebians who are no where near the level of considering making our own engine?
9:25 Hey now! Nginx is awesome. ;)
In a perfect world there would be completely free and open-source game engine
Unrelated, but do you have any thoughts on the recent controversy surrounding D&D 6e with the removal of race-related traits?
Haha, as soon as you said "in a perfect world" your answer was obvious.
Holy shit, you are hardcore.
Every engine look a little different graphicly due to being made different. I fear if too many companies go over to these big engines that they loose that uniqueness. Idk maybe that is a silly thing to worry about.
Networking for sure today is the biggest lacking of programming. Almost every game now has horrible netcode because developers don't know shit. These newer developers generally grew up with the idea "I plug my ethernet cable in, and it just works" and that's where their knowledge ends. And it shows.
So how would you implement network code to make it good?
@@OpenGL4ever its not about implementing network code. its about having the right settings. all games that are multiplayer have networking code.
it comes down to two things, are you tracking the data and are you sending the data.
pubg, huge issue with tracking data. bullets "disappear" because the game isn't tracking the bullets you shoot. so you can full auto an SMG point blank into an enemy and they dont die. which doesn't make sense, because ammo wise, a full smg clip should drop that player. a lot of people many years ago when the game was new complained about tickrate. "somethings wrong with the tickrate" and the developers looked into it and found that at 100 players (start of game) tickrate could drop to 5 ticks per seconds (5 server updates a second) which would absolutely ruin performance. or so they thought. "im missing because of tickrate." few months later pubg updated their game so that you only get sent/received data of players close enough to interact. so if you are too far away, its like that player doesn't even exist. especially if there is no line of sight. now tickrate remained 60 start to finish of matches. and yet, bullets still missed. people CLAIMED they could feel it, but its placebo. because we did the hardcore testing and proved bullets were still going untracked.
conan exiles. horrible netcode. servers run 30 updates a second (30 tickrate). the first thing private server owners tried to do to fix the game was increase their updates a second to 60 or higher. it broke the game. the AI would break and the game would run like ass. mainly due to physics being tied to the tickrate. bad programming in general. after that deboggle they realized client side and server side was capped data wise. you could only send so much data per second. so their solution was to crank server side data allowance and player side data allowance. this mitigated SOME of the issues, but many still persist. bad game code.... which i find funny that people think dune is gonna be something special and netcode fixed.... if they solved their netcode issues, they could EASILY backport that code into conan and give owners of the game smoother gameplay... but they haven't, because they haven't fixedshit.
now we take a step back to the early 2000's with games like return to castle wolfenstein, wolfenstein enemy territory, and quake3arena.... these games ran at a whopping 15 updates a second (15 tickrate) and yet NO ONE ever complained about shooting someone and them "living" because "bullets didn't register".... no one ever complained about tickrate or performance. why? because first point the game tracked every bulllet you shot. if you shot an enemy, and your crosshair was on that enemy, the shot registered. you NEVER had a bullet phase through an enemy pretending it didn't hit. secondly, data. back then when most of us were limited to DIAL IP, we used way more data than FPS games today use.... so much so, that the only people getting 5ping where those on a t1 connection which could send/receive all the data in a single packet instead of multiple. I was on dial up, so for every packet I should get, I would receive 3.... which would increase my ping to about 50. Yeah, imagine being east cost new york and playing on a new york server and you have 50 ping. meanwhile another person literally 3 floors above had a t1 connection and had 5 ping to the same game server.... anyway, we would see data rates over 80 Kilobyes per second, which is 0.64 megabit aka 64k dial up. You could max out a 64k modem with just a single game instance of those 3 games. and if you had a 32 player server like some private servers ran, you ended up with almost double the data rate, and thusly high ping due to slower packet transfer....
in comparison? todays games? pubg uses 25 kilobytes a second max. usually 10-15 download and 5-10 upload. and yet, we have guns shooting more bullets, faster, than we ever did before. so not only is it NOT tracking the bullet data, it can't send it either. remember older games were using 80 kilobytes per second AVERAGE. and yet games today are using less? we have BETTER internet today than we ever had! I myself am on gigabit connection. that's 1000 megabits.... 125,000 kilobytes.... and yet games are using 20 kilobytes of data average today.... so games have gotten MORE complex, but use LESS data than 20 years ago. absolutely insane.
but im gonna guess you are gonna TLDR and cry about being stupid.
Making a game engine is a great learning experience but if you are serious about making a game then roll with Unity or Unreal.
Have you ever looked into the Godot engine?
How did the Enclave Come to be?
"To 2014"
Damn, that's less than ten years ago. It's taken non proprietary engines a long time to catch on.
Current engines are really general purpose, which is an advantage but also has the disadvantages Tim mentions. Engine licensing existed far earlier, less in the form of the general purpose toolset but as a genre template. Wolfenstein3D, Doom, Quake, Unreal's engines were used for a lot of different games, but mostly shooters. Even modern Call of Duty started of with a Quake 3 engine license.
In the RPG there was Biowares Infinity Engine from Baldurs Gate, which got licensed to Interplay for Planescape and Icewind, and it's successor made for Neverwinter ended up in the hands of a small polish company who used it to make The Witcher. There are similar stories with the engine that is now used by Bethesda.
What all of these have in common is that they are by design well suited for modding which is not a surprise because it started with "engine licenses" that were basically reskins of early shooters. The rise of general purpose engines coincides with the end of level editors, there you will find the link between game engines as a general purpose toolset and how it transformed indie developement form modding bigger games to making smaller games.
So I wanna say that I absolutely love this video and how you layed out the pros and cons. I have many years working in Unity and one or two in Unreal. I've been building my own engine within the past 3 months now and I can agree in knowing how much time it would take to construct one. It would be amazing if you were able to take me under your wing becuase I am always looking to learn in what I have a passion for and you seem like an amazing developer/mentor!
If this was back in early 2000s and you were about to make "arcanum" type of game again, but let's say the over the shelf engines exited for a while, e.g. unreal and unity, would you still go with making your own or deciding to go with unreal/unity?