New UI Mod Design - Feedback Requested!

Ok – I’ve been toying around with the UI mod code for a bit now and I feel like I can create a new ui mod for us.  I’m not exactly sure what info I want to display and would like some feedback.  I’m going to post a few mock ups and I’d like some feedback. 

First – here’s just the standard UI with the latest enhanced UI mod on.

 

No dialog box

Now – here’s the basic stat info that already exists in game, but you have to go through a few clicks to get to it

normal dialog box

As you can see, there’s some useful info there, but at least imo, its annoying to get to and its placed way too high in the UI.  If I wanted to just keep that functionality, I’d move the box to a better location.  If so, I’d mod it to look like this and have it automatically displayed without any clicks required.

Here’s what that would look like, roughly. 

Mod1

So, I could just mod it like that and add in additional stats and make the dialog box larger/text small… w/e.  I could believe I could display similar teammate info (not sure if that info’s locked down or not atm.  But if its not, then I could make something like this:

Mod2

Of course – that’s using up a ton of space and probably not ideal – but it tells you at a glance if you have a teammate with no armor, who’s got speed on your team, etc.  I potentially try to shrink down the dialog boxes so that all 5 would fit next to each other at the bottom. 

And last thought – I could try to modify the existing team panel so that all of these stats would be combined… that would look something like this:

Mod3O

Obviously, I’d pretty this up and you wouldn’t see the crazy distortions, but this way you’d get the portrait with hp/mana along with all the stats.

Here are a few of the new stats we could display if uberfix is used:

New BuffAffects:

  • EnergyAdd
  • EnergyLeech

Existing BuffAffects:

  • Absorption
  • AbsorptionMult
  • MagicResistance
  • MissChance
  • Invincible
  • StunImmune
  • DebuffImmune
  • BountyGivenMod
  • BountyReceivedMod

Weapon BuffAffects:

  • SplashMult
  • DamageRadius
  • FiringRandomness
  • MetaRadius
  • MetaAmount

Anyway, what do you guys think?  Is it just way too much clutter?  Does anyone else think having some of this info more easily accessible would be useful?  I’m not planning on moving on this quickly or anything, but I do want some feedback and to gauge interest.  Thanks for reading!  Also, if you have an idea for some data you’d like to see displayed that I didn’t mention, do tell.

8,223 views 21 replies
Reply #1 Top

NT

Reply #2 Top

Just what I personally would like the best. Keep the old way of showing health/mana. These are most important things to see in battle. When I mouse over that demigod's picture, I can see hit items (I don't always need that to see in battle, so I don't need to see it at all times). Other stats, although would be good, to know especially the movement speed, but again I don't need to see it at all times (others might need), so I'd like to see this info just like the items of allies. When I mouse over specific ally. Seeing them all at once without mouse over.... Would use lots of screen, which I don't really like, as seeing map is more important...

Reply #3 Top

Biggest problem with this is space (I personally like Demigods minimalistic interface). Are you running the game in 1900x1600? Resolutions below that (especially 1280x1024 or 1280x768) would not be of much use (and to some degree players who cant run highest resolutions might be at a small disadvantage; although one could argue that they already got a disadvantage).

 

Other than that I probably would not put too much extra info except for the most vital stats in there (personally Im a bit of a less is more person). Best might be if there would be an "easy" option for everybody to personalize what is shown (easy like "open the file and change value a to 1 or 0 to enable or disable")

Reply #4 Top

Thanks for the feedback - hope to hear from more folks as well.

So, Dark, if I understand you right, you'd like to see a little more info when you rollover a teammate (like speed, etc - just some additional stats).  Do I understand that right?  And Poekel - good point.  Yes - I run at the highest rez, so I might be doing complete overkill and what I'm thinking would be crap at a lower rez.  I'd have to try that out and see how it looks in test.  I'm also not sure about setting up a lua file so that you could edit it to enable or disable some settings. 

Reply #5 Top

I think make the standard infobox appear when you mouse hover over the teammates health/mana box, same was as their inventory currently does.  And if you mouse hover over your DG's avitar in the middle you're own stat box appears as it does now with a couple of clicks, but disappears when you mouse away.

Reply #6 Top

Extending the rollover display to include some extra info wouldn't be too difficult.  That would be the best way to show teammate stats.  You'd need to keep things pretty minimal for readability anyway; nobody wants to have to sift through irrelevant teammate stats to see the few things that matter, like damage, ROF, speed, etc.  You can already infer a lot of these stats from equipment and character choice, of course.

Expanding the two inventory stat displays (normal and shop) is a bit trickier if you intend to support display resolutions under 720p, as there isn't much vertical space.  There's also no horizontal space to be had without radically altering the structure of the entire HUD window-- which is a lot of work, especially if you're trying to replace window frame textures.  For the minimized stat display, you should be able to just double the vertical or horizontal size of the control, and duplicate the frame bitmap, avoiding the texture replacement issue.

It is possible to add multiple optional layouts selectable via buttons/hotkeys and saved to preferences, but that would require a lot more time, energy, and expertise.  I would say that the amount of effort this requires far outweighs the potential value of the extra information, and the whole thing is best kept as compact and compatible as possible.

Reply #8 Top

Quoting Darkliath, reply 7
Yeah, Pacov, just that. As LordPoekelfleisch said, we might not have resolution big enough to fit everything on screen. I am playing on laptop, which doesn't have a large screen, so I don't like not too important information to fill the screen...
End of Darkliath's quote
i have widescreen i don't care about the cleaner:P

Reply #9 Top

It's a tall order, but the best solution would be to implement a minimalistic design and a full design.

I personally have a ton of screen space to spare and often wish the UI allowed me more info on-screen. These stats, War Ranks and Death Timers being the main things.

 

:fox:

Reply #10 Top

Movement
Armor
Evasion
Stun Immune
Bounty Given

Those would be the things I am interested in knowing in an extended UI.

Reply #11 Top

I don´t know if it can really be useful during gameplay since I'm not aware what I should do with that information.

But more information is never a bad thing. I don´t know if it is makeable but how about choosing by yourself if you want less or more? If there's an easy way to make that possible, what should be against it?

 

If not, well, less my more.

Reply #12 Top

Quoting LORD-ORION, reply 10
Bounty Given
End of LORD-ORION's quote

That's a fun stat to see methinks.  Question, though, miri - how does this number work?  Is it continually updated with the amount a dg would be worth it they are killed?  If not, what does it show?

Reply #13 Top

It does not show actual bounty.  It's a buff value, a multiplier that is always at 1 for all players, including AI.  It does not reflect the demigod's level and does not show the amount of gold killing that demigod will net.

It would be pretty simple to copy the same formula the sim uses to actually calculate bounty, replacing the unit variables with sync variables.   Of course, this would only work for self and teammates, and is probably not worth including in the rollover display.  If there's a way to get enemy level via userunit handle, I don't know what it would be.  If you can, then you could simulate the amount on an enemy rollover minus the two (unused) bounty buffs, but any mod that uses the buffs would make it inaccurate.

 

I'm not sure how relevant teammate StunImmune on rollover would be, but otherwise I agree with the things that LO suggested, and would add DamageTakenMult to that list.

DamageTakenMult, Evasion, and StunImmune would be prime candidates for addition to the player UI, and should be squeezable into the existing space (at least in the non-shop display).

Reply #14 Top

Quoting OMG_pacov, reply 12

Quoting LORD-ORION, reply 10Bounty Given

That's a fun stat to see methinks.  Question, though, miri - how does this number work?  Is it continually updated with the amount a dg would be worth it they are killed?  If not, what does it show?
End of OMG_pacov's quote

 

How about showing bounty and exp as it is earned same as damage/heals/mana (health crystal)... So damage is red,mana blue, heals green, criticals yellow. Make gold earned as small purple number and lets say EXP an orange number; appearing in the same way above the DG gaining it.

This would be cool, and for players wasting time runing around missing exp and gold they'd notice the lack of these coloured numbers. Also it would tell you if you actually ARE earning exp for that creep wave zapped in the tower and you aren't sure if you goit in range in time. (same for bounty gained when you're pushed on your tower and unsure if you hit those creeps enough to get some gold).

 

Reply #15 Top

Is there somewhere in the lua that we can tell exactly how much bounty a dg is worth?  I'm not sure if its based on warscore or just on dg level.  That said, if we could figure that out, does it sound like something we could display?  For instance, if I rolled over an enemy dg, perhaps that's something we could calculate the amount a kill would be worth and an assist - then just display that over or under their health/mana bar... but we'd have to have access to the dgs current level (which I'm not sure if that's global or not).  So to be clear, I'm talking about creating some lua that would check the level of an enemy dg, and then we'd calculate the payout for kills (eg ub is level 10 - display 10k gold, etc).

edit - i should just read your posts in their entirety, eh.  :O  Guess you already answered this one, miri!

Reply #16 Top

Float text on unit gold/xp events is certainly doable, even easy - but I'm not sure if you can create new colors, or only use the ones available.  There is an unused purple IIRC, but that's the only one.

Edit:

Quoting OMG_pacov, reply 15
edit - i should just read your posts in their entirety, eh. Guess you already answered this one, miri!
End of OMG_pacov's quote

The formula is two pieces - the first half in /lua/sim/conquest.lua, lines 1101 (kill) and 1154 (assist) and the functions those call in /lua/game.lua lines 882 (kill) and 894 (assist).

The game.lua part does most of the work, calculating bounty from hero level, AI difficulty, and number of assists (for assist bounty).  The conquest.lua part just factors in the buffs and handles the actual resource give.

Also notable, the bounty multipliers only affect kill bounty, not assist bounty.

 

Reply #17 Top

If there's only purple for that then surely both gold and exp can appear in purple, most times you'll earn both simultaneously or just exp depending on the damage you've inflicted the creep(tower kill). So perhaps float text with two lines in same color and a letter to tell what it is eg:

20e10g

Reply #18 Top

Quoting miriyaka, reply 16
The formula is two pieces - the first half in /lua/sim/conquest.lua, lines 1101 (kill) and 1154 (assist) and the functions those call in /lua/game.lua lines 882 (kill) and 894 (assist).

The game.lua part does most of the work, calculating bounty from hero level, AI difficulty, and number of assists (for assist bounty). The conquest.lua part just factors in the buffs and handles the actual resource give.

Also notable, the bounty multipliers only affect kill bounty, not assist bounty.
End of miriyaka's quote

sorry - just to quickly backtrack, though - do we have access to the enemies current level or nah?  Apologies if you covered this... I have an amazing knack for missing things you say miri and then seeing them immediately after i post. 

Anyway, if this is doable, can you assist with this bit of code?  I'm not looking for the ui piece, just math to make it happen.

And again, I have no intention on knocking this mod out at high speed.  I'm going to use this to help me learn more about ui coding and it won't happen overnight.  Thx.

Reply #19 Top

oh - note to self - create a mock up of what things might look like and see if folks dig it.

Reply #20 Top

as for enemies level, surely we already have this info. I check the score all the time, shows their level and war score.. is this what you mean?

Reply #21 Top

Quoting OMG_pacov, reply 18
sorry - just to quickly backtrack, though - do we have access to the enemies current level or nah? Apologies if you covered this... I have an amazing knack for missing things you say miri and then seeing them immediately after i post.

Anyway, if this is doable, can you assist with this bit of code? I'm not looking for the ui piece, just math to make it happen.
End of OMG_pacov's quote

Yes, it is, just not directly from the user unit object for that enemy.  It's kept in the UI-global Sync.Score table, which is updated every tick with the latest level.  It should be pretty trivial to add a SyncCallback in HUD_rollover.lua that keeps an up-to-date copy of the scores (or at least relevant information, level, etc) much like HUD_scoreboard does.  The info available in Sync.Score is a copy of self.Score in /lua/AIBrain.lua.AIBrain line 301 - this is a shared table between AIBrain and the hero unit, and conquest.lua copies it to Sync.Score[armyIndex] every beat.

In a nutshell, it would be something like this:

Code: c++
  1. --Keep an up-to-date copy of scores, keyed by army index
  2. local currentScores = {}
  3. function UpdateScores()
  4.     if Sync.Score then
  5.         currentScores = table.merged(currentScores, Sync.Score)
  6.     end
  7. end
  8. SyncCallback:Add(UpdateScores)
  9. --Get level for an enemy demigod from currentScores
  10. function GetHeroLevel(unit)
  11.     --Whenever you're dealing with a 'real' game object, always
  12.     --make sure it still exists and isn't dead, to prevent errors
  13.     if unit and not unit:IsDead() and not table.empty(currentScores) then
  14.         return currentScores[unit:GetArmy()].HeroLevel or 0
  15.     end
  16.     return false
  17. end