Making an MP mode out of SP content
Hello, dear community, Alystrasz here!
While progress is being made on custom maps, some other maps are already waiting to be used: I’m talking about the singleplayer campaign map. But how hard is it to use those to create multiplayer maps?
Here’s a little post about this little development adventure.
Initial imports
First of all, yes, singleplayer maps are just like multiplayer maps, as they’re stored in archive files (VPKs located in Titanfall/vpk
directory).
They are stored under the form of VPK archives, that you can explore with tools like Harmony.
Once you found the VPK matching the SP level you wanna recycle in your MP mod, you can open it and extract several subfolders:
maps/
contains:- the BSP file - map central file (I guess?);
- entity files - holding coordinates, model names and other information related to the objects that are spawned in the levels, doors for instance;
- navmeshes (short for navigation meshes), used by NPCs to determine where they can go on the map;
models/
contains the “shape” of all elements of the map, including NPCs;materials
containes textures/skins that are applied to models.
The texture file for the plasma railgun turret.
With missing models and textures, the level is really ugly.
(the "ERROR" message means a model file is missing)
After importing models, things look nicer! Some textures are still missing, though (note the pink texture around the sky panels).
Final result, after importing models and materials.
Rewritten features
Some features cannot be directly extracted from SP levels, but must be recreated.
This includes the respawning system for instance: SP contains a checkpoint system that saves player’s level progression in some particular places, allowing them to respawn close to where they died, and restore level to a given state (respawning NPC soldiers for instance); it’s obviously something you don’t want in a MP level, as you’d probably prefer using the traditional MP spawnpoints system.
Additionally, some SP features cannot be reused as-is, but must be extracted: as an example, for boomtown, the dome combat scenario is triggered when you enter the dome via the Ash-led platform; I prefer not doing that, but rather extracting the spectres + reapers spawning code, so it can be used to spawn them in waves.
In a similar fashion, the cage used to deliver Militia soldiers in the SP level can be used for the intro of the level.
SP-imported features
If you played the campaign, you might have seen this interface element previously! It will be very useful to guide players.
I also like the scripted intro of SP levels, and implemented one for the level:
Where am I?!
byu/Alystrasz intitanfall
New needed features
To create a functional mod, you cannot only recycle code from SP levels, but also have to write some yourself from scratch.
One feature that immediately came to mind was the “Gather” feature, that allows developers to make sure all players reached a given location in the level before triggering some action; you might have seen that in other games (in Overwatch’s Archives event for instance).
Future works
-
I would love this level to be as close to the polished single-player experience we all know as possible: this requires using SP components (objective UI for instance) to communicate with the player, putting a lot of attention on all details… lots of time and playtesting are needed!
-
I also have to find a way to reduce the mod size. Currently, all models/materials from the
Into the Abyss
mission are imported, making my mod 1.2GB big; even if more and more people have access to a fiber Internet connection, this is not the case for all players: I shall seek for unused assets and/or dig into the possibility of reusing SP files directly. -
Last but not least, in-game content can also be optimized: for instance, the server currently spawns soldiers and props on the “town manufacturing line” part of the level, even if players never visit this part in my mode.
Thanks for reading, don’t hesitate to reach me on Discord!