Introducing! A custom UI system for Warcraft 3 with pretty decent rendering. This system doesn't use any third party tools nor any Warcraft 3 hacks.
1. Blue printing
We spent the first three days to create the basic system mechanisms (creating & adding font assets, basic textsplat system, etc.) and to write down all the math problems and solve'em, as well as applying basic implementation of those solutions.
The scheme above solves the dialog box and character's positioning based on camera target distance and angle of attack.
The next day, we are trying to allow offsetting for the dialog box, new problems appears and more solutions produced (we were kinda low on papers):
What's really fun was implementing our solutions into our code. And what's more exciting were that our solutions literally solved all of our problems and let the system to be more than 90% working! The rest was just patching the system to perfection! I'm not sure if I have photos for this part. :D
3. Progress reports
The first day, we made the system works for default camera fields only. And the rendering was very poor.
At the second day, we work a lot on rendering and putting camera fields (z offset, angle of attack, rotation) into account. Resulting the system to work on any camera rotations. The rendering was pretty perfect at this stage as we forced it to use maximum accuracy. But that costs some rendering problems for the texts above the platform, so we reduced the accuracy on finalization.
This is the finalized version of the system. We added camera target distance and terrain z differences into account. Making the system works flawlessly in any circumstances (any camera properties and any location). Also now the system allows refreshing UI positions.
That's it. Yep, sometimes we have to do complex things just to produce something ridiculously simple. That's what's sad but fun about Warcraft 3 modding. :D
We are sorry that we don't make/edit the videos with decent effort. Those are more like progress reports. I just hope you enjoyed everything. Thanks for reading, stay tuned! :)