Open MirceaKitsune opened 2 years ago
Little known fact: bots already do this to a degree based on their chosen colour (it's a randomised integer that can be used to infer other attributes). The only thing this doesn't really apply to is vanities and team. The reason this doesn't apply to vanities is because there's no universal list of them as they are client side settings for which you can create/add your own (modding support, etc).
Fun, didn't know that: I thought all characteristics are chosen at random from the items listed in each setting. It was a good system till now... I do think at some point there would need to be a way to make specific configurations.
Wasn't aware of the client side part, this might make things more complicated: I noticed they can be customized more flexibly but thought it's still a server setting. I'm presuming this would only be an issue if the server has vanity items the connecting client doesn't have, or if some clients have ones other clients don't? But in that case the missing ones can simply not be shown to a client as it's not an essential part... or they could work like maps where a client downloads missing data when connecting?
Would also be nice if skin patterns could be de-hardcoded, I peeked at the code and noticed they're defined in the C part of the system. Also the male + female limitation, modders may want to introduce completely unique base meshes too. Something to ponder for another time as that's a player universal thing and less related to bots themselves.
An idea I've thinking about: One nice thing we could do with definable bots is connecting characters to given maps so they fall within its theme and will feel like you're matching up against the locals of the area. Medieval maps, city maps, space ship maps, etc. may each have characters best suited to appear on them. Would be a very fun way to further the personalization aspect!
How I thought of this being implemented in the easiest way: Maps could support a list of tags and keywords, which can be used for many things later on like filtering in the menu or even clicking on a tag to play a random map with that theme. Each bot can itself be assigned keywords in which case it will only appear on maps that have at least one common tag.
Obviously mappers won't need to define characters just the category tags that describe the map's theme. We could either not use this by default or have several characters for each theme; I'm willing to design them myself once the feature is coded, maybe we can even ask the community and take an unique character request from everyone!
I keep thinking about this feature and how it can be best added when it will. There's two notes I wanted to add before I forget them.
First is about team associations, which I think would make this a lot more fun and interesting. Every character you define should be attributed to group, meaning they will always fight together in the same team: When a match starts, a random group is picked for both Alpha and Omega, only bots from that group are added to each team. For example: You define a set of bots as being from the Trooper group because they all have the trooper head... if this group is chosen for team Omega, you can join team Alpha to fight against troopers!
The second point is grunts. I like the idea of making grunt actors use the standard player model, but currently they're just a headless player that can't be customized in any form. What if the same character definitions we use on bots can be listed and selected on grunt entities? Considering I dreamed of maybe making a Doom like single-player campaign where they can be used as map monsters, I think this would be an interesting solution to fixing grunts and turning them into non-player bots with the same abilities.
The ability for players and server admins to customize bots and create unique characters is one of the features I've always wished to see added. This wouldn't only make the personalization of a server more flexible, but is also a soft dependency in supporting UT style campaigns later down the road as designers typically need to create teams of unique characters in their levels.
For the purpose of this suggestion I'd like to propose just a (hopefully) simple change in the config and how settings are interpreted, which should be enough to add core support for this ability; A menu to edit bots using the character customization screen would be nice, but first there needs to be a way to define unique characters via the config. The menu can be a separate feature for the future, in the meantime they could be configured via console and text editor at least.
At the moment settings for bot names and vanities contain a list from which random values are picked each match. To support unique bot characters, there should be a numbered list of bot settings containing the properties of each one. A few special settings would be needed to make full use of this, namely a skill offset or team filter... the rest would be the same settings a player defines for their own appearance. This is how a bots.cfg file would look like with the way I'm imagining this suggestion, common settings should of course mirror the format in which the player's profile is stored internally: