Hey everyone!
So... this project has been around for a while and since I had a lot of free time in the past month I guess it's time to give some feedback. I'll put it in one post although I am aware that some of the topics have own threads. If you don't like that, feel free to tell me.
DisclaimerMany people don't like criticism (especially programmers) - therefore I'd like to mention that everything written here is meant in a productive, non offensive way and is just my personal opinion.
ConceptsTraitsProblemCurrently, most traits are just attribute modifications that don't have a meaning at all, especially since there are three other ways of gaining attribute points (experience, training and equipment).
SolutionThe easiest solution would be to remove the whole system. I don't think it's a good solution though. Instead, the stat modifications should be replaced by a unique mechanic for each trait - the "Virgin" trait is a good example for that. Other ideas could be "Nymphomaniac" letting the character gain joy when working as a prostitute but lose joy otherwise or "Broken Will" allowing the character to be treated like a slave without losing anything. These are just samples, I'm sure you and the community can come up with a lot of creative stuff. All other traits - especially the very generic ones (like "Great Figure", who would create a pack for an ugly character anyway?) - should be removed.
SlavesProblemSlaves have very few things that distinguish them from normal employees. APs are replaced by money to hire them, wages are replaced by the slave tax to pay them - in both cases it is essentially the same outcome for the player.
SolutionThe current system could be replaced with an interesting risk vs reward mechanic like slave riots or government raids (which is implying that slave trade is illegal, but that bit of lore should be easy to change), causing the player to lose all slaves working in a particular brothel that aren't loyal or happy enough. To make this more interesting, slaves should start with very low happiness when bought (would you be happy to be sold?).
TaggingProblemRedundancy, duplication and the same thing multiple times. Seriously, I don't mean to be offensive, but the current tagging system is horrible. You essentially store the exact same data three times - in the name (currently not used as information source for whatever reason), the XMP metadata (a really bad way to obfuscate information) and the json files (that aren't even sorted for fast access).
SolutionCompletely remove the tags.json and the metadata - use the file names instead. The only reason to not use the name for such simple information encoding would be because the names are user defined and therefore immutable, but as the user never sees the image names (except when he wants to change the tags) that is not the case. Chose single numbers and characters that encode each tag (or two if there are more than 36 tags). That way a user can change the tags of an image within a second without the need for an additional tool.
Optionally, keep the json files but reorganize them. Storing the tags for each image doesn't make much sense (for efficiency), store a list of images for a given tag instead so you can access them faster.
ProblemBloooooooooating. Yes, I mean the amount of tags. I (kind of) followed the discussion on the tagging concept thread and I disagree with the common opinion that more tags are better than less tags, at least with the current system. You talked about introducing categories which is a good step, but it's not far enough.
SolutionWhy don't you use a hierarchical system for tags with fallbacks to the parent tag instead of a category or a profile picture. This would be the first step to make many tags a viable option. But even then you should consider which tags you actually need and which just increase the amount of time and pictures that a pack needs to be complete (where complete means that every tag is present at least once).
- One for each sex type? Yes, definitely. These are the most important tags, but what actually counts as sex type? I used a statistical approach: "Vaginal", "anal" and "blowjob", followed by "handjob" and "titjob" - those five have the highest number of hits (using various search engines) and should definitely have their own tag. All others are very similar to one of them so it's a good start. Propably "footjob" should be added as well, because it's quite different from the others.
- An own tag for lesbian activities? That's a sexual orientation, not a sex type. Licking a woman as a woman can be considered a blowjob, fingering equals handjob and so on. No need for a discriminating tag (side note: I'm a straight male, I'm just trying not to ignore other peoples' sexual orientation). That would also allow you to make customers gender-neutral, reducing the effort for the writer significantly. If you don't want gender neutral customers, add a tag that defines what gender the partner has (male, female, futa, group).
- One for every little detail in the image? Well, having an image that exactely matches the text is nice, but my honest opinion is that if this is a problem then you should get a better writer instead of more tags. General descriptions don't have to be boring and the game doesn't need insanely detailed descriptions or image tags.
- One for each location with a generic location as fallback? Well, I can see the point why you would do that. But the image is supposed to show the character, not the background and therefore the only area that is really different from the others is the beach.
- One for each mood? Really? Is this even used in the game? Does it matter? Who cares about the mood of the character? Conclusion: These are way too specific and add more effort than they are worth. The same goes for the different costumes (bunny, cat, dog and cow).
- One for each occupation? I guess this makes sense, but you should differentiate between different jobs (like stripping or cleaning) that need an own tag and general freetime activities that can definitely be unified as such.
Result (note that this is just a concept)
> Profile
-> Freetime
--> Beach
--> Rest
---> Masturbate
-> Job
--> Waitress
---> Bartending
---> Cleaning
--> Stripper
--> Arena
> Prostitute
-> Sex
--> Vaginal
--> Anal
-> MakeOut
--> Blowjob
--> Handjob
---> Footjob
--> Titjob
And there you go. All tags I've seen while playing the game in a hierarchical order. Of course more can be added, but always keep in mind where the focus of the image is - there is no need to describe what color the tree in the background has. And if it actually isn't detailed enough then try generalizing the description texts.
BalanceSave ScummingDefinitionFor those who don't know, save scumming means to create a save point before every important event (e.g. a fight in the arena or a new day) and reload if something bad happens.
ProblemNot only does the game allow it, I'd say it encourages it, especially in the arena. There are so many random things (rewards, enemy selection, critical hits) that it can get incredibly frustrating.
SolutionThere are two things that need to be solved here: The ability to save scum in general and the frustrating RNG on a per-case basis.
First, the saves: There is a simple solution that many game developers use: Select one save slot at the start of the game and autosave to that slot after certain events. Do not allow the user to save the game to any other slot. This method doesn't make save scumming impossible, it just increases the effort so much that it's no longer worth it.
Second, the random elements - let's start with the arena.
- The rewards should be further split up into tiers based on the item value (e.g. stimulant in tier 0, big mana potion in tier 1 and ultimate health potion in tier 2). The rewards could then be readjusted to reward one random item from each tier.
- Something similar should be done for the enemies. I don't want to get into details here because the chainfights don't seem to be very polished so I assume it's still a work in progress.
- Critical hits are a problem because most games that use critical hits have a high amount of hits per fight, reducing the randomness by applying the law of big numbers. In PyTFall, some fights are over after a single hit - that's not a good environment for random critical hits. If you want to keep the mechanic you should introduce items that balance it, e.g. a full body suit that prevents critical hits on the player.
- The training also is quite random. The amount of stat points that a character gets should be more consistent.
- Events like the prostitute violence or the above proposed slave raid are somewhat difficult to adjust. I think a pseudo random system would be the best approach here - which basically means that the chance for an event to happen increases until it happens and then gets reset.
- Finally, the shops could get a button that refreshes the inventory for a small fee.
ArenaProblemI know this is kind of a work in progress, but currently it bugs me very much that fighting in the arena is so much more efficient than anything else in the game. I consider it a good thing to make the game more than just a brothel sim, but in the end all activities should be equally rewarding.
SolutionFirst of all, balance the randomness and prevent save scumming, see the points above. The most important next step would then be to limit the boss reward (maybe to once a week). After that you can start adjusting raw values and maybe even introduce things like a difficulty setting or level scaling.
DocumentationAttributesProblemI've checked out the thread where somebody is asking for advice on what each attribute does and someone answered that the stats should be self explanatory. Well, they're not, at least not all of them. This might be a problem of missing implementations (work in progress stuff), but what are "character" and "libido" supposed to do? Isn't "character" just inverted obedience? If so, why is there one black sheep among the flock (one negative among positive attributes)? I have a stripper in one of my savegames that has 0 character and 100 libido and still refuses to work as a prostitute (which is kind of ridiculous).
SolutionI know the game is an alpha version, but some basic documentation wouldn't hurt. This includes things that are supposed to work and things that will be added in the future.
Conversion vs compatibilityCompatibility with old WM packs is nice, but a tool for converting them would be better. It bugs me that the missing elements are random generated for every new game.
SavegamesModifications to characters that aren't in the saved game yet (yes, I did check the whole city) do not apply for some reason. The same goes for database changes (e.g. adding a new item). Is that a bug or do you actually save the whole database in a save game?
Error handlingThe note that some file wasn't found is really not helpful. What would be helpful is a tool to verify characters or an error message that actually tells me what file the game was looking for. Also, crashing the whole game because a single image couldn't be loaded seems unnecessary.
InterfaceResolutionThe maximum internal resolution is 1280x800 - 720p isn't too bad, but on a 1080p screen it still looks... questionable. Is there a way to increase the render resolution?
New dayProblemThe new day screen doesn't have the focus that I'd like it to have. To put it in simple terms: What I want to see in the first place is the image. Afterwards, a short text and a summary of stat changes would be nice. So that's the priority. Why does the image only get 1/3 of 3/4 of the screen? Why do the few numbers that show attribute changes get just as much? Why does the tooltip box (in which I've never seen more than one line) get five? Why does every building have a (relatively) huge thumbnail instead of a simple "Next -"/"Previous brothel" button?
SolutionA new layout! Did this within 3 minutes, it's enough to show the general idea. It should be better for both large screens (lots of space for the image) and small screens (because it uses a vertical layout instead of a grid). Note that "section" skips to the next/previous building, then the character overviews, then the personal overview.
In case you actually like it, consider using a different (similar to the old) layout for the overviews (doesn't make much sense to have a huge profile picture there).
Attribute overviewProblemCurrently, all attributes are expressed with two numbers - current and maximum. While that is technically acceptable, managing equipment for characters would be a lot easier if it would be visible how many points are the character's base and what comes from equipment (and, currently, traits).
SolutionThere are two solid approaches - which one is better depends on how much space is available.
The first is a progress bar with multiple values.
<
-------|----|---|--> (base, current, max, bar length = absolute max)
"Base" is the amount of points that the character has, "current" is the amount of points that is used for calculations, "max" is the current maximum and "absolute max" is the maximum possible at the current character level. The numeric values could simply be shown on the bar.
The other possibility would be color coding - less space requirement, but also less intuitive to read.
XX/YY
"XX" shows "current", the color (or background color) depends on the "base" to "current" ratio (
light green to
orange), "YY" shows "max" and is colored depending on the "max" to "absolute max" ratio (again, light green to orange is preferable).
Other problemsWhenever a stripper auto-rests, the stripping performance of the current day counts as minimum, causing all other characters in the brothel to earn much less money. I assume that's not intentional.
I checked the last few pages of this thread and noticed the discussion about different jobs for every profession. While I generally don't mind the idea, please try to consider if a certain job makes sense for the player before adding it. I'll try to give you a few (negative) examples (
my apologies to MrKlaus, his post is the most productive in this matter, so I also took the examples from it):
Jobs that only add a different image type (e.g. dominatrix for the "bdsm" tag or receptionist for the "group" tag) - why not just make customers request that kind of stuff?
The same job in different locations (e.g. strippers, event dancers & cabaret dancers) - if there's no possibility for different outcomes for the player, it should stay generalized.
Overly complex or punishing mechanics (e.g. assassins and bodyguards) - while I think that it sounds very interesting, I also think that it's a little too complex (especially because killing the player in a game like this sounds like a really bad idea).
My point: As long as a job doesn't have an interesting mechanic (that doesn't punish the player too much) or adds the possibility for an extreme fetish image tag (side note: define "extreme"), it's propably unnecessary.
Finally, on the point of adding more attributes for dating and other stuff: Keep it reasonable and try not to overload the interface (character overview already is cramped).
It's unfortunate (for me) that you chose RenPy as your preferred framework. I have experience with C, C++, Java, Lua, PHP, HTML and CSS, but none with Python (and no interest in learning it at this time) so I can't really help you with code.
That's it for now, everything is up for discussion so feel free to bash me (but please stay reasonable).
Have fun!