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 😆.

About setting the OSS up, at first I really got no idea on where to start after availing it, like "what do you mean buckets?" and "where do I actually find and get this access keys?" 😭

Luckily, there are some tutorials on Youtube and there's also AI, that really helped us to set up the backend of our game (let me also say that this is my first time tapping into backend stuff, so it really crack my head)

So, yeah! Even though we don't really know what we are doing on the first line, as long as we keep going, we'll get there. (⚠ LOCAL JOKE AHEAD)


Like, STEP BY STEP PALA S'YA, SASAKSES RIN PALA! in integrating the Alibaba Cloud Services 😆😅

Game Development Highlights

IG Story Screenshot

For this one, the aspect of our development process that we proud of is that we did not give up, as you can see here on the picture, it is coded in Svelte but if you look in our github repository, it's in Javascript. And that was because we pivot. 😆

We did not give up, but we pivot.

Meet the TEAM

Inso, Eliazar N. @deadbush225

Rodriguez, Jan Earl F. @rawrearl

Cilon, Rachel Anne @rachelannec