Dilimle (Turkish for "Slice it") is a modern Volfied/Qix-inspired arcade game built with React, TypeScript, Vite, and the HTML5 Canvas API.
The objective is to capture the "void" by slicing off sections while avoiding enemies that inhabit the danger zones.
- Modular Architecture: Adheres to SOLID principles and Clean Architecture by separating concerns into dedicated hooks (Input, PowerUps, Progression) and utility modules (Geometry, Collision).
- Advanced Capture Logic: Uses
polygon-clippingfor robust geometric calculations, ensuring the playable area is correctly preserved while slicing. - Fragment Analysis: Intelligent fragment sorting that prevents the player from accidentally capturing the "main field" while trapping enemies.
- Dynamic Difficulty: Level-based scaling that introduces multiple enemy types (Bouncers, Chasers, and Fire Trailers) with increasing velocity scales.
- Power-up System: Includes Shields, Fire Resistance, and Slow Motion to aid in capturing dense areas.
- High Performance: Optimized HTML5 Canvas rendering pipeline with a decoupled physics update loop.
- Frontend: React 19 + TypeScript 5
- Build Tool: Vite 6
- Styling: Tailwind CSS 4 + PostCSS
- Rendering: HTML5 Canvas
- Geometry Processing: polygon-clipping
- Arrow Keys: Move the player and slice through the void.
- Space (Reserved): Power-up interaction (if applicable).
- Volume Slider: Adjust background music levels in real-time.
- Node.js (v20 or higher)
- pnpm, npm, or yarn
- Background music https://pixabay.com/music/video-games-8-bit-retro-game-music-233964/
- Capture music https://pixabay.com/music/video-games-game-8-bit-on-short-278081/
- Clone the repository.
- Install dependencies:
pnpm install
- Start the development server:
pnpm dev
pnpm dev: Starts the Vite development server.pnpm lint: Runstscto perform a full type-check across the project.pnpm validate: Runs type-checking, linting, and formatting checks (used by CI and Git hooks).pnpm test: Runs the test suite (currently a placeholder).pnpm build: Bundles the application for production into thedistfolder.pnpm format: Automatically formats the codebase using Prettier.
This project uses Husky to enforce code quality before pushing code.
- Pre-push: Runs
pnpm validateto ensure that no code with type errors or linting issues is pushed to the remote.
This project uses GitHub Actions for automated deployment.
Every push to the main branch triggers a workflow that:
- Installs dependencies using
pnpm. - Performs a type-check (
pnpm lint). - Runs tests (
pnpm test). - Builds the production bundle.
- Automatically deploys the result to the
gh-pagesbranch.
Licensed under the Apache License, Version 2.0.