ppy / osu

rhythm is just a *click* away!
https://osu.ppy.sh
MIT License
15.15k stars 2.25k forks source link

Hard coded tutorial #5577

Open ticotaco72 opened 5 years ago

ticotaco72 commented 5 years ago

Describe the new feature: there should be tutorial hardcoded into lazer. Hardcoded can have advantages over beatmap based one.

  1. you dont have to download it first, new users probably dont even know that it is available, and how to get that working
  2. can force seeing everything, when you'll mess with settings before even start tutorial and you turn of video/storyboard then you dont know what exactly is going on
  3. it can help teach not gameplay areas too
  4. it can be overally better when using drawables not video in background
Poyo-SSB commented 5 years ago

As I understand, the intention is to have both—something that guides the player through the interface briefly and then sends them to the tutorial map.

peppy commented 5 years ago

The current tutorials use storyboards, which offer enough flexibility to do basically anything we need. If we need more, we can add new functionality to storyboards.

Fraetor commented 5 years ago

Assumedly a new tutorial beatmap will be bundled with lazer when it is a bit more complete?

LeNitrous commented 5 years ago

It's true that storyboards are enough but there are some parts of the HUD that need to be controlled. Specifically the the break statistics.

Jadiker commented 2 years ago

In case it helps, I came from here, and have never played Osu before. I'm now struggling to find old tutorials online that match up and the old tutorial levels seem to be weird. So yeah, first user experience is tough! Highly recommend adding in a tutorial :)

smallketchup82 commented 2 months ago

I've been thinking about ways that this could be designed & implemented. I probably wouldn't be the one to implement this—at least not alone—since it'd be a large undertaking. This post will mostly just document how I'd personally design and implement this myself if I had the technical know-how to do so. I don't really expect anyone to read it in it's entirety or genuinely consider any of it, but I still felt like at least writing down my thoughts somewhere in case they'd wind up being useful.

I've hidden it under a dropdown so as to not clog up this issue ## Introduction To set the stage, I think that there's two big distinctions we need to make when we think about the initial audience of lazer. You might think that what I'm about to say is just stating the obvious, but it's something we should absolutely keep in mind when designing this. From my POV, there are two initial audiences of lazer. The first one is new players: people completely new to osu! and osu!lazer. The second one is stable players; they already know how to play the game, but are unfamiliar with lazer, its interface, and its ecosystem. A common complaint I've heard from friends that play stable is that lazer has way too many features, and doesn't make a good attempt at explaining them—typically leaving it up to the user to figure the features out themselves, which can be fun for some, but also a nuisance for others who just want to know how to use the client. I've heard stable players call lazer complex, hard to use, hard to navigate, and obviously, *different*. This is why I'm keen on having two tutorials, one for new players, and one for existing stable players to ease the migration and to hold their hand through getting started with lazer. I believe that the tutorial should be mostly audio based rather than text based. What I mean is that explanations should be done like in the form of a video, where a narrator explains something, then allows the user to give it a shot. An "interactive video" of sorts. Yes a storyboard would be a lot easier to implement. But I personally believe a player will decide if they'll continue playing or not within their very first session, so we should hard code everything to ensure the user has a seamless first experience during the tutorial. This way we have more control over what the user experiences, and we can declutter the user interface while we explain concepts. Our tutorial flow should begin with a simple question: Are you new to osu? Are you coming from stable? Or are you an existing player? This should be the first thing to show after the first game launch. Depending on the answer, the tutorial focuses on areas relevant for the player: An explanation of gameplay for a completely fresh player, an explanation of the lazer project & an interactive display of differences from stable for a stable player, or skip to first time setup for an existing lazer player. ## New players The tutorial for new players should be an explanation of osu!. i.e. What is osu? What is this game? How do I play osu? How do I use the osu! client (how to navigate the lazer ui, explanation of features, etc)? Where can I go for an explanation on X? These are all questions that should be explored and answered. The tutorial should aim to answer the essential questions that a person who has never heard of osu! before might ask, while providing resources to get more help if needed. In general, this tutorial should be around 20 minutes in length. ### What is osu? This section of the tutorial should take inspiration from the good old wikipedia explanation: > Osu! is a free-to-play rhythm game originally created by Australian game developer Dean Herbert. We want to give a quick, brief explanation of osu!. Not the game, not the gameplay, and not the client, as all of that will be discussed later. We want to explain osu! as a concept, as you'd see it in a glossary. We can include the fact that osu! can be played multiplayer, that there is a tournament scene, leaderboards, different gamemodes, etc. This section is entirely for explaining the significant parts of osu! and establishing some understanding so that things explained in later sections don't sound like gibberish. When you think of a phone, you think "device that allows me to access the internet, text & call people, and more." In the same way, when you think of osu!, you'd think "game that allows me to click circles, gain pp, compete for higher ranking, and have fun while listening to music I like." This is vaguely what we need to communicate here. A good starting point would be: > osu! is a free-to-play rhythm game created by \ Dean "peppy" Herbert. osu! comes filled with \ multiplayer, \ leaderboards, \ numerous different gamemodes, \ and a tournament scene. \ osu! lets you listen to the music you already love, while giving you the ability to experience it in a unique format called a beatmap. ### What is this game? Now we want to go into depth about osu! as a game. Some more specific questions that can be asked here is "How is osu! played?" or "What do you do in osu?" (this is about what the game offers, not an explanation of gameplay) and "Why should I play osu?" (who does osu! appeal to, what sets it apart from other rhythm games, etc) In general, I think something along the lines of this would be good: > osu! can be played however you want: you can play beatmaps \ and rise in the leaderboards \, create beatmaps \ and get them ranked \, compete in tournaments \ to show off your skills and get rewards, or simply play for the fun of it \. You define the way you play osu, and all the means to do so are provided to you via the game's active community \, spanning millions of players. \ If you want a fun yet challenging, competitive yet casual, rhythm-packed yet relaxing, game to play for free, then osu!'s perfect for you. ### How do I play osu? We can reference "new beginnings" here, as it's a solid explanation of osu! gameplay: > \ osu! is a game of circles \. When the approach circle \ \ touches the edge of the inner circle, that's your cue to click it. Give it a try \. \ You can earn more score by accurately syncing your clicks to the music \. Give these circles a try \. \ Sliders build upon circle mechanics. Click on the start position, but keep your mouse button held down as you follow the slider ball along the slider track. Give it a try \. \ When you see a reverse arrow on a slider, you have to follow the slider ball back to the start position as well \. Okay you get the idea, I've choreographed enough. Generally just follow the same idea of new beginnings, but instead of doing so in a beatmap, have it be a hardcoded player that reacts to the player (waiting for them to do something, hiding ui elements until they're relevent, etc). ### How do I use the client? This section will explain how to *use* osu! as opposed to playing osu. This should encompass things like navigating the ui menu's, explaining lazer functionality such as applying mods, downloading beatmaps, changing settings, etc. I'm not going to provide an example for this since it'd be really really long, but you get the idea. ### Where can I go to get more information? Let the player know about the wiki, which can be accessed within the game. Also let the user know that they can ask questions within the game chat and forums. Also let the user know about the existence of osu! support and encourage the user to contact them if they need assistance with account stuff. This section could also include a mention of lazer's github and let the user know that they can report bugs there. ### Conclusion After the last section, the user should be placed in first time setup. And that's basically it for a new player. I believe that following this structure, a new player should be given the essentials to get them started with osu!, and the resources to do their own research, or to ask questions about anything they're uncertain about. ## Stable players Since stable players already know what osu! is, how to play it, etc. we only need to concern ourselves with introducing them to lazer, showing them what's different (I can't really see most stable players reading a long wiki post with the differences, so it's better to directly show it to them), and making it easy for them to switch and integrate themselves within lazer. A lot of what's in this version of the tutorial might sound like lazer encouraging stable players to switch to lazer. So I'll clarify here that I personally don't care about getting stable players onto lazer or encouraging the use of lazer, since that should be up to the player. Whether the core team wants to advertise using lazer, or encouraging stable players to switch to lazer, is up to them. As a stopgap until that gets discussed, this section should focus only on introducing stable players to lazer. So here are our essential questions coming from stable: - What is lazer and why was it made? - What does lazer do differently from stable? - Take inspiration from the "how do I use the client" from the new player tutorial - Why should I play on lazer? ### What is lazer and why was it made? A great [video](https://youtu.be/ut_SOreClcc) on this subject has already been made by pishifat. But it's quite outdated, so it's good to use it as inspiration while updating it to modern day lazer. Explaining what lazer is, is pretty simple, so I won't provide an example of that. As for why lazer was made, it wasn't touched upon much in pishifat's video, but I personally think it's important to discuss. Some of my friends that are still on stable have asked me the question "why should I switch to lazer when stable works just fine?", "why should i relearn osu just for lazer, what's in it for me?", and while not a question: "lazer would've been a lot better if it had the same look and feel as stable. it shouldn't be reinventing the wheel". These are valid questions and concerns, and I think it'd do the playerbase better to provide answers for these in an intuitive way. As for "lazer reinventing the wheel", it'd be good to explain that lazer does this because lazer is a complete rewrite from the ground up, so some features will behave differently simply due to the difference in structure between the two. I'm not an osu! historian or anything, so I don't know the exact answers for this, take the previous sentence with a grain of salt—but you get the idea. We should aim to explain the "why"'s here: - What is lazer - Why was lazer made - Why the decision to rewrite the game - What were the problems with stable that led us here - Why lazer doesn't look & behave like stable ### What does lazer do differently from stable? Self explanatory. List the main differences between lazer and stable. Whatever's listed as "locked in" on the relevant wiki page to reduce the chances of having to change this. This section helps reduce the concern of having to "relearn osu" to switch to lazer, since lazer itself will explain what works different and how to preform familiar actions on lazer. This section can also be an extension of the "how do i use the client" section of the new player tutorial, which allows lazer to teach stable player's how to navigate lazer's ui, while explaining the differences between lazer's conventions and stable's. ### Why should I play on lazer? As I explained earlier, unless the core team explicitly wants to deviate, we should uphold the current philosophy of being indifferent to what client players play on. That means that this section shouldn't be used as an advertisement for lazer, nor should it encourage switching to lazer. I think a good way to explain the benefits of lazer, while staying neutral, is to list the pro's and con's of lazer in comparison to stable. This will allow the player to make an informed decision on their own. ### Conclusion After the final explanation, the player should be informed about "classic defaults" and sent to the first time setup. Following this flow, I believe that demoing lazer, switching to lazer, and simply using lazer will be made a lot easier for existing stable players. I do understand that it'd be a lot of work to maintain two different tutorials, but I think that there's worth to this. Stable players make up the majority of the current playerbase, so making a tutorial for stable players should help lazer appeal more to the general playerbase. ## Final thoughts This ended up being a lot longer than I thought it'd be. I'd like to apologize again for the length of this post. I hope it can at least lay some ground for future discussion on making both osu! and osu!lazer seamless to get started with.