Achievement
- Re-implement the stage system.
- Use command to adjust the lyric’s transformer like how storyboard did.
- Separate the stage from the beatmap.
- Planning 2-weeks december vacation.
- Stay at Osaka and Kyoto for few days and trying to servival.
- Work few days at Tokyo.
- Go to Comiket.
- Give some weird meat a try.
- Skiing for 5 days.
- Remember update the changelog.
Blog
- Add special badge at the start of the changelog item. karaoke
Code quality
Editor
- Add translation edit section to the editor. karaoke
- Add karaoke-specific sections to setup screen. karaoke
Gameplay
- Fix note judgement cause exception. karaoke
Stage
Guess it’s time to explain why changelog not update so long.
Before that, lets talking about what is Stage
first.
Stage
is a system to give the effect to the lyric. For example:
It’s a very classic Japanese lyric arrangement.
It has usually 2~4 lines of lyric at the screen.
Each lyric can be padding to left/center/right.
If the lyric is end, the next lyric will take over it’s position immediately.
And here’s the lyric arrangement that apple music use.
The current lyric at the center, if the lyric is end, next lyric will move to the center to replace the old one.
In order to add more type of stage arrangement in the future. e.g., let user able to edit the lyric’s position and appear/disappear time.
The stage system should be flexible.
And stage system should have those features:
- It can assign the lyric’s actual Start/End time in the playfield.
- Change the property in the lyric to adjust the position. e.g. Position, margin and padding.
- Change the property in the lyric like drawable. e.g. Scale and alpha.
- Add custom element to the playfield. e.g. beatmap info preview.
- (TBD) Change lyric’s font.
- (TBD) Change lyric’s shader effect.
And here’s the system desing
Thanks to the affine, it’s a open-source platform that able to write the doc and graph.
It has few bugs while undo/redo but still worth to give it a try.
And here’s the milestone, the re-implement plan is tracked in this issue
- M0 - Preparation
- M1 - Create the transformer command generator
Before:
Implement the transformer action for different type of stage.
After:
Let stage generate transformer command, and provide the same command executer to execute all transformer command that generated from any type of stage.
Benefit:
Make the system more fiexible, and easier to maintain. - M2 - Create the drawable stage environment
It’s a wrapper for able to provide the necessary resource for lyric/playfield.
e.g. DI that able to execute the transformer command.
Design is inspired from theDrawableStoryboard
in lazer. - M3 - Not provide state-related properties by the beatmap
It’s time to separate the stage system form the beatmap.
- M4 - Refactor