"Rise Up, Power Up, Never Give Up" - RoboRebellion

This is a submission for the Alibaba Cloud Challenge: Build a Web Game.* What WE Built RoboRebellion is a top-down action shooter where players control one of three specialized combat robots. Fight through endless waves of enemy robots in an arena-style battlefield, collecting powerups and maximizing your score. FOR MORE INFORMATION ABOUT OUR GAME, SEE README.md Demo PLAY IT HERE: https://robot-rr.vercel.app/ GITHUB REPO HERE: https://github.com/rachelannec/RR-R 1. Gameplay 1.1 Core Loop Select robot class Battle waves of enemies Collect powerups Survive as long as possible Game over when health reaches zero Compete for high scores 1.2 Player Controls Movement: WASD or Arrow Keys Aim: Mouse pointer Shoot: Left mouse button Dash: Spacebar (3-second cooldown) Pause: ESC key 1.3 Player Characters Robot Type Color Speed Health Fire Rate Damage Special Traits Assault Green 220 100 Fast Medium Balanced, versatile Tank Yellow 160 150 Slow High Durable, powerful shots Stealth Blue 250 75 Very Fast Low Agile, rapid fire 1.4 Enemies Enemy Type Appearance Behavior Health Damage Points Chaser Triangle Pursues player directly Low Medium 100 Shooter Diamond Maintains distance, fires at player Medium Low 150 Tank Hexagon Slow movement, fires in multiple directions High High 250 1.5 Powerups Powerup Effect Duration Health Pack (Green) Restores 30 heath Permanent Rapid Fire (Yellow) 50% faster firing rate 10 seconds Damage Boost (Red) 50% increased damage 10 seconds 2. Progression 2.1 Wave System Game starts at Wave 1 Each wave increases enemy count and health Enemy type distribution changes as waves progress: Early waves: Mostly chasers Mid waves: Mix of chasers and shooters Later waves: All types with more tanks 2.2 Difficulty Scaling Enemy health increases each wave Enemy damage increases slightly More enemies spawn per wave Enemy type mix becomes more challenging Alibaba Cloud Services Implementation Overview of Alibaba Cloud Services in Your Game Our Robo Rebellion game uses Alibaba Cloud Object Storage Service (OSS) as the backend storage solution. Here's a comprehensive guide to how it's implemented. OSS Integration Architecture Game Client (Browser) ↔ Node.js Server ↔ Alibaba Cloud OSS Client-side: Makes API calls to your server Server-side: Authenticates and interacts with OSS OSS: Stores and retrieves game data Key Components Server-Side Integration (server.js) // OSS Client configuration function createOSSClient() { return new OSS({ region: process.env.OSS_REGION, accessKeyId: process.env.OSS_ACCESS_KEY_ID, accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET, bucket: process.env.OSS_BUCKET, endpoint: process.env.OSS_ENDPOINT, secure: true }); } Data Storage Structure Your implementation uses three main storage areas: leaderboard.json - Global leaderboard data scores/ - Individual score files OSS Operations Used Operation Purpose Example put Store data client.put('scores/123456.json', Buffer.from(JSON.stringify(data))) get Retrieve data client.get('leaderboard.json') list List files client.list({ prefix: 'scores/', 'max-keys': 100 }) head Check if file exists client.head('leaderboard.json') Key Features Leaderboard System // Update leaderboard with the new score try { // Get existing leaderboard const result = await client.get('leaderboard.json'); const leaderboard = JSON.parse(result.content.toString()); // Add new score leaderboard.push(scoreData); // Sort by score (highest first) leaderboard.sort((a, b) => b.score - a.score); // Keep top 100 scores const topScores = leaderboard.slice(0, 100); // Save back to OSS await client.put('leaderboard.json', Buffer.from(JSON.stringify(topScores))); } Individual Score Records Each score is saved as an individual JSON file Filename pattern: scores/{timestamp}{robotType}{score}.json Includes metadata like player name, robot type, and timestamp Our Experience Working With Alibaba Cloud Just similar on what we have written in our another submission. Lemme just copy & paste it Story time. Since we cannot avail the free trial we really went out buying for the stuff

Apr 28, 2025 - 04:44
 0
"Rise Up, Power Up, Never Give Up" - RoboRebellion

This is a submission for the Alibaba Cloud Challenge: Build a Web Game.*

What WE Built

RoboRebellion is a top-down action shooter where players control one of three specialized combat robots. Fight through endless waves of enemy robots in an arena-style battlefield, collecting powerups and maximizing your score.

FOR MORE INFORMATION ABOUT OUR GAME, SEE README.md

Demo

RoboRebellion Start Screen

PLAY IT HERE: https://robot-rr.vercel.app/

GITHUB REPO HERE: https://github.com/rachelannec/RR-R

1. Gameplay

1.1 Core Loop
  1. Select robot class
  2. Battle waves of enemies
  3. Collect powerups
  4. Survive as long as possible
  5. Game over when health reaches zero
  6. Compete for high scores
1.2 Player Controls
  • Movement: WASD or Arrow Keys
  • Aim: Mouse pointer
  • Shoot: Left mouse button
  • Dash: Spacebar (3-second cooldown)
  • Pause: ESC key
1.3 Player Characters
Robot Type Color Speed Health Fire Rate Damage Special Traits
Assault Green 220 100 Fast Medium Balanced, versatile
Tank Yellow 160 150 Slow High Durable, powerful shots
Stealth Blue 250 75 Very Fast Low Agile, rapid fire
1.4 Enemies
Enemy Type Appearance Behavior Health Damage Points
Chaser Triangle Pursues player directly Low Medium 100
Shooter Diamond Maintains distance, fires at player Medium Low 150
Tank Hexagon Slow movement, fires in multiple directions High High 250
1.5 Powerups
Powerup Effect Duration
Health Pack (Green) Restores 30 heath Permanent
Rapid Fire (Yellow) 50% faster firing rate 10 seconds
Damage Boost (Red) 50% increased damage 10 seconds

2. Progression

2.1 Wave System
  • Game starts at Wave 1
  • Each wave increases enemy count and health
  • Enemy type distribution changes as waves progress:
    • Early waves: Mostly chasers
    • Mid waves: Mix of chasers and shooters
    • Later waves: All types with more tanks
2.2 Difficulty Scaling
  • Enemy health increases each wave
  • Enemy damage increases slightly
  • More enemies spawn per wave
  • Enemy type mix becomes more challenging

Alibaba Cloud Services Implementation

Overview of Alibaba Cloud Services in Your Game

Our Robo Rebellion game uses Alibaba Cloud Object Storage Service (OSS) as the backend storage solution. Here's a comprehensive guide to how it's implemented.

  1. OSS Integration Architecture Game Client (Browser) ↔ Node.js Server ↔ Alibaba Cloud OSS
  2. Client-side: Makes API calls to your server
  3. Server-side: Authenticates and interacts with OSS
  4. OSS: Stores and retrieves game data

  5. Key Components

Server-Side Integration (server.js)

// OSS Client configuration
function createOSSClient() {
  return new OSS({
    region: process.env.OSS_REGION,
    accessKeyId: process.env.OSS_ACCESS_KEY_ID,
    accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
    bucket: process.env.OSS_BUCKET,
    endpoint: process.env.OSS_ENDPOINT,
    secure: true
  });
}

Data Storage Structure
Your implementation uses three main storage areas:

  • leaderboard.json - Global leaderboard data
  • scores/ - Individual score files
  1. OSS Operations Used
Operation Purpose Example
put Store data client.put('scores/123456.json', Buffer.from(JSON.stringify(data)))
get Retrieve data client.get('leaderboard.json')
list List files client.list({ prefix: 'scores/', 'max-keys': 100 })
head Check if file exists client.head('leaderboard.json')
  1. Key Features Leaderboard System
// Update leaderboard with the new score
try {
  // Get existing leaderboard
  const result = await client.get('leaderboard.json');
  const leaderboard = JSON.parse(result.content.toString());

  // Add new score
  leaderboard.push(scoreData);

  // Sort by score (highest first)
  leaderboard.sort((a, b) => b.score - a.score);

  // Keep top 100 scores
  const topScores = leaderboard.slice(0, 100);

  // Save back to OSS
  await client.put('leaderboard.json', Buffer.from(JSON.stringify(topScores)));
}

Individual Score Records

  • Each score is saved as an individual JSON file
  • Filename pattern: scores/{timestamp}{robotType}{score}.json
  • Includes metadata like player name, robot type, and timestamp

Our Experience Working With Alibaba Cloud

Just similar on what we have written in our another submission. Lemme just copy & paste it

Story time.
Since we cannot avail the free trial we really went out buying for the stuff