Skip to content

casiusss/dartomat

Repository files navigation

Dartomat

Dartomat Logo

An Idle/Clicker Game with a Dartboard Theme

Version React TypeScript Vite License

Play Now | Game Guide | Mechanics | Development


Overview

Dartomat is an engaging idle/clicker game where you progress from manually throwing darts to operating an automated dart-throwing machine. Inspired by classic idle games like Universal Paperclips, Dartomat offers a satisfying progression loop with multiple upgrade paths, strategic decisions, and rewarding milestones.

Key Features

  • Manual Dart Throwing - Click to throw darts with aim and accuracy mechanics
  • Automatic Machine - Unlock and calibrate an automated dart-throwing machine
  • Deep Upgrade System - 50+ upgrades across multiple branches
  • Combo System - Chain hits for multipliers and bonus rewards
  • Prestige Mechanics - Reset for permanent bonuses and new strategies
  • Offline Progress - Earn points even when away
  • Mobile Friendly - Responsive design with touch support

Table of Contents


Getting Started

Play Online

Visit dartomat.vercel.app to play instantly in your browser.

Run Locally

# Clone the repository
git clone https://github.com/yourusername/dartomat.git
cd dartomat

# Install dependencies
npm install

# Start development server
npm run dev

# Open http://localhost:5173 in your browser

Player Guide

Game Phases

Dartomat is structured into distinct phases, each introducing new mechanics and challenges:

Phase 1: Manual Throwing (0 - 10,000 points)

You start by manually throwing darts. Each click throws a dart at the board, and your accuracy determines where it lands. Focus on:

  • Learning the dartboard layout
  • Purchasing early accuracy upgrades
  • Building up currency for the machine unlock

Phase 2: Machine Unlocked (10,000+ points)

At 10,000 points, you unlock the Automatic Dart Machine! This machine throws darts automatically, but requires calibration:

  • The machine starts inaccurate and needs tuning
  • Invest in machine upgrades for better targeting
  • Balance manual throws with machine operation

Phase 3: Advanced Optimization (100,000+ points)

With a calibrated machine, focus on:

  • Maximizing Earnings Per Second (EPS)
  • Completing special combinations for bonus rewards
  • Unlocking achievements for permanent bonuses

Phase 4: Prestige (1,000,000+ points)

Ready for a fresh start with bonuses? The prestige system allows you to:

  • Reset progress for prestige currency
  • Earn permanent stat multipliers
  • Unlock exclusive prestige upgrades

The Dartboard

The dartboard follows the standard layout used in professional darts:

         20
    5         1
  12            18
 9               4
  14           13
    11       6
  8           10
    16       15
       7   2
         17
        3 19

Segment Sequence (clockwise from top): 20 → 1 → 18 → 4 → 13 → 6 → 10 → 15 → 2 → 17 → 3 → 19 → 7 → 16 → 8 → 11 → 14 → 9 → 12 → 5

Each number segment has three zones:

Zone Description Multiplier
Single Outer area 1x
Double Narrow outer ring 2x
Triple Narrow inner ring 3x

Center Zones:

Zone Points
Bullseye 50 points
Outer Bull 25 points

Scoring System

Points are calculated based on where your dart lands:

Points = Segment Value × Zone Multiplier × Active Multipliers

Examples:

Hit Calculation Points
Single 20 20 × 1 20
Double 20 20 × 2 40
Triple 20 20 × 3 60
Bullseye 50 (fixed) 50
Triple 20 + 2x combo 20 × 3 × 2 120

Tips for New Players

  1. Focus on Accuracy First - Early accuracy upgrades significantly improve earnings
  2. Don't Rush the Machine - Manual throwing with good accuracy can be very efficient
  3. Watch Your EPS - Use the Earnings Per Second metric to evaluate upgrades
  4. Combo Chains Matter - Consecutive high-value hits build multipliers
  5. Save for Milestones - Sometimes it's worth saving for a big upgrade

Game Mechanics

Core Stats

Your performance is governed by four main statistics:

Accuracy

Base Value: 50% (0.5)

Accuracy determines how close your throws land to the intended target. Higher accuracy reduces the deviation/spread of your darts.

Deviation = Base Deviation × (1 - Accuracy)

At 50% accuracy, throws have significant spread. At 90% accuracy, throws are much more precise.

Throw Speed

Base Value: 1 throw per second

Throw speed determines how many darts you can throw per second. This directly impacts your potential earnings rate.

Throws Per Second = Base Speed × Speed Multiplier
EPS Potential = Throws Per Second × Average Points Per Throw

Precision

Precision represents consistency over time. While accuracy affects individual throws, precision affects how reliably you maintain that accuracy.

Effective Accuracy = Base Accuracy × (1 - Precision Variance)

Higher precision means your accuracy stays consistent rather than fluctuating.

Earnings Per Second (EPS)

The key metric for measuring overall performance:

EPS = (Total Points Earned in Window) / (Time Window in Seconds)

EPS is tracked over multiple windows:

  • 10-second EPS - Immediate performance
  • 1-minute EPS - Short-term average
  • 5-minute EPS - Long-term average

Point Formulas

Base Points

// Standard segment hit
points = segmentValue × zoneMultiplier

// Where:
// segmentValue = 1-20 (the number hit)
// zoneMultiplier = 1 (single), 2 (double), or 3 (triple)

// Bullseye zones
bullseyePoints = 50  // Inner bull
outerBullPoints = 25 // Outer bull

With Multipliers

totalPoints = basePoints × comboMultiplier × upgradeMultiplier × prestigeMultiplier

Multiplier System

Multipliers increase your point earnings through consistent performance:

Combo Multiplier

Build your combo by hitting high-value segments consecutively:

// Combo increases on:
// - Triple hits (+0.5x)
// - Bullseye (+0.5x)
// - Double hits (+0.25x)
// - Same number consecutive (+0.25x)

// Combo resets on:
// - Miss (off board)
// - Low value hit (depends on upgrades)
// - Time delay between throws

comboMultiplier = 1.0 + (comboLevel × 0.1)
// Max combo level determined by upgrades

Upgrade Multipliers

Certain upgrades provide permanent multipliers to various aspects:

// Example upgrade effects
pointMultiplier = 1.0 + (upgradeLevel × 0.05)  // +5% per level
accuracyBonus = baseAccuracy × (1 + upgradeLevel × 0.1)  // +10% per level

The Automatic Machine

Unlocked at 10,000 points, the automatic machine throws darts without player input.

Machine Parameters

Parameter Description Upgrade Path
Throw Rate Darts per second Machine Speed upgrades
Base Accuracy Starting accuracy Machine Calibration
Aim Offset Target adjustment Calibration System
Throw Force Consistency Machine Precision
Segment Targeting Target specific areas Advanced Targeting

Calibration System

The machine can be calibrated to improve performance:

// Machine accuracy calculation
machineAccuracy = baseAccuracy + calibrationBonus - segmentDifficulty

// Segment difficulty varies:
// - Single segments: Low difficulty
// - Double ring: Medium difficulty
// - Triple ring: High difficulty
// - Bullseye: Very high difficulty

Upgrade Guide

Accuracy Branch

5-7 Tiered Upgrades - Reduces throw deviation

Level Name Effect Cost Formula
1 Steady Hand -10% deviation 100
2 Focused Aim -15% deviation 500
3 Sharp Eye -20% deviation 2,000
4 Eagle Vision -25% deviation 8,000
5 Perfect Sight -30% deviation 25,000
6 Zen Focus -35% deviation 75,000
7 Master's Touch -40% deviation 200,000

Total Accuracy Improvement: Up to 175% reduction in deviation

Speed Branch

Tiered Upgrades - 10-15% increase per level

Level Name Effect Cost Formula
1 Quick Release +10% speed 150
2 Rapid Fire +12% speed 750
3 Lightning Arm +15% speed 3,000
4 Blur Motion +15% speed 12,000
5 Speed Demon +15% speed 40,000

Formula:

throwSpeed = baseSpeed × (1 + speedUpgradeBonus)
// At max upgrades: 1 × 1.67 = 1.67 throws/second

Precision Branch

Tiered Upgrades - Reduces variance over time

Level Name Effect Cost
1 Consistent Form -10% variance 200
2 Muscle Memory -15% variance 1,000
3 Practiced Motion -20% variance 4,000
4 Reliable Rhythm -25% variance 15,000
5 Clockwork Precision -30% variance 50,000

Machine Branch

8-10 Upgrades - Improves automatic machine performance

Level Name Effect Cost
1 Basic Calibration +5% machine accuracy 15,000
2 Servo Upgrade +10% throw consistency 30,000
3 Targeting System Enable segment targeting 50,000
4 Enhanced Sensors +15% accuracy 100,000
5 Precision Motors +10% speed, +10% accuracy 200,000
6 Advanced Algorithms Better target prediction 400,000
7 Neural Calibration +20% overall performance 750,000
8 Quantum Targeting Near-perfect targeting 1,500,000

Power Shot Branch

4-5 Upgrades - Enhances charged throw mechanics

Level Name Effect Cost
1 Power Charge Unlock power shot 5,000
2 Quick Charge -20% charge time 15,000
3 Stable Power +25% power shot accuracy 40,000
4 Surge Release +50% power shot points 100,000
5 Ultimate Power -50% cooldown 250,000

Power Shot Mechanics:

// Hold to charge, release to throw
chargeTime = 2.0 seconds (base)
powerMultiplier = 2.0 + (chargeLevel × 0.5)
accuracyPenalty = 0.2 - (upgradeBonus × 0.05)
cooldown = 10 seconds (base)

Combo Multiplier Branch

5-6 Upgrades - Enhances multiplier mechanics

Level Name Effect Cost
1 Combo Starter +0.1x per combo level 3,000
2 Chain Master Slower combo decay 10,000
3 Multiplier Boost +25% combo multiplier 30,000
4 Combo Shield 1 miss protection 75,000
5 Endless Chain +50% combo multiplier 150,000
6 Perfect Streak Double points at max combo 300,000

Advanced Mechanics

Combinations

Special dart combinations provide bonus rewards:

Combination Description Bonus
Triple Twenty x3 Three consecutive triple 20s 500 points + 2x multiplier
Hat Trick Three bulls in a row 300 points + achievement
Shanghai Single, Double, Triple of same number 400 points
High Ton 3 darts totaling 151+ 200 points
Maximum Three triple 20s (180) 1000 points + achievement

Achievements

Achievements provide permanent bonuses and track milestones:

Achievement Requirement Reward
First Blood Hit your first dart 10 points
Century Earn 100 points +1% points permanently
Sharpshooter 10 bulls in one session +2% accuracy
Machine Master Unlock the machine +5% machine accuracy
Combo King Reach 10x combo +5% combo multiplier
Point Millionaire Earn 1,000,000 points +10% all earnings

Prestige System

The prestige system allows you to reset progress for permanent bonuses:

Prestige Currency

prestigePoints = floor(sqrt(totalLifetimePoints / 1000000))

Prestige Bonuses

Each prestige point can be spent on:

Bonus Effect per Point Max Level
Starting Points +100 starting points 10
Base Accuracy +1% accuracy 20
Base Speed +2% speed 15
Point Multiplier +5% points 25
Machine Head Start Machine unlocks earlier 5

Development

Tech Stack

  • Framework: React 19.2 with TypeScript
  • Build Tool: Vite 7.2
  • State Management: Zustand 5.0
  • Styling: CSS3 with CSS Variables
  • Rendering: HTML5 Canvas API

Project Structure

dartomat/
├── src/
│   ├── components/     # React UI components
│   ├── hooks/          # Custom React hooks
│   ├── store/          # Zustand state management
│   ├── types/          # TypeScript interfaces
│   ├── utils/          # Utility functions
│   ├── constants/      # Game configuration
│   └── assets/         # SVG and static assets
├── public/             # Static files
└── .automaker/         # Feature specifications

Available Scripts

npm run dev          # Start development server
npm run build        # Build for production
npm run preview      # Preview production build
npm run lint         # Run ESLint
npm run format       # Format with Prettier
npm run typecheck    # TypeScript type checking
npm run ci           # Full CI pipeline

Game Constants

Key configuration values in src/constants/index.ts:

// Game Configuration
SAVE_INTERVAL_MS: 5000      // Auto-save every 5 seconds
FPS_TARGET: 60              // Target frame rate

// Dartboard
SEGMENTS: [20, 1, 18, 4, 13, 6, 10, 15, 2, 17, 3, 19, 7, 16, 8, 11, 14, 9, 12, 5]
BULLSEYE_POINTS: 50
OUTER_BULL_POINTS: 25
DOUBLE_MULTIPLIER: 2
TRIPLE_MULTIPLIER: 3

// Initial Values
STARTING_CURRENCY: 0
BASE_ACCURACY: 0.5          // 50%
BASE_THROW_SPEED: 1         // 1 throw/second

Browser Support

Browser Minimum Version
Chrome 90+
Firefox 88+
Safari 14+
Edge 90+

Performance Target: 60 FPS on mid-range devices


Contributing

Contributions are welcome! Please read our contributing guidelines:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Development Guidelines

  • Use functional components with hooks
  • Follow TypeScript strict mode
  • Separate game logic from UI
  • Write tests for game calculations
  • Use conventional commits

License

This project is licensed under the MIT License - see the LICENSE file for details.


Happy Throwing!

Made with darts and code

Report Bug | Request Feature

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages