I am a huge fan of the Halo franchise, and one of the effects I couldn't help but notice was
how Bungie
approached the HUD in their later entries.
In first person, your HUD was curved inwards. In third person, the HUD would dynamically flatten out
to its
true 2D appearance.
For some odd reason, I was really interested in this effect, and I always wondered how Bungie
implemented this
system. I decided to recreate this effect myself in Unity and C#.
My early iteration of Curved UI Utility was slow. Pretty slow. This was because I was rendering the
HUD twice
on two separate canvases; once as a flat image, then another passed through a shader which did the
curving.
I later scrapped this iteration and started anew. Because Curved UI Utility was going to operate on
each UI
element every frame, I wanted this to be fast. Not only that, I also wanted the package to be easy
for game
developers to implement.
Curved UI Utility isn't nearly as big of a project compared to ChroMapper or Hive, but it did give
me a
newfound respect for real-time code optimization, and how fast systems need to be to create high
performance
games.
Curved UI Utility also taught me the difference between parameters passed by-value and by-ref, and
how I could
take advantage of those to achieve fast code.