# Getting to your first 100 players

How to share your game and get your first 100 players 

By RUN.team · July 28, 2026

![Getting to your first 100 players](https://res.cloudinary.com/venusseriesai/image/upload/v1785209051/upload_aiqeta.png)

So you've made a game, you've launched it - now what?

Time to get some people playing it. 

Its an easy to trap to think once you've launched you're done and players will just arrive to play it, but sharing and promoting your game is the difference between games that get played and games that don't. 

## **Step one:** 

# Share your game with your fellow creators in the discord <https://discord.gg/rundotcreators> - your first players are often your peers!

Then share your game more widely - Getting your indie game noticed on social media isn't just about running ads—it's about making content that actually stops people from scrolling past. Here’s what actually works:

- **Cut the Fluff:** Skip the dark fade-ins and studio logos. Put your coolest mechanic, a weird physics glitch, or the most chaotic 2 seconds of gameplay right in frame #1. 

- **Authentic, frequent, short-form video:** TikTok, Reels, and Shorts don't care about your polished cinematic trailer. They want raw, 15-second gameplay clips. Post them daily, keep them fast, and don't overthink the editing. 

- **Use the "X meets Y" pitch:** Give people a quick mental anchor. Captioning a clip with *"Imagine Stardew Valley, but with firearms"* gets people interested ten times faster than a paragraph explaining your lore.

- **Show the messy dev process:** Bizarre bugs, failed art concepts, and "how it started vs. how it's going" clips do surprisingly well. People love watching a game get built in real time.

- **Give them ONE thing to do:** Don't throw five links at them. End your best clips with a clear, simple push: *"Play now on RUN"*. Make it easy to follow through. This is a great spot to use your short and sweet RUN vanity links: **w.run/creator/gamename**

---

## **Step two:** 

RUN also has some handy tools that make it easy to promote your game built into the SDK-

# **How In-Game Sharing Works on RUN: The Player & SDK Path**

While the CLI or Studio helps you deploy builds, real viral growth happens **inside** your game.

Using the `RundotGameAPI.social.*` SDK, you can give your players the tools to invite friends, share custom lobby links, pass gameplay parameters, and post clips directly to social media.

Here is how to set up player-to-player sharing on **RUN.world**.

## **1. Generating Short Links & Native Share Sheets**

When a player wants to invite a friend or share a specific game state (like a custom lobby or boss fight), generate a short link using `shareLinkAsync`.

Short links look like `[https://w.run/s/k7Qp2x9](https://w.run/s/k7Qp2x9)`, and you can append a cosmetic slug to make them readable (e.g., `/boss-level`).

JavaScript

```
const { shareUrl, shareLinkId } = await RundotGameAPI.social.shareLinkAsync({
  shareParams: { roomCode: "A9B2", difficulty: "hard" },
  metadata: { title: "Join my co-op raid!" },
  slug: "boss-level"
});
```

### How the SDK Handles Platform Differences

- **On Mobile:** Invokes the native OS share sheet (iOS/Android share drawers) so players can send the link via SMS, WhatsApp, or any installed app.

- **On Desktop/Web:** Copies the share link directly to the player's clipboard and triggers a native toast notification.

This functionality can be used in lots of creative ways, like gifting items to new players, sharing UGC content they made, and more.

## **2. In-Game QR Codes**

If you want to render a visual QR code directly inside your game UI (great for irl party games or screen-to-screen invites), use the QR helper:

JavaScript

```
const { qrCode } = await RundotGameAPI.social.createQRCodeAsync({
  shareParams: { roomCode: "A9B2" }
});

// Returns a data URL you can assign directly to an <img> src tag
myImageElement.src = qrCode;

```

## **3. Reading Inbound Invites (**`resolveLaunchIntent`**)**

When an invited player clicks a `w.run` short link, RUN routes them straight into your game. To read the incoming parameters (like `roomCode` or `difficulty`), use `app.resolveLaunchIntent()` when your game initializes.

JavaScript

```
// ✅ Correct way to handle inbound join parameters:
const launchIntent = await RundotGameAPI.app.resolveLaunchIntent();

if (launchIntent?.shareParams?.roomCode) {
  joinLobby(launchIntent.shareParams.roomCode);
}
```

## **4. Viral SDK Features (Beta)**

This stuff is tucked behind the Beta flag right now, but if you're feeling dangerous give it a whirl (and send us feedback!) 

- 📸 **File Sharing (**`shareFileAsync`**):** Let players export high-score cards, victory screenshots, or gameplay clips.

  - **File Size Cap:** Up to 10 MB.

  - **Supported Formats:** `.mp4`, `.png`, `.jpeg`, `.webp`, and `.gif`.

- 📊 **Click & Referral Tracking:** Track incoming viral traffic per share link with `addShareClickDataAsync` and `getShareClicksAsync`—perfect for awarding in-game rewards to players who recruit their friends.

- 💬 **Social Post Composer (**`composeSocialPostAsync`**):** Let players draft native posts to **X, Reddit, TikTok, or Instagram** without exiting your game experience.

- 👤 **Follow Links:** Allow players to easily share direct "Follow Me" links to build their in-game social graph.

## SDK Quick Reference

**ActionSDK FunctionCreate Short Link & Share Sheet** 

`RundotGameAPI.social.shareLinkAsync()`\
**Generate In-Game QR Data URL** 

`RundotGameAPI.social.createQRCodeAsync()`\
**Read Incoming Invite Params** 

`RundotGameAPI.app.resolveLaunchIntent()`\
**Share Screenshots/Replays (&lt;=10MB)** 

`RundotGameAPI.social.shareFileAsync()`\
**Open Social Composer** 

`RundotGameAPI.social.composeSocialPostAsync()`

Game devs can be naturally quiet, but great games demand a crowd. 

Don't be afraid to make some noise.
