This game allows you to control an ever-increasingly growing ophidian in a virtual environment.
- Python 3.8 or newer (developed and tested on 3.10)
- pygame — only for the graphical UI;
--text-uiruns without it
git clone https://github.com/Preponderous-Software/ophidian.git
cd ophidian
pip install -r requirements.txtTo run the tests or the formatter, install the development dependencies
(pytest, pytest-cov, black, autoflake) instead:
pip install -r requirements-dev.txtRun the game with the standard pygame graphical interface:
python src/ophidian.pyRun the game with a text-based terminal interface:
python src/ophidian.py --text-uiThe text-based UI is perfect for:
- Environments where graphical display is not available
- Running the game over SSH
- Low-resource systems
- Terminal enthusiasts
Most of what spawns on the board is food, which grows the ophidian by one segment. The rest are power-ups, which grant a temporary effect instead of growing you:
| Power-up | Effect | Duration | Chance per pickup |
|---|---|---|---|
| Speed Boost | the ophidian moves twice as fast | 5s | 15% |
| Invincibility | collisions with your own body no longer end the run | 3s | 5% |
| Score Multiplier | food is worth double points | 10s | 15% |
Whatever is currently running is listed on the HUD with its remaining time, in both UIs. In the text UI, power-ups appear on the grid as their own symbol and are listed in the legend beneath it.
Points are banked as they are earned, one award per piece of food eaten. An award is
worth a flat 10 points plus one point per percent of the grid the ophidian already
fills, so bites get more valuable as the board fills up. While the Score Multiplier
runs, each award is doubled — points earned before it are left alone, and points
earned after it expires go back to normal. Both UIs mark the score with (x2) for
as long as the multiplier lasts.
Note that the score resets at the start of each level, alongside the board.
| Key | Action |
|---|---|
| w / ↑ | move up |
| a / ← | move left |
| s / ↓ | move down |
| d / → | move right |
| f11 | fullscreen (graphical UI only) |
| l | toggle tick speed limit |
| c | cycle selected cosmetic skin |
| p | open the upgrade shop |
| r | restart |
| q | quit |
You can find the support discord server here.
| Name | Main Contributions |
|---|---|
| Daniel Stephenson | Creator |
This project makes use of graphik and py_env_lib.
This project is licensed under the Preponderous Non-Commercial License (Preponderous-NC).
It is free to use, modify, and self-host for non-commercial purposes, but commercial use requires a separate license.
Disclaimer: Preponderous Software is not a legal entity.
All rights to works published under this license are reserved by the copyright holder, Daniel McCoy Stephenson.
Full license text:
https://github.com/Preponderous-Software/preponderous-nc-license/blob/main/LICENSE.md