Jump to content
newborn

0.33.4 - Fancy UI stuff

Recommended Posts

After a month of late nights, it's finally time to release our new UI update to the world. Although its still a work in progress, HUD and menus have been dramatically improved and we're excited to see what the community comes up with using the new UI scripting system. 
 
To gather all of these custom HUDs into one place, we've set up a new UI forum over at http://www.reflexfps.net/forums/ where (if it ends up anything like our mapping scene) you'll soon be able to find a masses of info and custom widgets.
 
We've also started sneaking in a few bits of art that you can check out in the "envtank" map. Stay tuned for some new weapon concept art and more information about the direction we're going in!
 
This is definitely not the end of our 0.33 updates. In the upcoming point release, we'll be expanding the UI system further, making some changes to knockback and weapon balance and squashing a few bugs.
 
0.33.1
 
Mapping

  • Added fullclip
  • Added envtank map to demonstrate current art usage examples
  • Fixed slime functionality

Engine

  • Added new Lua based UI system (which despite being a single bullet point, was a month of work)
  • Asset hotloading now included in public builds (for live-updating of HUD scripts).
  • Added SSAO
  • Crash report now detect spinlocks & fires off a crashreport if it occurs. (implemented on both dedicated server & clients)
  • Key is now bindable
  • Fixed lightmapping bug on maps with multiple texture pages with r_shader_quality 2
  • Fixed bug where probes were incorrectly not being calculated inside player clip
  • Server now reports location to steam (in gametags), client decodes this and it's used to display flag on server browser
  • Bind command now has states, for example "bind game mouse1 +attack" "bind me mouse1 +editorprimary"
  • All configuration is now in game.cfg (no more editor.cfg)
  • Bind command now supports ; for multiple commands on one key
  • Renamed game.cfg to game_default.cfg -- game.cfg is now created on first load if it doesn't exist. 
  • Renamed dedicatedserver.cfg to dedicatedserver_default.cfg -- dedicatedserver.cfg is now created on first load if it doesn't exist. 

0.33.2
 
Game:

  • Updated UI scripts to respect cl_show_hud 0
  • Server browser now has a "join server" button (rather than joining on first click)
  • Options menu now has an apply button for resolution / window mode / refresh rate
  • Hopefully fixed a collision routing bug causing client to freeze at 99% connected.
  • Added sorting by ping/map/mode/players to the server browser.
  • Added ui_reset command to restore the default UI config.
  • The saveconfig command now saves to game.cfg if no filename is given, regardless of any previous loadconfigs.
  • Added SVG versions of crosshairs 6 to 16.
  • Scoreboard has been moved to the new UI system

Bug Fixes:

  • Fixed bug where pressing delete in the console would start deleting command history too.
  • Fixed HUD being shown when freecam-spectating.
  • Fixed FRAGGED message being shown when spectating
  • Fixed UI crash in options menu when cl_playercolorX was set to something invalid.
  • Fixed bug causing UI colors to occasionally be wrong.
  • Fixed bug with enemy health being incorrectly exposed/restricted to lua scripts.
  • Fixed bug with team selection from in game menu
  • Fixed game clock being off center with default config
  • Fixed crash for people who delete their menu music

UI Scripting:

  • Exposed more NanoVG functions to Lua: nvgTranslate, nvgRotate, nvgSkewX, nvgSkewY, nvgScale, nvgArc, nvgElipse
  • Added Lua variables world.mapName and showScores
  • Exposed Lua table library.
  • The player.team Lua variable is now 1 or 2 (instead of 0 or 1)

Server:

  • Added sv_country command for dedicated servers. We try and automatically determine this, but it doesn't seem to be working for dedicated servers.

Art:

  • Added clock
  • Added alarm
  • Added cables
  • Added new style downward spot
  • Updated girder meshes to cast shadows
  • Optimised grate_128x128x8 mesh
  • Updated envtank with new assets

0.33.3
 
Fixes:

  • Fixed collision bug when players were outside of world bounds.
  • Fixed SVG rasterize crash bug

Improvements:

  • Improved the way kick votes are handled.
  • Dedicated server no longer auto-saves configs.
  • SVG texture atlas is now purged if SVG asset is updated
  • Added NVG_CCW and NVG_CW constants to reflexcore.lua
  • Clients must now be not responding for 120 seconds before the crash reporter kicks in.

Art:

  • Added fan mesh
  • Updated envtank map

Gameplay:

  • IC damage increased from 7 to 8.
  • IC knockback increased from 0.25 to 1.3
  • Item pickup radius increased from 16 to 20
  • Changes to global knockback rules to prevent IC cripple (among other things).
  • Player movement should now be more responsive when exiting teleporters.

0.33.4
 
User Interface:

  • Added a Options / Widgets menu.
    • This gives a list of all widgets in the game and allows you to adjust their position/anchor from the menu (rather than using the console)
    • This menu will also call an optional drawOptions() function for each widget, allowing widgets to draw their own options menu for players
    • See the Crosshairs options panel for an example
  • Added a PlayerSpeed widget
  • Added ui_list_widgets and ui_set_widget_zindex commands
  • Truncated various slider results in options menu to 2 decimal places

Scripting:

  • We now pass self parameter into widget.draw()/show()/hide()
  • Updated options menu to use self. rather than looking up global table each time.
  • ui_show_widget / ui_hide_widget now lists all the widgets if you pass in no param
  • Added Lua functions saveUserData() and loadUserData(). This allows widgets to save any lua object across application launches.
  • Exposed widgets table to Lua so scripts can see registered widgets.
  • Added special "ui_define" command. This is used to persist lua objects to game.cfg
  • Added zIndex variable to widget, for controlling the draw order of your widgets.
  • Replaced lua's internal "require" function with our own. This removes the capability of loading DLLs into Lua.
  • Exposed new Lua variable world.hostName
  • Exposed new Lua player variables: position, velocity, anglesDegrees, jumpTimer, weapon[n].maxAmmo. 
  • Exposed ALL pickups to lua (to spectators only)
  • Exposed pickup world position to lua (to spectators only)
  • Cleaned up spacing/tabs in Healthbar.lua

Art:

  • Added hanging chain meshes
  • Added chain hook mesh
  • Added chain pulley mesh
  • Added pipe booster valve mesh
  • Added fan vent frames
  • Updated light_wall_sml to a small blue arc-lamp
  • Updated light_wall_sml to cast shadows
  • Updated envtank

Bug Fixes:

  • Fixed bug where always visible widgets wouldn't have their show() function called
  • Fixed "unbindall" being written to dedicated server
  • Fixed "addbind" command
  • Renamed vent_128x64x4 to vent_128x48x6

Known Issues

  • Armor timers occasionally wrong on connect. Correct time is shown once the item is taken.

Share this post


Link to post
Share on other sites

Can you explain the bind command states better? Also, will the configs get reset or something? Should I save my current config?

 

Thanks for the awesome update too! You are the best, can't wait to mess around with it.

Share this post


Link to post
Share on other sites

Can you explain the bind command states better? Also, will the configs get reset or something? Should I save my current config?

 

Thanks for the awesome update too! You are the best, can't wait to mess around with it.

bind w say hello will work in either game or map editor

bind game say hello will work in game, but do nothing in editor

bind me w say hello will do nothing in game, but will work if you're in the map editor

 

And yes, configs will be stomped. Hopefully, this is the last time though. In future, you'll either have to manually update your game.cfg or delete it to get the new defaults.

Share this post


Link to post
Share on other sites

bind w say hello will work in either game or map editor

bind game say hello will work in game, but do nothing in editor

bind me w say hello will do nothing in game, but will work if you're in the map editor

 

And yes, configs will be stomped. Hopefully, this is the last time though. In future, you'll either have to manually update your game.cfg or delete it to get the new defaults.

 I was kinda used to having separate configs for editor and game with different mouse speed and such is it possible to do this some other way now? (bind states for non-bind things like m_speed perhaps?) / Is there a best way to do this?

Edit: I tried doing it with:

bind 0 toggleeditor
addbind game 0 m_speed 10
addbind me 0 m_speed 1.5

But addbind doesn't seem to accept the bind states? (or is getting striped from my cfg or something...)

Edit2: Seems like addbind might be broken now?

Edit3: nvm, I'm just being a moron, "Bind command now supports ; for multiple commands on one key" doh.

 

Share this post


Link to post
Share on other sites

This is definitely not the end of our 0.33 updates. In the upcoming point release, we'll be expanding the UI system further, making some changes to knockback and weapon balance

 

hnnnng

 

Great stuff as always. Looking forward to making some mega shite HUDs and then just downloading someone elses

Share this post


Link to post
Share on other sites

I'd recommend setting r_ssao 0 Raidakk since it eats a ton of gpu power and I can barely see any difference at all.. took me like 5 back and forth between options to actually see what it did.. Besides killing my fps by a ton

 

Awesome update as usual! :D Can't wait to see what the creative types cook up with LUA :D

Share this post


Link to post
Share on other sites

cl_crosshair_color 1-6 seems to be broken. 

 

Chat and scoreboard aren't scaled correctly with the resolution, can't see who's playing in TDM when playing with 640 480.

 

I haven't made the crosshair widget support cl_crosshair_color yet but if you want to change the color, its trivial. Just open up base/internal/ui/widgets/Crosshairs.lua and find these lines:

    -- Colors
    local crosshairFillColor = Color(255,255,255,255);
    local crosshairStrokeColor = Color(0,0,0,255);

Those values are Color(red, green, blue, alpha). The fill will change the inner color, the stroke will change the outline.

Share this post


Link to post
Share on other sites
bind w say hello will work in either game or map editor
bind game say hello will work in game, but do nothing in editor
bind me w say hello will do nothing in game, but will work if you're in the map editor

What does the me stand for? MyEditor? Wondering since "re" (ReflexEditor) is what I would have expected.

 

So in other words we all need to manually convert our editor.cfg and game.cfg files into the new game.cfg using the new "bind mode"? Or does the game do something like that for us? The config file "clobbering" mentioned seems to download a new game.cfg file with the modes probably used in there. Hmm... I am also not so sure that putting everything into one .cfg file is the best path, though most games do it that way.

 

Update: I noted that the vid_xxx.cfg files have been deleted. I used to call them via:

bind game numpad6 loadconfig vid_hi_vis
bind game numpad7 loadconfig vid_low
bind game numpad8 loadconfig vid_medium
bind game numpad9 loadconfig vid_high

Share this post


Link to post
Share on other sites

Apparently with 0.33.1

cl_playercolour0 1
cl_playercolour1 1
cl_playercolour2 1

orange all the way, is ignored in the Options, Player, Color (Reflex main menu) when loaded from the game.cfg file. Red is shown instead. All bindings I checked under "Input" seem to work on the other hand.

 

Update: When selecting the grate that casts a shadow on the floor in envtank, the number of tris is huge, that model could use a massive amount of mitering it seems. (It only looks that way, I was mistaken, such a grate simply "wastes" tons of tris per se.)

 

The modular tube set... I forsee excessive usage of that in all maps suddenly ;). I really like the design of the cylindrical new lamps, the roudish ones less so. The glass windows are neat.

 

I take it that fullclip = player clip + weapon clip (projectiles)? Required since models (meshes?) by default have no clipping?

Share this post


Link to post
Share on other sites
bind w say hello will work in either game or map editor
bind game say hello will work in game, but do nothing in editor
bind me w say hello will do nothing in game, but will work if you're in the map editor

What does the me stand for? MyEditor? Wondering since "re" (ReflexEditor) is what I would have expected.

 

So in other words we all need to manually convert our editor.cfg and game.cfg files into the new game.cfg using the new "bind mode"? Or does the game do something like that for us? The config file "clobbering" mentioned seems to download a new game.cfg file with the modes probably used in there. Hmm... I am also not so sure that putting everything into one .cfg file is the best path, though most games do it that way.

 

Update: I noted that the vid_xxx.cfg files have been deleted. I used to call them via:

bind game numpad6 loadconfig vid_hi_vis
bind game numpad7 loadconfig vid_low
bind game numpad8 loadconfig vid_medium
bind game numpad9 loadconfig vid_high

 

ME stands for Map Editor -- eventually we'll have RE for Replay Editor and possibly more.

 

Manually merging configs is really the only way to do it for now. Unfortunately, configs are going to get broken as we develop and there's not much we can do about it.

 

The vid_xxx.cfg files were deprecated in favor of doing it through the UI system. You could recreate the configs if you wanted, they'd still work.

 

will it be possible to make defrag huds showing how much accel u're earning and so on?

 

kinda like old q3defrag but simpler

 

Maybe, but there's some pretty hardcore stuff involved in calculating that.

Share this post


Link to post
Share on other sites

will it be possible to make defrag huds showing how much accel u're earning and so on?

 

kinda like old q3defrag but simpler

 

if i understand the variables right, you just can act on base of button pressed/released, not on base of actually jumped.

Share this post


Link to post
Share on other sites

When I launch the game it destroys my eardrums with the music at 100% volume for about 0.5 seconds until the config loads. Any work around to save my eardrums?

Don't say lower your volume.

Share this post


Link to post
Share on other sites

ME stands for Map Editor -- eventually we'll have RE for Replay Editor and possibly more.

 

Manually merging configs is really the only way to do it for now. Unfortunately, configs are going to get broken as we develop and there's not much we can do about it.

 

The vid_xxx.cfg files were deprecated in favor of doing it through the UI system. You could recreate the configs if you wanted, they'd still work.

 

Ah... I already merged my configs... and did some cleaning up... e.g. avoiding binding globally used keys twice (once for the editor and once for the game). So that was already a good thing.

 

I updated the Reflexfiles wiki to bind's new functionality, so that should help.

 

I still have the vid_xxx.cfg files (backupped them before the update), so falling back to them would be no problem. But doing it via UI is certainly nicer.

 

Really nice UI, BTW ;)

 

Bug:

  • When rebinding keys sometimes these show up as (unbound) in the menu under Options, Input. E.g. the "weapons". Come to think of it, all weapons appear unbound even though weapon 1 and 2 are on the default 1 and 2 keys. "Spectating" keys are also shown as "(unbound)" (not sure never use those)... this is on a German keyboard.

Where to put the render settings?

I presently have the r_ render commands in the game.cfg and that seems to work. As of 0.33.1 they are not listed there any longer by default. So where should they be placed?

 

 

How to avoid having manually edited config files clobbered by menu option updates?

I also wonder about changes made in the Options menu... do these get saved into the game.cfg file? This would in practice delete any comments and other "text layout" I manually edited. To avoid such issues in Q3A any user stuff would be placed in an autoexec.cfg file, while the "game.cfg" gets updated by changes via menus. A quick test shows that option changes update the game.cfg but only *after exiting Reflex*, this does not happen in real time. And the game.cfg is overwritten.

 

Maybe a

loadconfig autoexec.cfg

added to the default game.cfg at the end of the file, and then also added on every save update via menu changes, would let us separate "our" stuff from the default stuff.

 

Sorry if this is confusing... I am presently trying to think through how best to avoid having a manually edited file get clobbered by the menu changes. The clobbering happens in the best possible way though, I noted, sorting the keys alphabetically and into the sections: global, game, editor, settings and ui. So this is already well done.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×