Over the last 12+ years, writing popfiles has been simplified and evolved significantly. While many previous how-to guides are still valid, this information is scattered across random pockets of the internet and is hard to find.
This will not be an exhausive guide on what popfiles are or how to write them, only how to set up the best environment to start writing.
VSCode is the recommended choice at this point for writing popfiles. It has multiple community-made tools to simplify the process, and is powerful enough to completely replace any existing text editors you are currently using. Any of the trendy VSCode forks will of course work too (I'm using Cursor), so long as you have access to Extensions. There is a syntax highlighter and shortcut .xml for NP++ floating around somewhere on the internet/our discord, but it has not been updated since the VScript update to support the new syntax, and does not support custom rafmod syntax, you'll need to add those yourself or find someone to do it for you if you don't know how.
Extensions
Once you have VSCode installed, head to the "extensions" tab and search for "popfile", you should see these 4 extensions. Install and enable all 4 of these.

Popfile Lanugage Support
This extension handles the syntax highlighting, as well as basic utilities that make writing popfiles easier
MvM Popfile Snippets
This is a relatively recent but extremely powerful extension that allows you to generate an entire mission with placeholder bots using VSCode snippets, the popfiles basically write themselves.
The extension page has a list of all available snippets, or you can simply install the extension, create a new file with the language set to Popfile
, type ws
, and a drop-down menu should appear that looks something like this:

Select ws3
for example to generate a complete popfile with 3 waves ready to be modified, simply change values to your liking.
VSCode Popfile Money Counter and VSCode VDF
Both of these are optional utility tools that are nice to have. The popfile money counter is self-explanatory and has a how-to guide on the install page. Simply install the extension and run the count money command by pressing Ctrl + Shift + P
.
VSCode VDF is a general-purpose Valve Data Format tool. It is useful for various things outside of just writing MvM popfiles such as reading items_game.txt, but has a lot of neat features that makes popfile writing much easier. Notably, it has an in-editor color picker for the set item tint RGB
item attribute:

P3
Download Link
P3 aka Pseudo Population Parser is a standalone open source popfile parser that can be connected to VSCode or Notepad++. This allows you to write popfiles on-the-go without needing to load them in game to check for parsing errors.
Configuring P3 for VSCode
- Extract P3 to the same directory as your popfiles
- Open VSCode, press
Ctrl + K + O
and navigate to the folder where your popfile and P3 installation is located, then click Select Folder
- Press
Ctrl + Shift + D
to open the debugger and click create launch.json
- Paste the provided JSON below into your launch.json
- Press
Ctrl + Shift + D
again, you should now see a Run P3
button.
{
"version": "1.0.0",
"configurations": [
{
"name": "Run P3",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}\\P3.exe",
"args": ["-pop", "${file}"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true // Set to false to use the integrated VSCode terminal, loses color-coding.
}
]
}
Note: P3 is not configured to parse custom rafmod syntax by default, enable unsafe parsing in the provided config.ini
for modded popfiles.