Cheers folks, thanks for the kind words!
Not only that, but most ingame text mentioning keybinds, like "press E to create new character" changes based on your keybinds. You'd be surprised how many games assume you're using their default keybinds.Yeah, and that completely drives me INSANE. How hard can it really be to have the messages change based on keybinds? Gawds.
Whilst I can't remember where the hell I read this, but I think it was Skyrim where the devs said that loading the images for the different buttons would take too much memory. Which I think might be one of the worst excuses i have ever heard.
While I don't know much about their specific situation, I can explain what they meant from a technical standpoint at least -- their concern was valid. See, what most large game companies do when they want to include icons in text is that they build those icons into the sprite dictionary for the spritefont. Then various special characters that can be directly embedded in strings allows you to render them really easily, and with your writing staff able to do that sort of insertion of graphics into text strings without the involvement of the coding staff -- critical ability, there.
That works exceedingly well on consoles, where there's only a handful of really brightly-colored images that look really different for all the various buttons. Especially nice on XBox, I imagine, given their controller's approach to button colors.
So what happened here is that this is actually a poor PC port -- they made this for consoles, I am guessing, and the nice green A and nice green B images were able to be inserted into their text. Then when localizing this to the PC, they had to have an image to put there. It had to be a single image since you can't normally remap stuff on consoles, and so they probably made an image of a keyboard key with the text on it. Attractive and easy.
The problem is, of course, that it's also static. So there are then two problems for supporting rebindings:
1. On the one hand, they'd have to have a way of taking a character in text strings that they already had for the many different langauges of the various console versions, and then translate that into varying images depending on the way things were bound. That's really tricky, and would be murder to retroactively try to insert into a game that large. If they'd started out with that system in the first place it wouldn't have been so bad, though.
2. On the other hand, if they're going to do 103+ images of keyboard keys (possibly more considering various non-US keyboards), all those images won't fit into a single spritefont texture. So it's not really a matter of not having enough RAM, it's a matter of not having enough spritefont texture space. Which they could potentially add a second spritefont to hold all the overflow, but they might need more than even just one additional one to make that work -- and then on various graphics cards there very literally could not be enough VRAM budget left for that.
In other words, I think the guy was telling the truth, he just didn't explain himself well at all. If you want to get mad, get mad that they didn't think of the PC port more from the start, which is what led them to that situation in the first place. But the actual guy was being truthful about the situation they were in, I expect.
Well, if you have prerendered pictures, of course it would. But how hard could it be to just make a text overlay, rendered on the fly?
Turns out: extraordinarily
hard. Rendering text is one of those really tricky things. Normally it consists of quite complex math to position all the characters and figure out their kerning and positions and wrapping and all that. The general presumption with standard algorithms for that is that each character consists of a single image from somewhere in your spritefont dictionary. Otherwise the math gets even more complex when you're rendering this one giant triangle fan mesh to hold a paragraph or more of text.
Once all that math is done, typically there's not an easy way to get the position of a given character so that you can then overlay something above it. And to do so would either require making your mesh math even more complex, or would require the added GPU cost of making an entirely new mesh layer to do the overlays. And then you get into sorting and clipping issues... and it's all a big mess.
It could be done, and I can think of a few ways that it could be implemented. But it wouldn't be fun by any stretch, and would likely be a source of ongoing bugs for quite a while. And normally it's so out of scope of what you'd need to do for games that it wouldn't be thought of until way at the end.
The system that we use for doing the insertion of custom keybinds is something the largely only works because our programming staff (Keith and I) also do quite a lot of the writing. So we're able to hook things together in a way that your average AAA company could not. We handle that at the code/string level, and then the actual spritefont level just does what a spritefont does.
Anyway... hopefully that gives some background. I'm in no way a Skyrim apologist -- I've never even played it -- but I think that developers sometimes get flack for things a bit out of context. I agree they should have handled it better, but the root issues were way back in their development process.