🎮 Beta Gamer

Embed — subway-runner

All three integration methods for Subway Runner. See the Embed overview for provider setup and shared components.

iframe

<iframe
  src="https://games.beta-gamer.com/embed/subway-runner?session=eyJhbGci..."
  width="400" height="700"
  allow="fullscreen"
  style="border: none; border-radius: 12px;"
/>

React @beta-gamer/react

import {
  BetaGamerProvider,
  SubwayRunnerGame,
  SubwayRunnerScore,
  SubwayRunnerLives,
  PlayerCard,
} from '@beta-gamer/react';

export default function SubwayRunnerPage({ sessionToken }: { sessionToken: string }) {
  return (
    <BetaGamerProvider token={sessionToken}>
      <div className="your-layout">
        <PlayerCard player="self" className="player-card" />
        <SubwayRunnerScore className="score" />
        <SubwayRunnerLives className="lives" />
        <SubwayRunnerGame className="game" />
      </div>
    </BetaGamerProvider>
  );
}

Subway Runner-specific socket events

import { useSocket } from '@beta-gamer/react';

const socket = useSocket();
socket.on('runner:score', (score: number) => { /* update scoreboard */ });
socket.on('runner:lives', (lives: number) => { /* update lives display */ });
socket.on('runner:action', ({ playerId, action }) => { /* "jump" | "slide" | "left" | "right" */ });

React Native @beta-gamer/react-native

import {
  BetaGamerProvider,
  SubwayRunnerGame,
  SubwayRunnerScore,
  SubwayRunnerLives,
} from '@beta-gamer/react-native';

export default function SubwayRunnerScreen({ sessionToken }: { sessionToken: string }) {
  return (
    <BetaGamerProvider token={sessionToken}>
      <View style={styles.layout}>
        <SubwayRunnerScore style={styles.score} textStyle={styles.scoreText} />
        <SubwayRunnerLives style={styles.lives} lifeStyle={styles.lifeIcon} />
        <SubwayRunnerGame style={styles.game} />
      </View>
    </BetaGamerProvider>
  );
}
Beta Gamer GaaS API — questions? support@beta-gamer.com