Skip to content

A modern, feature-rich typing game with P2P multiplayer, audio streaming, and extensive customization. Built with Rust

License

Notifications You must be signed in to change notification settings

houndslight/openR-Type

Repository files navigation

openR-TYPE

banner

A modern, feature-rich typing game with P2P multiplayer, audio streaming, and extensive customization

Rust License Version Platform

FeaturesDownloadQuick StartDocumentationScreenshotsSupport


Features

Multiple Game Modes

  • 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

User Accounts & Stats

  • 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

Full Customization

  • 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)

Integrated Audio

  • 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

MonkeyType-Inspired Design

  • Clean, minimalist interface
  • Real-time WPM and accuracy tracking
  • Color-coded typing feedback
  • Smooth animations and transitions
  • Progress bars for competitive racing

True Peer-to-Peer

  • No central server required for gameplay
  • Direct connections between players
  • Low latency racing experience
  • Host games from your own machine

Performance

  • Built with Rust for maximum performance
  • 60+ FPS gameplay
  • Minimal resource usage
  • Cross-platform support (Windows, Linux, macOS)

Download

Windows Installer (Recommended)

Download openR-TYPE v0.2.0 for Windows

Double-click the installer and follow the prompts. Everything will be set up automatically.

Installation

Prerequisites

  • Rust (1.70 or higher)
  • Git

Build from Source

# 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

Windows Quick Start

# Build
build.bat

# Run game
run.bat

# Start server
server.bat

Quick Start

Playing Solo or vs Bot

  1. Launch the game
  2. Select "Solo Practice" or "Race vs Bot"
  3. Press ESC to return to menu

Multiplayer - Hosting a Game

  1. Click "Host Game (P2P)"
  2. Share your IP address and port (displayed on screen)
  3. Press SPACE when ready to start
  4. Wait for the host to start the race

Multiplayer - Joining a Game

  1. Click "Join Game (P2P)"
  2. Enter the host's IP address and port (e.g., 192.168.1.100:7878)
  3. Press ENTER to connect
  4. Wait for the host to start the race

Hosting Your Own Server

TypeRacer P2P includes a dedicated server binary for hosting persistent game lobbies.

Starting a Server

Windows

server.bat

Linux/macOS

cargo run --release --bin server -- 7878

Server Configuration

The server accepts a port number as an argument:

# Custom port
cargo run --release --bin server -- 8080

Finding Your IP Address

Windows:

ipconfig

Look for "IPv4 Address" under your active network adapter.

Linux/macOS:

ip addr show  # Linux
ifconfig      # macOS

Port Forwarding (For Internet Play)

To allow players outside your local network:

  1. Access your router's admin panel (usually 192.168.1.1)
  2. Find "Port Forwarding" or "Virtual Server" settings
  3. Forward port 7878 (or your chosen port) to your local IP
  4. Share your public IP with players (find it at whatismyip.com)

Screenshots

Main Menu

Screenshot 2025-10-09 230952 *Clean, MonkeyType-inspired interface with multiple game modes*

Solo Practice

Screenshot 2025-10-09 231039 *Focus on improving your typing speed and accuracy*

Racing vs Bot

Screenshot 2025-10-09 231126 *Compete against AI opponents with real-time progress tracking*

Results Screen

Screenshot 2025-10-09 231423 *Detailed statistics after each race*

Controls

Key Action
A-Z Type characters
Space Type space
Backspace Delete previous character
ESC Return to menu
Mouse Navigate menus

Technical Details

Architecture

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

Key Technologies

  • macroquad - Fast, cross-platform game framework
  • tokio - Async runtime for networking
  • serde - Serialization for network messages
  • libp2p - Peer-to-peer networking stack

Network Protocol

The game uses a simple JSON-based protocol over TCP:

{
  "type": "PlayerUpdate",
  "id": "player_123",
  "position": 42,
  "wpm": 87.5
}

Contributing

Contributions are welcome! Here's how you can help:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Setup

# 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

Troubleshooting

Game won't start

  • Ensure you have Rust 1.70+ installed
  • Try rebuilding: cargo clean && cargo build --release

Can't connect to multiplayer

  • Check firewall settings
  • Verify the host's IP address and port
  • Ensure port forwarding is configured (for internet play)

Low FPS

  • Make sure you're running the release build: cargo run --release
  • Close other resource-intensive applications

Network issues

  • 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

License

This project is licensed under the MIT License - see the LICENSE file for details.


Support Development

If you enjoy openR-TYPE and want to support its development, consider making a donation:

Cryptocurrency Donations

Ethereum (ETH)

0xcFB691775016E229F040Ee4F3C418035d8Ec3401

Monero (XMR)

48PnUkPPDtBa12LXNzi8pEj2k61jDEhVkMZuZzabubjN9dF5m1eicveGjvnr1R7vNwhsRmb9HPYtSQYrjdmPFY2374yp1i8

Your support helps maintain and improve openR-TYPE. Thank you!


Acknowledgments


Contact

Have questions or suggestions? Open an issue on GitHub!


Built with Rust

Version 0.2.1 | MIT License

Back to Top

About

A modern, feature-rich typing game with P2P multiplayer, audio streaming, and extensive customization. Built with Rust

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published