🌟 Elemedals

⚡ Play Now

🚀 Launch Elemedals

Elemental match-3 puzzle with power-ups and combo system

Overview

Elemedals is a refined elemental match-3 puzzle game featuring five distinct elements: Earth, Fire, Water, Light, and Dark. Built with HTML5 Canvas and vanilla JavaScript, it delivers smooth puzzle gameplay with strategic power-ups, combo systems, and progressive difficulty scaling.

🎮 Core Game Features

⚡ Power-up Arsenal


🏗️ Technical Architecture

Technology Stack

Component Technology Purpose
Game Engine HTML5 Canvas + JavaScript ES6 Lightweight 2D rendering and game logic
Graphics Canvas 2D Context Smooth animations and visual effects
Input System Mouse/Touch Events Cross-platform interaction handling
Deployment Docker + nginx Static hosting with performance optimization
SSL/Proxy Traefik v3.0 Automatic HTTPS with Let’s Encrypt
Styling CSS3 + Responsive Design Mobile-first adaptive interface

Core Game Systems

Grid Management System

class ElemedalsGame {
  constructor() {
    this.gridSize = 8;           // 8x8 playing field
    this.elementTypes = {
      earth: { color: '#6B4423', symbol: '🌳', name: 'Earth' },
      fire: { color: '#8B0000', symbol: '🔥', name: 'Fire' },
      water: { color: '#4682B4', symbol: '💧', name: 'Water' },
      light: { color: '#F0E68C', symbol: '☀️', name: 'Light' },
      dark: { color: '#2F2F2F', symbol: '💀', name: 'Dark' }
    };
  }
}

Match Detection Algorithm

Objective Generation System

generateLevelObjectives() {
  const numObjectives = 2 + Math.floor(Math.random() * 3); // 2-4 objectives
  const baseAmount = 8 + Math.floor(this.level * 2);       // Scaling difficulty
  
  selectedElements.forEach(element => {
    const variation = Math.floor(Math.random() * 6) - 3;   // ±3 variation
    this.levelObjectives[element] = Math.max(3, baseAmount + variation);
  });
}

File Structure

/home/thrax/unified-services/elemedals/
├── Dockerfile                     # nginx Alpine container
├── nginx.conf                     # Web server configuration
└── public/
    ├── index.html                 # Main game interface
    ├── game.js                    # Complete game logic and rendering
    └── manifest.json              # PWA configuration (if present)

🎮 Gameplay Mechanics Deep Dive

Element Interaction System

Elemental Properties

Match Scoring System

// Base scoring with combo multipliers
calculateScore(matchLength, comboLevel) {
  const baseScore = matchLength * 100;
  const comboMultiplier = 1 + (comboLevel * 0.5);
  return Math.floor(baseScore * comboMultiplier);
}

Power-up Strategy Layer

Landmine (💥)

Line Clear (⚡)

Element Drain (🌀)

Scramble (🔄)

Progressive Difficulty System

Level Scaling


🚀 Deployment & Performance

Docker Configuration

elemedals:
  build: ./elemedals
  container_name: elemedals
  restart: unless-stopped
  networks:
    - services-network
  labels:
    - traefik.enable=true
    - traefik.http.routers.elemedals.rule=Host(`elemedals.playtopia.com.au`)
    - traefik.http.routers.elemedals.entrypoints=websecure
    - traefik.http.routers.elemedals.tls.certresolver=letsencrypt

Performance Optimizations

Development Workflow

# Build and deploy
cd /home/thrax/unified-services
docker compose build elemedals --no-cache
docker compose up -d elemedals

# View logs
docker compose logs -f elemedals

# Quick testing
curl -I https://elemedals.playtopia.com.au

📊 Development Status

Production Ready Features

🎮 Game Status: PRODUCTION READY

Elemedals delivers a polished elemental puzzle experience with:

Elemedals represents a complete match-3 puzzle implementation that successfully combines classical gameplay mechanics with strategic power-up systems and progressive difficulty, delivering an engaging elemental puzzle experience.