Inspiration
Two things inspired us to tackle this game.
First of all, we were already familiar with the game of Scoundrel and enjoyed playing it for quite some time now, but needing to have a pack of cards to play and having to shuffle, deal, and move cards by hand every turn was a hassle. So naturally, the idea of programming this game to be playable on computer came up as a way to level up our casual gaming, while also making it a fun, worthwile project in and of itself.
Secondly, we were also moved by the possibility of modifying, balancing, and tweaking the game as we saw fit. One of the most fun parts of strategy games is analyzing game design and the underlying philosophies of a game. Programming Scoundrel ourselves opened the doors for potential modifications, balancing, and reimagining the base game in any way we saw fit.
What it does
Our program runs a game of Scoundrel, as well as providing an external tutorial to the game. Once in the game, players use their mouse to click their way through a dungeon (AKA the standard deck of cards) finding monsters, weapons, and potions as they fight and flee their way through rooms. If they survive through the full dungeon, they win; otherwise, it's game over.
How we built it
We used the Pygame library to write the base-level functionality for running our game, such as core loops, button inputs, and game logic. In addition, we imported a separate but related library called Pygame_cards which added extra functionality for handling decks of cards, organizing them, and shufflilng them across the screen.
Challenges we ran into
Coding menu logic, as we had to ensure that the overarching game program was able to track which menu, and by proxy which inputs, buttons, and visuals it should accept, as well as how each menu leads into the next. In addition, we had some trouble getting the 'Restart' and 'One More Game...' buttons to start a fresh new game, rather than simply continuing from the latest progress with a health reset, but this was soon fixed by having board state initialization within a function new_game() and calling this each time it was needed for a fresh game reset. Probably our biggest challenge, however, was card movement and manipulation. Scoundrel has a lot of separate deck slots: the draw pile, the discard pile, the dungeon room, and so on, each of which has different on-screen placements, behaviors, and rules as to which cards could interact with them. Programming each of this aspects to work visually while respecting the game logic took substantial time and effort; it was probably our most demanding task of the entire project.
Accomplishments that we're proud of
We are most proud of the fact that we were able to recreate the full gameplay loop of Scoundrel in a digital format while preserving the feel of the original card game. The system correctly manages the dungeon deck, card interactions, combat logic, and player decisions in a way that mirrors the tabletop experience. On top of all this, we were able to do this without filling the screen with excess button prompts, pop-ups, or other visual elements. Instead, the simple gestures and card placements we programmed handled all of this aspects while maintaining a clean, minimalist, and user-friendly appearance.
Additionally, implementing a functioning restart system that fully resets the board state was a satisfying milestone, as it ensured the game could be replayed seamlessly. We didn't just make this game for this hackathon, but for our own personal use as players. Being able to dive in as much as we wanted with just a button press was all that we wanted.
What we learned
Through this project we learned a great deal about structuring a medium-sized program and organizing game logic. Managing state across multiple menus, gameplay screens, and user inputs required careful planning and modular code design. We also gained hands-on experience with the Pygame library, particularly in handling event loops, rendering graphics, and responding to user input in real time. We also improved our teamwork and collaboration skills by dividing responsibilities and integrating our work into a single functioning program.
What's next for Scoundrel: The Roguelike Classic
One possibility is adding additional gameplay features such as difficulty modes, new card types, or alternative dungeon mechanics to further deepen the strategy of the game. Another improvement would be enhancing the game experience with sound effects and more polished UI elements and art. In the long-term, this could even develop into a proper standalone game, building far off of the shoulders of Scoundrel and become a proper, unique card-based roguelike game.
Log in or sign up for Devpost to join the conversation.