CCP MC Peanut wrote:Hey Everybody, CCP MC Peanut here--new to the forums (and this is my first post). I'm a Technical Artist here in Shanghai and was mostly involved in the HUD upgrade for the Project Legion Prototype you saw at Fanfest. I'm excited you guys noticed the work and are discussing it. The feedback is super awesome too (so awesome I forwarded the post to a lot of other devs). I thought I would jump in and give a little further explanation about what we did and potentially where we can go from here.
The HUD that you see in the Project Legion Prototype showed at Fanfest is now being rendered inside the 3D Scene. This is a significant change. While what you saw in the demo isn't incredibly different to what was there before, I want to emphasize that we have completely changed the underlying system for creating HUDs and have built a pipeline that puts the artist and designers much closer to the implementation. What you saw was the first implementation with the new system. And while the demo doesn't demonstrate it all--everything is working. In a very short time (a few weeks maybe), a few of us rebuilt the HUD, recreated all the logic, and tuned it to a slightly new visual design.
I'd love to go a little more in depth and explain some of the cooler benefits we are finding with this change:
Artist and Designers can iterate like crazy:
Unreal already has a lot of robust tools available to it, so why not take advantage of them. One of the things the artist love the most is being able to play the game with the editor open and update their material parameters in real-time. The 3D HUD is heavily utilizing the Unreal Material system. For example, all the 'bars' stem from the same base material, which has parameters to control the scale of the ticks, space between, color (including switching the color over position), flashing (speed and color). Tuning these parameters in-game is pretty awesome and very easy. Another example, the most obvious one probably, is that since it is 3D, we can change the position and layout very easily--it is as simple as moving it in the 3D package (Maya) and re-importing the geometry.
Logic outside of code
This was an interesting choice, but I believe it was the right one. We are exposing game data to the artist/designer through events in the visual scripting system, called Kismet (if you aren't familiar with Kismet, it is a node based scripting tool provided within Unreal that allows artists and designers to do more 'programmatic' things). With this change, much of the logic is in the hands of the content creators--the programmers are only responsible for providing the information when applicable. This sounds like it could become overwhelming, and we have been careful about not suddenly dumping everything in their laps. I can give one example. When your shield value changes, an event will be fired (a kismet event inside the HUD map file). This event will expose the current and max shield value. Luckily, our bar material has a max and current parameter input, so we just update the values (using a Kismet action) and all is good. While this is something that sounds like it could be completely programmatic, it is so much nicer to give the content creators the flexibility. If we wanted to, we could trigger a distortion animation every time the armor value changed, and as the armor got lower, the distortion could be more significant. This would require zero programmer support.
Lots of technology to utilize
Because we are in 3D we have access to all the rendering technology as other 3D stuff (suits, weapons, environments). We can also utilize the same tools (materials, modeling, an animation) that our 3D artists are familiar with, so the transition for workflow, was not so bad.
Capacity to be Dynamic
I can't make any promises about racial HUDs, but we are definitely in a much better position to be able to do them. It is very easy to create new 'visual' components without needing to rework the data hookup--and they would be lightweight and low cost.
There is more, and I could go on, but perhaps that is better for follow up posts. Our hope is that we have built a system the is flexible enough to give us more options to do the kinds of things you guys are asking for. Regarding these requests, I can definitely weigh in on their possibility within the system, but I am unable to comment on the likelihood (that is someone else's call). Please keep the feedback coming, and feel free to post follow up questions.
thanks!