Lemming42
Arcane
Drakortha, I am not only buying Starfield, but I am also buying an extra copy in your name. Alongside this second copy I'll send a personal check directly to Todd, with "FROM YOUR BIGGEST FAN! - DRAKORTHA" written on it.
They are entirely off the mark.I never agreed with the "hurr hurr NV is just a Fo3 mod" people, but they're also not entirely off the mark.
You do know that Interplay fought to get the IP back so they could make an MMO, right? There's this assumption that Brotherhood of Steel was just a fluke. Nah, literally every studio and IP that wasn't modernizing to 3d action was collapsing because you simply couldn't get the funding for a sizable studio unless you could demonstrate your game could capture the same growth as the broader market. Any Fallout release between 2005 and 2015 was going to be a 3d action title. In some hypothetical universe where Bethesda doesn't purchase Fallout, the best case scenario is something like Baldur's Gate. The franchise goes dormant for 20 years until isometric games are back in vogue and some plucky upstart is awarded the IP. But based on the direction the IP owner was headed in, it's more likely the franchise is driven into the ground by Interplay burning through inexperienced dev teams with fad-chasing mandates. It's possible Obsidian themselves might be put on one of these projects, but at the time they were simply not technically nor financially strong enough to complete a large scale project by themselves.You know whats also not fair, how they got the IP in the first place. Fair doesn't matter.
Codexers don't want to hear this, but Bethesda buying Fallout was a really good outcome for the franchise all things considered.
I'm not a game dev but I did take a few CS classes in college. Assuming you're not referring to some super fancy game-specific application I haven't heard about, there are numerous reasons why one would choose a list based inventory. Lists scale more smoothly whereas resizing a static data structure like an array incurs an expensive copy operation.If you've got any specifics you want to hear about fine, but if I give you a general overview its this: Bethesda games have become too simplistic, too action based and have lost their core influences from CRPG mechanics, they use list based inventories which suck (and frankly they don't even implement them properly hence the memory leaks Skyrim has STILL)
I'm not a game dev but I did take a few CS classes in college. Assuming you're not referring to some super fancy game-specific application I haven't heard about, there are numerous reasons why one would choose a list based inventory. Lists scale more smoothly whereas resizing a static data structure like an array incurs an expensive copy operation.If you've got any specifics you want to hear about fine, but if I give you a general overview its this: Bethesda games have become too simplistic, too action based and have lost their core influences from CRPG mechanics, they use list based inventories which suck (and frankly they don't even implement them properly hence the memory leaks Skyrim has STILL)
Even in the case of data structures, resizing of collections doesn't happen that much with inventories - you just reserve more memory for it, since it probably contains only "instance" data, and the general, more massive data like picture or 3d model are only referenced.I'm not a game dev but I did take a few CS classes in college. Assuming you're not referring to some super fancy game-specific application I haven't heard about, there are numerous reasons why one would choose a list based inventory. Lists scale more smoothly whereas resizing a static data structure like an array incurs an expensive copy operation.If you've got any specifics you want to hear about fine, but if I give you a general overview its this: Bethesda games have become too simplistic, too action based and have lost their core influences from CRPG mechanics, they use list based inventories which suck (and frankly they don't even implement them properly hence the memory leaks Skyrim has STILL)
You're talking about data structure while RobotSquirrel was talking about UI presentation (list based).
Bethesda Fallouts were shitty shooters that had to awkwardly glue VATS on top of it so your SPECIAL isn't useless in combat.You do know that Interplay fought to get the IP back so they could make an MMO, right? There's this assumption that Brotherhood of Steel was just a fluke. Nah, literally every studio and IP that wasn't modernizing to 3d action was collapsing because you simply couldn't get the funding for a sizable studio unless you could demonstrate your game could capture the same growth as the broader market. Any Fallout release between 2005 and 2015 was going to be a 3d action title. In some hypothetical universe where Bethesda doesn't purchase Fallout, the best case scenario is something like Baldur's Gate. The franchise goes dormant for 20 years until isometric games are back in vogue and some plucky upstart is awarded the IP. But based on the direction the IP owner was headed in, it's more likely the franchise is driven into the ground by Interplay burning through inexperienced dev teams with fad-chasing mandates. It's possible Obsidian themselves might be put on one of these projects, but at the time they were simply not technically nor financially strong enough to complete a large scale project by themselves.You know whats also not fair, how they got the IP in the first place. Fair doesn't matter.
Codexers don't want to hear this, but Bethesda buying Fallout was a really good outcome for the franchise all things considered. You can hate their writing or streamlining all you want, but that stuff is easily changed between releases. The much bigger lift is the game framework itself and Bethesda is the only studio I'm aware of that has developed a process for creating 3d action games with the same scalable design patterns as old school RPGs. I'm sure Tim Cain and Josh Sawyer are acutely aware of this which is why they speak positively of Bethesda despite clearly disagreeing with the story direction of the franchise. New Vegas, Far Harbor, and Fallout London only exist because Bethesda's frameworks are modular and flexible enough to allow other creatives to stand up their own projects easily. Contrast with Bioware who eventually pursued a more focused, made-to-order development process that isn't so accomodating. You can tweak Mass Effect but you can't rip out and insert game components all willy nilly; you're mostly stuck with the game as shipped.
You mean like every CRPG ever?They basically tried to port a turn-based system into real-time and it just doesn't work
Then why he's talking about memory leaks?I'm not a game dev but I did take a few CS classes in college. Assuming you're not referring to some super fancy game-specific application I haven't heard about, there are numerous reasons why one would choose a list based inventory. Lists scale more smoothly whereas resizing a static data structure like an array incurs an expensive copy operation.If you've got any specifics you want to hear about fine, but if I give you a general overview its this: Bethesda games have become too simplistic, too action based and have lost their core influences from CRPG mechanics, they use list based inventories which suck (and frankly they don't even implement them properly hence the memory leaks Skyrim has STILL)
You're talking about data structure while RobotSquirrel was talking about UI presentation (list based).
If you're intentionally sizing bigger array capacities then you'll probably wind up using more memory than lists anyway.Even in the case of data structures, resizing of collections doesn't happen that much with inventories - you just reserve more memory for it, since it probably contains only "instance" data, and the general, more massive data like picture od 3d model are only referenced.
F4 had a shitty streamlined SPECIAL as well
Removing Skills from SPECIAL and replacing them with Perks was a bad design.F4 had a shitty streamlined SPECIAL as well
Why waste my energy when there's others in here who can state the facts in detail for me?They are entirely off the mark.I never agreed with the "hurr hurr NV is just a Fo3 mod" people, but they're also not entirely off the mark.
"This demonstrably true statement isn't true and I will not elaborate."
gigachad.jpg
You do, but not by much.On big collections of elements you will probably use something like a Flyweight pattern, which reduces memory consumption for repeating elements.Then why he's talking about memory leaks?I'm not a game dev but I did take a few CS classes in college. Assuming you're not referring to some super fancy game-specific application I haven't heard about, there are numerous reasons why one would choose a list based inventory. Lists scale more smoothly whereas resizing a static data structure like an array incurs an expensive copy operation.If you've got any specifics you want to hear about fine, but if I give you a general overview its this: Bethesda games have become too simplistic, too action based and have lost their core influences from CRPG mechanics, they use list based inventories which suck (and frankly they don't even implement them properly hence the memory leaks Skyrim has STILL)
You're talking about data structure while RobotSquirrel was talking about UI presentation (list based).
If you're intentionally sizing bigger array capacities then you'll probably wind up using more memory than lists anyway.Even in the case of data structures, resizing of collections doesn't happen that much with inventories - you just reserve more memory for it, since it probably contains only "instance" data, and the general, more massive data like picture od 3d model are only referenced.
Todd.
Todd never changes.
How it usually works is you reserve as much memory as you think will be used in worst case scenario (even if it's a list of ten thousand items, you're storing pointers in the array, not the items themselves. Nobody gives a shit about what little memory might be wasted on this). If you go over it, the array will do a really expensive operation and DOUBLE its size (to try and ensure it won't need to resize again later). If you don't reserve memory at the beginning, the array will behave the same, but the initial memory reserve is very low (I think it's like 16 items or something like that?) meaning that if you're working with lots of items, you will be performing that resize operation far more often than you'd like.You do, but not by much.On big collections of elements you will probably use something like a Flyweight pattern, which reduces memory consumption for repeating elements.
Text processors don't store font glyph for every letter you type, they just reference it, as I said above.
If you use static array, you will not resize array for every new item in it. You will probably resize it for every fifty elements, since all you wrote for the instance of item in your inventory is its state and its quantity.
But for the big collections like items in open world game, Bethesda probably used some kind of Hashmap (Dictionary), since iterating over big list for accessing list entry becomes bigger concern than resizing array.
Which can be prone to memory leaks if objects are not cleaned of references to them before deleting.
Oblivion contained a lengthy list of failings relative to Morrowind:Oblivion wasn't that bad. They streamlined things and it sucked to lose features but in the grand scheme of things it was a collective step forward. Skyrim turned the streamlining to 11 and it showed in sales with normies slopping it up, I cede that one. Fallout 4, while being the single worst story Emil has ever put to paper, was arguably incline over Skyrim. They seemed to learn their lesson and toned down the streamlining. I'm not even going to bring up the dumpster fire that is 76 because TES/Fallout Bethesda had nothing to do with it outside of the initial world building. Clearly from what we've seen in Starfield it's further incline from Fallout 4 because the gripes most people had with Fallout 4 don't seem to be present anymore.
The two big improvements Oblivion offers over Morrowind IMO are quest variety and NPC routines. The quests are still bad but they do tend to be somewhat more involved and have more moving parts than Morrowind's insanely dull fetch/kill/occasional escort quests, the tradeoff being that there's far less quests to actually do (and, because Bethesda, a lot of them are still as ultra-linear and boring as the average Morrowind quest anyway - the Fighter's Guild questline in particular is mostly fucking awful, despite every other NPC in the game advertising it to the player). I also wouldn't call Oblivion's combat worse than Morrowind, I think it's a sidegrade more than anything. Combat isn't at all fun in either game unless you're a mage who plays with the spellmaker, at which point you can be amused by your ridiculous power but the game becomes a busted joke. Morrowind has the advantage I suppose in that you become so powerful so fast that the terrible combat tends to at least end more quickly than it does in Oblivion.Hardly any improvements were offered relative to Morrowind
It's not just a reference. There's quite a few properties we know Bethesda tracks per entity like uuid, position, name, stats, upgrades/buffs, weapon mods, ownership status, etc. So I think memory optimization does matter here. And intuitively, I'd use a list because when you think about how Bethesda games work, the player is often adding and dropping items to various collections. NPCs even interact that way. It's easier to keep those collections sorted with a list operation. And sometimes the player does add 200 potions and sell them all to the alchemist. Which means for an array pattern, each collection involved in that transaction (home chest, player inventory, shopkeeper) will need to have its inventory resized potentially multiple times.You do, but not by much.On big collections of elements you will probably use something like a Flyweight pattern, which reduces memory consumption for repeating elements.Then why he's talking about memory leaks?I'm not a game dev but I did take a few CS classes in college. Assuming you're not referring to some super fancy game-specific application I haven't heard about, there are numerous reasons why one would choose a list based inventory. Lists scale more smoothly whereas resizing a static data structure like an array incurs an expensive copy operation.If you've got any specifics you want to hear about fine, but if I give you a general overview its this: Bethesda games have become too simplistic, too action based and have lost their core influences from CRPG mechanics, they use list based inventories which suck (and frankly they don't even implement them properly hence the memory leaks Skyrim has STILL)
You're talking about data structure while RobotSquirrel was talking about UI presentation (list based).
If you're intentionally sizing bigger array capacities then you'll probably wind up using more memory than lists anyway.Even in the case of data structures, resizing of collections doesn't happen that much with inventories - you just reserve more memory for it, since it probably contains only "instance" data, and the general, more massive data like picture od 3d model are only referenced.
Text processors don't store font glyph for every letter you type, they just reference it, as I said above.
If you use static array, you will not resize array for every new item in it. You will probably resize it for every fifty elements, since all you wrote for the instance of item in your inventory is its state and its quantity.
But for the big collections like items in open world game, Bethesda probably used some kind of Hashmap (Dictionary), since iterating over big list for accessing list entry becomes bigger concern than resizing array.
Which can be prone to memory leaks if objects are not cleaned of references to them before deleting.
I'm guessing intensive games would want control over memory management themselves because the garbage collector is just a process that periodically cleans out dereferenced objects. So you're choked until the garbage collector cycles around, and of course the garbage collection process itself eats into overhead. And at any rate, it's Bethesda's engine anyway. They'd be responsible for implementing garbage collection.Any modern engine should handle garbage collection for you, automatically destroying any objects that are no longer referenced by anything, and nulling any references to objects that you destroyed manually. That is not to say that memory leaks cannot happen, they absolutely can, but it's not as common as one might think.
I agree on arrays memory reserving.How it usually works is you reserve as much memory as you think will be used in worst case scenario (even if it's a list of ten thousand items, you're storing pointers in the array, not the items themselves. Nobody gives a shit about what little memory might be wasted on this). If you go over it, the array will do a really expensive operation and DOUBLE its size (to try and ensure it won't need to resize again later). If you don't reserve memory at the beginning, the array will behave the same, but the initial memory reserve is very low (I think it's like 16 items or something like that?) meaning that if you're working with lots of items, you will be performing that resize operation far more often than you'd like.You do, but not by much.On big collections of elements you will probably use something like a Flyweight pattern, which reduces memory consumption for repeating elements.
Text processors don't store font glyph for every letter you type, they just reference it, as I said above.
If you use static array, you will not resize array for every new item in it. You will probably resize it for every fifty elements, since all you wrote for the instance of item in your inventory is its state and its quantity.
But for the big collections like items in open world game, Bethesda probably used some kind of Hashmap (Dictionary), since iterating over big list for accessing list entry becomes bigger concern than resizing array.
Which can be prone to memory leaks if objects are not cleaned of references to them before deleting.
Hashmaps are slow as fuck. They pay off over iterating over an array... eventually, but we are talking really large numbers. It is unlikely a player will ever have so many items that it'd become more efficient. A better approach would be to have the items sorted in the array (by some sort of unique ID of the item) and then run a binary search on it whenever you need to look an item up in there. True, it would make inserting into an array slower, but with how rare (in computing terms) adding a new item into the inventory is, it's a non-issue. Alternatively, you could also split the items list into multiple arrays (one for helmets, one for weapons, etc. etc.) and thus iterate over much smaller arrays whenever searching for an item. There's several approaches to use for this, but hashmaps really are just too slow.
Any modern engine should handle garbage collection for you, automatically destroying any objects that are no longer referenced by anything, and nulling any references to objects that you destroyed manually. That is not to say that memory leaks cannot happen, they absolutely can, but it's not as common as one might think.
Of course that memory organization is not trivial for such complex system, but you will still use references to common data combined with "instance" data and save memory that way, if possible.It's not just a reference. There's quite a few properties we know Bethesda tracks per entity like uuid, position, name, stats, upgrades/buffs, weapon mods, ownership status, etc. So I think memory optimization does matter here. And intuitively, I'd use a list because when you think about how Bethesda games work, the player is often adding and dropping items to various collections. NPCs even interact that way. It's easier to keep those collections sorted with a list operation. And sometimes the player does add 200 potions and sell them all to the alchemist. Which means for an array pattern, each collection involved in that transaction (home chest, player inventory, shopkeeper) will need to have its inventory resized potentially multiple times.You do, but not by much.On big collections of elements you will probably use something like a Flyweight pattern, which reduces memory consumption for repeating elements.Then why he's talking about memory leaks?I'm not a game dev but I did take a few CS classes in college. Assuming you're not referring to some super fancy game-specific application I haven't heard about, there are numerous reasons why one would choose a list based inventory. Lists scale more smoothly whereas resizing a static data structure like an array incurs an expensive copy operation.If you've got any specifics you want to hear about fine, but if I give you a general overview its this: Bethesda games have become too simplistic, too action based and have lost their core influences from CRPG mechanics, they use list based inventories which suck (and frankly they don't even implement them properly hence the memory leaks Skyrim has STILL)
You're talking about data structure while RobotSquirrel was talking about UI presentation (list based).
If you're intentionally sizing bigger array capacities then you'll probably wind up using more memory than lists anyway.Even in the case of data structures, resizing of collections doesn't happen that much with inventories - you just reserve more memory for it, since it probably contains only "instance" data, and the general, more massive data like picture od 3d model are only referenced.
Text processors don't store font glyph for every letter you type, they just reference it, as I said above.
If you use static array, you will not resize array for every new item in it. You will probably resize it for every fifty elements, since all you wrote for the instance of item in your inventory is its state and its quantity.
But for the big collections like items in open world game, Bethesda probably used some kind of Hashmap (Dictionary), since iterating over big list for accessing list entry becomes bigger concern than resizing array.
Which can be prone to memory leaks if objects are not cleaned of references to them before deleting.
I think their gamewide item management is far more sophisticated than a hashmap, more like an entire database.
there are numerous reasons why one would choose a list based inventory. Lists scale more smoothly whereas resizing a static data structure like an array incurs an expensive copy operation.
I was mainly referring to it in a UI sense, the way you should do lists is segment them so that you're only loading in what is visible. Most developers don't bother, Worst offender is the Sims games, all of them just dump the entire catalogue in one big list despite it being super inefficient to load and display. I'm not saying lists as a data structure are inherently bad, but the way most developers implement it is. Why load in a list of 1000 items if only 100 can be displayed at any one time. Worst if you have a list that is reliant on render textures then you get StarCitizen and Cyberpunks problem where the UI doesn't immediately load in. UI should be snappy and ready to use you shouldn't have to fight it for control and it should hold up regardless of the use case otherwise you designed it wrong. I shouldve clarified more.You're talking about data structure while @RobotSquirrel was talking about UI presentation (list based).
Oh I agree with that. Morrowind was meant to be a lot more ambitious but Bethesda nearly went bankrupt, so it was streamlined because the team couldn't manage.If it is, then Morrowind completely killed the TES series by gutting Daggerfall and reducing its scope to almost nothing. Morrowind, Oblivion and Skyrim have far, far more in common with each other than they do with Daggerfall.
The entity/object hierarchy is pretty complex because the player can apply all sorts of unique properties. Each alchemy level corresponds to marginally stronger potions which means the stats can't be an inherited property. And then you get enchantments, weapon improvements, weapon naming, and FO4's crazy weapon mod system. Either all of these properties exist per entity or the game has to somehow figure out which entities have identical properties at runtime and group them together. Actually now that I think about it maybe you were on the right track earlier. Maybe they use a hash function on item creation to check if they should create a new entity or increment a counter. Since crafting menus are the most controlled environments in their games, they might be able to hide this more computationally complex check.Of course that memory organization is not trivial for such complex system, but you will still use references to common data combined with "instance" data and save memory that way, if possible.
If you have 100 potions of the same type, they probably just change field in object that holds amount of items, if you don't sell them all - in which case they probably move whole instance to another collection.
If I remember correctly, all the objects with same type and status (condition, mods, etc.) are grouped as one, so there is probably optimization with that also.
That's exactly what happens. In fact the save file is referenced in the exact same way as updates, mods, and the game itself. So like Skyrim.esm predefines the default state of the game and is loaded at the base of the stack, then Update.esm, then all your mods in whatever silly load order you have them configured in, then finally your save is loaded at the top of the stack.Bethesda save files are known to grow in size if you access more locations and interact with objects, which probably means they have default state of game objects that is loaded on the start and then overriden with whatever data you changed on that specific instance.
I'ma be real wit you. Most game devs probably don't think about UI optimization that much because it's presumed to be the least taxing aspect of their games. This isn't like webdev where project managers monitor page responsiveness and clickthrough rate like a hawk. I'd also imagine Bethesda can get away with bad patterns because they're not loading in image files, they show the game models themselves which should already be loaded in.I was mainly referring to it in a UI sense, the way you should do lists is segment them so that you're only loading in what is visible. Most developers don't bother, Worst offender is the Sims games, all of them just dump the entire catalogue in one big list despite it being super inefficient to load and display. I'm not saying lists as a data structure are inherently bad, but the way most developers implement it is. Why load in a list of 1000 items if only 100 can be displayed at any one time. Worst if you have a list that is reliant on render textures then you get StarCitizen and Cyberpunks problem where the UI doesn't immediately load in. UI should be snappy and ready to use you shouldn't have to fight it for control and it should hold up regardless of the use case otherwise you designed it wrong. I shouldve clarified more.