Strongly inspired by the concepts pioneered in Town of Salem, we decided to create a modern and action-packed take on the concepts with Sleeper Agent Force: M.
What it does
Sleeper Agent Force: M brings players together in a high-tension scenario where they attempt to find the team of spies, comprised of other players, that infiltrated national ranks. Both the agents and spies are secret forces unbeknownst to each other, and must therefore follow their roles as the opposing team tries to decipher their motives through their actions.
How we built it
We built our project solely on Java. The client was first built on Java Swing, which proved to be inefficient and lacking in terms of flexibility. We then moved onto a JavaFX implementation which allowed us to recover greatly from the downfalls we experienced with Java Swing. We created the server backend to handle multiple clients and game instances with their respective logic. Data between the server and clients is shared through TCP connections.
Challenges we ran into
The major challenge was the front-end framework. We had a lot of trouble with layouts and overall cohesiveness of the design, which took about 8 hours of our time before we abandoned it and switched to JavaFX. The back-end challenges were mainly integrating the networking into the multi-threading and developing the game logic (tedious).
Accomplishments that we're most proud of
I personally am proud to have built my first functional GUI for an application using Java. I don't have much practical experience, and much of it is in HTML/CSS only, so this was a great and fulfilling accomplishment for me. Alex is proud of integrating a full event system with multi-threading and reflection.
What we learned
I learned how to produce an acceptable GUI using only Java. Alex learned how implement a TCP connection for multiple clients.
What is next for Sleeper Agent Force: M
We would first like to implement the game logic fully, establish the connections between the back-end and front-end, and polish the GUI greatly for a more enjoyable and rewarding experience.