I don't need to test my programs. I have an error-correcting modem.
The base class all subsystems. Subsystems usually correspond to large C++ classes. The benefit of defining a C++ class as a subsystem is that you can make some of its variables script-accessible, and you can make some of its properties automatically saveable as part of the configuration.
Subsystem +- AudioSubsystem (native) | +- ALAudioSubsystem (native, only UT200x and UT Linux Port) | +- GalaxyAudioSubsystem (native, only UT - Epic Version) | +- GalaxyAudioSubSystem (native, third party for UT, made by Creative Labs to add EAX support, available here) | +- GenericAudioSubsystem (native) +- Engine | +- EditorEngine | | +- UnrealEdEngine (only UT200x) | +- GameEngine +- Input (native) +- NetDriver (native) | +- DemoRecDriver (native) | +- TcpNetDriver (native) +- RenderDevice (native) | +- D3DRenderDevice (native) | +- D3D8RenderDevice (native, third-party for UT, available here) | +- D3D9RenderDevice (native, temporarily in UT2004 v3204) | +- GlideRenderDevice (native, only UT) | +- NullRenderDevice (native, only UT200x) | +- MetalRenderDevice (native, only UT) | +- OpenGLRenderDevice (native) | +- PixoRenderDevice (native, only UT2004) | +- SDLSoftwareRenderDevice (native, only UT Linux) | +- SDLGLRenderDevice (native, only UT Linux) | +- RaveRenderDevice (native, only UT Mac) | +- SGLRenderDevice (native, only UT) | +- SoftwareRenderDevice (native, only UT) +- System (native)