How does scoring work in "Oh...Sir!! The Insult Simulator"?
Essentially, 'The devs decided how deterministically'.
The game is not equipped with the means to make "sense" of words, which is to say the AI is complex enough for us to be unable to recognise it from a person making the judgements on the fly.
Instead, the game comes with a simple set of pre-defined rules. As the number of sentence combinations is massive, what the developers have done is taken a lot of short (and a few long monty python quotes) sentence segments and awarded those 'bonus points', then added some multipliers for using personalized insults. Here's the full roundup of how the score ends up being calculated:
- Award a 'base score' based on sentence length (the longer, the more points, but it's sublinear).
- Certain specific words are worth bonus points1.
- Certain specific combinations of words are worth bonus points1,2.
- Apply a multiplier if you hit the other character's weak spot. (For example, you use an insult about family against God)
- Apply any multiplier from a combo (using the same noun multiple times in a row).
1: This is hidden information determined by the developers. As far as I know nobody has mined up the exact data from the game's code yet.
2: This is also how the 'rude' modifier is determined. 'Rude' insults thus tend to have high point values.
That means the strategy for this game is to try to grab whatever words are most valuable to both you and your opponent. The former increases your damage, while the latter lowers theirs. Continuations are generally not a good idea, since the other person can interrupt with a 'rude' remark and score seems sub-linear in sentence length. There are some situations where a continuation can help you, like continuing a combo or when there's no way for you to form a correct sentence.
In addition to aphid's answer, I stumbled upon this little nugget of dev commentary (through user Chfou on speedrun.com, revised), confirming - and expanding on - aphid's theory:
In The Insult Simulator it worked like this: You have basic combinations - shortest grammatically correct sentences - that consist of two ([your mother][has bum cancer]) or three ([your mother][looks like][your liver]) insult components.
These combinations have their scored assigned BY HAND! Things that are taken into account is logical meaning, humorous value and how personal they are. These is how we set our basic scores. If you connect a number of full sentences ([your mother][has bum cancer][and][your mother][looks like][your liver]), you get the sum of their basic scores.
If you enumerate nouns ([your mother][and][your father][have bum cancer]), the system breaks it into basic combinations ([your mother][has bum cancer], [your father][has bum cancer]) and takes their individual scores into account. But only the biggest of them is taken unchanged, the rest is divided by two!
(So it's something like([your mother][has bum cancer] x score)
+([your father][has bum cancer] x score / 2)
.)Further on:
- ['Rude!'] is just an emphasis of an especially big score - above 15, if I remember correctly. It doesn't DO anything additionally. Combos multiply the score of a basic sentence where the repetition appears by the number of times the atom was repeated. There are also weaknesses, which multiply a score of a basic sentence that relates to it by 1.5x.
And 'Rude!' interrupts eventual continuations, as user K1TTY_BLADE points out, in addition to the following:
Each character has set weaknesses, and if you use that weakness it multiplies the part of the insult by 1.5x. [..]