The Quantum Console QuickStart is Unnecessarily Frustrating for New Users

Issue #117 resolved
Jim U created an issue

ISSUE 1 - README is buried deep in the Asset folders

After importing the Quantum Console package, there is no obvious documentation or help on how to use the product. As a first time user, the first thing I look for is the documentation.

I had to search under Assets > Plugins > QFSW > Quantum Console > Source to finally find readme.pdf

ISSUE 2 - [Getting Started Section] First paragraph is inaccurate

The first paragraph of the “quickstart.html” page reads:

In order to get started as quickly as possible, simply navigate to Assets/Plugins/QFSW/Quantum Console/Source/Prefabs and add the Quantum Console prefab to your scene. After this, you are ready to try out Quantum Console!

I created a new project, followed these instructions, and then spent a few minutes clicking on the inactive command input field, and wondering why I couldn’t type anything. It occurred to me that it was odd that there appeared to be UI Objects but without Canvas nor EventSystem objects. However the quick start instructions assured me that I should be now “ready to try out Quantum Console” at this point. I took this instruction at face value and assumed the problem laid elsewhere.

I figured it might be a Unity issue, so I exit unity, saved all my applications running on my computer and rebooted. 15 minutes later, I tried Quantum Console running again but was again frustrated with an unresponsive command field.

I now understand that I need to manually add an EventSystem object to the scene to use Quantum Console. I also had to add TextMeshPro as well. The quick start guide should warn the user of these steps before saying “You are ready to try out Quantum Console”… not after.

ISSUE 3 - The Links in README.PDF are fake

Frustrated, I assumed the quick start instructions were out of date, so I clicked on the “full documentation” link, but nothing happens. Clicking on the other links (email, discord, issue tracker, twitter, demo) in the readme also does nothing. So now I try to cut-and-paste the full documentation URL, but find I cannot even select any text in the quick-start guide.

Frustrating…

ISSUE 4 - [Adding Commands Section] - The second paragraph in is inaccurate

The next section describes how easy it is to add a command to the console, saying that:

To do this, you will need to use the [Command] attribute.

So you simply need to add a “[Command]” attribute to your function. This instruction is also incomplete. You need to add “[QFSW.QC.Command]” or include “using QFSW.QC;” at the top of the file.

The fact that you have to use the “QFSW.QC” namespace appears nowhere in the online version of the quickstart guide (https://qfsw.co.uk/docs/QC/articles/quickstart/quickstart.html)

ISSUE 5 - [The man Command Section] First sentence is inaccurate

It reads:

The man command will generate a user manual for the specified command. By itself, it will be able to display all the available signatures of the command

Following along your quick start tutorial, I had just created an integer version of “Add”. So to test how additional signatures are documented, I did the most straightforward thing and added a “float” version of the “Add” function:

public static float Add(float a, float b)

The new signature is not added to the manual. Instead a orange warning message is output:

Could not add GameManager.Add to the table as another method with the same alias and parameter count already exists

I feel you should mention that only certain additional signatures are supported, not “all”. It would have saved me some time and frustration.

SUMMARY

You have an awesome product. I’m very impressed by my initial impression of it.

I feel like I’m reading marketing literature instead of documentation. Telling the user how a feature can be used with only a single step sounds great… Until he finds out that the documentation author left out a several other steps, or that the feature is only partially implemented.

Comments (25)

  1. Yusuf Ismail repo owner

    Thanks for all the feedback! I want the documentation to be as easy to understand as possible and this is valuable to help me do so, so I’ll address each of your points individually

    ISSUE 1 - README is buried deep in the Asset folders

    The README is in the root of my products folder. Where else would you put it? The reason I do not put files anywhere outside of my root is it annoys a lot of people as it’s polluting their root folder and not being a self contained package. I also have a link to the online docs in my description

    ISSUE 2 - [Getting Started Section] First paragraph is inaccurate

    The requirement of the EventSystem is mentioned at the end of the paragraph, however I agree that this might still be unclear. I can move it into the beginning as a checklist, along with the installation of TMP

    ISSUE 3 - The Links in README.PDF are fake

    Was not aware of this. Will try to fix it

    ISSUE 4 - [Adding Commands Section] - The second paragraph in is inaccurate

    The QFSW.QC namespace is mentioned on the homepage that it is required, however again, agreed; not clear. I can see this remedied one of 3 ways

    1. Change the examples to use [QFSW.QC.Action]
    2. Change examples to have using QFSW.QC
    3. Mention again in quickstart (along with possibly 1 or 2 at once)

    Let me know what you think works best

    ISSUE 5 - [The man Command Section] First sentence is inaccurate

    I wouldn’t say its inaccurate, man WILL display all signatures of your commands, however you cannot have 2 commands with the same parameter name and count as indicated by your warning. The exact details are talked about in the commands documentation in restrictions

    https://qfsw.co.uk/docs/QC/articles/docs/commands.html#restrictions

    Glad that you liked it, and sorry about the rough introduction. I’ll aim to make this all clearer where I can

  2. Jim U reporter

    After importing from the Asset Store, readme.pdf appears the Source folder:

    • Assets/Plugins/QFSW/Quantum Console/Source/readme.pdf

    It's surrounded by dozens of other files and hard to find.

    Placing it in a higher level folder and capitalizing it would make it easier to find, for example:

    • Assets/Plugins/QFSW/README.html
    • Assets/Plugins/QFSW/README-Quantum_Console.html
    • Assets/Plugins/QFSW/Quantum Console/README.html

  3. Yusuf Ismail repo owner

    I can’t put it in QFSW/ as that then following that rule with my other products would cause a file clash

    I can try QFSW/Quantum Console/, not sure if the upload tool for the asset store allows me to exclude certain folders (under that folder I have some development folders that don’t ship like my unit tests and documentation source code)

    Additionally, with V2.4.0 I will be moving all code into Source/Scripts which should help alleviate this regardless

  4. Jim U reporter

    The requirement of the EventSystem is mentioned at the end of the paragraph, however I agree that this might still be unclear. I can move it into the beginning as a checklist, along with the installation of TMP

    The problem I had wasn’t with anything being unclear, it’s the information is presented as a step-by-step tutorial: i.e., “Do step 1, and X will happen…”

    If X doesn’t happen, it’s pointless to continue reading a tutorial because the following steps wont work; they depend on the first step. It’s best to find my mistake or start over from the beginning.

  5. Jim U reporter

    The QFSW.QC namespace is mentioned on the homepage that it is required, however again, agreed; not clear. I can see this remedied one of 3 ways

    I think its preferable to present learning material in a consistent manner. Since you are providing the code needed to complete this quickstart tutorial, I think it best to present all the coding requirements as code samples:

    using QFSW.QC;
    
    ...
    
    [Command]
    public static int Add(int a, int b)
    {
        return a + b;
    }
    

  6. Jim U reporter

    I wouldn’t say its inaccurate, man WILL display all signatures of your commands, however you cannot have 2 commands with the same parameter name and count as indicated by your warning. The exact details are talked about in the commands documentation in restrictions

    I don’t disagree. I assumed that QC’s definition of signatures was the same as c# and c++ which include parameter types in the signature definition.

    After I coded float Add(float a, float b), I just felt disappointed when I got an warning message instead of the expected multi-signature manual entry.

    Perhaps change:

    See Included Commands for a list of included commands

    to

    See Included Commands for a list of included commands. See Restrictions for supported signature definitions.

  7. Yusuf Ismail repo owner

    Revised folder structure would look like this; still think readme would need drawing out further?

  8. Yusuf Ismail repo owner

    ISSUE 2 - [Getting Started Section] First paragraph is inaccurate

    This should be addressed by the newly revised quickstart instructions

  9. Yusuf Ismail repo owner

    ISSUE 4 - [Adding Commands Section] - The second paragraph in is inaccurate

    All code snippets now come with the relevant usings; the mention of the QFSW.QC namespace has also been added to the quickstart page

  10. Jim U reporter

    Add an Event System to your scene if you do not already have one

    “Event System” is ambiguous.

    It is not clear whether the user must add an EventSystem GameObject to the scene, or an EventSystem Component to some object.

    • Editor > Game Object > UI > Event System (a GameObject)
    • Editor > Component > Event > Event System (a Component)

    In Unity 2019, An EventSystem GameObject contains three components: an Event System, Standalone Input Module, and Base Input (Script)

  11. Jim U reporter

    Revised folder structure would look like this; still think readme would need drawing out further?

    That’s better.

    Most distributions I’ve encountered follow this example. The project root contains a source code folder (src) for source code, a doc folder for documentation, and a README file which is the first thing I look at.

    I don’t usually open a source/src folder until I’m ready to view or edit source code. To me, “source” means source code, and I don’t expect to find documentation in a source code folder.

    The Assets/Plugins/QFSW/Quantum Console folder only contains a “source” folder. I don’t understand the purpose of the source folder. You could simplify your directory structure by eliminating it and moving your project to the “Quantum Console” folder. This would more closely follow the standard set by source distributed in tar files, git repositories and other unity packages:

    The readme for the massive Mirror package is in /Assets/Mirror/readme.txt

  12. Yusuf Ismail repo owner

    I do have folders next to Source, they’re just ones that I don’t want to ship (tests, dev tools etc) that are part of the repository. The problem is the limited Asset Store tools that don’t allow us to exclude certain folders, and only allow us to include everything under a common root, hence I use Source as that root

  13. Yusuf Ismail repo owner

    “Event System” is ambiguous.

    Thanks, I’ve added `GameObject > UI > EventSystem` to make it explicit

  14. Jim U reporter

    https://www.qfsw.co.uk/docs/QC/articles/quickstart/quickstart.html

    The term "processor" is introduced here without context:

    This prefab includes a QuantumConsole script that provides ***processor I/O***, auto complete, formatting and much more. You are free however to use your own prefab with the QuantumConsole script or to make your own script entirely, as all the core functionality resides in the ***static processor***.

    When I first read this sentence, I assumed you were referring to a CPU, and puzzled over what "I/O" means. My best guess was that QuantumConsole includes a command that reports CPU load.

    The reference at the end of this paragraph to the "static processor" is also without context and is confusing

  15. Yusuf Ismail repo owner

    Thanks, changed this to the following

    (a CPU statistics command does sound quite cool though)

  16. Yusuf Ismail repo owner

    I’ve now fixed the issue with the local docs. I believe that should be everything?

  17. Jim U reporter

    Consider dividing the information in “Getting Started” into two separate pages:

    1. Quick Start page intended to 1) showcase the basic features of QC, and 2) walk the user through implementing these features
    2. A Design Overview page that introduces the basic concepts the user must understand before customizing QC. References to components/classes/objects/data-structures can be linked to documentation, so if the reader is confused by a term or definition, a comprehensive explanation is only a click away.

    Right now, Getting Started is intermixing both of the above at once. I think two targeted pages would be easier to follow and more effective.

  18. Jim U reporter

    The revised paragraph still leaves me with more questions than answers:

    • does "I/O" refer to a formal system in QC? Or does it just mean an interface to the basic functionality of the product?
    • what is "the core?" A class? Component? Data structure? The basic functionality of QC?
    • While it's comforting to know I can use my own prefabs with the QuantumConsole script as well as rewrite it, I don't know why I would want to. I don't know what the QuantumConsole script does yet.
    • "all the core functionality resides in the "QuantumConsole Processor". The word "core" appears again. Unfortunately, I don't know what "core functionality" encompasses.
    • Is the core in "core functionality" the same as "the core" referred to in the first sentence? I don’t like having to read the second sentence to understand references in the first sentence.

  19. Yusuf Ismail repo owner

    The revised paragraph still leaves me with more questions than answers

    To be honest, this paragraph isn’t particuarly helpful to new users and only advanced users would particularly care about making use of the core directly - moreover, as QC has evolved its not quite so clear cut anymore; I think I’ll axe / simplify this section, in favour for a (in the future) architectural overview page that goes over how each component fits into the system and why. This page might become a maintenance nuisance however so will think about that more

  20. Yusuf Ismail repo owner

    Consider dividing the information in “Getting Started” into two separate pages:

    I think this is a good idea, but less critical and a bit tangential, do you mind making a seperate issue for it? So it’s still on my radar but not necessary for V2.4.0

  21. Yusuf Ismail repo owner

    Resolving this now as the remaining improvements are covered by the new issues. Thanks again for all the feedback!

  22. Log in to comment