From 16595d09d9c59eb357f2bb54d3fbf1c933a38c2b Mon Sep 17 00:00:00 2001 From: Eevee Date: Sun, 9 Jan 2022 01:10:31 +0100 Subject: [PATCH 1/5] FIx Compile error when compiling for desktop --- osu!stream/Main.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu!stream/Main.cs b/osu!stream/Main.cs index dcc44b2d..9f967b83 100644 --- a/osu!stream/Main.cs +++ b/osu!stream/Main.cs @@ -1,7 +1,8 @@ using osum.Audio; using osum.Graphics; -using osum.Support.Android; + #if ANDROID +using osum.Support.Android; using Android.App; using Android.OS; using Android.Support.V7.App; From 111d8c70ea62e7344bf9ca0aa2b6c38373b2cc7b Mon Sep 17 00:00:00 2001 From: Eevee Date: Sun, 9 Jan 2022 01:13:41 +0100 Subject: [PATCH 2/5] Update README.md --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7024d2cc..17a45647 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,6 @@ While contributions are welcomed I likely won’t have time to review anything t - Bringing the `arcade` branch up-to-date and potentially merging changes back into master. - Documentation of any kind. - Code quality improvements of any kind (as long as they can easily be reviewed and are guaranteed to not change behaviour). Keep individual PRs under 200 lines of change, optimally. -- Adding full android support (there's a wip branch but it's so outdated I think starting from zero would be easier). Note that this should not degrade the quality of existing code as much as possible, so above tasks may need to come first. ## Running From 98f1295e7918cfcb86c7cb27c3226fda42c41c35 Mon Sep 17 00:00:00 2001 From: Eevee Date: Sun, 9 Jan 2022 01:14:32 +0100 Subject: [PATCH 3/5] how did i screw this up --- osu!stream/Main.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/osu!stream/Main.cs b/osu!stream/Main.cs index dcc44b2d..9f967b83 100644 --- a/osu!stream/Main.cs +++ b/osu!stream/Main.cs @@ -1,7 +1,8 @@ using osum.Audio; using osum.Graphics; -using osum.Support.Android; + #if ANDROID +using osum.Support.Android; using Android.App; using Android.OS; using Android.Support.V7.App; From 98813f04058bffd572b137b4570fe899e44adc24 Mon Sep 17 00:00:00 2001 From: Eevee Date: Sun, 9 Jan 2022 01:16:28 +0100 Subject: [PATCH 4/5] rider is making me crazy --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 0605bec1..9b48c1e2 100644 --- a/.gitignore +++ b/.gitignore @@ -40,4 +40,5 @@ App Store Submission/Archived Builds -.vs/* \ No newline at end of file +.vs/* +.idea/* \ No newline at end of file From 5cb8a7e8328603e3ae07f5c0d9a453510fb2018c Mon Sep 17 00:00:00 2001 From: Eevee Date: Sun, 9 Jan 2022 01:36:02 +0100 Subject: [PATCH 5/5] Initial work on the Mapping documentation --- MAPPING.md | 48 +++++++++++++++++++++++++++++++ Readme Pictures/StreamTester.png | Bin 0 -> 18806 bytes 2 files changed, 48 insertions(+) create mode 100644 MAPPING.md create mode 100644 Readme Pictures/StreamTester.png diff --git a/MAPPING.md b/MAPPING.md new file mode 100644 index 00000000..3fa30c28 --- /dev/null +++ b/MAPPING.md @@ -0,0 +1,48 @@ +# Mapping for osu!stream + +Mapping for osu!stream is quite a bit more involved as there is no built in Editor for Beatmaps to be made, this guide will walk you through how to create maps for osu!stream. + +This guide assumes you know how to get osu!stream to build, at least for Desktop. + +## Map Structure + +Maps in osu!stream are structured a little differently when it comes to spread. There are 4 difficulty levels: +* Easy +* Normal +* Hard +* Extreme + +Easy and Extreme are self explanatory, Normal and Hard are both for the **Stream** difficulty, the Lower Stream is the Normal difficulty, this is also the starting difficulty in Stream Mode. Hard difficulty is then the higher stream. + +When those switches occur is entirely up to the Mapper to decide and is something we'll touch on later. + +Your map also ***has*** to have a audio file named audio.m4a in its map directory. + +### Regarding Difficulty Names + +Important to mention is that your Beatmap **has** to adhere to those difficulty names, otherwise you will not be able to Package the Beatmap and play it in osu!stream. +So your Beatmap has to have all those difficulties with those exact names. + +### Consequences for not adhering + +Not having a difficulty will either lock you out from playing your Beatmap in a certain Difficulty Level (for example, when you're missing the Easy or Expert difficulty, you will not be able to play either of those Modes) or in Stream mode the higher stream won't be accessible. + +# Mapping workflow + +For the most part, you will be using the osu! Editor you most likely are familiar with, alongside BeatmapCombinator and StreamTester + +### BeatmapCombinator + +BeatmapCombinator is the program which you use to Package your Beatmaps into .osz2 files which osu!stream deals with + +**Usage:** + +Drag and Drop your Beatmap folder with all your .osu files which should all have the earlier specified Difficulty names and the audio.m4a file inside. After that it should give you back a .osz2 file which you can use for osu!stream + +### StreamTester + +StreamTester is a convinient little program for quickly Test-playing maps, + +

+ +

\ No newline at end of file diff --git a/Readme Pictures/StreamTester.png b/Readme Pictures/StreamTester.png new file mode 100644 index 0000000000000000000000000000000000000000..7bfacd2c240f858f36ca840c63ecdfabbe132cab GIT binary patch literal 18806 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 J`CRMWe*@U>Q+NOX literal 0 HcmV?d00001