Skip to content

Commit f7ce0c7

Browse files
ADD: GSoC'25 week 10 blog by Aditya (sugarlabs#332)
Signed-off-by: Aditya <[email protected]>
1 parent 850994b commit f7ce0c7

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed
Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
---
2+
title: "GSoC ’25 Week 10 Update by Aditya Kumar Singh"
3+
excerpt: "Improved UX and syncing in Human Body activity, enhanced Stickman dashboard visuals, redesigned proportions, and implemented Journal save & multi-stickman support."
4+
category: "DEVELOPER NEWS"
5+
date: "2025-07-20"
6+
slug: "2025-07-20-gsoc-25-AdityaKrSingh26-week010"
7+
author: "@/constants/MarkdownFiles/authors/aditya-singh.md"
8+
tags: "gsoc25,sugarlabs,week10,AdityaKrSingh26"
9+
image: "assets/Images/GSOC.png"
10+
---
11+
12+
<!-- markdownlint-disable -->
13+
14+
# Week 10 Progress Report by Aditya Kumar Singh and Midterm Summary
15+
16+
**Project:** [Sugarizer](https://github.com/llaske/sugarizer)
17+
**Mentors:** [Lionel Laské](https://github.com/llaske)
18+
**Assisting Mentors:** [Samarth Bagga](https://github.com/SamarthBagga)
19+
**Reporting Period:** 2025-07-16 - 2025-07-23
20+
21+
---
22+
23+
## Goals for This Week
24+
25+
- **Goal 1:** Improve Human Body UX (Tour/Doctor mode randomization, camera reset, leaderboard toggle).
26+
- **Goal 2:** Polish Stickman activity dashboard and frame preview behavior.
27+
- **Goal 3:** Improve stickman appearance and proportions.
28+
- **Goal 4:** Enable multi-stickman support and journal storage.
29+
30+
---
31+
32+
## This Week’s Achievements
33+
34+
1. **Random Part Selection in Doctor/Tour Modes**
35+
- Ensured every new session randomly selects a body part to focus on.
36+
- The selection is now host-driven and synced to all participants.
37+
```javascript
38+
function selectRandomPartForDoctor() {
39+
presenceCorrectIndex = Math.floor(Math.random() * bodyParts.length);
40+
document.dispatchEvent(new CustomEvent("target-updated", {
41+
detail: { part: presenceCorrectIndex }
42+
}));
43+
}
44+
```
45+
46+
47+
2. **Camera Reset and Leaderboard Cleanup on Exit**
48+
- Fixed host → client camera sync when exiting Tour mode.
49+
- Leaderboard UI now clears correctly when Doctor mode ends.
50+
```javascript
51+
function resetTourState() {
52+
if (!window.isHost) {
53+
camera.position.set(defaultX, defaultY, defaultZ);
54+
controls.target.set(0, 1, 0);
55+
controls.update();
56+
}
57+
hideLeaderboard();
58+
}
59+
```
60+
61+
62+
3. **Frame Preview Enhancement in Stickman Activity**
63+
- Previously, users had to add a new frame for the thumbnail preview to refresh.
64+
- Now, any movement or change in the canvas auto-updates the preview.
65+
- **Approach:**
66+
- Detect changes in the canvas (e.g., drag end or part movement).
67+
- Clone the updated canvas to the current frame’s preview.
68+
- This ensures instant visual feedback while animating.
69+
70+
71+
4. **Stickman Design Overhaul**
72+
- Revisited the drawing logic and proportions:
73+
- Shorter neck
74+
- Thicker limbs
75+
- Solid, filled circular head
76+
- Inspired by Pivot Animator to offer a more professional, relatable look.
77+
> Updated Stickman Design
78+
![Stickman UI](https://i.ibb.co/60VymQhm/image.png)
79+
80+
81+
5. **Multi-Stickman Canvas Support**
82+
- Users can now add more than one stickman in the scene.
83+
- Each stickman is an isolated object with its own:
84+
- Position and joint data
85+
- Frame history
86+
- Selectable state
87+
- **Algorithm:**
88+
- Maintain a list of stickman instances.
89+
- On user interaction, determine which stickman is targeted.
90+
- Only that stickman responds to move, draw, and animate actions.
91+
> Multiple Stickman preview in acitvity
92+
![Multiple Stickman](https://i.ibb.co/s9VJBctL/image.png)
93+
94+
95+
6. **Journal Integration for Stickman**
96+
- Implemented save/load logic to persist stickman data (frames, templates, active character).
97+
- **Approach:**
98+
- On save: Serialize all current stickmen, their frame sequences, and selected templates into a JSON blob.
99+
- On load: Deserialize and reconstruct all visual data, restoring the full session.
100+
- This allows users to save their progress and resume where they left.
101+
102+
103+
---
104+
105+
## Challenges & How I Overcame Them
106+
107+
- **Challenge:** Preventing multiple stickmen from interfering with each other’s states.
108+
**Solution:** Scoped interaction events to only apply to the selected stickman instance.
109+
110+
- **Challenge:** Updating previews without triggering unnecessary rendering overhead.
111+
**Solution:** Triggered preview redraws only on meaningful events like drag-end or transformation complete.
112+
113+
---
114+
115+
## Key Learnings
116+
117+
- Learned how to architect multi-actor systems on a single canvas while maintaining performance.
118+
- Strengthened my understanding of event-driven synchronization in real-time collaborative applications.
119+
120+
---
121+
122+
## Next Week’s Roadmap
123+
124+
- Fix remaining issue on Human Body
125+
- Increase the size of Stickman
126+
- Show frames only for selected stickman for multiple stickman
127+
- Show joints only for selected stickman for multiple stickman
128+
- Add popup when removing stickman with frames count >1
129+
130+
---
131+
132+
## Acknowledgments
133+
134+
Thank you to my mentors, the Sugar Labs community, and fellow GSoC contributors for ongoing support.
135+
136+
---
137+

0 commit comments

Comments
 (0)