Inspiration
Story: Given the prompt "link", our group had brainstormed a myriad of ideas, however, what stuck out to us the most was a mystery/puzzle text based game. The challenge was how to make such a project complex enough to be considered satisfactory for our standards. Eventually we agreed on making the game cooperative multiplayer, as the implementation of a network connection would vastly increase the complexity. This would complement the prompt as well, urging players to "link" together to complete the game. The story this game tells is not to be taken seriously, with our main goal being to include the prompt as much as possible.
What it does
One computer is the host of the server when they click on New Game and shows a connect code that allows the other computer to connect to the host. After that is completed, they are both connected and the render for the game text box will appear. Both players will see the game text box on their computer and can interact during their turn. The server prompts each player when it is their turn and they type our their answers accordingly.
How we built it
We structured the project with a clear separation between the frontend and backend. Our team used React for the user interface and Node.js for the server. One team member focused on developing the story and bringing it to life through code, while the rest of the team collaborated to integrate features and polish the overall experience. This project was a huge learning experience for all of us. Many team members worked with new technologies for the first time, which made the process both challenging and rewarding. We spent a lot of time pair programming, helping each other debug issues, share knowledge, and grow our technical skills together. For real-time communication, we implemented WebSockets using the ws library, enabling seamless interaction between the client and server.
Challenges we ran into
We initially started building the backend with FastAPI, but we ran into several issues, especially with WebSocket connections that didn’t work properly with our Python setup. At that point, we had to choose between rebuilding the backend from scratch using a framework we were still learning or switching to Node.js, which we were more comfortable with. We decided to switch, which allowed us to move faster and get the real-time features working using the ws library.
By the time we made the transition and began integrating the story logic, we were running short on time. This made it challenging to implement all the features we had envisioned, but we still managed to build a solid MVP that our team is happy with.
Accomplishments that we're proud of
We’re proud of how much we learned and accomplished in such a short time. Everyone in the group had the opportunity to gain valuable experience and knowledge while overcoming the challenges of building a program within a set amount of time. Building a working project in under 24 hours was no small feat; it required not just coding but also brainstorming, planning, and constant collaboration.
For many of us, this was our first time using Git and React, as well as our first experience connecting a backend and frontend from scratch. Despite the challenges, we pushed through, adapted quickly, and ended up with a functional prototype. We are proud of the fact that we were able to bring something that started as just an idea into reality within the window that we had. The experience taught us a lot about teamwork, problem-solving, and how to not crush our laptops to pieces.
What we learned
We split our team into frontend and backend groups. For those working on the frontend, this was our first time using React, so there was a steep learning curve, especially when it came to working with CSS files and understanding how styling in React differs from traditional HTML. Despite the challenges, we gained a solid understanding of how modern web frameworks handle component-based design and dynamic user interfaces. On the backend side, it was our first time implementing WebSockets outside of a classroom environment. We learned how to manage real-time communication between the client and server, which deepened our understanding of asynchronous programming and how backend systems interact with live data. Overall, the experience helped us grow our technical skills and confidence in tackling unfamiliar technologies.
What's next for Dungeon Link
There are only two levels out for Dungeon Link at the moment. Our plan is the have at least 3 more with a greater emphasis on cooperative puzzles and expansive side stories. Fixing the issues we had with implementing the story and diving deeper into linking different paths that may or may not converge into one or separate at the end.
Log in or sign up for Devpost to join the conversation.