Skip to content

TDanks2000/react-incremental-lib

๐Ÿ•น๏ธ React Incremental Game Library

npm version npm downloads License: ISC

A powerful React library for building incremental, idle, and clicker games. Create engaging experiences with minimal setup using our collection of specialized hooks and stores.

๐Ÿš€ Features

  • ๐ŸŽฎ Game Mechanics - Clickers, auto-incrementers, and cooldown systems
  • ๐Ÿ’ฐ Resource Management - Currency systems and resource caps
  • ๐Ÿ† Progression Systems - Achievements and upgrades
  • ๐Ÿ’พ Save Systems - Built-in game save/load functionality
  • โšก Performance Optimized - Built with React 19 and Zustand
  • ๐Ÿ“ฑ TypeScript Ready - Full type support out of the box

๐Ÿ“ฆ Installation

npm install react-incremental-library
# or
yarn add react-incremental-library
# or
pnpm add react-incremental-library
# or
bun add react-incremental-library

๐ŸŽฎ Quick Start

Basic Clicker Example

import React from 'react';
import { useClicker } from 'react-incremental-library';

export const ClickerGame = () => {
  const { count, handleClick } = useClicker({
    onClick: (val) => console.log(`Clicked! New count: ${val}`),
  });

  return (
    <div>
      <h1>Clicker Game</h1>
      <p>Click Count: {count}</p>
      <button onClick={handleClick}>Click Me</button>
    </div>
  );
};

Auto-Increment Example

import React from 'react';
import { useAutoIncrement, useCurrency } from 'react-incremental-library';

export const IdleGame = () => {
  const { currency } = useCurrency();
  const { pause, resume, isPaused } = useAutoIncrement({
    interval: 1000,
    increaseBy: 5,
    options: { startPaused: false },
  });

  return (
    <div>
      <h1>Idle Game</h1>
      <p>Currency: {currency}</p>
      <button onClick={isPaused ? resume : pause}>
        {isPaused ? 'Resume' : 'Pause'}
      </button>
    </div>
  );
};

๐Ÿ“š Available Hooks

Game Mechanics

  • useClicker - Basic clicking mechanics
  • useAutoIncrement - Automatic resource generation
  • useGameLoop - Game loop management
  • useTick - Fine-grained timing control
  • useIdleProgress - Track and reward idle time
  • useOfflineProgress - Handle offline progression

Resource Management

  • useCurrency - Currency management
  • useProduction - Resource production system
  • useResourceCap - Resource capacity limits
  • useMultiplier - Resource multipliers

Progression Systems

  • useAchievement - Individual achievement tracking
  • useAchievements - Bulk achievement management
  • useUpgrade - Upgrade system
  • usePrestige - Prestige mechanics
  • useCooldown - Action cooldown system

Utility

  • useHotKey - Keyboard shortcuts and combinations
  • useLoadSaveGame - Load game progress
  • useSaveGame - Save game progress
  • useNotation - Number formatting utilities

๐Ÿ—๏ธ Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

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

๐Ÿ“„ License

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

โค๏ธ

Reminder that you are great, you are enough, and your presence is valued. If you are struggling with your mental health, please reach out to someone you love and consult a professional. You are not alone; there is a large range of resources online for support and guidance.