BYTECLUB is a narrative-driven, turn-based combat prototype and demo built by Team Byte Club for COMP305. The repo contains a small client UI, a modular combat system implemented in JavaScript, demo pages, art assets, testing, and documentation for the game's narrative and design.
Status: Prototype — playable demos included in demo/ and a modular combat engine under src/gameplay/.
- What it does
- Why it's useful
- Key features
- Getting started
- Usage examples
- Project structure
- Where to get help
- Maintainers & contributing
- License
BYTECLUB is a small web-based prototype for a gothic, loop-based narrative with a turn-based combat system. The codebase separates gameplay logic (combat engine, actions, entities, status effects) from presentation (browser demos and simple UI) so other projects can reuse the engine.
- Reusable combat system:
src/gameplay/exposes composable classes such asEntity,Action/Attack,StatusEffect,BattleEngine, andBattleSequencehelpful for turn-based game prototypes. - Lightweight demos: HTML/JS demo pages under
demo/andsrc/client/demonstrate simple integration and visuals. - Clear separation: engine, definitions (items/attacks/characters), animations, and UI are split for easy extension.
- Modular combat engine with turn order, status effects, and a battle log.
- Animation hooks (promises) so UI code can wait for animations to complete.
- Definitions registry for attacks, items, characters (under
src/gameplay/definitions/). - Demo pages and assets to try concepts quickly in the browser.
Prerequisites
- Node.js (for tooling like lint/format) — optional for running local demos.
- A modern browser to open demo HTML pages.
Install dev tools (optional)
# from repo root (macOS / zsh)
npm installAvailable npm scripts (development)
# run linter
npm run lint
# auto-fix lint issues
npm run lint:fix
# format source files
npm run format
# check formatting
npm run format:checkRun demos
Open any of the HTML demo pages in the demo/ folder or the src/client/index.html file in your browser. For example, from Finder or using a lightweight static server:
# serve current folder with a simple static server (optional)
# install one (if needed): npm install -g serve
serve .
# then open http://localhost:3000/demo/aman/demo.html (or other demo files)Importing the gameplay module (ESM)
import { Entity, Attack, BattleEngine } from './src/gameplay/index.js';
const hero = new Entity('Hero', 30, { ATTACK: 5, DEFEND: 2, SPEED: 3 });
const enemy = new Entity('Goblin', 12, { ATTACK: 3, DEFEND: 1, SPEED: 2 });
const bite = new Attack('Bite', { basePower: 2 });
hero.moves.push(bite);
const engine = new BattleEngine(hero, enemy);
engine.startBattle();
// Use engine.processTurn(entity, action, target) to run turnsFor more complete examples, see src/gameplay/ and the demo pages in demo/ and src/client/.
src/gameplay/— combat engine, core entities, actions, animations, definitions, and engine components.src/client/— simple client UI and scene loader used by demos.src/assets/— artwork, icons, and media used by demos.demo/— small demo pages (open in browser) grouped by contributor.docs/— narrative notes and team artifacts (e.g.,docs/gamePlot.md,docs/team-charter.md).tests/— lightweight test harnesses (manual tests / examples).
- Open an issue:
https://github.com/eden-elise/team-byteclub-comp305-project/issues - Read the narrative/design doc:
docs/gamePlot.mdand team notes indocs/. - Inspect example code:
src/gameplay/anddemo/.
- Maintainer (repo owner):
eden-elise(see repository owner on GitHub). - If you'd like to contribute:
- Open an issue describing the change or feature.
- Send a pull request with a clear description and targeted changes.
- Keep changes focused and follow the existing code style (run
npm run format).
This project is released under the MIT License — see the LICENSE file for details.
A floor or feature is considered Done when the following criteria are met:
- Rooms load correctly through the registry.
- Backgrounds update to the appropriate scene.
- Battles start and return to the correct room without breaking navigation.
- All navigation buttons lead to valid, connected rooms.
- Enemy registry entries exist and correctly map to sprites/assets.
- All intended moves execute without errors.
- Enemy AI can use its entire move set.
- Starting a new game works properly.
- Progression through all floors behaves as expected.
- Battle → return flow is consistent at each floor.
- No blocking or critical console errors are present.
- All referenced background, character, and sound files load (no 404s).
- Sensible fallback assets are in place where needed.
- Full manual playthrough of each floor to completion.
- Save/Continue correctly stores and restores player state.
- Debug hotkeys remain functional for development.
- No obsolete stubs or outdated logic shadow new systems (e.g., old enemy factories).
- File paths and imports are consistent.
- Critical comments/documentation updated to match the current implementation.