Build interactive science stories with object sprites, editable collision boundaries, five object scales, Acts, and a safe visual programming language.
An object-first stage for scientific storytelling
CourtScript combines a block editor, a live two-dimensional stage, and permanent case pages. Every visible sprite is an object with a stable identity, an appearance, a physical scale, a collision boundary, and scale-specific scientific properties.
🎭
Story-first structure
Organize the experience into Acts. Use dialogue, narration, objectives, choices, reveals, title cards, and transitions.
◇
Objects with precise boundaries
Use an appearance-based boundary, ignore transparent PNG pixels automatically, or draw custom vertices and curves that override the default.
⚛
Scale-aware science
Use interpretable SI-unit models across physics and chemistry. Object actions run only on scales where that model is scientifically meaningful.
1PlanChoose the question, characters, and scientific evidence.
2BuildCreate Backstage systems and Act-specific scenes.
3TestRun the live stage and check the science and story flow.
4ReleaseSave, create a stable release, then make the case public.
CourtScript 6 toolbox
The toolbox is organized by creative purpose rather than by a fragile block count. Older block types remain readable when a previous case is opened, but they are not offered in new projects.
Every sprite is a complete object
A sprite object keeps its identity even when its artwork, size, Act, or scientific properties change. Visual size controls how large it appears on the stage; physical scale controls which scientific models can act on it. These are deliberately separate.
◆
Stable identity
Names stay readable for authors, while a permanent object ID keeps blocks, saved data, and future migrations connected safely.
▰
Flexible appearance
Choose a vector shape, a built-in science or courtroom sprite, or upload PNG, JPEG, or WebP artwork. Appearance and collision geometry are edited independently.
⚙
Scale-specific properties
Each object stores separate profiles for subatomic, atomic/molecular, everyday, astronomical, and static behavior. Changing scale does not erase the other profiles.
Collision boundaries that match the artwork
Open Edit collision boundary from the Sprite Object Manager. Choose one collision mode for each object. The stage uses the selected boundary for pointer hits, touching checks, and physical response.
Custom geometry overrides automatic collision
A
AutomaticBuilt-in and vector sprites use their visible shape. Uploaded PNG artwork is traced from visible pixels, so transparent pixels are excluded by default. You can also ignore a blank region connected to the image corners and tune alpha, background, and simplification thresholds.
✦
Custom overrideCombine polygons, Bézier curves, ellipses, rounded rectangles, and capsules. Drag anchors, enter exact coordinates, edit curve handles, and mark parts as holes. When selected, this geometry completely overrides the automatic boundary.
Ø
No collisionThe object stays visible and programmable, but pointer hits, touching checks, and physical collision response ignore it.
Boundary priorityCustom override always wins. Automatic image tracing is used only in Automatic mode; if tracing cannot produce a safe contour, CourtScript falls back to the object's visible appearance rather than inventing an unsafe boundary.
Five object scales, one coherent model
Select the scale represented by the object, not how large it looks on screen. CourtScript then exposes the appropriate property profile and checks every object-targeting science block before it runs.
1SubatomicParticles, quanta, nuclei, charge, spin, decay, and relativistic frames. Temperature and classical rigid-body motion are not assigned to one constituent.2Atomic / molecularAtoms, molecules, bonds, optical media, reactions, microscopic ensembles, and quantum states.3EverydayDaily-life bodies, mechanisms, rays, heat, bulk chemistry, fields, forces, and collisions.4AstronomicalPlanets, stars, orbits, gravity wells, interstellar matter, radiation, decay populations, and relativistic motion.5StaticNo automatic physics or object-targeting science simulation. Story, appearance, sensing, variables, and explicit movement or positioning blocks remain fully programmable.
Unsupported means a true no-op.In strict mode, an incompatible object action does not change the object, start an animation, or create a partial result. CourtScript reports the object, scale, and reason. Pure numerical formula blocks remain available at every scale because they do not act on an object.
Science compatibility by scale
Supported means the branch's object actions run at that scale. Model dependent means only the listed models run there; read the block tooltip before using it.
Compatibility of object-targeting CourtScript science models
Science branch
Subatomic
Atomic / molecular
Everyday
Astronomical
Static
Kinematics
No
Supported
Supported
Supported
No simulation
Electromagnetism
Supported
Supported
Supported
Supported
No simulation
Optics
No
Materials
Supported
Rays
No simulation
Thermodynamics
No
Supported
Supported
Supported
No simulation
Nuclear physics
Supported
Supported
Supported
Supported
No simulation
Astrophysics
No
No
No
Supported
No simulation
Quantum mechanics
Supported
Supported
No
No
No simulation
Relativity
Supported
Supported
Supported
Supported
No simulation
Chemistry
No
Bonds & reactions
Supported
Bulk matter
No simulation
SupportedModel dependentNo object action
Physics and chemistry models
Science reporters calculate explicit equations. Stage actions turn the results into motion, fields, rays, heat exchange, decay, orbital scenes, qubit measurements, relativistic clocks, and chemical reactions.
Model responsibly.CourtScript is an educational stage, not a laboratory instrument. State assumptions, keep units consistent, and explain where a simplified model stops matching the real world.
Build a story with Backstage and Acts
Backstage contains global systems that stay active throughout the case. Every Act is a separate scene-like workspace. Moving to another Act changes the active Act code while Backstage continues to run.
Backstage: global rules+Act I: setup→Act II: investigation→Act III: resolution
💬
Dialogue and narration
Give speakers an emotion, use narration independently of a sprite, and control how long each line remains visible.
⑂
Audience choices
Pause the story for one of two choices and run the matching branch. Choices are local and require no external service.
◎
Objectives and discoveries
Set primary, optional, or hidden objectives. Reveal clues, scientific facts, character secrets, and plot twists.
◈
Cinematic direction
Use story beats, title cards, camera focus, and transitions to make the science feel like part of the drama.
Sprites are not limited to circles.Choose geometric shapes, built-in courtroom and science artwork, or upload your own image. Width, height, opacity, layer, and collision geometry can be controlled separately.
Programming foundations and reusable objects
CourtScript keeps familiar computer-science foundations and adds a bounded object system designed for visual projects.
Events and control
Start, key, click, and message events
Wait, repeat, forever, and conditional flow
Broadcast messages between systems
Logic, operators, and data
Numbers, text, booleans, comparisons, and arithmetic
Project, sprite, and script variables
Lists with add, read, and length operations
Classes and objects
Properties, constructors, methods, and return values
Independent object instances and inheritance
Public, protected, and private access
Per-object events with a payload
Put class definitions in Backstage.Create objects in any Act. Each object stores its own property values, so changing one witness or evidence item does not alter another.
Legacy compatibilityOlder saved projects can still load their original case, scene, character, evidence, jury, media, city, SDG, accessibility, procedure, and pen blocks. Those legacy categories are intentionally hidden from the new-project toolbox.
From working copy to stable release
A new Case Forge session starts blank unless you deliberately load the science-story starter or open an existing case for editing.
1. Establish the world
Name the case, upload a backdrop, create sprites, and add the Acts you need.
2. Build systems and scenes
Place global variables, classes, and reusable systems in Backstage. Put scene-specific actions in each Act.
3. Run and check
Use Preview Act or Run Case, then check that controls, equations, choices, and Act transitions behave as intended.
4. Save and release
Save updates the Latest Dev Copy. Create named Dev Copies for experiments and Stable Releases for versions you trust.
Collaboration lockOnly one contributor can edit a case at a time. Editing activity renews the 15-minute lock, and saving releases it. The case owner can force-remove another contributor's lock when necessary.
Public and private cases use the same editor.A new save is private by default. Change visibility from the case page when you are ready for other people to view and run it.
Safe migration from earlier CourtScript cases
The version 6 migration is additive: it adds object metadata without rewriting the original block workspace or compiled program. Deployment and database migration are separate operations and can be audited before any record is changed.
1. PreserveBlock XML, workspace JSON, programs, Acts, descriptions, and custom fields remain intact. Stable releases, named Dev Copies, history, and challenge snapshots stay immutable.2. EnrichEach former sprite receives a deterministic object ID, Everyday scale, five empty scale profiles, and an automatic collision boundary. Existing display size is not changed.3. ReviewMigrated working copies start in legacy-compatible scale mode. Authors can apply safe scale suggestions, inspect every object, and deliberately enable strict no-op rules when ready.
Accessible creation and playback
CourtScript keeps controls readable, provides visible focus states, supports reduced motion, and gives the live stage a fullscreen mode.
⌨
Keyboard access
Toolbar controls use real buttons, block search is keyboard reachable, and interactive projects can respond to configured keys.
◐
Contrast and focus
Text and controls use high-contrast surfaces, while hover and focus changes are not communicated by colour alone.
⛶
Scalable stage
The stage maintains a 16:9 layout, supports fullscreen, and scales sprite collision dimensions with their visible appearance.
≈
Reduced motion
The interface respects reduced-motion preferences, and authors can avoid unnecessary transitions in their own stories.
Blockly limitationConnecting and rearranging blocks still relies heavily on a visual drag-and-drop workspace. Screen-reader access to complex block connections may remain limited.