Skip to main content

Porting Existing Game

Amazing that you're considering adapting your game for multiplayer on Rune! 🥳

We recommend you follow approach 1 below, which will take care of any boilerplate and provide a nice development experience with Rune-specific ESLint & Vite plugins. You can quickly get a minimal multiplayer version of your game working, then add more game logic step-by-step. Alternatively, you can add the SDK manually.

Create a new Rune game project by running:

npx rune@latest create

You now have a simple example game with game logic and client rendering files. You can then copy your game logic and rendering code into the logic.ts and client.ts files respectively. Take a look at Quick Start for an introduction to these files or Syncing Game State for a more in-depth explanation.

We recommend that you enable ESLint in your editor to detect issues while developing your game. The template code already has the necessary configuration for ESLint.

Approach 2: Manual Setup​

This approach requires you to be careful, especially if you're using TypeScript or a bundler as you will need to update your setup to export a logic.js file. If you still like to do the setup manually, here's how you do it:

  1. Create a file called logic.js that has all game logic and calls Rune.initLogic()
  2. Create a file called client.js that's responsible for rendering and calls Rune.initClient()
  3. Load the SDK before any other script in your index.html along with the two files:
<script src="https://cdn.jsdelivr.net/npm/rune-sdk@4/multiplayer-dev.js"></script>
<script src="./logic.js"></script>
<script src="./client.js"></script>
  1. Setup Rune's ESLint plugin to detect issues in your game logic
  2. Move all your game logic into logic.js and make client.js import all your rendering code

You can also look at the Tic Tac Toe example game to understand how to set up a game manually.

Questions?​

We're happy to help! Just write us on the Rune Discord server.