Home - frankhjwx/osu-storyboard-engine GitHub Wiki

Welcome to the OSU-Storyboard-Engine wiki!

OSU Storyboard Engine is a developing Storyboard Creator in python 3.6 by Yumeno Himiko, yf_bmp and Mahua(https://osu.ppy.sh/u/568761).

In this wiki you will learn how this Storyboard Engine is built up and how to use them to create your own Storyboard!

We also have a finished project for reference! Check it out if you want to start quickly.

Why use OSU Storyboard Engine?

  • It's based on Python language, you can import packages easily. Also you don't need to check types of your variables all the time!
  • Our Engine takes nearly all possible type of variables for input. For example, you can use int for timing, you can also use string for timing, even float for timing. As long as it's a reasonable input, our engine would always parse it.
  • Our Engine can parse lyrics easily, and support parse for karaoke lyrics.

Structure of the Storyboard Engine

StoryboardManager

A class to manage all storyboards inside a beatmap, it also contains backup & restore operations.

Scene

Scene is a composition of several objects, we can do operations on Scene like what we do on objects, and it will affect all objects inside one scene. (Note that we do not do conflict checks)

Object

Object marks a sprite or an animation of a storyboard, and it contains several commands to manage it's properties.

Code

Code is a basic item of a storyboard, it defines a basic command.

LyricParser

LyricParser is a class for lyricparsing and character rendering, with character render method & ass reader method, we can generate single character based lyrics quickly.

BeatmapParser

Not finished, TBD

A basic workflow of OSU Storyboard Engine

  1. Create a StoryboardManager
StoryboardManager = StoryboardManager(folder_path, filename, create_backup=true)
  1. Set up the bgs of the beatmap so that it will be set hidden in storyboard (If this step is skipped, we won't generate a command for hiding the bgs)
StoryboardManager.set_bg([bg1, bg2, ...])
  1. Create several scenes for the Storyboard
def SakuraBurst():
  scene = Scene()
  # ... definitions of Object1 and Object2
  ... 
  scene.append(Object1)
  scene.append(Object2)
  return scene
  1. For every Object, it needs a definition
Object1 = Object('SB/xxx.png')
Object1.Move(0, 320, 240)
  1. When all scenes are defined, time to throw them into the StoryboardManager!
StoryboardManager.append_scene(Scene1)
StoryboardManager.append_scene(Scene[diffx])
  1. When set is done, time to generate the storyboard!
StoryboardManager.generate_storyboard(diff_specific=True)
  1. Now take a cup of coffee and enjoy your work!

Others

Contact Yumeno Himiko or examination#6454 on discord if you encountered any problems while using this tool.

If you have any nice ideas on improving this tool, or want to contribute to it, don't hesitate to create Issue threads or make some Pull requests! We'd appreciate your hard work!

We also suggest join OSU Storyboard Banquet, storyboarders' community!

中文玩家可以加qq群 340505133 蟹蟹