A modern, feature-rich typing game with P2P multiplayer, audio streaming, and extensive customization
Features • Download • Quick Start • Documentation • Screenshots • Support
- Solo Practice - Hone your skills without pressure
- Race vs Bot - Compete against AI opponents with varying difficulty
- P2P Multiplayer - Direct peer-to-peer racing with friends
- Private Servers - Host your own game servers easily
- Local JSON accounts - No password required, stored locally
- Customizable username - Choose your display name
- Statistics tracking - Best WPM, average WPM, total races
- Personal records - See when you beat your best
- Progress tracking - Watch your improvement over time
- 6 color themes - MonkeyType, Dark Blue, Forest, Sunset, Ocean, High Contrast
- Custom colors - Edit JSON for unlimited color schemes
- Font size adjustment - 20-60px range for perfect readability
- Sharper text rendering - Optimized for clarity
- Custom font support - Import your own fonts (coming soon)
- 10 radio stations - USA, Japan, and South Korea
- MP3 import - Play your own music folder
- Volume control - Adjustable slider (max 50% for comfort)
- Three modes - None, Radio, or Import
- Station navigation - Easy left/right buttons
- Clean, minimalist interface
- Real-time WPM and accuracy tracking
- Color-coded typing feedback
- Smooth animations and transitions
- Progress bars for competitive racing
- No central server required for gameplay
- Direct connections between players
- Low latency racing experience
- Host games from your own machine
- Built with Rust for maximum performance
- 60+ FPS gameplay
- Minimal resource usage
- Cross-platform support (Windows, Linux, macOS)
Download openR-TYPE v0.2.0 for Windows
Double-click the installer and follow the prompts. Everything will be set up automatically.
- Rust (1.70 or higher)
- Git
# Clone the repository
git clone https://github.com/houndslight/openr-type.git
cd openr-type
# Build the project (release mode for best performance)
cargo build --release --bin openr-type
# Run the game
cargo run --release --bin openr-type# Build
build.bat
# Run game
run.bat
# Start server
server.bat- Launch the game
- Select "Solo Practice" or "Race vs Bot"
- Press ESC to return to menu
- Click "Host Game (P2P)"
- Share your IP address and port (displayed on screen)
- Press SPACE when ready to start
- Wait for the host to start the race
- Click "Join Game (P2P)"
- Enter the host's IP address and port (e.g.,
192.168.1.100:7878) - Press ENTER to connect
- Wait for the host to start the race
TypeRacer P2P includes a dedicated server binary for hosting persistent game lobbies.
server.batcargo run --release --bin server -- 7878The server accepts a port number as an argument:
# Custom port
cargo run --release --bin server -- 8080Windows:
ipconfigLook for "IPv4 Address" under your active network adapter.
Linux/macOS:
ip addr show # Linux
ifconfig # macOSTo allow players outside your local network:
- Access your router's admin panel (usually
192.168.1.1) - Find "Port Forwarding" or "Virtual Server" settings
- Forward port
7878(or your chosen port) to your local IP - Share your public IP with players (find it at whatismyip.com)
*Clean, MonkeyType-inspired interface with multiple game modes*
*Focus on improving your typing speed and accuracy*
*Compete against AI opponents with real-time progress tracking*
*Detailed statistics after each race*
| Key | Action |
|---|---|
| A-Z | Type characters |
| Space | Type space |
| Backspace | Delete previous character |
| ESC | Return to menu |
| Mouse | Navigate menus |
openr-type/
├── src/
│ ├── main.rs # Game entry point
│ ├── game.rs # Core game logic
│ ├── ui.rs # Rendering and UI
│ ├── bot.rs # AI opponent
│ ├── network.rs # P2P networking
│ ├── server.rs # Dedicated server
│ └── words.rs # Word database
├── assets/ # Screenshots and resources
├── Cargo.toml # Dependencies
└── README.md # This file
- macroquad - Fast, cross-platform game framework
- tokio - Async runtime for networking
- serde - Serialization for network messages
- libp2p - Peer-to-peer networking stack
The game uses a simple JSON-based protocol over TCP:
{
"type": "PlayerUpdate",
"id": "player_123",
"position": 42,
"wpm": 87.5
}Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
# Install Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Clone and build
git clone https://github.com/yourusername/typeracer-p2p.git
cd typeracer-p2p
cargo build
# Run in development mode
cargo run- Ensure you have Rust 1.70+ installed
- Try rebuilding:
cargo clean && cargo build --release
- Check firewall settings
- Verify the host's IP address and port
- Ensure port forwarding is configured (for internet play)
- Make sure you're running the release build:
cargo run --release - Close other resource-intensive applications
- Check that port 7878 (or your chosen port) is not blocked
- Verify both players are on the same network (for LAN play)
- For internet play, ensure port forwarding is set up correctly
This project is licensed under the MIT License - see the LICENSE file for details.
If you enjoy openR-TYPE and want to support its development, consider making a donation:
Ethereum (ETH)
0xcFB691775016E229F040Ee4F3C418035d8Ec3401
Monero (XMR)
48PnUkPPDtBa12LXNzi8pEj2k61jDEhVkMZuZzabubjN9dF5m1eicveGjvnr1R7vNwhsRmb9HPYtSQYrjdmPFY2374yp1i8
Your support helps maintain and improve openR-TYPE. Thank you!
- Inspired by MonkeyType
- Built with Rust
- Uses macroquad for graphics
Have questions or suggestions? Open an issue on GitHub!