{
  "added_at": "2026-10-18",
  "additional_evidence_urls": [
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/docs/ENGINE.md",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/docs/ARCHITECTURE.md",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/Cargo.toml",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/rust-toolchain.toml",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/LICENSE",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/src/assets/exe.rs",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/src/assets/mod.rs",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/src/engine/mod.rs",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/src/engine/config.rs",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/src/engine/rng.rs",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/examples/snapshot.rs",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/.github/workflows/ci.yml",
    "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/CHANGELOG.md"
  ],
  "category": "community-case-studies",
  "description_en": "Reconstructs the Johnny Castaway screensaver engine in Rust, with author-disclosed REA and Claude Code use. It reads original files to run recovered animation scripts and calendar-based story state on modern desktops; documented deviations and limited tests stop short of complete behavioral equivalence.",
  "description_zh": "以 Rust 重建 Johnny Castaway 屏幕保护程序引擎，作者明确披露使用 REA 与 Claude Code。它读取原始文件，在现代桌面上运行恢复的动画脚本及按日历推进的故事状态；文档保留实现差异与有限测试范围，未确立完整行为等价。",
  "entry_url": "https://awesomerea.org/resources/open-scrantic-screensaver-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/open-scrantic-screensaver-case/",
  "evidence_url": "https://github.com/glauberlima/open-scrantic/blob/2db75008931eb744f79d0c3fb12e0d89950466ff/README.md",
  "group": "rea",
  "id": "open-scrantic-screensaver-case",
  "json_url": "https://awesomerea.org/resources/open-scrantic-screensaver-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/open-scrantic-screensaver-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/open-scrantic-screensaver-case/index.md",
  "name": "Open Scrantic: reconstructing the Johnny Castaway screensaver engine",
  "name_zh": "Open Scrantic：重建 Johnny Castaway 屏幕保护程序引擎",
  "record_type": "resource",
  "relationship": "community-reported-mixed-workflow",
  "requirement_facets": [
    "scope",
    "prerequisites",
    "prerequisites",
    "limits",
    "testing",
    "license"
  ],
  "requirements": [
    "Reviewed at v0.3.0: this is a Windows 3.1 screensaver-engine reconstruction, not a game port. The author reports recovering formats and TTM/ADS script semantics from disassembly, with human-directed REA/Claude Code work and comparisons against the original.",
    "Builds pin Rust 1.99.1; Cargo declares minimum Rust 1.99 and edition 2024. The project targets Windows, macOS and Linux using winit, softbuffer and rodio. Linux builds also require ALSA development headers and pkg-config.",
    "Runtime requires separately obtained SCRANTIC.SCR, RESOURCE.MAP and RESOURCE.001 beside the executable. README sizes and SHA-256 values identify the expected original files; the loader instead checks known executable strings/layout, not whole-file hashes. Arbitrary original builds are unsupported. Options and story state use SCRANTIC.INI, saved on normal exit.",
    "Deliberate differences include full-frame redraw, potentially one-pixel line/ellipse differences, bounded final-scene selection and a fixed two-second title display. Optional dedithering and softened audio default off. The original settings dialog and password feature are absent, as are unused animated-palette, 256-color and ADS-variable features.",
    "The headless test runs 6,000 steps and requires three completed scenes, without original-frame comparison. Data-dependent tests silently return when OPEN_SCRANTIC_DATA is unset; other tests cover parsing and arithmetic. CI checks formatting, lint, three-platform builds and --version, not cargo test or original-data playback. Snapshot output supports inspection, not an automated original-output oracle.",
    "MIT covers project source, not original executable content, art, scripts or sounds, which users must supply with appropriate authorization. The author describes independent, non-commercial interoperability without Sierra/Dynamix endorsement."
  ],
  "requirements_zh": [
    "审阅版本为 v0.3.0：这是 Windows 3.1 屏幕保护程序引擎重建，并非游戏移植。作者报告通过反汇编恢复格式及 TTM/ADS 脚本语义，由人工指导 REA／Claude Code 工作并对照原版检查。",
    "构建固定使用 Rust 1.99.1；Cargo 声明最低 Rust 1.99 和 edition 2024。项目借助 winit、softbuffer 和 rodio 面向 Windows、macOS 和 Linux。Linux 构建还需 ALSA 开发头文件及 pkg-config。",
    "运行时需将另行取得的 SCRANTIC.SCR、RESOURCE.MAP 和 RESOURCE.001 放在可执行文件旁。README 中的大小和 SHA-256 标识预期的原始文件；加载器实际检查已知程序字符串／布局，而非整文件哈希。不支持任意原版构建。选项与故事状态存放在 SCRANTIC.INI 中，正常退出时保存。",
    "刻意差异包括全帧重绘、线条／椭圆可能相差一个像素、结尾场景选择次数上限，以及固定两秒的标题显示。可选的去抖色和柔化音频默认关闭。未实现原设置对话框和密码功能，也未实现此屏保未使用的动态调色板、256 色及 ADS 变量功能。",
    "无界面测试运行 6,000 步并要求完成三个场景，不与原版画面比较。未设置 OPEN_SCRANTIC_DATA 时，依赖数据的测试直接返回、不作检查；其他测试覆盖解析和运算。CI 检查格式、lint、三平台构建及 --version，不运行 cargo test 或原始数据播放。快照输出用于检查，不是自动对照原版的验证器。",
    "MIT 覆盖项目源码，不覆盖原可执行文件内容、美术、脚本或声音；使用者须取得适当授权后自行提供这些内容。作者将其描述为独立、非商业的互操作项目，未获 Sierra／Dynamix 背书。"
  ],
  "targets": [
    "app"
  ],
  "url": "https://github.com/glauberlima/open-scrantic",
  "verification": "source-reviewed",
  "verified_at": "2026-10-18"
}
