A 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 improvments.
The packages (item, style, etc definitions) are in the BEE2-Items repository.
Download the latest releases of the BEE2.4 and items from the following pages:
- Application
- Item Packages
- 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
- pyglet and AVBin (for sounds, not required)
- Pillow
- noise (For perlin/simplex noise, as
src/perlin.py
) - TKinter/TTK (Standard Library)
To build the executable versions of the BEE2, run the compile_BEE2
and 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:
build_BEE2
(renamed tobin
)compiler
palettes
packages
(from BEE2-items)images
(without thecache
subfolder)sounds
basemodui.txt
BEE2.ico
The various cache
folders and config
folders should not be included.
- Common:
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 ofConfigParser
, 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 allowpackageLoader
to 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 oftkinter.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.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.
(CustFizzler, fizzlerModelPair)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)
instanceLocs
: Translates<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'__main__'
.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.