MonoEngine: Difference between revisions
Jump to navigation
Jump to search
| Line 156: | Line 156: | ||
* '''Server browser''' — Displays all active game servers and allows a player to choose which one to participate in. Players can filter and sort server lists to speed up the display and selection of a server. | * '''Server browser''' — Displays all active game servers and allows a player to choose which one to participate in. Players can filter and sort server lists to speed up the display and selection of a server. | ||
* '''[[:Category:VGUI|VGUI]]''' — Valve's custom GUI interface mimics OS windows but renders them using the '''Source''' engine for both in game and out of game uniform '''UI''' display. | * '''[[:Category:VGUI|VGUI]]''' — Valve's custom GUI interface mimics OS windows but renders them using the '''Source''' engine for both in game and out of game uniform '''UI''' display. | ||
** | ** An updated version of VGUI called UI2 is now in use, which now supports 4K resolutions. {{contagion|since}} | ||
** Dynamic in-game [[HUD Elements|HUD]] display | ** Dynamic in-game [[HUD Elements|HUD]] display | ||
** Many [[wikipedia:Graphical widget|widgets]]/controls (e.g., buttons, treeview, html control…) | ** Many [[wikipedia:Graphical widget|widgets]]/controls (e.g., buttons, treeview, html control…) | ||
Revision as of 23:57, 24 August 2025
id Tech 2 ▶
GoldSrc ▶
Source ▶
MonoEngine
Monochrome Game Engine
Screenshot in-game of Contagion, using the MonoEngine, running on version 0.1.
Developer(s)
Release date(s)
July 18, 2025 Note
Platform(s)
License
Official website
Predecessor
Successor
N/A
Features
List of
MonoEngine engine features and capabilities. Some new features listed here may not apply to previous or newer Source branches, or third-party games/branches.
Renderer
- Supports Shader Model Versions 2.0 to 3.0
- Some third-party games can also support Shader Model 4.0, 5.0 and later by using D3D versions starting from 11 (Template:Titanfall, Template:Strata, etc).
- Anti-aliasing support (MSAA, FXAA, MLAA, TAA, etc.)
- See the Anti-aliasing page for more information, plus features & drawbacks with various anti-aliasing methods.
- More anisotropic and texture filtering options
- Anisotropic filtering allows textures on far distances to look sharper and less blurry.
- Compared to GoldSrc (prior to 2013) featuring only Bilinear or Trilinear texture filtering, Source features more texture filtering options, ranging from Bilinear, Trilinear, Anisotropic 2x up to 16x.
- Support for both forward, deferred and clustered rendering pipelines.
- Source primarily uses the forward renderer, while Template:Dota2, as well as some third-party Source games (Template:Titanfall, Template:Bms, etc.) use the deferred renderer (shading or lighting).
- Deferred rendering is a rendering technique that allows games to render many dynamic lights with little performance impact. Deferred rendering is commonly used in most modern titles, and Dota 2 is the only official Source game to use this technique.
- Other titles such as Template:P2ce also use the Clustered rendering technique, resulting in similar lighting performance as the deferred renderer (both clustered, forward & deferred), but unlike deferred, clustered works with both forward & deferred rendering pipelines.
- Bump mapping and Normal mapping on models and the world
- Authoring of shaders with HLSL
- Cube and environment mapping
- Cubemapping also supports Anisotropy (in all games since
)
- Cubemapping also supports Anisotropy (in all games since
- Phong shading for models
- Phong is also supported on world brushes (in all games since
)Template:Mb
- Phong is also supported on world brushes (in all games since
- Dynamic lights, vertex lighting and lightmaps, including many light types including flickering, pulsing etc.
- HDR (in all games since Template:Dods) and LDR (SDR) lighting
- HDR is introduced with the release of Template:Dods (and Template:Hl2lc a month later), running on updated version of Source 2004. HDR rendering works by automatically adjust exposure and "blooming" colors above 100% brightness into neighboring areas, then collapsing the image into SDR color range, resulting an image appears to have higher color saturation and improved contrast, compared to SDR (LDR) rendering.
- LDR is deprecated since Left 4 Dead engine branch Left 4 Dead engine branch. This does not apply to some games such as the original release of Template:Dota2, for example.
- Template:Confusion
- Water with refraction, real-time world reflections and Fresnel effects
- Water also supports flow mapping (in all games since Left 4 Dead engine branch)
- Advanced particle systems that can emit sprites or models
- Render-to-texture shadows allow for a large number of characters per scene (in all games since Left 4 Dead engine branch) Template:Mb
- Occluder entities for visibility blocking
- Indoor/Outdoor environments
- Deformable terrain
- 3D skyboxes can extend the horizon and add parallax on distant objects
- Dynamically rendered organics (grass, trees, etc.)
- Swaying trees (in all games since Left 4 Dead engine branch) Template:Also
- Subdivision surfaces, diffuse & specular bump maps
- Real-time radiosity lighting
- Real-time Cascaded Shadow Mapping from the skybox (in all games since
) Template:Asd - Effects that include but are not limited to: particles, beams, volumetric smoke, sparks, blood, and environmental effects like fog and rain
- Radial fog, which prevents strengthen or weaken the fog effect when rotating the camera. Replaces planar-based fog. (in all games since Left 4 Dead engine branch) Template:Also
- Scalability
- Screen Space Ambient Occlusion (SSAO) (only in Template:Sfm Template:Dota2)
- A technique for efficiently approximating the ambient occlusion effect in real time.
- Widescreen display support
- Source is one of the earliest game engines to support Widescreen monitors natively (16:9 and 16:10 aspect ratio) without stretching the image, while most games from that era are usually designed for 4:3/5:4 displays only.
Games such as Half-Life 2 supported widescreen displays at launch in 2004, with horizontal FOV (field of view), allow you to see more details.
- Source is one of the earliest game engines to support Widescreen monitors natively (16:9 and 16:10 aspect ratio) without stretching the image, while most games from that era are usually designed for 4:3/5:4 displays only.
- Physically Based Rendering Template:Strata
- Parallax Occlusion MappingTemplate:Xe
- Support of various graphical backends (such as Direct3D, OpenGL, Vulkan)
- Direct3D versions
- Direct3D 9
- On earlier versions of Source (Source 2004 up to Template:Src13), it had a Hardware DirectX level system (similar to feature level system in Direct3D 10 and later) that allowed the game to render on older GPUs supporting only DirectX 8.0, 8.1 (Pixel Shader 1.x), by disabling DirectX 9-only graphical features not available on these older cards. Previous versions of Source (Source 2004 and Source 2006), as well as Source 2013 RTX Remix games, also had support for DirectX 7.0 and 6.0 render paths. This can be changed using the mat_dxlevel console command, or by using the -dxlevel launch option.
Note:This DirectX level system was deprecated in Left 4 Dead engine branch.
Also, this DirectX level system doesn't actually affect or change Direct3D versions as Source games will always run on Direct3D 9.
- Direct3D 9Ex Template:Src13 Template:Also - DX9 Windows Aero extensions, requires Template:Win7 or later. Users can enable/disable this in Video Settings - Advanced (Windows Aero extensions), or through the launch option -disable_d3d9ex (only in
).
Note:Direct3D 9 can be forced by the launch option -dx9, if it was forced by commands such as -gamepadui, which enables both the Gamepad UI and Vulkan renderer unless combined with -dx9
- Direct3D 9
- OpenGL(in all games since Source 2009/Template:Srcmp) which is another graphics API used in Source games on Template:Mac and Template:Linux.
- Source Engine ships with ToGL to translate Direct3D (DirectX) calls to OpenGL, and uses dxlevel 92, which is the OpenGL equivalent to DirectX 9 Shader Model 3 (D3D9.0c).
Materials System
- Instead of traditional textures, Source defines sets of materials that specify what the object is made from and the texture used for that object. A material specifies how an object will fracture when broken, what it will sound like when broken/interacted with, and what that object's mass and buoyancy are. This system is much more flexible than older texture-only systems.
- Materials can interact with objects or NPCs, such as mud or ice for vehicles to slide/lose traction on.
Multiplayer Network Code
- Time- and gamer-tested by millions of people around the world
- Support for both LAN-based multiplayer and Internet-based multiplayer games
- Prediction analysis for interpolating collision/hit detection
- Optimizations for high-latency, high-packet-loss 56k connections
- Steam Networking support (only in Template:Tf2branchTemplate:Synergy)
- Allows self-hosting using Steam Datagram Relay, meaning users can easily create joinable servers without port forwarding.
Advanced Characters
- Detailed and believable characters
- Realistic eyes
- Focus on player/object, not simply parallel views
- Proper eye bulge for realistic eye reflections
- Simulated musculature provides outstanding emotions, speech, and body language
- Language independent speech, characters can speak naturally in many languages
- Skeletal/bone system for animation
- Layered animation system can synthesize complex animations out of several pieces
Physics
- MonoEngine uses a modified open source physics engine called Jolt.
- A more responsive world with more realistic interactions
- AI characters can interact with physically simulated objects
- Includes support for ropes/cables, machines, constraint systems, and ragdoll physics
- Can be controlled by level design
- Kinematic animated bone followers
- Custom procedural physics controllers
- Vehicles
- Wheels slip and skid
- Realistic suspensions with springs on each wheel
- Realistic leaning during acceleration/deceleration and turning
- Individually tunable parameters such as horsepower, gearing, max speed, shift speed, tire material, tire friction, spring tension/dampening, etc.
- Multiple players/NPCs in a vehicle
- Hovercraft support for cheaper simulation
Advanced AI
- I/O system allows level designers to control AI
- Sophisticated navigation: characters that run, fly, jump, crouch, climb stairs and ladders, and burrow underground
- AI that senses things using sight, sound, and smell
- AI relationships determine friend/foe status of other entities
- Battle AI allows squads of AI characters to operate together, knowing when to advance, retreat, lay cover, fire, etc.
Sound System
- Uses the Audiokinetic Wwise as middleware (only in
)
- In Monoengine 0.2 and onward, Audiokinetic Wwise has been replaced with the open source solution
Steam Audio Github page (in all games since
)
- In Monoengine 0.2 and onward, Audiokinetic Wwise has been replaced with the open source solution
- Support 7.1, 5.1 surround sound, 4 speaker surround
- High-quality 3D spatialization
- Custom software DSP
- Automatic DSP based on environmental geometry
- Microsoft ADPCM-compressed WAV files
- 16-bit 44.1 KHz (CD Quality), stereo wave data with all features
Note:Source does not support 48 KHz audio (DVD Quality) by default.
- MP3 decompression
- MP3 decompression has been replaced with
MiniMP3 Github page (in all games since
)
- MP3 decompression has been replaced with
- Support for audio streaming on any wave Template:Clarify
- Real-time wave file stitching Template:Clarify
- Pre-authored Doppler effect encoded waves
- Pre-authored distance variant encoded waves
- Commentary system
UI
- Server browser — Displays all active game servers and allows a player to choose which one to participate in. Players can filter and sort server lists to speed up the display and selection of a server.
- VGUI — Valve's custom GUI interface mimics OS windows but renders them using the Source engine for both in game and out of game uniform UI display.
Input
Source supports the following input and controller APIs:
- DirectInput - this method is supported in previous Source branches (Source 2004, Source 2006).
- XInput - Introduced with Source 2007 Source 2007, this allows the game to be controlled using Xbox 360, Xbox One & Series X/S controllers. On some Source games this was superseded by the Steam Input API, but can be re-enabled by disabling the Steam Input API.
- Since the Half-Life 2 20th Anniversary Update and the Template:Portal (May 2025 update), the option to enable legacy gamepad support (XInput and DirectInput), has been removed (which also unintentionally breaks the vibration/rumble feature when using the Steam Input API). However you can use the joystick 1 console command to re-enable legacy controller support (which also enable rumble/vibration support even when using Steam Input).
- Steam Input API - control the game using almost any controller (Xbox, PlayStation, Nintendo, and others). Many of Valve's Source games have been updated to natively support them.
- For the list of games that natively support Steam Input API, see this page.
Programming
- Source natively support various CPU architectures, such as x86 (PC and 8th, 9th-gen Consoles), ARM (Template:Android, Template:Switch), PowerPC (Template:360, Template:Ps3), and more, with both 32 and 64-bit.
- Support for 64-bit architecture will allow Source to handle more than 2-4GBs of RAM.
- Historically, Half-Life 2 and Template:Hl2lc had a 64-bit update in 2005, but it was later removed likely due to instability on some systems at the time. CS:GO later received an 64-bit update in 2016 for Mac and Linux systems. On April 19, 2024, Template:Tf2 was upgraded to 64-bit on Windows and Linux. All other Template:Src13mp games (Template:Css, Template:Dods, Template:Hl2dm, Template:Hldms), and Template:Src13mp have been updated to the Template:Tf2branch, adding 64-bit support to these games and the SDK Base.
- All code is written in C/C++ using Visual Studio .NET 2003 and later.
- Source SDK 2013 code (Template:Tf2branch), can be compiled on Visual Studio 2022 (as of March 2025).
- Source SDK 2013 code (Template:Src13sp), can be compiled on Visual Studio 2013 (as of March 2025).
- Linux versions are compiled using Valve's vcpm tool (only relevant for Source 2007) and the GNU Compiler Collection.
- You can easily and quickly derive new entities from existing base classes.
- There is a internal context sensitive performance monitoring system
- Graphics performance measurement tools are built into the engine
- Modular code design (via DLLs) allow swapping out of core components for easy upgrading or code replacement
- The VScript scripting system allows using external coding languages (such as Template:Sq and ) to be used in maps to create more complex systems (in all games since
This template uses Module:4.1, a script written in Lua.
) Template:Tf2branch
Tools
- Template:Hlfaceposer
- Facial expression tool used to craft speech and emotions
- Template:Hammer
- WYSIWYG World editor
- Create world brushes
- Terrain editor
- Place detailed world models and AI NPCs
- Set navigation points/paths for NPCs
- Place triggers, clip brushes, logic, etc.
- Allows level designers to hook up I/O between entities to control AI within the game
- Template:Hlmv
- Full model previewer
- Rotate models in any direction
- Able to setup hit boxes
- View physics hull
- View normals
- View the map in wireframe, shaded or textured view modes
- Studiomdl
- Model compiler
- VBSP, VRAD, VVIS, VMPI
- Map compilation tools (BSP, lighting and visibility)
- VMPI - distributed compilation tool allowing level compiles to be spread across many PCs greatly reducing compile times
- Exporters
- XSI, Max and Maya .smd exporters for exporting 3D models
