A Phaser 3 game that was submitted for the Gavedev.js Jam 2024 game jam.
You can play the game here on Itch.io: Circuit Rescue
In the not to distant future, a group of individuals have taken over your town. Their goal is to gain full control of the power grids in the area, and your town contains the main power grid. To gain control, the group has rounded up all of the townsfolk and power plant workers, and they have locked them up in an underground facility. However, you have managed to escape them for now...
This is your time to be a hero, however unlike the movies and comic books, you don't have any special powers... One skill you poses though, is the ability to hack. Your computer skills are legendary and you have managed to hack into the underground facilities network, and with your access you view the facilities security camera footage and communicate with the trapped civilians.
Today is the day you save them all...
In order to help the people escape, you will be interacting with various devices in each level. Each device will do something different, and you will have the ability to turn some of these devices on/off, and change the amount of power that is supplied to each device. To interact with a device, you just need to click on that device in the game. Devices that can be interacted with will emit a pink glow.
Speakers in the game allow you to communicate with the trapped people in each level. As you provide more power to each speaker, the louder the range of the speaker, which means you will be able to communicate with characters that are further away.
Control panels allow you to modify the power that is supplied to various devices in each level. As you click on each control power, you will either add or remove power to each device. Some devices can just be toggled on and off, while others will have varying levels of power.
In each level, your goal is to help the npc escape the level. This will involve helping unlocking a door for them to escape through, or powering devices in each level to help them safely navigate to the exit.
This game would not have been possible without the art and audio of these amazing artists!
Asset | Author | Link |
---|---|---|
Level Art | free-game-assets | industrial zone tileset |
Level Art | free-game-assets | overlay effects |
npcs | free-game-assets | townspeople |
backgrounds | free-game-assets | backgrounds |
UI Art | sungraphica | ui |
UI | kenney | Onscreen controls |
music | rustedstudio | cybertracks |
sfx | shapeforms | sfx |
Node.js and pNPm are required to install dependencies and run scripts via pnpm
.
Vite is required to bundle and serve the web application. This is included as part of the projects dev dependencies.
Command | Description |
---|---|
pnpm install --frozen-lockfile |
Install project dependencies |
pnpm start |
Build project and open web server running project |
pnpm build |
Builds code bundle for production |
pnpm lint |
Uses ESLint to lint code |
After cloning the repo, run pnpm install --frozen-lockfile
from your project directory. Then, you can start the local development
server by running pnpm start
.
After starting the development server with pnpm start
, you can edit any files in the src
folder
and parcel will automatically recompile and reload your server (available at http://localhost:8080
by default).
After you run the pnpm build
command, your code will be built into a single bundle located at
dist/*
along with any other assets you project depended.
If you put the contents of the dist
folder in a publicly-accessible location (say something like http://myserver.com
),
you should be able to open http://myserver.com/index.html
and play your game.
Any static assets like images or audio files should be placed in the public
folder. It'll then be served at http://localhost:8080/path-to-file-your-file/file-name.file-type
.
In the project folder, there is a variety of files and folders. At a high level, here is a quick summary of what each folder and file is used for:
.
├── .vscode this folder contains github workflows for this project, currently setup to allow deploying the project to itch.io
├── .vscode this folder contains configuration files for the VSCode editor, which will add auto linting and custom launch configurations for running tests (if you are not using VSCode, you can remove this folder from the project)
├── config this folder contains configuration files for ESLint and TSC (the TypeScript Compiler)
├── dist a dynamically generated folder which will contain the compiled source code of the finished library (generated when you run the build script)
├── docs this folder contains the images that are used in the README.md
├── node_modules a dynamically generated folder which contains the project developer dependencies when working on the library (generated when you run the install script)
├── public this folder contains all of the static assets that are used in the game
├── src this folder contains all of the core code for the game
├── .gitignore this file is used for telling git to ignore certain files in our project (mainly used for our project dependencies and dynamically generated files)
├── package.json a configuration file for npm that contains metadata about the project
├── tsconfig.json a configuration file for TSC
├── pnpm-lock.yaml a configuration file that contains the exact tree structure of the project dependencies and their versions (helps with repeatable project builds)
├── tiled-assets.zip a zip folder containing all of the Tiled levels that were created for this game
All of the levels in this game were created using the Tiled map editor. You can find all of these files and the related assets in the ./tiled-assets.zip
folder that is included in this repository.
For any issues you encounter, please open a new GitHub Issue on this project.