Pink Petal Games

PyTFall => PyTFall: Game design => Topic started by: Xela on May 03, 2013, 04:38:58 AM

Title: <-- Archived -->
Post by: Xela on May 03, 2013, 04:38:58 AM
Next Day Concept:

This is basically logical chain of events that activates as you end every day. It important to know the order to work on job concepts.

- Jobs activate in per brothel that you own in the following order:

1) Strippers
2) First round of Service Girls (Bar, Lounge, Clean)
3) Prostitutes
4) Second round of Service Girl (Clean)
5) Rest

6) Brothel Report is generated


- School

1) Learning report per girl
2) School report

- Girls
1) Personal girls reports for each girl in your service.

- Day += 1

- Girls not yet in your service city location are being determined.

----------------------------------------------------------------------------------------------
Basically, this will be expanded many times but the order is important to understand jobs and the game even now.


Interface:

Next Day interface is prolly the ugliest in the game right now as I've put no thought into it at all. Future plans include redesign and filters for reports.


Ideas:

-
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 03, 2013, 04:39:13 AM
Prostitute Job:

Base Cost: 1 AP

Logical progression:

- Checks for refusals:

Refuses on:

# Health < 60
# Fatugue > 260 Currently rather poorly programmed, should be max fatigue - 40 and max health - 40.
# Girl rank is 3 levels below clients caste (Client refuses)
# Clients caste is 3 levels below girls rank (Free girl refuses, slave gets joy penalty)
# Wrong occupation
= Refuses if girl is free but not prostitute and disposition is below 900, huge disposition hit.
= Agrees even if not prostitute but disposition is above 900 but gets a random disposition penalty.

- Acts

=Here a wage is determined by a number of factors.
=That wage is modified by how well strippers performed (if there was a performance)

=Event intervention before acts start

If client wants to attack girl, here is where it happens.

Acts:
Sex
Anal
Blowjob
Lesbian

All have similar structure:

= Check for relevant skills (normalsex and charisma for Sex Act as an example) Currently that has effect on experience/joy of a girl and texts.
= Past that there is a small chance of increase of normalsex, constitution and increase of fatigue. If she did learn something, additional +1 to joy.

- Last is the dirt increase.
=====================================================================

Strip Job

This is a very important one because a lot depends on it. Strippers only earn tips and require you to pay them daily wage (Prostitutes work a complex system as well but it's not a part of a job but a part of girl design).

Base AP = 3

- Refusals
# Health < 60
# Fatugue > 260 Currently rather poorly programmed, should be max fatigue - 40 and max health - 40.
# Girl rank is 3 levels below clients caste (Client refuses)
# Clients caste is 3 levels below girls rank (Free girl refuses, slave gets joy penalty)
# Wrong occupation
= Refuses if girl is free but not prostitute/stripper and disposition is below 900, huge disposition hit.
= Agrees even if not prostitute but disposition/stripper is above 900.

- AP Check
If girl has less than 3 AP, she can still do some good like:

= Go out in the club to chat with costumers
= Train her strip skillz
= Take a little break

all with it's own bonuses/penalties.

- Clients (that came to see the girl strip is calculated, girls fame being the main factor.)

- Relays (That info is being relayed to Bar and Sex jobs) (We assume that many clients come to see several girls perform one after another)

- Skill checks
Tip payout and joy depends on skillz as well as texts.
Stripresults variable from the Relay is also effected.

- Stat mods:
Experience, reputation, fame, agility, fatigue, charisma and stripskill are all modded/have chance of being modded.

- Brothel dirt is last.

Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 03, 2013, 04:39:26 AM
Rest Job

Base AP = Full amount

- Stat Mods
Health
Fatigue
MP

As well as joy + libido

Extra Fatigue decrease if garden.

- Trait triggered events proposed by Dark follow.
Normal text is added if none of the events is triggered.
----------------------------------------------------------------------------------------------

Service job

Base AP = Determined by relay from Next Day.

- Refusals
Health
Fatigue
Wrong occupations

- Relay from Strip Job
This is possibly one of the most important parts. Since Strip job doesn't really pay anything, this is where the income comes from (Meaning that having Strippers work by themselves is close to retarded and Lounge without strippers is likely to cost you more than it can possibly raise. Bar by itself might be profitable, that needs to be tested)

- Task choice
Game will choose a task for Service girl.
There are two rounds, Lounge and Bar are obviously a priority during the first round, some cleaning might happen if there are no clients left to serve. There is 1% chance that girl will choose to clean even if there is work to be done in Bar/Lounge, I don't recall what's the point (prolly me being drunk while coding that bit)

- Tasks

= Bar

Brawl intervention (Fight starts if your security fails to prevent that)

There is an amount of clients that go through the Bar each day, each girl working the bar can clear a number of clients depending on her stats (service/agility and AP).
Girl that clears last costumers also gets a small break, texts report that no costumers in the bar remain.

- Bar Income
Determined by a number of factors like amount of clients girl has served, AP she has spent and stats (charisma/refinement/service)

- Skill checks
Service Skill effects:
Income
Reputation of the brothel
Texts

Charisma effects:
Fame of girl and brothel.

- Stat Mods

Service, refinement might be modded. Fatigue and experience I forgot :( This needs improvement.

Brothel dirt is modded last.


= Club

Same rules as for bar job apply (you better have some decent strippers)

- Income
Depends on amount of clients served, AP spent and stats (Agility, charisma, service)

- Skill checks:
Service skill:
Reputation of brothel
Income
Texts

Charisma skill:
Fame of girl/brothel + texts.

- Stat mods
Fatigue, service, agility. (Forgot exp :()

Brothel dirt last.


Cleaning Job

This one is simple :)

- Effect
Determined by AP from relay combined with stats (Service and Agility)

Girl that finishes cleaning the building gets a break! Texts reflects that. Whole second round of service job is basically leaning until there are no girls left of building is spotless.

- Stat Mods
Fatigue, exp, service skill.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 03, 2013, 04:39:37 AM
Guard Job


This one is a bit harder than cleaning :)

In itself, it is basically a report of girls day as a guard, but now that I look back at it, better idea is to combine this with girl's next_day report in girl's own class so I am not going to describe the method itself for now. Crap like this apparently happens when you work without a plan  :-[


Interventions:

During Whore job:

Activates on client having "Aggressive" trait (Might be activated on any amount of events, this is temporary)

- Check if there active/fit/fresh guards on duty.
- Adding the hero to the mix if he has enough AP/HP left. Hero will have 'location' in his own screen, location must be set to the brothel where this happens.

- IF there are any guards: Right now ALL guards in the building respond to any assault.

First Option:
The total wealth of guards combined battlestats is overwhelming and clients just gives up, pays a decent amount of fees for the trouble and leaves unharmed.
Girls have a very small chance of increasing attack, defense, agility.
Better chance to increase intelligence.
Small exp gain.
Either loose 1 AP or do not loose any AP at all.

Second Option:
Client fights your party not being to impressed with your setup.

Battle is being resolved by comparing stats of your party vs the client with factor of luck involved.

If your party wins:
80% of chance of client paying up a VERY decent sum of cash.
20% of client being a broke bastard and being turned over to the authorities.

In either case every member of your party stands a chance of:

Decent increases to:
exp, attack, defense, agility, magic, intelligence.

Small hit on health, average increase to fatigue and - 1 or 2 APs.

Other two options are defeat and overwhelming defeat:

Difference is that if you were simply defeated:

Small chance of increase in battlestats.
- 2 AP.
Good hit on health, but not to serious.
Good amount of fatigue gained.

If your party got your ass handed to you:
- 3 AP
No chance to increase stats
Huge hit on Health
Girl gets hurt as well (but never beaten badly if you had any form of active security!)

Ok, now in case there was NOONE to defend the girl:

If girl has any of the following traits: ["Broken Will", "Shy", "Meek", "Nerd", "Kind", "Mind Fucked"]
She just gets raped and beaten.

If girl has any of the following traits: ['Fighter', 'Assasin', 'Fearless', 'Aggressive', 'Tsundere', 'Malicious', "Strong"]
Free girl will try to fight the costumer.


If girl has any of the following traits: ["Abnormally Large Boobs", "Big Boobs", "Elegant", "Long Legs", "Great Arse", "Sexy Air", "Great Figure"]
Has 80% of chance in seducing the client and go business as usual.

If girl has any of the following traits: ["Smart", "Genius"]
Has 50% to calm the client down.

Otherwise:
Beats and rapes your girl but leaves some money to cover the expenses.


Plans for Bar is roughly the same but Service girl would try to calm costumers down first and call for guards next. Also in bar you're likely to face more than one client.
Plans for Club is also roughly the same but even more clients than in bar.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 03, 2013, 04:39:48 AM
Reserved
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 03, 2013, 06:19:55 AM
So, at which stage exactly temporary traits, effects, misc items temp fields, etc. get -1 day?
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 03, 2013, 06:33:53 AM
So, at which stage exactly temporary traits, effects, misc items temp fields, etc. get -1 day?

Here:

- Girls
1) Personal girls reports for each girl in your service.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 03, 2013, 10:21:50 AM
This is useful, I found a good deal of holes in the code :)

+ someone may find it interesting to design game elements in the future!

I am done with concepts for tonight, going to write some code.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 03, 2013, 12:16:33 PM
If girl has any of the following traits: ["Smart", "Genius"]
Has 50% to calm the client down.
I think you forget Charismatic here.

Besides, I remember those great situations in wm when customer doesn't have enough money to pay for girl's service, and then you'll get his wife/daughters in brothel as random characters. I know we don't have them yet (too bad), but the idea of insolvency is interesting.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 03, 2013, 12:53:01 PM
I think you forget Charismatic here.

I'll add it right now.

Besides, I remember those great situations in wm when customer doesn't have enough money to pay for girl's service, and then you'll get his wife/daughters in brothel as random characters. I know we don't have them yet (too bad), but the idea of insolvency is interesting.

All of the elements in the game were poorly designed, because I tried to have them mimic original SimBrothel first, SimBro 1X second and WM third... This is mainly the reason I want to lay out and redesign all concepts and design everything before I code it in the future.

Costumers actually have gold just like player and girls, it is simply not being used by the game right now. Currently it is assumed that clients have infinite gold. Insolvency can still be achieved by throwing dice.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 04, 2013, 02:22:27 PM
First of all, there is 5% chance for a group of customers. It means a group scene and, if they want to attack, a group of enemies. I know we don't have a group sex yet, but we do have customers attacks, so...

Looks like customer's money depends on customer's class (and that's depending on percentage of poor, middle class and rich people in the town). Then the game calculates services cost depending on girl's stats and compares these two values. Nothing new here.

If you don't want to code all this yet, it can wait. But please let's avoid crutches like simple dice throwing.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 04, 2013, 02:49:45 PM
First of all, there is 5% chance for a group of customers. It means a group scene and, if they want to attack, a group of enemies. I know we don't have a group sex yet, but we do have customers attacks, so...

Looks like customer's money depends on customer's class (and that's depending on percentage of poor, middle class and rich people in the town). Then the game calculates services cost depending on girl's stats and compares these two values. Nothing new here.

If you don't want to code all this yet, it can wait. But please let's avoid crutches like simple dice throwing.

Costumers in PyTFall already have classes and money based on those classes.
PyTFall also already has services cost calculations depending on a whole mess of factors I cannot even recall at the moment.

But I am going to use crutches until we figure out solid economics for the game like:

- Prices for buildings
- Price for a fix (drug)
- Price for a fuck with a cheap slut
- Price for a fuck with a decent slut
- Price for a fuck with a really good prostitute
- Price for a fuck with a courtesan
- Price for a fuck with a noble girl
- Price for some basic items and upgrades
- Price for slave's upkeep
- Wages for free girls
- Prices for Education
- Prices for Slaves

I am basically pulling prices out of my ass right now, but game actually seems to be more or less balanced already. Crutches are good for creating a game flow for testing and developing purposes. After we get a bit further with the design something like:

dice(15):
    code

can be easily changed to:
if client.gold < chr.getWPrice():
    code

So plan is to do it right in the end :)
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: FlamBurger on May 04, 2013, 03:00:37 PM
Yes there's nothing wrong for a game to use crutches. Especially a game so new like this one.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: CherryWood on May 27, 2013, 01:28:06 AM
Sometimes brothels have customers who don't came primary for action and want more just to have a nice girl company as a stress relief. There can be standard service in it, but it's more about talking, lots of cuddling, bath together...etc.
Maybe we could have something like that?


Because these customers want a private time, I believe it's a job for prostitute and not part of service girl job, and also Prostitutes could use a chance to actually use stats like intelligence somewhere :)
This should take more AP then usual customer. (they pay and stay for longer time)
These customers are usually rich so it could happen mostly only in brothels with better location. (and not often)
We could use a nude image category for that so H wont get short.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 27, 2013, 02:37:01 AM
Sometimes brothels have customers who don't came primary for action and want more just to have a nice girl company as a stress relief. There can be standard service in it, but it's more about talking, lots of cuddling, bath together...etc.
Maybe we could have something like that?


Because these customers want a private time, I believe it's a job for prostitute and not part of service girl job, and also Prostitutes could use a chance to actually use stats like intelligence somewhere :)
This should take more AP then usual customer. (they pay and stay for longer time)
These customers are usually rich so it could happen mostly only in brothels with better location. (and not often)
We could use a nude image category for that so H wont get short.

Maybe, I don't fancy coding in yet another job, but we can do that.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: CherryWood on May 27, 2013, 03:08:04 AM
Maybe, I don't fancy coding in yet another job, but we can do that.
I was imagining it as just another option to current oral/sex/lesb choice, with lesser chance to happen and using different stats to calculate price.
but you have a lots planned already and it wouldn't add much, so it can wait for sure, it was just a random idea anyway
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 27, 2013, 03:14:17 AM
I was imagining it as just another option to current oral/sex/lesb choice, with lesser chance to happen and using different stats to calculate price.
but you have a lots planned already and it wouldn't add much, so it can wait for sure, it was just a random idea anyway

Well, I'll think about it, it just sounds a bit clumsy. After we make some decisions on Brothel upgrades, I'll be coding that in. For now if I get time to code this week, I'll finish the damn security job (debugging mostly).

Otherwise I'll start putting in a lot more time into the project in two weeks (planning to work 3 hours/per day if not more).
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 27, 2013, 03:15:14 AM
Because these customers want a private time, I believe it's a job for prostitute and not part of service girl job, and also Prostitutes could use a chance to actually use stats like intelligence somewhere
Good point. If I remember correctly, casino was the only job in wm based on intelligence. We have to come up with more.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 27, 2013, 05:01:35 AM
Good point. If I remember correctly, casino was the only job in wm based on intelligence. We have to come up with more.

Maybe teaching job at the school when a girl has decent stats?
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: fires_flair on May 27, 2013, 06:32:14 PM
Sometimes brothels have customers who don't came primary for action and want more just to have a nice girl company as a stress relief. There can be standard service in it, but it's more about talking, lots of cuddling, bath together...etc.
Maybe we could have something like that?


Because these customers want a private time, I believe it's a job for prostitute and not part of service girl job, and also Prostitutes could use a chance to actually use stats like intelligence somewhere :)
This should take more AP then usual customer. (they pay and stay for longer time)
These customers are usually rich so it could happen mostly only in brothels with better location. (and not often)
We could use a nude image category for that so H wont get short.
I can think of many reasons some one could end up heading to a prostitute for talking, of any rank. So I think this would be something that could be done at any brothel, maybe with the fame increasing the chance for occurrence. (learning about sex, going for sex (but being unable to preform), "cop" looking for information, and though unlikely courting the slave).
if you don't add this in, it could still used for some awesome dialogue.
Maybe teaching job at the school when a girl has decent stats?
I would have thought matrons would need intelligence to help the girls, or advertising (besides charm). (well okay, I would say most jobs, besides any implied intelligence from the other skills).
what about a herbalist or what ever title, some one who would brew 'tonics' and stuff to heal, make the girls happy (supply them with drugs if they get hooked).
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 28, 2013, 03:54:10 AM
I wonder if the game actually will have matrons in the first place.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 28, 2013, 04:02:42 AM
I would have thought matrons would need intelligence to help the girls, or advertising (besides charm). (well okay, I would say most jobs, besides any implied intelligence from the other skills).
what about a herbalist or what ever title, some one who would brew 'tonics' and stuff to heal, make the girls happy (supply them with drugs if they get hooked).

We've decided against girls doing advertising for the first version. Potion brewing is also not on the list.

Matron on the other hand could be useful. I want girls to manage themselves (unless retarded/mind broken) but matron can add many useful bonuses depending on her own occupation and intelligence can be one of the key stats in her effectiveness.


I wonder if the game actually will have matrons in the first place.

I figure we should add them. May come useful if we ever send hero on some long term exploration adventure or something and they can just improve girls performance.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 28, 2013, 04:29:01 AM
Maybe teaching job at the school when a girl has decent stats?
The thing is, we already have schools for girls. If we assume that any yours girl with good stats could be a teacher, why pay for school?
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 28, 2013, 04:38:56 AM
The thing is, we already have schools for girls. If we assume that any yours girl with good stats could be a teacher, why pay for school?

Odd question... School is not just about teachers, it's tradition, textbooks, equipment, socializing and proper setting/location. I don't actually mind girls learning from girls with better stats while resting or going about their business when not at work (Handled by Next Day methods) but you'll have to agree that question itself was pretty odd.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 28, 2013, 04:47:46 AM
Nope. Irl you need at least higher education with course of pedagogics to teach in any educational institution, if not pure pedagogical education. That's why you theoretically can't send any girl to work in school just because she has high intelligence.
Girls learning from girls during Next Day depending on intelligence is another story.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 28, 2013, 04:57:51 AM
Nope. Irl you need at least higher education with course of pedagogics to teach in any educational institution, if not pure pedagogical education. That's why you theoretically can't send any girl to work in school just because she has high intelligence.
Girls learning from girls during Next Day depending on intelligence is another story.


Well, they are not teaching particle physics, experience and intelligence along with decent stats and checked vs traits should be enough in our case. If this bothers you, we can skip teaching job and use intelligence in other places, to me this seemed like a good option.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 28, 2013, 05:10:10 AM
Not necessarily.
My point is, all other jobs are located in the brothel. So it's up to MC to decide whether a character is suitable or not for job.
But teaching job is located in some school, so it's NOT up to MC to decide it, it's up to school owner. Paid course of pedagogics for the girl, good connections, plain bribe, exceptionally good stats, etc. could be used for persuasion.
Same for any other job outside brothels.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 28, 2013, 05:13:31 AM
Not necessarily.
My point is, all other jobs are located in the brothel. So it's up to MC to decide whether a character is suitable or not for job.
But teaching job is located in some school, so it's NOT up to MC to decide it, it's up to school owner. Paid course of pedagogics for the girl, good connections, plain bribe, exceptionally good stats, etc. could be used for persuasion.
Same for any other job outside brothels.

Blah, it's obvious that a certain amount of reputation and relevant stats would be required :)
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 28, 2013, 07:30:59 AM
Some thoughts about the next day screen.
First of all, it probably should be customizable. Some players want to see every stat change, some don't.
Next is colors for stats and their change like in brothels.im. Looks pretty handy to me, but if you have a better system in mind, then forget about it.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 28, 2013, 09:06:27 AM
Some thoughts about the next day screen.
First of all, it probably should be customizable. Some players want to see every stat change, some don't.
Next is colors for stats and their change like in brothels.im. Looks pretty handy to me, but if you have a better system in mind, then forget about it.

BrothelS.im has a very simple system, we have to many stats to meaningfully colorcode them all. Best we could do is to colorcode increases and decreases.

Maybe we show detailed stats when player is in the brothel or matron is in place. Maybe the same thing for finances or something?
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 28, 2013, 10:10:07 AM
Well, we could use several levels of detalisation, if you want to. The more matrons you have, the more details you could see at next day screen.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 28, 2013, 10:17:26 AM
Well, we could use several levels of detalisation, if you want to. The more matrons you have, the more details you could see at next day screen.

LoL

On an off chance that wasn't a joke: it's an overkill :)
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 28, 2013, 10:36:48 AM
 I propose several, let's call it, screens, every of which could be turn on and off anytime.
1. Job's efficiency. How well girls do their job, how customers like it, where and how girls spend their free time etc. I mean all those texts the game shows now at every turn.
2. Important events. Customers attacks, gaining/losing traits, death, low health, etc.
3. Stats.
4. Battle. When we'll have arena and dungeons, results of fights and dungeon crawling will be here.

You could add more tweaks if you want to: which stats to show, which jobs to show, which events to show.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 28, 2013, 10:43:32 AM
I propose several, let's call it, screens, every of which could be turn on and off anytime.
1. Job's efficiency. How well girls do their job, how customers like it, where and how girls spend their free time etc. I mean all those texts the game shows now at every turn.
2. Important events. Customers attacks, gaining/losing traits, death, low health, etc.
3. Stats.
4. Battle. When we'll have arena and dungeons, results of fights and dungeon crawling will be here.

You could add more tweaks if you want to: which stats to show, which jobs to show, which events to show.

Battle is a report like any other so it is 1. not 4.

Important events... yeah maybe, I'll have to take another look at jobs code (they are already huge and prolly have to become even bigger).

Stats, well having a separate stat window showing what's up if there is a manager in the building is a good idea. So that we should add to the next day screen concept when we get around to it.



==========================================
Otherwise: I am pleased to say that guard job has been partially debugged and there are already some results :)
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on May 28, 2013, 12:33:15 PM
Battle is a report like any other so it is 1. not 4.
Ok, then let's call it a trophies screen. When your girls have found some items or captured a monster girl, you would know about it immediately.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on May 28, 2013, 01:02:59 PM
Ok, then let's call it a trophies screen. When your girls have found some items or captured a monster girl, you would know about it immediately.

Ok, I'll try to remember it for when I design the Next day screen.


=====================================================
Actually managed to do some coding today:

- Wrapped a message screen that can be used throughout the game in screen command cycle. Game will now throw warnings if player tries to use brothel area effect consumable on a character that is not in any brothel, when player tries to get no-warrior class girl to do guard-duty and old warning when players tries to send slave to do warrior class. Guard job will never appear to slaves.

- Fixed some bugs in guard code.

- Did some bugfixes here and there.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 01, 2013, 10:29:22 AM
Ok guys, stay sharp :)

While clearing out bad/outdated code/adding small features and so on, we need to stay on top of writing out concepts:

I'll summarize what's done on jobs front already:

We currently have 5 jobs:

- Whore (with 4 sec acts)
- Stripper
- Service girl (generalization, takes care of bar tending, waitressing and cleaner)
- Rest
- Guard (More of an interception of bad events during other jobs than an actual job in it's own right (codewise))


I'll explain how jobs currently work:

Whore:

1) Refusals:
- If girl is to tired (should be max fatigue - 20)
- If girl is to badly injured (health below 60)
- Client caste/girls rank mismatch (if they are 3 levels apart)

Notes here:
Slaves do not refuse but get a -3 joy penalty instead. Clients will reject any low level whore and free girls will reject deadbeat clients.

- Wrong occupation:

Slaves will always obey.
Free girls will who are not prostitutes will tell you to f$ck off and -50 disposition penalty.
Last, if any free girl's disposition is above 900, she will do the job BUT there will still be a disposition penalty between 10 and 20 point.

2) Acts

- First price is decided, currently it is assumed that costumers have unlimited gold.
- Price is modded on basis of costumer satisfaction created while they're watching strippers perform. System work but I will improve it and make it more intuitive and easier to understand.

3) Event interactions:

...Currently only guard event:

If there are guards:

- It's activated on pure chance but I'll improve that in the future (need ideas here).
- There can be only 3 attacks per day in order not to make it absurdly repetitive.
- All guards respond to any event.
- If hero's current location is brothel, he is added to the defense team as well.
- Battle stats of your party are compared to battle stats of the aggressor.
- If aggressor is overwhelmed, fight does not occur. He/She will pay you off handsomely for the trouble and leave peacefully. This may cost 0 or 1 AP to every party member and very small chance to improve stats.
Otherwise:
- Battle occurs, there are currently 3 possible outcomes for our simplified battle-function
1) Victory
If costumer looses, payoff so you wouldn't take things to far (as handing him/her to the authorities) is really good. There is 20% chance that she/he is out of money, in that case you just give him to local law (I could add options for this in the future, like kill/law/torture etc.)
2) Defeat
Decent penalties to health, fatigue, mp and -2AP for your team as well as small chance to improve battlestats.
3) Overwhelming defeat
Same thing but costumer also slaps your girl (prostitute) a little bit and a far worse hits on health, fatigue, mp and -3 AP. Also no chance of learning anything at all.


If there are no guards:

- ["Broken Will", "Shy", "Meek", "Nerd", "Kind", "Mind Fucked"]
Will take a bad beating, not resisting at all.

- ['Fighter', 'Assasin', 'Fearless', 'Aggressive', 'Tsundere', 'Malicious', "Strong"]
Oversimplified brawl (not even a real fight) occurs.
Win or loose with favorable/bad consequences.

- ["Abnormally Large Boobs", "Big Boobs", "Elegant", "Long Legs", "Great Arse", "Sexy Air", "Great Figure"]
80% chance to seduce the costumer and go business as usual, otherwise get beaten/raped.

- ["Smart", "Genius"]
50% chance to go business as usual.

Otherwise she screams but still takes the beating (large disposition penalty btw).


4) Acts:
- Sex
- Anal
- BJ
- Lesbian (25% chance for female client)

Game checks for relevant sex stat and charisma here. Rewards accordingly, chances to learn stuff and I think I may have forgot to mod brothels fame and reputation.

==============================================
Strip Job:

1) Refusals similar to whore job.

2) Extra check, Whore job takes 1 AP, Strip show 3. If she has less than 3, she either goes out in the club to entertain the crowd or practices her skillz.

3) Clients came to see the girl strip are calculated, always assumes that there are a couple just by default, otherwise it's all about fame.

4) Relays, meant to relay how pleased costumers are and how much will the drink/eat in the bar/club. Game assumes it is possible for any one client to eat and drink for a long time so number of costumers that goes through acts in bar/club can be much greater that total costumers came to the brothel (if it doesn't work like that yet, it will soon)

5) Strip and charisma are checked for different bonuses.


===========================
I'll write the rest later, gtg now..

But Ideas are welcome, always!
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on June 01, 2013, 11:15:08 AM
Well, unlimited gold is odd. Why randomise bankruptcy after victory if you might as well randomise his/her gold at the very beginning?
As for other options after victory, without random girls we cannot use the most amusing ones: taking his wife/daughter in brothel as a random girl, or if customer is female, take herself.
So I'd say let's wait until rg system will be ready.

- All guards respond to any event.
It could be randomised as well. Unless you have 2-3 upgrades for security. In that case either the game choses your party more wisely, or the player can do it.

It's activated on pure chance but I'll improve that in the future
Well, irl it would depend on cry for help, I guess. If the girl is not too overwhelmed (depending on her stats), she calls for help.
If she is unable to do it, it depends on the frequency of patrols (aka number of guards in the building) and attentiveness of other girls (but in these cases there is a possibility that you too late for actual protection, she already will be beaten, raped, etc). When we'll have a system of relations between girls, attentiveness will be easier to implement.

Acts:
- Sex
- Anal
- BJ
- Lesbian
Group and bdsm are welcomed  :)
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: rudistoned on June 01, 2013, 12:12:31 PM
Not sure if this is the right place to talk about it, but here it goes...

Jobs should be implemented as classes, not methods of Brothel.

Why?
Debugging: Fully testing a method that is as complex as the current jobs is very difficult. Even if we don't care about testing, some codepaths will be very rare and only act under specific circumstances. Bugs in those paths will be hard to find and hard to recreate.

Readability: The current implementation is hard to read, making it harder for new developers, or current developers revisiting their code, to understand, modify and improve upon it. Furthermore, if you want to improve only a certain aspect of the code, you always have to read code that is not involved in the aspect you are working on currently.

Style: AFAIK, a python method should perform a task that can be reasonably describted in a single sentence, preferably of 72 characters or less.


If jobs were classes, we could split up the logic into several methods of the class, making the code easier to read, debug, maintain and improve upon.

Here is an incomplete draft of a class for the whore job that might give you an idea how such a class could look like.
Code: [Select]
    class WhoreJob(object):
        def __init__(self, girl, brothel):       
            self.girl = girl
            self.brothel = brothel
           
        def do(self, client):
            '''Performs the job.
            '''
            girl = self.girl
            evt = JobEvent(self.brothel.id, self.girl)
            slave = girl.status == 'slave'
            prostitute = girl.occupation == 'Prostitute'
            stripper = girl.occupation == 'Stripper'
           
            ######### Refusals #########
           
            if girl.health < 60: # Injured
                evt = self.injured()
            elif girl.fatigue > 260: # To Tired 
                evt = self.tired()
            elif girl.rank < client.rank - 2: # Caste\Rank missmatches
                evt = self.girl_rank_to_low()
            elif client.rank < girl.rank - 2 and not slave:
                evt = self.client_rank_to_low()
            elif not prostitute and girl.disposition < 900: # girl is no prostitute
                evt = self.no_prostitute()
            return evt
               
            ######### Modifiers #########   
            # slave girl serves client of low rank
            if client.rank < girl.rank - 2 and slave:
                girl.joy -= 3
            # no prostitute...
            if not prostitute:
                # ...but slave   
                if slave:
                    evt.txt += "Being a slave, she had no choice but to sell her body even if it isn't in her job description. \n"
                # ...no slave girl, but respects you to much to refuse
                elif girl.disposition > 900:
                    evt.txt += "She isn't thrilled about surrendering herself to some stranger but she respects you to much to refuse. \n "
                    evt.txt += "Reluctently and with protest she does as she's told... \n "
                    girl.disposition -= random.randint(10, 20)
            return evt 
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 01, 2013, 01:25:35 PM
Well, unlimited gold is odd. Why randomise bankruptcy after victory if you might as well randomise his/her gold at the very beginning?

That's temporary. I am only now really making the game, previously it was just prototyping the code.


As for other options after victory, without random girls we cannot use the most amusing ones: taking his wife/daughter in brothel as a random girl, or if customer is female, take herself.

That will never be implemented. Enslaving a free person will be this easy...

Maybe after we have rg, we can have his wife/client work in the brothel for a week or two.

It could be randomised as well. Unless you have 2-3 upgrades for security. In that case either the game choses your party more wisely, or the player can do it.
Well, irl it would depend on cry for help, I guess. If the girl is not too overwhelmed (depending on her stats), she calls for help.
If she is unable to do it, it depends on the frequency of patrols (aka number of guards in the building) and attentiveness of other girls (but in these cases there is a possibility that you too late for actual protection, she already will be beaten, raped, etc). When we'll have a system of relations between girls, attentiveness will be easier to implement.

We can leave a couple of guards out of the defense team if there are more than 3 than. Rest is an overkill.

Group and bdsm are welcomed  :)

We can add more acts/jobs...
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on June 01, 2013, 01:38:03 PM
That will never be implemented. Enslaving a free person will be this easy...

Maybe after we have rg, we can have his wife/client work in the brothel for a week or two.
Who said about enslaving?
As I mentioned before, dungeon and enslavement are different things. You could either break or persuade them in these two weeks, so they will continue to work for you.

We can add more acts/jobs...
We could also make them available for slaves only (when we'll have a training system for them).
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 01, 2013, 02:44:03 PM
Not sure if this is the right place to talk about it, but here it goes...

Jobs should be implemented as classes, not methods of Brothel.

Why?
Debugging: Fully testing a method that is as complex as the current jobs is very difficult. Even if we don't care about testing, some codepaths will be very rare and only act under specific circumstances. Bugs in those paths will be hard to find and hard to recreate.

Readability: The current implementation is hard to read, making it harder for new developers, or current developers revisiting their code, to understand, modify and improve upon it. Furthermore, if you want to improve only a certain aspect of the code, you always have to read code that is not involved in the aspect you are working on currently.

Style: AFAIK, a python method should perform a task that can be reasonably describted in a single sentence, preferably of 72 characters or less.


If jobs were classes, we could split up the logic into several methods of the class, making the code easier to read, debug, maintain and improve upon.

Here is an incomplete draft of a class for the whore job that might give you an idea how such a class could look like.
Code: [Select]
    class WhoreJob(object):
        def __init__(self, girl, brothel):       
            self.girl = girl
            self.brothel = brothel
           
        def do(self, client):
            '''Performs the job.
            '''
            girl = self.girl
            evt = JobEvent(self.brothel.id, self.girl)
            slave = girl.status == 'slave'
            prostitute = girl.occupation == 'Prostitute'
            stripper = girl.occupation == 'Stripper'
           
            ######### Refusals #########
           
            if girl.health < 60: # Injured
                evt = self.injured()
            elif girl.fatigue > 260: # To Tired 
                evt = self.tired()
            elif girl.rank < client.rank - 2: # Caste\Rank missmatches
                evt = self.girl_rank_to_low()
            elif client.rank < girl.rank - 2 and not slave:
                evt = self.client_rank_to_low()
            elif not prostitute and girl.disposition < 900: # girl is no prostitute
                evt = self.no_prostitute()
            return evt
               
            ######### Modifiers #########   
            # slave girl serves client of low rank
            if client.rank < girl.rank - 2 and slave:
                girl.joy -= 3
            # no prostitute...
            if not prostitute:
                # ...but slave   
                if slave:
                    evt.txt += "Being a slave, she had no choice but to sell her body even if it isn't in her job description. \n"
                # ...no slave girl, but respects you to much to refuse
                elif girl.disposition > 900:
                    evt.txt += "She isn't thrilled about surrendering herself to some stranger but she respects you to much to refuse. \n "
                    evt.txt += "Reluctently and with protest she does as she's told... \n "
                    girl.disposition -= random.randint(10, 20)
            return evt 

That would make sense, I'll think about it.


Who said about enslaving?
As I mentioned before, dungeon and enslavement are different things. You could either break or persuade them in these two weeks, so they will continue to work for you.

Fair enough...

We could also make them available for slaves only (when we'll have a training system for them).

Wouldn't make much sense. I'm stuck debugging, so other jobs descriptions would have to wait...



Anyone got any more ideas for the jobs I've described? Like traits/items modifiers, what stats they should increase and so on?
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on June 01, 2013, 04:03:59 PM
Well, these acts are rather exotic, so we could assume that they are forbidden for females by religion, morality, aliens, etc., except for slaves. This way slaves will be much more valuable for player and for the game world.
If you dislike the idea, just add them as an usual sex skills. For example, in wm there is a chance of appearance of a group of customers, and if they want to fight, they fight as a group too (at least in wm ex).

Anyone got any more ideas for the jobs I've described? Like traits/items modifiers, what stats they should increase and so on?
If a whore has a small weapon, she has better chances to defend herself. Probably. Otherwise, why use it in a first place?

And not just a whore, but any girl which could be attacked. Strippers probably couldn't, since they are mostly in plain sight, but service girls could be.

Price could be based not on strippers perform only, but on whore's traits like long legs, boobs, etc. as well. Or maybe you could add preferences system for customers. Anyway, I propose to take into consideration the appearance of whoring girls somehow. And fame too, if you didn't do it already.

Same for security. Fighters with high fame should be more threatening. Their fame could rise after victories and vice versa.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 01, 2013, 04:45:25 PM
Well, these acts are rather exotic, so we could assume that they are forbidden for females by religion, morality, aliens, etc., except for slaves. This way slaves will be much more valuable for player and for the game world.
If you dislike the idea, just add them as an usual sex skills. For example, in wm there is a chance of appearance of a group of customers, and if they want to fight, they fight as a group too (at least in wm ex).

Group fights are already there in bar and will be there in the club as well in the future.

If a whore has a small weapon, she has better chances to defend herself. Probably. Otherwise, why use it in a first place?

And not just a whore, but any girl which could be attacked. Strippers probably couldn't, since they are mostly in plain sight, but service girls could be.

Good call, that's a great idea. We should also do a penalty if large weapon is equipped. Small weapon will five extra chance of an event not happening if client gets scared of the hidden weapon (small).

Price could be based not on strippers perform only, but on whore's traits like long legs, boobs, etc. as well. Or maybe you could add preferences system for customers. Anyway, I propose to take into consideration the appearance of whoring girls somehow. And fame too, if you didn't do it already.

Same for security. Fighters with high fame should be more threatening. Their fame could rise after victories and vice versa.

Ok, I'll try to think on it. Fame for guards will be factored in, I like that. Strippers don't get payed in that way, they are costumer magnets for bar/club tasks. Everyone should get bonuses for fame, I think only strippers get that now.



==================
Didn't get any work done on the jobs cause we're still restructuring the code to be more meaningful to the new coders. Going to get some sleep.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on June 02, 2013, 02:42:41 AM
One more thing is small weapon's stats. The game already has cheap and crappy ones and expensive and quality ones.
If there will be no difference for non warriors between them, why pay more?

Strippers don't get payed in that way, they are costumer magnets for bar/club tasks.
I know. I mean whores prices.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 02, 2013, 02:55:29 AM
One more thing is small weapon's stats. The game already has cheap and crappy ones and expensive and quality ones.
If there will be no difference for non warriors between them, why pay more?

They improve attack and maybe other stats, do they not? Better chances if customer is not scared off.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on June 02, 2013, 04:29:18 AM
You mean those oversimplified brawls? So they include a comparison of stats after all?

Oh, and if there are no guards, I believe you missed Psychic and Charismatic traits for go business as usual.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 02, 2013, 07:38:48 AM
Oh, and if there are no guards, I believe you missed Psychic and Charismatic traits for go business as usual.

Ok, I'll add that.

You mean those oversimplified brawls? So they include a comparison of stats after all?

That's the only thing it includes.

Simplified for example means a more complex scenario with luck involved as well a as a number of possible outcomes (Victory/Defeat/Overwhelming Defeat). It's a separate function and can be improved to include more things like traits, items etc.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: rudistoned on June 03, 2013, 12:38:45 PM
Jobs are Events

An event is something that happens in a certain location to one or several characters there. In that sense, stripping is an event where a stripper performs for a number of clients in a brothel. In fact, many ingame scenes are events or series of events: girlmeets and interactions with girls, random encounters or other random events and probably more (travelling through town maybe?).

Treating all these scenes as events or series of events would give as a stanardized way to display these scenes (standardized interface between game logic and screens), which would reduce code complexity. Depending on how similar we can keep the differenct event types to each other, they could potentially share a lot of concepts, systems and code.

What do you think?

Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 03, 2013, 01:13:57 PM
Jobs are Events

An event is something that happens in a certain location to one or several characters there. In that sense, stripping is an event where a stripper performs for a number of clients in a brothel. In fact, many ingame scenes are events or series of events: girlmeets and interactions with girls, random encounters or other random events and probably more (travelling through town maybe?).

Treating all these scenes as events or series of events would give as a stanardized way to display these scenes (standardized interface between game logic and screens), which would reduce code complexity. Depending on how similar we can keep the differenct event types to each other, they could potentially share a lot of concepts, systems and code.

What do you think?

With other words you want to create a class Event(object) then inherit from it like JobEvent(Event), then inherit again StripperJob(JobEvent) and so on. Same for girlsmeets and interactions (Interaction(Event), DateInteraction(Interaction)) etc. etc. ?

That would go against a promise I made to myself when I've started this project: To use inheritance as little as possible.

I want every game element to be truly unique, even if it requires more code and inheritance gets in the way because it's just so damn useful and allows to create new game elements faster (but more similar to one another).

Also, it is prolly easier to create girlsmeets and interactions in RenPy rather than in pure Python anyway.

I will try to rewrite one of the jobs as a class this week (will have VERY little time for coding, and None tomorrow or the day after) and see if it looks better/is more convenient (which it prolly is). Otherwise I feel like we're entering into a 'daisystikes' loop where we try to improve code that already works flawlessly to improve readability and make it look more professional instead of adding new things to the game...
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: rudistoned on June 03, 2013, 06:22:46 PM
Well inheritance would obviously be good choice to implement this, but it is not necessary. At the core of my proposal is the suggestion that the game logic objects for all these event-like scenes provide a common interface. With 'common interface' I mean that all of them have certain methods and attributes, e.g. an attribute called 'imgpath' that contains the path to the image of the event, or a method called 'run' that executes the game logic of the event. The common interface could also encompass constructor arguments, e.g. a location and a list of characters that participate in the event. This convention would make it easier to code screens for event-like game scenes.

Quote
I want every game element to be truly unique
I'm not sure I understand what you mean by that. If every game element is truly unique, it does not share stats with other game elements. I'm sure you don't intend to do that. If they do share stats, why shouldn't they share code to work with these stats?

Quote
Otherwise I feel like we're entering into a 'daisystikes' loop where we try to improve code that already works flawlessly to improve readability and make it look more professional instead of adding new things to the game...
I recall a post were you wrote that you rewrote the code for a job for the 5th time and it still was not working the way you wanted it to. I would not call that 'working flawlessly'. In addition, the current jobs provide very little variation in their text descriptions, so they get repetitive very fast. Don't get me wrong, you did a tremendous job in creating very specific descriptions for many different situations and I like that a lot. However, many of these situations are pretty rare, so as a player you read the same descriptions for common situations very often. As a result, I wanted to see if I could provide more variation for common situations. It took me a while to find the code for the jobs inside the brothel class and then I was faced with a big wall of rather unstructured code. Reading and understanding it was not easy and adding even more code to it would make the situation even worse. That's not 'working flawlessly', and so I proposed to turn the jobs into classes. I will be glad to help with that, but if you don't want to do it, I'm just wasting my time, so I have to ask first ;-)

I have not written new elements to the game for now because I'm still trying to understand what is already there. The existing code is not really easy to understand, you know ;-) Rewriting and documenting elements is a torough if slow way to learn what we already have and it makes it easier for others to contribute.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 03, 2013, 08:41:06 PM
Well inheritance would obviously be good choice to implement this, but it is not necessary. At the core of my proposal is the suggestion that the game logic objects for all these event-like scenes provide a common interface. With 'common interface' I mean that all of them have certain methods and attributes, e.g. an attribute called 'imgpath' that contains the path to the image of the event, or a method called 'run' that executes the game logic of the event. The common interface could also encompass constructor arguments, e.g. a location and a list of characters that participate in the event. This convention would make it easier to code screens for event-like game scenes.

Well, this would make sense for girlsmeets at least. Those are rather poorly implemented right now and I wanted girls not in service of the player to 'live a life' so to speak so they would have to be rewritten, but it's a large and complicated system that would have to be concepted first.

I'm not sure I understand what you mean by that. If every game element is truly unique, it does not share stats with other game elements. I'm sure you don't intend to do that. If they do share stats, why shouldn't they share code to work with these stats?

They can share some stats, like player and girls. Schools and brothels have close to nothing in common for example.


I recall a post were you wrote that you rewrote the code for a job for the 5th time and it still was not working the way you wanted it to. I would not call that 'working flawlessly'. In addition, the current jobs provide very little variation in their text descriptions, so they get repetitive very fast. Don't get me wrong, you did a tremendous job in creating very specific descriptions for many different situations and I like that a lot. However, many of these situations are pretty rare, so as a player you read the same descriptions for common situations very often. As a result, I wanted to see if I could provide more variation for common situations. It took me a while to find the code for the jobs inside the brothel class and then I was faced with a big wall of rather unstructured code. Reading and understanding it was not easy and adding even more code to it would make the situation even worse. That's not 'working flawlessly', and so I proposed to turn the jobs into classes. I will be glad to help with that, but if you don't want to do it, I'm just wasting my time, so I have to ask first ;-)

What I've meant by working flawlessly is that they do not crush the game and can be added to easily. I want to redo jobs myself because I wish to add to them, as well as rewrite a number of things.

I have not written new elements to the game for now because I'm still trying to understand what is already there. The existing code is not really easy to understand, you know ;-) Rewriting and documenting elements is a torough if slow way to learn what we already have and it makes it easier for others to contribute.

Fair enough :)

I gtg, will not be properly back until tonight and will be off tomorrow as well, but I'll check in from handheld device every now and then.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: mijh on June 04, 2013, 05:30:47 PM
Jobs are Events

An event is something that happens in a certain location to one or several characters there. In that sense, stripping is an event where a stripper performs for a number of clients in a brothel. In fact, many ingame scenes are events or series of events: girlmeets and interactions with girls, random encounters or other random events and probably more (travelling through town maybe?).

Treating all these scenes as events or series of events would give as a standardized way to display these scenes (standardized interface between game logic and screens), which would reduce code complexity. Depending on how similar we can keep the differenct event types to each other, they could potentially share a lot of concepts, systems and code.

What do you think?

I don't think this necessarily makes sense...

UI code is always messy, because its defining custom elements and interactions. You can see that most UI screens are quite different from eachother, and all have custom display logic for interaction.

Although there is hardly any game exploration UI or gameplay at the moment, so maybe you are talking more about that, in a similar style to what happens in a lot of SlaveMaker.

I do think the "Next Day" UI in general could be reworked, as well as the logic underneath it, because it fails to display any decent amount of text...
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: rudistoned on June 04, 2013, 06:23:07 PM
mijh, I was not talking about UI code, I was talking about game logic for event-like scenes, which I think should provide a standardized "interface" (=method names, attribute names, constructor signature) so the UI code can, for example, always use the same attribute to get a path to the event picture. It's not that important, especially if Xela really intends to not share code between game objects.

Code: [Select]
Schools and brothels have close to nothing in common for exampleWell, let's see, what do they have in common?
Both are...
...locations. They are located somewhere, maybe in the middle of town, maybe on the outskirts. You can go there from locations adjacent to them. They can be in a nice or in a rough neighborhood. You can meet different kinds of people there.
...buildings. They consist of rooms, have at least one entrance and at least one floor. They can be new, old, damaged, large or small and are subject to harsh weather, natural disasters or fire. They are owned by someone.
...offering some kind of services. They might be famous for the quality of their work or infamous for their lack of skill. Their clients might be rich or poor, civilized or savage and many other things.
...work places. They have employees which might be skilled or unskilled, enthusiastic or complacent, common or rare and so on.
...points of interest. People might talk about them, know the owner or famous employees.

Of course, which of these attributes are important for the game elements Brothel and School really depends what you can do there in the game. However, I'd be surprised if there are almost no similarities.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 05, 2013, 03:14:22 AM
I meant that currently they have nothing in common.  In the future they might and one can find similarities in almost anything if they tried hard enough.

Basically if you asked about unification of elements in the game, I don't care for it.

Lets try keep objects in game separate grom one another. Most important containers in the game are globals and really easy to work with, there is no pressing need for it.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: mijh on June 05, 2013, 09:06:18 AM
If you want to eventually have a game with good gameplay, you need some non-hair-pulling process to move from "game doesn't crash" to "game has sane, understandable, non-bugged mechanics that I can understand and enjoy seeing work".

If you start off with complicated logic that is hard to reason about or abstract, you'll never have a way to move from the former to the latter. Btw, people have written long, abstract, best-selling books about this (good software design), it is one of the most talked about things because getting it right is A) hard B) pays off in spades.

One of the most important things that is common to, for example schools and brothels, is that they are both objects that add, hold, and remove girls, and they modify the girls they are holding. And well, stuff happening to girls is probably the core element of the game...

So indeed that speaks extremely strongly to the usefulness of a common interface for these things.

I also remember seeing conversations about girls "having lives" outside of the player control, e.g while they are in the world, etc. Having a common interface for these locations also would make this sort of feature far easier to implement.

Without it, you could fix one bug, or introduce one feature in x location, and then a week later wonder why y, z and w locations don't work as you expect. And then fix a bug for that feature in z, and then two weeks later wonder why there's a similar bug that's just come up in x again. You might remember that you fixed it two weeks ago in x, and then copy and paste the 'fixed' code back, but in the process forget that you changed x's behaviour subtly the week previous, and thereby introduce another bug with the c+p. The ability for this to happen when you have more than one developer also grows exponentially, especially when there's no formal testing process.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 05, 2013, 01:36:23 PM
If you want to eventually have a game with good gameplay, you need some non-hair-pulling process to move from "game doesn't crash" to "game has sane, understandable, non-bugged mechanics that I can understand and enjoy seeing work".

If you start off with complicated logic that is hard to reason about or abstract, you'll never have a way to move from the former to the latter. Btw, people have written long, abstract, best-selling books about this (good software design), it is one of the most talked about things because getting it right is A) hard B) pays off in spades.

One of the most important things that is common to, for example schools and brothels, is that they are both objects that add, hold, and remove girls, and they modify the girls they are holding. And well, stuff happening to girls is probably the core element of the game...

So indeed that speaks extremely strongly to the usefulness of a common interface for these things.

I also remember seeing conversations about girls "having lives" outside of the player control, e.g while they are in the world, etc. Having a common interface for these locations also would make this sort of feature far easier to implement.

Without it, you could fix one bug, or introduce one feature in x location, and then a week later wonder why y, z and w locations don't work as you expect. And then fix a bug for that feature in z, and then two weeks later wonder why there's a similar bug that's just come up in x again. You might remember that you fixed it two weeks ago in x, and then copy and paste the 'fixed' code back, but in the process forget that you changed x's behaviour subtly the week previous, and thereby introduce another bug with the c+p. The ability for this to happen when you have more than one developer also grows exponentially, especially when there's no formal testing process.


 I would rather spend more time fighting bugs than have this game turn into an inheritance orgy like our battleengine (for example). Glancing through code of a bunch of different games coded in different PLs and a lot in RenPy/Python, I know that working on a project that is coded properly would be a freaking nightmare to me and this is an indie game that will be distributed for free so getting joy out of working on it is the main point...
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on June 05, 2013, 03:24:00 PM
Sorry to interrupt as non-Python coder, just wanted to say that total inheritance has little in common with good sd. It could and will result in limited functionality and flexibility when you need it most. Especially because there is no clear, comprehensive, 100% ready concept of the game.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 05, 2013, 05:06:44 PM
Sorry to interrupt as non-Python coder, just wanted to say that total inheritance has little in common with good sd. It could and will result in limited functionality and flexibility when you need it most. Especially because there is no clear, comprehensive, 100% ready concept of the game.

True

Not the point I was trying to make. Right now I am confident that if we just head in the direction code development was heading, we'll have a solid, working and bugfree game in the end. Improvements like Rudi's objects instead of lists to improve code readability offer no disadvantages what so ever and just make things better. I am also more than ok with using inheritance for object that are a LOT alike like jobs for example. Locations or interfaces on the other hand are very different, I don't want or see the need to brothels, shops, school(s), market to inherit from any one class and even at the risk of not following accepted programming paradigms or patterns and increasing the workload. Better to code it in an enjoyable way and finish the project, than doing everything right and failing cause it gets to boring to develop.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: rudistoned on June 05, 2013, 09:43:10 PM
@DarkTl
total inheritance has little in common with good [software design]. It could and will result in limited functionality and flexibility when you need it most.
I strongly disagree. Every element in a python program, be it a number, string, class, function, instance or any other object inherits from the 'object' class. In Python, everything inherits from 'object'. Please explain how this limits the functionality and flexibility of python software.



Since I started this whole discussion, I would like to reiterate that I am not trying to force a design for this game that relies heavily on inheritance. I belief that some shared base classes would be beneficial, but in the end it's up to the main contributors to decide which design they want to use. Based on my limited knowledge that would make it Xela's decision, and I will not oppose it.
Nevertheless, I agree with everything mijh said in the last post. Not using inheritance or at least some standardization by convention will very likely cause problems with debugging and code improvement in general.

I also can really identify with this statement:
Quote
this is an indie game that will be distributed for free so getting joy out of working on it is the main point

So with all that said, I would like to point out that I definitely enjoy using inheritance in my code.

@Xela
Quote
one can find similarities in almost anything if they tried hard enough.
That's one of the (less important) reasons why inheritance makes so much sense to me ;-)
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: Xela on June 06, 2013, 03:21:46 AM
Since I started this whole discussion, I would like to reiterate that I am not trying to force a design for this game that relies heavily on inheritance. I belief that some shared base classes would be beneficial, but in the end it's up to the main contributors to decide which design they want to use. Based on my limited knowledge that would make it Xela's decision, and I will not oppose it.
Nevertheless, I agree with everything mijh said in the last post. Not using inheritance or at least some standardization by convention will very likely cause problems with debugging and code improvement in general.

Quote
at least some standardization

That I do not mind at all. Just as long as we do not take it to far.


I also can really identify with this statement:
So with all that said, I would like to point out that I definitely enjoy using inheritance in my code.

I know (seen Pytherworld). While I can respect the order, paradigm and beauty of it, working on a project like that to me would be a nightmare. It might change in the future but for now I enjoy a bit of mess in the code as long as I can clearly understand it and it comes with no bugs.

@Xela That's one of the (less important) reasons why inheritance makes so much sense to me ;-)

 :)

Well, I've never claimed that proper programming practices or inheritance don't make much sense, my point is and continues to be that all I see when I look at code that uses inheritance whereever possible is boredom (and often confusion).
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: DarkTl on June 06, 2013, 06:44:02 AM
Sorry, Rudi, I don't want to turn the thread into an abstract discussion. Mostly because I really not in a mood for that, so maybe some other time  :)

You could google "inheritance disadvantages" if you want to. I don't say that inheritance is bad thing or something, but it has its own limitations when used excessively, as any other principle.
Title: Re: -PyTFall- Dev Thread: Next Day/Jobs Concept
Post by: rudistoned on June 06, 2013, 08:56:16 AM
@DarkTl
So you really think Python is limited because everything is an object? I've never heard someone make that point before, but that may be due to my limited knowledge. The only possible disadvantage I can think of is performance, but you can always write the performance critical function in C if you really need it (which, I suspect, most people don't).
AFAIK, accusing Python of limited functionality or flexibility is just uninformed. If I find time I'll google a bit, but I think you should do the same  ;)

UPDATE:
I read Wikipedias section on the limitations of inhertance-based designs link (http://en.wikipedia.org/wiki/Inheritance_%28object-oriented_programming%29#Limitations_and_alternatives).
Some of the described limitations are examples of problematic design (yo-yo-problem, using classes to model roles) which will always give you problematic code regardless of the paradigm you follow. Multiple inheritance can cause problems, but it is usable in Python if you need it, so the Singleness critique does not really apply. Python does not care about the Visibility problem because "we're all consenting adults".
In constrast to these problems, the problems mijh described are hard to avoid and (without shifting paradigms, which is very hard in itself) hard to fix.