Contributing Guidelines and FAQ before opening an issue.Please read the
Better Extended Editor 2 version 4
Portal 2 Mod Tool
The BEE2 allows reconfiguring Portal 2's Puzzlemaker editor to use additional items, reskin maps for different eras, and configure many other aspects. All vanilla items have been upgraded with additional bugfixes and improvements.
The packages (item, style, etc definitions) are in the BEE2-Items repository.
Download and Use (Recommended, for using the BEE2.4)
- Download and install the latest version of Python3.
- Download the latest releases of the BEE2.4 and items from the following pages:
- Extract the contents of the Application release anywhere you like. e.g. C:\BEE2.4
- Place extracted package folder in the root BEE2 folder. e.g. C:\BEE2.4\packages
- To run, locate the BEE2.exe in the bin folder and execute it. e.g. C:\BEE2.4\bin\BEE2.exe
Build from Source (Advanced, for Adding to BEE2.4 Program) [Windows]
- pyglet and AVBin (for sounds, not required)
- noise (For perlin/simplex noise, as
- TKinter/TTK (Standard Library)
To build the executable versions of the BEE2, run the
compile_VBSP_VRAD scripts with a command-line
argument of build:
cd BEE2.4/src/ python compile_BEE2 build ... python compile_VBSP_VRAD build ...
The application executables will be saved in
build_BEE2, and the compilers in
compiler/. To generate the packages
zips, either manually zip the contents of each folder or use the
compile_packages script in BEE2-items. This does the same thing, but additionally removes some unnessersary content to decrease file sizes - comments, blank lines, hidden visgroups.
For the release copy, it should include:
cache folders and
config folders should not be included.
Build from Source [Mac]
cd BEE2.4/src/ $ git clone https://github.com/TeamSpen210/srctools.git $ mv srctools srctools_old $ mv ./srctools_old/srctools srctools $ rm -rf srctools_old $ pip install pipenv $ pipenv install requests $ pipenv shell $ python -m pip install cx_Freeze --upgrade $ pip install pyglet $ pip install Pillow $ pip install noise $ pip install markdown $ python compile_BEE2.py build > BEE2 Version: custom $ python compile_VBSP_VRAD.py build > BEE2 Version: custom
property_parser: Library to allow reading and writing Valve's KeyValues format.
utils: Various utility functions and a Vector class.
vmfLib: A library which parses a VMF property tree to allow easy modification.
- BEE Application:
BEE2: Main application script, starts up the application.
BEE2_config: Subclass of
ConfigParser, which keeps track of the config file it's read from.
backup: A window for backing up and restoring P2C files into zips.
compile_BEE2: Cx-Freeze setup script to compile the BEE2 application.
compilerPane: Window pane which controls compiler options. This updates configs in real time.
contextWin: Implements the rightclick context menu for items.
FakeZip: simulates a ZipFile object based on a directory. Used to allow
packageLoaderto load either, without needing to check the type every time.
gameMan: Manages adding and removing games as well as exporting editoritems.
img: read PNG files into Tkinter-compatible formats. Caches calls so an image is only read once.
itemPropWin: A window which allows changing the default properties for an item.
loadScreen: Shows a window with loading bars during the startup process.
logWindow: Displays log messages.
optionWindow: The BEE2 configuration window.
packageLoader: Reads packages and parses all data out of them.
paletteLoader: Reads and writes palettes to disk.
query_dialogs: A version of
tkinter.simpledialogs.ask_string, which uses the BEE2 icon.
richTextBox: Subclassed version of Tkinter's Text widget, with options to allow easily adding special formating like bullet lists.
selectorWin: Window class which allows picking items from a list, displaying various data about each option.
sound: Handles playing sound effects, using PyGame. Gracefully fails if Pygame is not present.
StyleVarPane: Window Pane which sets Style Properties, controlling certain style options.
SubPane: Toplevel subclass which can be shown and hidden via a button, and follows the main window around.
tagsPane: The dropdown which allows filtering the item list by tags.
tk_tools: Holds the singleton tkinter.Tk() instance and several custom widget classes.
tooltip: Allows registering a tooltip to appear on top of a widget.
UI: Holds the majority of the UI code, tying the components together.
voiceEditor: Window for viewing voice pack lines, and enabling/disabling individual ones.
- VBSP and VRAD:
BSP: Library for reading and writing BSP files. Used to pack files during compile.
compile_vbsp_vrad: Cx-Freeze setup script to compile the VBSP and VRAD hooks.
comp_consts: Constants for material names and other values.
conditions: Implements the conditions system, controlling item-specific transformations. Submodules add the individual conditions:
addInstance: Results which add additional instances.
(addGlobal, addOverlay, addCavePortrait)
brushes: Results dealing with instances.
(GenRotatingEnt, AlterFace, AddBrush, TemplateBrush)
fizzler: Results for custom fizzler items.
globals: Global flags allowing reference to stylevars, voicelines, etc.
(styleVar, has*, Game, HasCavePortrait, isPreview)
instances: Flags and Results for instances - filenames, orientation, locations.
(instance, has_inst, instVar) (clearOutputs, changeInstance, setInstVar, suffix, localTarget)
positioning: Flags/Results for dealing with the positioning of items.
(rotation, posIsSolid, posIsGoo, forceUpright, OffsetInst)
logical: Flags like AND, OR and NOT. Used to comine with other flags.
(AND, OR, NOT, NOR, NAND)
randomise: Results for randomising instances.
(random, variant, randomNum, randomVec)
trackPlat: Result for modifying track platforms. (trackPlatform)
cutoutTile: Logic for the Cutout Tile item. (CutoutTile)
catwalks: Logic for Catwalk items (MakeCatwalk)
scaffold: Logic for Unstationary Scaffolds. (UnstScaffold)
<ITEM_ID:0,1>text into the associated instance paths.
vbsp: The BEE2's VBSP hook, which modifies a map VMF before it is compiled by the original VBSP.
vbsp_launch: Wrapper around vbsp, to get around the renaming of scripts to
voiceLine: Parses quote pack data, and determines the appropriate quote to use for a given map.
vrad: The BEE2's VRAD hook, which switches to use fast lighting when not in preview mode, and packs files into the BSP after the compilation.