That would also be a solution although not as easy to use.
Another use would be that each integer(32bit) could potentially hold 32 user created boolean values. When I realised there was no GetVirtualButtonIsVisible() command, I had to create an array of booleans to hold this information for me, what a pain
. With user data I could have just designated a single bit to hold this information for me.
User data is pretty common in various SDKs.
That said, it's not a high priority for me since my game is nearly done and I will probably try tier 2 for my next game, partially because of this limitation.
EDIT: For tier two I would request a void pointer instead, the user data could be anything you like then.