2015-03-21

BBWs, bitches, bros, gilfs, gangstas, traps and ssbbws

I was watching a sexy woman stuffing her face with fast food and a thought came to mind. Well a few thoughts, but one was BBW. I have no idea where the term originated, could be porn or marketing women's clothes. What I do know is that that simple phrase means a lot without any explanation. I'd imagine that all the stereotypes in the blog tittle were enough to get some people to click on this blog post (apologies if you came here by mistake :p). My point is that a short acronym or phrase is all the brain needs for the imagination to kick in.

Anyway, I find myself working with randomly generated characters and there is a real problem with them. As you can see in this post from a few days ago, the characters are really just a list of facts. And if you were to take a human and assemble a list of everything about them, the list itself really wouldn't be interesting. You might be able to pick out something juicy here and there, but in reality it's just a lot of noise. I'd like to think the limited amount of facts that I'm generating lead to something interesting in the context of the game I'm trying to make, but there is still some disconnect with finding the bigger picture.

Back to the BBW thing though, everything that you need to know is very easy to imagine. I don't have to spell out that I'm talking about a big, beautiful woman. In the case of a randomly generated character, I want to be able to just say something like 'This character is a TROPE' (Where trope is any stereotype that the character fits into).

The system can generate women who are big and beautiful, so then it isn't a challenge to pick up on the gender, weight and looks of a character then assign a stereotype or trope value to them using rules.
:: fill, randomStereotype, bbw [rule($display == enum.randomStereotype && $randomWeight == enum.thick && $randomLooks == enum.veryAttractive && $randomIsMan == enum.no)]
set($randomStereotype = enum.bbw)
The exciting thing about this (to me anyway) is that I can look at all the facts about a character and create more specific rules and have the system naturally select which rules fit best.
:: fill, randomStereotype, bbw [rule($display == enum.randomStereotype && $randomWeight == enum.thick && $randomLooks == enum.veryAttractive && $randomIsMan == enum.no)]
set($randomStereotype = enum.bbw)

:: fill, randomStereotype, ssbbw [rule($display == enum.randomStereotype && $randomWeight == enum.thick && $randomLooks == enum.veryAttractive && $randomIsMan == enum.no && $randomMuscularity == enum.puny && $randomHipWidth == enum.voluptuous && $randomBreastSize == enum.massive && $randomAssShape == enum.largeMarge)]
set($randomStereotype = enum.ssbbw)
I have to say, setting these things up is a lot of fun. It almost felt like I was designing a card battle game or something.

One thing that troubles me is if people will find these stereotypes offensive. Here are a few examples that could be problematic:
:: fill, randomStereotype, bitch [rule($display == enum.randomStereotype && $randomIsMan == enum.no && $randomSubSwitchDom == enum.dominant && $randomKindness == enum.veryAggressive && $randomPlayfulness != enum.veryPlayful)]
set($randomStereotype = enum.bitch)

:: fill, randomStereotype, bro [rule($display == enum.randomStereotype && $randomIsMan == enum.yes && $randomFacialHair == enum.neckbeard)]
priority(2)
set($randomStereotype = enum.bro)

:: fill, randomStereotype, gilf [rule($display == enum.randomStereotype && $randomIsMan == enum.no && $randomKids > 0 && $randomPhysicalAge != enum.earlyTwenties && $randomPhysicalAge != enum.lateTwenties && $randomPhysicalAge != enum.thirties && $randomPhysicalAge != enum.forties && $randomLooks != enum.ugly && $randomLooks != enum.average)]
set($randomStereotype = enum.gilf)

:: fill, randomStereotype, gangsta [rule($display == enum.randomStereotype && $randomIsMan == enum.yes && $randomMasculinity == enum.veryMasculine && $randomKindness == enum.veryAggressive && $randomCrookedness == enum.veryCrooked && $randomMuscularity != enum.puny)]
set($randomStereotype = enum.gangsta)

:: fill, randomStereotype, trap [rule($display == enum.randomStereotype && $randomGender == enum.transWoman && $randomMasculinity == enum.veryFeminine && $randomHasBreasts == enum.yes && $randomGenitals == enum.penis && $randomLooks == enum.veryAttractive)]
set($randomStereotype = enum.trap)

My defense is that I'm using these stereotypes as a means of describing something sexually interesting about a character that people will immediately understand. For example, if a character is described as a gilf I think it'd be easy to decide if you'll pursue sex with them or not.

Another thing is that you could for example navigate to any porn tube site and find categories of videos based on any of those previous examples (with the exception of neckbeards probably). Popularity varies, but these ideas come from somewhere and people are into them. That's not to say that there isn't anything wrong with sexually objectifying people, but I'm making a sex game...

Enough rambling I think. Since you read this, I'm interested in your thoughts. Do you think these generalizations are a good idea?

2015-03-19

Auto-replace penis

If you know me, then you know there is nothing that I enjoy more than finding childish names to use in place of penis. Rather than having to manually find and replace penis throughout my game code and bake in variations, I can let the game decide on it's own at run time. I've scoured all of the internets and assembled a nice penis word bank. It is my privilege to share these items below:

(ps, yes there are an unlimited amount of better things I could be doing with my time)

:: fill, penis [rule($display == enum.penis)]
[any(random), "100% all-beef thermometer", "ankle spanker", "arbor vitae", "baby arm", "baby maker", "bald-headed yogurt slinger", "baloney baton", "baloney pony", "banana", "beaver basher", "beaver cleaver", "beef bayonet", "beef whistle", "bell on a pole", "best friend", "blue-vein sausage", "bologna pony", "boom stick", "braciole", "bratwurst", "cack", "candle", "chap", "chopper", "cock", "cock rocket", "corn dog", "cranny axe", "credentials", "cut", "d", "d train", "d-train", "dangler", "dick", "dicktator", "ding dong", "ding dong mcdork", "dingis", "dingus", "dipstick", "disco stick", "doder", "doinker", "domepiece", "dork", "drum stick", "dude piston", "e-peen", "easy rider", "energizer bunny", "evesdropper", "falo", "fang", "ferret", "foto", "fun stick", "generating tool", "gigi", "groin ferret", "hairy hotdog", "hog", "hotdog", "impudence", "it", "jack-in-the-box", "jackhammer", "jimber", "joystick", "junk", "jurassic pork", "kickstand", "kielbasa", "knob", "lap rocket", "lingam", "lizard", "magic stick", "main vein", "male organ", "man meat", "man muscle", "man umbrella", "man's best friend", "manhood", "master of ceremonies", "matrimonial peacemaker", "mayo shooting hotdog gun", "meat injection", "meat popsicle", "meat puppet", "meat stick", "meat thermometer", "meatsicle", "member", "microphone", "middle girth", "mutton", "mutton dagger", "netherrod", "one eyed willy", "one-eyed wonder weasel", "one-eyed yogurt slinger", "p", "package", "packer", "patz", "peen", "peeper", "penis", "penis sangbo nam rod", "ph.d", "phallus", "pickle", "piece", "pink oboe", "pink torpedo", "pink tractor beam", "pipecleaner", "plonker", "plug", "pnor", "poinswatter", "polaroid", "pop a chub", "porridge gun", "prick", "princess sophia", "private eye", "private part", "pud", "pudding", "putz", "rabo", "ramburglar", "roundhead", "salamander", "sex", "schlort", "schmuck", "schnitzel", "schwanz", "schwartz", "schwarz", "sconge", "shmuck", "shvantz", "silent flute", "single barrelled pump action bollock yogurt shotgun", "skin flute", "slit-eyed demon", "soldier", "spam javelin", "spawn hammer", "spout", "steamin' semen roadway", "steamin’ semen truck", "stick shift", "sub", "surfboard", "taco warmer", "tally whacker", "tallywacker", "tallywhacker", "tan banana", "tassle", "tent pole", "thing", "thumper", "tinker", "todger", "tonk", "tool", "tripod", "trouser meat", "trouser trout", "tube steak", "tubesteak", "tummy banana", "tuna torpedo", "unit", "vagina miner", "vein", "verga", "wanger", "wanker", "wankie", "wedding tackle", "wedding wrecker", "weiner", "whiskey dick", "who who dilly", "whoopie stick", "wiener", "wing dang doodle", "yogurt gun", "yogurt slinger", "yoo-hoo", "zubra"]

:: fill, named penis [rule($display == enum.penisName)]
[any(random), "Adolph", "Bishop", "Bob Dole", "Bobby Dangler", "Bone Ranger", "Captain", "Captain Winky", "Don Cypriano", "Dora The Explorer", "Excalibur", "Froto", "Harry Johnson", "Jimmy", "John", "John Thomas", "Johnson", "Just-in-beaver", "King Sebastian", "Krull The Warrior King", "Long Dong Silver", "Luigi", "Master John Goodfellow", "Mr. Happy", "Mr. Knish", "Mr. Peaslin", "Mr. Sniffles", "Mr. Winky", "Muff Marauder", "Ol' One Eye", "Old Boy", "Old Fellow", "Old Man", "Ole One Eye", "Pedro", "Percy", "Peter", "Pied Piper", "Pinnochio", "Popeye", "Puff The One-eyed Dragon", "Russell The Love Muscle", "Seabiscuit", "Tiny Tim", "Uncle Dick", "Uncle Reamus", "Vlad The Impaler", "Wang", "Wiener Schnitzel", "Willie", "Willy", "Woody Womb Pecker", "Gentleman Usher"]

:: fill, dirty penis [rule($display == enum.penisDirty)]
[any(random), "aids baster", "anal impaler", "butt burglar", "cervix crusader", "clam hammer", "cornholer", "crotch vomiter", "cum gun", "custard launcher", "fart hammer", "fuck rod", "fuck stick", "fudge sickle", "gash mallet", "giggle stick", "gut wrench", "ho wrecker", "kidney scraper", "piss weasel", "sludge pump", "snot rocket", "stinky pickle", "tonsil tickler", "vomit rod", "weapon of ass destruction", "womb broom", "womb ferret", "womb raider", "whore thermometer"]

:: fill, small penis [rule($display == enum.penisSmall)]
[any(random), "bud", "dick smalls", "dickie", "diddle", "ding", "ding a ling", "ding-a-ling", "dingaling", "dink", "dinky", "lincoln log", "little Alex", "little Bob", "little chubby", "little Elvis", "little solider", "maypole", "needle dick", "noodle", "pecker", "pee pee", "peepee", "peeter", "pencil dick", "schlittle", "schmeckel", "schmeckle", "shlittle", "short arm", "shrinkage", "teeny weenie", "tootsie roll", "twig", "twig (and berries)", "twig and berries", "twinkie", "wang doodle", "wee", "wee wee", "weenie", "wick", "goofy goober", "dagger", "dinker", "winkie", "winky", "worm"]

:: fill, big penis [rule($display == enum.penisBig)]
[any(random), "alabama black snake", "anaconda", "bat", "bed snake", "big italian salami", "club", "cyprian scepter", "divine rod", "dong", "electric eel", "flesh tower", "giant redwood", "horse cock", "hose", "hung", "leaky hose", "long dong", "longfellow", "magic wand", "meat constrictor", "meat scepter", "meat sword", "meter long king kong dong", "middle leg", "middle stump", "monster", "one eyed monster", "one eyed snake", "one-eyed anaconda", "one-eyed monster", "one-eyed snake", "one-eyed trouser-snake", "pole", "salami", "sausage", "schlong", "schlong dongadoodle", "sea monster", "sebastianic sword", "shaft", "shlong", "spitting cobra", "staff", "staff of life", "third leg", "third leg of the tripod", "thundersword", "trouser snake", "tube snake", "veinous maximus", "wand", "rod", "rod of pleasure", "deep-V diver", "digger", "donger", "fire hose", "hanging meat", "moisture and heat seeking venomous throbbing python of love"]

:: fill, erection [rule($display == enum.erection)]
[any(random), "artful throbber", "bone", "boner", "broner", "chub", "erection", "chubbie", "chubby", "hard on", "hard-on", "love muscle", "love rod", "love shaft", "love stick", "love whistle", "piston", "pleasure pump", "pocket rocket", "power drill", "quiver bone", "stiffie", "stiffy", "throbber", "wood", "heat-seeking love missile", "heat-seeking moisture missile"]

:: fill, package [rule($display == enum.package)]
[any(random), "big dick and the twins", "general and two colonels", "groin", "rule of three", "thunderbird 3", "package", "sex", "privates"]

2015-03-17

Everything is cumming together

(excuse the shitty pun)

When I first made Body Gen I just wanted a tool to use as a starting point for making unique characters. Once I realized I could build it using Fate, I knew it could be integrated inside of Crooked for random encounters. After a little performance optimization I have it working.

In short the system can generate random characters with a good amount of detail really fast. Right now it can generate two unique characters with roughly 50 random body/personality details in about 1 second. The biggest slowdown point is probably assigning names, professions and places of work since they come from a large pool with thousands of values. I'll probably change this since a person could have a job at a place that doesn't make any sense (examples later).

Printing randomized character data (left) and randomization rules (right)

Now that this is working (mostly) the real challenge is making interacting with these random bodies meaningful. My intention for now is for these characters to be quick fucks at best. I really can't even imagine how to write a long term relationship with a custom player character and a randomly generated partner. I guess those are tomorrows problems.

Onto some examples. These characters are raw output, so each list has all of the currently possible values for a character (even those they don't have).


2015-03-09

What an hot ass!

I've been messing around with the idea of using procedurally generated content to add variation to Crooked. After character creation the player is presented with a short bio of their character as a preview of how they will be described in game. I'm trying to get the hang of working with dynamic text but I've run into a few issues. Take this sentence as an example:
Did you see her? What a hot ass.
No problems as a static line, but what I would like to do is replace hot with various synonyms like sexy or awesome. This is pretty simple to do with display and rules:
Did you see her? What a display($display = enum.hot) ass she has.

:: fill, hot [rule($display == enum.hot)]
hot
:: fill, sexy [rule($display == enum.hot)]
sexy
:: fill, awesome [rule($display == enum.hot)]
awesome
The problem here is that 'a' needs to be an 'an' in the case of awesome.
  • Did you see her? What an awesome ass she has.
  • Did you see her? What a hot ass she has.
  • Did you see her? What a sexy ass she has.