Compare commits

..

4 Commits

3 changed files with 107 additions and 58 deletions

146
README.md
View File

@@ -1,52 +1,65 @@
# Parasitic God # Parasitic God
![Made With Godot](https://img.shields.io/badge/Made%20With-Godot-478CBF?style=for-the-badge&logo=godot-engine&logoColor=white) ![Made With Godot](https://img.shields.io/badge/Made%20With-Godot-478CBF?style=for-the-badge&logo=godot-engine&logoColor=white)
![Lines of Code](https://tokei.rs/b1/github/GKaszewski/parasitic-god?style=for-the-badge&category=code) ![Lines of Code](https://tokei.rs/b1/github/GKaszewski/parasitic-god?style=for-the-badge&category=code)
![Last Commit](https://img.shields.io/github/last-commit/GKaszewski/parasitic-god?style=for-the-badge) ![Last Commit](https://img.shields.io/github/last-commit/GKaszewski/parasitic-god?style=for-the-badge)
![Stars](https://img.shields.io/github/stars/GKaszewski/parasitic-god?style=for-the-badge) ![Stars](https://img.shields.io/github/stars/GKaszewski/parasitic-god?style=for-the-badge)
---
## The Concept ## The Concept
You are a nascent god, tethered to a small tribe of followers on a vibrant, living world. Their worship is your lifeblood, their growth your only purpose. You grant them miracles, blessing them with bountiful harvests and inspiring great works. You are a nascent god, tethered to a small tribe of followers on a vibrant, living world. Their worship is your lifeblood, their growth your only purpose. You grant them miracles, blessing them with bountiful harvests and inspiring great works.
But your power comes at a cost. Every miracle that nurtures your civilization also poisons the planet. The soil turns barren, the forests wither, and the sky darkens. You are their savior and their apocalypse. But your power comes at a cost. Every miracle that nurtures your civilization also poisons the planet. The soil turns barren, the forests wither, and the sky darkens. You are their savior and their apocalypse.
---
## The Mission ## The Mission
Guide your people from a simple tribe to a star-faring civilization capable of escaping the dying world. Manage your resources **Faith**, **Followers**, and **Production** while trying to keep the planet's ever-rising **Corruption** at bay. Guide your people from a simple tribe to a star-faring civilization capable of escaping the dying world. Manage your resources **Faith**, **Followers**, and **Production** while trying to keep the planet's ever-rising **Corruption** at bay.
Unlock new ages of technology, build a network of cities, and perform the final, desperate miracle to launch your followers into the stars before you consume everything. Unlock new ages of technology, build a network of cities, and perform the final, desperate miracle to launch your followers into the stars before you consume everything.
---
## Features ## Features
* **Exponential Growth**
- **Exponential Growth**
Watch a handful of followers grow into a massive civilization with huts, cities, and procedural road networks. Watch a handful of followers grow into a massive civilization with huts, cities, and procedural road networks.
* **A World That Reacts** - **A World That Reacts**
See the direct consequences of your actions as the vibrant globe fades to a corrupted wasteland and forests vanish based on your decisions. See the direct consequences of your actions as the vibrant globe fades to a corrupted wasteland and forests vanish based on your decisions.
* **Deeply Moddable** - **Deeply Moddable**
The entire game from miracles and their effects to the visual tiers of your civilization is driven by simple JSON files. If you can edit a text file, you can mod this game. The entire gamefrom miracles and their effects to the visual tiers of your civilizationis driven by simple JSON files. If you can edit a text file, you can mod this game.
* **Strategic Resource Management** - **Strategic Resource Management**
Balance the generation of multiple resources and make difficult choices. Will you sacrifice followers to purge corruption, or push for industrial growth at any cost? Balance the generation of multiple resources and make difficult choices. Will you sacrifice followers to purge corruption, or push for industrial growth at any cost?
---
## Modding Your Universe ## Modding Your Universe
This game was built from the ground up to be modified. You can add new miracles, change existing ones, and even define new visual tiers for your civilization. This game was built from the ground up to be modified. You can add new miracles, create random events, and even define new visual tiers for your civilization.
### Finding the Mods Folder ### Finding the Mods Folder
First, you need to find the game's `user data` directory. The game will create a `Mods` folder here on its first launch. The game creates a `Mods` folder in its user data directory on first launch:
* **Windows:** `%APPDATA%\Godot\app_userdata\ParasiticGod\Mods\` - **Windows:** `%APPDATA%\Godot\app_userdata\ParasiticGod\Mods\`
* **macOS:** `~/Library/Application Support/Godot/app_userdata/ParasiticGod/Mods/` - **macOS:** `~/Library/Application Support/Godot/app_userdata/ParasiticGod/Mods/`
* **Linux:** `~/.local/share/godot/app_userdata/ParasiticGod/Mods/` - **Linux:** `~/.local/share/godot/app_userdata/ParasiticGod/Mods/`
Inside, you'll find two folders: `Miracles` and `Tiers`. Inside, you'll find three folders: `Miracles`, `Tiers`, and `Events`.
The game also loads a set of base mods from its installation directory (`res://Mods`). Any files you place in the user folder will be added to or override the base game's content.
---
### Creating a New Miracle ### Creating a New Miracle
To add a new miracle, simply create a new `.json` file in the `Mods/Miracles` folder. The filename will be its unique **ID** (e.g., `my_cool_miracle.json`). To add a new miracle, create a JSON file in `Mods/Miracles`.
The filename becomes its unique **ID** (e.g., `my_cool_miracle.json`):
Here is a template with all available fields:
```json ```json
{ {
@@ -55,7 +68,7 @@ Here is a template with all available fields:
"followersRequired": 50, "followersRequired": 50,
"productionRequired": 0, "productionRequired": 0,
"unlockedByDefault": true, "unlockedByDefault": true,
"advancesToAge": "", "advancesToAge": "The Cool Age",
"effects": [ "effects": [
{ {
"type": "AddResource", "type": "AddResource",
@@ -64,28 +77,46 @@ Here is a template with all available fields:
} }
] ]
} }
````
---
### Creating a New Event
To add a new random event, create a JSON file in `Mods/Events`:
```json
{
"id": "event_my_event",
"title": "A Thing Happened!",
"description": "Something unexpected occurred. What will you do?",
"meanTimeToHappen": 120,
"trigger": {
"minFollowers": 100,
"maxCorruption": 50
},
"options": [
{
"text": "Do the thing!",
"tooltip": "Gain 50 Production.",
"effects": [
{
"type": "AddResource",
"targetResource": "Production",
"value": 50
}
]
}
]
}
``` ```
### Available Effect Types ---
This is the core of the modding system. Each miracle can have one or more effects. ### Modifying Visual Tiers
| Type | Description | Parameters | You can change the visual progression of followers, huts, and temples by editing the files in `Mods/Tiers`.
| :--- | :--- | :--- | The format is a list of tiers, sorted by threshold:
| **`AddResource`** | Adds or subtracts from a core stat. | `targetResource` (Stat), `value` (number) |
| **`ConvertResource`** | Trades one resource for another. | `fromResource` (Stat), `fromAmount` (number), `toResource` (Stat), `toAmount` (number) |
| **`ModifyStat`** | Permanently changes a passive stat. | `targetStat` (Stat), `op` ("Add" or "Multiply"), `value` (number) |
| **`ApplyBuff`** | Applies a temporary multiplier. | `targetStat` (Stat), `multiplier` (number), `duration` (seconds) |
| **`UnlockMiracle`** | Unlocks other miracles. | `miraclesToUnlock` (list of miracle IDs) |
| **`DestroySelf`** | Removes the miracle's button after use. | (No parameters) |
**Valid Stat Names:** `Faith`, `Followers`, `Corruption`, `Production`, `ProductionPerSecond`, `CorruptionPerSecond`, `FaithPerFollower`.
### Modifying Tiers
You can change the progression of visuals like followers and huts by editing the files in `Mods/Tiers`. For example, to change when followers get new looks, edit `follower_tiers.json`.
The format is a list of tiers, sorted by their threshold.
```json ```json
{ {
@@ -93,37 +124,54 @@ The format is a list of tiers, sorted by their threshold.
{ {
"tierEnum": "Tier1", "tierEnum": "Tier1",
"threshold": 0, "threshold": 0,
"scenePath": "res://Scenes/Followers/followers_tier_1.tscn" "imagePath": "user://Mods/Tiers/Huts/my_custom_hut.png",
}, "scale": { "x": 1.0, "y": 1.0 }
{
"tierEnum": "Tier2",
"threshold": 200,
"scenePath": "res://Scenes/Followers/followers_tier_2.tscn"
} }
] ]
} }
``` ```
* **`tierEnum`**: Must be one of `Tier1`, `Tier2`, `Tier3`, `Tier4`, `Tier5`. * **tierEnum**: Must be one of `Tier1` through `Tier10`.
* **`threshold`**: The number of followers (or other stat) needed to unlock this visual. * **threshold**: The number of followers needed to unlock this visual.
* **`scenePath`**: The path to the Godot scene (`.tscn`) to display for this tier. You can even point to your own custom scenes if you're an advanced modder\! * **imagePath**: The path to the image file. Use `user://` for mods or `res://` for base assets.
* **scale**: Optional X/Y scale multiplier for the image.
----- ---
## 📊 Project Stats ### Available Effect Types
📦 **Lines of Code:**
Both miracles and event options use this list of effects:
| Type | Description | Parameters |
| ------------------- | ----------------------------------- | ---------------------------------------------------------- |
| **AddResource** | Adds or subtracts from a core stat. | `targetResource` (Stat), `value` (number) |
| **ConvertResource** | Trades one resource for another. | `fromResource`, `fromAmount`, `toResource`, `toAmount` |
| **ModifyStat** | Permanently changes a passive stat. | `targetStat`, `op` ("Add" or "Multiply"), `value` |
| **ApplyBuff** | Applies a temporary multiplier. | `buffId`, `targetStat`, `multiplier`, `duration` (seconds) |
| **UnlockMiracle** | Unlocks other miracles. | `miraclesToUnlock` (list of IDs) |
| **DestroySelf** | Removes the miracle's button. | (No parameters) |
| **Win** | Triggers the game's win condition. | (No parameters) |
**Valid Stat Names:**
`Faith`, `Followers`, `Corruption`, `Production`, `ProductionPerSecond`, `CorruptionPerSecond`, `FollowersPerSecond`, `FaithPerFollower`, `ProductionPerFollower`
---
## Project Stats
**Lines of Code:**
![Lines of code](https://tokei.rs/b1/github/GKaszewski/parasitic-god) ![Lines of code](https://tokei.rs/b1/github/GKaszewski/parasitic-god)
📈 **Repo Activity:** **Repo Activity:**
![Commit activity](https://img.shields.io/github/commit-activity/m/GKaszewski/parasitic-god) ![Commit activity](https://img.shields.io/github/commit-activity/m/GKaszewski/parasitic-god)
--- ---
## License ## License
This project is open source. See the [LICENSE](https://www.google.com/search?q=./LICENSE) file for details. This project is open source. See the [LICENSE](./LICENSE.txt) file for details.
----- ---
## Contributing ## Contributing
@@ -131,4 +179,4 @@ While the core code is complete for the jam, you can help by:
* Reporting bugs or balance issues. * Reporting bugs or balance issues.
* Creating cool new miracles and sharing them. * Creating cool new miracles and sharing them.
* Spreading the word\! * Spreading the word!

View File

@@ -3,13 +3,13 @@
name="Linux" name="Linux"
platform="Linux" platform="Linux"
runnable=true runnable=true
advanced_options=true advanced_options=false
dedicated_server=false dedicated_server=false
custom_features="" custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="Builds/parasitic-god.x86_64" export_path="Builds/linux/parasitic-god.x86_64"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
@@ -54,7 +54,7 @@ custom_features=""
export_filter="all_resources" export_filter="all_resources"
include_filter="" include_filter=""
exclude_filter="" exclude_filter=""
export_path="" export_path="Builds/windows/parasitic-god.exe"
patches=PackedStringArray() patches=PackedStringArray()
encryption_include_filters="" encryption_include_filters=""
encryption_exclude_filters="" encryption_exclude_filters=""
@@ -67,8 +67,8 @@ script_export_mode=2
custom_template/debug="" custom_template/debug=""
custom_template/release="" custom_template/release=""
debug/export_console_wrapper=1 debug/export_console_wrapper=0
binary_format/embed_pck=false binary_format/embed_pck=true
texture_format/s3tc_bptc=true texture_format/s3tc_bptc=true
texture_format/etc2_astc=false texture_format/etc2_astc=false
binary_format/architecture="x86_64" binary_format/architecture="x86_64"
@@ -79,13 +79,13 @@ codesign/digest_algorithm=1
codesign/description="" codesign/description=""
codesign/custom_options=PackedStringArray() codesign/custom_options=PackedStringArray()
application/modify_resources=true application/modify_resources=true
application/icon="" application/icon="uid://d2wi2cs20q2b6"
application/console_wrapper_icon="" application/console_wrapper_icon=""
application/icon_interpolation=4 application/icon_interpolation=4
application/file_version="" application/file_version=""
application/product_version="" application/product_version=""
application/company_name="" application/company_name="KaszoSoft"
application/product_name="" application/product_name="Parasitic God"
application/file_description="" application/file_description=""
application/copyright="" application/copyright=""
application/trademarks="" application/trademarks=""
@@ -110,5 +110,5 @@ ssh_remote_deploy/cleanup_script="Stop-ScheduledTask -TaskName godot_remote_debu
Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue Unregister-ScheduledTask -TaskName godot_remote_debug -Confirm:$false -ErrorAction:SilentlyContinue
Remove-Item -Recurse -Force '{temp_dir}'" Remove-Item -Recurse -Force '{temp_dir}'"
dotnet/include_scripts_content=false dotnet/include_scripts_content=false
dotnet/include_debug_symbols=true dotnet/include_debug_symbols=false
dotnet/embed_build_outputs=false dotnet/embed_build_outputs=false

View File

@@ -11,6 +11,7 @@ config_version=5
[application] [application]
config/name="Parasitic God" config/name="Parasitic God"
config/version="1.0"
run/main_scene="uid://cmhvni5njpmee" run/main_scene="uid://cmhvni5njpmee"
config/features=PackedStringArray("4.4", "C#", "GL Compatibility") config/features=PackedStringArray("4.4", "C#", "GL Compatibility")
boot_splash/show_image=false boot_splash/show_image=false