devolution

Author Topic: General Discussion  (Read 3821892 times)

0 Members and 25 Guests are viewing this topic.

Offline lamoli

  • Hero Member
  • *****
  • Posts: 553
Re: General Discussion
« Reply #6135 on: October 28, 2015, 08:53:08 AM »
I'm afraid it's a very complex matter. We changed traits logic in the dev version. Now you can write there something like "mod_stats": {"charisma": [1, 4]}, and the girl will have +1 to charisma every 4 levels. Thus depending on traits characters may or may not have bonuses per level.

At the same time by fixed amount we raise max levels of stats. +2 to max and +5 to absolute max per level. Absolute max is the max that cannot be exceeded no matter what. Normal max can be increased via items and training, until it will hit absolute max.

The system is complex, that's why it's so difficult to convert stats.

OK but does the stats showing in girl profile have all those modifier on.. like she had 30 con lvl stat + 5 con from item to cap at 35 max lvl stat ( does girl profile will show 35 ? )

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6136 on: October 28, 2015, 09:39:21 AM »
I'm not sure yet how to build an interesting, original (taking JoNT system is obviously not original) and not oversimplified ST system. I have some ideas about training options, but not about system logic  :)

In this system unlike SM where your progress is.. ( linear ?? ) but like JoNT you dont have to unlock little by little.. you can force em to do it now but you will get penalty.. like fear/against increase.. or endurance/moral drop unless they got masochist trait or other relater stuff like those.. that will reduce penalty
And true there is obedience.. but is impaired by a lo of stuff so you will have to manage those thing.. even a max obedience she could refuse you if you did not manage the other things as well.. and obedience can drop too..
She could end completly in a broken state at some point.. but unlike JoNT i wont butcher/kill her.. ill just add some potion that you will need to make with alchemy to reset her to her original stats or just remove the broken state..

I have thought about it quite a bit and have a bunch of ideas that would take too long to properly put into a clear concept, main points and some simple examples are:

1) Getting an actor (*any character) to accept slavery and actual training are two separate things.

2) Most actors just fall into line or require a bit of persuasion (promise of release in 10/20 years of loyal service (not relevant to gameplay since it's unlikely that someone will play for so long)), promise to be allowed to have a family, small wage or rather keep a small percentage of profits with promise that an actor will be able to buy freedom.

3) If 2) fails, imprisonment/torture, if that fails as well and doesn't result in escape/mindbreak/death (in very extreme cases) ==> Sale to work in the mines (close to death sentence) or some rural area (where slaves are being systematically mistreated by uneducated serfs that just take their anger on someone who's below even themselves).

===
The general concept is closer to how it was in reality in ancient times, many educated/skilled slaves lead a much better lives than any surf (and cost up to 20x more than uneducated/unskilled once), in major cities, it was perfectly normal to free slaves and in Roman Empire, by law, masters had to provide freed slaves with a trade of their on some other source of income as well. Most people put into such a position would plainly fall in line.

JoNT/SM systems are f*cked up in this regard and while they do serve in a game that is solely based on ST (and you don't think about the content too much, just about the gameplay), they serve well. PyTFall is a broader concept and I don't see system like that working there.


I had a few ideas on training itself as well:

1) First possibility is training similar to schools.

2) Second possibility is to have auto-training similar to schools and a fun personal training that may be hard to make where an actor takes a requested action and MC, based on own relevant skills/stats can offer suggestion from a menu on how to an actor can be improved. Options here are almost limitless, system can start really oversimplified and gradually improve. This paired with a decent GUI, some animation, decent tag control can be fun as hell.


Also I am not opposed to adding a separate dungeon/some form of a torture chamber for player to play with as a mod or even main part of the game, I just don't want that to be directly related to ST.





My ultimate goal would be to make a Pytfall JoNT AA2 Love Girl combo in UE4.. all i need is logic and ST concepts as i can make the rest...
But first step ( and less time consuming will be making packs out of 3D rendered girls and 3D rendered BG i could use in UE4 while a develop a ST user mod system and get content for my mod or Pytfall in general)

I generally don't believe in indie 3D games of this scale, many have tried, not many succeeded and those who did usually modded an existing game like Elderscrolls/Fallout or something similar but starting with a 2D prototype is a great idea regardless.

Xela does the stats in Pytfall individually increase by a fixed amount each lvl or not ?

Depends on the version, in dev version they might. In Alpha max/lvl_max would increase on leveling up, I don't believe that extends to stats themselves. Health/MP/Agility are all maxed on on every level-up.

if so it will be easy to convert from Pytfall to my mod.. like lvl1 Boa:
17/60 charisma.. 2/5 Beauty
60/60 character.. could give 5/5 temper and 5/5 nature and 5/5 pride but her traits/arch type could reduce some of those numbers..
16/40 constitution.. 2/5 endurance..
6/60 intel.. 1/5 intel..
2/35 refinement.. 1/5 sensitivity..
dispo amount / something to give base obedience..

and so on..

i would just have to find a formula that compare the current skill with max skill and round them up or down for a 0-5 basis.. and that would work at and character lvl..
and it will only work 1 way.. Pytfall (unique/random)girls -> ST module.. every time they enter the dungeon.. that way the girl you send in will be the girl you worked on in Pytfall and not some predefined ( crap ) lol

http://stackoverflow.com/questions/929103/convert-a-number-range-to-another-range-maintaining-ratio

You can create a dict with stats {"st_intelligence": "intelligence", "st_beauty": "charisma"} and overwrite Girl.__setattr__/__getattr__ accordingly so the system works automatically.

I dont know if you had plans to sell slaves you trained to npcs or even slave markets but this could be 1 result of my ST mod.. and earn $$ in real game
Second ( on my mod ) would be to make her gain traits for the main Ptyfall after she met the requirement in ST module

Yeah, the trouble is that we scale a game a lot differently (time-wise) from JoNT as well. Training an actor in any skill properly may take an year or so, the way I wanted that to work is by making MC to look for skilled slaves, train them further/make sure that they are obedient and maybe resell them.

In new dev version we've introduced new "Base" (or class)-traits concept. Any actor can have up to two of these traits and they determine talents and occupation better than any other trait might to help with that system. I try to keep all the plans that can fit in my head and develop finalized versions of stats/traits/skills systems with those plans in mind...





OK but does the stats showing in girl profile have all those modifier on.. like she had 30 con lvl stat + 5 con from item to cap at 35 max lvl stat ( does girl profile will show 35 ? )

Yes, profile screen should show final values for stats and skills. As I've mentioned above, you can overwrite getattr/setattr special methods to convert your JoNT st stats directly on the fly so you'll always have the correct values. __getattr__ can be used to return proper values for JoNT module while __setattr__ can mod the PyTFall values directly if PyTFall stats are used and convert from JoNT to PyTFall (modding real PyTFall values) on the fly if you want to be able to increase JoNT values directly. This will work both really fast and convenient...
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6137 on: October 28, 2015, 10:22:51 AM »
The general concept is closer to how it was in reality in ancient times, many educated/skilled slaves lead a much better lives than any surf (and cost up to 20x more than uneducated/unskilled once), in major cities, it was perfectly normal to free slaves and in Roman Empire, by law, masters had to provide freed slaves with a trade of their on some other source of income as well. Most people put into such a position would plainly fall in line.
I'm ok with other stuff, but prices...

I believe education or special skills per se were quite rare at that time. If we use this concept in ST, we take for granted that skills and education are just as rare in Pytfall as they were in Roman Empire 1500-2000 years ago, where they didn't have androids or magic (hopefully  :) ), that's a bit weird.

AND we don't have classless chars. They all have a class and can do something useful. Thus this concept is not believable, since we don't actually have many uneducated people in the city.
« Last Edit: October 28, 2015, 10:29:26 AM by DarkTl »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6138 on: October 28, 2015, 11:49:44 AM »
I'm ok with other stuff, but prices...

I believe education or special skills per se were quite rare at that time. If we use this concept in ST, we take for granted that skills and education are just as rare in Pytfall as they were in Roman Empire 1500-2000 years ago, where they didn't have androids or magic (hopefully  :) ), that's a bit weird.

I wouldn't call that weird, Androids are foreign to PyTFall and are not a part of city/world design (aka they are not created/manufactured there). There could be portals to other worlds or other cities with different systems but I've wrote already that literacy should become a large part of gameplay design after ST training is introduced, in fact I recall writing that as part of a huge post similar to the one above (but prolly more detailed). Magic was a popular thing in Roman times, accepted or outlawed depending on the period, I don't recall anything about it's effects on literacy and cannot see how even "real" magic concept used in PyTFall is supposed to effect it.

AND we don't have classless chars. They all have a class and can do something useful. Thus this concept is not believable, since we don't actually have many uneducated people in the city.

Holy cr@p... how many times can we discuss the same thing over and over again until we are synced on the concept... even in the last post:

In new dev version we've introduced new "Base" (or class)-traits concept. Any actor can have up to two of these traits and they determine talents and occupation better than any other trait might to help with that system.

"talents"
and "occupation", base traits do not guarantee that an actor is educated to do the job, at low levels and skills it simply means that the said actor is willing to do the job and has a talent for it (as in ability to gain relevant skills at faster rate and be allowed to push max stat levels faster). An actor with Warrior and Mage as the two main base traits, can still have up to four other basetraits but without super effects applied so such an actor can be Maid or a Prostitute as well but that would be a stupid and sh1tty setup which will never result in anything good because any actor with proper traits will be able to do those jobs better.

- In the same sense a lvl1 Warrior sent to a high level SE area may not even return...
- A lvl1 Prostitute with low skills will not be able to satisfy Customers and will end up causing you income especially in high end Brothels.
- A low skills craftsman of any kind when we'll have them will not be able to craft a damn thing (once we have them).

and etc.

You need to separate those things in your mind. I didn't want any actor to be able to become anything at all, neither did I want them all to be the same/have the same stats. Our system covers most of such concerns and does that well (I hope so at least, we need to finish it first).
Like what we're doing?

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6139 on: October 28, 2015, 12:14:40 PM »
The influx of residents from other worlds brings moar technology and knowledge. Meanwhile Roman Empire hardly had a good opportunity to learn something new from other countries as one of the most developed countries at that time.
The very fact that people from worlds where they know how build an android come to the Pytfall world in appreciable quantities inevitably raises the quality of education little by little.

base traits do not guarantee that an actor is educated to do the job
It's not true, classes also have good initial bonuses by design. Init_skills, init_mod, mod fields which you allowed for me to use there.

Offline lamoli

  • Hero Member
  • *****
  • Posts: 553
Re: General Discussion
« Reply #6140 on: October 28, 2015, 12:19:35 PM »

Yes, profile screen should show final values for stats and skills. As I've mentioned above, you can overwrite getattr/setattr special methods to convert your JoNT st stats directly on the fly so you'll always have the correct values. __getattr__ can be used to return proper values for JoNT module while __setattr__ can mod the PyTFall values directly if PyTFall stats are used and convert from JoNT to PyTFall (modding real PyTFall values) on the fly if you want to be able to increase JoNT values directly. This will work both really fast and convenient...

Im rather new to python so if its not too much trouble could you show me a code example with chr(self).charisma ( from pytfall ) to chr(self).baeurank (My Mod)

class Girl(PytCharacter):
    def __getattr__(self, key):
        ??? ???
    def __setattr__(self, key, value):
        ??? ???

I tryed the code from ( http://stackoverflow.com ) and worked perfectly on IDLE 3.4 ( i just need something to round up or down.. and a example with __getattr__ __setattr__

atm in using this " chr.baeurank = remap(chr.charisma, 0, chr.get_max("charisma"), 1, 5) " inside girl_sttraining and works well.. but know that you mentioned __getattr__ __setattr__ im curious on how it work as it would clean my code a lot
« Last Edit: October 28, 2015, 01:01:21 PM by lamoli »

Offline lamoli

  • Hero Member
  • *****
  • Posts: 553
Re: General Discussion
« Reply #6141 on: October 28, 2015, 05:20:36 PM »
Update..

https://mon-partage.fr/f/dug5oQyJ/

Now rules does something that can train your girl passively and her mood / cleanness will drop as they should be ( missing a lots of pictures so iv let nearly all the training actions without ( pictures / text and will increase rank each click.. test mode ) but your girls get her stats skills from the main game now.

There is 1 thing you will notice.. if you do not visit her daily her passive training wont progress.. ( neither her mood/cleanness drop over time )
so you can let her be there for a few days if you want then resume her training later.

And this time Leather Lingerie and Mistress Boots will give you +2xp each or 4 as a set..
« Last Edit: October 28, 2015, 05:23:46 PM by lamoli »

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6142 on: October 28, 2015, 05:27:53 PM »
...

You're nitpicking... please stop.

The influx of residents from other worlds brings moar technology and knowledge. Meanwhile Roman Empire hardly had a good opportunity to learn something new from other countries as one of the most developed countries at that time.
The very fact that people from worlds where they know how build an android come to the Pytfall world in appreciable quantities inevitably raises the quality of education little by little.

So what? What can the best microchips engineer from our time do with tech from 200 years ago? Not a damn thing... tech and manufacturing infrastructure required to utilize that know-how is not realistic to introduce in that time period, it would have to be done little by little based on knowledge of one mortal man.

Also literacy depends on public education that is free and obligatory, not the level of knowledge or technology. Some backgrounds in the game do suggest a mixed world from tech/magic but we do not specify the levels or origin of that, at least not yet.

We can do with literacy whatever we like, even in rl world, there are many countries with really low literacy ratios.

It's not true, classes also have good initial bonuses by design. Init_skills, init_mod, mod fields which you allowed for me to use there.

Yeah but that's not educated for the task, if you are adding skills in high hundreds and stats in 4/5 dozens as init bonuses, you're designing them very, very wrong. Those init bonuses are there not to make sure that a character can do the job with ease at level one.

I'll come up with a good setups for characters so the world is not populated just with the level 1 but I can do that only after I can see the working system clearly.
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6143 on: October 28, 2015, 05:47:10 PM »
Im rather new to python so if its not too much trouble could you show me a code example with chr(self).charisma ( from pytfall ) to chr(self).baeurank (My Mod)

class Girl(PytCharacter):
    def __getattr__(self, key):
        ??? ???
    def __setattr__(self, key, value):
        ??? ???

I tryed the code from ( http://stackoverflow.com ) and worked perfectly on IDLE 3.4 ( i just need something to round up or down.. and a example with __getattr__ __setattr__

atm in using this " chr.baeurank = remap(chr.charisma, 0, chr.get_max("charisma"), 1, 5) " inside girl_sttraining and works well.. but know that you mentioned __getattr__ __setattr__ im curious on how it work as it would clean my code a lot

I don't have access to Alpha code right now so I cannot write the correct code that is guaranteed to work.

The idea is:

Code: [Select]
class Girl(PytCharacter):
   
    ST_STATS = {"st_intelligence": "intelligence", "st_beauty": "charisma"}

    def __getattr__(self, key):
        if key in self.ST_STATS:
            return convert_from_pytfall_to_jont(self.ST_STATS[key], *any_args_you_may_require)
    def __setattr__(self, key, value):
        if key in self.ST_STATS:
            pkey = self.ST_STATS[key]
            value = convert_from_jont_to_pytfall(pkey, *any_args_you_may_require)
            setattr(self, pkey, value)

The idea is to have getattr returning the on the fly converted values whenever requested and setattr to modify just the pytfall stats. This way you don't even need to maintain values for JoNT at all, just he PyTFall once and two conversion functions.

This is a prototype and may not work properly since special methods are tricky but it should most definitely be possible to get it to work this way.
Like what we're doing?

Offline felinow

  • Newbie
  • *
  • Posts: 1
Re: General Discussion
« Reply #6144 on: October 28, 2015, 10:36:13 PM »
Hi everyone, only wanted to say I love the proyect and I'm really interesed in this, as DarkTl say in another response I downloaded the repository to test the game and look at it, I'm a amateur developer on renpy so of course I'm curious about the code.


I wanted to help but after two days of read coding I got to the conclusion that this more complex that I can help, Anyway, I liked to let you know that i'm on GitHub looking at the repository, This game got me some ideas to try next time.


This moment I'm "working" (at a really low pace) on a game based on the old sim dates, at first the idea was simple but as you expect the game became a "little" complicated, as you can see think about the feaures is easy, the hard part is make it work.


But I'm not here to talk about it, for now I want to try make a game where I can generate generic npc and make a dinamic gameplay.
¿Any suggestion about it? (on the coding aspect)

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6145 on: October 29, 2015, 02:40:40 AM »
You're nitpicking... please stop.
I can't ignore flaws in lore logic like you do  ::)

So what? What can the best microchips engineer from our time do with tech from 200 years ago? Not a damn thing... tech and manufacturing infrastructure required to utilize that know-how is not realistic to introduce in that time period, it would have to be done little by little based on knowledge of one mortal man.
Ah, but we talking not about microchips. We talking about basic education and skills. You can't expect the same level of education as 2000 freaking years ago when there are hundreds if not thousands educated characters coming from portals for years since WM.

We stop using portals from parallel worlds as universal excuse if you want people to be uneducated.


We can do with literacy whatever we like, even in rl world, there are many countries with really low literacy ratios.
Let's talk about it after these countries  will have a steady flow of educated people with nowhere to go.

Yeah but that's not educated for the task, if you are adding skills in high hundreds and stats in 4/5 dozens as init bonuses, you're designing them very, very wrong. Those init bonuses are there not to make sure that a character can do the job with ease at level one.
I'm afraid the difference between 50 anal and 500 anal is a bit vague for me, especially since skills are not limited by anything. Stats at least have max levels, so it's more obvious for them.

Offline DarkTl

  • Hero Member
  • *****
  • Posts: 4737
Re: General Discussion
« Reply #6146 on: October 29, 2015, 03:24:39 AM »
But I'm not here to talk about it, for now I want to try make a game where I can generate generic npc and make a dinamic gameplay.
¿Any suggestion about it? (on the coding aspect)
We have random characters, they are pretty close to your idea of generating npcs.

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6147 on: October 29, 2015, 04:42:37 AM »
I can't ignore flaws in lore logic like you do  ::)

Those are not flaws (as I've pointed out). You're just coming up with some bs arguments :(

Ah, but we talking not about microchips. We talking about basic education and skills. You can't expect the same level of education as 2000 freaking years ago when there are hundreds if not thousands educated characters coming from portals for years since WM.

We stop using portals from parallel worlds as universal excuse if you want people to be uneducated.


No, we don't have to. As I've said, literacy ratio and accessibility of knowledge/technology levels are two completely different things, see details in my previous post.

Let's talk about it after these countries  will have a steady flow of educated people with nowhere to go.

But there are always educated people... we're not talking about the whole city not being able to read or write (we do have a library/academy). People are not falling into PyTFalls dimension by thousands, we've agreed that most chars are local with similarities in their traits/skills to how they are in the original sources.

Even if educated people are falling in through the portals:

1) There knowledge may not even be useful in context of the dimension that is new to them.

2) There is no guarantee that laws of nature (physics/biology/magic) are the same.

3) Most games skip this part, but they are not even supposed to speak the local languages right off the bat.

4) In order to survive, they need to learn about local world, customs and etc. instead of keep talking how great their worlds might be.

5) They have no rights in the new dimension and are very likely to become slaves, further curtailing their ability to teach masses.


I can't understand your arguments here... I've said that literacy ratio among population is very, very different from the level of education/knowledge/skills of some individuals, you're ignoring that and saying that we're not talking about microchips?

Post 1:
Quote
Also literacy depends on public education that is free and obligatory, not the level of knowledge or technology.

Post 2:
Quote
Ah, but we talking not about microchips. We talking about basic education and skills.

How is this a discussion? Microchips were simply an example of how very advanced knowledge from someone who comes from a very different world could be absolutely useless not just in a different world, but in the same world just a little bit out of time... I offered that example to explain my view on:

The influx of residents from other worlds brings moar technology and knowledge. Meanwhile Roman Empire hardly had a good opportunity to learn something new from other countries as one of the most developed countries at that time.
The very fact that people from worlds where they know how build an android come to the Pytfall world in appreciable quantities inevitably raises the quality of education little by little.

and I do not consider it to be relevant for reasons stated in precious post and more detailed here.

I am hopefully making my views on the matter clear, if you disagree, stop nitpicking on small issues and offer alternatives or explanations on why there should be a high literacy ratio in a world/city where slavery, prostitution, combat and bloody slave revolts are huge things instead of industrialization, technology, research and etc.

I'm afraid the difference between 50 anal and 500 anal is a bit vague for me, especially since skills are not limited by anything. Stats at least have max levels, so it's more obvious for them.

I think we can count on a normal increase of true skill point per day (per skill, anal/sex for example can go up 1 each). 2 skill points should be a very generous increase, 2.5 - 3 the maximum outside of events/items/traits. Minimum range will be 0 and for maximum I'll prolly take a mean of 10 highest values in the generated world per skill unless that proves to difficult to manage.
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6148 on: October 29, 2015, 05:10:34 AM »
Hi everyone, only wanted to say I love the proyect and I'm really interesed in this, as DarkTl say in another response I downloaded the repository to test the game and look at it, I'm a amateur developer on renpy so of course I'm curious about the code.

Hello.

This moment I'm "working" (at a really low pace) on a game based on the old sim dates, at first the idea was simple but as you expect the game became a "little" complicated, as you can see think about the feaures is easy, the hard part is make it work.

The more you advance the concept and ideas, the harder it becomes to code and to maintain the code and those concepts. Simple datesim however should not be too difficult.

But I'm not here to talk about it, for now I want to try make a game where I can generate generic npc and make a dinamic gameplay.
¿Any suggestion about it? (on the coding aspect)

No specifics with so little details provided. I can mention general conclusions I came to while coding for PyTFall where we, as Dark mentioned have, have randomly generated characters to interact with.

1) You'll need a class with characters data holding stuff like equipment, stats, traits, flags and etc. etc. I usually like to start with one huge class and split it once that becomes to difficult to manage. I did that with our Char class once that got to 2800 lines (creating parent class common to all actors, not just the actors that can be interacted with or employed, moved stats to separate class, moved Traits to a separate class, refactored some stuff), once refactored it was less that 1000 lines. Usually devs make small classes from the get go but I like having everything at one place until system is more or less setup.

That may be not relevant to you, I don't think that I've ever seen SimDate game with large character classes.

2) Either a factory method/class/func or a simple func (like we use in PyTFall)/classmthod to generate that random character(s). They will all do the same thing with various degrees of convenience.

3) Interactions (talking/actions) we put in labels and fork based on personalty/traits/stats and etc. That is actually very convenient and proper coding for Ren'Py. One main label calls a normal or custom menu with choices for actions/interactions, rest are just normal jumps or calls.

4) Maybe one last small tip is the GerericNPC.say = Character("Name", **kwargs) that we are using, this way you can customize and bind Ren'Py Sayer class to your NPC directly, that is very useful.


This is an excellent setup that will never fail or crap out on your (prolly the best for Ren'Py) and is easy to code in (you can come up with a simplified version in a day (or a couple of hours if you did something like that before)). Problem with it that it can be expanded indefinitely so where you calling it quits (enough for your game) is up to you :)
Like what we're doing?

Offline Xela

  • Global Moderator
  • *****
  • Posts: 6893
  • "It's like hunting cows"
Re: General Discussion
« Reply #6149 on: October 29, 2015, 05:39:36 AM »
...

Oh, and I forgot one very important trick I picked up from Eliont, when you create your random NPCs to interact with, if you are planning to keep them and allow interaction later, you can do this:


Code: [Select]
init python:
    class GerericNPC(object):
        def __init__(self, id, *args, **kwargs):
            self.id = id # Must always be unique! We use a lot of random names and surnames from simple txt files, since there are hundreds/thousands of them, collisions are not likely but you can always check for them if you like.
            # Rest of the code...

label start:
    $ chars = {}
    python:
        for i in range(100):
            char = GerericNPC(generate_random_id(), *args, **kwargs)
            chars[char.id] = char

This way your renpy.store is cleaner and you can access characters using their ids for testing and other stuff. This is even more useful if you even decide to add unique characters.
   
   
Like what we're doing?