Unity3D, Extensions, and Developer Experience

Lately I have been working on an extension for Unity3D.

Why?

I tried to make a 2D platformer game and I quickly became frustrated with the amount of effort necessary to connect objects.

Here’s a few gifs to express my main issues:

  • When you create a joint, you need to tweak the values in the inspector before being able to use the handles:

joint-editor-before

  • You need to move the connected anchor manually by hand to align it with the main anchor:

moving-connected-anchor

 

  • There’s no visual feedback regarding when you can interact with the interface, unless you click:

no-feedback

 

  • And so on…

In order to prevent myself from going crazy, I decided to get rid of these problems. Then I would be able to work on the game itself!

My main goal is to better the user experience of game developers (including myself).

I have taken Nielsen’s 10 usability heuristics for user interface design as a guide to help me develop the extension.

The improvements I have made are as follows:

  • Dynamic cursor icons and tooltips:
    • This is one of the most useful additions I have done, as it reduces a lot of uncertainty about the system status.
    • You now know when you can interact with the interface, and what they will do.
    • The cursor changes to a move symbol when your actions will move the handle, or a rotation symbol when your actions will rotate the handle.
    • When you start dragging, the icon changes slightly, that’s great instant feedback!
    • I also highlight which area is interactive.

dynamic-cursor-icons-and-tooltips

  • Context menus:
    • When you right-click a handle, a context menu pops up, and lists relevant options, depending on the Joint type.

context-menu

  • Anchor Locking
    • Joints have anchors on the bodies that they want to connect
    • Sometimes, when you move one anchor around, the other anchor, or some other property of the joint needs to be configured
    • Anchor locking automates the unnecessary repetition in this process

anchor-locking

 

  • Customizable visual handles:
    • The user can customize the size of the handles, making them larger or smaller, depending on their preferences
    • The graphics of the handles can be easily replaced

customizable-visual-handles

  • And more:
    • Drag-drop object references onto the handles to connect
    • Hold shift to show anchor locking buttons
    • Hold control or command to have the anchor snap to points of interest

and-more

 

  • And even more! But I’ll let you discover the rest 😉

Here’s the GitHub repository for it: https://github.com/toxicFork/Unity-2D-Joint-Editors

Leave a Reply

Your email address will not be published. Required fields are marked *