Rulik RU

More

For developers

Rulik is fully open under GPL-3.0. Here's how it's built and how to build it.

What's inside

FolderContents
android/The app: Kotlin, Jetpack Compose, Android 10+
server/Rulik Server for Windows: Python, SendInput, ViGEmBus via vgamepad, a tkinter window
site/This website: static pages in two languages, wiki articles in Markdown
docs/PROTOCOL.mdThe network protocol

Repository: github.com/Wandraker/rulik.

Building

App (JDK 17+, Android SDK): run ./gradlew assembleRelease in the android folder. UI strings live in android/tools/strings.py; run that file after editing it.

Server (Python 3.12+, Windows): tests with python -m unittest discover -s tests, the exe is built by build.ps1. To run from source: python run.py. The --dry flag prints input to the console instead of sending it to Windows, and --nogui runs the server without a window.

Website: python site/build.py, the pages end up in site/dist.

Protocol

One port, 47800: UDP over Wi-Fi and TCP over a cable through adb reverse. Every packet starts with RK, the protocol version and a type. The phone sends the full gamepad state, mouse movement, key presses and text, and the PC answers with a welcome and rumble.

Full description: docs/PROTOCOL.md. It's enough to write your own client, for an iPhone for example.

Helping out

  • Found a bug: GitHub issue.
  • Want to fix a wiki article: every article has an "Edit on GitHub" link at the bottom.
  • Made a layout: post it and it may make it into the catalog.

Edit on GitHub