Skip to content

dodadoa/QTT

Repository files navigation

QQT - A Quest to Conquer the Tanies

An idle clicker game set in a dystopian future where banana trees spawn Tani ghosts, and you must balance economic growth with supernatural threats.

Overgrown Banana Plantations

Overview

QQT (A Quest to Conquer the Tanies) is a strategic idle game where you play as a member of a corporate coalition trying to manage banana plantations while preventing Tani ghost power from overwhelming humanity. The game combines resource management, economic simulation, and risk management mechanics.

Features

Core Gameplay

  • Resource Management: Manage money, banana trees, bananas, and land
  • Dynamic Pricing: Banana prices fluctuate ±10% and decrease 20% per 100 bananas sold in 1 minute
  • Price Recovery: Prices recover to base after 20 seconds of no sales
  • Ghost Power System: Each banana tree increases Tani ghost power; magicians reduce it
  • Magician System: Hire magicians to reduce ghost power, but they get expensive and may quit
  • Land Management: Buy land to increase tree capacity (200 trees per rai)

Visualizations

  • Relationship Diagram: D3.js visualization showing connections between Tani, Banana Trees, Magicians, Bananas, and Market
  • Price Chart: Real-time stock-market-style chart with multiple time ranges (real-time, 1min, 5min, 10min, 1hour)
  • Color-Coded Metrics: Red for increases, green for decreases, gray for neutral

UI Features

  • Help System: Contextual help modals with Info and Action tables
  • Lore Section: Complete backstory explaining the game world
  • LessWrong-style Design: Clean, minimalist serif typography with compact layout

Installation

Prerequisites

  • Node.js 18+
  • pnpm (or npm/yarn)

Setup

# Install dependencies
pnpm install

# Run development server
pnpm dev

# Build for production
pnpm build

# Start production server
pnpm start

The game will be available at http://localhost:3000

Game Mechanics

Resources

  • Money (Baht): Starting amount 1,000 ฿. Used to buy trees, land, and hire magicians
  • Banana Trees: Cost 100 ฿ each. Each tree increases ghost power by 0.1% per second
  • Bananas: Collected from trees (1 per tree). Sell for fluctuating prices
  • Land (Rai): Cost 10,000 ฿ per rai. Each rai holds 200 trees

Actions

  • Plant Banana Tree: Costs 100 ฿, takes 5 seconds
  • Collect Bananas: Free, takes 2 seconds, collects 1 banana per tree
  • Sell Bananas: Free, takes 1 second, price fluctuates based on market
  • Cut Tree: Free, takes 3 seconds, resets ghost power to 0% (sacrifices 1 tree)
  • Buy Land: Costs 10,000 ฿, increases capacity
  • Hire Magician: Variable price (starts at 100 ฿), reduces ghost power by 0.5% per second

Ghost Power

  • Increases by 0.1% per second per tree
  • Decreases by 0.5% per second per magician
  • Game over at 80%
  • Can be reset to 0% by cutting a tree

Magicians

  • Starting price: 100 ฿
  • Price increases by 10 ฿ every 20 seconds
  • May quit randomly after 1 minute (5% chance per second)
  • Each magician reduces ghost power by 0.5% per second

Banana Market

  • Base price: 5 ฿
  • Fluctuates ±10% randomly
  • Market impact: -20% per 100 bananas sold in the last minute
  • Price recovery: Returns to base price 20 seconds after last sale

Technology Stack

  • Framework: Next.js 16
  • React: 19.2.0
  • Styling: Tailwind CSS 4
  • Visualization: D3.js 7.9.0
  • Language: JavaScript (ES6+)

Project Structure

QQT/
├── src/
│   ├── app/
│   │   ├── page.js          # Main game page
│   │   ├── layout.js        # Root layout
│   │   └── globals.css      # Global styles
│   ├── components/
│   │   ├── HelpModal.js     # Help modal component
│   │   ├── LoreModal.js     # Lore/story modal
│   │   ├── TaniDiagram.js   # Relationship diagram (D3)
│   │   └── BananaPriceChart.js # Price chart (D3)
│   ├── config/
│   │   └── gameConfig.js    # Game configuration
│   ├── hooks/
│   │   └── useGameState.js  # Main game state hook
│   ├── logic/
│   │   ├── gameLogic.js     # Game calculations
│   │   └── conditions.js    # Action conditions
│   └── utils/
│       ├── helpContent.js   # Help content generator
│       └── modalPosition.js # Modal positioning utility
├── package.json
└── README.md

Game Configuration

All game parameters can be adjusted in src/config/gameConfig.js:

  • Economic settings (prices, costs)
  • Time settings (action durations)
  • Ghost power rates
  • Magician settings
  • Banana market parameters

Development

Code Style

  • Uses ESLint with Next.js config
  • Serif fonts throughout (Georgia, Times New Roman)
  • LessWrong-inspired minimalist design
  • Black and white color scheme with subtle grays

Key Components

  • useGameState: Custom hook managing all game state and logic
  • gameLogic: Pure functions for calculations
  • conditions: Action availability checks
  • D3 Visualizations: Real-time relationship and price charts

License

Private project

Credits

Game concept and lore by the development team.

About

An idle clicker game set in a dystopian future where banana trees spawn Tani ghosts, and you must balance economic growth with supernatural threats.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors