Mount and Blade and Warband use a modified Quake 3 engine

Currently viewing this thread:

The vertex animated meshes use an md3 format which is a format developed by id software for idtech3 (Quake 3 engine). id tech 3 became open source in 2005, warrider came out in 2006. This explains why mount and blade's engine is a disaster graphically, using a 1999 engine. A 2008-2010 game that doesn't even have dynamic shadows or self shadowing, lol. This also mean the MB language is C, just lol at MB's language being python. MB Warband/MB game engine and game engine language, mystery solved.
 

Eärendil Ardamírë

Subforum Moderator
WBWF&SM&B
Hm, interesting with that other game engine. Everyone who has read the 'Ultimate Introduction to Modding' by Lumos should know already that MABL is not similar to Python but merely an adjacent scripting language unique to the engine. To my knowledge the engine itself is coded in C++ and not C though.
The other way is to use the "Module System", which is a set of script files (with understandable language and much less numbers!) that are compiled using Python, a programming language. It is important for you to know that although the files from the Module System (I call it ModSys for short) have the .py extension (Python file), the ModSys itself is not written in Python, and (for 99.99% of your needs) you needn't know it (yes, you can use it for complicated stuff if you know it. :smile:).
 

Swyter

Grandmaster Knight
M&BWBWF&S
A few misunderstandings here.

Marco Tarini added MD3 support to OpenBRF because there aren't that many generic authoring formats that support vertex animations. Same thing for Valve's SMD. It's a smart way of reusing other people's DCC plugins for similar things. That way we don't have to make our own Blender/Maya/3ds Max extensions and keep them up to date. Why reinvent the wheel?

But again, this is only something that is used for importing into BRF files in this particular software made after the fact by a modder that doesn't have anything to do with TaleWorlds. The game doesn't read anything other than the formats Armagan and the rest of the team made. TaleWorlds originally used their Blender plugin to generate TRF (text resource) files, the game reads them and spits BRF (binary resource) files during startup. A bit like baking a cake, reading tailored binary files is always going to be faster than parsing text. It can copy the data structures directly from disk to RAM and use them straight away without much shuffling or conversion.

The good thing about text is that it can be pretty, humans can read and write it easily. But it's slow, heavier and takes significantly more space. That's why TRFs are only read once (or when modified) and cached into BRFs. Best of both worlds.

--

The game doesn't know anything about Python either; the Module System is a .txt bytecode compiler that is made out of Python scripts and data. You can make your own .txt generators in any language. Python was a good choice because of the handy way of assembling tuples and having macros and syntactic sugar on top.

Personally, I think it was a very smart idea. It's both easy to tweak (tables of tables of data right next to logic) and customizable from the inside out. I love it. Without that Mount&Blade wouldn't have been half as successful. They went for C# for the sequel, and I don't think it was a great call, it raises the bar significantly and adds unneeded complexity. Maybe Lua would have been better. But we'll see.

--

From what I know, the RGL engine grew out of a DirectX sample project, but it's otherwise custom made, barring some libraries. And the internal organization isn't particularly pretty, but that's normal for every single game out there; requirements in real life change all the time, so there are some shortcuts taken here and there.

@cmpxchg8b and @K700 know all this way better than me, but it's clearly programmed in C++, with classes, custom data types, constructors and that kind of thing. Maybe some small third-party files are C.

The subsystem that reads the mod .txt files and interprets the triggers and operations is custom C++, that's for sure.

Technically, I'd say that the game has always been more impressive than it looks. Art and visual effects have always been the main issue, maybe caused in part by bad tooling. But this is just guesswork.

You only need to compare Native with any modern Warband mod. Just by adding Gutekfiutek's props you improve the mood tenfold. Thank Marco Tarini, Thorgrim and the others for giving us great tools, or at least better than the official ones.

Hope it helps. Let me know if I messed up somewhere. :party:
 
Last edited:

Bloc

Duke
WB
I was looking for something else but found this thread. Well, Swyter already explained it with details. (Also, off topic but, I'm genuinely wondering what kind of magic you will create in Bannerlord :razz: )

But to add up a few more details, Core Rendering library and Physics Engine written in 2000/2001 with Dazubo. Warrider (the first name was actually Way of the Sword ) was already production-ready in 2004. So Mount&Blade using Quake 3 engine is not correct.
I cannot prove but confirm that Rendering engine is written in C++.
You are right about that MB and MB:W sharing the same engine though. Both gameplay engine and graphics engine are more or less the same. But in essence. all Mount&Blade titles are sharing the same rendering core ( including Bannerlord, yeah ) which is called RGL. I'm assuming that RGL stands for Rendering Graphics Library but no one in Taleworlds really knows what it stands for. There are even some jokes about it, that it stands for aRmagan Graphics Library but I'm pretty sure that's not the case.
Obviously, 20 years ago's RGL isn't the same as what we have now. It has been improved significantly over the years.
 
Top Bottom