Month: April 2020

  • Custom Game Engines: A Small Study

    Author: Ramon Santamaria @Raysan5

    Edits: Rudy Faile @rudyfaile

    Original Text | Posted here with Author’s permission.

    a_plague_tale

    A couple of weeks ago I played (and finished) A Plague Tale, a game by Asobo Studio. I was really captivated by the game, not only by the beautiful graphics but also by the story and the locations in the game. I decided to investigate a bit about the game and I was surprised to see it was developed with a custom engine by a relatively small studio. I know there are lots of companies using custom engines but it’s very difficult to find a detailed market study with that kind of information curated and updated. So I decided to write this article.

    Nowadays a lot of companies choose engines like Unreal or Unity for their games (or rather, that’s what people think) because developing a custom AAA level engine requires lots of resources. I decided to list here some of the most popular custom engines with the team-sizes and notable titles released with those engines.

    Most of the engines listed here have been developed along the years with multiple iterations and multiple video games, those engines have gone through multiple versions or even complete (or semi-complete) rewrites from scratch, with an engine name change. Also, important to note, most of those engines use multiple middle-ware for specific functionalities (Platform, Physics, Network, Vegetation, UI, Rendering, Audio…).

    *Author’s Note: I tried to be as much accurate as possible with the information about the employees count (I checked the companies websites, Wikipedia or even the company LinkedIn) but take it with a grain of salt (some employees numbers could not be up to date).

    The BIG Companies

    *From left to right: Assassin’s Creed Odyssey, Final Fantasy XV, Red Dead Redemption 2

    The below list is for very large companies, sometimes with complex corporate structures comprising multiple divisions (not only focused on video games) and multiple studios/subsidiaries also developing games. Some of them work with multiple engines, not only custom ones but also licensed ones.

    CompanyEmployeesStudiosEngine(s)Notable Games
    Activision/Blizzard~9200~9custom engine(s)Call of Duty series, Overwatch, Starcraft II, World of Warcraft
    Electronic Arts~9300~36Frostbite 3Star Wars Battlefront II, Anthem, Battlefield 1/V, FIFA 20, Need for Speed series
    Ubisoft~16000~54AnvilNext 2.0Assassin’s Creed series
    UbiArt FrameworkRayman Legends, Child of Light, Valiant Hearts
    SnowdropTom Clancy’s The Division 2, The Settlers
    Capcom+2800~15MT FrameworkMonster Hunter: World
    RE EngineResident Evil 7, Devil May Cry 5, RE2:Remake, RE3:Remake
    Konami+10000~30Fox EnginePro Evolution Soccer series
    Square Enix+4600~18Luminous StudioFinal Fantasy XV
    Nintendo+6100~8custom engine(s)Zelda: BOTW, Mario Odyssey
    Rockstar+2000~9RAGE engineGTA V, Red Dead Redemption 2
    Epic+1000~11Unreal Engine 4Fortnite

    The companies above invested in custom engines to have full control over the technology and also avoid the revenue cut imposed by licensed engines. Despite that fact, there are some big companies that in the latest years have chosen Unreal Engine for their productions, the most notable cases are:

    1. Capcom is using Unreal Engine for the new Street Fighter IV/V titles
    2. Bandai Namco latest big titles are using Unreal: Jump Force, Dragon Ball Fighter Z, Dragon Ball Z: Kakarot, Tales of Arise
    3. Square Enix also moved to Unreal Engine for several new titles: Dragon Quest XI, Kingdom Hearts III, Final Fantasy VII Remake

    Interesting to see that those big three are Japaneses companies, maybe a market trend for that country? Also, maybe related (or maybe not), the Chinese holding Tencent owns 40% of Epic Games, I bet it has some influence in the Asian market.

    Middle-size Studios

    *From left to right: Rise of the Tomb Raider, Uncharted 4, A Plague Tale

    Here we have the medium-small companies that decided to create custom technology for their titles.

    The number of employees could be a nice reference to consider because a custom game engine is usually developed in-house (not outsourced) but note that some of those companies could have a big number of people because they also have in-house artist/audio teams while others outsource those parts of the development.

    It would be really nice to know how many engineers are working on the engine division of each company, I’m sure there would be some big surprises for the different companies, probably in some cases by the low number of them!

    Also, it would be interesting to have more info about the tooling included with those engines, it’s really difficult to have access to that kind of information. Engines tooling is usually a hidden-secret (beside some GDC presentation or some quick showcase video).

    *From left to right: Horizon Zero Dawn, God of War, Death Stranding
    CompanyEmployeesEngineNotable Games
    Infinity Ward+500IW 7.0Call of Duty: Infinite Warfare
    Bethesda~400Creation EngineSkyrim, Fallout 4, Fallout 76
    Valve Corp.~360Source 2Dota 2, Half-Life: Alyx
    Crystal Dynamics~350Foundation EngineRise/Shadow of the Tomb Raider
    Naughty Dog+300Naughty Dog Game EngineUncharted series, Last of Us
    Crytek~290CryEngine VThe Climb, Hunt:Showdown
    From Software+280Dark Souls engineBloodborne, Dark Souls III, Sekiro
    Remedy+250Northlight EngineQuantum Break, Control
    Guerrilla Games+250DecimaKillzone Shadow Fall, Until Dawn, Horizon Zero Dawn
    Platinum Games~250Platinum EngineNieR Automata, Bayonetta, Vanquish
    Santa Monica Studio+200custom engineGod Of War series
    id Software+200idTech 6/7Doom, Doom Eternal, Wolfenstein series
    Sucker Punch+200custom engineInfamous Second Son, Ghost of Tsushima?
    Insomniac Games~180Insomniac EngineRachet&Clank series, Marvel’s Spider-Man
    Quantic Dreams~180custom engineDetroit: Become Human
    Asobo Studio+140custom engineA Plague Tale
    Mercury Steam~110custom engineSpacelords, Castlevania:Lords of Shadow series
    Frozenbyte~100Storm3DTrine series, Shadowgrounds
    Daedalic Entertainment~90Visionaire StudioThe Whispered World, Deponia series
    Kojima Productions~80DecimaDeath Stranding
    Media Molecule~80Bubblebath EngineDreams

    Some observations from this list:

    1. Kojima Productions use Decima engine, developed by Guerrilla Games, despite not having a custom in-house engine, it’s surprisingly their accomplishments considering such a small team.
    2. Media Molecule latest game/engine (Dreams) seems to have been developed by only ~15 coders, amazing!
    3. Companies targeting one single platform, usually have less restrictions and can push the limits of that platform. Unfortunately, that’s a luxury that most companies can not afford.
    4. Asobo Studio, the company that originated this market study is not that small…

    Small-size Studios (Indie Studios)

    *From left to right: The Witness, No Man’s Sky, X-Morph Defense

    Here we have some really small studios that also choose to develop a custom engine for their games. Note that most of those engines rely on other libraries/frameworks for certain parts of the game, the common choices we find are SDL (cross-platform graphics/input), OGRE (rendering engine), MonoGame (cross-platform game framework, also relyes on SDL, SharpDX, OpenTK, OpenAL-Soft…).

    One question many people could ask is, what parts of the engine are actually coded by the developers? Well, it depends, but usually coders take care of the screen-manager, entities-manager and content-manager as well as the wrappers/interfaces to the other external libraries.

    Second question, what parts of the engine usually rely on external libraries/middleware? It also depends on the company resources but usually audio-system, physics, rendering, networking, ui-system, terrain-system, vegetation-system and some other pieces.

    *From left to right: Factorio, Thimbleweed Park, Owlboy

    On the following list (and the next one below) I added the publishing date (only +2012) and the link to Steam for all the games… there are not many games with custom engine from small studios out there and I think they deserve to be recognized and supported.

    CompanyEmployeesEngineNotable Games
    Hello Games~25No Man’s Sky EngineNo Man’s Sky (2016)
    Supergiant Games~20MonoGame-basedHades (2019), Pyre (2017), Transistor (2014)
    Wube Software~20Allegro-basedFactorio (2019)
    Ronimo Games~17RoniTech Engine (SDL)Awesomenauts (2017)
    Runic Games~17OGRE-basedHob (2017), Tochlight II (2012)
    Introversion Software~14SystemIV (SDL)Prison Architect (2015)
    Exor Studios~14OGRE-based SchmetterlingThe Riftbreaker (2020), X-Morph: Defense (2017)
    Tribute Games~11MonoGame-basedFlinthook (2017), Mercenary Kings (2014)
    Thekla Inc. (Jonathan Blow)~10custom engineThe Witness (2016)
    Terrible Toybox (Ron Gilbert)9custom engine (SDL)Thimbleweed Park (2017)
    Matt Makes Games (Matt Thorson)~7MonoGame-basedCeleste (2018), TowerFall Ascension (2014)
    Lo-fi Games (Chris Hunt)6OGRE-basedKenshi (2018)
    D-Pad Studio6MonoGame-basedOwlboy (2016)
    BitKid, Inc.6MonoGame-basedCHASM (2020)
    Double Damage Games5OGRE-basedRebel Galaxy Outlaw (2019), Rebel Galaxy (2015)

    Some observations from this list:

    1. Hello Games is a very small studio considering the size No Man’s Sky game and custom engine. Really impressive!
    2. Runic Games was dissolved in November 2017, the founders created Double Damage, not they are work on Echtra Games on Torchlight III.
    3. In most of those studios the people in charge of creating the game engine it’s only 1-3 persons!
    4. Lo-fi Games was a one-man team (Chris Hunt) for more than 6 years!
    5. Some of the games in this list took +5 years of development!
    6. Not many games… a couple of hits per year…

    One-man custom engines

    *From left to right: Stardew Valley, ScourgeBringer, Eagle Island

    Finally, the list of the heroes.

    Games developed by 1-2 people with custom game engines, engines mostly coded by one person! Respect.

    *From left to right: Axiom Verge, Ghost 1.0, Remnants of Naezith

    Creating an engine and a game from scratch to the point of publishing it is an extraordinary accomplishment, not many people in the world is ready for that. Almost all of them are 2D games, usually with very small budgets and developed along multiple years. Congratulations to the developers!

    Company/DeveloperPeopleEngineNotable Game(s)
    Lizardcube (Ben Fiquet and Omar Cornut)2?custom engine(s)Wonder Boy: The Dragon’s Trap (2017), Streets of Rage 4 (2020)
    Pocketwatch Games (Andy Schatz)2?MonoGame-basedTooth and Tail (2017)
    Justin Ma and Matthew Davis2custom engineFTL: Faster Than Light (2012)
    Ed Key and David Kanaga2custom engineProteus (2013)
    Flying Oak Games (Thomas Altenburger and Florian Hurtaut)2MonoGame-basedNeuro Voider (2016), ScourgeBringer(2020)
    Terry Cavanagh1custom engineSuper Hexagon (2012)
    Francisco Tellez1SDL-basedGhost 1.0 (2016), UnEpic (2014)
    Grid Sage Games (Josh Ge)1SDL-basedCogmind (2017)
    Luke Hodorowicz1custom engineBanished (2014)
    Thomas Happ1MonoGame-basedAxiom Verge (2015)
    James Silva1MonoGame-basedSalt and Sanctuary (2016)
    Eric Barone1MonoGame-basedStardew Valley (2016)
    Tolga Ay1SFML-basedRemnant of Naezith (2018)
    Nick Gregory1MonoGame-basedEagle Island (2019)
    bitBull Ltd. (James Closs)1MonoGame-basedJetboard Joust (2020)

    Some observations from this list:

    1. Some of those teams are formed by 1-2 people but probably growed at some moment and/or outsourced some parts of the development (art, audio…). Usually the publisher also helps with some resources (localization, marketing…).
    2. Omar Cornut from Lizardcube is also the developer of Dear ImGui, a free and open-source immediate-mode gui library used by lots of AAA custom engines.
    3. Some of the games in this list took +5 years of development!
    4. Not many games… a couple of hits per year…

    There are some other remarkable games using custom engines (usually XNA/MonoGame) that worth mentioning: Braid (2009), Super Meat Boy (2010), Terraria (2011), Dustforce (2012), Sword and Sorcery EP (2012), FEZ (2013), Dust: An Elysian Tail (2013), Rogue Legacy (2013).

    Conclusions

    I’ll start saying I’m biased, I’m really passionate about video games making technologies and I admire custom engines and game-making tools. I also contributed to custom engines ecosystem with my grain of salt: raylib and several game-making tools. I prefer a custom engine over a licensed one, it really feels extra amount of effort put into the product, usually translated into some specific mechanic of extra in-game details.

    Said that, I must admit that creating a custom engine is a big endeavor and not many people are ready for that. I recognize Unity (and Unreal to less extend) have really democratized video game development, lots of small-medium size companies can use Unity today to quickly develop games and put them on the market, sometimes with very low budgets… But, still, lots of big companies prefer to rely on their own custom technologies.

    From a game dev/teacher perspective I think students must learn how engines work internally with much detail as possible. Relying only on engines like Unity/Unreal for education to allow students develop eye-candy project in short-time is not the way to go. At the end of the day, someone has to write the engine and the tools!

    Ramon Santamaria is a teacher and game developer from Barcelona, Spain and the author of Raylib, a simple and easy-to-use library to enjoy video game programming.

  • A commitment to Handmade

    A commitment to Handmade

    This tale begins as most of the major changes in my life do during a sleepless night. It was about 3 in the morning and I was browsing YouTube videos in bed when I stumbled upon what is possibly the best dev log I’ve ever seen:


    When professor rework showed up I just about lost it 🤣

    I was laying there in disbelief between fits of laughter at what this guy was doing. Two years Thomas Randall has been working on this game. He started in Unreal Engine, Rewrote in C++, and then finally in pure C. He did everything over this period of time from completely redesigning the game’s architecture to teaching himself physics on the fly. He also moved his entire game into a new engine in a week.

    Aside from the awesome flow and humor in the videos themselves (something about Aussie sarcasm is extra funny 😀) what really intrigued me was Randall’s commitment to his vision. As a programmer and game developer, I have settled time and time again like everyone else for various reasons: burnout, time constraints, money, external factors, you name it. Randall wasn’t willing to give an inch. He wants to make the game he sees in his mind and obviously doesn’t care about what it’s going to take to get there.

    That kind of passion is contagious. As I watched more of Randall’s videos I started getting introduced to some other folks in Randall’s network via the videos. One of these guys is a fellow by the name of Ryan Fleury. Ryan developed the Telescope game engine Randall’s game currently lives in, and also created a custom tool called Data Desk for building and parsing C-like data components.

    Ryan uses Data Desk in most of his software projects and I was blown away at the level of fidelity he was able to achieve in a 48 hour game jam with a limited 2d sprite sheet. It is seriously impressive. Highly recommend watching the first five minutes of the Jam:


    This got me interested in what Ryan was working on and I came across his project “The Melodist” and again was simply blown away by the general difference in quality and attention to performance and optimization that was going into this project. I’ve made a few games, and a lot of software. I’ve played a lot of games and used a lot of software. This was next level stuff.

    I reached out to Ryan to introduce myself and ask if he would be interested in “micro-mentoring” me. Ryan is kind of busy 🙂, but was kind enough to invite me to the Handmade Network.

    The reception I have received since joining the Handmade Network community has been incredible. Handmade Network lacks the elitism or snobbishness I’ve seen in some development circles. Veterans of the community answer day 1 questions from new members or guests with the same respect and enthusiasm that they treat each other with. It’s kind of interesting because you would think folks that are doing things purposefully harder and putting invisible restrictions on themselves would feel a certain superiority. The opposite couldn’t be more true.

    It was through this Network I started meeting other folks working on extremely interesting software with a high attention to detail on performance, customization, and portability.

    This is something I’ve been curious about for years:

    I’ve been programming for 15 years now. Recently, our industry’s lack of care for efficiency, simplicity, and excellence started really getting to me, to the point of me getting depressed by my own career and IT in general.

    Modern cars work, let’s say for the sake of argument, at 98% of what’s physically possible with the current engine design. Modern buildings use just enough material to fulfill their function and stay safe under the given conditions. All planes converged to the optimal size/form/load and basically look the same.

    Only in software, it’s fine if a program runs at 1% or even 0.01% of the possible performance. Everybody just seems to be ok with it. People are often even proud about how inefficient it is, as in “why should we worry, computers are fast enough”

    – Nikita Prokopov on Software Disenchantment

    This is especially true in Web where the landscape changes drastically and tempo can be unpredictable. One moment you’re living in a dollar sign world $ in jQuery and the next it’s all about React. One minute your project has 5 folders and the next you have thousands of node modules and GitHub is overloading mail servers sending you dependency security notifications every 5 seconds. It is madness.

    All of this culminated in a few personal commitments. I have made a commitment to begin on the path of “getting closer to the metal” by developing new projects in lower level languages (particularly C) and committing myself to a greater understanding of how things actually work. Decades of abstraction and seemingly infinite storage space and processing speeds have led us here. I have also decided to participate where possible to the Handmade Network, contribute, and give back where possible. For example, one of the members: Allen Webster achieved what many programmers aspire to do: built his own editor called “4coder”. 4coder is exactly the type and quality of software that has me so intrigued with the Handmade community. There’s even a Handmade Network Podcast (it’s excellent btw) where some of these folks discuss their motivations for these projects and problems they solved along the way.

    Through Handmade Network I have found all sorts of high quality developers and projects. Among these was a library called “Raylib” written by a guy named Ray from Barcelona, Spain. I was so impressed by the quality of Ray’s library (he has a whole suite of libraries, actually) and the levels at which he was willing to go to share his work. Aside from being under an extremely generous software license, Ray has worked tirelessly to ensure his software can be used at every level, on every platform, with virtually any utility.

    I was once again moved by the passion I saw coming through in Ray’s project. Ray also actively communicates with folks interested in using his software and is extremely kind and open to working towards anything that will help someone have an easier time. It is for this reason that Ray is one of the solo developers I decided to donate to during this time of COVID-19 uncertainty:

    Speaking of Raylib, the Raylib community recently held a 32×32 pixel game jam I decided to whip up a submission in about two days and enter! I found the constraints interesting: how cool can you make a game that has to fit in a 32×32 grid of individual “LED” and be 100% generated programmatically with zero external libraries outside of Raylib? Turns out, pretty cool:

    Flappy Box – my Raylib game Jam submission programmed in C

    While the game isn’t extremely graphically pleasing, it plays well and the entire executable program is 15kb!! For reference, the above GIF is 52 times larger than the game it’s displaying.

    You can check out the source code (or grab the executable and play) here:

    https://github.com/rfaile313/RayLib32x32GameJam

    One of the cool things about making something like this is it could be easily transitioned into a hardware project. For example, very little would need to be changed to port this game onto a bookshelf, sort of like what this guy did with Tetris:

    😎

    I also plan on utilizing Ray’s suite of tools and other Handmade Network community projects and affiliations in my quest to create better software. In the meantime I will also be giving back to the community in other ways. For example, here’s a quick tutorial on creating your first project in 4coder on Windows:


    The best way to help out Handmade Network and other Handmade projects is through the Handmade Fund. Other developers like Randall and Ray usually have other ways to give back if you like what they’re doing.

    I’d like to encourage anyone who feels like donating during this time to consider folks who are making amazing open source software. If you don’t feel like donating, consider giving back by sharing links to the software, authors, and community. They deserve it.

  • The story of Frank

    While walking our dogs today I noticed something peculiar about a water access valve on the sidewalk. Can you see it?

    That’s right. Upon closer inspection it appeared a frog was trying to make an escape from his cylindrical prison.

    His name was Frank, and Frank was very much alive. So I set to the task of freeing Frank. The first step was to try and get a whole picture of the proverbial iceberg.

    Houston, we have a problem.

    Turns out Frank wasn’t missing any meals down there. There was absolutely no way Frank was coming out head-first. The only option was to try and push his head back through the same way he came through. There was a serious problem though…

    It turns out frogs have these large arrow-shaped heads. Essentially what had taken place was Frank likely jumped at the hole with enough force to get his head through (and likely fracturing it in the process) but then it expanded essentially latching Frank in place. Sort of like how a harpoon works.

    I tried for several minutes to gently work Frank’s head back through the hole:

    But it was no use. As I mentioned above, I think Frank fractured his skull on impact when he tried to jump through initially, so even slight adjustments were causing him to bleed. It was then that Frank gave me the look:

    I knew what I had to do, but I couldn’t…. Frank and I were homies. We were going to get through this. “Frank, I can’t…..” I said.

    pepeHands

    However, Frank showed resolve in his final moments:

    I didn’t want to do it, but I knew the crueler path was to leave Frank out there, stuck and in pain, only to be stepped on or ripped apart by another animal, or worse, starve to death or die of heat stroke. I had to end his suffering.

    🙏 RIP Frank the Frog 2020-2020 👼