:: a python gui to keep track of scores while playing Doomlings
Ever since friends backed the original version on Kickstarter and the game finally arrived, we've been more than just addicted to Doomlings from the very first second. Unfortunately, we don't live too close to one another, so we only see each other every few weeks/months. But WHEN we do, it's set in stone that at least (!) one Doomlings session has to be played!
I guess anyone who knows the game knows how much you can annoy each other by stealing or swapping yet another trait from the trait pile. And sometimes you don't even want to, especially not to jeopardise the peace that has just been restored. But if it has to be done, we thought it would only be fair if the player in the lead becomes the target.
So we always tried to get a quick overview of the others' points. But with all the scoring rules, it's quite difficult to work out who's in the lead. Especially as we extended it to 4 catastrophes at some point.
After many years of MATLAB and several unsuccessful attempts to switch to Python, I finally started using Python at the end of 2023 and turned my back on MATLAB for good. And what's the best way to learn a programming language? Exactly: With an interesting project!
So it was only natural for my first python project to be a Doomlings live points counter. Consequently,
"Doomlings" + "Python" = "DoomPy"
was born. With DoomPy you can easily allocate the traits to the respective players trait piles, select catastrophes & MOLs, and thus see what the score looks like at any time.
If you take a look at my code, please keep in mind that I'm new to Python and forgive the, very likely little Pythonic, chaos.
In the past I've been coding mostly in academia, especially with MATLAB. Therefore my coding style is very procedural. I have never coded in an object-orientated way. So I'm sure that there would be a much more efficient OOP alternative, especially in this case where players/traits/MOLs/ages are predestined to be defined as a class
... but that might be a project for the future when I learn OOP.
As this is also the first time that I am sharing a Python project with the world, this also poses new challenges for me. I think (hope) it should be possible for anyone with the provided requirements.txt to set up a virtual environment in which DoomPy has to run.
Download the repository and unzip it. Or if you prefer to use the terminal, run
wget https://github.com/azabicki/DoomPy/archive/refs/heads/main.zip
or
curl -L -O https://github.com/azabicki/DoomPy/archive/refs/heads/main.zip
(see comment on curl)
Install the virtual environment with the tool of your choice. You find a requirements.txt
in the repo base folder
Finally, run
`python /path/to/DoomPy/main.py`
and have fun playing Doomlings!!
Display Resolution: This is a very important aspect, since the GUI takes a lot of space. Especially if you play with 4 catastrophes and many rounds. And depending on which traits are played, it may happen that the height of the trait pile is larger than the screen, making it impossible to select MOLs. With 4 players and 4 catastrophes and on a 1800 x 1200
display, we ocasionally run into problems.
Hence, if possible:
- use a higher vertical resolution as 1200 px if played with more than 3 catastrophes
- use a wider horizontal resolution as 1800 px if you play with more then 4 players.
Depending on your OS Dark-Mode, DoomPy looks like this:
The GUI consist of mainly two parts:
- the control box on the left, where you
- set some options for the next game
- deal traits from the deck to the players trait piles
- select catastrophes world's end events
- turn some options for the current on and off
- and trait piles on the right, where you
- see the players current point
- organize each player's trait pile (i.e. playing, attaching, swapping and discarding traits)
- select MOL(s)
I hope that the handling is self-explanatory. Especially if you've already played a round or two of Doomlings. But just in case, you can find more detailed explanations here.
- Game options:
- set the amount of players, size of gene pool, amount of catastrophes & MOLs
- name the players, but keep the correct order at the table, because some effects affects the players to your left or right
- the radiobutton to the right of the names defines the first player, it can be changed at any time during the game, and changes automatically after each catastrophe
- Deck:
- search for the name of
- bugs found?
- ideas for improvement?
- issues are the way to go