A multiplayer arena battle version of Corruption of Champions Xianxia mod.
This is a proof-of-concept demo.
Download the release and open HTML file in browser.
Drop your CoCX save file and host or join the game.
Requires lobby server up and running.
- Requires an account on Heroku and on GitHub.
- Fork a lobby server to your GitHub account.
- In Heroku, create new app.
- Select Deployment method = GitHub.
- Connect to GitHub, search for
wslobby
repository, and connect to it. - Enable automatic deploys or deploy branch
master
.
The lobby server is operational now. It will let anyone to claim and join any game room. As per Heroku policy, it will shutdown after 30 minutes of inactivity, and automatically start-up when someone tries to connect to it.
To configure it to serve game itself online:
- Go to "Settings" tab of the app. Reveal Config Vars.
- Add a variable with key =
WSLOBBY_BUNDLE_URL
and value = URL of game release ZIP file =https://github.com/aimozg/xta/releases/download/nightly/xta.zip
- Click "Open app" to test the deployment.
Lobby server will re-download the game when restarted (including restaring after 30 minutes of inactivity). To force update, click "More > Restart all dynos" in the Heroku app menu.
All communications are done through a WebSocket lobby server.
Game logic runs in host player's browser.
Guest player
- Connect to a lobby server and authorize as a guest.
- Join a room.
- Offer a character.
- Request screen status and display it.
- Send action requests, receive scene updates.
Host player
- Connect to a lobby server an authorize as a host.
- Claim the room. Join requests from guests will be forwarded to host and validated by it.
- Process guests' requests.
Host player is treated as a local guest.
Recommended IDE is IntelliJ IDEA Community or Ultimate Edition.
This repository contains Gradle wrapper to build and run from command line, invoked with ./gradlew.bat
(Windows) or ./gradlew
(other platforms).
gradlew browserDevelopmentRun --continuous
(BrowserDevelopmentRun in continuous mode
run target in IDEA)
This will compile the game, open it in a browser, and when you edit the sources, re-compile and refresh the page.
gradlew browserProductionWebpack
Results are placed in build/distributions
.