This repository has been archived on 2026-05-07 . You can view files and clone it. You cannot open issues or pull requests or push a commit.
c5eee838bf31f4becb23d7a616977c2b1db789d3
Unalike
A lobby manager IRC bot (Python) and web interface (PHP) that enables playing multiplayer with friends on different difficulties.
Live demo at zovguran.net/Unalike. (It might be broken sometimes because it's what I'm actively modifying.)
I know it's a bit messy but I wasn't planning on releasing the code. Initially, I wanted to make it open-source because of the Bot Account System proposed by Peppy, but after testing it thoroughly, I have come to the conclusion that it is perfectly fine to run from user accounts.
The plan was to make it Python only, as it has built-in support for poviding a dedicated web server service, but in the end I fell back to my well known PHP knowledge.
Features
- Allow users to log in with their own osu! accounts.
- Communicate with Bancho IRC while respecting the rate limits.
- Communicate with the osu! API v1 and v2 and caching the responses for less abuse.
- Monitor multiplayer results to aggregate the scores.
- Create osu! lobbies using a custom web interface.
- Send invites to users using the web interface.
- Synchronize the mapset across the lobbies.
- (Optinally) Write ".desync" in #multiplayer to turn off syncing temporarily.
- Display the results based on accuracy. (So that everyone has equal chance of winning.)
- Supports all game modes, and the score calculation is fully* independent of the lobby settings.
* Score v2 might break a lobby.
Requirements
- A dedicated web service (Such as IIS, Apache, or XAMPP.)
- PHP 7.4.10 or greater (Untested on others, some features might break in PHP 8.)
- Python 3.2 or greater (Tested on Python 3.9.1.)
Setup
- Clone the source code to a subfolder of your web server.
- Copy the files from "setup_help/" to the root of Unalike
- Fill in the missing keys in the newly copied files.
- (Optional) Check the configuration section of unalike.py
- Set up a URL rewrite rule that makes "path/to/unalike/api/USERNAME/KEY/VALUE" point to "path/to/unalike/API/?username=USERNAME&KEY=VALUE" (You can just rewrite these calls manually if you want to, but using API parameters like this is very user friendly.)
Start
- Start start.ps1 with powershell.
- Start your web service if it is stopped.
Description
Languages
PHP
37.1%
Python
31.8%
JavaScript
22.4%
CSS
5.9%
HTML
2.1%
Other
0.7%