Pink Petal Games

PyTFall => PyTFall: General information => Topic started by: Sarabada on October 06, 2016, 10:18:14 PM

Title: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 06, 2016, 10:18:14 PM
Hello,

First off, I am glad to see that development on this game appears to be ongoing judging by recent posts. I previously played a bit of Blue Wind's brothels.im (as far as I can tell, both version 1 and the version 2 revamp) but eventually wanted to try something else because I felt I had 'beaten' the game. It's been quite some time since then, so perhaps it's worth revisiting, but on a whim I did some searching a few days ago and came across PyTFall here. I grabbed the v0.45 alpha off the stickied thread and went off to see how it was.

At present, it's pretty fun, and despite the similarities, I enjoyed the wider 'cast' of characters I could employ, though Blue Wind's writing and story is somewhat more immersive.

However, as I continued playing, I noticed some issues that seemed to strike me as strange: I never seemed to have enough money, and the taxes would almost always very nearly bankrupt me. I wasn't sure why, but perhaps that was simply this game being 'difficult' and I searched for ways of generating more money to cover it. I felt like doing the chain battles in the arena every day was almost the only reason I could stay afloat. I checked the balance sheet for the whole-game summary, and it did show that the arena (and item sales from that) were a large part of my income - around 2x what I got from the Brothel.

Discovering this, I wanted to try and make the Brothel itself more profitable, so I spent about two in-game months sending virtually my entire cast into training programs to dramatically boost their stats, relying on the daily arena fights as sole income during this time frame to keep me afloat until the 'investment' was done.

When everyone returned, the income generation was definitely noticeable - gross income went from about 9-12k per week up to around 30-40k per week. Still, for some reason I felt like after the taxes hit, I was only enjoying about 3k net profit every week, which seemed even less than the amount I'd make in the arena in 7 days, though still better than struggling at about 1k a week initially.

At some point, I decided to just load up all the library files in SublimeText so I could do whole-folder searches and do some digging. The first shock was that the income tax would shoot up to an astounding 45%! The second is that it seems to be 10-45% of your total income, completely ignoring all the expenses you incur naturally, which explains why there was never any real profit week to week.

To confirm my suspicions, I decided to run a test just now: I kept track of my income and expenses for one week in order to doublecheck how the numbers worked out.

In my current (first) game, I'm coming up on the end of the first year, so I tracked the last week of the year. It's Day 366 right now and I have 260k gold on hand, and enough items to push over 300k if I sold them, but I'm holding on to them as 'emergency' cash.

I also own the 10-person Brothel, the House in the City. My current staff consists of 6 prostitutes, all rank 3, 1 guard, 2 service girls and 1 stripper.

Over the course of the week I ran 1 chain fight in the arena each day (Amazon Tribe) which nets me an average of 2100 gold a day.

By the end of the week, I was informed that my taxable income for the week was 65,730, which meant I had the 30% tax rate, deducting 19,719 gold. This leaves me with 46,011 gold of revenue. The next part is property taxes of the brothel and slaves, which came to a total of 4,974 gold (3k for the house since it's 4% of 75k.) I'm now down to 41,037 gold revenue, which is still not too bad... except that doesn't take into account the expenses: In that week, my total expenses (consisting of Wages, Upkeep and Pro Cleaners) came to 35,664 gold. Once that is also deducted, I'm left with a meager net profit of 5,373 gold for the week. Even if we don't count the Pro Cleaners (since it's a service, perhaps that makes sense to pay out of your own pocket) that only comes to a total of 4,166 gold added to that net profit stat (which I'd still have to pay anyway.)

In running the calculations, it also appears that (contrary to what I had thought,) the gold you get from the arena is not taxed, as it's not considered here as part of your taxable income. The total amount of gold I got from running 7 days of Amazon Tribes fights came to 14,773 gold, not including extra gold that would come from selling the items they reward. This disparity is a bit...insane. I earned almost triple what I got from the brothel just running that chain fight. For a brothel simulator, it's strange that the best way of generate wealth is to....not run a brothel.

If I do a quick extrapolation to a higher income (say, double this data to 131k) you would still end up with roughly the same weekly profit, if not less, due to the higher tax rate then, along with the higher wage and upkeep costs you incur to presumably generate that much revenue (based on the numbers, you would have roughly another 10-13 members of staff running at an average 'upkeep' cost of ~350 gold each, which also means slightly higher property tax from using the first mansion to fit them all.)

Apologies for the length of that story, but I'm simply wondering how the heck I need to be playing this game to actually feel like I'm getting ahead with the investments I make, because it feels like the game is designed to keep you at a specific level of income no matter how well you do. The majority of my income is currently still coming from the arena and sales of the items I get there.

On this point, part of me is wishing to try and mod this income tax to make more sense: I don't want to simply reduce the tax rate, but rather have it apply the tax on the net income after taking into account expenses. On the other hand, I feel kind of stubborn in thinking 'I can make this "hard mode" work!' particularly because I am still generating gold... just really slowly. However, there are a number of other issues I want to 'fix' and considering its been over a year at least (it looks like) since v0.45 alpha was released, I doubt the next version/beta will be coming anytime soon to alleviate these issues. At the same time, I don't want to have simply 'made it easier.'

At the least, I feel like if the 'taxable income' value was first deducted by the amount of wages + upkeep paid (we can leave pro cleaners out, I guess) before applying the tax rate, it would make a lot more sense, and simultaneously be not as punishing. Alternatively, you could even exempt upkeep from this step, and only deduct wages as a way of encouraging the hiring of 'free' characters - they may cost more to 'maintain,' but they mean you pay less taxes.

Using the data from my previous week, with a 65,730 gold gross income, if we deduct the 35,664 in expenses first, we end up with 30,066 net income that, if taxed at 30%, leaves us with a more reasonable 21,046.2 gold. From there, deducting property tax as normal would leave us with 16,072.2 gold - slightly better than one week of arena fights in raw gold. If we also throw in the arena income as taxable in this way, we would end up with 65,730 + 14,773 = 80,503 - 35,664 = 44,839 * 0.7 = 31,387.3 - 4974 = 26,413.3 gold net income (as opposed to 16k + 14k = ~30k using this proposal if it wasn't taxed, and 14k + 5k = ~20k in the existing system.) As it stands, it really feels like I might as well just shut everything down, live alone in the shack that I only have to pay 200 gold a week for, generate income through the arena, and basically end up about the same as currently with a brothel.

I could theoretically push the rank 3's up to rank 4 and even rank 5, but my brothel currently does not have enough reputation to draw in the higher ranking customers, and I'd end up starting to turn the beggars away, which based on the code, will tank reputation quickly as they badmouth us for turning them away. The text in the code claims the damage would be 'insignificant' but it looks like it's a 50% chance to reduce reputation. It's only by 1, but this leads to the next issue: I can't reliably raise the brothel's reputation.

Fame is apparently quite easy to do, but reputation... So far I've only found that service girls working the bar will boost it randomly by +1. The problem, though, is the stripper, and the amount of fatigue the combined workload causes. I have two service girls (each with over 80 Charisma and Service, as well as 20-40 agility, which are the breakpoints I found in the code) trying to share the load, but the single stripper (75 Charisma/Strip, maxed reputation, unknown fame since that stat isn't listed) completely inundates both of them with 40+ clients. The very moment I set them to service alongside the stripper, both immediately max out on fatigue. Sure, Sakuya can handle most of them and even get something like 3k gold all at once, but then they're out of commission for the next 2-3 days recovering fatigue while I pay her 600 gold a day in wages. This means my reputation is stuck at like 15. This is also the reason I have to rely on the Pro Cleaners so much: my service girls are literally never available to clean. I'm scrambling to find more service girls, but none exist in all the girls I've talked with, so I'm going to just have some of the prostitutes change jobs over to service girl when I move to the first of the three mansions. This also means that 50% chance of -1 reputation is terrible for me.



Logic and theorycrafting aside, I would like to ask if it would be okay to ask here for some help when it comes to making these changes. I'm sure you guys have already gone over balancing for the next version of the game, but I imagine it's a long way away still, so I want to make what changes I can to 0.45a so I can enjoy it more in the meantime. (I poked at the character pack stickies, but I'm under the impression that they won't work for this version? Some are also missing data files.)

I assume I can simply edit/make changes to the *.rpy files in the library folder. Unfortunately, I don't really know Python and its syntax, so that's where most of the help I'll need is. I've made mods for Civilization V which uses Lua instead; I never did anything for Civilization IV which I believe used Python. The gist is that I can figure out the logic and rough code, but I'll need some guidance on the proper syntax, and what data I can call from the game.

Alongside this, I feel I want to 'fix' a few other niggling issues I have with the game's numbers, in no particular order:

Sorry for the super long post, but I had a lot of comments I wanted to put down, lol.



As an aside, I did notice that the main hall upgrade is broken in the code, assuming I'm reading it correctly:
Code: [Select]
elif self.brothel.upgrades['mainhall']['2']['active']:Is written twice in the logic, so I believe if you only build the first main hall upgrade, it will never provide the prostitution payout bonus of 1.1, as you can only ever get 1.2 at the earliest with two upgrades.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 06, 2016, 10:41:27 PM
As an aside, I did notice that the main hall upgrade is broken in the code, assuming I'm reading it correctly:
Code: [Select]
elif self.brothel.upgrades['mainhall']['2']['active']:Is written twice in the logic, so I believe if you only build the first main hall upgrade, it will never provide the prostitution payout bonus of 1.1, as you can only ever get 1.2 at the earliest with two upgrades.

It's possible. The trouble is that this code has been completely rewritten and I can't even revert to it because we went from mercurial to git at some point with part of project history lost.

=======================>>>>
To play without arena grinding, you need a good girl (usually a slavegirl) to start with. With a lot of constitution... She should get 3AP per day instead of two. If she doesn't, a couple of days in school should fix that. With that she should start earning a bit of cash. Decent items, training dummy till it's no longer useful and stuff like that will gradually increase profit, in the meanwhile a free girl can be talked into joining the brothel.



Most of the other stuff is no longer applicable to the working dev version, game looks similar but there is too much new logic with parts of the game completely rewritten for anything from the Alpha release to matter for upcoming Beta.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 06, 2016, 10:56:21 PM
Oh wow, didn't think I'd get a response so quickly, haha.

I was wrestling with this forum's formatting to make that wall of text slightly more readable, but it looks like you snuck in a response while I was doing that.

I understand that most of these points and balance issues are no longer applicable to your development, but I can't gauge when we'd be able to play said beta, so in the meantime I was thinking of tweaking up the alpha to fix some of these issues I have - some of the stuff really bugs me since it doesn't make much sense, or isn't very fair. If the beta is only a couple days or weeks away, I'll probably wait, but if it'll be months or another year, I'd probably just edit the alpha until then so I have something to play in the meantime.

As far as the starting suggestion goes, I'm quite far from that point right now.
It's Day 366, so I just completed the first year of gameplay, and am ready to move on to the first of the large mansions, but I felt it's taking a lot longer than it should be due to the income tax rivaling my upkeep on 10 girls leaving me with very little if I don't spam the arena.

FWIW, every single one of my girls right now has enough constitution for 3 AP, with two having 4 AP already. 8 of 10 are also slaves, Sakuya and a random Leafa character being the only two 'free' girls I've hired so far. I do, however, have 5-6 other 'free' girls at maxed disposition waiting for me to hire them when I make the move to the mansion, though. The slave market no longer has any attractive options (too high upkeep cost for too low stats.)

Also, one thing that I haven't been able to track down: The random Leafa character is and has been my only guard for a long time now. The problem is that very randomly she will just end a day with less than 5 health, even though she was not involved in any guard events. It doesn't even appear in the section that details what the girls did each day - it just suddenly appears in the summary page when it lists the wage she was paid. I've gotten used to just assuming she accidentally stabbed herself and needs another potion at this point, but it's aggravating that I have no idea why it's happening. Could it be the 'silly' trait she has?
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 07, 2016, 03:08:27 AM
Also, one thing that I haven't been able to track down: The random Leafa character is and has been my only guard for a long time now. The problem is that very randomly she will just end a day with less than 5 health, even though she was not involved in any guard events. It doesn't even appear in the section that details what the girls did each day - it just suddenly appears in the summary page when it lists the wage she was paid. I've gotten used to just assuming she accidentally stabbed herself and needs another potion at this point, but it's aggravating that I have no idea why it's happening. Could it be the 'silly' trait she has?

They do try to train if everything is quite in the building, there should be a report about that. I don't recall any Silly trait having such an effect.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 07, 2016, 12:18:12 PM
They do try to train if everything is quite in the building, there should be a report about that. I don't recall any Silly trait having such an effect.

Right, that makes sense, but I can't figure out why it's happening.

According to the code, the function post_job_activities() says at the bottom, when I have no guard buildings:
Code: [Select]
                    if dice(50):
                        self.txt.append("She spent time relaxing. \n")
                        #display rest only if they did not fight
                        if not self.girl.guard_relay['bar_event']['count'] and not self.girl.guard_relay['whore_event']['count']:
                            self.img = "rest"
                        self.girlmod['fatigue'] = self.girlmod.get('fatigue', 0) - random.randint(7, 12) * self.girl.AP
                        self.girl.AP = 0
                    else:
                        self.txt.append("She did some rudamentory training. \n")
                        self.girlmod['attack'] = self.girlmod.get('attack', 0) + random.choice([0,0,0,0,0,1])
                        self.girlmod['defence'] = self.girlmod.get('defence', 0) + random.choice([0,0,0,0,0,1])
                        self.girlmod['magic'] = self.girlmod.get('magic', 0) + random.choice([0,0,0,0,0,1])
                        self.girlmod['joy'] = self.girlmod.get('joy', 0) + random.choice([0,1])
                        self.girlmod['exp'] = self.girlmod.get('exp', 0) +  random.randint(2*self.girl.level + self.girl.AP*2, self.girl.AP*2 + 4*self.girl.level)
                        self.girlmod['fatigue'] = self.girlmod.get('fatigue', 0) + random.randint(15, 20)
                        self.girl.AP = 0

None of that deals with health at all, so I'm stumped as to how to prevent her from, uh, stabbing herself.

It just happened again, too. I attached two screenshots of what I see, and these are the only two places she even appears in. Nothing hints at her being damaged in any way, yet her summary page tells me she just randomly lost 111 health for no reason, leaving her with 2 left. Curiously, she is the only character I've had such issues with. Whether it's just her, or related to guards somehow, I'm not sure yet. I'm currently training a second warrior to help her guard in preparation for the move to the Mansion on the Main Road, so whenever she's ready I can have her guard as well and see if she gets afflicted with the same tendency to randomly stab herself.

For reference, the game claims my security rating is 1000 out of 1000 with just her guarding at 20% presence. Also, her traits are currently: Not Human, Puffy Nipples, Long Legs, Abnormally Large Boobs, Magic Gift, Silly, and Well-Mannered.

I guess for now I'll toss her another potion...
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 07, 2016, 04:30:08 PM
Looks like she's been through hell... Noone reported anything like that and we got all sorts of bug reports from like 7 different forums.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 08, 2016, 11:35:12 AM
No kidding. But then I guess historically I have been one to run into these seemingly-random or edge-case issues/bugs. I've done lots of testing for other things (both other games as well as my own mods) so I sometimes try to push things past what is reasonable... Unfortunately, I don't think I remember actually trying to do that here. It's still happening even after restarting the game, and I have not yet modified anything as I'm still looking over what I would change and continuing to play it as-is, so I'm at a loss. I think I'll just have to accept it as the game making me play 'extra-hard mode' with an additional line of expense of potions strictly for Karen-the-self-stabbing-guard. I tried to track it but I couldn't find any pattern to it yet.


On that note, as more of my brothel workers finally hit 4 AP (5 out of 6 of them do now) my gross income managed to hit over 100k (and being slapped with the new 40% tax rate as well) but leaving me with slightly more since my upkeep hasn't changed drastically for them. I'm in a strange position now where I have 550k gold, but I'm still "preparing" for the 175k mansion because the new workers are taking forever to train through the school courses. I could probably skip right to the 500k mansion at this point, but I currently don't even have enough total workers hired (let alone trained) to fill 25 slots, much less 45. This will be interesting...
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 09, 2016, 01:05:35 AM
Well, so much for running unmodified; I ended up having to make an edit to fix a bug in order to continue playing.

I moved into the 175k mansion, sold the 75k house, transferred all my staff over and began operations. I'm not sure if that was the catalyst, or if i was simply checking more closely because of the new brothel, but I noticed at this point that the staff were no longer getting the bonus message about guests being crazed from the stripper. Poked at the code and found a bug (or more likely, an oversight) in the function, so I inserted a statement to print out the value of the 'satisfaction' rating it was trying to use.

Turns out the value was 108 (152 at some point) and the code had no 'else' clause to deal with it - the function's logic 'ended' at an 'elif <= 100' check, with no way to deal with values larger than 100. I'm not sure if the intention was to add in another higher tier/multiplier beyond 1.5x, but for now, changing that condition to simply '> 75' has it applying the 1.5x multiplier I'm used to again. Also fixed the mainhall thing while I was there.

I think for now I'll keep plugging along while I look over the code to see how to add my desired changes. I probably got too used to it, but I am kind of missing Civ 5's Firetuner utility which let me run isolated chunks of code live, along with giving me a way to traverse through tables to see what data I had to work with. For one, each girl appears to have a 'fame' value, but I can't be sure if it's as simple as mirroring reputation and adding 'chr.fame, chr.get_max("fame")' in order to reveal this value.

And a final note on Karen the emo guard: I can't figure it out and I've completely given up. I relieved her of guard duty and simply let her rest when I moved into the new mansion and placed Alice Margatroid in her place. Alice has so far not had any issue with stabbing herself, while Karen has...somehow managed to stab herself while she's resting in the gardens..twice.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 09, 2016, 07:51:57 AM
The version presently posted was not build by us but I checked it (long time ago) and it looked like the final, patched Alpha release. We've spent two or three weeks re-balancing and fixing bugs after the initial release until there were none reported. Some people claimed to play for over 1k days till they had all buildings and beaten everything there was possible to beat.

You can post your fixes to Alpha thread, it will be some time till we can release again so it could be useful to others.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 10, 2016, 12:16:27 AM
When you say it was not built by you, do you mean you took over development after the alpha was released by someone else?

I'll probably look at doing that, but right now I'm going through and adding some quality-of-life additions for myself before I do so. In addition to fixing the reversed values for brothel fame and reputation gained via advertising and some of the more commonly-seen typos, I've been going through the code to highlight the important pieces of information I want readily visible from the next-day summary screens with colors.

For example, having to go through 24 pages currently of "guest wanted someone with so-and-so trait but did or didn't find one" it's difficult to do quickly when it's in a huge chunk of other text, especially when more pages are coming. I've gone through the text and created highlighting where the requested trait (or no preference) text is cyan, and then the text that says they found someone is green, while the text that says they didn't is in pink, so as I'm flipping through the pages, I can very rapidly see which traits I need to look for.

I've made similar highlights to other pieces of data I want to quickly look for (whether I overpaid or underpaid girls appear in different colors, etc) but I am wondering if there is any particular restriction or limitation with this system. I ask because I did just run into an issue that caused the game to crash repeatedly. Through testing, I narrowed it down to this one line of code/text that prints when a course a girl is taking ends.

The relevant section of the code is this:
Code: [Select]
            # End courses and remove girls
            for course in self.active_courses:
                if course['Days Left'] <= 0:
                    for girl in girls:
                        if girl.mech_relay['courseid'] == course['id']:
                            txt += "Course that %s is attending is at it's end! "%girl.name
                            girl.mech_relay['courseid'] = None
                            girl.action = None
                            girl._location = hero
                    self.active_courses.remove(course)

With the relevant line being this one inside the second for-loop:
Code: [Select]
txt += "Course that %s is attending is at it's end! "%girl.name
When I tried to add coloring to that line, the game gave me a 'string index out of range' error.

The line in question with edit:
Code: [Select]
txt += "{color=[royalblue]}The course that{/color} {color=[lawngreen]}%s{/color} {color=[royalblue]}is attending has ended!{color}\n "%girl.name
I thought perhaps it was sending too many color changes all at once and perhaps it couldn't handle it, so I simplified it to the following to just make the entire line blue:
Code: [Select]
txt += "{color=[royalblue]}The course that %s is attending has ended!{color}\n "%girl.name
Unfortunately, this also caused the string index out of range error.

After a bunch more testing and trial and error, I have this line:
Code: [Select]
txt += "\nThe {color=[royalblue]}%s{/color} that {color=[lawngreen]}%s{/color} was attending {color=[royalblue]}has ended!{/color}"%(course["action"], girl.name)
This line has a few changes, notably that I added a second string replacement to give me the name of the course, rather than just the generic word 'course.' However... THIS seems to work, even though it has just as many color codes as my first attempt, while the previous one with one color code gave me an error. Unfortunately, I have no idea why this is, and would love for some feedback as to what exactly I ran into, and how to avoid it in the future.

Edit:
I should note that that final line looks a bit ugly because of the random breaks with 'uncolored' text, but it seems like they must be there. If I try to expand the surrounding navy blue coloring sections to cover them, as with the first attempt, I once again get the string index out of range error.

For reference, on the screen that this was to display to when I was testing, 8 girls' courses were ending, so it had to print that line 8 times (with different names, of course.)
Title: Re: Fun game, but I seem to have some issues with it..
Post by: oratorio on October 10, 2016, 10:12:47 AM

The line in question with edit:
Code: [Select]
txt += "{color=[royalblue]}The course that{/color} {color=[lawngreen]}%s{/color} {color=[royalblue]}is attending has ended!{color}\n "%girl.name
Code: [Select]
txt += "{color=[royalblue]}The course that %s is attending has ended!{color}\n "%girl.name


In both of these, you are missing a "/" to end the last color section. (Shouldn't it be "{/color}?)
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 10, 2016, 10:39:35 AM
You know, I could have sworn that I double and triple checked that all the tags were closed properly; I even loaded it up in WinMerge so I could check against the diff versus the original. But, as you say, there it is in my code sections I posted. I guess that's what I get for trying to do this after midnight while I'm sleepy, on top of there being a lot of color tags I added to the various text lines. At the least I'm glad I'm not perhaps running into any sort of 'maximum color codes' limitation, but I still feel quite dumb, haha.

Thanks for the catch!
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 10, 2016, 03:24:56 PM
do you mean you took over development after the alpha was released by someone else?

No. We've released through mega at first. Even after all of the brilliant efforts of our own tester Jaeke at that time, loads of errors and imbalances were reported, we've fixed them by releasing patches through DropBox. After there were no more errors reported, we went on with the development as someone released a torrent with the original code + the latest patch. After a while Mega went down, either as a service or just the account so there was no version to play at all. Someone came up with a new release claiming that it was a version with the final patch, that is also a version that we host at the moment but it wasn't patches by us so there is no sure way of knowing cause all of that was happening like an year after release and we didn't pay that much of attention to it.


- Dev version comes with a complete overhaul and single style of GUI
- New complex module called SimPy to handle Jobs and Businesses.
- Loads more skills for BE
- Complete BE rewrite (we're no longer using Jake's BE design)
- Loads more interaction options
- Simulated Exploration module
- Classes for Characters
- Auto-Buy/Equip for Character
- More story/quests/events
- More locations
- More items
- More ways to earn money
- Loads of new logic and I prolly forgot a few things...

We need to wrap up a few things, finish the new Simulated Exploration module and turn the whole thing into a coherent game design. I recon at least a couple of month of work... I am still hopeful we can get it done asap but that just keeps kicking as in the butt :D Dark for example decided (out of nowhere) to add a simple fishing minigame... we tend to do sh!t like that out of blue which doesn't help progress :D
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 10, 2016, 04:12:22 PM
Ah, thanks for the explanation. That seems a bit of a crazy development cycle, haha. Those new features sound pretty interesting, and yeah I can see how it may take a while longer. I've run into the same situation developing my Civ mods as new ideas keep popping up -- and I'm the sole developer!

On request though: Let us double-click to equip items!

Either way, hopefully that means my updates to the alpha won't be completely useless or lost that quickly. We can probably enjoy them for at least a couple months more.

With that, after some trial and error (I really hat that I don't know/understand how to look up table data in Python as compared to the relative ease I can do so in Lua) I have a working prototype of the next quality of life change I wanted: Updating that stupid PyTFall course list to actually differentiate between the different courses when multiple duplicates appear. I'm still tweaking it, and the code is a bit messy because I don't know how to streamline it much, but here are some screenshots.

Differentiation is a bit basic right now, but I think it should suffice for now. I'll post the code for help streamlining when I test it a bit more for stability and unintended side effects.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: oratorio on October 10, 2016, 05:27:15 PM
No. We've released through mega at first. Even after all of the brilliant efforts of our own tester Jaeke at that time, loads of errors and imbalances were reported, we've fixed them by releasing patches through DropBox. After there were no more errors reported, we went on with the development as someone released a torrent with the original code + the latest patch. After a while Mega went down, either as a service or just the account so there was no version to play at all. Someone came up with a new release claiming that it was a version with the final patch, that is also a version that we host at the moment but it wasn't patches by us so there is no sure way of knowing cause all of that was happening like an year after release and we didn't pay that much of attention to it.


Is the version you are sharing the one I provided? If not, what I have was obtained from your Mega share before it went down. I remember the search for a copy when it went down.


The version I have has a file name:
PyTFall-0.45-Alpha-pre-patched.zip
and date (from the log.txt file in the zip):

Thu Mar 27 15:03:04 2014
Windows-7-6.1.7601-SP1
Ren'Py 6.17.3.327
PyTFall 0.45 Alpha
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 10, 2016, 07:02:23 PM
I don't remember and there is no way to tell from that data :( It's patched with some patches, that is for sure...
Title: Re: Fun game, but I seem to have some issues with it..
Post by: oratorio on October 10, 2016, 10:53:03 PM
I don't remember and there is no way to tell from that data :( It's patched with some patches, that is for sure...


Devlog shows that it was run by someone named Adrian before it was zipped for transport.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 11, 2016, 04:01:19 AM
You have good ideas for balancing the game in the first post. But
At the same time, refinement should reduce the amount of dirt generated - more grace means less spilling...maybe? Or perhaps roll these two together into a single modifier for both fatigue and dirt.
In our case refinement is a knowledge about society and its customs and manners, not physical grace   :)
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 11, 2016, 05:04:47 PM
You have good ideas for balancing the game in the first post. ButIn our case refinement is a knowledge about society and its customs and manners, not physical grace   :)

Thanks for the input; Certainly that's a fair point, and if that is the case and intention of the 'purpose' of the game's refinement stat, then I'll agree that it shouldn't impact dirt generation, though I still feel that agility should help (It's really difficult to raise agility for slaves anyway since they are forbidden from participating in Combat Courses, and have to deal with very low success via Dance courses instead.)

The main reason I've been hesitant about going ahead with implementing any of my suggestions so far (and some of them are really easy, it looks like) is because anything I do would change the game's balance from what I assume was 'intended difficulty' you guys put out in the alpha. Anything I do would theoretically make it easier as guards and strippers level up faster, characters will be able to do a bit more / more effectively, taxes won't be so devastating (though I think if I do change it to hit net income instead of gross, I'll raise the lower level tax rates to still slow early growth a bit,) and so on. Part of my post was somewhat testing to see what anyone would've probably agreed on to be a good change to balance. Honestly, of the character/job-related changes, guards are probably my highest priority, because once you get to 1000 security rating, there is literally no reason at all to even field a guard team, much less have 5 of them in that little guard house.

Thus, I'm currently just doing UI/QoL improvements instead.

On that note, I tweaked my course assignment screen a bit more and fiddled with the colors again. I think I'm pretty happy with it now (wording could probably still change, though.) I decided to change the logic to include 3 'scenarios' instead of 2: Instead of the "days left" counter next to the girls showing the static/absolute end time of that course - which is reflected on the course's 'card' already anyway) I made it provide two different counters.

I find this has given me a very easy way to very quickly and at a glance tell what the status of all the girls I'm training are. Important for me when I have 8 girls working to pay for the course cost, upkeep and wages of 14 other girls taking classes simultaneously. I've attached an updated screenshot showing all three statuses now.

With that out of the way, as I mentioned before, I'd like to ask if anyone could suggest a way to improve the code a bit - it works, but I'm really going in blind here, especially with no experience with Python nor any knowledge of the setup of this game's data structures (lots of guessing what data is available based on looking at similar sections of existing code, as well as the functions that define those structures. It's apparent to me just how much I was used to using my for k,v in pairs(t) do print(k,v) end loop in Lua to find the data available to me. Unfortunately, trying similar tactics here didn't go very well, because most things apparently aren't 'iterateable.' In short, I think there's probably more efficient methods of getting what I need, but the loops so far make logical sense to me.

Beginning with the course list name change to add in a numeric identifier, I altered this line of code:
The original:
Code: [Select]
text(u'{size=-5}%s'%course['action']) xalign 0.5The modified line:
Code: [Select]
text(u'{size=-6}%s %d%02d'%(course['action'], int(course['Teacher Skill'] / 10), int(course['Teacher Knowledge'] / 10))) xalign 0.5
Apparently I can't really set any variables in this file, because I kept getting errors/complaints that it expected only layout code, or something, so I had to call the data repeatedly in-line instead in order to handle the logic. Either way, the number is simply truncating the teacher skill and knowledge values and concatenating them together with the original course name to create a semi-sensible 'numbering system' where higher numbers = roughly better courses. In this case, since the range of values for creating a course are 30-100 skill and 40-300 knowledge, the 'worst' course would be a 304 course, while the 'best' would be a 1030 course. I also had to reduce the text size because it started overflowing with the extra numbers.

Now the big stuff is on the left hand 'summary' pane:
The original code:
Code: [Select]
                    for entry in [girl for girl in hero.girls if girl.location == "-PyTFall Educators-"]:
                        hbox:
                            vbox:
                                xmaximum 180
                                xfill True
                                text (u"{size=-2}%s:"%entry.name)

                            vbox:
                                text (u"{size=-2}%s"%entry.action)

The modified block:
Code: [Select]
                    for girl in hero.girls:
                        if girl.location == "-PyTFall Educators-":
                            for course in schools['-PyTFall Educators-'].active_courses:
                                if course['id'] == girl.mech_relay['courseid']:
                                    hbox:
                                        vbox:
                                            xmaximum 180
                                            xfill True
                                            text (u"{size=-3}%s:"%girl.name)

                                        vbox:
                                            #if girl has been in course longer than class completion length
                                            if int(course['chars'][str(girl)]) >= int(course['Duration'] * 0.7):
                                                text (u"{size=-4}{color=[royalblue]}%s %d%02d{/color} {color=[springgreen]}Completed!{/color} ({color=[firebrick]}%dd left{/color})"%(course['action'], int(course['Teacher Skill'] / 10), int(course['Teacher Knowledge'] / 10), int(course['Days Left'])))
                                            #if not long enough to complete, but enough time remaining to do so
                                            elif int((course['Duration'] * 0.7) - course['chars'][str(girl)]) <= int(course['Days Left']):
                                                text (u"{size=-4}{color=[skyblue]}%s %d%02d{/color} on Day {color=[lawngreen]}%d{/color} / {color=[gold]}%d{/color} ({color=[lightgreen]}%dd left{/color})"%(course['action'], int(course['Teacher Skill'] / 10), int(course['Teacher Knowledge'] / 10), int(course['chars'][str(girl)]), int(course['Duration'] * 0.7), int((course['Duration'] * 0.7) - course['chars'][str(girl)])))
                                            #if not long enough to complete, and not enough time to do so
                                            else
                                                text (u"{size=-4}{color=[darkslateblue]}%s %d%02d{/color} on Day {color=[lightcoral]}%d{/color} / {color=[goldenrod]}%d{/color} ({color=[red]}%dd left{/color})"%(course['action'], int(course['Teacher Skill'] / 10), int(course['Teacher Knowledge'] / 10), int(course['chars'][str(girl)]), int(course['Duration'] * 0.7), int(course['Days Left'])))

What's immediately apparent is that there appeared to be some shorthand occurring in the original code where it seems to be running multiple loops all at once in one line, but I have no idea how that worked, so I separated them into separate discrete loops instead. This would probably be where any optimization could come in, but as before, the bottom half looks like a nightmare because of my inability to define any variables in this file. Any suggestions, or is it basically fine as-is?

EDIT:
Somewhat unrelated, but if I will be training the girls I get from the slave market anyway, does it really matter what their work price and upkeep are? I ask because some are obviously more expensive than others there, but even going by the calculations in the code, I'm not coming up with the same upkeep costs, so I can't be sure that, all else being equal, two slaves bought at different starting costs would eventually come to have the same upkeep/work costs if I train them to make their stats identical to each other.

For example, there is a slave that has a work price of 49 and upkeep of 70, and another with a work price of 24 and upkeep of 75.

According to the code:
Code: [Select]
        def get_upkeep(self):
            if self.status == 'slave':
                if self.occupation == 'Prostitute':
                    bu = 20 * self.rank
                    su = self.charisma/10 + self.refinement*1.5 + self.constitution/5 + self.reputation/2 + self.fame/2 # Stats Upkeep
                    ssu = self.anal/8 + self.normalsex/8 + self.blowjob/8 + self.lesbian/8
                   
                    return int(bu + su + ssu + self.upkeep)

They are both rank 1, so that's a base of 20. The first one has 5 Charisma, 10 Refinement, 40 Constitution, 17 Reputation, 12 Fame, and 21/17/18/21 of the relevant skills.
The second one has 29 Charisma, 0 Refinement, 40 Constitution, 0 Reputation, 0 Fame, and 0/0/0/0 of the relevant skills.

Based on these stats, I would naturally prefer the first one, but I wanted to see if the price disparity still exists when they are trained up. Unfortunately, the base numbers don't match.

The first one would have upkeep of:
20 + 5/10 + 10*1.5 + 40/8 + 17/2 + 12/2 + 21/8 + 17/8 +18/8 + 21/8 = 64.625, or 64 gold, where the game claims she has an upkeep of 70.
The second one would have upkeep of:
20 + 29/10 + 0*1.5 + 40/8 + 0/2 + 0/2 + 0/8 + 0/8 + 0/8 + 0/8 = 27.9, or 27 gold, but the game says she has upkeep of 75! Granted, I don't know what value self.upkeep contains, but I can't be sure if it makes that large a difference, especially between the two girls.

The gist of it all is that I have no idea if I should be hiring these slaves hoping for the upkeep to not be insane later on. In the second slave's case, it would be a nightmare if I trained her up and her upkeep still ends up being triple her work price.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 11, 2016, 09:15:15 PM
Upkeep should be less of a burden for well developed character. Those number might be off because numbers are not floats, in python:

Code: [Select]
>>> 1/2
0
>>> 3/2
1
>>>

integer division is not behaving as you'd expect unless converted to floats first. self.upkeep is usually modified by traits.

You GUI code seems fine, you can use interim variables in screen code through python blocks or oneliners:

Code: [Select]
python:
    knowledge = int(course['Teacher Knowledge'] / 10)

$ days_left = int(course['Days Left']

You can iterate over all containers in python just like in lua, you can write to log/raise exceptions or view data structures through console. Printing to cmd is not very easy to setup.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 12, 2016, 01:13:48 AM
Right, upkeep is less painful once the character gets 3-4 AP and can pay for themselves and charge higher prices, but I was trying to figure out how to tell which slaves were and were not worth it to purchase and train up - for my previous example, I'm not sure if the second 24/75 slave would in the end be equal with the 49/70 slave, or if the 24/75 girl will always have a much higher upkeep than her work price even at higher stats. I feel like I suck at trying to explain what I mean, but I'll try to look into their traits to see which ones modify their costs, assuming they're in the *.rpy files I'm poking through.

I had thought that the results of division would be floats naturally unless explicitly converted to ints, but if they are converted to ints at each step, that would result in more zeroes and such being added, which would make the resulting upkeep value even less than the stated value.

As far as my GUI code goes, thanks for looking it over; I'm glad to know it's fine for a first attempt. Could you elaborate a bit on what you mean by the python bit, or more specifics on the syntax? Are you saying that I can define variables in a python block and then use those variables once I'm 'out' of the block? I don't know if you can use those color codes inside python code itself.

Also, I feel like I stumbled into a bug with the course assignments system, largely because I'm looking at it so closely right now making sure the code I've written is bug-free. Normally, when the course's "Days Left" counter hits 0 or less, a function in the base code prints a message that the course ended, and then removes it from the list, and for the most part, this worked even though I was a bit confused about getting 1 more day of stats out of it on the last day (0 days left.)

However, I just ran into a situation where it ticked down into -1 days left, and I got yet another day of stats out of the course somehow. Thinking it was something with my code, I reverted the game back to fully stock code by restoring copies of the original library files, and the issue persisted: The course went from 0 to -1 days left, but continued to function. My biggest hypothesis is that on the day the code was supposed to remove this course a bunch of my girls 'finished' another course, and the code cycled through the first function to tell me that they all completed a course and got bonus stats (still had days left before that course itself expired,) but then for some reason ended up failing to run the second part of the code to remove the course that should have already expired. I couldn't figure out why that would happen because it doesn't make any sense to me that one function would run and not another. I decided to try and go one more day beyond that (when the course was listed at -1 days left) and it was finally removed on the following day.

I... have no idea what happened or why, nor any idea how to go about fixing that. I do have a save file to reproduce this 'timing' of courses ending, in the unlikely event anyone actually wants to try looking into it, but as far as I can tell, it has nothing to do with my code.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 12, 2016, 12:54:46 PM
We have a preliminary concept for slaves and slave training. The idea is based on Xela's favorite Ancient Rome, where skills were the most important quality of a slave.

 For example, there is a semi hidden striptease skill, important for corresponding job, which goes from 0 to infinity, and one can raise it by 1-2 per day at best. Alpha doesn't have skills, but they already exist in the dev version.
Meanwhile to be considered as a really good stripper character needs skill at least 1000. So you can buy super cheap slave with zero skills and spend 2000 turns to make her a perfect stripper, or you can buy a very expensive slave which will get you high income due to high skills.

The courses code was completely rewritten after the alpha (it was in a truly poor condition back then). I admit I never used courses much though, I prefer using items.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 13, 2016, 04:59:25 PM
Thanks for the insight, Dark. personally, I am very much against 'hidden' modifiers, even if they do make sense, simply because as a player, not knowing the numbers and effects hampers my ability to make effective and efficient decisions, but perhaps that's just me. Part of my modding right now is to expose more information, after all, and I've managed to get each girl's 'fame' value showing now. It irked me for a while because the code is clearly taking it into account for various things, yet this number wasn't visible anywhere, so I couldn't calculate anything. Same thing I'm running into now with any traits that may impact upkeep costs (I still haven't had much success with this particular search.)

Still, it sounds like what you are suggesting is that in the end the two girls in your hypothetical stripper scenario could be the same if you get their skills to align with each other (all else being equal.) My concern here was that there was nothing I could use to tell me if the two girls would eventually become 'equal' or if the second slave girl would always be 'worse' simply because they started that way.

Anyway, I found some examples of declaring variables in-line using the $ syntax in the code, so I'll be studying them to see how I can utilize them, if nothing else, to help clean up my code a bit. However, I still have no idea how to write to the logs, view data through a console (what console?) or if these require some sort of dev/debug mode, how to enable such.

On the point of the course code, I assume you mean you're not surprised there are these 'timing' bugs with it as it was 'a mess.' I'm not totally surprised either, especially since as I'm highlighting information to make them more easily recognizable, I'm also noticing due to it that the whole "customer chooses girl with X trait" stuff is kind of broken, too. Specifically, the customer will appear to check that any girl has a specific trait they desire and still has AP to act, but then if it finds a match, it just goes with a random girl anyway. In effect, because some girl had 'tough' and available AP, customer decided to "do it" with a girl who didn't actually have 'tough,' but actually had 'fragile' instead, which I found amusing. If the customer wanted 'meek' and the only girl with 'meek' already ran out of AP, then it sensibly chose a random girl, but the 'match but random anyway' logic is amusing.

I personally do use courses often though, for two reasons:
At this point, I think I may start trying to add in some of the balance-impacting modifications I suggested in my OP. I'm in a pretty comfortable spot right now, generating 295k gross income with a total weekly net profit of 55k a week without doing any arenas anymore (been going around preparing all the free girls for the next hiring spree to move to the second mansion/palace.) This is with a bunch of girls still being trained in the academy, so there's still some drain and they're not producing any income. I guess I more or less feel like I've 'beaten' the game now as it was intended, as I'm generating enough profit to get everything else I need at a decent pace. The utter uselessness of the guards is also really starting to bug me - I'll probably make it so that even at 1000 security rating, it's not a 100% defense against aggressive customer events.

I did run one more calculation similar to my OP with my current financial situation, and the gist of it is that if I were to exempt both wages and upkeep right now, I'd go from +55k/week to +92k/week, about a 37k/week difference, which doesn't sound all that bad considering the 30k everyone wants to charge for training right now. If I only exempt wages, then it's only an extra 16k/week for a total of 71k/week, and if I only exempt upkeep, it'd be an extra 21k/week for a total of 76k/week.

Before that, though, I have a few more UI-related tweaks I want to do, and one of them is to make it more readily apparent/easily visible when a girl has leveled up.
To do this, I modified the nextday screen to search for the 'level' information, and if the girl leveled up, to put it in the first line.

However.. I don't know why this line gives me an error: (Some sort of key error?)
Code: [Select]
if event.girlmod["level"] > 0:But, somehow, this works fine:
Code: [Select]
for key in event.girlmod:
    if event.girlmod[key] > 0 and key == "level":
Why does it seem to necessitate looping through all the keys instead of just letting me query the value directly?
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 13, 2016, 07:18:30 PM
Do we log levels to girlmod???

If we do, safer code would be:

Code: [Select]
if event.girlmod.get("level", 0):
    # do something

But if we do not, even if it doesn't throw errors, it will not ever return anything meaningful.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 13, 2016, 07:34:33 PM
I'm under the assumption that it does, but I obviously have no way to say so definitively because there are still immense parts of the code I don't yet understand.

But, during the screen where it displays a summary of each girl's specific stats gained and lost, it will show "Level : 1" in the event that she has leveled up (in which case you'd also often see a 'green' number listed for Fatigue, as she would have fully restored her stamina on the level up.)

The stock code for that summarization is this:
Code: [Select]
for key in event.girlmod:
    if event.girlmod[key] != 0:
        hbox:
            hbox:
                xmaximum 150
                xfill True
                text (u"{size=-3}%s:"%key.capitalize())
            hbox:
                if event.girlmod[key] > 0:
                    if key == "fatigue":
                        text (u"{size=-3}{color=[red]}%d"%event.girlmod[key])
                    else:   
                        text (u"{size=-3}{color=[lawngreen]}%d"%event.girlmod[key])
                else:
                    if key == "fatigue":
                        text (u"{size=-3}{color=[lawngreen]}%d"%event.girlmod[key])
                    else:   
                        text (u"{size=-3}{color=[red]}%d"%event.girlmod[key])

Nothing there singles out the "Level" line, so I assumed that it was listed along with all the other stats in event.girlmod (rather, "level" must be one of the 'keys' it printed with capitalization.) This also explains why the level gained line was never on its own, but mixed in somewhere in the middle of the list, which is why I am trying to pick it out and put it on the first line to begin with.

My edit is simply:
Code: [Select]
for key in event.girlmod:
    if event.girlmod[key] > 0 and key == "level":
        hbox:
            text (u"{size=-1}{color=[springgreen]}Level Up!{/color}")
for key in event.girlmod:
    if event.girlmod[key] != 0 and key != "level":
        hbox:
            hbox:
                xmaximum 150
                xfill True
                text (u"{size=-3}%s:"%key.capitalize())
            hbox:
                if event.girlmod[key] > 0:
                    if key == "fatigue":
                        text (u"{size=-3}{color=[red]}%d"%event.girlmod[key])
                    else:   
                        text (u"{size=-3}{color=[lawngreen]}%d"%event.girlmod[key])
                else:
                    if key == "fatigue":
                        text (u"{size=-3}{color=[lawngreen]}%d"%event.girlmod[key])
                    else:   
                        text (u"{size=-3}{color=[red]}%d"%event.girlmod[key])

Could you explain what makes that bit of code you posted 'safer' and whether I should try to apply that change to the original loop? As well, I'm trying to check if it is greater than zero, but I don't understand if event.girlmod.get("level", 0) would return a zero value, or the value it actually holds. Finally, what is the error/issue with trying to address it the way I did the first time (and ran into errors as a result?)
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 13, 2016, 10:03:07 PM
Could you explain what makes that bit of code you posted 'safer' and whether I should try to apply that change to the original loop? As well, I'm trying to check if it is greater than zero, but I don't understand if event.girlmod.get("level", 0) would return a zero value, or the value it actually holds. Finally, what is the error/issue with trying to address it the way I did the first time (and ran into errors as a result?)

Since you do not know for sure that level is in the dict, it's not safe address it directly, dict.get() checks if there is a key and returns a 0 if there isn't without raising exceptions.

Modern code would be something like:

Code: [Select]
vbox:
    if event.girlmod.get("level", 0): # Places level first and does nothing if level was unchanged.
        fixed:
            xsize 150
            text "Level:" xalign .0 size 17
            text event.girlmod["level"] xalign 1.0 size 17
           
    for key, value in event.girlmod.iteritems(): # Places everything else:
        if key != "level" and value:
            if key == "fatigue":
                $ color = red if value > 0 else lawngreen
            else:
                $ color = lawngreen if value > 0 else red
            $ key = key.capitalize()
            fixed:
                xsize 150
                text "[key]" xalign .0 size 17
                text "[value]" xalign 1.0 size 17 color color

which would have placed level first without colors and everything else after with proper colors. I cannot check if this works though :( I don't even remember if xsize was a thing back then or you still had to set xmaximum and minimum to that amount...
Title: Re: Fun game, but I seem to have some issues with it..
Post by: oratorio on October 13, 2016, 10:11:18 PM
Using your first method (if statement), if girlmod only has entries for those things that have changed, the check would return an error for any girl that didn't change level because the key doesn't exist while the loop would just never find the key. If girlmod is populated with all of the possible changes, they should both work as far as I can see, but then I'm only a very out of practice programmer and I only know this code slightly.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 14, 2016, 12:43:23 PM
Thanks for the insight, Dark. personally, I am very much against 'hidden' modifiers, even if they do make sense, simply because as a player, not knowing the numbers and effects hampers my ability to make effective and efficient decisions, but perhaps that's just me.
They will be semi hidden. Like, we won't show raw numbers, but will show for example progress bars of some kind without numbers to give a general idea what the character knows already.
Skills consist of theoretical and practical parts and also have various modifiers, so showing raw numbers in gui will only lead to information overload.

Quote
Same thing I'm running into now with any traits that may impact upkeep costs (I still haven't had much success with this particular search.)
Well, traits files are in game/content/db if you want to check upkeep values. I don't really remember how many traits files we had in alpha, there could be only one.

Do you think it should be visible? I mean, traits upkeep changes are flat and small, if some trait gives +50 you wouldn't even notice it when you make 50K per week.

Still, it sounds like what you are suggesting is that in the end the two girls in your hypothetical stripper scenario could be the same if you get their skills to align with each other (all else being equal.) My concern here was that there was nothing I could use to tell me if the two girls would eventually become 'equal' or if the second slave girl would always be 'worse' simply because they started that way.
In the dev version small characters have permanent evasion bonus, while athletic ones have bonus to max health and vitality. Which one is the best? That depends on what you think is the best. Any trait is useful in some cases and not so useful in others.

And all skills (not stats, like charisma, but skills, like stripping) could be mastered by anyone, given enough time. Although some traits speed up the learning process for some skills, but not much.

Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 20, 2016, 02:21:00 AM
Apologies for the delayed response; It's been a very busy weekend here. Haven't had time to do anything until now.

To respond to everyone who has posted:

@Xela and @oratorio,
Thanks for the explanations, I understand what the issue is now. My error stems from the fact that I became way too comfortable with how Lua handles these events - specifically, in this situation, if I try to address a value that doesn't exist, Lua simply returns its value as nil. Normally I do check that a value exists in Lua (very simply with if x and x > 3 then ...) before doing anything with it, but in the event that I forget, Lua's error message would helpfully state "attempt to compare number with nil" to let me know the reason, but Python's key error message was a bit more cryptic for me. I also had no idea if similar syntax would work in Python, but that's probably something I should look up.

As to your updated code snippet, I'll try to decipher it and put it in if it works more efficiently, but I think as long as my edited code works fine I'll probably leave it alone - it's not worth the effort right now to try and overhaul old code when I'm only interested in adding a couple QoL features for myself. The syntax would also be quite different from the rest of the alpha's code.

@Dark
Progress bars will probably be okay, as long as the information is visible somewhere - I'd argue for numbers instead or in addition, though, if it was a stat that you needed to monitor closely. I guess I'm just more of a numbers person, haha. I would say that providing numbers and modifiers for skills would not necessarily result in information overload if done well. I have an example to provide which I'll go over momentarily.

Thanks for the tip on the traits file - I was looking through the *.rpy files, so I overlooked the db files. I pulled it up and the trait upkeep (along with the int() rounding) accounts for all the differences I saw, so I can properly calculate income vs upkeep now. It also supports my suspicion that the 'Cute' trait is broken -- it's not even listed in the traits file, so the Bunny Slippers item never had any effect trying to grant the 'Cute' trait.

As for whether or not they should be visible, I'm biased, but I still argue for including it -- perhaps you can have an option to toggle on 'verbose' information to include numbers, but it wasn't until I looked into the traits file before I understood what the difference between, for example, "Tough" and "Athletic" was, which could influence which girls I wanted to hire, and confirmed my suspicion that "Fragile" indeed reduced a girl's maximum Fatigue value; Sure, I saw this in-game because it's a very visible stat, but I could only guess at something that made sense. However, then you have 'Hyperactive' which also reduces maximum Fatigue for some reason, but I wouldn't have guessed that.

Lack of information regarding girls' 'effects' is also something I take issue with - Sakuya has "Composure," but unlike hovering over her traits, hovering over the 'Composure' effect tells me exactly nothing, because there is no on-hover tooltip like with the traits (even then, it's just a vague description..) I had to resort to searching through the code to find out that it keeps the girl's 'Joy' within a set range, or rather that it grants or deducts 1 Joy each day until it reaches 60. If this effect would be too cumbersome to explain in such detail, it could be more simply stated as "This girl's mood is relatively stable, resisting being overjoyed or depressed." or something similar to that extent.

As for the dev version's various bonuses, I do hope they are detailed somewhere. Sure, smaller characters having bonus evasion could theoretically make some sense, but I don't know how much "sense" people put into that, versus a character with high "agility" that people naturally equate with higher evasion. The other problem is that I'm not sure the same level of 'attention to detail' would be placed on other facets of the game, thus causing inconsistency - having players realize mechanics and bonuses/penalties through context requires consistency.

As for skill mastery, that's fine, I was mainly trying to see if there would be a case where slave X has absolutely no chance to ever match slave Y simply because they started off differently.

---------------------------

Phew, okay, moving on.

As I mentioned, I didn't have much time to do anything this weekend due to being busy, but I finally had some time today to play again, and so I decided to whip up another edit/addition to another area I had immense frustration with - the "Girl List" screen. I assume it was meant to be an overview screen, but it told me very little about how my girls were actually doing, to the point where I had to manually go in and open up the profile screens of each and every single girl every turn anyway.

The stock screen provided information on the class, status, location, action and AP of each girl, but there was more information I needed to check each girl daily for. The most important was their Fatigue level - I need to know who is on the verge of tiring out so I can adjust the girls' orders accordingly. Other data I would glance over was their experience gain, to see if I could judge whether or not they could get away with continuing to run their job without rest until their next level-up. As well, for the Prostitutes, since I trained 20 of them simultaneously, I had a hard time remembering who managed to hit what rank, and ended up having to cycle through all their profile pages repeatedly. All of this meant that the overview screen was basically useless to me because I was forced to go in the profile screen anyway.

However, with my edit, I ended up exposing a lot of information - Much more than was available by default. While I could technically pare it down by removing some pieces of information (things like HP and MP don't change for 98% of my girls) I decided to go with another method, and what I was referring to Dark above: Utilizing colors, as I have done for other information-dense screens so far.

To start off with, I increased the size of the name bars/buttons to make them more visible and apparent that each is a new block. Within each, the bulk of information is more or less the same color -- HP, MP, Joy, Disposition, and Location should be green, as that signifies everything is normal. In this way, I can glance at the middle of every block and see if any girl is having issues.

At the same time, I decided to "color code" the four main jobs, and give their appropriate jobs the same color. This lets me tell at a glance who is doing what very quickly, and also shows me if I've (accidentally or intentionally) given a job to a girl who isn't equipped for it - In the first screenshot, Retsu will complain if I ended the turn because she's doing a green task when she's a pink class. For Prostitutes, I also added their rank next to their class so I can simply scroll through the list to see who needs catching up.

When a girl is sent to a class, both the location and the course appear in blue, letting me know they're busy doing something else (and if I want more detailed information about the course, I go into the course list screen that I edited some time last week.)

Negative statuses appear in bright red, which is very visible against the more muted colors everything else uses, so there's no way I can miss Kasinda having nothing to do and nowhere to go. Nami in the second screenshot also has nothing to do, but she at least has her own place to stay in, being a free girl, so it's not quite as high a priority as sorting out Kasinda's situation, so her location is only pink.

I've also color coded the AP numbers, mainly so I know who has 4+ AP and who still needs more constitution training. AP of 1 or 0 are red.

Resting I have two colors for, mainly because I consider "AutoRest" a slightly negative detail, as that means you've pushed the girl too hard

Finally, the biggest thing I need to check every turn, the Fatigue value. If a girl has exceeded 75% of her maximum Fatigue level, it turns red, but otherwise, I can very easily scroll through and see if anyone is over 200~250 without having to go in and wade through all 50 girls' profile pages every turn. Experience is included because why not; As I said, I do check it anyway to gauge if they can get away with not resting.

Honestly, the most useful application is for checking my service girls, as shown in the third screenshot -- I have to set them to work in shifts, because of how much fatigue they gain serving a stripper's clients, and this makes it very easy for me to tell who is ready for the next shift.

I'm quite happy with the information I've exposed, and although there's a lot for you to dig into, on a turn-by-turn basis, I really only check for the color of Fatigue and whether their class and job colors match. Additionally, I went in and edited the profile pages again to use similar job/location/class colors for consistency. I couldn't use the same colors, though, since the background is such a shade of yellow that most of the lighter colors are impossible to see on it. That said, I now generally only need to go into the profile screen if I want to interact with the girl somehow (change action, send to training, etc.) or check their detailed stats and equipment.

I also added a new element to the top of the screen, since there's some extra vertical room anyway from the screen being limited to 4 rows of girls per page. I added a message that tells me how many girls are matched on the current filter settings - it's a small detail that I personally like to have.

As an aside, it's pretty damn sad that my third girl, Karen-the-self-stabbing-guard is still only level 13 after guarding for 2 years, while Nancy, the Prostitute I didn't hire until the 4th house and then spent forever training through various courses, is already level 169. She can, based on stats, literally take on and destroy my entire 5-person guard team right now on her own.

In doing all this, I've been playing around with the '$' syntax to use variables in these 'screen' pages, which has worked out very well - thanks for pointing me toward that, Xela!
I still am wondering how to print stuff to logs that was suggested, though. Is it as simple as inserting
Code: [Select]
devlog.info("number of clients is %d"%int(len(self.clients)))somewhere within the code where self.clients is defined?

Edit:
One other annoying bug is that I accidentally equipped Alice with two Rods (Archmage Staff and Wand of Concentration) and now I can't remove them because both used RodAttack, but removing one automatically removes RodAttack because the code doesn't check for duplicates or anything else that still uses RodAttack. This, if I remove one Rod, the other one cannot be removed because there's no "RodAttack" left to remove. Unfortunately, I'm too lazy to go fix that piece of logic since it involves a lot more lookup of other functions I'm not familiar with yet.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 20, 2016, 10:38:33 AM
It also supports my suspicion that the 'Cute' trait is broken -- it's not even listed in the traits file, so the Bunny Slippers item never had any effect trying to grant the 'Cute' trait.
Yeap, it's a legacy trait from WM which we removed after a small discussion, but its traces still remained in alpha. The problem with such vague traits is their high subjectivity, an item could be cute or not cute for different people. Same for characters, some people find a specific character cute while others don't.

However, then you have 'Hyperactive' which also reduces maximum Fatigue for some reason, but I wouldn't have guessed that.
I believe the idea was that Hyperactive ones waste part of their energy on unnecessary movements  :)
However, traits can be freely and easily edited by player, that's why they all are in a separate file with rather simple syntax.

Sure, smaller characters having bonus evasion could theoretically make some sense, but I don't know how much "sense" people put into that, versus a character with high "agility" that people naturally equate with higher evasion.
Agility grants evasion too. It just means that with the same agility level a small character will have more chances to evade due to small hitbox.

Lack of information regarding girls' 'effects' is also something I take issue with - Sakuya has "Composure," but unlike hovering over her traits, hovering over the 'Composure' effect tells me exactly nothing
Xela likes when games have a few hidden mechanics without clear descriptions which could be understood only by playing the game.

The other problem is that I'm not sure the same level of 'attention to detail' would be placed on other facets of the game, thus causing inconsistency
I'd like to think that we'll have more than enough attention to details eventually  :D

One other annoying bug is that I accidentally equipped Alice with two Rods (Archmage Staff and Wand of Concentration) and now I can't remove them because both used RodAttack, but removing one automatically removes RodAttack because the code doesn't check for duplicates or anything else that still uses RodAttack.
Nice catch. Although, we decided to simplify the system and equip all weapons which give new attack skills to the right hand slot, because it quickly became messy once we added a few dozens battle skills for weapons.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 20, 2016, 11:54:26 AM
Well, removing such a subjective trait is something I can understand - you're completely right in that different people find different things cute. I was going to try and re-add it just so the item would do something, but then I couldn't figure out what stats to alter because of exactly that. It seemed a bit silly to adjust Charisma for it when everything else based around 'sexy' already alters it, and that the only way to get it right now via those slippers are slippers that provide a penalty to charisma and refinement, so I couldn't quite figure out which stat would be related to 'cute' here, or what the thinking was. There's also the cat-girl trait that I don't think any character in the game has, or is able to get, which kind of annoys me when customers repeatedly try to look for girls with it. Famous I think is in the same boat, although I don't know if the trait is granted when I rank girls up high enough.

On a whim, I decided to try and add Hatsune Miku into the game, since Cherrywood had a Vocaloid pack, but it was missing a data file. After much mucking around, it seems the data file is easy enough to make and add the girl into the game (gave her the Famous trait as I wanted to test it) but it seems the biggest issue is that the images are tagged for the beta and not the alpha. I randomly picked a few images and created a very basic alpha-style tags file (with like only 4 images) and that worked enough for me to recruit her. Unfortunately, I'm too lazy to try and decipher all the tags to get them into an alpha-compatible format for the entire folder. I suppose since the tags follow a specific structure one could write a small app to decipher it according to the naming rules you set and generate a tags file appropriately, but that's more effort than I want to spend right now, so I'll scrap the idea and just wait for the beta.

Moving on, 'Hyperactive' could mean that you 'waste' energy, but it could also mean that you can generate that energy much quicker than other girls in order to maintain such hyperactivity - this is why I was confused. There's no particular 'set' logic for it, and there was no explanation.

This ties into the whole 'somewhat hidden' mechanics thing, and my comment about 'attention to detail.' In the above case, why not have that trait grant a bonus to fatigue reduction as well? And if smaller characters are more evasive, will they also have less HP for being physically less able to withstand attacks? If stunning is in the game, will they be more susceptible to stuns or knock-downs? Will Constitution and Intelligence provide extra HP and MP? Now, I understand there is a line you guys have to draw here with respect to what you include because it would get unwieldy and massively complicated, and if the answer to all of these is 'yes,' then I can come up with some more to find something you guys haven't considered, but the idea is that having one related mechanic hidden but not including another would be confusing. "If my small girl is more agile and can evade more easily, why can't she attack faster?"

Providing information about this mechanic, even via one short sentence somewhere, turns it from a hidden mechanic you have to figure out contextually into one that's explicit and clearly establishes an expectation for the player - "This girl's small frame makes her more able to evade." That's it, that's their expectation, they can't have any related to attack speed or whatever else because it's not listed. They could ask for such inclusion, but they would know that it won't be something they have to keep wondering about.

To your comment about Xela liking hidden mechanics which can only be understood by playing the game -- my argument is if this is still warranted if you can't figure it out by playing the game. Again, for Sakuya's 'Composure' effect, there was literally no way for me to tell what it did. Sure, I noticed her Joy was not rising to 100 for some reason, but it still held in the high 90's. Composure itself means being calm and in control, so does that mean she won't be 'panicked' in battle? Is causing panic even in the game? Maybe it means she doesn't get riled up against aggressive customers and can calm them down? I don't know, baseless guessing just frustrates me here.

For one hidden mechanic that did work well in my opinion, it was when some girls randomly were extremely hard to charm into high disposition / hiring range. Some actually seemed to need me to lower my charisma as much as I could in order to increase the disposition I got for talking to them. After some comparison of these girls, I managed to figure out it was probably a trait (and looking at the code confirmed this) - girls with the Nerd trait were difficult to woo, while ones with Impersonal were even more difficult and required dropping my charisma (not sure why, though.) At least here it makes sense that some girls are simply more resistant to your charms.

Either way, I am hoping you understand what I mean about adding more information from my girl list edits: utilizing color and text size can help specific information stand out and allow players to 'scan over' them without getting too lost in everything else, but everything else is there if they wish to take the time to read through it.

Finally, I forgot to mention this in my last post, but then that post was getting quite long already, but I did have another idea related to these traits. I'm not sure if I'll have the time to actually put in the alpha since beta sounds like it's coming pretty soon, and if it's already in the beta, then there's even less reason for it.

Basically, I'm slightly annoyed by the vast majority of random girls I'm going after only having 3 or 4 traits, and they're the very common ones. This makes them very similar to other girls and customers still demand the more uncommon traits anyway. Unfortunately, there's very few options for adjusting those traits. I had an idea that sending these girls to take classes would have a chance to add or improve a trait they have.

For example, sending a girl to an Etiquette Course would, at the conclusion of the course (when they normally get the stat bonus, not just when the course ends, to avoid players sending girls in for one day at the last day of the course) would have a chance to gain the "Elegant" trait. The chance would be 20% of their refinement stat at that time (so you would need like 500 refinement to guarantee getting Elegant, which I would say is warranted if you're already at 500 refinement and don't have it.) Refinement could also be the chance to provide 'Well-mannered,' although it would only be a chance for one of those traits at a time. If they already have Elegant, then we'll say 'Noble' is the 'second tier' trait, and the chance to grant this would be half what it would be for the 'first tier' - 10% of the girl's refinement. At the same time, 20% of her intelligence would be her chance of gaining 'Smart,' 10% for 'Nerd,' and 5% for 'Genius,' etc. Again, only one trait can be gained per course at maximum, so if Refinement already granted a trait, this would be skipped. On average though, you'd be looking at a 20-30% total chance to gain a trait after each course, unless you're sending girls to courses at beyond 300 of their respective stat.

Likewise, XXX Courses would have a chance of granting 'Nymphomanic,' 'Sensitive,' etc. Combat courses would take 20% of her attack to grant 'Aggressive' or 'Combat Training,' 20% of defense to grant 'Tough' or 'Athletic,' 20% of constitution to grant 'Manly' or 'Tough,' etc. And they don't have to be exclusive either, so Dance courses could also grant 'Athletic' or 'Sexy Air,' and so on. This way, taking courses provides additional tangible benefits, and also allows you to somewhat 'customize' the girls you hire. This would also still leave some of the more unique traits unique still (like...catgirl. Can't really train for this one.) However, it would make the majority of the 3-trait girls moderately more useful. Currently I'm just turning any 3 or 4-trait girl I get into service girls since service girls don't rely on any traits.

Of course, if implemented, each course should helpfully state which traits they have a chance of adding. The details about it can be left out, but it should be clear that sending a girl to a Beauty Course might grant 'Charismatic' and/or 'Egocentric.'
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 20, 2016, 12:54:46 PM
In the above case, why not have that trait grant a bonus to fatigue reduction as well? And if smaller characters are more evasive, will they also have less HP for being physically less able to withstand attacks? If stunning is in the game, will they be more susceptible to stuns or knock-downs?
Everything is possible. No stunning in the game atm, but body traits already give different amount of health in the dev version. It's not hard at all to change stats, just one quick line for every trait in the trait file.

Will Constitution and Intelligence provide extra HP and MP?
No, there are already means to increase hp and mp permanently via items and leveling. If they also could be increased by increasing other stats, it will be too difficult to balance.

then I can come up with some more to find something you guys haven't considered
By all means. It's been a while since someone helped us with creating traits.

"If my small girl is more agile and can evade more easily, why can't she attack faster?"
She can, it's just not guaranteed. Attack speed is based on agility. While hitbox is something unchangeable, size itself cannot guarantee that she is faster than some trained ninja.

To your comment about Xela liking hidden mechanics which can only be understood by playing the game -- my argument is if this is still warranted if you can't figure it out by playing the game
Xela wants to create a wiki closer to the release. However, the more we document stuff, the less we create.

Either way, I am hoping you understand what I mean about adding more information from my girl list edits: utilizing color and text size can help specific information stand out and allow players to 'scan over' them without getting too lost in everything else, but everything else is there if they wish to take the time to read through it.
Yeap, this is an interesting approach.

Basically, I'm slightly annoyed by the vast majority of random girls I'm going after only having 3 or 4 traits, and they're the very common ones. This makes them very similar to other girls and customers still demand the more uncommon traits anyway. Unfortunately, there's very few options for adjusting those traits. I had an idea that sending these girls to take classes would have a chance to add or improve a trait they have.
Yeah, we didn't have time to make all traits obtainable for alpha. You can adjust their data files if you want, every trait there has a chance to be added when the random character is created.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 20, 2016, 02:54:23 PM
Everything is possible. No stunning in the game atm, but body traits already give different amount of health in the dev version. It's not hard at all to change stats, just one quick line for every trait in the trait file.

Fair enough, for a game still in development, changes and additions are always in the works, but my meaning was less about 'modding' the traits to fit these ideas, and more about creating a standard that stays consistent across the entire player base, of which player expectation plays a huge part. Also, for the Hyperactive example in particular, would it be possible to add in an effect for it to restore energy / reduce fatigue more rapidly simply by adding a line to the trait itself? I was under the impression that such a change would require writing in some new ren'py code to handle the logic.

No, there are already means to increase hp and mp permanently via items and leveling. If they also could be increased by increasing other stats, it will be too difficult to balance.

Balance is, of course, a large consideration of such mechanics, and my suggestion was more a suggestion of commonly-understood mechanics in other RPG-type games that players would naturally understand. Having said that, you may understand my reasoning here when some aspects are integrated into the game, but others aren't -- normally not an issue, but becomes frustrating if which aspects that are and are not included aren't communicated to the player.

By all means. It's been a while since someone helped us with creating traits.

I'll probably need to wait until post-release to be able to make any suggestions, since I have no idea what is available and what is 'missing' currently in the development version. That said, I'll attempt to help out where I can, particularly when it comes to making the existing traits more sensible.

She can, it's just not guaranteed. Attack speed is based on agility. While hitbox is something unchangeable, size itself cannot guarantee that she is faster than some trained ninja.

Of course, a 'trained ninja' should definitely have very powerful bonuses related to agility and speed in general, but when you generally think of 'small,' you do equate it with a measure of speed which not only impacts evasion, but speedier movements that translate to faster attack speed than a 'lumbering giant.' Now, I'm glad to hear that the 'faster attack speed' option is planned, but it being not a very high chance is very disconcerting to me. I'll accept that just because a girl is small doesn't necessarily equate to being faster, just a higher chance (such as if she had the Dawdler trait, she probably wouldn't make much use of her higher potential agility.) However, if the girls that do end up with a higher attack speed, since this would not be the norm, end up not having any particular notification that they have this ability, this would cause a large amount of frustration to me -- if I am looking for agile warriors, how am I supposed to single out and find these particular girls without simply hiring everyone?

Xela wants to create a wiki closer to the release. However, the more we document stuff, the less we create.

I understand that; it's tough when you don't have many people working on it. I put a lot of effort into documentation and revealing information in a digestible manner for the mods that I made as well, and often that part consumes more time than I spent creating the systems in the first place. However, I would argue that player satisfaction and understanding would go a long way into making players more appreciative of these systems. Still, I would say a wiki would be low priority, and you could probably rely on players to help fill that in.

Yeah, we didn't have time to make all traits obtainable for alpha. You can adjust their data files if you want, every trait there has a chance to be added when the random character is created.

I probably will soon-ish. I kind of want greater variety in the traits these girls bring, but I've had a notepad open for a little bit documenting the traits I've 'discovered' in all the girls available in my game via talking to them right now and looking through the list, at least 8 of them have the same 'adventurer, clumsy, dawdler' traits and nothing else.

At this point I also have over a million gold, which is more than enough to move to the final Central Palace, and my only goal is finding 50 more girls to train to fill it with, so I'm okay with altering game balance now. I also find it pretty silly how a large palace still can't handle the amount of dirt generated by one stripper pulling in 130 customers, but can deal with 35 prostitutes going to town on all of them just fine. I'm more or less done and happy with the UI edits I've made as well, with much more information I can get at a glance now, so I'll turn my attention to beginning the various overhauls I mentioned in my OP. Priority 1 is probably getting my poor level 13 guard up to pace with the others, haha. Main thing right now is my inability to grasp what kinds of data I have available and when, so I was waiting for some confirmation on how to write into the devlog.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 20, 2016, 04:16:06 PM
Fair enough, for a game still in development, changes and additions are always in the works, but my meaning was less about 'modding' the traits to fit these ideas, and more about creating a standard that stays consistent across the entire player base, of which player expectation plays a huge part.
Absolutely standard traits do not feel unique. If, let's say, difference between body types is nothing but level of base constitution, then it's just boring.
Ideally every trait should be somehow unique, even if only a little. Otherwise they are not worth looking for, stats can be upgraded without gaining traits.

Also, for the Hyperactive example in particular, would it be possible to add in an effect for it to restore energy / reduce fatigue more rapidly simply by adding a line to the trait itself? I was under the impression that such a change would require writing in some new ren'py code to handle the logic.
That is what effects system for. Although, I'm not a big fan of self-restoring traits because they possibly can make many items useless.

Having said that, you may understand my reasoning here when some aspects are integrated into the game, but others aren't -- normally not an issue, but becomes frustrating if which aspects that are and are not included aren't communicated to the player.
Usually in jrpgs you have close to zero information about stats. While it might be an issue for some players, this genre is very popular nevertheless.

Of course, a 'trained ninja' should definitely have very powerful bonuses related to agility and speed in general, but when you generally think of 'small,' you do equate it with a measure of speed which not only impacts evasion, but speedier movements that translate to faster attack speed than a 'lumbering giant.' Now, I'm glad to hear that the 'faster attack speed' option is planned, but it being not a very high chance is very disconcerting to me.
You misunderstood. Of course there are games where lvl 1 fast character is always faster than lvl 100 slow character.
In our case, however, even slow character can be faster if the difference is 100 levels. But if the difference is small, then yeah, small character will have more agility because she does have bonuses to agility. Agility decided the speed, not pure traits, because unlike the main game battle engine only operates with raw numbers.

Main thing right now is my inability to grasp what kinds of data I have available and when, so I was waiting for some confirmation on how to write into the devlog.
Xela can help with that  :)
You better ask in the general discussion thread to make sure he notice the question.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 20, 2016, 05:52:34 PM
Absolutely standard traits do not feel unique. If, let's say, difference between body types is nothing but level of base constitution, then it's just boring.
Ideally every trait should be somehow unique, even if only a little. Otherwise they are not worth looking for, stats can be upgraded without gaining traits.

I think there was a misunderstanding here, too. My intention was not to suggest creating 'boring' traits -- I'll agree if the only difference was something like Constitution, it would be kind of useless. My point was more that the traits themselves, however they are made fun or unique, should be designed in such a way that modifying it afterward is unnecessary, thus ensuring that more players experience the 'same' intended behavior. Making a trait unique should not be exclude it from following a logical standard, and deviations should be documented.

In the case of body types, we can establish that going from small to medium to large body types will, at the very least, impact agility and constitution, with the medium type being the middleground for both. Whether this 'baseline' set of expected stat impacts is documented (meaning shown to the player via descriptions or somehow) is up for debate, because although it would be technically hidden, it's standard across the three body types. However, if then the small body type girl additionally has, let's say, a bonus to Luck (completely arbitrary and random example here, not saying it makes any sense) while the larger body type girl has a bonus to Defense, and the medium body type girl has a bonus to Attack, these differences should probably be documented and explained because there's no way of extrapolating these effects as compared to the agility vs constitution situation. If you then additionally have a small body type variant that also increases attack speed on top, it'll be nearly impossible to figure out who has what ahead of time.

One thing you can do here is simply separate out these 'occasional' trait variants into separate-but-related traits, or some sort of trait hierarchy. In this case, the small body type would be the base for a girl, and that body type allows the possibility for the bonus evasion or the bonus attack speed traits to be added (which require the smaller body type trait as its parent.) Once the 'base' traits are taken care of, then you can move on to a pool of 'personality' traits, and then later on, to a large pool of 'miscellaneous' traits that would make each girl more unique.

Ultimately, I still feel very strongly about making information accessible, but I believe I've proven that if I have to I'll just expose the data myself, haha.

That is what effects system for. Although, I'm not a big fan of self-restoring traits because they possibly can make many items useless.

As far as I can tell, this 'effects system' still requires you to write in ren'py code, doesn't it? Unless you're talking about a newly revamped dev version that allows you to just 'hook into' a number of 'unused' effects by linking it from the traits file. This would also go into the whole modification thing.

Regarding self-restoring traits, they can be valuable, but if done well, they won't necessarily make items useless. In the example of the Hyperactive trait restoring stamina, it would be either a few points, or a percentage bonus every turn, but if you really needed a quick recovery, you would still use the potion to restore a large amount immediately. Additionally, you could also increase the upkeep cost incurred (the girl needs to eat more to maintain the hyperactivity?) so that you're technically paying continuously for the cost as compared to a one-time cost of a potion. At the same time, perhaps we can also say that, since it reduces maximum fatigue anyway, that although she can recover stamina more quickly, she generates fatigue slightly faster than normal as well, and will hit her limit more quickly.

Alternatively, you could also create a potion that temporarily raises a girl's maximum fatigue or whatnot past the usual limit for a number of days, or have the potion reduce the amount of fatigue that a girl will generate over a few days (say, a girl will only generate 80% of the fatigue she normally does.)

Coupled with your assertion of 'unique traits' from above, I would say having these kinds of effects would add to the uniqueness of many traits, especially as you can make more traits have effects, and have these traits lock you out from others -- in this case, Hyperactive I believe locks you out of having Dawdler. Dawdler currently just increases your fatigue by a small amount while reducing agility, strip and service, but let's say instead they generated fatigue at a slower rate all the time, although it would also take them longer to recover once they're tired out. Now you have two traits that compete with each other to provide a bonus to the same 'stat' in different ways, and both have merits.

Currently, there's no real reason to have Dawdler besides the customer trait matching bonus because it provides no other benefits, and actually comes with a bunch of penalties instead. Sure, it raises maximum fatigue by 10, but virtually every girl, except the ones that have Fragile, already start with the maximum of 300 fatigue, which as far as I can tell is hard-coded and cannot be increased, so even that one bonus is effectively wasted.

Usually in jrpgs you have close to zero information about stats. While it might be an issue for some players, this genre is very popular nevertheless.

You are right, in some of the more particularly in-depth RPG's I've played, there are usually some mechanics that aren't explained well, but while I still enjoy them, it just means I have to go look up guides and wikis that explain these things all that much more. As well, most of these mechanics are generally pretty consistent once you figure out the first 'step' to them.

One of the last 'complex' RPG's I played was 'The Last Remnant.' I remember being quite confused by that game for a while, too, but one example is your skills could apparently 'swing' two different ways: They could either become 'Nimble' or 'Mighty' as you leveled them up. However, this distinction was at least labeled in the game so even if I couldn't figure it out (though, honestly, nimble and mighty are pretty easy to tell they modify the skill's speed and power, respectively) I had a starting point to search. Hiding information from the player entirely just makes this second step needlessly frustrating, as now you have no idea and you have no starting point to look at. For TLR, you end up with guides like this one (http://steamcommunity.com/sharedfiles/filedetails/?id=113566410) where it's a list of things people wish they had known early on - one major thing is that leveling up and grinding like your typical RPG was a bad idea! But you wouldn't know playing the game because it doesn't really tell you the consequences of doing so until you find yourself in an impossible battle because the enemies scale with your 'battle rank' while your own stats cannot handle it (your stats don't necessarily increase when your battle rank goes up.)

You misunderstood. Of course there are games where lvl 1 fast character is always faster than lvl 100 slow character.
In our case, however, even slow character can be faster if the difference is 100 levels. But if the difference is small, then yeah, small character will have more agility because she does have bonuses to agility. Agility decided the speed, not pure traits, because unlike the main game battle engine only operates with raw numbers.

I think we are just talking about slightly different aspects here. I agree with your scenario, and yeah, a stat bonus is a stat bonus when a fight is concerned, regardless of where it comes from. My point was about the 'additional' bonus effect of attack speed on top of the evasion bonus that they get innately from the body type, which it sounded like you said would only occasionally appear on girls with the smaller body type. My argument was that it should either come together as a package, or as two discrete bonuses that you can see, rather than as a hidden modifier.

Put another way, if I have two "small" type girls with very similar stats, which one do I send into combat? The one with the attack speed bonus of course, except there's no way for me to tell.

Xela can help with that  :)
You better ask in the general discussion thread to make sure he notice the question.

Will do, I need to draft up the math first for whatever I plan to tackle first; Probably the dirt, fatigue and XP generation for strippers and service girls since they should be relatively simple few-line edits once I get a good formula down. I'll poke him in that thread if he doesn't respond here before then.

I should also mention that I hope you're not taking any criticisms personally here; I simply enjoy discussion, and am glad you are responding with such detail.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 21, 2016, 02:04:28 AM
One thing you can do here is simply separate out these 'occasional' trait variants into separate-but-related traits, or some sort of trait hierarchy. In this case, the small body type would be the base for a girl, and that body type allows the possibility for the bonus evasion or the bonus attack speed traits to be added (which require the smaller body type trait as its parent.) Once the 'base' traits are taken care of, then you can move on to a pool of 'personality' traits, and then later on, to a large pool of 'miscellaneous' traits that would make each girl more unique.
It's possible to make traits dependable, yeah. The problem here is ideas for the said miscellaneous traits: names, descriptions, stats. One thing is to make a few body traits and forget about them, and another is to come up with multiple lesser traits for every base trait which will feels unique and logical.

I can upload the current traits files and you can help with them, if you have enough ideas (I don't).

As far as I can tell, this 'effects system' still requires you to write in ren'py code, doesn't it?
More in python than in renpy. Consumable items in the dev version have this option too, this way trait or item can be as complex as we want, within reasonable limits.
But not difficult or time consuming at all.

Currently, there's no real reason to have Dawdler besides the customer trait matching bonus because it provides no other benefits, and actually comes with a bunch of penalties instead. Sure, it raises maximum fatigue by 10, but virtually every girl, except the ones that have Fragile, already start with the maximum of 300 fatigue, which as far as I can tell is hard-coded and cannot be increased, so even that one bonus is effectively wasted.
I changed its logic in dev version long time ago to make it a bit more usable.

However, this is a part of another problem. Not every trait should be definitely desired. There are multiple negative traits in WM, but most of them we cannot implement due to the game concept.
For example, they have that malformed trait which gives huge penalties to charisma. But the character does not look malformed at all, and it's close to impossible to find such pictures for most characters anyway.

Many games don't care much about it, you can even change there boobs size while the characters pictures stay the same.
But we decided to be tied by pictures. Sure, there could be slightly different pictures for the same character, but the general concept remains the same. Character cannot lose hands, become ugly or old. So in order to create negative traits we have no choice but to use "invisible" traits, such as Dawdler.

For TLR, you end up with guides like this one (http://steamcommunity.com/sharedfiles/filedetails/?id=113566410) where it's a list of things people wish they had known early on - one major thing is that leveling up and grinding like your typical RPG was a bad idea! But you wouldn't know playing the game because it doesn't really tell you the consequences of doing so until you find yourself in an impossible battle because the enemies scale with your 'battle rank' while your own stats cannot handle it (your stats don't necessarily increase when your battle rank goes up.)
Yeah, that's why I dropped it as soon as I found out about it. Severely punishing for grinding and forcing players to speedrun is a very bad concept for an rpg.
It's a matter of being forgivable though, ingame mechanics should be forgivable enough to not make mistakes deadly if you don't provide clear explanations for them.
Or if the said mistakes are a part of game mechanics when you have to start anew over and over, like in those games where you can level up only after death, such as Rogue Legacy.

For instance, in Dark Souls a novice player cannot possibly know which stats to upgrade to make a successful build as fast as possible. But he can grind as much as he wants and make all stats 99 nevertheless, so his mistakes are not deadly at all, they are just inconvenient for him.

Put another way, if I have two "small" type girls with very similar stats, which one do I send into combat? The one with the attack speed bonus of course, except there's no way for me to tell.
Battle engine only operates with numbers. Battle speed based on agility. Agility is a stat which is visible in the character profile. I don't see a problem  :)

Meanwhile evasion is a special, rare stat which is not visible in character profile because Xela wants it to be hidden. It's fine though, we always can make a hint about hidden mechanics in descriptions, ie "helps to evade attacks".

I should also mention that I hope you're not taking any criticisms personally here; I simply enjoy discussion, and am glad you are responding with such detail.
We had lots of discussions like this three years ago. Then people lost interest as they realized we are not going to release a completely ready game in a few months  :D
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 21, 2016, 03:07:09 AM
It's possible to make traits dependable, yeah. The problem here is ideas for the said miscellaneous traits: names, descriptions, stats. One thing is to make a few body traits and forget about them, and another is to come up with multiple lesser traits for every base trait which will feels unique and logical.

I can upload the current traits files and you can help with them, if you have enough ideas (I don't).

I can take a look at them, certainly, but I can't make any promises or guarantee I'd be able to do anything meaningful with them. Still, it wouldn't hurt to take a look. For the 'misc' pool, I thought the majority of existing alpha traits would be reused, and you'd simply try to come up with some new ones. I'm also not sure what you mean by 'forgetting' the body traits. There is another problem here, though, that you touched on later, and I'll get to it in a bit.

More in python than in renpy. Consumable items in the dev version have this option too, this way trait or item can be as complex as we want, within reasonable limits.
But not difficult or time consuming at all.

I am assuming you are talking about how traits and consumables and such would have the ability to link to an 'effect' name in its definition, but you would still have to come up with the code for the actual effect logic. To me, this still sounds like I'd have to mod it in via Python code (as I have no expectation that anything I write would be incorporated into the base game.) I am trying not to have to mod too many things post-beta-release, partly because I kind of feel like I'd be 'cheating' if I made changes that weren't in the base game - I'm not sure if you understand my feeling here.

I changed its logic in dev version long time ago to make it a bit more usable.

However, this is a part of another problem. Not every trait should be definitely desired. There are multiple negative traits in WM, but most of them we cannot implement due to the game concept.
For example, they have that malformed trait which gives huge penalties to charisma. But the character does not look malformed at all, and it's close to impossible to find such pictures for most characters anyway.

Many games don't care much about it, you can even change there boobs size while the characters pictures stay the same.
But we decided to be tied by pictures. Sure, there could be slightly different pictures for the same character, but the general concept remains the same. Character cannot lose hands, become ugly or old. So in order to create negative traits we have no choice but to use "invisible" traits, such as Dawdler.

And this here is the other part of the problem I mentioned above. You are right that not every trait should be desired. However, I feel like if your MC is savvy enough to run a brothel, he would probably be adept enough to figure out how to make the most out of even the bad traits. It just wouldn't be as attractive as the 'good' traits, but as of the alpha, having one 'useless' trait is pretty painful considering most of the random girls only have 3 traits to begin with. In fact, I have one girl on my list here that I've listed as having "no traits?" because I talked to her 50+ times between the 'interest,' 'hangouts,' and 'about her' categories and absolutely nothing appeared besides the 'fallback' responses telling me she's a stripper. This 'problem' of one bad trait being immensely negative on the desirability of a girl could potentially go away if the girls are guaranteed to have at least a few more traits.

In any case, the other big problem with these traits is that, at least in the alpha, most of the other stats aren't actually all that useful. Prostitution makes heavy use of Charisma and the sex skills, and traits for customer matching, but almost everything else is secondary or outright useless. Strippers are dependent on Charisma and Striptease, with some moderate trait matching bonuses for their traits as well, Service Girls are dependent on Service and Agility, and Guards only need their battle stats, with traits not even really mattering for the last two groups. I don't think any class even bothers with intelligence and character (though I believe character was related to how rebellious a girl would be, which isn't in this game?)

This basically means that you only have a few meaningful stats to put any bonuses and penalties to, which greatly limits the options and variety you can have. My idea for Dawdler and Hyperactive was trying to play on a different set of stats for that reason. This is also the reason why in my OP, I made some suggestions to try and make use of those other stats, which then means we can have traits penalize them.

For my suggestion for Dawdler specifically, it would still be a somewhat 'negative' trait because it still comes with all the stat penalties; its only benefit would be the slower fatigue generation as an attempt to explain that your MC has found a way to make her sluggishness work for him, even despite the fact that the girl would do a terrible job compared to anyone else.

Yeah, that's why I dropped it as soon as I found out about it. Severely punishing for grinding and forcing players to speedrun is a very bad concept for an rpg.
It's a matter of being forgivable though, ingame mechanics should be forgivable enough to not make mistakes deadly if you don't provide clear explanations for them.
Or if the said mistakes are a part of game mechanics when you have to start anew over and over, like in those games where you can level up only after death, such as Rogue Legacy.

For instance, in Dark Souls a novice player cannot possibly know which stats to upgrade to make a successful build as fast as possible. But he can grind as much as he wants and make all stats 99 nevertheless, so his mistakes are not deadly at all, they are just inconvenient for him.

I've never played Dark Souls nor Rogue Legacy, so I can't comment on them specifically; Do their stats not do what is typically expected of them? Or do they do a variety of things not normally associated with them? In the context of this game, I don't think it'd be outright punishing, but for a game about managing girls in a brothel, I get very annoyed when information I need in order to manage them properly is hidden away.

Battle engine only operates with numbers. Battle speed based on agility. Agility is a stat which is visible in the character profile. I don't see a problem  :)

Meanwhile evasion is a special, rare stat which is not visible in character profile because Xela wants it to be hidden. It's fine though, we always can make a hint about hidden mechanics in descriptions, ie "helps to evade attacks".

I assume you mean then that in our hypothetical scenario of a 'small type' girl, her 'hidden' attack speed bonus would appear as an unknown bonus to her agility. But then how do you differentiate it from gaining the effect of the extra evasion? (I am assuming there's an additional evasion bonus that has a chance to be granted on top of the small type's natural evasion bonus.) I still think detailing this bonus for the player would be best, and even just 'helps to evade attacks' would suffice - you could maybe insert the numerical bonus in smaller font under that, or something, but I suppose evasion would be similar to critical hits, and most players would understand that it's a very chance-based system. Although that then begs the question on whether Luck will play into it at all.

We had lots of discussions like this three years ago. Then people lost interest as they realized we are not going to release a completely ready game in a few months  :D

Well, I'm not surprised. These things take time to code, especially if it's complex and there aren't many people contributing to it. I still think the alpha is very playable, I just decided to mod in things I felt were overlooked, not expecting that the beta would come anytime soon either.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 21, 2016, 04:22:00 AM
I'm also not sure what you mean by 'forgetting' the body traits.
I mean, there is no need make any further adjustments. Body types are limited, like small, chubby, athletic, etc. After you created them, there is nothing more to add, even if there is some kind of exotic body type, you will never find enough pictures to make even a single pack for it.

While dependable small traits are limited by imagination only, something that I don't have much because I have to spend it on all game systems at once.

I am assuming you are talking about how traits and consumables and such would have the ability to link to an 'effect' name in its definition, but you would still have to come up with the code for the actual effect logic.
No, scripts for stats are very simple if you know python. We even already have a few effects which affect how fast disposition changes every time something tries to change it. It's almost the same thing as your proposition for fatigue.

You are right that not every trait should be desired. However, I feel like if your MC is savvy enough to run a brothel, he would probably be adept enough to figure out how to make the most out of even the bad traits.
Sure, for example some customers may even like Dawdler characters, so it makes sense to have one or two. Even then it can be a mostly negative trait in terms of pure stats, after all it's not a very good thing to be too lazy or too slow.

In any case, the other big problem with these traits is that, at least in the alpha, most of the other stats aren't actually all that useful.
Yeap, we added more stats checks to jobs since alpha.

For my suggestion for Dawdler specifically, it would still be a somewhat 'negative' trait because it still comes with all the stat penalties; its only benefit would be the slower fatigue generation as an attempt to explain that your MC has found a way to make her sluggishness work for him, even despite the fact that the girl would do a terrible job compared to anyone else.
Yeah, I suppose it could work.

I've never played Dark Souls nor Rogue Legacy, so I can't comment on them specifically; Do their stats not do what is typically expected of them? Or do they do a variety of things not normally associated with them?
Names won't tell you much. It's a different type of not knowing which stat to level.

For instance, endurance increases equip burden. But you can't know which level of equip burden you need unless you already know about all existing armors in the game, so it's very easy to underlevel or overlevel it. And you can increase stats only after leveling up, unlike our game, where you are free to increase anything as long as you have items/money.

So if you already know absolutely everything about stats and can freely upgrade them, there is not much to do in the game.

I assume you mean then that in our hypothetical scenario of a 'small type' girl, her 'hidden' attack speed bonus would appear as an unknown bonus to her agility. But then how do you differentiate it from gaining the effect of the extra evasion?
It's not unknown, you can clearly see which character has more current and max agility at profile screens, including all bonuses from traits.

The difference between visible stats like agility and hidden ones like evasion is the level of uniqueness. There are multiple ways to increase current and max agility, but to directly increase evasion chance, bypassing normal formula which calculates evasion based on the difference between attacker and defender agility, you need either a special trait or a rare equipable item.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 21, 2016, 01:14:00 PM
I mean, there is no need make any further adjustments. Body types are limited, like small, chubby, athletic, etc. After you created them, there is nothing more to add, even if there is some kind of exotic body type, you will never find enough pictures to make even a single pack for it.

While dependable small traits are limited by imagination only, something that I don't have much because I have to spend it on all game systems at once.

Oh okay, I think I understand what you mean now; It sounds like the trait hierarchy and dependencies system is something you could support. I would probably say that 'types' such as Chubby and Athletic wouldn't be a 'base type' in this case, as you could have Athletic small and Athletic large girls, and as such, Athletic/Chubby would be in the sort of 'general' pool. In my eyes, the 'base types' should be things that are wholly exclusive to each other -- It's not possible to have a 'small large' body type, after all (setting aside the obvious quip of a girl who would be larger than medium but smaller than large.)

However, has the way the traits are chosen and assigned changed since alpha? I'm looking at the alpha code now, trying to get a handle on it so I know how to change the parameters properly in the rchars files to get a wider variety of traits. At the least, if we go with the hierarchy, I imagine the random girl generation code would have to run multiple 'passes' when generating traits as it has to select traits in each 'tier' of traits.

No, scripts for stats are very simple if you know python. We even already have a few effects which affect how fast disposition changes every time something tries to change it. It's almost the same thing as your proposition for fatigue.

The "if you know python" statement is largely what I'm referring to -- It may be simple, but it still requires you to actually write code to make work if it's not already present in the game. For example, if you have 'generic' code that allows you to just specify a stat name and a modifier in the traits file itself, then you could presumably add traits that add or subtract intelligence, or charisma, or joy, or defense every X turns easily, but if I then wanted to add a trait where girls that are 'lucky' will randomly find 200 gold every week, I'd have to write in that code myself because that's probably not something that would already exist.

Yeap, we added more stats checks to jobs since alpha.

Awesome, I'm glad to hear that. Do you have a list available of what stats each class needs now to make the most of them? I mean, in the alpha Service Girls check agility too, but I wouldn't have known that if I didn't check the code because nothing else tells me that; Even the service course, which I assumed was tailored for Service Girls, didn't indicate it would raise agility. Having a list of all the stats each class relies on would be helpful for creating trait effects that would help and hurt each one.

Names won't tell you much. It's a different type of not knowing which stat to level.

For instance, endurance increases equip burden. But you can't know which level of equip burden you need unless you already know about all existing armors in the game, so it's very easy to underlevel or overlevel it. And you can increase stats only after leveling up, unlike our game, where you are free to increase anything as long as you have items/money.

So if you already know absolutely everything about stats and can freely upgrade them, there is not much to do in the game.

Yeah that sounds like something in which I would just try to max everything out on because that's how I approach these things, haha. That's also why earlier in this thread when I was talking about how I send 20+ girls to the courses to level up their stats, all of them were in school for close to 6 months before they even started working at my brothel; They'd come in and immediately be rank 3's with over 100 charisma and 80+ in every sex stat, Strippers would start working with 100+ Charisma, Striptease and maxed agility, Guards would be capped on battle skills even without gear, and Service Girls would have 100+ Charisma, Service and maxed agility.

Still, I assume it's made clear at some point that endurance increases equipment burden, you just can't know what the optimal level is. In our case, you can't know the 'breakpoints' for various stats (meaning, for the alpha, prostitutes need at least 30 charisma and sex stats to avoid the joy penalty while working) but you still know that it provides that bonus. My concern was closer to if you had two Longswords, otherwise identical in most respects, but one just had 20 more attack than the other for no discernible reason. That would drive me insane in not knowing why there was such a discrepancy. If the second sword maybe was called "Mighty Longsword" then I can work out that "Mighty" is acting as an attack bonus modifier in that case.

It's not unknown, you can clearly see which character has more current and max agility at profile screens, including all bonuses from traits.

The difference between visible stats like agility and hidden ones like evasion is the level of uniqueness. There are multiple ways to increase current and max agility, but to directly increase evasion chance, bypassing normal formula which calculates evasion based on the difference between attacker and defender agility, you need either a special trait or a rare equipable item.

This concern was largely due to my impression that two girls would simply have "Small body" but one had a 'hidden' agility bonus which would inflate her stats, but not tell me why. (Recall my annoyance in why my upkeep calculations didn't match the in-game values.)

However, if we go with the 'tiered' trait approach as detailed above, this should theoretically be a non-issue, as the 'agility bonus' would be a separate, distinct, and clearly visible trait, even if it doesn't tell me exactly how much of a bonus she gets. If you were to go with the 'single' traits, you'd need to create many variations of each 'base' type to include all possible permutations of these extra bonuses, which would probably be more work than simply letting the game randomly put these together.

Honestly, I think the player not knowing the exact breakpoints would be enough. You could tell the player exactly how much of a stat they'll be gaining and it'll save some people some math to work out what that bonus is, but unless they look at the code, they won't know that they'll need precisely X of a stat for Y situation. They'd only know that trait A gives a bonus to one stat, while trait B gives a bigger bonus to that stat, making it more valuable, or trait C which gives an even bigger bonus to that stat, but comes with a penalty to another stat.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 21, 2016, 02:40:00 PM
It's not possible to have a 'small large' body type, after all (setting aside the obvious quip of a girl who would be larger than medium but smaller than large.)

However, has the way the traits are chosen and assigned changed since alpha? I'm looking at the alpha code now, trying to get a handle on it so I know how to change the parameters properly in the rchars files to get a wider variety of traits. At the least, if we go with the hierarchy, I imagine the random girl generation code would have to run multiple 'passes' when generating traits as it has to select traits in each 'tier' of traits.
Of course, all body types are mutually exclusive. I suppose in theory it's possible to find a small yet chubby character, but it's too much trouble for only a hypothetical rare case.

We have a more strict system now. Every character must have a body trait, a boobs trait, a personality trait, an elemental trait, a race trait and a class trait. If they are not set in the character file, the game will set default ones.

I attached traits files to this post. They are still a work in progress though, especially class traits.

if I then wanted to add a trait where girls that are 'lucky' will randomly find 200 gold every week, I'd have to write in that code myself because that's probably not something that would already exist.
If only every code could be as simple as that lucky trait  :)
There is no difference between adding a bonus to stat and some gold. Because gold is a stat too, technically.

Do you have a list available of what stats each class needs now to make the most of them? I mean, in the alpha Service Girls check agility too, but I wouldn't have known that if I didn't check the code because nothing else tells me that
Starting from the beta, characters will have auto equipment function. Meaning that unless character has very high disposition or is a slave, she won't allow you to manage her inventory, using autoequipment system instead and trying to use the best possible items for the current job. Well, most of the time at least, otherwise it would be too easy.

By looking at their choices you can figure out needed stats for any job. I think such indirect ways are the best when you need to demonstrate something hidden.

That's also why earlier in this thread when I was talking about how I send 20+ girls to the courses to level up their stats, all of them were in school for close to 6 months before they even started working at my brothel; They'd come in and immediately be rank 3's with over 100 charisma and 80+ in every sex stat, Strippers would start working with 100+ Charisma, Striptease and maxed agility, Guards would be capped on battle skills even without gear, and Service Girls would have 100+ Charisma, Service and maxed agility.
Starting from the beta stats maxes are limited by levels. You cannot infinitely increase stats without leveling up, and you can't level up without working. Depending on class traits, some stats maxes will increase faster than others, like warriors will get more attack and defense.

You still can get 1000 charisma for a warrior, it just will require much more work than just sending her to beauty course 100 times  :)

Honestly, I think the player not knowing the exact breakpoints would be enough. You could tell the player exactly how much of a stat they'll be gaining and it'll save some people some math to work out what that bonus is, but unless they look at the code, they won't know that they'll need precisely X of a stat for Y situation. They'd only know that trait A gives a bonus to one stat, while trait B gives a bigger bonus to that stat, making it more valuable, or trait C which gives an even bigger bonus to that stat, but comes with a penalty to another stat.
It's not so simple. In the dev version traits modificators work like mod [1,2], meaning +1 to some stat every two levels. At this point we cannot tell directly the bonus because it will be different every time. Especially if some another trait gives [-1 ,3] to the same stat.
At best we can say that a trait gives some bonus to a stat.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 21, 2016, 05:00:51 PM
Of course, all body types are mutually exclusive. I suppose in theory it's possible to find a small yet chubby character, but it's too much trouble for only a hypothetical rare case.

I suppose if you're talking about finding images to specifically portray the various combinations, then yeah that may be difficult to do, although realistically, that combination is possible. I suppose if you wanted the images to actually reflect the body type to a moderate degree of accuracy, then some concessions will have to be made regarding the flexibility of how 'random' these permutations can be.

We have a more strict system now. Every character must have a body trait, a boobs trait, a personality trait, an elemental trait, a race trait and a class trait. If they are not set in the character file, the game will set default ones.

This sounds great to me; It seemed strange to me in the alpha that some girls would have absolutely no boob trait at all, as I figured it would at least go with the 'average' size as default. Still, it sounds like the groundwork is there for multiple 'layers' of trait picking already, and we can slot in the 'misc' pool and others after all that.

One other hope is that there will be enough 'random' girl types to comfortably showcase all available traits without having to resort to unique characters using them -- so far in my current game, I'm having an extremely hard time finding anyone else with the 'small boobs' trait besides the one Touhou girl, which makes it very annoying when customers decide they want to look for small boobs 7 times in one day.

I attached traits files to this post. They are still a work in progress though, especially class traits.

Thanks, I'll take a look over the weekend and see what I can figure out or come up with. I expect this weekend is going to be a busy one again, though, so no promises yet.

Starting from the beta, characters will have auto equipment function. Meaning that unless character has very high disposition or is a slave, she won't allow you to manage her inventory, using autoequipment system instead and trying to use the best possible items for the current job. Well, most of the time at least, otherwise it would be too easy.

By looking at their choices you can figure out needed stats for any job. I think such indirect ways are the best when you need to demonstrate something hidden.

Oh, okay, this sounds interesting. Some amount of inference will be needed then (especially as some gear usually has unrelated stats, too, but I assume in this case it should still be clear which stats the girls are prioritizing based on which stats have the most bonuses stacked, and the ones that have the least or even negative penalties applied probably have little to do with their job.) This also makes it an even worse decision to try and make girls do stuff that they aren't supposed to, unless they swap them automatically to match the job they'll be doing? Do these come from the girls' own inventories, or the MC's?

On the topic of dropping hints, I feel they could also casually drop hints for the player through their dialogue, if the MC interacts with them. For example, a service girl could, in order to hint at agility, comment that her shoes make it difficult to maneuver around all the guests she needs to serve. My thinking is that such a line would only be available if her current agility is more than, say, 10% away from her current maximum agility cap, and would also serve as a reminder to the MC that the girls may need new equipment to get the most out of them.

Starting from the beta stats maxes are limited by levels. You cannot infinitely increase stats without leveling up, and you can't level up without working. Depending on class traits, some stats maxes will increase faster than others, like warriors will get more attack and defense.

You still can get 1000 charisma for a warrior, it just will require much more work than just sending her to beauty course 100 times  :)

Damn. There goes my 'high-class' brothel. But that said, I think it's a good change, and also makes it more consistent with how the MC has to level up often to raise his stat caps. There are some problems this brings up though, and so I do have a couple questions about such a system:


It's not so simple. In the dev version traits modificators work like mod [1,2], meaning +1 to some stat every two levels. At this point we cannot tell directly the bonus because it will be different every time. Especially if some another trait gives [-1 ,3] to the same stat.
At best we can say that a trait gives some bonus to a stat.

Well, displaying the numbers itself is not the problem here, but rather your example is trying to provide the total bonus, which is unnecessary; The player can work that out on their own as long as the numbers are given. Though, again, at the very least, and indication of some bonus being given is better than nothing at all.

I just whipped up another quick edit of the girl profile screen in the alpha to try and test how adding extra information to a trait would look (whether it'd be too cluttered or not, etc.) I say 'quick,' but it was actually really annoying figuring out how to make the XML description field give me line breaks. On the other hand, I managed to get it working, as well as confirmed that it would parse ren'py text style commands just fine. I've attached a screenshot showcasing a very rough mockup of what it would look like to include trait information.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 22, 2016, 04:02:59 AM
One other hope is that there will be enough 'random' girl types to comfortably showcase all available traits without having to resort to unique characters using them -- so far in my current game, I'm having an extremely hard time finding anyone else with the 'small boobs' trait besides the one Touhou girl, which makes it very annoying when customers decide they want to look for small boobs 7 times in one day.
Yeah, not sure what to do about it. Building a random pack for this trait is difficult, not enough "flat" pictures.

This also makes it an even worse decision to try and make girls do stuff that they aren't supposed to, unless they swap them automatically to match the job they'll be doing? Do these come from the girls' own inventories, or the MC's?
MC can give them items and take them back, but characters may ignore them. They only use their inventories. They swap them automatically to match the job.

I sincerely hope experience gain scaling is fixed for Guards, Strippers, and Service Girls... otherwise you have what was shown in my previous screenshots - a girl who's guarded continuously for 2 years is only level 13, while prostitutes hired nearly a year after her are over level 100.
Realistically, fighting drunk customers once per week is not a good source of exp for a warrior. There will be exploration module, when you send fighters to explore dangerous areas. It will be a much better source of exp. For other classes, some balancing will be needed, yeah.

Are courses going to be useful still, or are you guys trying to discourage their use, since stats would be capped?
You still should increase stats somehow. Either via items or courses.

Is fatigue going to remain at the current static 300 cap, or will it also start off low and increase with levels?[/li][/list]
No, increasing it infinitely is dangerous for the balance. On  the other hand, there are means to get permanent bonuses to it.
Also, different body traits give different starting fatigue (we renamed it to vitality btw).
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 22, 2016, 12:28:39 PM
Yeah, not sure what to do about it. Building a random pack for this trait is difficult, not enough "flat" pictures.

Perhaps not for the existing girls, as I suppose most of the elf-type characters are typically portrayed as fairly busty, but the 'flat' archetype should be popular enough that there should be another character you could pick to use, although this would involve creating another 'class' of character. But without it, you'd be unable to really appease customers who decide they want that trait unless you mod in a bunch of unique girls with that trait.

MC can give them items and take them back, but characters may ignore them. They only use their inventories. They swap them automatically to match the job.

All right, that sounds good to me. I assume disposition plays a large role in whether or not the girls will equip your items, but the auto swapping to match the job feature sounds great.

Realistically, fighting drunk customers once per week is not a good source of exp for a warrior. There will be exploration module, when you send fighters to explore dangerous areas. It will be a much better source of exp. For other classes, some balancing will be needed, yeah.

I agree, of course, and I wanted to make it so that the 'aggressive customer' event isn't totally eliminated at max security rating in the alpha largely because such a system wasn't in place in the alpha, so they had no other options. However, I still stand by the idea that even with this system in place, 1000 security rating should not be 100% chance to avert such events. My idea was to have max security rating cap out the reduction at something like 90 or 95%, then the security presence rating plus number of guards would bring an additional 4-9% reduction, so that even at max security rating, 100% presence and 5 guards, there would still be a small 1~5%ish chance of these events occurring, necessitating you actually placing more than one guard on duty at 1000 security rating.

Once I figure out how to work out the code properly I'll write that into the alpha (along with their random 'customer fining' and 'item confiscation' events) and see how well it works.

You still should increase stats somehow. Either via items or courses.

Hmm, okay. Sounds like you'd have to pull active staff out to run courses more often since you can't simply have them sit in a course for 6 months right away. What do you guys think about my idea of allowing these courses to have a chance of granting additional traits at their completion?

No, increasing it infinitely is dangerous for the balance. On  the other hand, there are means to get permanent bonuses to it.

Also, different body traits give different starting fatigue (we renamed it to vitality btw).

Oh, I didn't expect it to increase infinitely, but I was thinking more that 300 wouldn't be a 'hard' cap, but a 'soft' one. In other words, most girls would start off lower, but eventually cap out at 300, except the girls that have traits with fatigue bonuses which would allow them to go past 300 to whatever their bonus is, so you'd have those particular girls at maybe 350 or 400 fatigue max, making those traits actually very valuable. At the least, I'm glad to hear their starting fatigue/vitality will be different, which sounds like at least part of this suggestion is already implemented.

On that note, I took a quick look at the db files and I think I understand what your meaning was; It seems like in addition to a trait providing the static minimum and maximum bonuses, they also provide a 'per X level' bonus. This would be extra information to convey, but is still very doable in a similar manner as I did in my previous screenshot, though.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 26, 2016, 07:28:51 PM
Welp, another busy weekend, but getting back to poking at this stuff now.

I'm still piecing together exactly what the new traits you sent me really mean, but I do have a couple ideas to throw in. I just haven't quite worked out what exactly they would do yet because I am still not quite clear on what the final list of available stats will be, nor what stats are relevant to each job, so some ideas I have may overlap with existing traits, which would end up being redundant. For example, there could be a "Spoiled" trait, but that could potentially be very similar to "Noble" depending on what stats I can reasonably affect.

If there's a way you can send me that information, I can try to work out more specifics for you.

Going back to the alpha, I just finished an initial pass over all the random girl generation JSON files. I tweaked all of their traits, as well as added any from the full list of traits that worked with their archetype/description, and on a few quick tests, it seems to definitely be aiding random girl diversity immensely. The average number of traits a random girl had previously (stock alpha) was around 4. Once the updated JSON files were loaded, the average was around 9 (with many girls having a guaranteed boob trait as well.) I may have gotten slightly overzealous though, as some of the girls had upwards of 15 traits, which is probably excessive, so I'll be going through them and reducing the chances for some of their traits. Still, simply having more of them available, even at a 10% chance, allows for greater variation, as they will usually have different traits to each other.

To enhance the diversity between girls, I also went and added more specific override ranges for each girl's starting stats (everything from primary stats, to sex stats and battle stats, and even luck.) I tweaked them so that certain girls would be a better 'fit' for specific roles, hopefully consistent with their description/archetype. For example, the Sea Elves are said to be cultivated into a race of maids, so on top of a 100% chance of 'Professional Maid,' they also start with much higher Service (40+) but at the cost of having very abysmal combat stats (Attack, Defense and Magic are set to start at between 5-10.)

Meanwhile, the Soldier class has no magic (stat is 0-5) and is pretty awful for most brothel work initially, but has very high combat ability (45+ Attack and Defense, and 25 Agility) and starts with increased reputation and fame. The adventurer is more balanced, but most stats are more average as a result, while the Priestess/Sage have a higher Magic stat with low Attack and Defense stats. The Angel class is great for combat, and has high charisma to boot, but their lack of knowledge of the human realm means they start off barely any better than Soldiers are for brothel work.

I did, however, run into some issues here, which means I'll have to revisit the JSON files again anyway; Due to the random girl generation code for some reason modifying the randomly chosen value from each stat's specified ranges, the values that end up in the game are usually much higher than I expected/wanted them to be. In one case, though, I think it was with a Slime girl who starts with very poor stats almost across the board and then picked up more of the negative traits on top of that, the girl wound up with some negative stats. I'm trying to reproduce it now so I can figure out how to avoid that.

In doing so, I also did verify that using devlog.info() was enough to output data into the log for me, so that's good to know. I ran into multiple errors the first couple times I tried to load the game after the JSON edits due to various typos in them. The first error spoke of expecting comma delimiters, which, while not specific enough to pinpoint which file caused it, was enough for me to run a regex search through all the files and fix the half dozen or so missing commas across all of the files. Beyond that, I ran into errors where the code's natural error reporting failed to tell me anything meaningful (something about dict not having an index, but the error report code was unable to fill in the variables.)

I threw in some code to output the values being used at each step of the function to devlog.info() and immediately discovered two more typos with the traits (one was "Silly]" which I must have accidentally added that bracket to in one of the files.) Fixed those and off we go to try and rebalance these numbers now..
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 26, 2016, 09:48:09 PM
Good luck, it seems like an unreasonable amount of effort put into very old version of the game but as long as you're having fun.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: krakr on January 17, 2017, 11:42:22 AM
LMAO @ Xela

Hi Sarabada I haven't played the alpha for over a year, but I'd like to point out 2 things you've overlooked in your playthrough.
The first is that Intelligence is hugely important (Xela's hidden stats ^_^). Try sending 2 ho's to school, 1 with a 40 int & 1 with a 5 int & compare your bonuses.
Try sending a dumb mage and a smart mage into the arena & you'll see the difference as well.
The other is that you need to rotate your guards in and out of your team & begin team fights in the arena. XP still isn't on par with your sluts, but it's much better and it forces you into another aspect of the game, i.e. team combat

I found the game quite some time ago.
I recall posting a bunch of observations and critiques myself after my first game.
Xela & Dark were just as patient and helpful to me as well.
Since my coding xp ended at HTML 2.0, I have very little to offer, I'm just farting around with the new build catching stinky boots in dev mode ^_^.
I can see that like myself, you can be a bit anal about stats & logic & whatnot, so good luck with your mod.
Hopefully the Beta will be around the corner, but if it's going to take a while, I'd be interested to try out your mod if you get anywhere near a "finished" product.

some helpful hints for the alpha:
send ho's to ettiquette school first for INT (if needed)
Save/load spam when learning from the arena chick because CON bonus very iffy (if you were to fix, then YAY!)
always keep a cheap house to bring your ho's up to speed once you can afford a big place.

The only really out of control thing I found in the alpha was reputation. I had 1 whore who would *literally* have over 100 pages of rejections in 1 day because she was so full of herself she wouldn't have sex with anything but nobility & such.
Why beggars were trying to get into a mansion style brothel was beyond me as well, but whatever. I've played Betas that were more full of bugs honestly.
Then of course once your rep is 0 it just invites more low class scumbags & voila, catch 22.
Good luck with your modding, I especially like the details you put into the traits description.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 07, 2017, 05:53:55 PM
Well, hello again, everyone!

It's been over half a year, almost a year now since I last came around to work/play with the game. Life and work sidelined me for a while since I had a couple new projects I had to take on which ate up most of my time.

I ended up wanting to play a game similar to this again a couple weeks ago, and since I still had it installed, I figured I'd fire it up again for fun. However, I really wanted to add some new girls to the game, as the 'standard' version of the alpha only came with a handful. Unfortunately, there aren't any alpha-compatible packs, and it still seems like the beta is not yet ready for release.

Coincidentally, I noticed you guys released a tech demo for GiBC today; very nice! It's not a type of game that's up my particular alley (I prefer the sort of more 'tycoon'-like gameplay of PyTFall, or more just the running of an establishment) but I recognize the usefulness of these types of releases. I'm hoping the experience it gives can be carried over to the whole exploration/combat system of the PyTFall beta as it honestly wasn't very good in the alpha.

That said, I know the last time I was active here, I mentioned, among other things:

Unfortunately, I'm too lazy to try and decipher all the tags to get them into an alpha-compatible format for the entire folder. I suppose since the tags follow a specific structure one could write a small app to decipher it according to the naming rules you set and generate a tags file appropriately, but that's more effort than I want to spend right now, so I'll scrap the idea and just wait for the beta.

Since I decided it's been so long that I might as well start a new game anyway, and meant I had the chance to include new girls, I ended up...doing exactly that. Thankfully, you guys documented the new tagging format, including what tag every character pair stood for, so I took that and spent a couple hours whipping up a quick and basic PHP script to scan through filenames and automatically generate an alpha-compatible 'tags' file. It's not perfect because I wasn't quite sure how to translate most of the 'new' tags into tags that would be recognized by the alpha (I couldn't find a way to locate any sort of 'master list' of tags the alpha recognized.) In any case, I have something that allows me to port the beta-pack girls into the alpha with just a couple clicks, and if I update the 'tag dict' (which I'll probably have to do) I can re-generate every girl's 'tags' file in a couple seconds.

What took me longer was adapting, and in most cases, manually creating the data files for each new girl, as most either didn't come with one, or was designed for the beta. By far the longest part, though, was re-tagging images that were not in the beta-packs. I had a utility automatically scan and remove all duplicates when merging 'beta' packs into existing 'alpha' girls (such as the default Touhou1, Bleach, One Piece, etc. packs) but even with the DarkTagger utility it takes a while to tag hundreds of leftover images. On the bright side, I have virtually everything as basically-beta-compatible.

In all, I went through all 3 of the forum's stickied girl-pack threads (DarkTI, Lurker, Cherrywood) and merged everything into the alpha. This includes the 5 'Random Human' girl packs from DarkTI, bringing the total number of random girl types from 15 to 20. I've also updated all of the other 15 rchars types to use the new beta-tagged images (manually retagging the ones that were unique to the alpha's folders.)

I've also added in almost every unique girl from those threads, bringing the total up from 31 girls across 4 series to 137 girls across 30 series, including updating the 'stock' Bleach, One Piece, and Touhou folders. This has the amusing side-effect of making this game now take over 12GB of space, though.

Unfortunately, I am still missing a couple things.

For one, while I first went through DarkTI's image packs thread, it seems to be missing beta-type packs for the 'Maid Elf' and 'XP-tan' random girls.

As well, I have not yet added the 13 'minor' characters from the Arcana Heart pack (which would bring the total up from 137 to 150) mostly because they seem really light on images. Do you have updated packs and/or more images for either of these?

Also, as I was going through Cherrywood's pack thread, DarkTI also posted a 'patch' for Sakura (I assume from Fate) but I was unable to download a copy because it's been removed or deleted. Do you still have a copy of this so I can merge it in as well?

Finally, the last 'pack' I need to merge is the Naruto pack, but that one is......staggering, to say the least. Considering retagging images is the bulk of the time spent on merging these together, it's going to take a while to retag 15 girls' worth of images (especially considering I'm not a huge fan of Naruto to begin with.) Just running the dupe utility, it only found ~187 out of a folder of 550 images.... that's a lot of retagging I still have to do, lol. I know you released a 'combined' Naruto pack, but even that one is missing some of the girls that came standard with the alpha. Do you happen to have any sort of, uh, 'ultimate pack' with all of them that I can just drop in?

Still, it's enough where I can play now and it feels much more fun/lively as there's a vastly larger variety of girls to recruit now.

.... I will say, though, that the 'modder' in me caught the modding bug again almost right away, and I've gone ahead and added in a visual indicator of when a free girl is ready to be hired (the disposition bar changes color.) I plan to 'lock' this 'ability' behind the MC having probably a certain amount of intelligence and charisma. If not, you instead have 'generic' bar color changes at preset intervals (500, 700, 900 disposition) allowing you to try to guess without being totally blind.

I wasn't able to fix the disposition bar animating weirdly (when I modified one of the responses to give +200 disposition change instead of 15, for example) because it'll sort of creep up a tiny amount right as you click the response, but not get anywhere near its required endpoint, and then clicking anywhere again to dismiss the 'dialogue' line causes the disposition bar to just...appear at the new level without animating (and the +240 or whatever number floats up.) I feel like perhaps it's because of the fact that the whole bar is being replaced, and I was unable to successfully 'cache' a value for use as the 'old_value' parameter, so I gave up.

Finally, in case anyone wants to pitch in and help me refine the beta-alpha-tag-conversion dictionary, feel free to suggest changes. Again, it's trivial for me to re-generate tags for all 137+ girls at this point, as it just involves clicking a couple buttons and waiting 3 seconds once I update the dictionary.

From the original list, I've made a few (random) changes hoping to get it more in line with the alpha, but I'm pretty sure the 'nn' (non-nude) tag should not be set to 'portrait.' Unfortunately, I have no idea if 'sfw' is a valid alpha tag. The other things were tags for the various sex acts and group tags as I believe the alpha versions had spaces, or different wording, etc. Duplicate tags are not an issue, as my script strips out dupes before writing the tags.

Code: [Select]
            $tagDict = array(
                'nd' => 'nude',
                'nn' => 'portrait',
                'sx' => 'sex',
                'bs' => 'battle_sprite',
                'po' => 'portrait',
                'qs' => 'vnsprite',
                'pr' => 'profile',
                'pa' => 'girlsmeets',
                'pb' => 'fighting',
                'pc' => 'rest',
                'pd' => 'beauty',
                'pf' => 'etiquette',
                'l1' => 'no bg',
                'l2' => 'simple bg',
                'l3' => 'generic outdoor',
                'l4' => 'generic indoor',
                'l5' => 'beach',
                'l6' => 'onsen',
                'l7' => 'pool',
                'l8' => 'stage',
                'l9' => 'urban',
                'la' => 'wilderness',
                'lb' => 'suburb',
                'lc' => 'nature',
                'ld' => 'dungeon',
                'le' => 'living',
                'lf' => 'public',
                'e1' => 'angry',
                'e2' => 'confident',
                'e3' => 'defiant',
                'e4' => 'ecstatic',
                'e5' => 'happy',
                'e7' => 'hurt',
                'e6' => 'indifferent',
                'e9' => 'sad',
                'e8' => 'insane',   
                'ea' => 'scared',
                'ec' => 'suggestive',
                'eb' => 'shy',
                'ed' => 'tired',
                'ee' => 'uncertain',
                'c9' => 'lingerie',
                'c8' => 'nude',
                'c3' => 'indoor',
                'c2' => 'formal',
                'c1' => 'casual',
                'c7' => 'transformed',
                'c6' => 'cosplay',
                'c5' => 'ripped',
                'c4' => 'exposed',
                'ca' => 'armor',
                'ck' => 'cow',
                'cj' => 'cat',
                'ci' => 'bunny',
                'ch' => 'yukata',
                'cm' => 'ninja',
                'cl' => 'dog',
                'cc' => 'maid',
                'cb' => 'swimsuit',
                'cg' => 'sportswear',
                'cf' => 'schoolgirl',
                'ce' => 'nurse',
                'cd' => 'miko',
                'a1' => 'strip',
                'a3' => 'cleaning',
                'a2' => 'bathing',
                'a5' => 'dance',
                'a4' => 'cooking',
                'a7' => 'exercising',
                'a6' => 'eating',
                'a9' => 'gambling',
                'a8' => 'fighting',
                'aa' => 'healing',
                'ac' => 'musician',
                'ab' => 'magic',
                'ae' => 'sleeping',
                'ad' => 'reading',
                'ag' => 'singing',
                'af' => 'shopping',
                'ai' => 'studying',
                'ah' => 'sport',
                'aj' => 'waitress',
                'ma' => 'mast',
                'm5' => 'randomitem',
                'm4' => 'othertoy',
                'm7' => 'tits vibrator',
                'm2' => 'anal plug',
                'm1' => 'anal beads',
                'm3' => 'dildo',
                'm6' => 'vibrator',
                'm8' => 'forced',
                'cu' => 'after sex',
                'gr' => 'group',
                'gg' => 'ass',
                'gf' => 'group',
                'ge' => 'group',
                'gd' => 'other mast',
                'gc' => 'notmain',
                'gb' => 'bukkake',
                'ga' => 'girl hidden',
                'gl' => 'tits',
                'gk' => 'feet',
                'gj' => 'hands',
                'gi' => 'mouth',
                'gh' => 'pussy',
                'g7' => 'three girls',
                'g6' => 'two girls',
                'g5' => 'girl',
                'g4' => 'more guys',
                'g3' => 'three guys',
                'g2' => 'two guys',
                'g1' => 'guy',
                'g9' => 'guy hidden',
                'g8' => 'more girls',
                'bc' => 'cumcovered',
                'bd' => 'bdsm',
                'b4' => 'suspended',
                'b5' => 'whipped',
                'b6' => 'tortured',
                'b7' => 'alone',
                'b1' => 'leashed',
                'b2' => 'bdsm',
                'b3' => 'spanked',
                'b8' => 'girl',
                'b9' => 'hiddengirl',
                'be' => 'dominatrix',
                'ba' => 'guy',
                'bb' => 'hiddenguy',
                'ns' => 'sex',
                'p2' => 'straight',
                'p3' => 'partner hidden',
                'p1' => 'les',
                's9' => 'standing',
                's8' => 'spooning',
                's3' => 'missionary',
                's2' => 'doggy',
                's1' => '69',
                's6' => 'scissors',
                's5' => 'ontop',
                's4' => 'onside',
                's7' => 'sitting',
                'sb' => 'bdsm',
                'sa' => 'rape',
                'sl' => 'hug',
                'sc' => 'anal fingering',
                'se' => 'lick anus',
                'sg' => 'anal toy',
                'sf' => 'lick pussy',
                'sh' => 'vaginal toy',
                'si' => 'anal',
                'sj' => 'vaginal',
                'sk' => 'kiss',
                'sm' => 'caress tits',
                'sd' => 'vaginal fingering',
                'sz' => 'vaginal footjob',
                'sy' => 'anal footjob',
                'ss' => 'hug',
                'sr' => 'handjob',
                'sp' => 'footjob',
                'sw' => 'vaginal handjob',
                'sv' => 'anal handjob',
                'su' => 'titsjob',
                'st' => 'kiss',
                'so' => 'deepthroat',
                'sn' => 'blowjob',
                't6' => 'toy pussy',
                't7' => 'caress tits',
                't4' => 'vaginal',
                't5' => 'toy anal',
                't2' => 'lick pussy',
                't3' => 'anal',
                't1' => 'lick anus',
                'z1' => 'evening',
                'z4' => 'winter',
                'z2' => 'night',
                'z3' => 'autumn'
            );

It's nice to see you guys still active and plugging away, and I'm happy to be able to play this again with a whole new set of characters.

Finally, @krakr:
Sorry, I never got back to you. I'll keep in mind the intelligence-related stuff. I'm not sure about the CON bonus being bugged, because the code is just written to make it VERY rare to happen -- there's no bug to 'fix' other than making it happen more often, or cost less gold per attempt.

The low reputation catch-22 thing seems more like an oversight than a bug though, but that I can probably look over and fix, because I had (looking back at my previous posts here from last year!) apparently wanted to make some tweaks to how the whole ranking/reputation/refusal system worked.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 08, 2017, 05:24:06 AM
We are exploring some possibilities of releasing a new version in stages. Like a combat oriented version first, more building/content later. At the moment we're updating Arena.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 08, 2017, 01:04:08 PM
Oh, that sounds like a pretty reasonable idea, although if you'll be releasing it in such phases, I imagine it'll be more like the GiBC 'tech demos' than 'playable beta.' Would subsequent 'phases' be solely that particular aspect, or would it be more like a rolling alpha where certain features simply don't exist until it's updated to have it alongside all the 'previous phase' stuff?

Has there been any sort of timeline decided yet, or is that still up in the air? For the moment, I think I've breathed enough new life into the alpha with all the new girl packs I've added that it'll tide me over a while longer.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 08, 2017, 01:22:57 PM
Oh, that sounds like a pretty reasonable idea, although if you'll be releasing it in such phases, I imagine it'll be more like the GiBC 'tech demos' than 'playable beta.' Would subsequent 'phases' be solely that particular aspect, or would it be more like a rolling alpha where certain features simply don't exist until it's updated to have it alongside all the 'previous phase' stuff?

Has there been any sort of timeline decided yet, or is that still up in the air? For the moment, I think I've breathed enough new life into the alpha with all the new girl packs I've added that it'll tide me over a while longer.

We are aiming at a release until the end of the year "even if it kills us" :D We should be able to manage a combat oriented release, maybe even a full release with more buildings and businesses.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 08, 2017, 01:58:16 PM
People at forums ask us about PF all the time, and some even think that we stopped working on it long time ago.

Would be cool to tinker it a bit more to have all systems working at once, but one of the main ideas is to allow players to create their own content if they want (packs, items, etc), so it's wise to release a playable, even if not finished, version before everyone loses patience  :)
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 08, 2017, 02:09:31 PM
Ha, that sounds quite ambitious. I like it, but I know all too well the pitfalls that comes with. Even if you guys miss that target, I can probably throw out this 'stuffed' alpha I have now to placate them for a while.

Part of the reason I made my retagging script was so that we could build those girl packs compatible with the beta, but still be able to play with them in the alpha while we wait.

Speaking of which, @DarkTI, I imagine it probably got lost in my typical wall of text posts, but do you happen to have updated image packs for the Maid Elf and XP-tan random chars, the Arcana Heart minor girls (10 images doesn't seem like a very good variety to make a girl entry for,) the now-deleted 50-image 'patch' for CW's Fate/Stay Sakura, and perhaps a Naruto pack that contains all the other girls from the alpha release? Since I've added all the existing beta girl packs already, I figured I might as well update everything to the new format across-the-board.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 09, 2017, 01:58:59 PM
Maid Elf and XP-tan did not make it. I tried my best, but it's not possible to find enough images to make a balanced pack, even though I liked those packs. Same for some of Naruto chars, they simply don't have enough pictures compared to others.

Sakura's patch and all CW's naruto pictures are now a part of my naruto pack, since CW stopped making them. Just now I uploaded the whole pack instead of the old one to my packs thread.

Arcana Heart minor girls are a test of concept. Characters with so few pictures cannot be proper heroines, but they can be used as arena fighters, where they need absolute minimum of images, like battle sprite, portrait and optional sex scenes.
If it goes well, we will have support for such minor characters too, so people will be able to add to the game any characters at all, even those with 2-3 pictures in total. In this case even WinXP pack and minor Naruto chars can be used as minor characters once again.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Sarabada on October 09, 2017, 03:43:27 PM
Thanks for the update, Dark. It's a shame that the Maid Elf and XP-tan didn't make it; I may try to look up a couple at some point to see if I can't make them workable.

With regard to the Arcana Heart minor girls, I kind of figured it was at least a 'work in progress' if not a test considering how few images they had in their folders. I'll continue to hold off on adding them as 'regular' girls into the alpha for now, unless I get curious.

That said, what would be a good or 'recommended' amount of images to make a pack? I felt like even having around 50 images didn't make for very much variety, so perhaps 100 images or so? I looked through a couple of WM girl packs to try adding a few more of those over into the alpha, but they all had only around 30-50 images on average.

If I feel like tagging images again anytime soon, on top of trying to add more to the Maid Elf and XP-tan folders, I was thinking about grabbing a bunch of random FFXI Mithra and FFXIV Miqo'te images to make a generic 'rchars' Catgirls set, since the alpha has that unused Cat Girl trait. It can also help to expand on the idea so we can add more 'animal-eared' / themed girls like the Neko Para girls, or the various girls from Dog Days.

And at the least, if you guys don't significantly change the tagging system anytime soon, they should work right away in the beta as well.

I'll grab the new combined Naruto pack you have and see if it cuts down any of the work I'd have to do. Is it still '18.rar'? The 'old' combined pack you linked was '24.rar' so I'm not sure if you rolled that back into 18 or not. I suppose that also means the 'Sakura patch' was for Naruto's Sakura, and not Fate/Stay's Sakura.

Right now I'm looking into either a bug, or an oversight in the original alpha code for girl generation when you guys were adding traits. I managed to produce a situation (by forcing a girl to take every negative trait at once) to have a girl appear with -85 / -85 character, 0 / -15 refinement and 0 / -10 magic, which is amusing, but probably unexpectedly game-breaking as I don't believe any of the other code has any scenarios meant to handle negative numbers. I'm hoping that this would be looked into/addressed if it hasn't already in the beta.

Looking through the code quickly, it appears that you had this code for adding traits onto unique girls (similar check not present in the code for 'rGirl' generation:)
Code: [Select]
            for key in trait.max:
                if key in self.stats.max:
                    self.stats.max[key] += trait.max[key]
                else:
                    raise Error, 'Trait (%s) tried to modify maximum of non-existent stats: %s'%(trait.id, key)

            for key in trait.min:
                # Preventing traits from messing up minimums of stats by pushing them into negative territory.
                if (self.stats.min[key] + trait.min[key]) >= 0:
                    self.stats.min[key] += trait.min[key]

Think it should be relatively simple to add a condition to check if both 'min' and 'max' would become negative before applying it. I'm not entirely sure if the 'straight' modification (the ones that do not change min or max values of a stat) would still go through, though. If so you'd then end up with -85 / 0 instead. The simplest way would be to go through a final check right before girl generation, loop through all of its stats, and change any value that is out of bounds with the set min and max values after traits have all gone through.

Edit:
Attached a couple screenshots as an example.
I made sure to run it on both a unique girl and a random slime girl (I have slimes with the lowest stats generally, though their tradeoff is much higher starting constitution -- I actually noticed this with a random unlucky roll of a slime girl slave) to check if it affected only one or the other. Turns out it does impact both, with both of them having negative maximums. The slime girl also somehow has 40 / 35 Joy -- higher than the maximum value.

I also kind of standardized the trait descriptions a bit since the last time I posted about them.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: Xela on October 10, 2017, 01:28:18 AM
Quote
That said, what would be a good or 'recommended' amount of images to make a pack? I felt like even having around 50 images didn't make for very much variety, so perhaps 100 images or so? I looked through a couple of WM girl packs to try adding a few more of those over into the alpha, but they all had only around 30-50 images on average.

It's less about the number of images and more about the variety I suppose. Most important tags gotta be covered for fully playable characters.

Quote
Right now I'm looking into either a bug

I don't believe it can go below 0 in the modern version. That said, the idea is that a modder knows what (s)he're doing, characters with all the negative traits will not be any fun or if any use in the game.
Title: Re: Fun game, but I seem to have some issues with it..
Post by: DarkTl on October 10, 2017, 11:22:00 AM
With regard to the Arcana Heart minor girls, I kind of figured it was at least a 'work in progress' if not a test considering how few images they had in their folders. I'll continue to hold off on adding them as 'regular' girls into the alpha for now, unless I get curious.
It's not like I made Arcana Heart packs small intentionally though, I never do it. I always add all good pictures I can find  :)
They simply don't have any more, so we don't have a choice but treat them as minor characters.

That said, what would be a good or 'recommended' amount of images to make a pack? I felt like even having around 50 images didn't make for very much variety, so perhaps 100 images or so?
I think about 50 is absolute minimum. Any lower, and you might as well threat the character as a minor one. Ideally at least 100-200, depending on the character.

As for max values, logical limit is 65535 pictures, but too huge packs may work slow. Because when we want to show an image, we look for a suitable one in the whole pack. So 100-200 pictures, or at very least no more than 1000 is the best.

Cat Girl trait
Currently it's replaced by more generic Furry trait, since we don't have any cats packs. But of course adding it again is super easy if we'll have cat packs one day.

And at the least, if you guys don't significantly change the tagging system anytime soon, they should work right away in the beta as well.
Without a doubt we will change json data files format many times, but we will never change the tags format anymore.
Or, rather, we can add additional tags for entirely new types of pictures if people will ask for it (like adding a tag for tentacles pictures), but already existing tags and image types are set in stone.

The slime girl also somehow has 40 / 35 Joy -- higher than the maximum value.
Yeap, we have a (rare) ring in the current version which gives +50 to min joy and -50 to max joy, thus freezing the stat at 50 as long as the ring is equipped. But the thing is, we have more than one ring slot, so it's possible to equip more, breaking stats logic.
In such cases, when min > max, we force the stat to be 0/0 until player resolves the issue. But this special logic did not exist in the alpha.

Is it still '18.rar'? The 'old' combined pack you linked was '24.rar'
Yeap, I replaced 18.rar. Gonna delete 24.rar soon, since it's older.

I also kind of standardized the trait descriptions a bit since the last time I posted about them.
I made a help window for traits. Would be cool to show info next to description like you do, but in the current version some traits have so many modificators there is not enough space for them all.