Galactic Harvesters
Galactic Harvesters: The Canister Crusade
For those who'd rather not run the software from the source, I've uploaded separate binaries for Windows. Additionally, I've bundled the embedded-python-zip alongside the source, and provided shortcuts to launch the game with various options. Rest assured, there's no compiled code from my side. (I did not mark it final so you have to click on the title to see all files)
While instructions for running the software from source are documented in the README, I'll reiterate them here for your convenience:
Installation & Setup:
To install the necessary packages:
pip install -r requirements.txt
For Linux users:
sudo apt-get install libgl1-mesa-dev libopenal-dev pip install modernal==0.9.0
To launch the game:
python run_game.py
Command Line Arguments:
--no-fullscreen: Launch the game in windowed mode. --no-audio: Mute the game audio.
Game Controls Without a Mouse:
Move: W A S D
Turn: Q E
Shoot: CTRL
However, I strongly recommend playing with a mouse, as it offers a vastly different and immersive experience.
Additional Tip:
If you find yourself wanting to explore all the ships but don't want to grind through the game, feel free to modify the score.txt.
Deleting it will reset the game. Enjoy!
Story:
In the year 3077,
the Milky Way Galaxy is in the midst of an energy crisis.
The primary source of energy, a rare crystalline element called "Dark Matter" is nearing depletion.
Dark Matter is primarily stored in canisters that have been scattered throughout space over centuries
due to space wars, trading routes, and exploration mishaps.
Captain Neil Starbreaker is the fearless pilot of the spacecraft "Nebula Harvester".
Neil used to be a space pirate but has since reformed after witnessing
the dire effects of the energy crisis on his home planet, Noverra.
Join Captain Starbreaker on the "Nebula Harvester" and help save the galaxy.
github.com/szabolcsdombi/pyweek-36
Awards
Scores
Ratings (show detail)
Overall: 3.9
Fun: 3.7
Production: 4.6
Innovation: 3.4
Files
File | Uploader | Date |
---|---|---|
Galactic-Harvesters-Source.zip
— final
Final Release |
cprogrammer1994 | 2023/09/23 14:27 |
Galactic-Harvesters-Windows-x64.zip
Windows x64 Build |
cprogrammer1994 | 2023/09/23 14:26 |
cover-image.png
Cover Image |
cprogrammer1994 | 2023/09/22 19:49 |
game-over.png
Game Over |
cprogrammer1994 | 2023/09/22 19:49 |
laser-beams.png
Laser Beams |
cprogrammer1994 | 2023/09/22 19:49 |
upgraded-ship.png
Upgraded Ship |
cprogrammer1994 | 2023/09/22 19:45 |
base.png
Base |
cprogrammer1994 | 2023/09/22 19:45 |
into.png
Intro |
cprogrammer1994 | 2023/09/22 19:45 |
Diary Entries
Day 1 - Work in Progress
Day 2 - Work In Progress
So far, most of the game logic is working.
- Canisters can be collected, they jump to the user when close enough
- Enemy ships wander randomly and can collect canisters by luck
- The user can select the unlocked Space Ships
- Particle animations for ship smoke trails, levitation wind, and explosion (well I tried, I know it is really far from an explosion)
Still missing:
- Laser beams to shoot down the other ships
- Background stars and planets
- The rocket assets are not yet used
- Better than just lambertian shader (yes, shading right now is just a dot product)
I actually expected the list above to be complete by the end of Today.
I spent most of my time bike shedding the base and smoke animations. My project, my fun.
Day 3 - Work In Progress
FInished the background, added beams and the story is mostly complete.
Day 4 - Work In Progress
Audio is working, (sort of).
The game is already fullscreen and most of the work was put into the audio, no GIF this time.
The intro is complete (music, animation, timing).
Day 5 - First Release
Added an interactive tutorial scene, polished the rest.
I wanted to finish a day earlier in case something goes wrong.
Everything went as planned and I am happy with the outcome.
Day 6 - Bug Hunt
Yesterday, I rolled out a release and confidently labeled it as "final" (oh, the irony of that "final" tag).
Today, while testing the code across different platforms, I discovered a significant audio glitch that affected Linux users. It resulted in lags and, in some instances, outright crashes. I promptly turned to the pyglet documentation and adjusted my code, hoping that letting pyglet handle the main loop would solve the issue.
Alas, it didn’t. Tweaking the audio backend offered no relief. And pivoting to pygame.mixer? Not a feasible solution.
In the end, I had to resort to a less-than-elegant quick fix, inserting an ad-hoc patch specifically tailored for the affected platform.
Allocating an extra day before the deadline proved invaluable. The fix was implemented successfully 10 hours before the deadline.
While I uncovered numerous bugs in my dependencies, in reality, these are minor inconveniences. They include:
- I could not record video of the pyglet fullscreen window on windows (it should be borderless fullscreen, no option for that).
- I could not make an audio loop with pyglet.media
- I had to do my audio handler, for some reason audio was playing out of range. To detect such I had to look for playing time > audio length.
- I had to hack wav format on raw data to play it with pyglet.
- PyGLM objects are not immutable.
- PyGLM quaternions passed to GLSL has a messed up x, y, z, w components
After testing on multiple platforms, I had the impression that a linux environment is hostile to gamedev.
From my perspective all the issues I found are really easy to fix, maybe just no one addressed them before.
Having learned from this experience, I feel motivated to create an out-of-the-box solution for the window + audio.
Release
Hello there,
I'd greatly appreciate any feedback regarding potential bugs or suggestions. If you have any insights, please visit the linked GitHub repository to share your thoughts.
For those who'd rather not run the software from the source, I've uploaded separate binaries for Windows. Additionally, I've bundled the embedded-python-zip alongside the source, and provided shortcuts to launch the game with various options. Rest assured, there's no compiled code from my side.
While instructions for running the software from source are documented in the README, I'll reiterate them here for your convenience:
Installation & Setup:
To install the necessary packages:
pip install -r requirements.txt
For Linux users:
sudo apt-get install libopenal-dev pip install modernal==0.9.0
To launch the game:
python run_game.py
Command Line Arguments:
--no-fullscreen: Launch the game in windowed mode. --no-audio: Mute the game audio.
Game Controls Without a Mouse:
Move: W A S D
Turn: Q E
Shoot: CTRL
However, I strongly recommend playing with a mouse, as it offers a vastly different and immersive experience.
Additional Tip:
If you find yourself wanting to explore all the ships but don't want to grind through the game, feel free to modify the score.txt.
Deleting it will reset the game. Enjoy!