December 01, 2018


Lambda Client is a drop in binary + config file that 3D renderer Source Engine BSP files. It works will existing Source Engine game installations, across all supported platforms. You simply point the config file at the game install directory and run the binary; then select a map from the dialog.

Lambda Client is evolving regularly. Right now, the core objective is to create a performant game-agnostic bsp viewer that requires no configuration. One day I hope that it can be a click-and-run demo viewer, maybe even a client/SourceTV client replacement.



Right now though, Lambda Client supports the following aspects of Source Engine:

  • Full support for Source Engine application structures, including asset locations, as well as asset loading priority.
  • Assets and configuration all pulled from game’s own GameInfo.txt.
  • Supports .vpk asset package format for loading assets
  • Support for .vmt material definitions. All properties imported, only some supported by the renderer
  • Support for .vtf texture formats
  • Support for v20 & v21 bsps (testing focus on Counterstrike: Source and Counterstrike: Global Offensive)
  • Support for precalculated visibility data (vvis) structures (leaf, node etc.) for performance
  • Camera with navigation and frustum culling to smoothly navigate around the map 8 Support for .vvd, .vtx, .mdl, .phy (partial) StudioModel formats. Some complex models are unsupported, as well as multiple skins.
  • Staticprop data support
  • Entdata loading support (partial, only prop classes actually used)


_ Counterstrike: Source - de_dust2 _



Tools / dependencies

This is written in Go. Since it uses a desktop window, it has to use CGO somewhere. There are certain C dependencies that bindings are used for:

  • GLFW
  • OpenGL
  • Imgui
  • Platform specific dialogs (e.g. File Browser)

All other compiled code is pure Go. All the Source engine format parsers are created and hosted on my own Github, the exception being the vpk parser, which is available on my Github as a fork, with my own modifications to support the v2 specification.


Source: View GitHub repository