The Unit Testing Slog
Added 2021-04-23 07:55:58 +0000 UTCA bit of a dull update to give today, but I've been busy writing unit tests and have made good progress through the LR2 code base. As of this moment I've written 89 test cases, which cover the major game classes like Person, MainCharacter, and Clothing. Next up I'm working through the smaller classes, but those should be faster to move through.
Writing these tests isn't particularly exciting, but is has already started to pay off. I've uncovered a number of bugs related to changing stats being incorrectly manipulated that would have been very hard to notice otherwise.
Once I am finished writing a solid suite of unit test I am going to move onto coding some integration tests for more complex LR2 systems. These integration tests will run through processes like designing a serum, entering the sex system, setting up an outfit to ensure there are no critical bugs in these areas that would block progress. The tests will require interaction with the Ren'py UI, so they won't be fully automated. They will be much faster than starting a new game and navigating around normally, and most importantly they will provide much more consistent testing before a release.
This update is shaping up to be entirely focused on testing and stability, but future development should be faster and more maintainable as a result!
Comments
Thanks for these and all previous reports, they've all been fixed up!
Vren
2021-05-01 08:22:38 +0000 UTCAnother easy to miss one: game\sex_positions\against_wall.rpy line 238: $ climax_controller = ClimaxController(["Cum inside of her","pussy"],["Cum on her stomach.","body"]) I think you mean: $ climax_controller = ClimaxController(["Cum inside of her.","pussy"],["Cum on her stomach.","body"]) The difference is the full stop missing from the end of 'Cum insider of her'. This type of error is definitely responsible for some of the reports of orgasms not firing so it might be worth checking the other sex_position outros to make sure what is sent to the controller matches the if statements following it.
2021-04-27 08:36:14 +0000 UTCI thought someone else flagged this one earlier but I couldn't find it in the last few posts so: In \game\game_roles\role_sister.rpy Line 677 reads: strip_list = the_person.get_half_off_to_tits_list() you probably want: the_person.outfit.get_half_off_to_tits_list() get_half_off_to_tits_list() is an outfit property, not a person property. Currently will error if you try to help her take topless shots.
2021-04-27 07:30:33 +0000 UTCI've seen a few people mentioning issues with Insta/dikdok/Only Fans and I've finally had a chance to check a few things. Clearly there's a lot you still intend to do and its entirely possible that some of what I've picked up below are intentional switches to keep uses away from incomplete content (I mean none of the girls will actually generate onlyfanatics accounts right now). Still most look like bugs to me. in \game_roles\role_insta.rpy line 262: Says "She gives you her OnlyFanatics name." but it doesn't set the account visibility. You probably want "$ the_person.event_triggers_dict["onlyfans_known"] = True" on the following line or their account will never be visible on the phone. Line 362-364: This block of text involves her giving you her onlyfanatics account details if she's accepted a special request. The problem is it never checks if she actually /has/ an onlyfanatics (the_choice only checks if she did the special request) so the non-existant account will never show. So you probably want to put this whole block in a 'if the_person.has_role(onlyfans_role) and not the_person.event_triggers_dict.get("onlyfans_known", False):' In \game_roles\roles_onlyfans.rpy Line 61: Says "if the_person.event_triggers_dict.get("onlyfans_subscription_valid_until", 0) < day" but you probably meant '>=' As it stands this event can never fire because the item before it has the same condition as if you don't have a subscription and so you get picked up by the 'would you like to subscribe' and either change the value so it doesn't fire or get passed back to the parent. In chat_actions.rpy: line 503-506 Here a character follows small talk by sharing their instapics account. Again the problem is they never actually share it. After line 506 (out of the 'if is_phone' but still in 'the_person.love >10...' ect) you probably want $ the_person.event_triggers_dict["insta_known"] = True This ones more a phone system bug: in game\internet.rpy line 288 the 'return return_to_phone' is one tab too many indented (frankly its a miracle you have so few of this type of error considering its python). As is, if you try to phone flirt with someone in the room with you it plays correctly but then tries to flow into label view_twatch(the_person) and throws an error. I think that's more than enough from me for one day. Hope this all helps.
2021-04-24 01:54:07 +0000 UTCwill there be some sort of stat or notification on the information page that will say if the girl is pregnant or not
DREWSKY
2021-04-24 01:40:43 +0000 UTCWhile you're in the mood to tweak things - I've noticed that boosting your stamina presently doesn't actually help much. Since you're still limited to getting back 20/30 stamina per action (and 80 overnight), all it really lets you do is basically waste a day and then double up the next. Which isn't useless, but it doesn't seem to really reflect the idea that you can do more if you have to, effectively, do less in order to activate it. It would be nice if your stamina rate increased by the same proportion (so if you have a stamina max of 120, you get back 1.2 * 20 = 24 stamina, or 36 for a wait action), or something similar There is also still a bug that your unit tests might help track down - for girls that have situational sluttiness penalties (family members are the obvious case, but Love penalties are another), when you go to change position, it might show something as Green (i.e. totally no problem) but when you actually go to attempt that action, she'll refuse outright. I presume this is because when it displays the positions it doesn't take this situational penalty into account - and very arguably it should do so. Similarly, it's possible to have a girl willing to let you grope her to enter the sex menu, only to immediately get kicked out of it. (This is easiest to see early in the game with Gabrielle). Again, I presume this is because the Grope Her action isn't taking situational penalties into account. Something that a unit test might help isolate. :)
GAZZA
2021-04-23 13:15:21 +0000 UTCAwesome update, great to hear about the wins already coming from it!
Mr. X
2021-04-23 11:01:44 +0000 UTCGood direction. Solid foundation is critical.
Adam Król
2021-04-23 09:17:07 +0000 UTCJust wanted to let you know I appreciate these sorts of updates, and the work you're putting into this sort of thing :)
SomebodyElse
2021-04-23 08:11:36 +0000 UTC