Tuesday, November 10, 2015

Few words about tools design

Once again I will return to topic of tools. Mostly because right now this is the part of code I spend most of my time in. 

I will focus in this post on one dialog: Variables Set Editor This one dialog may sound simple but if you start thinking more about it it's really complex tool. 

So let's start with short description what Variables Sets are then lets move what we want achieve and in the end look on real implementation of this problem.

Variables Set

This is really simple system which allow you to specify some kind of properties. Right now I support only values of types: 

  • StringID
  • Float
  • Vec4.
Whole system may be use to store values like: life, attacks parameters, movement speed etc. In my case to this data have also access animation system which may request some kind of information which later may be use to control blends and generally its behavior.


Because this is simple list of variables you want to be able to have some kind of hierarchy. i.e:
NPC object contain [local set] which inherit values from [Clones set] which inherit values from [enemies set]. Change in inherited variables will be apply to all not override values. 

Dialog requirement

Short: You should be edit this stuff in nice UI.

Implementation 

Firs approach
Thanks to Qt designer this was really easy. As you can see on right everything look really nice you have section for name, you see right away type of variable are able to modify value and see what value you inherit :] If you want to add variable you using context menu (under Right Mouse Button). 

Of course this wouldn't be so easy if I ended here:P I forgot my dependencies list so I done small upgrade and finished :] Final result bellow:

Final dialog

Summary

As you can see creating of good tools is not easy. You often need go back and forth to create something really useful. You don't want to modify everything by scripts in which you can make easily mistake. Good tool will for sure save you a lot of work and return effort that you spend on it. And the tool you seen on screenshots are for sure not good one.



My first felling when I seen this window in Qt designer  was: Something is really wrong with it. And I was right. Intuition for UI design is not something you are not born with. This is something on which you work by designing and seeing tools in use. Not in testing. With time you notice that you notice a lot of things on designing step.

So what is wrong with this dialog ? 

  • We have only 5 values and your eyes don't know on what look.
  • There are a lot of information which take a lot of space.
  • Not all information have the same importance.
  • References will be used from time to time and they taking big part of window.
  • I'm sure that in real data finding value will be funny task :]
  • Good luck with tracing from where you inherited value :)
  • New user for sure will know what to do :] they always know all shortcuts and functionality.
So here I will end this post to not make it too long. In second part we will focus on real thing :] To next post soon :] 
Greg






No comments:

Post a Comment