/quest-bound

Free and Open Source Tabletop Game Engine

Primary LanguageTypeScriptGNU General Public License v2.0GPL-2.0

Quest Bound

Quest Bound is a free and open source engine for creating digital tabletop role playing games. This repo contains all of its source code, its open source license and terms of use.

Screenshot 2024-12-27 at 8 33 12 AM

Getting Started

Bootstrapping

Running Quest Bound

Contributing

Report Bugs or Request Features

About the Creator


Join our Discord Server to join discussions and troubleshoot issues.


Sponsor Shoutout

Special thanks to those who have supported Quest Bound's development above and beyond what's been expected of them.

Crow Brain Games

Roll 4 Gravity

T.L. Bainter

GM Pak

Getting Started

Quest Bound is a web application written entirely in TypeScript, a high level programming language that compiles to JavaScript. You will run two separate applications to use Quest Bound--a server and a client. When both are running, you'll access Quest Bound through a web browser of your choice.

Source Code

Download the source code as a zip file and unzip it on your computer anywhere you'd like. Even though Quest Bound will be running on your own computer, it is not a native application, so it isn't picky about where its files are located.

Screenshot 2024-12-27 at 9 59 17 AM

Required Downloads

Docker

To make it as easy to run as possible, Quest Bound has been encapsulated into a Docker container. Docker is a separate application that will run Quest Bound inside a virtual machine on your computer, relieving you of downloading and installing the several specific runtimes QB requires.

Download Docker Desktop. You will not need a paid account.

Recommended Downloads

Database Client

It is sometimes helpful to view the data in your database through a graphical client. This isn't strictly necessary. You can also run SQL commands through your terminal to execute raw database queries. My favorite client for Postgres is Postico. A great alternative is DB Beaver.

Text Editor

You will only find this useful if you intend to edit Quest Bound's source code. If you do, you likely already have a favorite code editor. Mine is VS Code.

Bootstrapping

Boostrapping Quest Bound only needs to be done once. After you get it running the first time, you can simply start it.

Docker

Install and open Docker Desktop.

Screenshot 2024-12-27 at 8 00 56 AM

Troubleshooting Tips for Docker on Windows

Open your computer's terminal (Terminal on MacOS and Linux, CMD Prompt on Windows).

In your terminal, navigate to wherever you placed the unzipped source code. For example:

cd ~/Documents/quest-bound-main

This command will vary depending on your operating system and where you placed the unzipped source code. In most terminal applications, dragging the folder into the terminal will paste its absolute path.

Once in the top level directory, called quest-bound-main, run the following command:

docker compose up --build

The docker command should have been made available on your machine when you installed Docker Desktop. If it isn't, follow the steps here.

Screenshot 2024-12-27 at 9 27 34 AM

This command will install several Docker images on your machine. Each of them has a critical piece of infrastructure that Quest Bound needs. After those are downloaded, it will build the server and client applications. This should take five to ten minutes total.

When it's finished, you should see four new images listed in Docker Desktop.

  • quest-bound-client
  • quest-bound-server
  • redis/redis-server-stack
  • postgres

Screenshot 2024-12-27 at 8 07 31 AM

In your containers list, you should see a new collapsible list of containers called quest-bound. If this parent container is running, go ahead a click the stop button to stop it. This should clear the running process in your terminal.

Troubleshooting

Windows machines, especially those running Windows 10 or earlier, need a subsystem called Windows Subsystem for Linux (WSL). When installing Docker, you may run into an error like this:

dockerfail

Read through this thread to update to the latest version of WSL.

Follow this guide to enable virtualization from your computer's BIOS.

It might be helpful to store the quest-bound-main directory with the wsl file structure, instead of the usual C:\\ path. For example:

\\wsl.localhost\Ubuntu\home\<user>\Documents\quest-bound-main

Running Quest Bound

Open Docker Desktop and click on quest-bound-main to see a list of containers and a running log.

Screenshot 2024-12-27 at 8 11 54 AM

Start each container in this order, waiting for the corresponding message to show it started successfully.

  • quest-bound-redis: Ready to accept connections tcp
  • quest-bound-db: database system is ready to accept connections
  • quest-bound-server: [server]: Server is running at http://localhost:8000
  • quest-bound-client: Local: http://localhost:5173/

Once all four containers are running successfully, open a web browser to test the services.

http://localhost:8000

Screenshot 2024-12-26 at 9 45 07 AM

http://localhost:5173

Screenshot 2024-12-27 at 8 18 14 AM

Contributing to Quest Bound

You can find documentation on developing Quest Bound on this repo's wiki.

Issues

To report bugs, create an issue in this repository and select the bug template. Issues will be updated and closed as they are addressed.

Discussions

Use discussions to chat about potential features and updates with other users.

Pull Requests

To submit a contribution, push your work to a feature branch and create a pull request to the main branch. Follow the PR template. Currently, all pull requests are reviewed by a single code owner, but this policy may change over time.

About the Creator

My name's Curt and I've been a professional software developer since 2017, working for companies ranging between small startups to as large as Amazon Web Services.

Quest Bound is the most ambitious and complex project I have ever worked on. What started as a simple idea for a more intelligent character generator evolved into an accessible engine for creating the digital versions of custom TTRPGs. Eventually, it became clear that what I wanted to do was bring the power to create D&D Beyond level applications to independent game creators.

I spent nearly two years building Quest Bound, half of that full time while living on savings and all of it working more hours in a day than I should have been. When I realized I couldn't make QB work as a sustainable business, I decided to open source it so others may continue to use it forever. It is my hope that other developers and TTRPG enthusiasts will contribute to QB's continued development over time.

I've made a lot of mistakes and have learned an incredible amount by building Quest Bound--as a developer, an aspiring entrepenuer and as a responsible consumer of tabletop gaming. I consider Quest Bound to be my contribution to this community of gamers. Please use it freely, share it with others and contribute to it to make it better for everyone.