Files
Ferrous-Solitaire/CREDITS.md
T
funman300 fd7fb7b6da docs: add CREDITS.md and link from README
Lists the project's third-party assets and major dependencies with
their licenses for v1 release readiness:
- xCards @2x card artwork and back_0 (LGPL-3.0)
- FiraMono-Medium font (OFL)
- Bevy 0.18, kira 0.12, axum, sqlx, tokio, and the rest of the
  ten most prominent Rust deps (MIT/Apache-2.0 across the board)

Generated assets — card backs 1-4, all backgrounds, and every WAV
file — are credited as original work produced by the project's own
solitaire_assetgen pipeline; the audio synthesis stack and the
absence of any external sample sources are documented.

The README gains a brief Credits section linking to the full list.

Note: the upstream xCards source URL is left as a placeholder pending
confirmation; downstream license obligations are unaffected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 20:36:42 +00:00

108 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Credits
Solitaire Quest is MIT-licensed (see [LICENSE](LICENSE)). It is built on top of
the work of many open-source projects and a small handful of third-party
assets. This file lists every component that ships in the binary or in the
`assets/` directory.
---
## Code & Framework
| Component | License | Role |
|---|---|---|
| [Bevy 0.18](https://bevyengine.org/) | MIT OR Apache-2.0 | Game engine, ECS, rendering, UI |
| [kira 0.12](https://crates.io/crates/kira) | MIT OR Apache-2.0 | Audio playback (mixer, sub-tracks, looping ambient) |
| [serde](https://crates.io/crates/serde) / [serde_json](https://crates.io/crates/serde_json) | MIT OR Apache-2.0 | Serialization for save files and the sync API |
| [tokio](https://crates.io/crates/tokio) | MIT | Async runtime for the sync client and server |
| [axum 0.8](https://crates.io/crates/axum) | MIT | HTTP framework for the self-hosted sync server |
| [sqlx 0.8](https://crates.io/crates/sqlx) | MIT OR Apache-2.0 | Compile-time-checked SQLite access on the server |
| [reqwest 0.13](https://crates.io/crates/reqwest) | MIT OR Apache-2.0 | HTTP client for the sync provider |
| [jsonwebtoken 10](https://crates.io/crates/jsonwebtoken) | MIT | JWT issuance and validation |
| [bcrypt 0.19](https://crates.io/crates/bcrypt) | MIT | Password hashing on the server |
| [keyring 4](https://crates.io/crates/keyring) | MIT OR Apache-2.0 | OS keychain integration for credential storage |
| [tower-governor 0.8](https://crates.io/crates/tower-governor) | MIT | Rate limiting on `/api/auth/*` |
| [chrono](https://crates.io/crates/chrono) | MIT OR Apache-2.0 | Date / time handling |
| [uuid](https://crates.io/crates/uuid) | MIT OR Apache-2.0 | User and session identifiers |
| [thiserror](https://crates.io/crates/thiserror) | MIT OR Apache-2.0 | Error type derive |
| [rand 0.9](https://crates.io/crates/rand) | MIT OR Apache-2.0 | Seeded shuffler in `solitaire_core` |
| [png 0.17](https://crates.io/crates/png) | MIT OR Apache-2.0 | PNG encoder used by `solitaire_assetgen` |
| [ab_glyph 0.2](https://crates.io/crates/ab_glyph) | Apache-2.0 | Glyph rasterization for generated card art |
The full transitive dependency tree (several hundred crates) is captured in
`Cargo.lock` and reachable via `cargo tree`. Every crate brought in is
MIT, Apache-2.0, BSD-style, or a dual-licensed combination thereof — no
copyleft code is statically linked into the game binary.
---
## Assets
### Card artwork
| File(s) | Source | License |
|---|---|---|
| `assets/cards/faces/{RANK}{SUIT}.png` (52 PNGs) | xCards @2x artwork | LGPL-3.0 |
| `assets/cards/backs/back_0.png` (bicycle_blue) | xCards @2x artwork | LGPL-3.0 |
| `assets/cards/backs/back_1.png` `back_4.png` | Original — generated by `solitaire_assetgen::gen_art` | MIT (this project) |
xCards is the playing-card artwork bundle by Huub de Beer, published under the
LGPL-3.0. The art is consumed as unmodified PNG files at runtime; the game
binary statically links no LGPL code, so distribution as a self-contained
binary plus the `assets/` directory satisfies the LGPL's relinking clause.
<!-- TODO: confirm exact upstream URL — likely https://github.com/htdebeer/SVG-cards or the xCards repo it spawned. The orchestrator will fill this in. -->
Upstream source: `[source URL needed]`
### Backgrounds
| File(s) | Source | License |
|---|---|---|
| `assets/backgrounds/bg_0.png` `bg_4.png` | Original — generated by `solitaire_assetgen::gen_art` | MIT (this project) |
### Typography
| File | Source | License |
|---|---|---|
| `assets/fonts/main.ttf` (FiraMono-Medium) | [mozilla/Fira](https://github.com/mozilla/Fira) | SIL Open Font License 1.1 |
The OFL permits redistribution and embedding in software so long as the font
file itself is not sold standalone. The file ships unmodified.
### Audio
All six WAV files in `assets/audio/` are **original work** — there are no
third-party audio samples in this project. They are synthesized
programmatically by `solitaire_assetgen/src/bin/gen_sfx.rs`, which writes
44.1 kHz mono 16-bit PCM WAVs using a hand-rolled WAV writer (no `hound` or
`dasp` dependency). The synthesis stack is entirely additive: sine /
square waves, layered harmonics, deterministic LCG noise, AR envelopes,
and a slow LFO for the ambient track.
| File | Synthesis approach |
|---|---|
| `card_deal.wav` | Filtered LCG noise with a sweeping low-pass cutoff for a "whoosh" |
| `card_flip.wav` | High-passed LCG noise under a fast AR envelope |
| `card_place.wav` | 120 Hz sine body + filtered noise click |
| `card_invalid.wav` | Two dissonant square tones (196 Hz + 207.65 Hz) beating against each other |
| `win_fanfare.wav` | C-major arpeggio (C5 / E5 / G5 / C6) with sine + 2nd harmonic |
| `ambient_loop.wav` | 55 Hz fundamental with 2nd and 3rd harmonics, modulated by a 0.2 Hz LFO; loop length is chosen so the tone and LFO both complete an integer number of cycles for seamless looping |
Audio files are MIT-licensed alongside the rest of this project.
---
## License Summary
- **Project code:** MIT — see [LICENSE](LICENSE).
- **xCards card artwork (52 faces + `back_0.png`):** LGPL-3.0, redistributed
unmodified. The LGPL applies only to those PNG files; it does not extend to
the game binary, which links no LGPL code.
- **FiraMono-Medium font:** SIL Open Font License 1.1, redistributed unmodified.
- **All other assets** (backgrounds, generated card backs, every audio file)
are original work covered by this project's MIT license.
If you redistribute Solitaire Quest, you must ship this `CREDITS.md` and the
`LICENSE` file alongside the binary so the LGPL and OFL notices remain
visible to end users.