Video Game Design and Coding · PLECK lesson
PLECK lesson 103 · suggested week 21, day 3
Offer comfort settings with honest behavior
Objective. Implement two reversible settings and verify their actual effect.
Godot Engine Standard desktop editor 4.7.2-stable, GDScript (Godot 4), Compatibility renderer. Headless Godot 4.7.2.stable.official.ed1daf0bf passed 106 assertions on the supplied scaffolds, including malformed JSON saves. Audio used the Dummy driver and a synthetic WAV, not a speaker. The visual editor, browser export, and signed-in submission were not tested. The desk still does not run a student's own upload.
About 55 minutes. The due date is chosen by a parent.
Text, focus, motion, privacy and evidence-based claims
Suggested pace: Recall and predict 5 min; Read instruction and scaffold 12 min; Build or design the assigned artifact 25 min; Run acceptance tests 8 min; Explain and checkpoint 5 min.
Materials: Godot Standard 4.7.2 desktop editor (GDScript, Compatibility renderer), Local course folder and prior checkpoint, No paid assets or public account required.
Comes after VGC-L102.
Choose two settings appropriate to your game, such as mute, reduced motion, enlarged text or gentle difficulty. Give each a clear label and explanation. The setting must change behavior, not merely an icon. Test on, off and switching during a safe moment. Do not make essential information disappear in a comfort mode. Persisting settings is optional until the save unit; for now describe that they reset when the game restarts if that is what happens.
Worked example
A barrier audit might test whether Tab can reach Restart. The result is a specific supported capability, not a claim that every assistive technology is supported. Scaffold C-AUDIO — Local audio playback with a reversible mute Setup: Create Control AudioLab with Button Play and CheckButton Mute. Child AudioStreamPlayer Sound: copy the supplied student-support/audio/course-tap.wav into your project audio folder and assign it (or another short original WAV/OGG), autoplay Off, volume_db -12. Attach script to AudioLab. Recording is optional: a teacher-provided original file is equivalent. No microphone or face recording is required and all recording stays private. ```gdscript extends Control func _ready() -> void: $Play.pressed.connect(_play) $Mute.toggled.connect(_mute) func _play() -> void: if not $Mute.button_pressed: $Sound.play() func _mute(enabled: bool) -> void: if enabled: $Sound.stop() ``` Scaffold C-TWEEN — Animate only a visual child Setup: Create Node2D root Visual under a stationary physics actor, attach this script to Visual and keep its parent collider unchanged. Draw a small circle. A Tween interpolates properties over seconds; this is a visual pulse, not a flashing effect. Use modest scale changes and disable it in a reduced-motion setting. ```gdscript extends Node2D var pulse: Tween func _draw() -> void: draw_circle(Vector2.ZERO, 10.0, Color.GOLD) func _ready() -> void: pulse = create_tween().set_loops() pulse.tween_property(self, "scale", Vector2(1.08, 1.08), 0.6) pulse.tween_property(self, "scale", Vector2.ONE, 0.6) func stop_motion() -> void: if pulse != null: pulse.kill() scale = Vector2.ONE ```
Local audio playback with a reversible mute
GDScript (Godot 4, not Scratch, Python, JavaScript or C#). Scaffold C-AUDIO. Copy starts from this text. The desk does not run it.
Scene and node setup
Create Control AudioLab with Button Play and CheckButton Mute. Child AudioStreamPlayer Sound: copy the supplied student-support/audio/course-tap.wav into your project audio folder and assign it (or another short original WAV/OGG), autoplay Off, volume_db -12. Attach script to AudioLab. Recording is optional: a teacher-provided original file is equivalent. No microphone or face recording is required and all recording stays private.
extends Control
func _ready() -> void:
$Play.pressed.connect(_play)
$Mute.toggled.connect(_mute)
func _play() -> void:
if not $Mute.button_pressed:
$Sound.play()
func _mute(enabled: bool) -> void:
if enabled:
$Sound.stop()
Checks to run in the editor
- Play produces sound only after user activation.
- Mute stops playback and suppresses future Play until unchecked.
- Equivalent visual cue remains available in assignment.
Native Godot 4.7.2.stable.official.ed1daf0bf headless compile and representative node-tree/runtime tests passed; see native-qa-results.json. Visual UI, audible output, exports and website submission still need separate checks.
Animate only a visual child
GDScript (Godot 4, not Scratch, Python, JavaScript or C#). Scaffold C-TWEEN. Copy starts from this text. The desk does not run it.
Scene and node setup
Create Node2D root Visual under a stationary physics actor, attach this script to Visual and keep its parent collider unchanged. Draw a small circle. A Tween interpolates properties over seconds; this is a visual pulse, not a flashing effect. Use modest scale changes and disable it in a reduced-motion setting.
extends Node2D
var pulse: Tween
func _draw() -> void:
draw_circle(Vector2.ZERO, 10.0, Color.GOLD)
func _ready() -> void:
pulse = create_tween().set_loops()
pulse.tween_property(self, "scale", Vector2(1.08, 1.08), 0.6)
pulse.tween_property(self, "scale", Vector2.ONE, 0.6)
func stop_motion() -> void:
if pulse != null:
pulse.kill()
scale = Vector2.ONE
Checks to run in the editor
- Visual gently grows and returns.
- Parent collider does not change size.
- stop_motion leaves a stable scale of one.
Native Godot 4.7.2.stable.official.ed1daf0bf headless compile and representative node-tree/runtime tests passed; see native-qa-results.json. Visual UI, audible output, exports and website submission still need separate checks.
Offer comfort settings with honest behavior — evidence task
- 1. Implement two reversible comfort settings.
- 2. Test both states and document whether they persist between rounds.
Deliverable. Settings checkpoint and four-combination test table.
Acceptance checks
- VGC-L103-T1. Each setting changes only its stated behavior.
- VGC-L103-T2. All essential information remains available in every combination.
Understanding question. Why document whether settings persist?
Include a downloadable project ZIP with project.godot, .tscn, .gd and original asset files when code changes. A private, teacher-accessible download link to that ZIP is equivalent. Screenshots or a playthrough do not replace editable source.
If this is still shaky. Test one barrier at a time: keyboard only, muted audio, reduced motion and enlarged text. Keep a checklist of actual results. Start with the first assigned task and re-run its acceptance test before adding the remaining feature.
Optional extra. Let a willing tester choose a comfort setting before the test without asking why they need it. Document one changed parameter, your prediction, and the observed effect; optional, not required for completion.
- Your first 2D game
Free public tutorial; no account; external asset download is optional, not used by this course.
· Opening this link does not submit the lesson. - Exporting for the Web
Free public documentation. Local editor play is the required alternative to web export.
· Opening this link does not submit the lesson.
Name ____________________ Date ____________________