Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add "Tip of the Day" popup upon engine start #15

Closed
wingedadventurer opened this issue Sep 4, 2019 · 17 comments
Closed

Add "Tip of the Day" popup upon engine start #15

wingedadventurer opened this issue Sep 4, 2019 · 17 comments

Comments

@wingedadventurer
Copy link

mockup
("Tip of the Day" mockup)

Several great tools out there have a "Tip of the Day" or similar popup appearing upon their launch. I was thinking about implementing the same for Godot.

Idea

So a "Tip of the Day" is a popup that shows the user various tips and tricks, where they get to react with "Hey I didn't know you can do this!" Majority of users love these, as they can improve their workflow in various ways. It can include those common problems beginners encounter when starting with the engine, as well as some more advanced things for professionals.

There are several types of content that I think can be present in the popup:

  1. general tips & tricks -- ranges from shortcuts ("When in 3D editor you can press NUM1, NUM3, and NUM7 keys to view the scene from top, right, or front view."), to code editor tricks ("You can span your code to multiple lines if you end them with \"), to common project settings ("Working on a pixel art game? Make sure you turn on Pixel Snap in project settings to avoid problems like gaps between tiles in a TileMap!").

  2. lesser known functions (properties) -- this would work like engine documentation, but adapted to be like a tip, and would expose some powerful functions that not many people know about, like get_tree.call_group() or Node2D.set_as_toplevel().

  3. meta -- things like links to various places (website news, Discord server, Patreon), or quick instruction on how to contribute to the engine.

Implementation

The popup would appear once every time you launch the engine, and only when you open a project. It makes more sense to appear there rather than in the Project Manager.

The popup would have the "Don't show again" checkbox, an "Ok" button, 2 arrows to cycle tips, optionally a number that shows current page "Tip 23/241", and the content itself in a scroll container.

The content would consist of regular text, code snippets, and sometimes images. It shouldn't be long because then it would turn into a documentation rather than a tip.

The content itself would be stored in a JSON file where the popup would pull appropriate tip from. I'm assuming the JSON is standard content storage format, correct me if wrong.

Tips would cycle, giving the next one every time the engine is turned on again and a project opened up. This means an index variable stored somewhere which increments upon every engine launch.

The mockup provided above pretty much shows what I had in mind, but I will make a few design iterations on it.

Acquiring content

Finally, in order to acquire some initial content, I plan on making a form where people can submit as many tips as they want. Results would get stored in a spreadsheet and after some time we could merge and evaluate those before adding them to the file. After implementation, users are welcome to add as many tips as they want with PRs.

Final notes

If something is unclear or missing, let me know so I can correct it. If you have suggestions, fire away!

When and if this gets a green light, I'll start working on this immediately. I'm pretty motivated to contribute to the engine I've been using for more than a year!

@Calinou
Copy link
Member

Calinou commented Sep 4, 2019

The pop-up could be made to show up automatically only once per day, so that you don't see it too often when testing demo projects. This can be implemented by storing the UNIX timestamp of the last editor startup in a file, then comparing it with the current UNIX timestamp. This timestamp should preferably be stored in a dedicated file in the cache directory rather than editor_settings-3.tres. Otherwise, that would mess up with people synchronizing their configuration using a cloud storage solution or a dotfiles manager.

It makes sense to add an Help > Tip of the Day menu option as well, to view tips after starting the editor.

See also godotengine/godot#31430.

@fire
Copy link
Member

fire commented Sep 4, 2019

I dislike this from the perspective it's another thing that stops me and other developers from using the engine on start. Other engines have implemented this as a flashing annoying thing on the editor interface combined with a tutorial system.

One of the goals of UX is to not allow barriers to using the project.

@wingedadventurer
Copy link
Author

@fire Wouldn't the "Don't show again" checkbox solve that? You check it once and never see it again (unless you reenable in Help > Tip of the Day or reinstall your OS).

@Juankz
Copy link

Juankz commented Sep 4, 2019

Good idea, it's useful for beginners, however I dislike the implementation, pop ups are anoying and break visual workflow. We could add the tip of the day at the bottom of the projects list view or as a bottom panel (beside the animation panel).

Also this adds another burden for the community: write, curate and update tips. Yet to be honest, I don't find this a must have, a good amount of users may skip it and so it may be considered bloat. Personally I have had some joy reading some tips on IntelliJ but 99% of the time I just pass and go straight to work.

@vnen
Copy link
Member

vnen commented Sep 5, 2019

Also this adds another burden for the community: write, curate and update tips

And translate to the many languages that are supported. It could be a nice feature, but the hardest part is producing and maintaining the content (which must always be small, clear, and correct).

@girng
Copy link

girng commented Sep 5, 2019

godot is used for so many different kinds of games/projects, i fear certain tips will be irrelevant to that developer's project. this might become a nuisance instead of a helpful tip

@KoBeWi
Copy link
Member

KoBeWi commented Sep 5, 2019

There are some features that are not documented anywhere and tip of the Day would be useful for letting the user know they exist. I mean, there are things that should be written anyways, so maintainability isn't really a problem here. But it should be used only for really useful stuff and "meta" tips don't sound like that.

@TheSHEEEP
Copy link

TheSHEEEP commented Sep 6, 2019

There are many problems with this:

  • People find it annoying, no matter if the information shown is known to them or not.
  • IMO it comes off very unprofessional and Windows 98-like. Might as well add a Godot-Clippy to it.
  • Adds maintenance for uncertain benefits.

If this would be added, it should IMO be opt-in, not opt-out. I like the help > show tip of the day suggestion.

@wingedadventurer
Copy link
Author

These are some pretty reasonable arguments against. I didn't think of it this way, especially the requirement to maintain it, and for all the languages. I agree that it doesn't contribute significant amount of benefits. Finally, I see how opt-out can be annoying, and making it opt-in under "Help" tab feels like it's not worth the effort. I think this makes it more of a candidate for a page on documentation rather than engine feature then.

Seems that majority are against, so I guess the issue can be closed.

@ghost
Copy link

ghost commented Sep 27, 2019

Actual beginner here.

Uhhh... I literally never read any of these "Tip of the Day" things.
The only thing they manage to do for me, is to annoy me to death.

Do you guys want to know why?

BECAUSE IT'S LITERALLY RANDOM INFORMATION, WHICH I CANNOT USE, AS I LITERALLY DON'T KNOW HOW TO DO ANYTHING YET.

It's worthless bloat, it adds absolutely nothing. This doesn't allow me, in any way, to learn anything.

Besides, I have to memorize this crap too, in like what, two seconds? That's too damn quick man, I barely had time to apply the information I just learned. By the time I close the window, I'll have forgotten everything it just told me.

Anyway here's the truth from someone who honestly finds these things to be 100% useless. I never read them, never bothered to. It has never helped me once. I would rather have detailed tool tips, when I hover over stuff instead. Now that would be an amazing way of integrating documentation.

This is kinda silly, but I do wish more UIs could be more video game like when it comes down to teaching you how to do stuff.

See, you hover on the thingy, it tells you what it does. Cool.
https://i.imgur.com/ihlVw04.png

That's a good feature. Tip of the day? Completly worthless and a useless waste of space and text.

The better idea would be to have video game like tooltips when you hover over the UI.
https://i.imgur.com/LhC8MML.png

@mnn
Copy link

mnn commented Jun 5, 2020

Yeah, I never read such modals too. I rarely checked to not show them, but in vast majority of times I instantly closed them. But in games, when I am waiting for a level to load and the text isn't too long, I usually read the "loading tips".

Example from Overwatch (not my screenshot):
Overwatch (not my screenshot)

When opening our project, I have to wait for the editor to load (to load assets of opened scenes) and it's frozen in the "create new scene" state, useless for like a dozen of seconds if not more. Couldn't be a similar feature to "loading tips" used in Godot editor?

@KoBeWi
Copy link
Member

KoBeWi commented Jun 5, 2020

@mnn You could make a separate proposal for this. But keep in mind that the loading time differs. For me, only the initial project load is long enough to be able to read any tips. And it might get shorter if editor makes use of parallel loading.

@mnn
Copy link

mnn commented Jun 5, 2020

If that was as easy as paste my previous post, I would. Since the feature would most likely be useless for me (it would be short beginner tips, IMO advanced ones would be either too long or too specific), I don't really feel like filling forms (the rigid proposal template) in a language which is not even my native.

Still don't understand why a user of an engine should be required to know what an engine module/addon has access to / is capable of in order to submit a proposal.

@KoBeWi
Copy link
Member

KoBeWi commented Jun 5, 2020

Still don't understand why a user of an engine should be required to know what an engine module/addon has access to / is capable of in order to submit a proposal.

Because there's too many feature requests, so we have to filter them out somehow. See discussion in #779

As for this feature, since it was basically rejected, I actually have an idea to instead make a documentation page that lists all useful things that are otherwise hard to find. We could make it easily accessible somewhere in the editor and this should be enough.

@Cerno-b
Copy link

Cerno-b commented Dec 11, 2023

Although this is closed, a few thoughts in case this ever gets renewed:

Like @Juankz I like the PyCharm TOTDs and leave them enabled, because I encountered a great tip once and that changed my mind on the whole system. For me, a single click to close the dialog on startup is worth the potential knowledge gain. I don't follow the notion that it is a nuisance, because it's literally a single click to be rid of the dialog forever.

However, a feature like this lives and dies with excellent curation: If the tips are concise, helpful and create a potential "that's cool, I didn't know that" effect, I think a TODT-system has merit. If it's just walls of text and mini-tutorials I wouldn't want to read it either.

I agree that it's a lot of work to collect and curate and translate the tips, but that is true for everything we do in the docs and we do have a Best Practices and Troubleshooting section which are also maintained and translated. So if it's worth having, it's also worth maintaining I think.

The question is whether it is worth having though. So far, feedback seems to be mostly negative. I wonder if it might make sense to start collecting tips, e.g. in the docs (see #3625) and then get some feedback on whether someone found something useful in there. If true, then decide to move it to Godot as a TOTD system of some kind.

I also believe the strengths of a TOTD are not where it's aimed at the beginner, but rather the intermediate user who is just fluent enough with Godot to work with it, but still doesn't have a deeper knowledge of a lot of shortcuts and best practices. As a beginner I would probably be overwhelmed as well with a mountain of info.

As for getting swamped with unhelpful tips on features people don't use, there could be the option to set up the TOTD to include/exclude certain topics (e.g. show no 3D tips, etc.). If the tips were present in the documentation, they would be grouped by topic over there already, so enabling/disabling certain topics could follow naturally from there.

@Calinou
Copy link
Member

Calinou commented May 23, 2024

I've been thinking about this again lately. Maybe tips of the day could be displayed below the progress dialog when there's a long EditorProgress operation going on (for more than 5 seconds or so). This applies to things like resource (re)importing, baking lightmaps, and so on.

This would allow for having unintrusive tips display when they're the most relevant (i.e. when you don't have anything else to do in the editor at a given point in time).

@fire
Copy link
Member

fire commented May 25, 2024

Something actionable is creating a place for tips and seeding the list with a few.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

10 participants