Overview
When you attempt to join a server that’s running a map you don’t have, Chimera will:- Detect that the map is missing
- Automatically begin downloading it from a configured repository
- Display download progress with speed and file size information
- Complete the download and join the server
Default Configuration
Download Source
Chimera downloads maps from the HAC2/HaloNet repository by default:Download Location
Downloaded maps are stored in:Configuration
Map downloading can be customized inchimera.ini under the [memory] section:
Download Path
Change where downloaded maps are saved:Download Template
Customize the download URL template:Template Placeholders
The download URL template supports several placeholders:| Placeholder | Description | Example |
|---|---|---|
{map} | Map name (URL encoded) | bloodgulch |
{game} | Game engine type | retail or custom |
{server} | Server address | 192.168.1.100:2302 |
{password} | Server password (URL encoded) | mypassword |
{mirror<list>} | Mirror list (comma-separated) | server1.com,server2.com |
Mirror Failover
The{mirror<>} placeholder supports multiple mirrors with automatic failover:
Retail Map Downloads
Retail maps can be modified to contain malicious content. Only enable if you trust the download source:Download Font
Customize the font used for download progress display:Download Process
Server connection attempt
When you try to join a server, Chimera checks if you have the required map.
Download initiation
If the map is missing and downloading is enabled:
- Chimera constructs the download URL using the template
- A download thread is spawned to fetch the map
- Progress is displayed on-screen
Download progress
During download, you’ll see:
- Map name being downloaded
- Current download speed (KB/s or MB/s)
- Downloaded size / total size
- Progress percentage
Validation
Once downloaded:
- Chimera validates the map file header (checks for ‘head’ and ‘foot’ magic values)
- Invalid or corrupted downloads are rejected
- Successful downloads are saved to the configured location
Technical Details
Implementation
Chimera’s map downloader uses:- libcurl - For HTTP/HTTPS downloads
- Multi-threading - Downloads occur in a background thread
- Buffering - 1 MiB memory buffer for efficient I/O
- Timeout - 10 second connection timeout
- User Agent -
Chimera MapDownloader/1.0
Download Validation
Map files are validated by checking magic values: Standard maps (retail/Custom Edition):Security Considerations
Chimera implements several security measures:- Header validation - Ensures downloaded files are valid map files
- Minimum size check - Files must be at least 2048 bytes (0x800)
- Retail map blocking - Retail maps blocked by default to prevent replacement attacks
- URL encoding - Map names and passwords are properly URL-encoded
- HTTPS support - Supports secure downloads when configured
Custom Download Servers
You can set up your own map download server and point Chimera to it:Simple HTTP Server
- Respond to GET requests for
/{map}.map - Return 404 for missing maps
- Support HTTP/1.1
Advanced Template
For more complex setups:- Log download statistics
- Implement access control
- Serve different map versions based on game type
- Track which servers are requesting maps
Troubleshooting
Download fails to start
- Check that
download_templateis configured inchimera.ini - Verify you have write permissions to the download path
- Ensure your internet connection is active
Download times out
- The default timeout is 10 seconds for connection establishment
- Check your firewall settings
- Verify the download server is online
- Try a different mirror if using multiple mirrors
Invalid map file error
- The downloaded file is not a valid map (likely an error page)
- Check that the download URL template is correct
- Verify the map exists on the server
- Try downloading the map manually to test the URL
Wrong map downloaded
- Ensure the
{map}placeholder is in the correct position in your template - Check that the server is returning the correct map for the requested name
- Map names are case-insensitive (automatically converted to lowercase)
Downloaded maps not loading
- Check that the maps are in the correct folder
- Verify the download path setting in
chimera.ini - Ensure Chimera has read access to the download folder
- The map may be corrupted - try deleting and re-downloading
Performance Tips
- Use local mirrors - Host frequently used maps on a local network server for faster downloads
- Enable compression - Serve compressed maps if your server supports it
- Increase buffer size - The default 1 MiB buffer works well for most connections
- Use HTTPS - Provides security but may be slightly slower than HTTP
- Pre-download maps - For frequently played servers, manually download maps ahead of time
Best Practices
- Organize downloads - Use a separate folder for auto-downloaded maps
- Regular cleanup - Periodically review and remove unused maps
- Mirror redundancy - Configure multiple mirrors for reliability
- Trust your sources - Only download from trusted repositories
- Monitor disk space - Auto-downloading can fill disk space over time
