I want to create a graphical interface for inputing skill build orders for an RPG game. A skill build is **an ordered list of (skill, number) pairs**, like this <sup>(see footnote)</sup>: (A x1) -> (B *) -> (C x2) -> (A *) I want to create a graphical interface that can add items to this kind of list, preferably in any position of it. The main idea I am having now is to make some sort of drag-and-drop interface, with icons representing the skills current build = (A x1) -> (B *) -> ... ----------------------------------------- amount: [ 1 | 2 | 3 | 4 | * ] (radio buttons or drop-down selector) skills: +---+ +---+ +---+ | A | | B | | C | +---+ +---+ +---+ Clicking an icon would add the item-number combination to the end of the list (the most common place to add things to) and dragging it to a spot on the result list would cause it to be inserted there instead. But I imagine having to do multiple clicks to select the number and the icon would be awkward. An alternative might be having a button for each possible pair: +----+ +----+ +----+ |A *| |B *| |C *| +----+ +----+ +----+ +----+ +----+ +----+ |A x1| |B x1| |C x1| +----+ +----+ +----+ +----+ +----+ +----+ |A x2| |B x2| |C x2| +----+ +----+ +----+ //and so on But then I think it would get way too cluttered. **What is the best way to input such a list of pairs?** **Are there any places where a similar problem was solved and where I can take inspiration from?** Some design considerations: * I have 4-5 skills and the numbers range from 3-5 (and the * wildcard) * Some numbers (1 and *) will be selected more often then others (2,3,4). All skills are equally likely to be selected. * If we choose an asymmetrical design, skills should be prioritized over numbers. * I am primarily interested in obtaining a fast and clean workflow. It is OK if the final result ends up a little complicated or unintuitive. * This is not intended to be the default interface. I want this to be faster then the simple but slow interface where each skill is entered manually for each level. ------------- For the curious, a pairing like (A x1) -> (B *) -> (C x2) -> (A *) can be interpreted as As a first priority, level up A once As a second priority, level up B whenever possible As a third priority, level up C twice As a fourth priority, level up the remaining levels of A The main reason for using this is because describing directly what skill to take at each level is longer and less clear: A, B, C, B, C, B, A, B ... // this is simple, but less clear