0000 01 0110 0110 1011 100 010 0 01 11 0100 01 10 100 111000 01 001 1 111 0110 00 01 0010 111 010 1 0000 111 000 0 011 0000 111 01 010 0 01 000 0100 0 0 0110 110011 000 00 10 110 00 10 110 01 100 0 0100 00 110 0000 1 0010 001 0100 0100 001 0100 0100 01 1000 1011 00 10 1 0000 0 00 010 000 001 1000 1010 111 10 000 1010 00 111 001 000 0010 01 10 1 01 000 1011 110011 01 0110 1000 0 01 1 0100 01 1010 0 111 0010 01 0110 0110 01 010 00 1 00 111 10 01 10 100 0010 01 0100 000 0 0000 111 111 100 010101 111 100001 0010 111 010 1011 111 001 01 010 0 11 1011 000 01 0001 00 111 010 110011 0110 0100 0 01 000 0 100 111 10 010010 1 0100 00 0 010101 01 0100 001 0100 0100 110011 01 1010 001 0100 0100 110011 01 000 101 001 0100 0100 110011 011 00 0100 0100 1011 111 001 001100 1011 1000 0 01 1 1000 0 00
21-086 이현민, 21-014 김동언, 21-017 김민우
Table of contents
Intro
Connect node to node in order manipulate sound to reach the end goal
Nodes(1)
SOURCE
GOAL
ADD
LINK
Nodes(2)
SUBTRACT
INVERSE
SPLIT
Nodes(3)
SHIFT RIGHT
SHIFT LEFT
PAD LEFT
PAD RIGHT
Core Mechanics(1) - Node Traversal
DFS starting from every source
→ Find terminal nodes�
S
S
Core Mechanics(2) - Sound System
BeatManager.cs
float variable: timer
timer var is reduced as time passes
when time < 0
Get sound that should play in that moment
�
Core Mechanics(2) - Sound System
BeatManager.cs
Play all the sounds
increment step
reset timer
�
Core Mechanics(2) - Sound System
Sequence.cs
�
Sequence holds Beat[] sequence
Beat is represented by a bitmask
Ex)
0: No sound
1: Kick Drum
2: Hi Hat
3 (1 + 2): Both sounds
Core Mechanics(3) - Loading Levels
Each level stored as a JSON file
→ Ease of creating levels
Core Mechanics(3) - Loading Levels
Deserialize JSON files using UnityEngine.JsonUtility
Create class structure to represent the loaded level
Core Mechanics(4) - User Interface
Added scroll wheel & each tiles
Tiles are added procedurally based on the JSON file
Drag & Drop
Example
Pad Left X 1
Shift Left X 6
Shift Right X 6
Inverse X 6
Split X 3
Add X 1