diff --git a/.github/ISSUE_TEMPLATE/asset-problem.yml b/.github/ISSUE_TEMPLATE/asset-problem.yml new file mode 100644 index 0000000..f86d0ba --- /dev/null +++ b/.github/ISSUE_TEMPLATE/asset-problem.yml @@ -0,0 +1,48 @@ +name: Asset problem +description: Report a broken file, visual defect, import issue, or gallery problem. +title: "[Asset]: " +labels: [bug] +body: + - type: markdown + attributes: + value: Thanks for helping keep the ShadowPets pack game-ready. Please identify the exact pet and file whenever possible. + - type: dropdown + id: area + attributes: + label: Area + options: + - Static PNG + - Animation PNG frames + - Animated GIF + - Packed sprite sheet + - Motion Lab website + - Release ZIP or checksum + - Documentation or license + validations: + required: true + - type: input + id: asset + attributes: + label: Pet or file path + placeholder: ShadowPets/Luna.png or ShadowPets/Animations/Luna/greet.gif + - type: textarea + id: problem + attributes: + label: What happened? + description: Include the engine/browser, import settings, expected result, and actual result. + validations: + required: true + - type: textarea + id: evidence + attributes: + label: Screenshot or minimal reproduction + description: Drag in a screenshot, project snippet, or steps that reproduce the problem. + - type: checkboxes + id: checks + attributes: + label: Quick checks + options: + - label: I checked the live Motion Lab and the problem is still present. + required: true + - label: I searched existing issues for the same problem. + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..a6769b3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: false +contact_links: + - name: Preview the complete pack + url: https://throwingogo-hub.github.io/DigitalPets/ + about: Check all 30 loops and three backdrop modes before reporting a visual issue. + - name: Reuse and attribution guide + url: https://github.com/throwingogo-hub/DigitalPets/blob/main/LICENSE-ASSETS.md + about: See what CC BY 4.0 allows and copy the practical credit text. diff --git a/.github/ISSUE_TEMPLATE/pet-request.yml b/.github/ISSUE_TEMPLATE/pet-request.yml new file mode 100644 index 0000000..50f3242 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/pet-request.yml @@ -0,0 +1,31 @@ +name: New pet request +description: Propose a species or a small, reusable animation for a future pack update. +title: "[Request]: " +labels: [enhancement] +body: + - type: input + id: species + attributes: + label: Species or motion + placeholder: Moth companion or sleep loop + validations: + required: true + - type: textarea + id: use + attributes: + label: Where would this be useful? + description: Describe the game/UI context and why the existing ten pets or three motions do not cover it. + validations: + required: true + - type: textarea + id: constraints + attributes: + label: Silhouette or motion constraints + description: Note readability, anatomy, loop, or engine constraints—not a redesign of the shared ShadowPets style. + - type: checkboxes + id: license + attributes: + label: Licensing + options: + - label: I understand accepted visual contributions must be releasable under CC BY 4.0. + required: true diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..8167657 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,15 @@ +## What changed + + + +## Validation + +- [ ] I ran `python tools/validate_assets.py --check-rebuild --check-package`. +- [ ] The Motion Lab still works at narrow and wide viewport sizes. +- [ ] I did not regenerate or rewrite approved pet art unintentionally. +- [ ] New visual work can be released under CC BY 4.0; code/docs can be released under MIT. +- [ ] Counts, import guidance, license text, and screenshots are updated if the public pack changed. + +## Visual evidence + + diff --git a/.github/workflows/assets.yml b/.github/workflows/assets.yml new file mode 100644 index 0000000..fe0fd1e --- /dev/null +++ b/.github/workflows/assets.yml @@ -0,0 +1,36 @@ +name: Asset checks + +on: + push: + branches: [main] + pull_request: + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: asset-checks-${{ github.ref }} + cancel-in-progress: true + +jobs: + validate: + name: Validate pack and deterministic release + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Check out repository + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + cache-dependency-path: requirements-dev.txt + + - name: Install validator dependencies + run: python -m pip install -r requirements-dev.txt + + - name: Validate assets, site, rebuild, and package + run: python tools/validate_assets.py --check-rebuild --check-package diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..1778bb1 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,45 @@ +name: Publish asset pack + +on: + push: + tags: + - "v*" + +permissions: + contents: write + +jobs: + release: + name: Verify and attach ShadowPets.zip + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Check out tagged source + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: pip + cache-dependency-path: requirements-dev.txt + + - name: Install validator dependencies + run: python -m pip install -r requirements-dev.txt + + - name: Validate tagged pack + run: python tools/validate_assets.py --check-rebuild --check-package + + - name: Build deterministic release files + run: python tools/package_release.py --output dist + + - name: Create release or replace its assets + env: + GH_TOKEN: ${{ github.token }} + RELEASE_TAG: ${{ github.ref_name }} + run: | + if gh release view "$RELEASE_TAG" >/dev/null 2>&1; then + gh release upload "$RELEASE_TAG" dist/ShadowPets.zip dist/ShadowPets.zip.sha256 --clobber + else + gh release create "$RELEASE_TAG" dist/ShadowPets.zip dist/ShadowPets.zip.sha256 --generate-notes --title "ShadowPets $RELEASE_TAG" + fi diff --git a/.gitignore b/.gitignore index c5eb462..7182a53 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ tmp/ .DS_Store +dist/ +__pycache__/ diff --git a/ATTRIBUTION.md b/ATTRIBUTION.md new file mode 100644 index 0000000..cb19465 --- /dev/null +++ b/ATTRIBUTION.md @@ -0,0 +1,12 @@ +# Attribution + +Copy this line into your game's credits, README, or asset-credits file: + +> ShadowPets by throwingogo-hub — https://github.com/throwingogo-hub/DigitalPets — licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). + +If you changed the artwork, say so. For example: + +> Based on ShadowPets by throwingogo-hub — https://github.com/throwingogo-hub/DigitalPets — modified by Example Studio, licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). + +See [`LICENSE-ASSETS.md`](LICENSE-ASSETS.md) for the full scope and practical +reuse guidance. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..1df18b4 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,26 @@ +# Contributing to ShadowPets + +Bug reports, import notes, and focused fixes are welcome. Use the asset-problem +issue form for a broken sprite, loop, packed sheet, gallery interaction, release +archive, or documentation link. Use the request form for a future species or +motion with a concrete game use case. + +## Before opening a pull request + +1. Install the pinned developer dependency with + `python3 -m pip install -r requirements-dev.txt`. +2. Keep the ten approved static sprites and their animation art unchanged unless + the issue explicitly calls for a reviewed visual correction. +3. Run `python3 tools/validate_assets.py --check-rebuild --check-package`. +4. Open `index.html` through a local static server and check the affected + interaction at phone and desktop widths. + +The validator rebuilds derived animations and release archives in temporary +directories. It compares bytes without mutating tracked visual assets. + +## Licensing contributions + +By contributing code or documentation, you agree that it may be distributed +under the repository's MIT License. Only submit original visual work you have +the right to license under CC BY 4.0, because accepted ShadowPets visual assets +are distributed under that license. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f71b10e --- /dev/null +++ b/LICENSE @@ -0,0 +1,43 @@ +ShadowPets is offered under two licenses, depending on what you use. + +Visual assets +------------- + +All image assets in ShadowPets/ and social-preview.png are licensed under the +Creative Commons Attribution 4.0 International license (CC BY 4.0): + +https://creativecommons.org/licenses/by/4.0/ + +This includes the ten static pet PNGs, animation frames, GIFs, packed sheets, +and preserved source sheets. You may copy, modify, and use these assets in +commercial or non-commercial games and projects, provided you give appropriate +credit. See LICENSE-ASSETS.md for the exact scope and practical attribution. + +Code and documentation +---------------------- + +All source code, automation, gallery HTML/CSS/JavaScript, workflows, templates, +and documentation in this repository are licensed under the MIT License below. +The MIT License does not replace the CC BY 4.0 terms for the visual assets. + +MIT License + +Copyright (c) 2026 throwingogo-hub + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/LICENSE-ASSETS.md b/LICENSE-ASSETS.md new file mode 100644 index 0000000..424cf6e --- /dev/null +++ b/LICENSE-ASSETS.md @@ -0,0 +1,43 @@ +# ShadowPets asset license + +Copyright © 2026 throwingogo-hub. + +The ShadowPets visual assets are licensed under the [Creative Commons +Attribution 4.0 International license][cc-by-4.0] (CC BY 4.0). + +## Exact scope + +CC BY 4.0 applies to: + +- every image under `ShadowPets/`, including the ten static PNGs; +- every animation frame, GIF, packed sheet, and preserved source sheet; and +- `social-preview.png`, which is a composition of the same artwork. + +It does not apply to code, automation, the gallery, workflows, templates, or +documentation. Those files use the MIT License in [`LICENSE`](LICENSE). + +## What you may do + +You may use, copy, share, remix, adapt, and build upon the visual assets in +commercial or non-commercial games and projects. You must give appropriate +credit, link to the license, and indicate if you changed the assets. You may +not add legal or technical restrictions that prevent others from exercising +the rights the license grants them. + +## Copy-and-paste attribution + +Unmodified assets: + +> ShadowPets by throwingogo-hub — https://github.com/throwingogo-hub/DigitalPets — licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). + +Modified assets: + +> Based on ShadowPets by throwingogo-hub — https://github.com/throwingogo-hub/DigitalPets — modified by [YOUR NAME], licensed under CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). + +Put the credit wherever your project normally keeps asset credits: an in-game +credits screen, README, documentation page, or accompanying credits file. + +This summary does not replace the [CC BY 4.0 legal code][legal-code]. + +[cc-by-4.0]: https://creativecommons.org/licenses/by/4.0/ +[legal-code]: https://creativecommons.org/licenses/by/4.0/legalcode diff --git a/README.md b/README.md index 31c70db..9036410 100644 --- a/README.md +++ b/README.md @@ -1,93 +1,128 @@ -# DigitalPets 🐾 +# ShadowPets -**ShadowPets** — a collection of ten pixel-art companions. +Ten night-black pixel-art companions, ready to drop into a game: **10 static +sprites, 90 PNG frames, 30 GIFs, and 10 packed sprite sheets**. -**[Open the live animation preview →](https://throwingogo-hub.github.io/DigitalPets/)** +[**Explore the Motion Lab**](https://throwingogo-hub.github.io/DigitalPets/) · +[**Download `ShadowPets.zip`**](https://github.com/throwingogo-hub/DigitalPets/releases/latest/download/ShadowPets.zip) · +[Verify the SHA-256](https://github.com/throwingogo-hub/DigitalPets/releases/latest/download/ShadowPets.zip.sha256) · +[Read the asset license](LICENSE-ASSETS.md) -Each one is a small black creature in a dark hoodie with a blue **T** on the -chest and big, bright eyes. They're named after constellations and the things -you find in a night sky. + -
![]() Felis cat |
- ![]() Corvus crow |
- ![]() Vesper fox |
- ![]() Luna owl |
- ![]() Ursa bear cub |
-
![]() Lupus wolf pup |
- ![]() Draco dragon |
- ![]() Comet bunny |
- ![]() Nova axolotl |
- ![]() Frost penguin |
-
![]() Felis |
- ![]() Corvus |
- ![]() Vesper |
- ![]() Luna |
- ![]() Ursa |
+ ![]() Felis cat |
+ ![]() Corvus crow |
+ ![]() Vesper fox |
+ ![]() Luna owl |
+ ![]() Ursa bear cub |
![]() Lupus |
- ![]() Draco |
- ![]() Comet |
- ![]() Nova |
- ![]() Frost |
+ ![]() Lupus wolf pup |
+ ![]() Draco dragon |
+ ![]() Comet bunny |
+ ![]() Nova axolotl |
+ ![]() Frost penguin |