Skip to content

@web-engine-dev/publishing

Game publishing workflow management for web games. Handles versioning, metadata, releases, and categorization.

Features

  • Version Management: Semantic versioning
  • Release Workflow: Draft, review, publish
  • Metadata: Title, description, assets
  • Categorization: Tags, genres, ratings
  • Distribution: CDN deployment
  • Rollback: Version rollback

Installation

bash
npm install @web-engine-dev/publishing
# or
pnpm add @web-engine-dev/publishing

Quick Start

typescript
import { PublishingService } from '@web-engine-dev/publishing';

const publishing = new PublishingService({
  apiKey: 'your-api-key',
});

// Create new version
const version = await publishing.createVersion({
  gameId: 'my-game',
  version: '1.2.0',
  changelog: 'Added new levels and bug fixes',
  files: await bundleGame(),
});

// Submit for review
await publishing.submitForReview(version.id);

// Publish (after review approval)
await publishing.publish(version.id);

API Overview

Version Management

typescript
// Create version
const version = await publishing.createVersion({
  gameId: 'my-game',
  version: '1.2.0',
  changelog: 'What changed',
  files: gameBundle,
});

// List versions
const versions = await publishing.getVersions('my-game');

// Get specific version
const v = await publishing.getVersion(versionId);

Metadata

typescript
await publishing.updateMetadata('my-game', {
  title: 'My Awesome Game',
  description: 'An exciting adventure...',
  shortDescription: 'Adventure game',
  thumbnail: thumbnailFile,
  screenshots: screenshotFiles,
  trailer: trailerUrl,
  categories: ['action', 'adventure'],
  tags: ['multiplayer', 'coop'],
  ageRating: 'E',
  supportUrl: 'https://support.game.com',
});

Publishing Workflow

typescript
// Create draft
const draft = await publishing.createDraft('my-game');

// Upload files
await draft.uploadFiles(files);

// Submit for review
await draft.submitForReview({
  notes: 'Ready for review',
});

// Check review status
const status = await draft.getReviewStatus();

// Publish (if approved)
if (status === 'approved') {
  await draft.publish();
}

// Rollback
await publishing.rollback('my-game', previousVersionId);

Analytics

typescript
const stats = await publishing.getStats('my-game');

console.log(stats.downloads);
console.log(stats.activePlayers);
console.log(stats.rating);
console.log(stats.reviews);

Proprietary software. All rights reserved.