Thursday, October 25, 2018

Alrisiel: rp set 1

A corner booth in the tavern. Alrisiel, an unemployed cleric of Hod-hera was sitting with Grokwud, a giant spellsworder. A massive warhammer was leaning against the booth, as was Alrisiel's cleric's staff with circular motifs of Hod-hera's two symbols: healing herbs and hearths / fireplaces.

"Grokwud has never heard of clerics for job. Teef yes, warrior - yah. Even ranger, mage or tribal mans. Cleric has tribe already, working for God yes?"

"They sent me a notice, written on purple vellum. It said: Alrisiel Carefore, 2nd sphere Cleric of Hod-hera. Notice of termination of employment, pursuant to City Charter 16 - Bankruptcy of Religious Organization."

"Lots Clerics then, to be found, why should Grokwud hire you?" he said, leaning against his warhammer.

A late arrival spoke up: "Most other Clerics are starting their own all-cleric groups. I was over at Holy Hops and every cleric in town was taking up the tables. Clerics of Aph-Evril, Urrem-Mortem and Damar-Herm were definitely forming up new charters."

It was dual-sword wielding man of war Dirk Gadron. Human, wearing a feathered cap. He removed it.

"Milady Alrisiel of Hod-hera, the Redguard Auxilliary Company would love to have your services. I told Grokwud here to keep the drifters out, and he got a little enthusiastic."

"Grokwud will zap you, you watch out sword-boy."

"Ha Ha, oh Grokwud you slay me. Anyway, come on Alrisiel, come see our company hall!"'

"Grokwud thinks hall is just room in tavern."

The giant lead them on into an adjoining room, where there were three rows of benches around a central dais.

"Who else is in the Redguard?" Alrisiel asked. She sat down on one of the benches

"We're here!" cackled a high pitched, but clearly male, voice.

"Ah, the Gnome in question," Dirk laughed, "and our favorite bardess."

The gnome was wearing spike studded pauldrons, light chainmail and two daggers sheathed at his sides.

The other arrival was a dark elf playing a haunting melody on her flute. It was dissonant, odd, not like Alrisiel's experience of the Church's musicians.

"Kneegash Bop at your service, milady," the gnome said. "And this lady is Nuhoksa del Graven-Cinder."

The dark elf placed her flute in the exquisite case attached to her pack, and acknowledged their greeting with two fingers.

"So Redguard has a dual-wielding fighter, dual wielding gnomish berserker, spellsword and bardess? And now me? No archer or conventional wizard or sorcerer. No rogue?"

Dirk smiled, "Redguard is known as a strong bunch of front line fighters. Nuhoksa wields a wicked Ilyuvan bow, plucks it's strings with mastery. With you in the mix, we'll be a versatile crew. Sure we're not going to take a job to weave through a trapped manor or a lockpicking guild job, but we'll find plenty of work."

"Grokwud say Huddle up."

"I'm in charge, Grok--- Huddle up Redguard Company!" Dirk said.

"We didn't find any more recruits," Kneegash said.

Nuhoksa shrugged.

"Better than last season's opening day," Dirk said. "I took the liberty of jotting down the Army's job board. Most of it is for larger Merc Companies. But I think there's a few we should consider."

"Killian's Killers is 50 strong now. That's not a Merc Company, that's an army!" Kneegash shouted.

"Shh, listen up!" Dirk answered. "Option #1: Patrol the Eastern Graveyards while the army holds funeral services for its fallen commander Marlon Kale. Stop any necromancers trying to reanimate in the graveyard, and destroy anyone or anything they manage to raise up."

"East Graves huge! Need many men. Not good."

Nuhoksa gestured 'thumbs down'.

"Com' mon," Dirk said. "Its 50, fifty, K. We've got a cleric now. What do you think Alrisiel?"

"I understand bards can use wide area debuffing magics through their enchantes. What kind of range do you have on that, Lady Graven-Cinder?"

"She prefers not to talk whenever possible, saves her voice. Call her Nuhoksa, and she's got a bit shy of 50 yards of range."

"And how big is the graveyard?" Alrisiel asked.

"Maybe 600 yards long by 200 yards deep," Dirk answered. "So what do you think?"

"We can do it. I'll bless your weapons, to make them more effective against the undead. We can set up a detection radius, and whatever debuffs Nuhoksa can lay down. The bardess and I can take up a central position, and you guys can roam and pounce on any threats that rise up. I've got Hod's healing magics to keep you going."

"The other job is escorting a merchant to Ale Bay. Its only paying 2.5 k and it would take us 6 days and leave us having to work our way back into the city after. We should really take this. What do you think?"

"It's early season. The dark companies will be very well stocked with the dark professions. But I guess, Kneegash can't resist a big monster bash. I'll do it!"

Nuhoksa was still and silent, and after an awkward moment nodded.

"The job's tomorrow. The funeral is at High-Noon but we need to be there by 10 I figure. Here's your inn tokens. Alrisiel, just talk to Earl, and he'll set you up with a room, that's what the token is for."

"I'll need a half hour with all of your weapons tommorrow to bless them. And Nuhoksa, I have to bless your arrows, so that'll take the longest," Alrisiel said. "Usually I work with Holy Hammers which I can quick recharge on. This will be dfiferent, unless you've had your weapons blessed before."

"We've never had a cleric. What cleric would have joined a Merc company before? With the church out of commission, I expect everyone to be hiring for all kinds of undead --- situations." Dirk said.

With that the group dispersed, each taking a inn token.

 Alrisiel talked to Earl and got her room key, and went in to relax.

Dinner was still hours away. The whole dissolution of the Church organizational structure was still too new, and shocking. She took a long bath and then spent a half-hour praying to Hod-Hera while still in her bath robes.

There was a knock on the door. Alrisiel blushed, she didn't want to greet anyone in just a bathrobe. She cracked open the door.

It was a city official. Something with taxes or the charter division.

"Alrisiel Carefore?" asked the official.

"Yes," she said, awkwardly, opening the door the rest of the way.

"2nd Sphere Cleric of Hod-Hera?" he asked.

"Yes."

The man in gold lined uniform took out a pouch from his satchel, opening it up, and starting at it, before nodding. He turned back to her.

"As a 2nd sphere cleric of the Church of San-Clare-Osco, defunct, you are entitled to compensation for lost seniority and retirement investiture."

He handed over the small pouch which jingled as it moved.

Alrisiel took the pouch, and briefly looked into it. It was filled with gold coins. The region's currency was based on coppers, bronze, silver and gold coins. These gold coins were worth 1000 credits each.

The official made his exit immediately, and she closed the door, placing the pouch of coins on the small bed while she got dressed.

She had a dozen similar Cleric outfits back at the church, but all of them but the one she had been wearing when she got the bankruptcy notice were considered assets of the church, and were liquidated as part of the proceedings.

So she had no option but to put back on the same outfit she had worn earlier. It was a white blouse with Hod-Hera symbols embossed, a pale blue skirt and a cloth sash which marked her as a 2nd sphere cleric with its two tassels wrapped in black leather cords.

She put the Hod-heran focusing amulet back around her neck. The amulet itself was white in parts, but mirror-like on four of the cubic faces. The necklace that bore it was delicate silver woven in small chain loops.

Her boots were well-polished, black and only went up to a bit above her ankle.

Her hair was golden and curly. She tied it back in a pony tail.

She eyed the pouch of coins. Must be at least 40k. There was actually a note inside, she didn't get a chance to unfold and read it though.

Another knock knock knock sounded on her inn room door.

"Alri," the gnome Kneegash shouted, as she opened the door. "Can I call you Alri?"

"Only if I can call you Knee," Alrisiel said dryly.

"Call me Gash, Alri. Hoksa and I are going to practice our skills at the training range. Wanna come/?"

She shrugged, and then turned, grabbing her staff and proceeded to follow them.

The "training range" was just down to the street from the tavern / inn.

Past a 24-hour Adventu-Bite, fast food joint, and past the Hammer and Blunt Weapons Emporium.

The sidewalk was full of every type of adventurer in every type of garb. They were all shopping or out and about for some reason.

Every type of vaguely or supposedly heroic adventurer that was. The dark professions had their own shopping and tavern districts on the other side of the city.

Thieves with a heart of gold, berserkers with a pint-sized pun-ferocity, and also clerics, paladins, rangers, warriors and wizards.

The training yard was packed full as well, but there were hundreds of dummies, and plenty of targets and other training equipment.

"We'll find an area with dummies and bullseyes," 'Gash said, mostly talking to Nuhoksa.

They walked through the huge building, and after several false starts, they found an area in the corner of the first floor.

"I can't use a lot of my spells in training. Orbs in particular," Alrisiel said.

Kneegash started attacking his training dummy from every angle, with acrobatic leaps and manuevers to move around the dummy and attack if from every angle. She almost thought the gnome was going to crash into her as she whaled on her dummy with her staff.

Nuhoksa took the training at a more leisurely pace, slowly drawing an arrow from her black quiver. The arrow seemed very long and barbed on the end. Her bow was no where to be found until it shimmered into existence, and she pulled back its string, nocking the arrow in place.

Alri stopped and watched the Dark Elf hold the bow with arrow taut for a long pause, following the arrow in flight as it embedded into the bullseye.

She focused back on her own dummy, casting the simple Centering spell with intention and a slight motion of her staff. Now she wouldn't be distracted by the wild gnome.

Fighting with staves allowed for extensive parrying and striking with both ends of the staff. The top of her stave was crowned with the enchantment sigils that give it magical power for use with spells.

There were a few spells she could cast without the staff, but mostly she was out of luck without it.

She focused on her footwork and parried blows that obviously didn't come from the dummy.

Small blades like what the gnome used were a lot harder to deal with, whereas she was quite adept at defending against two-hand swords and large blunt weapons with her staff.

After a while she stopped sparring with the dummy, noticing the wooden dummy was dented and scuffed up in many places where she commonly struck.

Gash and Hoksa were watching her curiously.

"I always figured it was the Hammer wielding ones to watch out for," Gash said. Hoksa nodded

"Most of my spells are either healing, blesses,.buffs or orbs. As long as no one needs any of that, I let my orbs do their work and switch to my stave," she said.

"When you say orb..." Gash asked.

"It's like a buffered attack spell. Its an orb of Holy fire, or Holy water that hovers above, and when it spots vileness it will use up that stored up power to attack whatever triggered it.

"If we had a thief in the company, I would worry about my orbs triggering on them, its not specifically targeted at my enemy. More like the Goddess it inhabiting the orb and deciding who and when to strike."

 "Wowsa. Well, you are a cleric of wonders and surprises. I've got a few flying daggers that will attack my enemies and protect me. Hoksa has a lot of clever tools though."

"Well, let's get back," Alri said.

Hoksa nodded, and lead them through the human (elven, gnomish, giant) wave of adventurers.

The street was utterly empty. That is, empty of sentients. Things were on fire, Zombies were shambling around, and spells were flying around, but people were concealed.

"Back inside, we need to gather up everyone!" Gash shouted.

Hoksa started to sing.

Fight, fight, fight. 
My friends, join our cause,
The vile ones come again,
As they have been,

Fight, fight, fight
Gather your courage,
Gather your friends,
Rally the banners,
Purify the hearts,
Bring forth righteous fury,
Upon this wicked night.

Alrisiel was transfixed by Nuhoksa's song. She hadn't said a word until she started singing.

People everywhere swarmed to her. Company leaders started to shout and talk with the others, and put together a plan.

Gash finally told her, "We'll be going out in the middle. There's some durable groups going out first, and then the bulk will get out there. If you can start blessing our weapons, that'd be great."

Alrisiel waved her staff carefully in the crowded hallway, focusing on Gash's first dagger.

Others started to charge out there. She worked on Gash's second dagger.

"I'll only have time to bless a few of your arrows, Nuhoksa," she said.

The dark elf handed three silver tipped arrows to her, drawing them out of the quiver with a long pull. They were each easily three feet long.

She focused on each one, handing them back after several minutes.

Slash and gnash and bash and crash,
Blitz and kick and bite and dash,
Hold back your mercy,
Release your hound,
Unleash the battle cry,
Plunge the blade down.

While Hoksa's war chant was going on, Alrisiel took a moment to perceive the undead that were outside. She couldn't use her orbs yet, but she could stun a half dozen of the mindless sorts for a few minutes.

"Now!" Gash shouted.

They ran out with a crowd of others, into the street where necromancers and sorcerers, evil rogues and other evil sorts were now fighting the heroes.

Alrisiel focused on her orb spells, triple-casting Orb of Holy Fire, and casting Orb of Holy Water once.

The orbs started to strike after the targeting period, which was only five seconds because of the undead around.

She saved the rest of her mana for healing and resurrection spells.

Kneegash had spotted a rogue trying to sneak attack someone, and the two of them were caught in a tango of daggers.

Nuhoksa was using her magical shouts to disrupt dark mages, while firing her bow at strategic targets.

Several of the buildings nearby were on fire.

She heard someone shout, "The inn's on fire!"

Alrisiel healed Hoksa from a gouge inflicted by a Tribal Barbarian, stepping into the fray, and smashing her staff at the barb.

It was a whir of staff and healing spell, and fighting music and no undead minions. Those who went before them must have swept the undead from the fray.

"Gash! Protect me!" she shouted, as she came to a dead woman's body.

"This seems like a bad idea," he said, but he threatened several attackers with quick dagger movements.

Alrisiel focused only on Hod-Hera.

"Do not let your enemy, oh Goddess, tear away life from those who protect your hearth. Let life ring out, let death be defeated. Jan-sara-kei, la so do marick Ludop Ra Sectum har Var Lasiter Medra Cell dran! Dimos! Dimos! Let your champion show your favor, so it may be revealed to the world, the name of Hod-Hera, protector of hearth, healer of all! Rise in the light of new Hope -- Eora Samarkin."

The Goddess revealed the woman's name for her as she asked for it.

As the woman coughed, Alrisiel's focus returned to the battle, and Gash, who was dashing from place to place in the circle around her and Eora. He was cutting, dodging, throwing sharpened stones, leaping, growling and winning, inexplicable against a torrent of bigger, meaner looking foes.

Eora picked up the wand that was beside her, and raised up off the ground, swirling the wand in a circle around them.

A great torrent of fire blasted in every direction away from them, inflicting grievous wounds on many of their foes.

Gash fell backward and Alrisiel caught him. He had a vacant expression on his face.

"His berserk is over," Eora said. "Now its our turn to protect him."

The Dark professions had an advantage in surprise, ferocity and willingness to abandon any scruples to get a win.

But they had a resilience in the face of danger, making many of the big scraps between the two groups all about time. The Dark folk needed to cause grievous harm before too long, and the Light folk needed to hold on, until their greater durability, persistence and mana would enable them to win the day.

The Dark Folk started to fall apart after Gash's stunt. The fighting continued at a fierce pace for a little while, but then their attackers began to flee.

The fighting had pushed Hoksa quite some distance from them.

"That was a near perfect resurrection. I had quite a lot of mana," Eora said.

The quality of your resurrection depending on your magical skill, but also your pure heartedness and skill in communicating with Hod-Hera. Clerics of other Gods would talk to theirs in a different way that Alrisiel did with Hod-Hera.

"Usually I can manage half mana," Alrisiel said.

"Wow, second sphere, and I'm sure you restored 80-90% of mine. That spell is a one use affect before I'm out of juice."

"What else do we need to do now?" Alrisiel asked.

"The rangers and sneaks will pursue and hunt down whomever they can. Help with the fire fighting."

It was late when she laid her head down in one of the temporary tents that had been set up while the inn was repaired.

She had been casting Orb of Holy Water near the fires until her mana ran out, and then waiting to recover mana, casting it again, and so on. And coughing at the smoke.


Friday, July 20, 2018

LP:EQO Chicken Nugget Orchard

I logged into the game after a long Tuesday. As a second year grad student, I taught two College Algebra classes and a Trigonometry class on Tuesdays. Then I had two hours of office time to prepare or grade, or work on my own homework and research.

It was the same every week focusing on teaching the same basic topics, and the class I was taking was focused on very fine grained study of functional analysis.

It was with a happy sigh that I sat down at 8, with a slice of pizza and a pony pad. Logging on, I remembered I was in the middle of who knows where, flying towards Hobby Bluffs.

I got acquainted with north pretty quickly, and started heading that way again. I enjoyed it a lot yesterday, and it was still fun today, but after an hour of flying, I was ready to do something else. Why so much distance to my new village?

Finally, I peaked down out of the clouds in hope, and I saw neat rows of trees about 20 feet tall each, with an elaborate series of fences and field access roads to get out to the fields, and pathways leading to sheds and storage buildings and finally a single two story home.

Having got a better sense of how to fly and land (the flutter button's sensor registers soft presses), I eased my way to the ground outside of the orchard's house.

Was it forward to ask for directions of a stranger? It was just a video game, but then again, the ponies seemed so real.

The air was cool and crisp, the sun was starting to dip below the horizon, and this orchard looked gorgeous, I found myself wanted to take a picture. There was no print screen button on the pony pad.

I decided to go for it, pushing the knocker against the house's main doorway.

"Just a minute, just a minute. Is that you Butterscotch Pudding?" a mare said from somewhere inside the door.

I heard a latch and a deadbolt releasing. I didn't know how to respond.

"Hmm I only installed these locks cause Saber Artist told me there's been some dangerous things out on the edge of town," the mare said, speaking mostly to herself.

The mare opened the door, and I didn't say anything. She was taken back a moment too.

"Ooh", she said, smiling and yet surprised. Her voice and demeanor reminded me a grandmotherly sort of pony. "Oh hi! It's not so often we have visitors out here at Chicken Nugget Orchard. Please, come on in!"

"Hi!" I said, "I'm so sorry, I got lost, and then I descended from above the clouds, and I saw your orchard, so I figured."

The grandmotherly mare interrupted, "Well of course, but there's a big haul of nuggets this week, lets dig into a few before you go, huh?"

"Where do you keep all your chickens?" I asked

"Well we keep them on the trees until they're ready to be picked, of course! And then put them in a bushel basket, clean em right up, and then they go into our big freezer. Come on in!"

So I boggled, confused, as I followed the pale purple pony with a golden mane.

The house was simple but classic, glossy wood floors and pine cabinets with chicken nugget charms on the handles.

"Just a moment dear," the pony said, and went out the back, as she sat down at the oval dinner table which was in the middle of the kitchen.

She came back with a baggy that looked exactly like chicken nuggets to me. They looked like the Tyson ones I had in my freezer.

"How do you prepare yours?" I asked.

"We've got Nuggeterators, if you end up liking these you can buy some at the farmer's market from us. Its an invention of Gold Nugget, my husband."

It was a machine with a wire mesh net which submerged into an oil basin like a fryer, but she pressed it down like it was spring loaded, and seconds later released, and the uncooked nuggets were suddenly perfectly well done.

"We've got Granny Apple's cider or Just a Peach's juice, which would you prefer?" she said, practically glowing with joy at having a guest.

"Thank you so much! Um, maybe Just a Peach's juice?" I answered.

The pony put the chicken nuggets in the middle of the table on a gold filigreed plate. It must have been a high carat, as it shined brightly.

My hostess pulled out a pitcher of the juice, and poured them both cups. The cups had ponies on them striking poses, but I wasn't sure who they were.

Finally my host sat down with me.

I hesitated until she said, "Dig in!"

My pony's mouth was full of a nugget when her first question came.

"Might I ask where you're from, and your name missy?" the pony asked.

I made sure Blue Yonder's mouth was not chewing before I answered.

"I'm Blue Yonder. I'm not really sure where I'm from. I just got my pony name yesterday!"

"Well, not only a traveler in these parts but a Visitor too? Would you be looking for Hobby Bluffs?"

I took a sip of the apple-peach juice, and said, "How did you know? Yeah I'm looking for Hobby Bluffs apartments. Princess Celestia told me to fly north and I would find it. I'm moving into town."

"A new resident! Wonderful!" the pony said sashaying and flipping her cup up into the air.

"Can I know your name, fair matron?" I asked.

"Oh, of course. I get forgetful. I was just practicing for tomorrow's Hobby Bluffs hobbython, It's got me loopy! As I said, my husband's Gold Nugget, and I'm Nugget Blossom!"

 "Oh hi, nice to meet you!"

"Eat your nuggets! They're healthy and right off the tree fresh!"

I settled down to eat some chicken nuggets and drink some juice.

Nugget Blossom ate some herself. "Sorry I got so excited sugar. It's just not often.."

"No one comes out this way?" I asked.

Another knock came on the door.

"She does," Nugget Blossom said, pointing to the door. "Just a minute, let me get that."

Butterscotch Pudding waved slightly, as they both came back to the kitchen.

"Butterscotch runs a bakery / confections shop in town. She's been helping me harvest while Gold Nugget is out of town."

"And I like to stop in anyway," she said. Her body was the color of butterscotch, she was an earth pony with short brunette hair.

"I'm Blue Yonder, just arrived in these parts."

"There's plenty more nuggets, 'Scotch, to pick and to eat," Nugget Blossom said, smiling.

'Scotch sat down and grabbed two nuggets, stuffing her pony mouth full.

"She had to run into town to make another batch of butterscotch hard candies. Morning and Night she's been picking with me. You can help too, if you want."

Swallowing hard, 'Scotch said, "It'll be great to have a pegasus helping. You can get the high ones without shaking them off. The main thing to be sure of, is that they are fully ripe. The unripe ones are not yet fuzzy, they are more smooth."

"Let's make sure Blue Yonder wants to help before we offer a million suggestions and rules. If you're tired, you can crash in the Butterfly Room."

"I'm up for it," I said. I could play for another hour or so without getting too tired. My first class tomorrow was Calculus for Liberal Arts at 11.

We finished off the nuggets, cleaned up the table and headed out to the orchard with bushel baskets in tow.

The Nugget family had a little zippy go cart which 'Scotch and Nugget Blossom climbed into. I put my bushel basket in the back of the cart with the others, and fluttered along flying above the cart.

I had something to do, a reason to control my flying again. It made it fun again as we collected the ripe nuggets. Surprisingly, 'Scotch caught me about to pick unripe nuggets three times. She seemed to know a lot about the trees.

The job seemed to go fast as we zipped around laughing and working away.

Finally, we were back in the kitchen, having a nice glass of wine from the local vineyard.

"How long does it take you to get back to town from here?" I asked 'Scotch.

"I've been borrowing dear Nugget's cart, and it only takes 10 minutes that way."

"Of course you can stay here or head into town if you have a place to go, dear," Nugget Blossom said.

"I'd love to come back and help with the harvesting again. Let me know when you could use me," I said.

"I will for sure. You sure make a fine guest."

"You make the best hostess, Mrs Nugget."

"There's a lot of wonderful farmers and craftsponies and all ponies around Hobby Bluffs. But she is my favorite for sure," Butterscotch Pudding said.

"I'd like to get back tonight, Princess Celestia already arranged me to have an apartment in the village. I'll for sure see you again soon, Mrs. Nugget."

"You will! The Hobbython is tommorrow, and I'll be coming into the village for it," Nugget Blossom said.

I assumed it was a local annual festival. "How many years of Hobbython have there been."

"Oh hon, we have hobbython every week. It's always a new hobby at someone's house, and most everyone in town checks it out and there's little prizes for the best at the week's hobby."

"Oh wow, that's amazing. Well I'll see you tomorrow then."

"You'll be the big star of the Hobbython, just coming into town and all," Butterscotch Pudding said.

"Get a good night sleep, hon. And be well, puddin'," Mrs. Nugget said from the doorway as they left the house.

"Come on, I'll give you a ride in the cart," Butterscotch said.

Thursday, July 19, 2018

LP:EQO, StAIlion

Saber Artist could have moved to Canterlot or another city that needed a city guard after his pa said he was ready. But, even though he came from a family of guard ponies, his aunt had gone off and settled in the small village of Hobby Bluff.

His aunt Heart Warden had said she needed an extra hand to help with the rash of recent incidents in town. So he went up north to help her. And everypony in town was friendly. They all invited him to the village's local activities, so he went and participated when he wasn't being sheriff or sleeping the day away.

His aunt Heart Warden had been the only guardspony in town, so his role was to take the night shift, and keep an eye around the village, patrol the bounds mostly. The residents were no problem, it was actually animals, and possibly a worrying mystery (or maybe nothing).

It had been a month and a half, and he missed his Ma and Pa, so he made the trip back to the Guardpony Training Center and nearby Shield Bay, where his Ma and Pa lived. It had been a nice week catching up with them, but they were both wondering when he was going to settle down with a nice mare. Auntie Heart tried to set him up before, but they weren't right.

Saber knew when the right mare came along, he would know.

So he was on his way back to his new home of Hobby Bluff, just outside Canterlot, when he heard and saw and knew.

Three other pegasi mares were flying around giggling when a fourth came flying low. He tried to get out of the way, and watched as she barely managed to make it over his head.

She didn't have a cutie mark, he noticed as she rushed away towards town.

So it was surprising to him, when a while later, as he was about to enter the castle to see Celestia, the same mare came darting out, and flew off in front of him again.

Her flying wasn't yet graceful, like she was still learning, but Pegasi learned these things so young. It was mystifying, and it seemed she was so excited to fly, yet obviously not a filly.

He was both confused and enchanted by the mystery pony.

He went in to see Celestia still thinking about her. Most likely she was off to her own village, and they wouldn't run into each other. But then again Princess Celestia had her ways and fateful encounters tended to come up again.

"Saber Artist, how was your family trip?" Celestia asked.

"Wonderful," he said. "It was a nice chance to go see how the new guardponys were doing too. And just spending time with Ma and Pa, and my cousins."

"I know it's big news when someone new shows up in your village, so I wanted to let you know first that there will be a new face. I would like to see all of you show your big welcome to Blue Yonder. She is a special visitor. That means she isn't always herself, if she seems non-responsive to anyone, it's best to leave her be until she comes to. Ask your Auntie, but I think it would be good for you to keep an eye on her and be a protector when she isn't 'responsive'."

"I know the city guard ponys have had some visitors in their guard troops, some of them have been rather loud and kinda aggressive, from the reports I hear. Will she fit it with Hobby Bluffs?" he said. He'd heard about the amazingly talented and powerful visitor-guardponies in Canterlot, but also heard about their oddities.

"Blue Yonder is much more of a curious sort of visitor. She loves to try new things, and is especially liking flying right now. You know how your neighbors love to try a new hobby, and have their block parties, or host game parties in their homes, Blue Yonder will fit in great! And actually, you've already run into her twice. She just came to see me before you did. She's blue with a darker blue mane."

He wondered why Blue Yonder would leave Celestia without getting sent to Hobby Bluffs by her.

"Blue Yonder wanted to fly her way up to the bluffs. Good for practice and enjoying her soaring."

"I should let the ponies on the outskirts of the village know, in case they find a lost villager," he said.

"I'll let you be on your way then," Celestia said with her princessly smile.

The doorway led straight into the Hobby Bluff's sheriff's office instead of back to Canterlot, due to the Princess' magic.

Auntie Heart Warden was sitting at a desk, going through their afternoon detective work. Normally there wasn't any of that to do, but with the animals let loose by who knows who and the mysterious string of thefts on farms around the village, there was.

"Nephew, you're back!" Heart Warden said. "Come here, this deserves a hug."

They hugged, and then he told his aunt about the trip, and about the newcomer Blue Yonder.

"I'm sure she'll be very nice and friendly. If Princess Celestia says she fits in, I can't doubt her."

He remembered how there has been unoccupied apartments in the top few levels of the big apartment complex in the village. He wondered why the little village needed a big apartment block, but all of the unmarried ponies in town lived in the apartment block.

Saber Artist had a nice apartment on the third floor, with plenty of room occupied with displaying and practicing with his sabers. Half of the apartment was taken by his dojo, and he trained curious village ponies from time to time, if they wanted to learn about sword arts. It was one of the ways he earned bits, in addition to working on cases and rounding up troublesome animals.

There were some pot-bellied pigs making trouble south of town last month. They even guzzled all of Maple Candy's syrup.

 "Well I'm glad you're back, I'd love to have your eyes on this case again. I'm going to get a quick nap in and then go to Silver Shoe's game night."

"Ok Auntie, I'll let everyone know when Blue Yonder shows up in town, and let me know if you see her first."

"I'll be sure too."

He sat down at the desk. Thinking about sweets made him look for some in the drawer where Heart Warden put them. Maple Candies too. There were only three left. He took one of the shamrock mints instead.

Maple Candy was gathering her maple syrup from the Maple trees now, so she should have a new stock of candies soon!

He thought about Blue Yonder, what was she really like, when she wasn't zipping past.

LP:EQO, Flying

Inspired / Based On:
https://www.fimfiction.net/story/127958/2/lets-play-equestria-online/
https://www.fimfiction.net/story/62074/friendship-is-optimal


I was filling out this questionnaire under duress after my friend swore up and down that this MMO based on ponies was so awesome and amazing. I guess he had some weird stuff going on in his head too.

There were a lot of survey questions, ones David had never mentioned getting. I punched in the answers on the pony pad. The game would somehow put me in a Shard that matched up with my preferences and help create my character through these questions, it said.

It was weird not answering the usual stuff, like gender, race, class, and adjusting portraits. City of Heroes had endlessly fascinated me with all the character concepts you could make, adjusting the flexible character appearance system with all the superhero tropes, and mixing and matching. Plus the fun mix and match of primary and secondary powersets.

Not much to do once you hit max level but create another character. I’d made 40 or 50, most of them throwaways, but a few favorites that I played more. Sewer runs were the best part. A bunch of people who didn’t know each other coming together to do a sewer run, was one of the best. Could never get a group to stick around much into King’s Crossing though.

But I digress. The survey questions where all situations, asking what I would do. Would I do the really bold aggressive thing and take charge of a group to work towards a solution (no, unless it was some kind of school project type of thing). I like to just go along with the flow. Being a guy and having to take charge and ask someone out was very difficult for me. I’d been setup once, but it never worked out for me.

My “shameful” secret was playing a lot a female characters in MMOs. Maybe I wanted to be swept off my feet instead. But that was stupid and embarrassing, I know. I’m a dude, and this game sounds like one that’s going to keep me as a dude, or ponydude.

My mind was wandering as I finished filled out all 20 detailed, complex questions.

The Ponypad went straight from a survey page with a blue background to a natural vista of hills, trees, white clouds in the sky, and a road leading to Canterlot, which was supposed to be where we are assigned a name by the supposedly smart AI.

Smart AI is relative, I thought, I’ll get some kind of stupid random name, most likely. Anyone can make a name generator from a corpus.

From what little David told me about this “pony-verse”, I realize the system had somehow created me as a female Pegasus.

I immediately experimented with flying. I had to tap one of the buttons on the pony pad to flutter up higher, and move the analog stick to move forward. I treated it like flying in City of Heroes, but it was so much better!

I even forgot about going to Canterlot right away, I flew up towards the clouds, and whooped down just above the trees. I even forgot to flutter once and mashed into a tree.

After a moment when stars flickered around me on the pad, I was able to get back up, and this time I headed towards Canterlot in the air. The sights on the ground were beautiful, but I was paying more attention to how cool the clouds were in this game, and the subtle feedback of going through clouds through the ponypad.

I actually saw some other Pegasi “mares” (that’s the word) flying nearby. I tried to wave, but I wasn’t sure how exactly to do that. Finally, after doing several amazing spins and rotations, I found the wave combo. They waved back and approached in the air as I was heading to Canterlot.

“I’m White Cloud,” said one. “These are my friends: Thunder Daze and Sky Hop!”

“Hi!”

David told me I had to use the voice chat in this game. But oddly, my voice came out different than  I spoke it. In the MMO, I heard myself in a mare’s voice, even though I obviously had a guy’s tenor voice in real life. Weird. What, was that a soprano voice they’d dubbed in for me.

I should try singing later and see how that translated.

“Hey what’s your name?” Sky Hop asked. She was sky blue with other colors that looked like the sky during a sunrise or sunset.

I almost said my real life name, but I stopped my self. “I don’t have one yet! I’m headed to Canterlot to get one, but I could just fly all day.”

Recognizing the moves I had discovered by mashing keys, I spun my pegasi clockwise all the way around and then descended, diving forward and down towards the road. The three pegasi followed me.

“Try to keep up with us!” Thunder Daze said, as she shot above a cloud, and then made the cloud shoot out a lightning bolt towards the ground.

I watched the flash of lighting, it was impressive, but it didn’t even affect the clay bricks that made up the road. The dirt nearby was marred however.

I swooped and rushed forward just a few feet above the road, but then I saw a unicorn stallion on the road, and had to tap the flutter button like mad to not run into him. I ended up leaping just over the unicorn and continuing on my way. Ooops, I should have stopped to say something, but I guess it was just an NPC, or maybe not?

The others were giggling as they swept past me.

“You almost ran into that stallion! Come on, let’s work on your clumsiness!”

“She’s almost to Canterlot. Head up to the clouds new one! Or you’ll bonk into the townspeople!”

I fluttered my way up into the sky, watching the more experienced flyers leave me in the dust. “Hopefully I’ll run into you again!”

“Of course,” Sky Hop said.

They laughed as they flew off in a gracefully arcing curve to my left.

I hopped and fluttered from rooftop to rooftop towards the castle where Celestia was, finally landing with a nice fluttery smooth stop.

It was weird walking again after all the flying. I made my Unnamed Pegasi hop, hop, hop every few steps as I climbed the steps into the castle. Suddenly I was in the throne room before I should have logically made it there. Weird.

I stepped into Celestia’s domain.

"Looking for your name?" Celestia asked.

I nodded.

"I can tell that you are interested in a lot of things. You'll find your apartment at Hobby Bluffs. You'll find that there are things to do every day. Check out the Odds and Ends shop."

"Ok thanks! Um, what should my name be?"I asked.

"I dub thee: Blue Yonder."

"Otherwise known as Wild?" I opined.

"You like to explore, whether it be flying through the sky or trying new things. Remember Blue Yonder, if you ever have any questions or need help, you can find me here!"

"Where can I find Hobby Bluffs?" I asked, wondering if she would just give me a quick way there.

"Fly north, and ask for directions. If you get lost, or end up in the Crossroads there should be a portal to take you there."

I smiled in the pony sort of way. "OK, thanks!"

Running down the steps, I launched into the air as I hopped the last one, soaring through the doorway and out into the sky.

It started to rain as I zipped away from Canterlot, but it was actually fun to feel and touch wet clouds and rain drops, and the charge of a thunderstorm not yet ready to zap.

After a few minutes in the rain, I rose above the clouds and watched the sun and the carpet of clouds below me. I could have missed Hobby Bluffs for sure, but I figured they were still further north.

I didn't have much time left, so I ended my session reluctantly. As stupid as the game had sounded, the flying was very neat. The tactile feedback in the pony pad almost made me think I was there in the clouds.

Monday, February 26, 2018

QGM Seasons with new PER calculation

Version 0.06 Playthrough


So I am going to play through several seasons with this new PER calculation.

My Team:

I picked the Muggle Artefact Investigators, under the silly idea that Arthur Weasley decided to coach the team. He loves trying these new Mugglicious ideas like analysis and Trust the Process.

Season 1:

The MVP was Luca Mitchell, with a OVR of 50. His PER was 30.5, which at least marches what we expect of an MVP.

He hit a good percentage of 2s and FTs, but never took a 3. His steals and blocks were decent, but he seemed to be excellent in ORB and DRB.

So my first conclusion, is I'm not sure about him having so high a PER, but it seems the game is valuing all player types once again. Which I didn't expect to see coming out of my model.

Luca was also defensive player of the year. I don't know where the Defensive award comes from, stat wise.

It might make more sense to do an real-life MVP adjustment in the future, as Luca's team didn't even make the playoffs.

The Muggle Artefact investigators struggled with injuries and poor performance all season, ending up 25 - 57.

Arthur lowered the ticket prices to get people into the stands.  The Magical Creatures down the hall had the biggest budget of all teams, with 166 million spent on payrolls.

2017 Draft:

Arthur picked Zach Read 7th, a 22 YO Forward 60/64 with 3 point tag, and Harriet Smith, a 22 y.o. small forward in the draft.

2017 Free Agency & Re signings:

Arthur wasn't attached to any of his players except the rookie Zach Read.

Many players up for free agency refused to resign with the awful Artefact team.

Isabella English wanted the max, and Dominic Briggs wanted 18 million. 

The salary demands seemed high, but reasonable enough based on overall ratings. Not ridiculous like before.

Arthur paid the young Briggs, but dropped English and two other atrociously bad players with overall ratings in the 20s.

Before signing anyone, Arthur had 38.5 million in cap space, but it seemed prudent to stay a bit more under the cap, until the team's financials were steadied.

Aya Higgins was all the team had for a Point Guard, at 45 ovr. Briggs, Booth and Read were a solid 2,3,4, with Booth and Read having seeker skills.

Wiktor Howard was a good center. Their bench had a little strength at Small Forward, but no back up guards or additional seekers.

Arthur went looking for a Point Guard, especially one with snitch skills.

Many players had a bad attitude towards Arthur when he talked with them, but Cameron Clark, 27 was willing to talk about a deal for a measley 3.88 Mill.









Arthur was able to sign Clarke for only a small premium over what other teams were offering, despite the fact that Clarke was insulted by Arthur's presence. 

[The fact that Clarke went for so little seems to be a goof in player FA values, but let's see how he plays.]

Clarke's PER was only 12.5 last year, so he may be more sizzle than sauce, but Arthur is willing to look for diamonds in the rough.

Next, he looked for a few young bench guys or gals.

He signs Isaac Cooper, for the flash, and Isla Hamilton, for her youth. 2.85 mill for Isla and 0.85 for Isaac.

He's now gone a bit overboard, stocking the PG position a ton. So he goes looking for another center.

He signs center Corey Bailey, who had a good PER, and a bench guy's OVR last year.

Training Camp

Briggs and Booth lose a little over their last season, Cooper and Hamilton also decline. And some of the back benchers are now so terrible, they won't play at all.

But Zach Read, #7 draft pick, improved, and some bench players like Higgins, Jones and Smith, improved.

Cooper takes Brigg's spot in the starting lineup, giving them a lineup of Clarke, Cooper, Read and Booth, fairly small, with center Wiktor Howard backing up the line.

Briggs is 6th man, followed by Jones, Higgins, Hamilton, Bailey and Smith.

Stevenson and Pierce are set to inactive status.



























2008 Season


Arthur is hopeful that his Artefact Investigators will get to 40 wins this year. Last year was bad, but he's planning on either going for it, or blowing the team up and rebuilding if it doesn't work out.

After 1 week of play, the team was at 3 - 3, which was on plan, but after 2 weeks, they went up to 8 - 5, exciting Arthur and the team.

They were on pace for the 15th seed. With 41 teams and only 16 spots, it took a good team to make the playoffs.

Playing Durmstrang in the first round would be a tough matchup, but Arthur knew their place, and the other of the teams at the top was going to shift. They had a chance to make the playoffs, so he kept with the plan of keeping this group together.

Unfortunately, they dropped to 14 - 17, after a few more weeks. And then free-falled to 14 - 24.

At 17 - 28, Arthur pulled the plug, looking for some trades to get off salary and get picks.

He wanted to trade his older players first, and only trade young guys if he got a killer deal. Most of the teams that needed to win now, didn't have any cap room to add though.

He was able to trade Leo Booth for 24 YO Humphries, a seeker paid only a bit more who seemed to be better at 8 years younger. He couldn't find any draft pick deals, however.

He decided to play out the season, and work on gradually getting the team younger.

They ended up going 32 - 50, only 7 games better than last year, and well short of his goals for the team.

It was time to dump salary and go for a #1 pick next year.

Once again, a center won MVP. A center with 0 snitch catches all season.

Pre-2009

Arthur upped spending on facilities and coaches, scouting and health, because they made so much money from their share of the luxury tax paid by other teams.










The Draft Lottery was an amazing victory, as despite having only 8 balls in the lotto, the Muggle Artefact Investigators ended up with the #1 pick.

Benjamin Heath, another Point Guard, was the best option available. He was already 22, but the other players were not nearly as good, since he already had a 68 ovr. WiArthur picked a center in the 2nd round.

Wiktor Howard refused to resign, and Arthur was fine with that.

Stevenson, who didn't play last year, wanted 26 million, gone. He kept Aya Higgins, but dropped the other restricted free agents, for age or bad play.

Arthur didn't get involved in the Free Agent market at all. Leaving his roster at Heath and Clarke, starting PGs, dropping Cooper to the bench. Briggs, Read and Humphries rounding out the starters.

In a lot of good news, Heath got better during pre-season, and Briggs made a HUGE improvement to 68 OVR. 

However, there were no good centers left on their roster. Arthur wasn't sure whether to omit playing a center at all, or to put Corey Bailey at starting center. He went with the more radical idea.

Except for Briggs, everyone on the starting lineup had seeker skills. Higgins also made another big jump in pre-season, and was a good player off the bench. 

The lack of rebounding or defense was a huge hole.

The team didn't tank, getting 39 wins, but it also didn't make any satisfying progress, missing the playoffs.


Summary

The game itself seems to work fine. I could get into roster changes, position changes, or other heavy alterations, but I realize from playing it, that it still feels like the NBA cycle of boom or tank. 

I've decided to work next on changing the League structure to feel different, more like a feeder system than an NBA system.

My next post will be on these changes.

Quidditch GM: Winning Probabilities

Hyper-Simple Model


Let's start with a very simple model: The home team has possession, and the score is tied.

Consider W_H(poss, d) to be the probability the Home team will win if the poss team has the ball, and if they have a score differential of +d.

We'll assume later based on mini-maxing, that the best decision was made at each point, but this is a crude decision tree, where the team with possession can decide to shoot a 2 or a 3 at each possession, there are no turnovers, and possession goes back and forth every time.

Let's further assume that Home and Away have the same odds for taking a 2, or a 3. G, for goal, is the chance of making a 2, S, for snitch,  is the chance of making a 3. For now, exclude the idea of free throws.

Generally (if we assume ties when the snitch is caught are 0.5 wins in value, and toggle(poss) is the function from home to away and away to home):

W_H(poss, d) = [3] (S (sgn(d + 150) + 1) / 2 + (1 - S) W_H(toggle(poss), d)
                           [2] (G W_H(toggle(poss), d + 10) + (1-G) W_H(toggle(poss), d)

  

The (sgn(d+150) + 1) / 2 is just a part that returns 1 whenever d + 150 > 0, 1/2 when d + 150 = 0, and 0 when d + 150 < 0, corresponding to winning, tieing, or losing).

The sign function is awkward for doing math with, but we can approximate that expression  with (tanh(k (d+150)) + 1) / 2

Choosing K:

K = 1 is probably too sharp. It goes from 2.06E-9 at -160, to 0.5 at -150 to 1 at -140.
K = 0.1 might be reasonable. 0.12 to 0.5 to 0.88

I choose K = 0.05 because it goes 0.11 at -170, 0.27 at -160, 0.5 at -150, 0.73 at -140, 0.88 at -130, bnut still converges nicely.

Call A_H this approximate version:

A_H(poss, d) = [3] (S atanh(0.05 (d + 150)) +1) / 2 + (1 - S) W_H(toggle(poss), d)
                          [2] (G W_H(toggle(poss), d + 10) + (1 - G) W_H(toggle(poss), d)

For sub-problem 1: Let's assume Home always shoots 3s, and away always shoots 2. Then we don't even need to mess with this formula, because of a simple fact: Since Home always shoots 3s, they will never get their scoring differential closer. So once Away takes it to a 150 point lead, they can only tie, and once Away takes more than a 150 point lead they win.

So what is the probability that Away makes N goals before Home makes a snitch?

This is getting to a simpler combinatorics problem:

Start with N = 1, Away has to make 1 goal before Home gets the snitch, but Home gets to go first

Paway(1) = (1-S) G

Then consider arbitrary N

Paway(N) = (1-S) G Paway(N-1) + (1-S) (1-G) Paway(N)

Collecting terms:

(1 - (1-S) (1-G)) Paway(N) = (1-S) G Paway(N-1)

This is a simple geometric recurrence.

(1-(1-S-G+SG)) Paway(N) = (1-S) G Paway(N - 1)
(S+G-SG) Paway(N) = (1-S) G Paway(N-1)

Paway(N) = (1-S) G / (S+G -SG) Paway(N-1)

So Paway(1) = (1-S) G
Paway(2) = (1-S)^2 G^2 / (S+G-SG)

Paway(15) = (1-S)^15 G^15 / (S+G-SG)^14

Probability of the away team winning or tying is thus this value.

Let's assume S = 0.01

P15 = 0.99^15 G^15 / (0.01 + G - 0.01 G) ^ 14

Let's look for G where
P15 = 0.5

There are 20 pages of players with 3P % > 1% in the current season of QGM. So that is a very low mark. Some have as much as 6.8% 3PM.

0.865 G^15 / (0.99 G + 0.01)^14 = 0.5
G^15=0.578 (0.99 G + 0.01)^14

Real solution:

G = 0.6278

So that's lower than I thought.

What about for S = 0.03 (top 20 in the QGM are at this level or higher)

0.633 G ^ 15 / (0.03 + G - 0.03 G) ^ 14 = 0.5
0.633 G ^ 15 / (0.97 G + 0.03) ^ 14 = 0.5

G = 0.85033

General case

Prob Curve: Roughly speaking, 1% better in 3P% requires 10% better in FG% to match up.

50% line -

if 2P% = 0.55 + 0.1 3P% then V(2P%) ~ V(3P%)

If we change the 3P line for PER from 28 to 9 (9 + 1 = 10, 10x value of 2s) will it make more sense?

The negatives are happening through other parts of the formula.

Let's make our own Monte Carlo model and conclude the value of attributes.

Variables:

Pr_2 : propensity to shoot 2
2%
Pr_3 : propensity to shoot 3
3%
FR : rate of free throw chances
FT%
B% : Block %
S% : Steal %
DRB%
ORB%

For each side play hundreds of games, and see how many wins with different combos of stats.

Let's get a range of values for each of these variables to test within, and then I will write up the simulator in F# since I'm familiar with that, and it's a fun little test project:

From the player stats for QGM:

3 PT FGA / all FGA = Pr3 ranges from 0% to just over 40%

Let's model from 0.0 to 0.5 for Pr3 (Pr2 = 1 - Pr3)

FTA per 2 PT FGA : FR ranges from 0.08 to 0.53

Let's model from 0 to 0.6 for FR

FT% ranges from 15% to 50.8%

Let's model from 0.10 to 0.60

2 fg% ranges from 0 to 0.2
Let's model from 0 to 0.3

3 fg % ranges from 0 to 0.068
Let's model from 0 to 0.08

B%

We have block stats, but not enough data for a perfect block% stat

Let's look at FGA / minute on average. 0.284

Consider B% to be Blk / 0.284 Min
Consider S% to be Steals / 0.284 Min

How do we estimate a player's ORB% and DRB% when these have to be balanced so that P1 ORB + P2 DRB = 1 and P1 DRB + P2 ORB = 1 for each matchup of players?

Scale ORB / Min and Oppo's DRB / Min so that these are one, and likewise the opposite.

Our EST B% goes from 0 to 0.23. Let's take it from 0 to  0.25
Our EST S% goes from 0 to 0.26. Let's take it from 0 to 0.30

ORB/Min goes from 0 to 0.21. Let's take it from 0 to 0.22
DRB/Min goes from 0 to 0.59. Let's take it from 0 to 0.65

0.284 FGA / minute * 48 minutes * 20 quarters max = 272 possessions each until the model considers it a time runs out scenario, and picks the player with higher score as winner.

Round to 280.


Model


The Monte Carlo Model creates N distinct samples within these bands, and pairs them all off, for X round robins, to generate X*N observations of for each sample. The number of wins is totaled for each and the samples and their wins are returned.

I was thinking 1000 samples, and 1 round robin to start.


Run 1 settings:

    let qparams =
        {
            Prop3Pct = Band(0.0, 0.4);
            ThreePTPct = Band(0.0, 0.08);
            TwoPTPct = Band(0.0, 0.2);
            FTPct = Band(0.15, 0.6);
            FTPer2FGA = Band(0.0, 0.6);
            BPct = Band(0.0, 0.25);
            SPct = Band(0.0, 0.30);
            ORBRate = Band(0.0, 0.22);
            DRBRate = Band(0.0, 0.65);
        }

    MonteOutput.runMonte qparams 1000 1


Still running after 6 minutes. I don't know if that's a bug in my model or just that running a 1000 * 1000 sims its taking that long.

I bailed out after 9 minutes, and decided to try 10 samples as a test to see if the model code was working at all.

    MonteOutput.runMonte qparams 10 1

When 10 samples took over a minute, I bailed out. I ran 2 samples, and then broke into the debug menu.

Possessions left is showing at 782041226, which is way bigger than 560. Somehow my possession tracking was screwing up.

I was setting netPoss to negative, but then subtracting it, so I outsmarted myself and possessions were going up.

Now, running with 2 samples finished within a second. Running for 100 samples finished in a few seconds.

1000 samples took about a minute and a half. So then I opened the results in excel.

I ran Excel regression on the results.

My model must still be broken because 3P% shows an extremely negative coefficient of -1913, while 2P% shows positive. My model was symmetric, and was accidentally crediting the opponent with catching the snitch.

After a fix to the recursive call in my model, I tried it again. Unfortunately this change broke tail recursion, so I wasn't sure if it would overload the stack, or take way longer.

It didn't seem to take any longer though, so once again I looked to the results. This time, the model made more sense.

  Coefficients Standard Error t Stat P-value
Intercept -262.61 14.04 -18.70 4.49E-67
3PA/FGA 846.70 21.00 40.32 4.41E-211
3P% 4807.28 105.96 45.37 5.23E-244
2P% 744.02 41.03 18.13 1.11E-63
FT% 92.96 18.06 5.15 3.20E-07
FTA/2PA 113.19 13.75 8.23 5.71E-16
B% 388.90 33.09 11.75 6.10E-30
S% 455.97 27.69 16.47 4.97E-54
ORBR 570.00 37.52 15.19 5.29E-47
DRBR 248.31 12.65 19.63 1.04E-72


New PER Model

Calculated Params:

2P% = (FG - 3P) / (FGA - 3PA)
FTA / 2PA = FTA / (FGA - 3PA)

B% = B / (0.284 * Minutes)
S% = S / (0.284 * Minutes)

ORBR = ORB / Minutes
DRBR = DRB / Minutes

3PA / FGA : self explanatory


uPER : -260 + 850 3PA / FGA + 4800 3P% + 750 2P% + 90 FT% + 110 FTA/2PA + 390 B% + 450 S% + 570 ORBR + 250 DRBR

PER = uPER / (avg uPER) * 15

This should result in an average of 15, the EWAs and baselines by position may need change later, but for now, leaving the replacement PER at around 10 makes sense.

Being a relative novice to javascript, I've made my changes, but we'll see if they crash or not.

Here we go:

>npm run build
and
>npm start


Running a month, I noticed all PER was being set to 0.

After debugging, It looks like there's no Three Point attempts stat being carried over.


We can run another model, and do 3 per FGA, 2 per FGA and FT per FGA, instead of using the per 3pa or per 2pa stuff.

A lot of the P values seem even stronger in this model:

Intercept -51.94 10.54 -4.93 9.7E-07
3P/FGA 21847.30 327.85 66.64 0
2P/FGA 983.33 49.26 19.96 8.75E-75
FT/FGA 473.10 36.41 13.00 9.04E-36
B% 364.34 32.83 11.10 4.72E-27
S% 457.75 26.64 17.18 4E-58
ORBR 529.70 36.80 14.40 8.26E-43
DRBR 257.49 12.53 20.56 1.65E-78

So, I will do:

uPER = -50 + 22000 3P/FGA + 1000 2P/FGA + 480 FT/FGA + 360 B% + 460 S% + 530 ORBR + 260 DRBR

Building and trying once again:

It worked! Or at least the PERs are not 0.

Let's test with Katie Jones, a PER leaderboard entry who is a Big (Wo)Man, and Leo Howe, the current PER 2nd place, EWA first place leader

Jones: 52.4 min, 3.6 FG, 28.8 FGA, 0.1 3P, 2.0 FT, 6.6 ORB, 19.9 DRB, 2.8 S, 2.7 B

Howe: 70.6 min, 2.8 FG, 30.4 FGA, 0.3 3P, 2.9 FT, 0.8  B, 4.3 S, 5.6 ORB, 14.5 DRB

Jones uPER: 498.6116
Howe uPER: 503.5859

Jones: 33.7
Howe: 34.1

So the scaling factor is around 14.76 uPER per regular PER.

It looks right!

EWA is also looking right. It is calculated based on PER and minutes played.

Offensive Wins and Defensive Wins are still screwed up, but I don't think those affect player valuation the same, so I can worry about that later.

Time to start a new league with the new valuations, but that's for another post.

Friday, February 23, 2018

QGM: Playing through some Seasons with the busted PER / Player EVAL

I don't have a simple answer for Quidditch PER rating yet, so I'm going to play a few seasons.

To make it fun, I'm going to exploit the AIs as best I can. So far, in Quidditch GM, bigs are basically worthless. I want to add in Beaters and bludgers to fill that gap, but for now I'm going to trade all my bigs away before their crappy adv. stats make them worthless.





















Trading away Ashton Wilson, Sophie Adam, Kate Mason, Chloe Weaver
Let's see what I can get for them:

Wow, Look at the Offer for Weaver (41 OVR):








I'll take that.

Next, I got
Sophia Saunders 3BPs PG 33 52 52

Not great, but better than what I traded.

For Hannah Bruce:







Not bad.

For Kate Mason:

There's a killer deal on the table with a 69 rater, but my cap space is too full for it.

Instead, I got a second round draft pick, and a 58 OVR 3 pointer.

For Sophie Adam:

Not a whole lot, so I'll keep 1 big I guess. I look with my other big, and I've either got too much salary, or the low hanging fruit is already picked over. So enough of that. Time to look at my new Ravenclaw roster:



















It's not a great team, but way better than before for catching snitches.

Let's see how I do: I'll sim 40 games, and then I want to do a Live watch of one, and then make a few more trades and sim out of the season.

My team started the season like 1 - 7, and now have climbed up to the bad territory of 17 - 21.

Let's pretend that the PER displayed makes sense, then I have a negative PER player on my starters, and a 80 per player on my bench. Let's sell the bad PER player.




I'll trade him for





I'm setting 0 minutes for my 3 players with PER of -10. What will happen?

Live Game Time:

48 minutes a quarter make these long

46:03 - CHU - Evie Hawkins grabbed the defensive rebound
46:03 - RAV - James Lee missed a three pointer
46:18 - RAV - Priya Thompson grabbed the defensive rebound
46:18 - CHU - Evie Hawkins missed a dunk/layup
46:32 - CHU - Mohammed Thomas grabbed the defensive rebound
46:32 - RAV - James Lee missed a three pointer
46:47 - RAV - James Lee grabbed the defensive rebound
46:47 - CHU - Bethany Nelson missed a mid-range shot
47:01 - CHU - Emil Hills grabbed the defensive rebound
47:01 - RAV - Priya Thompson missed a three pointer
47:16 - CHU - Mohammed Thomas made a low post shot (0-10)
47:30 - CHU - Evie Hawkins grabbed the defensive rebound
47:30 - RAV - Priya Thompson missed a dunk/layup

ZZZs

0:00 - CHU - Summer Jones made a three pointer shot (assist: Emil Hills) (40-185)

First Quarter Over, Game Over.

So now, I want to hand calculate and add up all the unadjusted PER at the end of the season, and see if I get a negative total.
Simming the rest of the season.

Wait, I stopped the sim. All of a sudden, I went on a tear, up to 38 - 33. By Zeroing out these negative PER performers.
Let's see how my weekly standings go from there?

But wait, let me give my roster + and - based on time. I have another player that needs to stop playing according to PER. He has -60 PER
















Here we go, was it my -60 PER player responsible for success:

3-2 Week
0-5 Week

HMM.

Let's try the playoffs on the opposite assumption: that our negative PER players are the best.
Woops, I missed the playoffs with that last slide.

Is my league average unadjusted per still negative? With the 3P term below replaced with 28 * 3P





It comes to my mind now, that since 3 pointers are so hard to make now, and since they are worth so much, Winning is WAY more random at this point. 
Your opponent can always score a three.

3 Pointers Made / Game vs. Wins










The system can't record more than 1 decimal point for 3P / Game, so there are bands, but the correlation is very clear. However, if you look at 3PA / game: 3 Attempts are slightly positively correlated with winning.











Excel doesn't let me regress more than 16 variables with Wins. And, it's probably stupid to regress that much with only 41 data points.

What about 20 seasons?
Turn on God Mode, and run some seasons. I know how to make Excel do regressions, even if it's own tool doesn't for more than 16 vars.







With the correct end of game rules and the lower fatigue, 20 seasons didn't take that long. Ever since I set the population for the school teams lower, they have had a lot less success, my Ravenclaw team only made 4 playoffs in 20 years.
No 1 team won more than 2 championships. Durmstrang was the only Scholastic team to win, and they had 2.
Stats time:
While compiling stats from 20 seasons, I discovered a bug in my Teams. Somehow the team code BAL is showing up in Team Stats 11 times! They all show up as Ballycastle.
I've got 4 teams with the same 3 letter code (BAL), and they all show up as Ballycastle when you click on them in the UI. Oops.
Looking at my JSON file, let's see:
Ooops!, all the new teams I added from the Irish and English Quidditch league, I forgot to change their initials.
I wonder if Basketball GM looks up teams by initials for stat calculations?
So, let's play a season with teams that have correct 3 letter codes and see?
PER definitely looks a bit more reasonable, still a lot of high values all over the place, but no crazy negatives, at least on my team.
The player with the best PER has Three Pointers: 91.
Durmstrang won 26 games, but has a player with 351 EWA. Something's still way off, but it's closer.
According to the js file, someone with 351 EWA would be following this equation:

EWA = players[i].stats.min * (PER[i] - prl) / 67 / 30 * 0.8

The 351 EWA player has: PER 72.2
14432 minutes : 185 m / game
Hallie Marsh is a PG. PRL for PGs is 11

185 * (75 - 11) / 67 / 30 * 0.6 = 
If we plug in her full minutes, I get 367 EWA.
Let's get the actual average PER by position, for curiosity. I can't get all of the player PERs at once in BBGM as it currently works.
So I'll export the json. I can't easily get each PER by position without diving into working with JSON in more depth, but I can get the overall distribution of PERs, by sorting all lines in Notepad++ and copying the lines with per.
Average PER: 10.93
(per is supposed to be average 15.)

Average of Positive PER: 25
# of Positive PER Cases: 407

Average of Negative PER: -13
# of Negative PER Cases: 236

Bar Chart of Quidditch PER










It looks vaguely normal-ish.
NBA PER Bar Chart










The Two shapes are broadly similar, just translated and stretched differently.
QGM PER has a mean of 10.93, median of 8.35 and st. dev of 25!
NBA PER has a mean of 14.43, median of 13.9 and st. dev of 4.75

QGM's median is lower relative to mean than NBAs.
I don't know much about advanced statistical numbers like moments and skewness and kurtosis, but let's look at them.
They both have positive skew, but QGM is at 0.41, while NBA is at 0.58.
This means their right tail is longer, but it's less so for QGM.

I'd like to go back to first principles and figure out what stats relate to winning for QGM next post.