lwiz/BasicEventEngine
50.1
Weak · 5 August 2026
840
lines of production code
Python
primary language
5
measurements over time
What this system is
This system is a C++-based game engine framework that provides core subsystems for rendering, physics, networking, and input handling. It features a Python scripting interface that allows users to control engine components, manage resources, and define game logic through scripts. The engine supports a modular architecture with a unified filesystem, structured messaging, and a flexible UI framework, all built on a CMake build system with extensive unit testing coverage.
How it got here
2015–2017 — Initial engine architecture and subsystems
17 changes.
This period established the foundational architecture of the game engine, transitioning the build system to CMake and restructuring the codebase into modular subsystems for rendering, physics, networking, and UI. The work focused on implementing core infrastructure, including a Python scripting interface, a structured messaging system, and comprehensive unit testing, while introducing key resource types and data handling utilities.
2018–2020 — Python scripting integration
13 changes.
This period focused on integrating Python scripting support into the engine, exposing core systems such as rendering, physics, input, and resource management to Python scripts. The work included creating extensive bindings for game objects, UI components, and engine internals, alongside restructuring input handling and filesystem abstractions to support this new scripting layer.
Features
Add Python bindings for PhysicsBody and PhysicsWorld
Users can now control the physics simulation from Python. New bindings expose \bee.PhysicsBody\ and \bee.PhysicsWorld\ classes, allowing scripts to create and manage rigid bodies and worlds, set properties like mass, friction, and gravity, attach bodies to worlds, add constraints, and step the simulation.
bee/python/physics · high confidence
Add Python bindings for rendering, light data, and viewport controls
Users can now control core rendering and visual properties from Python scripts. The \render\ module exposes functions to toggle 3D mode, set the camera position and orientation, and enable or disable lighting. Drawing primitives (triangles, lines, quads, polygons, arcs, circles) and color/blend state are exposed via the \draw\ namespace. A new \LightData\ class allows reading and modifying light properties (position, direction, attenuation, color) and invoking their draw routines. The \RGBA\ class provides color manipulation (get/set/inverse/HSV conversion). Finally, the \ViewPort\ class exposes methods to configure the active viewport, set the view and port rectangles, and manage update callbacks.
bee/python/render · high confidence
Add template-based serialization and statistical utility functions
The \bee/util/template\ directory now includes new C++ header files (\real.hpp\ and \string.hpp\) that provide template-based utility functions. \real.hpp\ adds generic statistical functions (\choose\, \mean\, \median\) for random selection and averaging. \string.hpp\ introduces templated serialization and deserialization for \std::vector\ and \std::map\ types, supporting both compact and pretty-printed string formats. These changes expand the available utility functions for handling data structures and statistical operations in a type-agnostic manner.
bee/util/template · high confidence
Added CMake build and code coverage support
The library directory now includes CMake configuration files (FindASSIMP, FindSDL2\_image, FindSDL2\_mixer, FindSDL2\_net, FindSDL2\_ttf) to help locate external dependencies, along with a CodeCoverage.cmake script that enables code coverage reporting via gcov/lcov. Additionally, the repository now tracks the Bullet3 physics engine, the cpython submodule, and the doctest testing framework as submodules.
lib · high confidence
Added Doxygen configuration for API documentation
A Doxyfile has been added to the doc directory, enabling the generation of C++ API documentation for the 'Basic Event Engine' project. This configuration allows the project to produce structured HTML and other format documentation from source code comments, improving the developer experience by providing a browsable reference for the engine's classes and functions.
doc · high confidence
Added Python bindings for keyboard and mouse input
New Python bindings have been added for keyboard and mouse input, exposing functions to query and modify keyboard state, manage keybindings, and control mouse position, state, and cursor. This allows Python scripts to interact directly with the underlying C++ input systems.
bee/python/input · high confidence
Added serialization, state machine, and variant data types
The engine now supports serializing and deserializing data (SerialData), managing pushdown state machines with callbacks (StateMachine), and holding multiple data types in a single container (Variant). These new data structures allow for more complex data handling and state management within the engine.
bee/data · high confidence
Added test map archive for map scanning
A new test archive (lv\_test.tar.xz) was added to the maps directory. This file serves as a test resource, enabling the system to scan FileMaps contained within .tar.xz archives, which supports the new scanning capability for compressed map data.
maps · high confidence
Console subsystem rewritten to support Python scripting
The console subsystem has been partially rewritten to use Python scripting, allowing generic C++ code to be called from Python via the new \console::add\_command()\ function. This change introduces Python bindings for the console, enabling users to write scripts that interact with the engine's core functionality, while also updating the UI handle and replacing old C-style casts in the console implementation.
bee/core · medium confidence
Initial project scaffolding and build system setup
The repository was initialized with the core build infrastructure, including a CMakeLists.txt configuration for Linux, macOS, and Windows, alongside build scripts (build.sh, build.bat) and a package script (package.sh). This commit also added essential project files such as the MIT license, README, and Git configuration files (.gitattributes, .gitignore, .gitmodules) to manage large binary assets and submodules for dependencies like Bullet Physics and CPython.
(repo-wide) · high confidence
Introduce structured messaging system with tag-based filtering and logging
The messenger subsystem now uses a structured \MessageContents\ type carrying a tickstamp, tags, type, description, and variant data, paired with \MessageRecipient\ objects that can be registered with specific tags and filtering modes (blacklist/whitelist). This enables more granular control over message routing, allowing users to filter or prioritize messages by tags and direct output to multiple log files or the console with appropriate color coding for warnings and errors.
bee/messenger · high confidence
Introduce the new UI framework with support for buttons, text entries, sliders, and option boxes
The UI subsystem has been rewritten to support a new set of interactive components, including buttons, text entry fields, sliders, and option boxes. These elements are now managed through a dedicated UI framework that handles initialization, sound effects, and callback registration for user interactions.
bee/ui · high confidence
Migrate build system to CMake and restructure source files
The build system has been switched from Unix Makefiles to CMake, introducing a new CMakeLists.txt configuration that organizes the engine's source files into logical groups (core, input, data, network, render, physics, resources, UI, and Python bindings). The source tree has been restructured into subdirectories (e.g., bee/core/, bee/input/, bee/render/) to improve compilation speed and code organization. Additionally, a unified header (all.hpp) and utility header (util.hpp) have been added to simplify includes for users.
bee · high confidence
New Python bindings for core engine systems
Added Python bindings for the console, commands, instance, and loader systems. Users can now interact with the game console, execute and manage commands, manipulate instances (including position, physics, and components), and manage the resource loading queue directly from Python scripts.
bee/python/core · high confidence
New Python bindings for game resources
Python scripts can now access and manipulate core game resources directly. This update adds Python bindings for Fonts, Lights, Meshes, Objects, Paths, Rooms, Scripts, Sounds, and Timelines. Users can now load, modify, and interact with these resources through the Python API, enabling deeper integration of game logic and asset management within Python scripts.
bee/python/resource · high confidence
New filesystem abstraction with FileMap and path resolution
The filesystem module has been restructured to introduce a new FileMap system that maps logical names to physical paths, enabling more flexible resource loading. This change adds support for scanning and loading files from .tar.xz archives, integrates Assimp for 3D model imports, and provides Python bindings to expose the filesystem API to scripts. Users will now interact with a unified path resolution system that handles both direct file access and archive contents transparently.
bee/fs · high confidence
New game options and program flag system
The engine now exposes a configurable set of game options (such as fullscreen, borderless, resizable, vsync, and renderer type) that can be modified at runtime or via command-line flags. A new program flag system allows users to pass arguments like --fullscreen or --debug to control engine behavior during initialization. These changes provide users with greater control over the engine's startup configuration and runtime behavior.
bee/init · high confidence
New physics simulation subsystem
The physics module has been restructured into a new, dedicated subsystem. This introduces a \PhysicsWorld\ to manage the simulation state, \PhysicsBody\ objects for rigid bodies, and a \PhysicsDraw\ class for debug rendering. The change also adds collision filtering via a \PhysicsFilter\ callback, allowing developers to control which objects interact during the broadphase test.
bee/physics · high confidence
New rendering subsystem with 3D camera, viewport, and primitive drawing
The rendering system has been restructured to support 3D rendering and improved viewport management. Users can now configure a 3D camera with position, direction, and orientation, and enable depth testing for 3D scenes. The new ViewPort system allows for flexible window and view management, while the drawing module provides new primitives for rendering triangles, lines, quads, and polygons. Additionally, the RGBA color class now supports HSV conversion and manipulation, and the shader system has been refactored to better utilize ViewPorts and ShaderPrograms.
bee/render · high confidence
New resource types for Fonts, Lights, Meshes, Objects, Paths, Rooms, and Scripts
The engine introduces new resource classes—Font, Light, Mesh, Object, Path, Room, and Script—each with dedicated header and implementation files in the bee/resource directory. These additions provide the underlying data structures and management logic for rendering text, lighting effects, 3D geometry, game objects, navigation paths, level containers, and executable scripts, forming the core resource management layer for these entities.
bee/resource · high confidence
New utility modules for archives, networking, and system interaction
Added new utility modules in the bee/util directory: archive handling for creating and extracting tar and xz archives, curl-based HTTP download and upload with progress callbacks, collision and angle bounce calculations, file system operations, date/time manipulation, debug logging helpers, and cross-platform message box and networking utilities.
bee/util · high confidence
Python scripting support added to the engine
The engine now supports Python scripting, allowing users to write game logic, manage state machines, and interact with core systems like the filesystem, networking, and rendering through Python bindings. This includes exposing classes such as StateMachine, Instance, and various resource types (Textures, Sounds, Meshes) to Python, as well as providing a console for logging and a messaging system for inter-component communication. The implementation includes a Python interface for loading and running scripts, along with bindings for UI, physics, and input handling.
bee/python · high confidence
Behavioural changes
Added default keybindings and configuration for console, quit, screenshot, pause, and debug toggle
Users can now use specific keys to toggle the console, quit the application, take screenshots, pause gameplay, and toggle debug mode, with default volume and map loading also configured.
main · medium confidence
Restructured keyboard and mouse input handling
The keyboard and mouse input systems have been restructured into new, dedicated modules (kb, keybind, keystrings, mouse) with updated interfaces. For keyboard input, the code now explicitly handles character input (including capitalization logic for letters, backspace, spacing, and numpad keys) and manages key bindings via a new KeyBind struct that stores callbacks. For mouse input, the code now provides functions to get/set mouse position relative to the display, window, or specific ViewPorts, and includes logic to handle cursor swapping and collision detection with game instances. These changes improve how the game processes user input and manages the cursor state.
bee/input · high confidence
Restructured networking subsystem with new client, connection, and packet handling
The networking subsystem has been restructured, introducing new core components for networked gameplay. A dedicated NetworkClient struct manages individual client sockets and state, while a new NetworkConnection struct tracks host/peer state, player maps, and data buffers. NetworkData and NetworkPacket classes now handle serialization, multi-packet sequencing, and signal-based messaging, enabling improved network data handling and event processing for both host and client roles.
bee/network · medium confidence
Script-based objects, rooms, and UI components
Users can now define game objects and rooms using Python scripts via the new \ObjScript\ and \RmScript\ classes, which load and execute script files for object events (create, update, destroy, etc.) and room lifecycle (init, start, end). Additionally, the UI subsystem has been rewritten in Python, introducing new UI components such as buttons, sliders, text entry fields, option boxes, and gauges, all built upon a shared \obj\_element\ base class. This shift allows for more flexible and dynamic UI and game logic implementation within the engine.
bee/resources · medium confidence
Test coverage
Added Python unit tests for core bindings; Added unit test infrastructure and initial test suite for input handling; Added unit tests for SerialData and Variant; Added unit tests for utility functions.
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 51 → 50 (-0.5)
- Rubric changed (rubric-2026.08.15 → rubric-2026.08.19) — scores are not directly comparable.
Lenses
- Code Health 99 → 96 (-3.1)
- Architecture 69 → 69 (+0.0)
- Maturity 59 → 49 (-10.3)
- Readiness 28 → 33 (+5.2)
- Security 100 → 100 (+0.0)
Resolved (2)
- Dimension evaluation failed
- The Linux build guide is cut mid-sentence, so the Windows/macOS cross-platform build steps and Doxyfile content are not visible. (README.md)
New (8)
- Dependency hygiene not measured — no supported dependency manifest was read
- Duplicated block (8 lines × 2) (bee/resources/objects/ui/obj_gauge.py)
- Duplicated block (8 lines × 3) (bee/resources/objects/ui/obj_element.py)
- Further orphaned files (smaller)
- dormant codebase — no living knowledge left to concentrate
- obj_gauge.draw (cognitive 16) (bee/resources/objects/ui/obj_gauge.py)
- obj_optionbox.set_option_state (cognitive 17) (bee/resources/objects/ui/obj_optionbox.py)
- obj_text_entry.keyboard_input (cognitive 25) (bee/resources/objects/ui/obj_text_entry.py)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
lwiz/BasicEventEngine was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 5 August 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit e99ba3f5a8b81da1519f102102504672c24a5831 — the exact code this score is about.
- Scored under rubric-2026.08.19 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer latest.