Jump to content
The Dark Mod Forums

Durandall

Member
  • Posts

    96
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by Durandall

  1. It seems in any bigger than small missions the number of inventory items becomes overwhelming in a grid that shows everything at once.

    How about grouping items in categories?

    For example, the first thing when your inventory is activated is a list or button (or also a grid) of the category:

    Keys/potions/weapons(mines)/books/scrolls/tools or something like that.

    In bigger missions with lots of readables even those could get a subgroup (diaries, recipes, ...); maybe even keys (if in a specific mission are really many of them),

    for example (keys:/cathedral/city watch/manor 1/manor 2).

    In the end, I think a design goal should be to provide the quickest and most direct/easy way to select things from the inventory grid - if there is no grouping,

    finding a specific item in larger inventories would often take an unnecessary long time.

     

    It's an interesting idea that has brought up before in this thread.

    Spooks posted a mock-up of what you are suggesting.

     

    For me, the items I want to find are plainly visible on the current grid.

    If you need a key, you need only a glance to find them. The same is true of readables.

    A health potion or holy water is easily spotted.

    The above image is filled with 36 items. I would think most missions do not exceed this.

    I'm worried that introducing clickable categories will only slow the process down.

    It would just take longer to get to an item that would normally take a single click.

     

    If we get enough votes for it, I have no problem whipping up new code and a new gui for it.

    I just want to make sure that it's what most people want and the dev team agrees with it.

     

    I'm also afraid it would delay the release of 2.04.

    We may want to sit on the current system for the time and gather votes.

  2. I've done some poor man's profiling using some STL chrono time points and have found the bottleneck is the number of elements.

    The communication layer between GUI and SDK is slow. Not really surprising, it's all strings and conversions.

    I've offloaded the grid clear functionality onto the GUI itself. I was originally going to try this, but I wasn't sure how at the time.

    I've also trimmed some vars, as every call to set or get a variable from the GUI is slow and everything trimmed gives a speedup.

    These changes really speed things up. A 6x6 grid now runs at acceptable speed. (Atleast on my machine)

     

    What's the level of interest in a larger grid?

    dSkkkZg.png

    Are these entries to small? What about a 5x5 with 25 elements?

    • Like 4
  3.  

    I don't understand how that would make such a difference. Most .gui files are less than 50kb, and even the extra images would only boost things by a couple mb at most. How could that cause noticeable pauses?

     

    Honestly, I wouldn't know. Any explanation I could give would only be a guess.

    Parsing the gui file itself? The sheer number of elements to process?

    I'm not sure the dark mod has a gui file with so much in it.

    I'm also unaware of any built-in means of avoiding code duplication in a gui.

     

    You can try out a test version here to see for yourself.

    invgrid_36_test.7z

    • Like 1
  4. Initial tests on smaller items (64x64) in a 6x6 grid (total 36) have unfortunate results.

    The gui file almost doubles in size (not really a surprise) and the engine noticeably pauses on GUI updates.

    I think we may be at our limits on the total number of grid items.

     

    At this point I'm content to call the current system done.

    If anyone has any graphical components (backgrounds or corner flourishes) they want worked in, we can look at it and vote.

    If anyone has a gui they made themselves, we can look at it and vote.

    If I see enough votes for centering the current grid components, I'll do it.

     

    Thanks everyone for all the support.

    I was very happy to see all the positivity.

    I'm glad this system made it in for everyone to enjoy. :)

    • Like 3
  5. Also, for some criticism, I feel like the inventory items are not centered in the rectangles properly.

    The grid is an identical copy of the normal inventory display. I did this for compatibility.

    Although it should be possible to center them.

     

    I like the minimalist quality of it, and would be hesitant to add much in the way of flourishes or colour. Perhaps some very minimal brackets in the corners, but nothing beyond that.

     

    The icons and the cursor did strike me as quite large, but that might have more to do with recently switching from a 20" CRT to a 27" widescreen monitor. But my immediate thought was that they could be half the size they are now.

     

    The only issue I've noticed so far is that the compass icon did not show properly for me.

     

    I'm not sure it's wise to make the grids any smaller or the names/categories might run off.

    They are all designed for the current inventory system.

    I'll do some test and see what I can come up with though.

     

    I'm unsure as to why the cursor is so big, but on the main menu it is normal.

    I will take a look and see if it's anything I can do.

     

    The only reason I can think that the compass would not show up is that you are missing the new icon.

    You should have a dds/guis/assets/grid folder with 4 files for the arrows and dds/guis/assets/hud/inventory_icons/compass_icon.dds for the compass.

     

    Edit: or the tdm_playertools.def file doesn't contain the modified compass entry that now lists the icon.

  6. I did manual merging and some reformatting: not your fault, it's because of repetitive code in player.cpp and because it turned out that we do have some GUI bugfixes in 2.04, plus some of our current code conventions aren't obvious from older surrounding code. I'll post my 2.04 patch after a successful test.

     

    I'll try Maxwell16's test map and if that works ok I'll restart BCD which I got halfway through last night. I can't port my savegame from 2.03 to 2.04 so I'll probably be gone some time :)

     

    Is your to-do list complete now? I mean the various features you mentioned on page 1 that you wanted to tweak or add?

     

    p.s. kudos for getting your head round so much code without asking any questions btw! Your first patch touches every level of TDM architecture except the renderer and sound world!!

     

    Edit2: Hmm either I screwed up somewhere on the merge (likely), or we have a 2.04 change that changes outcomes (less likely, but possible). Mousewheel-down works in both 2.03 and 2.04, but mousewheel-up works only in 2.03. I'm not familiar with the human interface device setup. Any clues to where I might need to spot the difference?

     

    I believe it has all the features I originally wanted and now more.

     

    First thing that comes to mind is PerformImpulse in Player.cpp, that is where objective and inventory grid updates occur for those buttons.

    Maybe place the calls to updateInventoryGridGUI() before the broadcastNamedEvent call? I was curious as to why objective updates occured before the event was broadcast.

     

    I can try applying the changes to 2.04 and see whats up if that doesn't work. I might see something different in 2.04 that I need to work with.

  7. No other features are included. Just the grid and objectives changes.

    If no one has reported any bugs by now, I assume it's all okay.

     

    The DEV comment in UpdateInventoryGridGUI() can be removed. Didn't make sense when I wrote it.

    I wish I could have solved attacks propagating through weapon_GUI without the need for a delay.

  8. Thanks. That looks fine at first glance and doesn't look like it'll cross with 2.04 code. I'll try it out tomorrow because it's well past midnight here now *yawn*. Why did you end up tweaking the code that destroys the objectives gui by the way? Did it screw up when transitioning between the two?

    That was just a little extra. We can leave it out. Allows the player to click the objectives gui closed.

    Hopefully there aren't too many whitespace issues.

  9. If I'd add one comment, it could use a little unobtrusive border work along the lines of the lightgem.

    I originally wanted to use some sort of tight dense ironwork as a background and

    remove the translucent background squares, but I'm no artist. I'm not a fan of

    the public domain clip-art arrow I squeezed in either.

     

    Also maybe scale it down so it only takes up the bottom 1/3 to bottom 1/2 of the screen? More akin to how System Shock 2 did the inventory.

     

    Systemshock2_ingame_final.jpg

     

    Also, instead of just black background behind each item, maybe stretch the papyrus page and use that as a background?

    I'm not sure a System Shock 2 design would work, no room for names and having to

    scroll over items would be time consuming. I don't see much use in seeing the game

    field while in the grid.

     

     

    The grid entries mimic the current inventory items 1:1 to maintain compatibility.

    Making them smaller would require using a smaller font or risking item name runoff.

    I think the large entries are easy on the eyes and 16 items is good for 1 page.

    Perhaps removing the category lines would make it less busy?

     

    If anyone wants to try their hand at a different design, feel free to mock something up.

    All it would require is modifications to the guis/tdm_invgrid.gui file.

    Information on the format can be found by googling doom 3 gui.

    You can also take a look at the per-existing TDM guis in tdm_gui01.pk4.

     

    You can view your changes "live" by editing and saving the gui file while TDM is running

    and using the console command reloadGuis.

    You would probably need a second monitor or play in windowed mode.

     

    It is possible to alter the number of grid items available on a page by copy/pasting

    existing entries and increasing their variable numbers/names and screen positions.

    Don't forget to change gui::PageSize in InitInventoryGridGUI.

     

     

    I just downloaded 0.17 from 29-Jan so I can try it tonight. I see it contains a game dll and new engine. Just checking, did you have to modify and recompile those? If it's only GUI changes I'll test it with my svn build, but if you've had to modify the game I'll need to use a 2.03 build. I assume you did have to modify the compiled files... they have the later modified date too.

    The inventory grid has source code changes, it is not just a gui file. There is no way this could be done with just a gui unfortunately.

  10. I really like how this works, it's very smooth and feels quite natural.

     

    * The scroll wheel cycles pages.

    * Clicking outside the grid, closes it.

    * The player can still move with WASD.

     

    Here is the test map I made for this. (my first TDM map:)

    It is very small with 38 items for the inventory,

    and two scripted events which add items to your inventory.

     

    https://www.dropbox.com/s/x032oxeh2miydvi/inv_test.pk4?dl=1

     

    Thanks, great test map! A quick test shows that the update grid on inventory change code isn't working.

     

    Another point to consider. We currently have 2 complex "HUD" inventory items in TDM. Loot and the compass.

    At the moment, I exclude these items. Forcing them into the inventory grid would put restrictions on them and any future HUD item.

    Not to mention it would be much more complex.

    I was thinking about a custom section of the inventory grid just to display current loot count and maybe the current loot icon.

    Seems like it could be a bit more convenient then selecting the loot item anyway.

    That leaves the compass. Since you can't look around it would be useless in the inventory grid anyway.

    It would still be nice to be able to select it from the grid, but it lacks a simple 2d icon.

    I'm not quite sure how to take a picture of the world compass model with texture. Blender refuses to offer lwo import.

    Is there anyone who has the capability to do this? A simple compass icon that matches the style of current inventory items?

     

    The only other point I can think of at the moment is whether or not to support weapons. It should be relatively easy.

    Might be able to fit a variable in somewhere to turn them on/off in the grid.

    • Like 1
  11. How would we test this with an existing map..?

     

    I've 7zipped up a windows test build if anyone wants to try it out. TDM_InvGrid_0.10.7z

    No guarantees it won't blow up your computer.

    Remember to back up your original files!

    You will need to manually bind a key to _impulse30 in the console for the moment.

     

    1. Looks like it doesn't stop time (good), is that correct?

     

    2. What happens if there are more slots than fit on the screen?

     

    It does not stop time, it is a gui overlay based partly on the objectives screen and the current inventory system code.

    It also supports multiple pages, although I have a hard time managing to acquire >16 items in quick tests :).

     

     

    There are still a few things that need worked out behind the scenes and some clean up.

    I need Up/Down arrow graphics for the clickable page indicators.

    I put in the ability to click the objectives menu closed. (It could really use new arrows too)

    I haven't tested what would happen if a scripted event added/removed an item while the player has the grid open. Would love a test map for that.

    • Like 1
  12. It would be lovely to have that integrated into the mod, I know I would use that. And if it did ever make it to the mod i'm sure it could be easy to have an option in the settings menu to switch between this sort of inventory or the old so if people want to use the old on they can.

     

    But yeah I think it's very useful as the current inventory in Thief123/TDM is pretty basic.

    The inventory grid is actually in addition to the current system. It does not interfere with the original. You can bind the inventory grid to a key and call it whenever you wish.

    • Like 1
  13. While playing Inn Business, I touched the inn keeper while he was sitting.

    He then proceeds to get up and sit down infinitely. Each time moving backwards a bit.

    He slowly phases through the wall and into the street and continues onward...

    Save file: innbiz_bug.7z

    I could not reproduce this.

     

    While playing WS1 In the North, I put out one of the candles and sat it aside.

    A servant came by and began to light the candle, so I grabbed it before they could finish.

    I then moved to the other side of the room, still holding the candle.

    They continued the lighting animation and when it finished, the candle in my hand lit up.

×
×
  • Create New...