Disclaimer: This project was completed as part of a group software development project. The following write-up documents the project's design, implementation, features, and development process.
TabletopSync
Meet the Team
- Sheizah Jimenez: Project Lead + Front-End Developer
- Shawn Heer: Lead Front-End Developer + UX Designer
- Mina Si Nan Yang: Persistence Manager + UI Designer
- Graeme Jeffreys: Primary Network Manager + Back-End Developer
- Ramiyan Gangatharan: Lead Back-End Developer + Network Support
Project Overview
Description
TabletopSync is a multiplayer 2D tabletop RPG board application that allows multiple users to connect to a shared session and interact in real time. Users can place and move character tokens, take notes using a persistence-based notepad, and communicate through an integrated chat system.
The application was designed around a client-server architecture, with the majority of shared functionality communicating with the server to keep connected clients synchronized.
Key Features
Main Canvas
- Add sprites to the canvas using uploaded images
- Update the map/background using an uploaded image
- Toggle snap-to-grid for sprites
Sprite Objects
- Drag and reposition sprites
- Lock and unlock sprites using the popup menu
- Delete sprites using the popup menu or
Deletekey - Display information about the player who currently has a sprite selected
Chatbox
- Text field for composing messages
- Send messages using the Send button or
Enterkey - Player list displaying connected players and their assigned colours
Notepad
- Create new notes
- Write and update notes
- Open previously saved notes
- Save new and existing notes
- Delete notes
Client-side-only functionality includes features such as text entry and local UI interactions. Other features communicate with the server to synchronize state between connected clients.
AI Disclosure
AI tools were used during development for:
- Assistance with debugging code snippets
- Minor UI implementation questions, such as creating items in a
JPopupMenu - Assistance with mathematical equations related to camera movement, grid-related features, and sprite dragging
- Consultation and general implementation guidance when determining approaches to specific problems
Resources
- FlatLaf Dependency: Used to create the Server UI with an appearance similar to a regular terminal.
- Jackson Databind Dependency: Used for JSON processing.
- Stack Overflow: Used as a reference for network implementation and minor UI-related questions.