Voicing: A Proposal

Posted in

#51 by beliar
2021-09-22 at 16:36
< report >Not even that. We mean characters that aren't even usually added to the character list. For example:
a) Common no name characters, like Enemy A or Guard B.
b) Characters that don't even have a sprite, and either aren't visually portrayed at all, or are portrayed as shadows/outlines.
c) Male mobs in a gangbang nukige, where we may not even see their faces or learn names. We usually just see dicks, and if they are named, it's something like Male A.
#52 by Yorhel
2021-10-12 at 08:20
< report >The proposal in #43 looks good to me. Expressed more formally to clarify the data model to myself:

  VoicedOptions =
{ WhichCharacters: All | Some
, WhichLines: All | Some | OnlyToken
}

CharacterGroup = Unknown | NotAvailable | Unvoiced | Voiced VoicedOptions

ReleaseVoiced =
{ Protagonist: CharacterGroup
, MainChars: CharacterGroup
, SideChars: CharacterGroup
, Narration: Unknown | NotAvailable | Unvoiced | PartiallyVoiced | FullyVoiced
}

What is not super clear from #43 but which I defined above is the handling of the "partially voiced" options. A character group is either marked as NotAvailable (i.e. there are no such characters), Unvoiced, or Voiced, and in the latter case you get options for:
- which characters are voiced (All/Some)
- which lines are voiced (All/Some/OnlyToken)
"Fully voiced" in the above model being expressed as all characters and all lines, but of course the form could have a shortcut for that.
#53 by Ezezin
2021-10-12 at 09:31
< report >From my limited understanding on pseudo-code:
CharacterGroup = Unknown | NotAvailable | Unvoiced | FullyVoiced | PartiallyVoiced

PartiallyVoiced =
{ SomeLines: bool
, SomeCharacters: bool
, Token: bool
}

ReleaseVoiced =
{ Protagonist: CharacterGroup
, MainChars: CharacterGroup
, SideChars: CharacterGroup
, Narration: CharacterGroup
}

The reason is that fully voice already means that all characters and all lines are voiced, the only one that needs clarification is partially voiced.
Also there are games, like Dangan Ronpa Kibou no Gakuen to Zetsubou no Koukousei, that combines token expressions and some voiced lines, that's why I separated them.

Edit: Alright, you can laugh now at mi bad attempt to use pseudo-code like this (;_;), I'll hide under my bed sheets now...Last modified on 2021-10-12 at 09:39
#54 by Ileca
2021-10-12 at 10:31
< report >I knew that Yorhel was formalizing this proposal in the back without saying anything and that I should have said something before it's too late...

The current proposal is certainly not good in my book. Yep. Here we go again. The pain in the ass is in the place. :D

Do you guys get that if you remove the dichotomy male/female, then a whole lot of VN will be marked as partially voiced? Every VN with female only will be marked as partially voiced the moment you have an unvoiced male in their group. That's a lot of nukige. The goal of this proposal is to handle the female-only option! That's even why I completely forgot about other genders, being so focused on that peculiar problem.

Examples of main characters being flagged as partially voiced with this proposal:
Tsuma no Niku Ana ni Homestay Suru Macho Ryuugakusei ~Shucchouchuu no Sono Ura de, Tsuma wa Kurobikari Bou kara Afureru Hodo no Hakudaku o Sosogare, Yorokobi ni Michita Acme-gao o Sarashiteita~
Koutetsu no Majo Annerose
Nariyuki → Papakatsu Girls!!
Seitenkan ~Ore no Naka de Ikeba Ii Daro!?~
Karizuma - Kon'ya, Aniyome to Nemasu -
Furyou ni Hamerarete Jusei Suru Kyonyuu Okaa-san ~Iki Jigoku ni Ochita Kazoku no Game~
Bloods ~Inraku no Ketsuzoku 2~

Do I need to keep going?
With side characters, it must be even more egregious because all male characters tend to get flushed there, and a woman is never far away from this place too.

It's a problem quite tricky. My proposal is to keep the dichotomy but widen it.
VN tend to voice the genders that are "romanceable" in priority, and to do or not do the same for the rest of the cast. For male-centered games, females, futanari, otokonoko and trans get voiced.
For female-centered games, I am not really sure but I assume males are logically prefered.
For amare games (kekeke), I am not really sure but genders get an equal treatment, so it's not a problem.
Therefore I propose to have two groups, males on one side, and the rest on the other side: female, futanari, otokonoko, and trans. I don't know about non-binary but I think they probably should fit here.
That way you should have partially voiced only if you have discrepancy in the same gender-group (one female is voiced but not a trans or one character doesn't have all their lines voiced) and not trans-group (females are voiced but males are not, which is the norm for nukige, at least).
SQL wizard should be able to find some stats about that and see if my proposal makes sense.

If it doesn't, the only left option is to have as many checkboxes as gender. Not really good.


Now, I want to defend my first proposal because I think it wasn't well understood. Those two proposals are in fact quite similar now that we normalized the categories (main, side, etc.) and options (unvoiced, full, etc.).
Let's say we accept the male vs female/etc. dichotomy. We get back to Beliar's t16991.31.
For a typical nukige, we will have on the release page:
Male protagonist(s) = Unvoiced
Female/etc. protagonist(s) = No female/etc. protagonist(s)
Main male character(s) = Unvoiced or No main male character(s)
Main female/etc. character(s) = Fully
Side male character(s) = Unvoiced or No side male character(s)
Side female/etc. character(s) = Fully or No side female/etc. character(s)
Narration = Unvoiced

This sounds plausible and probably common, right?

With my proposal, you only check who is voiced, which are the same categories as Beliar's proposal:

[x]No one (disable everything else)
[x]Male protagonist(s)
[x]Female/etc. protagonist(s)
[x]Main male character(s)
[x]Main female/etc. character(s)
[x]Side male character(s)
[x]Side female/etc. character(s)
[x]Unknown

I added an Unknown checkbox which is pretty telling that this part is incomplete and need contribution. I don't see the need for more than that and see information such as
Female/etc. protagonist(s) = No female/etc. protagonist(s)
Main male character(s) = No main male character(s)
Side female/etc. character(s) = No side female/etc. character(s)
or even
Something = Unknown
as unnecessary bloating. With the unknown checkbox, you know something that is not marked is missing (or not). As for knowing that something is not voiced, well, I don't think people care to see that because they can deduce that from its absence.
If that really really matters, then you can bloat my proposal with selects:
*Male protagonist(s) OR No male protagonist(s) OR Unknown
*Female/etc. protagonist(s) OR No female/etc. protagonist(s) OR Unknown
*Main male character(s) OR No main male character(s) OR Unknown
*Main female character(s) OR No main female character(s) OR Unknown
*Side male character(s) OR No side male character(s) OR Unknown
*Side female character(s) OR No side female character(s) OR Unknown

Anyway, where my proposal really differs from Beliar's is that I only put ONE option across all categories.
[x]Every character (disable the other choices)
[x]Not every character
[x]Not every line
[x]Token expressions

I am asking you: once you know which categories of people are voiced, how much chance do you have that these groups will get a different voicing treatment from each other? How much chance is that, that if you check
[x]Main female/etc. character(s)
[x]Side female/etc. character(s)
the first group will get a different treatment than the second group? Do you know many VN where side females get suddenly partially voiced when the main characters will be fully voiced?
I only met this situation once, and it was a Liar-soft: Tokeidai no Jeanne ~Jeanne à la tour d'horloge~. In this VN, women are fully voiced but men have half their lines voiced. This is the only VN I know where Beliar's proposal does its job at showing precisely the difference. The rest of the time, it will be consistent across all categories i.e. it will be either unvoiced, unknown or consistently fully/partial/token. In this peculiar case, my proposal will show [x]Not every line.
I am asking: do we need this granularity knowing it will be for edge cases only?

In the end, to exemplify my proposal like I did with the other proposal, mine will show on the release:
[x]Main female/etc. character(s)
[x]Side female/etc. character(s)

[x]Every character

(and *Unvoiced narration)

As you can see, you have only one option resuming how the chosen voiced groups are voiced.
If [x]Unknown is selected, the WHAT IS VOICED still refers to the non-unknown categories. This can be adapted on Beliar's proposal to get rid of every line which is either unknown, non existing or unvoiced, and which will unnecessarily bloat this section every time. Like I said, our proposals pretty much differ only when it comes to select what is voiced, as Beliar wants to fill this information for every category when I just want a general input across all the voiced categories.


To be honest, we need a SQL wizard (someone, go catch Rampaa ASAAAAP!) to do some stats about:
*how are gender voiced relatively to each other? Are males always separately voiced from the other genders? Or to put it differently: are females, futanari, otokonoko, and trans voiced differently when they are part of the same casting? What about non-binary? Do they get the "female treatment"?
*how much VN are like Jeanne, where voiced groups have different voicing treatment?


Btw
Maybe not. Maybe we shouldn't care about barely existing mobs that mayhap only have a single line... I would like Eacil to comment on that.
Yes, side characters are side characters. "Makes an appearance" and unlisted characters should be forgotten imo. They are so negligible that even if they insert some discrepancy, they are not important enough to care. However, they could mess with the side character group if a single one of them miss a line.


That's all.
#55 by Ezezin
2021-10-12 at 13:13
< report >Just a thing to think about before I go to sleep. Remember that there are characters with Unknown Gender Protagonist or characters whose gender is a spoiler in itself.
It's not like I don't like that proposal, but should releases have spoilery information when they never had it? It's not like we (or maybe myself alone, if I'm the only one who feels this way) could adapt or learn how to mark them correctly; it's just that it would be a little weird, that's all I'm saying.Last modified on 2021-10-12 at 13:13
#56 by beliar
2021-10-12 at 18:59
< report >Hmmm, I'm not against Eacil's proposal. As he has said, this might flush out a few strange cases where there might be discrepancies, but it does simplify the system and make less work for the contributors. Though I'm not sure I agree with your desire to remove the Unknown status from the characters. I also feel that at least the protagonists should have a "No protagonist" staus for reasons I have mentioned previously.

That said, I do tentatively agree by classifying the characters as Males and Everyone else, if we are going with the character dichotomy. Because the more you think about such things, the less useful the discussion becomes.

Remember that there are characters with Unknown Gender Protagonist or characters whose gender is a spoiler in itself.
And that's why my proposal in t16991.31 has spoiler boxes for the protagonists (cannot imagine needing spoiler boxes for any other character group).
#57 by Ezezin
2021-10-12 at 21:51
< report >After thinking (a lot) about Eacil's proposal and reading what Beliar said in #56, I'm fine with it too as long as this is available in some way:
spoiler boxes for the protagonists

Just a question: What about Unknown Gender Protagonist, Protagonist Gender Choice, Love Interest's Gender Choice and Player as a Character ? Will they be in the same group as "female, futanari, otokonoko and trans" or the "unknown" selection would be enough for them?

Edit 1: Search filter of VN with those tags.

Edit 2: Another way of avoiding the spoiler stuff and all those genderless/unknown gender/gender choice/player as characters is having one protagonist group and only separate genders for main and side characters. Although I don't know how common is having voice acting for only females/males protags in VNs with multiple protagonists:

*Protagonist(s) OR No Protagonist(s) OR Unknown
*Main male character(s) OR No main male character(s) OR Unknown
*Main female character(s) OR No main female character(s) OR Unknown
*Side male character(s) OR No side male character(s) OR Unknown
*Side female character(s) OR No side female character(s) OR Unknown

With this we won't have to worry about those situations and we can ignore Love Interest's Gender Choice (just 15 visual novels, nothing important).
Btw, don't forget about voiced narration.

Edit 3: Filter about visual novels with multiple protagonists and only one gender is voiced (or at least those that have seiyuu information).

Edit 4:
how much VN are like Jeanne, where voiced groups have different voicing treatment?
It's not a SQL search, but here is a search using VNDB search feature with female and male characters (Both males and females). The problem is that there are a lot of vn that have side characters without Seiyuu information, so those filters are not very useful.Last modified on 2021-10-13 at 02:45
#58 by Ileca
2021-10-18 at 08:13
< report >Found another cute problem with both of our models: how are we supposed to search? Concretely, how do you search for fully voiced VN? Or female-only voiced nukige? Those are pretty sensible options.
Even with a datum across categories of characters, it only allows us to search for aforementioned checked categories. Even if you map everything by inputting "no characters" and "unvoiced characters" for every category x gender, the modularity of this model wouldn't allow us to deduce global results. That could be programmatically deduced I guess?


I also forgot to say that, in case we can't group genders together, my model can absorb them by adding as many checkboxes as you want under each category (protag, main, side). It wouldn't be such a problem because
1/ only the form would suffer from the bloat, the releases would still only display which gender would be voiced (x protag/main/side)
2/ it wouldn't be a pita to use because you would only have to check the boxes that are voiced
2b/ if you multiply the checkboxes by 3 with "no characters" and "unvoiced characters", it becomes a little more painful though, but you can make 3 columns and wisely place some "check all" shortcuts here and there

Not today that we will tackle the problem. :(
#59 by Ezezin
2021-10-18 at 13:31
< report >If I understood Yorhel's pseudo-code, that can be done automatically. Here is one way of doing it (don't mind the names):
Explanation with simple words at the end of all this pseudo-code.

VisualNovelVoices = (OverallFullyVoiced) | (OverallPartiallyVoiced) | (OverallNotVoiced) | (OverallNoCharacters) | Unknown

Bool OverallFullyVoiced {
If ( ( (AllMainCharVoices == 'FullyVoiced' || 'NoCharacters') && (AllSideCharVoices == 'FullyVoiced') )
|| ( (AllMainCharVoices == 'FullyVoiced') && (AllSideCharVoices == 'FullyVoiced' || 'NoCharacters') )
|| ( (AllProtagonistVoices == 'FullyVoiced) && (AllMainCharVoices == 'NoCharacters') && (AllSideCharVoices == 'NoCharacters') ) ) {
OverallFullyVoiced = true,
}
Else {
OverallFullyVoiced = false,
}
}

Bool OverallPartiallyVoiced {
If ( ( ( (AllMainCharVoices == 'PartiallyVoiced') || (AllSideCharVoices == 'PartiallyVoiced') ) && ( (AllMainCharVoices != 'Unknown') || (AllSideCharVoices != 'Unknown') ) )
|| ( (AllMainCharVoices == 'NotVoiced') && (AllSideCharVoices != 'NotVoiced' || 'NoCharacters' || 'Unknown') )
|| ( (AllMainCharVoices != 'NotVoiced' || 'NoCharacters' || 'Unknown') && (AllSideCharVoices == 'NotVoiced') )
|| ( (AllProtagonistVoices == 'FullyVoiced' || 'PartiallyVoiced') && (AllMainCharVoices == 'NotVoiced') )
|| ( (AllProtagonistVoices == 'FullyVoiced' || 'PartiallyVoiced') && (AllSideCharVoices == 'NotVoiced') )
|| ( (AllProtagonistVoices == 'PartiallyVoiced') && (AllMainCharVoices == 'NoCharacters') && (AllSideCharVoices == 'NoCharacters') ) ) {
OverallPartiallyVoiced = true,
}
Else {
OverallPartiallyVoiced = false,
}
}

Bool OverallNotVoiced {
If ( ( (AllProtagonistVoices == 'NotVoiced') && (AllMainCharVoices == 'NotVoiced' || 'NoCharacters') && (AllSideCharVoices == 'NotVoiced' || 'NoCharacters') )
|| ( (AllProtagonistVoices == 'NotVoiced' || 'NoCharacters') && (AllMainCharVoices == 'NotVoiced') && (AllSideCharVoices == 'NotVoiced' || 'NoCharacters') )
|| ( (AllProtagonistVoices == 'NotVoiced' || 'NoCharacters') && (AllMainCharVoices == 'NotVoiced' || 'NoCharacters') && (AllSideCharVoices == 'NotVoiced') ) ) {
OverallNotVoiced = true,
}
Else {
OverallNotVoiced = false,
}
}

Bool OverallNoCharacters {
If ( (AllProtagonistVoices == 'NoCharacters') && (AllMainCharVoices == 'NoCharacters') && (AllSideCharVoices == 'NoCharacters') ) {
OverallNoCharacters = true
}
Else {
OverallNoCharacters = false,
}
}

---------------------------------------------------------------------------------------------
--Creating parameter for reusing
PartiallyVoiced_AditionalInfo {
NotEveryCharacter = Bool,
NotEveryLine = Bool,
TokenExpresions = Bool,
}
---------------------------------------------------------------------------------------------

AllProtagonistVoices == FullyVoiced | PartiallyVoiced | NotVoiced | NoCharacters | Unknown

If {AllProtagonistVoices == 'PartiallyVoiced') {
PartiallyVoiced_AditionalInfo,
}
---------------------------------------------------------------------------------------------

MaleMainVoices = FullyVoiced | PartiallyVoiced | NotVoiced | NoCharacters | Unknown
FemaleMainVoices = FullyVoiced | PartiallyVoiced | NotVoiced | NoCharacters | Unknown

String AllMainCharVoices {
If ( ( (MaleMainVoices == 'FullyVoiced') && (FemaleMainVoices = 'FullyVoiced' || 'NoCharacters') )
|| ( (MaleMainVoices == 'FullyVoiced' || 'NoCharacters') && (FemaleMainVoices == 'FullyVoiced') ) ) {
AllMainCharVoices == 'FullyVoiced',
}
Elsif ( ( ( (MaleMainVoices == 'PartiallyVoiced') || (FemaleMainVoices == 'PartiallyVoiced') ) && ( (MaleMainVoices != 'Unknown') || (FemaleMainVoices != 'Unknown') ) )
|| ( (MaleMainVoices == 'NotVoiced') && (FemaleMainVoices != 'NotVoiced' || 'NoCharacters' || 'Unknown') )
|| ( (FemaleMainVoices = 'NotVoiced') && (MaleMainVoices != 'NotVoiced' || 'NoCharacters' || 'Unknown') ) ) {
AllMainCharVoices = 'PartiallyVoiced',
PartiallyVoiced_AditionalInfo,
}
Elsif ( ( (MaleSideVoices == 'NotVoiced' || 'NoCharacters') && (FemaleSideVoices == 'NotVoiced') )
|| ( (MaleSideVoices == 'NotVoiced') && (FemaleSideVoices == 'NotVoiced' || 'NoCharacters') ) ) {
AllMainCharVoices = 'NotVoiced',
}
Elsif ( (MaleMainVoices == 'NoCharacters') && (FemaleMainVoices == 'NoCharacters') ) {
AllMainCharVoices = 'NoCharacters',
}
Else {
AllMainCharVoices = 'Unknown',
}
}
---------------------------------------------------------------------------------------------

MaleSideVoices = FullyVoiced | PartiallyVoiced | NotVoiced | NoCharacters | Unknown
FemaleSideVoices = FullyVoiced | PartiallyVoiced | NotVoiced | NoCharacters | Unknown

String AllSideCharVoices {
If ( ( (MaleSideVoices == 'FullyVoiced') && (FemaleSideVoices = 'FullyVoiced' || 'NoCharacters') )
|| ( (MaleSideVoices == 'FullyVoiced' || 'NoCharacters') && (FemaleSideVoices == 'FullyVoiced') ) ) {
AllSideCharVoices == 'FullyVoiced',
}
Elsif ( ( ( (MaleSideVoices == 'PartiallyVoiced') || (FemaleSideVoices == 'PartiallyVoiced') ) && ( (MaleSideVoices != 'Unknown') || (FemaleSideVoices != 'Unknown') ) )
|| ( (MaleSideVoices == 'NotVoiced') && (FemaleSideVoices != 'NotVoiced' || 'NoCharacters' || 'Unknown') )
|| ( (FemaleSideVoices == 'NotVoiced') && (MaleSideVoices != 'NotVoiced' || 'NoCharacters' || 'Unknown') ) ) {
AllSideCharVoices = 'PartiallyVoiced',
PartiallyVoiced_AditionalInfo,
}
Elsif ( ( (MaleSideVoices == 'NotVoiced' || 'NoCharacters') && (FemaleSideVoices == 'NotVoiced') )
|| ( (MaleSideVoices == 'NotVoiced') && (FemaleSideVoices == 'NotVoiced' || 'NoCharacters') ) ) {
AllSideCharVoices = 'NotVoiced',
}
Elsif ( (MaleSideVoices == 'NoCharacters') && (FemaleSideVoices == 'NoCharacters') ) {
AllSideCharVoices = 'NoCharacters',
}
Else {
AllSideCharVoices = 'Unknown',
}
}

---------------------------------------------------------------------------------------------
-- Edit 1: Edited the code for it to be easier to read and removed redundancies.
-- Edit 2: Fixed the partially voiced and unknown combinations, so the end result would be "unknown" instead of "partially voiced".
-- Edit 3: Fixed typos.
-- Edit 4: I forgot to add a comma and a couple of parenthesis; fixed.
-- Edit 5: Fixed "OverallNotVoiced", created the function "OverallNoCharacters" and reordered the first 4 parameters.
-- Edit 6: Added the protagonist voice information in some of the automated process.
-- Edit 7: Changed every "NoMainChar", "NoSideChar" and "NoProtag" for "NoCharacters".

-- Yes, my pseudo-code is a mix of Yorhel's pseudo-code, C and Perl; yes, those names are terrible;
-- and no, I'm not a programmer (yet), I'm just a university student.
________________________________________________________________________________

In other words, we are going to have:

Information given by the user:
-Protagonist(s)
-Main male character(s)
-Main female character(s)
-Side male character(s)
-Side Female character(s)

Information automatically deduced from those selections:
-All side characters
-All main characters
-The entire visual novel

All of them have the same selections, so no need for checkboxes:
Fully Voiced | Partially Voiced | Not Voiced | No characters | Unknown

If "All side characters", "All main characters" or "Protagonist(s)" are selected with "partially voiced", these checkboxes will appear only for those three options for the user to complete (optional):
[X] Not Every Character
[X] Not Every Line
[X] Token Expressions

If Beliar still wants the Narration voices, I can edit this code to add it.

Yes, I'm bad with names

For "The entire visual novel" I used only "All side characters" and "All main characters", without using the protagonist(s) voice information.

These are the combinations I used for the automated process:
-Fully voiced + Fully voiced = Fully voiced
-Fully voiced + No character = Fully voiced

-Fully voiced side character + No main character = Fully voiced visual novel
-Fully voiced main character + No side character = Fully voiced visual novel

-Fully voiced + Not voiced = Partially voiced
-Partially voiced + Fully voiced = Partially voiced
-Partially voiced + Partially voiced = Partially voiced
-Partially voiced + Not voiced = Partially voiced
-Partially voiced + No characters = Partially voiced

-Not voiced + Not voiced = Not voiced
-Not voiced + No characters = Not voiced

-No characters + No characters = No characters

-Unknown + Anything = Unknown

The idea was to show that it can be done automatically; if you want, I can change this proposal so it uses the protagonist voice information or change how "Partially voiced" its automatically done for those three groups.Last modified on 2021-10-19 at 04:33
#60 by beliar
2021-10-18 at 15:12
< report >
If Beliar still wants the Narration voices
Well, I surely do want me some cake... Oh, are we talking about the voices? Because the page seems to be filling up with some ancient alchemical diagrams...
#61 by Ezezin
2021-10-18 at 15:35
< report >
Not today that we will tackle the problem. :(
Did it in 6 hours :D
Of course, making pseudo-code and implementing it are two very different issues...

Now I'm going to take a break; staring the screen 6 hours non-stop is making my eyes hurt a little.Last modified on 2021-10-18 at 15:39
#62 by Yorhel
2021-10-18 at 18:36
< report >
Computers are literally (literally) magic. Take a rock, use light to inscribe it with arcane runes, then infuse it with lightning and recite the proper incantation to complete the spell.
We're all magicians here, beliar-kun.

(...I'll come with a more useful reply later, my magic doesn't work when my mind's filled with a human-sized metallic spider)
#63 by Ileca
2021-10-18 at 19:56
< report >Maybe Beliar is the only kid here who still didn't reach 30 years old and consequently can't use magic like the rest of us?
#64 by Mrkew
2021-10-18 at 20:19
< report >That's only for virgins you know
#65 by Ileca
2021-10-18 at 20:23
< report >And?Last modified on 2021-10-18 at 20:24
#66 by Mrkew
2021-10-18 at 20:26
< report >Beliar is a chad
#67 by Ileca
2021-10-18 at 20:31
< report >Not according to his vndb visit stats. You can't fit any pussy in that schedule... or life.
#68 by beliar
2021-10-18 at 21:39
< report >What is this "life" you are talking about?

P.S. I feel that in t16991.63 you are referring some kind of fictional work, but I cannot put my finger on what...
#69 by Mrkew
2021-10-18 at 21:46
< report >It's a general jp internet meme, it appears in many works. Famous example is Haganai
#70 by Yorhel
2021-10-19 at 06:37
< report >I'm all for eacil's proposal if that's where the concensus is going to and if that is sufficient to handle all the important cases.

Regarding search: ezezin is correct, the hard parts are in answering the following questions:
1. What is the data model? (we're defining that here)
2. What do people want to search for? (not an easy question, but something we need to work out)
3. Does (1) carry sufficient information to provide (2)?

The form of the data model is irrelevant, as it's easy enough to automatically map human-friendly search queries to information derived from the data. All we have to do is ensure that the information exists.


From #53:
CharacterGroup = Unknown | NotAvailable | Unvoiced | FullyVoiced | PartiallyVoiced

PartiallyVoiced =
{ SomeLines: bool
, SomeCharacters: bool
, Token: bool
}
This implies that there is a difference between FullyVoiced and PartiallyVoiced{SomeLines=false,SomeCharacters=false} - i.e. all lines and all characters voiced. Is that intentional?


[x]Every character (disable the other choices)
[x]Not every character
[x]Not every line
[x]Token expressions
I don't really understand the relation between "Token expressions" and "Not every line" here. Let's go over the possibilities:
[ ]Not every line  [x]Token expressions -> All lines voiced
[x]Not every line [x]Token expressions -> Only token expressions voiced?
[x]Not every line [ ]Token expressions -> Some lines voiced, but not token expressions?
[ ]Not every line [ ]Token expressions -> "Not every line" unchecked implies all lines voiced, so also token expressions? So this combination makes no sense.

In my formalization of #52, when converted back to "input form talk", I merged those two checkboxes into a single select box with three options: "All lines voiced", "Some lines voiced" and "Only token expressions voiced". That seems... clearer to me? Or did I miss the intention behind the "Token expressions" checkbox?
#71 by Ezezin
2021-10-19 at 07:36
< report >
This implies that there is a difference between FullyVoiced and PartiallyVoiced{SomeLines=false,SomeCharacters=false} - i.e. all lines and all characters voiced. Is that intentional?

That's exactly what I'm trying to say. Fully Voiced would be all characters + all lines (from a group of characters)

About
[x]Not every character
[x]Not every line
[x]Token expressions

I just took it from Beliar's proposal in #43. I'm not completely sure what are they, except that he used Dangan Ronpa Kibou no Gakuen to Zetsubou no Koukousei as an example.

From what I understand, those three selection boxes exist so they can give additional information if Partially Voiced is selected (more like as a Why did you choose that option? sort of thing); there shouldn't be any additional data based on that information. If I understood Eacil, it seems his proposal goes that way too, with the difference being that those 3 selection boxes would apply to the Visual Novel and not every character group.

Edit:
What do people want to search for?
This is a hard one. A quick search in the forums shows me that people tend to ask more about animations than voices; and if they ask about them, the conversations are usually about seiyuus, if a visual novel have a fully voiced cast or if the sex scenes have voices.

Maybe I (or someone else) can start a thread in general discussion with a poll?
Some discussions: t16582, t16870, t16754, t16967, t17005Last modified on 2021-10-19 at 08:23
#72 by Ileca
2021-10-19 at 08:40
< report >"Not every line" means that some lines but not all are voiced. The voices must match the text. A line itself can be partially voiced (a fraction of it).
"Token expression" means that some irrelevant amount of lines is voiced (all or not all lines) but without following the text. It can be catchphrases, laughing, groans, whatever, or non looping sexual moaning.

Both must be distinguished because token expressions really is the cheapest grade of voicing and not comparable to a VN with half its lines voiced..

The problem with token expressions is that sometimes you have few lines in the middle that match the text. Doujinge are on a tight budget so they voice whenever they can. They will voice the important parts first and might fill the rest with token expressions.
That's why I made those options checkboxes as you can have:
-Token + another option (probably not "every character" because there should be no room for those expressions)
-Not every character + Not every line
Danganronpa is like that. It has some real lines and mostly token expressions. Check link (probably when the characters are introducing themselves).

There is also the problem of BGV I remembered recently...
BGV are BackGround Voice aka looping voices. Can't think of any use of BGV outside of h-scenes. They are looping moanings.
BGV and token expressions are not the same thing. BGV are an extra layer atop the base voicing.
If we allow multiple choices to be selected, we can easily fit BGV as a new choice.
We can keep it as a tag and exclude it from the model explicitly but I would say it's better to handle everything at the same place if we can.

I am adjusting the model:
Every character  | Not every character
Every line | Not every line
Token expressions (not if every line is selected)
BGV

I also discovered that it was possible to have voices during narration. There is no dialogue but voices will be put at relevant spots. Like the narration describes a rape and you will hear a woman's voice screaming to stop. It's probably extremely rare. I think it should be considered in itself as:
-"not every line" if those voices are fully formed sentences which are relevant text-wise but are just not transcribed
-"token expressions" if they are stereotypical voices like screams or moanings

About what people probably want to search globally, I can see:
-fully voiced (protagonist(s) included)
-fully voiced (protagonist(s) not included)
(Probably can be handled as fully voiced = protagonist(s) not included, and let people add another standalone filter for the protagonist though two distinct options might be convenient for people)
-search for a gender only regardless of how they are voiced
-search for a gender only depending on how they are voiced (fully or partially)
-partially voiced

Those options are not exclusive. Meaning that you can have both fully voiced options together if there is no protagonist. That female-only equals partially voiced if there are male characters. That female-only equals fully voiced if there are only fully voiced female characters. Etc.

So, do we agree that to handle that, we are forced to input for every category "no characters" and "unvoiced characters"?


And lastly, we REALLY NEED those statistics if we don't want to make a fool of ourselves by implementing an irrelevant data model.
I was thinking of a matrix:
y axis = list of VN
x axis = protagonist | main | side x voiced | not voiced | no characters x cis women | cis men | Transwoman | Transman | Non-Binary | Futanari | Newhalf | Homosexual men | Homosexual women | Unknown link
then you group them together to have the total of every combination to see which ones are to be handled based on their frequency.
Just an idea.
Sorry but this is way above my pay grade.

PS: Ezezin, I couldn't find a single Gender Choice -able character with the same seiyuu voicing different genders > link
#73 by Ezezin
2021-10-19 at 09:26
< report >I was asking in what group should Unknown Gender Protagonist, Protagonist Gender Choice, Love Interest's Gender Choice and Player as a Character be handled, regardless of voice acting. If in the males group or in the females group.

A Search filter of VN with those tags.

That's why I modified your proposal a little so instead of
*Male protagonist(s) OR No male protagonist(s) OR Unknown
*Female/etc. protagonist(s) OR No female/etc. protagonist(s) OR Unknown
It would be like
*Protagonist(s) OR No Protagonist(s) OR Unknown

Filter about visual novels with multiple protagonists and only one gender is voiced (or at least those that have seiyuu information).

From my perspective, not a lot of visual novels have protagonist male voiced and protagonist female not voiced, or protagonist female voiced and protagonist males not voiced to have the gender information separated. I though we can group them all in a single protagonist group to avoid those cases and the spoiler stuff and we wouldn't loose to much information.

So with that, the character group would look like this:

ReleaseVoiced =
{ Protagonist: CharacterGroup
, MainMaleChars: CharacterGroup
, MainFemaleChars: CharacterGroup
, SideMaleChars: CharacterGroup
, SideFemaleChars: CharacterGroup
, Narration: CharacterGroup
}

One last thing,
Every character | Not every character
Every line | Not every line
Token expressions (not if every line is selected)
BGV
I like how that looks 👍

Edit:
"Token expression" means that some irrelevant amount of lines is voiced (all or not all lines) but without following the text. It can be catchphrases, laughing, groans, whatever, or non looping sexual moaning.
Now I get it. Is that explanation going to be on the FAQ?Last modified on 2021-10-19 at 09:54
#74 by Ileca
2021-10-19 at 10:09
< report >Protagonist Gender Choice & Love Interest's Gender Choice: It's never voiced all in one so we don't care?
Same, Player as a Character says it is not voiced so I don't see how this tag is an edge case.
Unknown Gender Protagonist: link
For this last case, it's more complicated and that's why I included Unknown with this query to check what it was. As you can see, it's not only about protagonists. A lot are mascots or monsters. We probably need a third "unclassified" category next to male and female/etc.
#75 by Ezezin
2021-10-19 at 10:20
< report >I know that those kind of protagonists aren't voiced. That's not the problem. The problem arises when:
Male protagonist(s) = Not Voiced or No Male protagonist?
Female/etc. protagonist(s) = Not voiced or no Female protagonist?

I forgot to exclude Love Interest's Gender Choice, only 17 visual novels, and I highly doubt someone would look if they are voiced or not.

Here, you forgot that sometimes the real gender is under spoilers, also excluded "makes an appearance" characters: linkLast modified on 2021-10-19 at 10:40