ЁЯЫая╕П Devlog тАФ Issue #48: Tutorial Overlay Fix
Version: v0.0.9-patch
Date: 2026-08-11
Author: Weired Codes
Issue: #48 тАФ Tutorial overlay/guide cards block gameplay view
Tags: bug UI tutorial fix
Closes: #48
ЁЯЗоЁЯЗ│ рд╣рд┐рдВрджреА рд╡рд┐рд╡рд░рдг
рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рдереА?
рдЧреБрд░реБ-рджреАрдХреНрд╖рд╛ (Tutorial) рдХреЗ guide cards рдкреВрд░реЗ gameplay canvas рдХреЗ рдКрдкрд░ centered рджрд┐рдЦрддреЗ рдереЗ тАФ рдЬрд┐рд╕рд╕реЗ рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рди рдорд╛рдпрд╛ рджрд┐рдЦрддреА рдереА, рди рднрдХреНрддрд┐-рдорд╛рд░реНрдЧ, рди рдЕрдкрдирд╛ рд░рдеред Card рдХреЗ dismiss рд╣реЛрдиреЗ рддрдХ gameplay рднреА рдЪрд▓рддреА рд░рд╣рддреА рдереА, рдЬрд┐рд╕рд╕реЗ player рдмрд┐рдирд╛ рджреЗрдЦреЗ рд╣реА рдХрд░реНрдо-рдмрдВрдзрди рдореЗрдВ рдлрдБрд╕ рд╕рдХрддрд╛ рдерд╛ред
рдХреНрдпрд╛-рдХреНрдпрд╛ fix рд╣реБрдЖ?
| рд╕рдорд╕реНрдпрд╛ | рд╕рдорд╛рдзрд╛рди |
|---|---|
| Tutorial card рдкреВрд░рд╛ gameplay block рдХрд░рддреА рдереА | Card рдХреЛ semi-transparent рдХрд┐рдпрд╛ (rgba(0,0,0,0.40)) тАФ рдкреАрдЫреЗ gameplay рджрд┐рдЦреЗ |
| Card visible рд╣реЛрдиреЗ рдкрд░ gameplay рдЪрд▓рддреА рд░рд╣рддреА рдереА |
gameLoop рдореЗрдВ tutorial.hasActiveCard() check рдЬреЛрдбрд╝рд╛ тАФ card рджрд┐рдЦреЗ рддреЛ game pause |
| Dismiss рдХреЗ рдмрд╛рдж dt spike рдЖрддрд╛ рдерд╛ | Card dismiss рд╣реЛрдиреЗ рдкрд░ lastTime = ts reset рдХрд┐рдпрд╛ |
| Skip рдХрд░рдиреЗ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдмрдЯрди рдирд╣реАрдВ рдерд╛ | Top-right corner рдкрд░ тЬХ рдЫреЛрдбрд╝реЗрдВ / 5 skip button рдЬреЛрдбрд╝рд╛ |
CARD_Y variable missing рдерд╛ |
render.js рдореЗрдВ const CARD_Y = (H - CARD_H) / 2 + 30 define рдХрд┐рдпрд╛ |
рддрдХрдиреАрдХреА рд╡рд┐рд╡рд░рдг
src/render.js:
-
drawTutorialCard()рдореЗрдВCARD_YрдХреА missing definition рдЬреЛрдбрд╝реА - Card background
rgba(0,0,0,0.72)тЖТrgba(0,0,0,0.40)тАФ semi-transparent -
Renderer._tutorialSkipBoundsрд╕реЗ skip button рдХрд╛ hit-area store рдХрд┐рдпрд╛
src/main.js:
-
gameLoop()рдореЗрдВ condition:
// рдкрд╣рд▓реЗ:
if (!engine.isPaused && !engine.gameOver && !engine.won && !engine.isShaashtraVisible)
// рдЕрдм:
if (!engine.isPaused && !engine.gameOver && !engine.won && !engine.isShaashtraVisible && !tutorial.hasActiveCard())
- Card dismiss рд╣реЛрдиреЗ рдкрд░
lastTimereset тАФ рдЕрдЪрд╛рдирдХ dt jump рд░реЛрдХреЗрдВ
рд╢рд╛рд╕реНрддреНрд░-рд╕рдВрдЧрддрд┐
рдЧреБрд░реБ-рджреАрдХреНрд╖рд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдорд╛рд░реНрдЧрджрд░реНрд╢рди рд╣реИ, рдмрд╛рдзрд╛ рдирд╣реАрдВред
рдЬреИрд╕реЗ рд╕рд╛рд░рдереА рдпрд╛рддреНрд░реА рдХреЛ рдорд╛рд░реНрдЧ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рд░рде рдирд╣реАрдВ рд░реЛрдХрддрд╛ тАФ
рд╡реИрд╕реЗ рд╣реА tutorial card gameplay рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЪрд▓реЗ, рдЙрд╕реЗ рдврдХреЗ рдирд╣реАрдВред
ЁЯЗмЁЯЗз English Summary
Problem
Tutorial guide cards were centered and fully opaque, completely blocking the gameplay canvas. The game logic also continued running while the card was visible, meaning players could accumulate karma bondage without being able to see or react to it.
Fixes
- Semi-transparent card background тАФ gameplay remains visible behind tutorial card
-
Gameplay pause тАФ
gameLoopskipsengine.update()while any tutorial card is active -
lastTimereset on dismiss тАФ prevents dt spike / frame jump after card closes -
Skip button тАФ clear
тЬХ Skip / 5button in top-right corner of card -
CARD_YReferenceError тАФ missingconst CARD_Ydefinition added inrender.js
Files Changed
| File | Change |
|---|---|
src/render.js |
Added missing CARD_Y definition; semi-transparent card bg; skip button bounds |
src/main.js |
gameLoop pauses on tutorial.hasActiveCard(); lastTime reset on dismiss |
ЁЯУБ Files Changed
src/render.js
src/main.js
Closes #48 тАФ Developed by Weired Codes тАФ рдореЛрдХреНрд╖, рдПрдХ рдЖрдзреНрдпрд╛рддреНрдорд┐рдХ рдЦреЗрд▓ред
Top comments (0)