@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/publishingQuick 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);