Categories
contributions

GSoC 2026: Director Engine and Visual Debugger

Hi, I am Ramyak. My work centered on the Macromedia Director preservation effort in ScummVM: extending the ImGui-based visual debugger (DT), fixing engine compatibility bugs surfaced by the Gus games, implementing embedded movie cast members, and building screenshot-diff tooling into the ScummVM buildbot. All links below point to the pull requests.

Please refer to the links at the end of this post for weekly breakdowns.

Key deliverables

  • Movie cast members (#7752):
    embedded Director movies that run as parallel sprites, managing separate execution states while sharing global variables.
  • Lingo execution tracer (#7816):
    a flamegraph view inside the debugger that records Lingo execution for performance and control-flow analysis.

  • ImageDiff on buildbot:
    brought screenshot-diff regression testing into the ScummVM buildbot dashboard, plus a set of Director regression test movies, so rendering changes can be caught visually.
pic of the tool from dev chat
  • Gus games compatibility:
    detection entries and a series of engine fixes (film loops, mouse dispatch, digital video, sound channels) that make the Gus titles playable.
movie paused at a breakpoint

Before the coding period I made around 10 contributions building the initial Director visual debugger and fixing film loop rendering, which laid the groundwork for the GSoC work.

Director visual debugger (DT)

  • #7553 Fix bugs and crashes throughout the visual debugger
  • #7564 Improve search and add a Windows panel
  • #7577 Improve cast details, add script browser navigation and keyboard shortcuts
  • #7612 Fix script not rendering in the script viewer
  • #7646 Fix crashes, stale state, and navigation in the debugger
  • #7690 Call-stack highlighting, Cast window improvements, and paused redraw
  • #7781 ImGui debugger improvements (sortable cast lists, thumbnail refreshing)
  • #7816 Add a Lingo execution tracer that records execution as a flamegraph (in review)

Director engine fixes and features

  • #7563 Fix empty cast slot error and immediate sprite drag in D4+
  • #7598 Add detection entries for Gus Goes to Cyberopolis (Windows and Mac)
  • #7614 Add detection entry for Gus Goes to Cybertown
  • #7620 Fix film loop shift when swapping a cast member with Lingo
  • #7633 Fix mouseUp dispatching to the wrong sprite in D4
  • #7727 Fix film loop D4 and D5+ behavior (freeze during pauses)
  • #7752 Implement movie cast members as parallel interactive movies
  • #7780 Fix trail-sprite erasure and 0x0 digital-video sizing
  • #7825 Share sound channels across the Stage and MIAWs (in review)
  • #7854 Fix Lingo point/rect operations and bitmap picture assignment (in review)

Backend

  • #7779 BACKENDS: SDL: Preserve SDL text input for active ImGui text fields

ImageDiff and buildbot infrastructure (scummvm-sites)

  • #39 Integrate the ImageDiff screenshot diff viewer
  • #40 Add pagination and default to the last page
  • #41 Replace image comparison with a file check
  • #42 Add ImageDiff integration using the wsgi-dashboards plugin
  • #43 Fix imports after merging imagediff.py into main.py

Director regression test movies (director-tests)

  • #4 D4-win: Text wrapping test movie with reference rendering
  • #5 D4 test movies for mouseUp dispatch and text wrapping
  • #7 D4-win/D5-win: clickOn manual test movie in both D4 and D5

Timeline

  • May 2026: Community bonding, Introduction
  • Jun to Jul 2026 (Weeks 1 2 3 4 5 6)
    Debugger fixes, Gus game compatibility, ImageDiff on buildbot; midterm passed mid-July.
  • Jul to Aug 2026 (Weeks 7 8 9 10 11 12)
    Movie cast members, film loop behavior, Lingo execution tracer, final polish