#easy to read. easy to debug.
Explore tagged Tumblr posts
kkmcshouty · 2 months ago
Text
Tumblr media
More code stuff cause funnily enough this is somehow easier to post progress on than actual art. That said, I'm slowly but steadily building my own stream overlay for twitch!
Worst part of this is was the fact that the documentation would have you think that you need to replace the emotes one by one in the code (since the emotes start as just text) but NOPE. When getting the chat messages through StreamerBot there's this fun little section titled "parts" which has the message pre-setup and ready to go in cute little pieces, telling you if they're emotes or normal text or not and they're all in order too! Unlike the section labeled "emotes" which for SOME reason is sorted by id and not position.
tl;dr/say that again in english: I wrote 300ish lines of intricate code just to find there was a simpler way to do it. So simple I'd say it would be usable to teach to beginners as an example project ;; I was able to reuse about 50 lines with minor modification but man. I wasn't expecting EMOTES to take two 9hr days to properly code in
1 note · View note
quihi · 5 months ago
Text
One of the best times I had TAing in college took place the first week or two of a freshman programming class. A student needed help; it was my turn to go.
"What's up?"
"I got an error."
(Now, some of the error messages, you basically have to be told what they mean the first time, because there's a wall of text that doesn't get to the point or it's a topic that wasn't directly taught. But some are self-explanatory.)
"Did you read the error?"
"Yeah."
"Read it again. Out loud."
The student gave a huff, and started reading: "Expected semicolon on line 157
 oh."
He scrolled to line 157, and swapped the commas for semicolons. The code compiled.
never forget the universal rule of the order of things: People Will Not Read It
88K notes · View notes
annafayeink · 3 months ago
Text
All I Ever Wanted
Tumblr media Tumblr media Tumblr media
Summary: After weeks of late nights and playful banter, Lu and his project partner find themselves drinking a little too much on Valentine’s Day and spilling some unfiltered truths.
Warnings & tags: Friends to Lovers, Fluff, College AU, Mutual Pining, Drunken Confessions, Truth or Dare Gone Wrong (or Right?), STEM Nerds in Love, One-Sided Pining (but not really)
Wordcount: 11217 (it's a long one for me...)
Read on AO3
The hum of the computer lab had become their second heartbeat through weeks of late-night debugging sessions, endless energy drinks and heated debates over syntax errors.
Lu leaned back in his chair. The flickering glow of monitors cast a tired haze over his face as he stretched his arms over his head with a groan. “I swear, if I have to debug one more line of code, I’m gonna start throwing things,” he muttered, rubbing his eyes.
Across the table, his project partner smirked, barely glancing up from her screen. “That’s funny. I was just thinking about how much fun it would be to fix your broken code for the third time today.”
Lu scoffed, spinning in his chair to face her. “Excuse me, but my code is art."
She snorted. "Your code could be catching flames in a paper bag on someone’s porch, and you know it."
He laughed out loud, but exhaustion weighed on both of them. The project was nearly done, but the stress of perfecting it had left them both frayed at the edges.
“Alright, I think
 I think that should do it,” she muttered, sitting back and running a hand down her face. Her hair was slightly disheveled, and the oversized hoodie she wore had slipped off one shoulder, revealing the strap of her tank top. “Run the test again.”
“You say that every time. You’re like an optimist with Stockholm Syndrome.”
She threw a crumpled candy wrapper at him. “Just do it.”
He smirked and hit the compile button. The two of them leaned in, watching the lines of code execute. A pause—then the program ran cleanly. No errors. No warnings. Just success.
For a moment, they just stared at the screen, the weight of weeks of sleep deprivation, stress, and too much caffeine finally culminating in this single, victorious moment.
Lu grinned. “Holy shit, we did it.”
“We did it!” she echoed, and then to his surprise, she flung herself at him, arms wrapping around his neck in an exuberant hug.
He caught her easily, laughing as he steadied them both. She smelled like vanilla and old books, and for a second, Lu had the ridiculous urge to close his eyes and just breathe her in. Instead, he let his hands settle briefly at her waist before she pulled back.
Then he shook his head, still grinning as he looked at her—really looked at her. The spark in her eyes, the way her nose scrunched slightly when she smiled too hard, the pure, unfiltered joy radiating from her. He felt something settle in his chest, warm and steady, and almost too easy to ignore—if he were the kind of guy who ignored things like this.
“This wouldn’t be possible without you, Pip.”
Her smile softened at the nickname, one he’d given her ages ago when she’d admitted, in passing, that she’d always loved Great Expectations as a kid. Something about underdogs, she’d said. Something about wanting to prove people wrong.
Now, she rolled her eyes but didn’t try to hide the way her lips twitched at the edges. “That’s a lie and you know it.”
“It’s not,” he said, nudging her shoulder with his. “You’re kind of a genius, you know that?”
She scoffed. “Oh, so now you think that? Not when I was sleep-deprived and rambling about recursive functions at 3 AM last week?”
“I mean, that was terrifying, but still impressive.”
“We deserve a break,” she declared, gathering her things. “And since it’s technically still Valentine’s Day
” She checked her phone. “Yeah, not midnight yet. We should celebrate.”
Lu arched a brow. “You wanna celebrate Valentine’s Day?”
“No, dummy.” She shoved her laptop into her bag. “I want to celebrate not wanting to throw myself off a bridge because of this project. Come on, let’s go get drinks. First round’s on me.”
He chuckled, shaking his head, but there was no way he was saying no to spending more time with her. Not when she was already pulling him to his feet, eyes bright with excitement.
“Alright, alright,” he said, letting himself be dragged toward the door. “But if you end up drunk and sobbing about your ex, I’m leaving you at the bar.”
She laughed. “Joke’s on you—I don’t have an ex to sob about.”
Lu paused, watching her for half a second longer than he should have.
Interesting.
They walked side by side through the nearly empty campus streets, the occasional couple passing them, hand in hand, lost in their own little Valentine’s Day world. Pip made a show of gagging at a particularly sappy-looking pair sharing a scarf, and Lu nudged her.
“What, jealous?”
Of that?” Pip made a face. “Please. That’s a level of codependency I aspire to avoid.”
Lu smirked. “Says the girl who texted me at 2 AM last week because she couldn’t decide if an array or a hash table was the better choice for our sorting algorithm.”
“That was important,” she said, pointing a gloved finger at him. “And you were awake, don’t even pretend you weren’t.”
He chuckled. “Yeah, because I knew you’d overthink it until sunrise otherwise.
She sighed dramatically. “See? This is why I keep you around. You know how to manage my spirals.”
Lu smiled fondly at her back as they turned the corner onto the main street where their favorite little bar was tucked between a bookstore and a laundromat. The neon Open sign glowed warmly against the dark, and the window was fogged up from the heat inside.
The bar was just off-campus, a warm little hole-in-the-wall that smelled like whiskey and old wood. It was quieter than usual, probably because everyone with actual Valentine’s Day plans had gone somewhere fancier.
They slid into a booth near the back, ordering beers to start. Then Pip tucked her hands into the pockets of her hoodie, shrugging with a sort of distant look in her eyes. “I just think some people get way too into Valentine’s Day. Like, it’s all manufactured romance, you know? What, you need an official day to be romantic? Either you love someone or you don’t.”
Lu arched a brow. “So what, if you ever fall in love, you’re gonna refuse to celebrate Valentine’s Day out of sheer principle?”
“Obviously.” She shot him a pointed look. “If my hypothetical future partner ever tries to do some over-the-top grand gesture on February fourteenth, I’ll just break up with them out of spite.”
Lu let out a low whistle. “Harsh.”
“Necessary,” she corrected. Then, after a pause, she added, “Though, I guess, if someone really knew me, they’d probably just take me for drinks and let me rant about AI ethics or something.”
Lu laughed. “Ah, yes, the way to your heart—alcohol and an existential crisis.”
“See? You get it.” She grinned at him. “Maybe you should be my Valentine.”
Lu gave a laugh, deciding against analysing why that idea just felt right.
“Okay, but for real,” she said, after their drinks arrived. “If you had a partner, what would you do?”
Lu glanced at her over his beer. “You mean for Valentine’s Day?”
Pip nodded. “Yeah. Say you actually had someone. What’s your move?”
He thought for a second, fidgeting with a peeling corner of the label on his bottle. “I don’t know. I feel like grand gestures are overrated. I’d want to do something that actually means something to them.”
“Like what?”
Lu shrugged. “Depends on the person. Maybe cook for them, or take them somewhere they’ve always wanted to go but never had the time. Or just
 spend the day doing nothing together, but in a way that still feels like everything.”
Pip was quiet for a beat, then let out a laugh. “God, that’s disgustingly sweet.”
“You asked,” he pointed out with a shrug.
She took a sip of her beer, and suddenly her eyes lit up with an idea. “Okay, Lu, truth or dare?”
He huffed a laugh. “What are we, twelve?”
“Come on, it’s a classic. And since we don’t have exes to sob about, we might as well make the night interesting.”
He tilted his head, considering. “Fine. Truth."
Pip leaned back, swirling her drink as she considered her options. Then, with a small, mischievous smile, she asked, “What’s something you’ve never told anyone?”
Lu arched a brow, taking a slow sip of his beer. “Damn. You’re going straight for the deep cuts, huh?”
She shrugged. “We’ve been in the trenches together for months now. I think we’re past the what’s your favorite color phase.”
He tapped his fingers against his bottle, thinking. There were plenty of things he didn’t talk about—most of them too boring or too complicated for a casual drinking game. But then, without really meaning to, he found himself saying, “I almost dropped out last year.”
Pip’s brows lifted, her expression shifting from playful to surprised. “Wait. What?”
Lu exhaled, rubbing the back of his neck. “Yeah. I mean, I didn’t tell anyone, obviously. But I was seriously thinking about it. Everything felt like too much, you know? The pressure, the expectations, all the shit I thought I was supposed to be able to do but couldn’t. I started wondering if maybe I was just—” He made a vague gesture. “—burning time on something I’d never actually be good enough at.”
Pip didn’t say anything right away. She just watched him, her head tilted slightly, like she was seeing something new in him. Then she said, “What changed your mind?”
He let out a quiet chuckle, taking another sip of his beer. “You, actually.”
Pip’s eyes widened. “Me?”
“Yeah. You remember that night we pulled an all-nighter working on that neural net assignment? I was this close to just walking away from it all. But then you—” He shook his head, grinning at the memory. “You showed up with, like, three energy drinks, a bag of gummy bears, and a completely unhinged rant about how we were not going to let a buggy dataset ruin our futures.”
Pip laughed. “God, I barely remember that. I was so sleep-deprived I think I started speaking in binary at one point.”
“You did. And you know what? It was weirdly inspiring.” Lu smirked. “Somewhere between you threatening to ‘personally fight every faulty training model’ and the moment you fell asleep face-first on your laptop, I figured—yeah. Maybe I should stick around.”
She was quiet for a second, then softened. “I had no idea.”
“Yeah, well.” He shrugged, suddenly feeling a little exposed. “Not exactly my usual small talk.”
Her expression softened, something unreadable flickering behind her eyes. She took another sip of her drink, then pointed at him. “Well, now I feel like my question was too deep. I should’ve just asked what your go-to shower song is or something.”
“Oh, that’s easy. Careless Whisper by George Michael.”
She nearly choked on her beer. “What?”
He shrugged. “I like a little drama in my life.”
Pip burst out laughing, shaking her head. Then, after a beat, she nudged his foot under the table. “Hey, Lu?”
“Yeah?”
“I’m really glad you stuck around.”
Something about the way she said it made his chest feel too small for his ribs. He swallowed, forcing himself to keep his tone light. “Yeah, yeah. You just didn’t want to do all the work yourself.”
“Obviously.” Pip rolled her eyes, but she was smiling.
“Alright, your turn. Truth or dare?”
Pip tapped her nails softly against the neck of her bottle, considering. Then she lifted her chin, a lazy smirk curling at the edges of her lips. “Truth.”
Lu took a sip of his drink, thinking. There were plenty of things he could ask—light, teasing things. But the way she’d looked at him when he admitted almost dropping out was still sitting heavy in his chest. He wanted to ask something real.
So he set his glass down and asked, “What’s something you regret not doing?”
Pip hesitated. For the first time that night, she didn’t immediately have a comeback. Instead, she bit her lip, looking down at the condensation sliding down the side of her bottle.
Lu tilted his head. “Too deep?”
She let out a short laugh. “No, it’s just
” She exhaled, swirling her drink. “I think I regret not being braver about the things I want.”
Lu’s brows lifted slightly. “Like what?”
Pip’s fingers curled around her beer, but when she looked up at him, her gaze held something just out of his reach. “Like saying things when I should.”
Something in his chest tightened. He could feel it—the edge of something unspoken between them, something that had been there longer than either of them had probably wanted to admit.
But then, just as quickly, Pip rolled her shoulders back, shaking it off. She raised her drink in his direction. “But hey, that’s what alcohol is for, right? Liquid courage.”
Lu chuckled, but the moment wasn’t entirely gone. He could still feel it, humming beneath the surface.
“Your turn,” she said like she was in a hurry to change the subject.
He studied her for a second longer than he should have, trying to read the things she wasn’t saying. Then, deciding not to push—not yet, at least—he leaned back with a smirk. “Dare.”
Pip exhaled, looking relieved at the shift in topic. But then a slow grin took over her face, and she leaned in, eyes dancing with mischief. “Alright, Lu. I dare you to go up to the bartender and ask for a Valentine’s Special—without knowing what’s in it.”
Lu chuckled. “That’s the best you’ve got?”
“Oh, you’ll regret saying that,” she teased. “Now go. Let’s see if you can handle whatever monstrosity they serve you.”
He shook his head, pushing himself up from the booth. “If I end up drinking something pink and covered in whipped cream, I might throw up on you.”
She just grinned, watching him go. But as he crossed the room, she caught herself staring at his back a little too long, her fingers still absently tracing an abstract pattern on the condensation on the bottle.
God. She was in trouble.
They kept drinking, falling back into their usual rhythm—trading stories, daring each other to say ridiculous things to the bartender, laughing too loudly. The bar started to blur at the edges, warm and hazy. Pip’s laugh got looser, her touches lingered longer—fingers brushing against his wrist, knees touching under the table.
Pip wasn’t completely gone, but tipsy enough that she was a little too loose, a little too open. And she had a habit of getting sentimental when she drank—something Lu found stupidly endearing.
“Go on,” Lu said. “Which one?”
She hummed, tilting her head like she was having trouble making a decision. Then she flashed him a lazy grin. “Dare. But make it like
 Something that would make future-you cringe when you think about it.”
He let out a low chuckle, swirling the last of his drink. “Alright. I dare you to tell me a secret.”
Pip narrowed her eyes. “That’s too easy.”
“Oh, I’m not done.” Lu leaned forward, his smirk turning sharper. “I dare you to tell me a secret
 about me.”
Pip faltered.
She opened her mouth, then closed it, rolling her lips together like she was physically stopping words from spilling out.
Lu watched her, pulse ticking up just slightly. He hadn’t planned this to be a trap, but suddenly, it felt like one.
Pip let out a slow breath, tapping her nails against the rim of her glass. Then, carefully, she said, “You’re a lot more important to me than I let on.”
Lu didn’t move. Didn’t breathe.
Pip gave him a small, almost hesitant smile. “That count as a secret?”
He should laugh. Tease her. Turn this into something easy and light, the way they always did.
But he couldn’t.
Not when her words were still hanging in the air between them, too big, too real.
He swallowed. “Pip
”
“Wait.” She lifted a hand. “There’s a second part.”
Pip swirled her glass around as if she was trying to find the answer on the bottom. “Dare.”
“I dare you to tell me something you’d only say if you weren’t worried about what happens next.”
Pip blinked with heavy eyelids. This was a dangerous dare. But wasn’t it exactly what she was hoping for? 
Her fingers tightened slightly around her empty, and for a moment, she didn’t speak. The bar noise seemed to quiet around them, everything narrowing down to just her and him, the warm glow of the lights reflecting in her eyes.
Pip let out a soft laugh, shaking her head. Then she reacher for his drink and took a long sip, trying to gather her thoughts and get some of that much needed liquid courage.
“Alright,” she said, set the glass down in front of him again. Her voice was quieter now, almost thoughtful. “I think about you. More than I should.”
Lu stilled, as if the tiniest movement could shatter the moment.
Pip traced the rim of her coaster with her fingertip, not looking at him. “Like, when something good happens, you’re the first person I want to tell. And when something bad happens, I wonder if you’d make me laugh about it. And when I see something stupid—like a weird-looking pigeon or a meme so dumb it makes me lose brain cells—I think, Lu would get this.” She let out a quiet chuckle, finally meeting his gaze. “And I don’t know what that means, but it’s been happening for a while.”
Lu’s throat was dry. His fingers curled into fists beneath the table.
It took everything in him to keep his voice steady when he said, “That’s a pretty good answer.”
Pip smiled, just barely. “Yeah?”
He leaned in slightly, his voice dropping lower. “Yeah.”
Her breath hitched. Just a little.
And then, before he could think too hard about it, before he could do something reckless, Pip abruptly stood up.
“I need another drink.”
Lu blinked. “Pip—”
But she was already heading to the bar.
Lu let out a long breath, dragging a hand down his face. His heart was pounding, and not from the alcohol.
When she came back, Pip took a very long sip of her drink even before she sat down. Then she asked him something else in a lighthearted tone. 
But her eyes weren’t quite meeting his anymore.
Lu could see it—how she was trying to brush past what she’d just said, how she was treating it like some offhand joke. But her fingers were tapping against her glass, and her lips were pressed together like she was thinking too hard.
Pip had gone quiet. Not her usual, thinking-through-a-bug kind of quiet, but something else. Something heavier. She was staring at her drink like it held the answers to the universe, absentmindedly tracing patterns with her fingertip. Lu watched her, feeling the weight of whatever was about to happen settle in his chest.
He let it sit for a moment, waiting to see if she’d say something else.
She didn't. 
She just exhaled and kept playing, making sure the truths and dares turned playful for a while, like an entirely different conversation.
Somewhere between another round of drinks, another round of questions—some deep, some ridiculous, some only half-answered through laughter—Pip started leaning into him more. At first, it was casual. Her shoulder brushing against his when she laughed too hard. Her fingers catching his arm when she emphasized a point. But then her head dipped onto his shoulder, and instead of pulling away, she stayed there.
Lu went still.
He should move. He should say something.
But he didn’t.
Instead, he turned slightly, just enough to glance down at her. Pip, eyes half-lidded, hair falling over her cheek, looking content and maybe just a little drunk.
“You good, Pip?” he asked, his voice quieter now.
She hummed. “Mhm.”
“You wanna call it a night?”
She shook her head. “Not yet.”
Her fingers played absently with the hem of her sleeve, and for a moment, she was silent.
“You wanna stop playing?”
“No, no, we haven't embarrassed ourselves enough,” she slurred slightly, with a smirk. “Truth or dare?”
Lu, also feeling warm from the alcohol, smirked. “Truth.”
She squinted at him like she was trying to focus. “Would you ever—” She cut herself off, frowning. Then shook her head. “No. Wait. I don’t wanna ask that.”
Lu arched a brow. “You can’t start a question and not finish it.”
Pip groaned, dropping her head onto the table. “Ugh, I don’t know. My brain-to-mouth filter is completely broken right now.”
Lu chuckled, watching Pip war with herself, her forehead still pressed against the table. She let out a dramatic sigh, then lifted her head, squinting at him through slightly unfocused eyes.
“Okay, fine,” she mumbled, waving a hand in his general direction. “Would you ever
 I mean, have you ever thought about
”
Lu leaned in slightly, resting his chin on his hand. “Thought about what?”
She let out a frustrated groan, scrunching up her face like she was trying to will the words out of her mouth. Then, suddenly, she blurted, “Would you ever date me?”
Suddenly it felt like there was not enough oxygen in the room. Lu took a deep breath, but it was shaky and didn't quite fill his lungs.
Pip immediately sucked in a breath, eyes widening. “Nope. Nope, that wasn’t—I mean, not that it’s a bad question, it’s just—”
Lu tilted his head, watching her completely spiral.
“Would I ever date you?” he repeated, pretending to consider it.
She groaned, covering her face with her hands. Then she peeked at him through her fingers, scowling.
Lu exhaled, leaning back against the booth. He swallowed, throat feeling like sandpaper. “You want an answer or not?”
Pip hesitated, then nodded once, slowly.
His smirk faded just slightly, and when he spoke, his voice was quieter. More certain. “Yeah. I’d date you.”
Pip blinked. She seemed to short-circuit for a second. Then she narrowed her eyes, suspicious. “Are you just saying that to mess with me?”
Lu shrugged. “I don’t say things I don’t mean.”
Pip just stared at him. Her mouth opened slightly, then shut again. Then—she grabbed her drink and downed about half of it.
Lu raised a brow. “Something you wanna say?”
She set the glass down a little harder than necessary. “No. I just—” She exhaled, shaking her head. “You can’t just say things like that.”
“Why not?”
“Because!”
“That’s not an answer.”
Pip scowled at him—kinda. Her eyes were hazy, but searching. “Okay, but like—why?”
Lu frowned slightly. “Why what?”
“Why would you
 you know.” She gestured vaguely between them. “Date me.”
Lu considered her for a moment. Then he leaned forward, resting his arms on the table, and said, “Because you’re you.”
Pip inhaled sharply.
Lu shrugged, playing it off like his heart wasn’t suddenly racing. “You’re smart. You’re funny. And you make me feel like I actually know what the hell I’m doing—even when I don’t.” He met her gaze, steady and unflinching. “So, yeah. I’d date you.”
Pip was completely silent.
For a long, stretching moment, she just stared at him, her lips slightly parted, as if she’d forgotten how to speak. Lu couldn’t tell if she was about to laugh, call him a liar, or throw her drink in his face.
“
That’s not fair,” she finally muttered.
Lu smirked. “What’s not fair?”
She exhaled, shaking her head, staring at the table like it held the answers. “You. Saying stuff like that. Being like that.”
“Like what?”
Pip let out a short, breathy laugh, rubbing a hand over her face. Then, before she could stop herself, she said, “Like someone I can’t imagine my life without.”
Lu blinked.
Pip groaned, shaking her head. “God, I should not be drinking right now.”
Lu leaned in, curiosity sparking, his heart thrumming like it wanted to escape his chest. “What does that mean?”
Pip hesitated, her fingers tracing the rim of her glass. “It means—” She sighed, then looked up at him with a kind of tired fondness. “It means I like you, okay? I like
 how you always act like nothing gets to you, but you care so much it’s ridiculous. I like that you always notice when I’m stressed before I even say anything. I like that you walk me home when we stay late at the lab and pretend it’s just because ‘you needed air.’”
Lu exhaled slowly, dizzy, heart hammering in his throat and ears and just everywhere.
But Pip wasn’t done.
“I like that you’re secretly the biggest softie,” she went on, her words getting a little looser, a little warmer, like the dam had finally broken. “Like when you always give the stray cat outside the library part of your sandwich, even though you pretend you don’t like cats.”
Lu huffed a laugh, shaking his head. “It’s not my fault, he just looks at me like that.”
Pip chuckled, looking down at her drink. “I like how you talk with your hands when you’re explaining something. And when you’re focusing really hard, you do a little pouty thing with your lips, it’s adorable.”
Lu just stared. He didn’t know if he was breathing.
Pip leaned forward slightly, propping her elbows on the table. “You remember last semester, when my laptop crashed the night before that huge deadline?”
He snorted. “Yeah. You were ready to fight God.”
She pointed at him. “Exactly. I was losing my mind. But you just—” She shook her head. “You showed up with your old laptop, somehow got my files recovered, and then you stayed up with me the whole night just to make sure I finished everything.”
Lu shrugged like it was nothing. “Well, yeah. What was I gonna do, not help?”
“That’s the thing,” Pip said softly. “You don’t even think about it. You just do things like that.”
Lu exhaled, breath ragged like he just ran a marathon, and shifted slightly in his seat. “I mean, you do the same for me.”
Pip sighed. “Yeah, I would do it for you. But you do it for anyone who needs it. You don't mind staying up all night helping people study or finish their projects. You bring them snacks and drinks. You never let anyone sit alone in the lab when they look stressed. ”
Lu was speechless, just staring at her with his mouth slightly opened in surprise.
“Or—” she gestured vaguely, her voice softer now, “—how you knew I was about to crash last semester and left a stupid energy drink in my locker with a note that just said ‘Don’t die, Pip.’”
His mind scrambled for a response but words failed him. He didn’t even remember doing that. Lu opened his mouth, then closed it, caught completely off guard.
Pip kept going, oblivious to the fact that she was absolutely wrecking him.
“Do you even know how stupidly likable you are? You’re just— You walk into a room and people like you. And..” She hesitated for a heartbeat. “And I like that you’re way too competitive about stupid things. Like Mario Kart. Or rock-paper-scissors.”
He couldn’t help but chuckle, both at what she said and as a nervous reaction to her entire speech. “That’s called having integrity, Pip.”
She rolled her eyes but kept going. “I like the way you say my full name when you’re being serious.” She swallowed. “I like the way you look at me when you think I don’t notice.”
His eyes widened at the revelation. Pip let the words sink in for a moment. Then she picked up her metaphorical shovel and kept digging the hole.
“Yeah, I really like your eyes. Which is annoying because when you look at me a certain way, my brain just turns into the blue screen of death, and—” She broke off, shaking her head. Then she let out a small, slightly tipsy laugh. “Also I really like your hands.”
Lu’s brain felt like a completely fried motherboard. He ran a hand through his hair, exhaling sharply, buying himself a second to think.
Pip smiled, just slightly. Like she wasn’t just putting all of this out there, months—maybe years—of pent up feelings she had hidden from him.
“You have, like, objectively nice hands,” she continued, frowning slightly like this was important information. “They’re big but not, like, weirdly big, and you do this thing where you crack your knuckles when you’re thinking and—”
“Pip,” Lu interrupted, his voice slightly strained.
She blinked up at him, like she hadn’t noticed she was rambling. “What?”
Lu exhaled, scrubbing a hand down his face. “You can’t just say all that.”
“Why not?”
“Because—” He hesitated, shaking his head. “Because it means something.”
Pip stared at him. Then, very softly, she whispered, “It does.”
Lu’s chest tightened.
Pip suddenly looked like she wanted to shrink into the floor. “I should shut up now.”
Lu huffed a breath, shaking his head. She was drunk. Really drunk. She probably didn’t even know what she was saying. “You should.”
But she didn’t. Instead, she let out a breath, barely above a whisper.
“You’re kind of the best person I know,” she murmured.
Lu blinked. “What?”
Pip glanced up at him, eyes a little too bright, a little too earnest. Vulnerable. “You’re a really good person, Lu.” And then, after a pause. “
You’re all I ever wanted." She looked down and shook her head. "I’m sorry I can’t say it sober.”
Silence.
The bar noise felt distant, like it wasn’t even real anymore. Just the sound of her breathing, unsteady, and little too fast.
Lu gripped his drink like it was the only thing keeping him grounded.
She wasn’t laughing anymore.
She wasn’t playing anymore.
The words hung in the air between them, delicate and irreversible.
Then, as if realizing what she’d just said, Pip sucked in a sharp breath, eyes going wide, glassy and slightly unfocused. “Oh, shit,” she whispered.
Lu just stared at her.
Pip covered her mouth with both hands, looking absolutely horrified. “I should not have said that.”
Lu blinked, dazed, still processing the fact that she had said that.
Pip groaned, dropping her head onto the table. “Lu, forget what I said”
“Yeah, that’s not happening.”
Pip let out a pained noise.
Lu exhaled, scrubbing a hand down his face. His chest felt too tight, his mind spinning too fast. He should say something, acknowledge it, tell her—
No.
He couldn’t let himself answer. Not here. Not now. Not while she was like this.
He needed to think. He needed to get those drinks away from her and get her home.
Lu stood abruptly, tossing some cash onto the table. “Come on, drunkie. Let’s get you back before you start reciting poetry or something.”
Pip groaned, still face-down on the table.”I regret all my choices.”
Lu smirked, despite the storm raging in his chest. He bent down and grabbed her hand, tugging her up. “Come on, you need to get some rest.”
She groaned again but didn’t resist when he pulled her to her feet, steadying her with an arm around her shoulders.
And as they stepped out into the cold Valentine’s night, biting and sobering, Lu kept hearing it over and over again.
You’re all I ever wanted.
And fuck if that didn’t ruin him.
Pip shivered, wobbling only slightly before leaning into Lu’s side without thinking. He tightened his grip around her shoulders, steadying her as they made their way down the quiet street.
The city had started to wind down—most people already home, tucked away with their dates, their lovers, their Valentine’s plans.
Lu exhaled, his breath curling white in the air. His mind kept looping back to her words.
She probably wouldn’t even remember saying it. And maybe that was a good thing. Maybe he should pretend he didn’t hear it. But fuck, it was hard when she was right here, pressed against him, trusting him enough to lean her weight into him like he was something solid, something safe.
She let out a soft sigh, tilting her head against his shoulder. 
“You’re warm,” she murmured, burrowing against him. “Like a space heater.”
Lu huffed a quiet laugh. “From project partner to household appliance. Quite a step up!”
“Totally.” Her fingers curled into the fabric of his jacket, her cheek resting against his shoulder. 
Lu swallowed hard, forcing himself to keep his focus on the sidewalk ahead, on getting her home. Not on the way she felt pressed against him, or the way her voice had wrapped around those words in the bar—You’re all I ever wanted.
It wasn’t far to her dorm, but every step felt like both too much time to think and not nearly enough. Pip was quiet, her usual sharp wit dulled by the alcohol, but she was awake enough to hum under her breath as they walked, something soft and aimless, the way she sometimes did when she thought no one was paying attention.
But Lu always noticed.
When they reached her building, she fumbled in her bag for her keys, her movements slow and uncoordinated. Lu reached over, steadying her hand before she could drop them into the snow.
“Here,” he murmured, plucking them from her fingers. “I got it.”
She hummed in agreement, watching him through half-lidded eyes as he unlocked the door. “Such a gentleman.”
“Yeah, yeah.” He nudged her inside, following her up the stairs to her dorm.
Once inside, Pip immediately beelined for her bed, flopping onto it face-first with a dramatic groan.
Lu chuckled, closing the door behind him. “I see subtlety is dead.”
“Mmhmm,” she mumbled into the pillow.
Lu crossed his arms, leaning against the doorframe. “So this is how you treat your personal chauffeur, huh? No thank you, no you’re my hero, Lu?”
She lifted a hand lazily and gave him a thumbs-up without lifting her head. “You’re my hero, Lu.”
He chuckled, shaking his head. “Unbelievable.”
He glanced around the small dorm. It was cluttered but in a way that felt lived-in—books stacked on her desk, a blanket draped haphazardly over her chair, half-finished notes scribbled on sticky pads. It smelled like her.
He sighed, crouching beside the bed to untie her boots. 
Pip let out a breathy chuckle. “Wow, I’m getting the royal treatment.”
Lu shook his head, pulling off one boot, then the other. “Don’t get used to it.”
“You always take care of me, Lu.”
His chest ached.
“Yeah,” he murmured. “Always.”
She didn’t reply.
“C’mon, Pip, at least get under the covers.”
She let out a grumbling noise but didn’t protest when he pulled the blanket over her.
When he started to move away, she reached out blindly, catching his wrist. “Stay.”
Lu froze.
Pip’s fingers were warm, loose from the alcohol but still firm enough that he knew she meant it.
He swallowed. “Pip—”
“Just
 stay,” she murmured. “For a little bit.”
Her gaze flickered over his face, lingering on his lips for a split second too long.
For one agonizing moment, he thought—maybe. But he couldn’t. He was kinda drunk. She was very drunk. Kissing, confessing hidden feelings, cuddling until morning pretending they were just cold—none of it was an option.
Lu exhaled through his nose, running a hand through his hair. He shouldn’t even stay. He should go. He should definitely go.
Instead, he let out a quiet sigh, picked up a spare pillow from her bed and settled onto the floor beside her bed, leaning against the frame.
Her fingers slid from his wrist to his hand, her grip easy and unthinking. Lu glanced down, watching their hands, her palm against his, their fingers brushing.
He should let go.
But he didn’t.
He let his thumb trace over her knuckles absently, grounding himself in the quiet darkness.
And as the room settled into soft breathing and silence, as Pip's fingers curled around his just slightly in sleep, Lu let his head tip back against the bed frame.
Just for tonight.
He could pretend.
 
Pip stirred with a soft groan, burying her face deeper into her pillow. The room was too bright, the warmth of sleep fading into the slow, creeping realization that her head felt too heavy.
Right. Drinking.
She exhaled, blinking blearily at her dorm ceiling, willing herself to piece together the night before. There had been drinks, laughter, Lu teasing her—
Her fingers twitched, brushing against something solid.
She frowned. Turned her head.
Lu was on the floor beside her bed, slumped against the frame, his breathing slow and even, his hand still loosely tangled with hers.
Pip’s heart stopped.
The pieces of the night were blurry, but this—this was new. Unexpected.
She stared at their joined hands, at the easy way their fingers fit together, like they’d done this a hundred times. A small thrill curled through her chest before panic squashed it.
What the hell happened last night?
Her brain scrambled, reaching for memories that felt just out of focus. The bar. The walk home. Him helping her inside.
She swallowed hard.
Suddenly everything sharpened. The warmth of his hand. The quiet in the room. The way Lu’s breathing shifted just slightly, like he was surfacing from sleep.
And then—his eyes fluttered open.
Pip stiffened.
Lu blinked, slow and groggy, squinting against the morning haze, before turning his head slightly. For a second he just looked at her, his gaze still heavy with sleep.
Then his lips curled, soft and lazy. “Morning, Pip.”
Her stomach flipped. 
She cleared her throat, shifting to sit up, head still a bit heavy. “Uh. Morning.”
Slowly, like he didn’t really want to do it, Lu released her hand. Then he stretched, wincing slightly as he rolled his shoulders. “Damn. I think my spine is permanently shaped like your bed frame now.”
Pip let out a breathy laugh, but it was weak. “What
 uh. What are you doing here?”
He gave her a look. “You really don’t remember?”
Pip hesitated. “I remember drinking.”
Lu huffed a quiet laugh. “Yeah, no kidding.”
She rubbed her temples. “Did I
 did I say anything stupid?”
For half a second, Lu didn’t answer. Then he smirked, tilting his head. “Define stupid.”
Pip groaned again, finally dropping her hands to look at Lu. There was something almost hesitant in the way she studied him. Like something was off.
“
Did I?” she asked, quieter this time.
Lu hesitated.
Because he could tell her. He could say yeah, Pip, you told me you loved me and wrecked my entire existence in three seconds flat.
Or—
“Nah,” he said instead, stretching his arms over his head, stomping all over the memories like he wanted to grind them into dust. “Just your usual brand of nonsense.”
She narrowed her eyes. “You’re lying.”
“Am I?”
“You do this thing with your face when you’re lying.”
His heart was starting to speed up. “Pip, I’m literally just existing.”
She groaned, rubbing at her temple again. “Whatever. I feel like I got hit by a truck.”
“That truck was three vodka sodas and a bunch of other bad decisions.”
She let out a quiet laugh, but it didn’t quite reach her eyes. Lu noticed, but didn’t mention it.
Pip yawned, pulling the blanket over one shoulder. “You didn’t have to stay, you know.”
“Yeah, well. Didn’t trust you not to roll off the bed and die.” He shrugged, trying to keep his voice light. “Plus, you asked me to.”
She blinked at him, something flickering across her face. “I did?”
“Yeah.” He smirked. “Clung to me like a baby koala, too.”
She groaned. “Great. Love that for me.”
Lu chuckled, but it sounded hollow even to his ears.
Pip didn’t remember. And she had no idea she was breaking his heart.
He exhaled slowly, still blinking sleep away from his eyes. His head was clearer now, last night’s haze dulled to a manageable ache, but his chest still felt tight, weighted by the words that kept replaying in his mind.
You’re all I ever wanted.
She had said it like it was the simplest thing in the world. No hesitation, no doubt. And now she didn’t even know she’d said it. 
Lu swallowed it all down. “You should eat something.” His voice was steady, but he was already pushing himself to his feet, removing himself from the situation before she could ask anything else. “I’ll grab you some water.”
And just like that, the moment passed.
But while Lu moved toward the tiny dorm kitchen, Pip frowned slightly, like she was trying to piece something together. Like some part of her knew something had happened, even if she didn’t remember it yet.
Pip sat on the bed, fingers idly rubbing against her palm, as if chasing the phantom feeling of Lu’s hand in hers.
He returned a moment later, setting a glass of water on her nightstand with a pointed look. “Drink slowly. If you throw up all over the place I am not cleaning it up.”  
She rolled her eyes but obeyed, taking small, careful sips. The cold water helped clear the fuzziness in her head, but the feeling in her chest—the vague, off sensation, like she was forgetting something important—remained.  
For a moment, she just watched Lu move around her room like he’d done this a hundred times before. Something about it felt too easy—like they had always existed in this quiet rhythm, like it wasn’t strange for him to be here, like the warmth still lingering in her hand wasn’t something she should be questioning.
But she was questioning it. Because something was definitely off.
She tried to focus, tried to sort through the messy blur of last night. Bits and pieces surfaced—laughing over drinks, teasing, a conversation about some girl Lu liked.
Her stomach twisted.
Right. That.
She barely noticed Lu setting an energy bar on the nightstand. “Love that you don’t seem to have any real food around here,” he said, casually, before going back to the kitchen.
Pip swallowed hard, watching him move around like nothing changed. Like he wasn’t acting different. Like he wasn’t avoiding looking at her for too long.
He was bracing himself for something. And that—more than anything—confirmed it. She had said something huge. And he heard it, remembered it, and was probably thinking about it.
Pip opened her mouth, then closed it again, her throat too tight. Then she set the water down. “Hey, Lu?”  
He looked at her with an unreadable expression. “Yeah?”  
She bit her lip. “I did say something stupid last night, didn’t I?”  
Lu stilled. It was subtle—so subtle. But Pip knew him well enough to see it. The slight pause. The careful, almost imperceptible shift in his expression.  
Pip’s stomach dipped.  
Then he exhaled, rolling his shoulders like he was brushing something off, before walking back to her.
“
Define stupid,” he said, echoing his words from earlier.
Pip narrowed her eyes. “You’re so full of shit.”
He had that infuriating smirk on his face again, like he was perfectly fine. Like nothing was wrong when she knew that wasn’t true. “You think I’m just gonna hand over blackmail material that easily?" He scoffed. "Please.”
Pip stared at him, searching his expression for something. A crack, a tell—anything. Because she knew there was something to find.
Lu didn’t flinch. Didn’t look away. But he was still keeping his distance. And very deliberately avoiding a straight answer to her question. 
“I feel like
 I forgot something important.” She forced a small, shaky breath, tilting her head, testing the waters. 
Lu let out an exaggerated sigh, dragging a hand through his hair. “Pip—”
“Lu,” she said, her voice steadier than she felt as she got up from the bed. “Tell me what I said last night. I’m serious.”.
Something flickered in his expression—hesitation, uncertainty. But then he forced a smile, leaning back against the wall next to her bed. “Well, let’s see. You said I’m warm, which is accurate—”
Pip narrowed her eyes. “And?”
“And you threatened to fight a snowman.”  
Pip snorted. “Okay, that tracks.”  
But she knew that wasn’t the whole truth.  
“Oh, and you confessed your undying love for me.” He crossed his arms and smiled at her, like none of this was a big deal. 
But Pip just froze.
Lu said it so casually, so playfully, like it was just another one of their jokes. She couldn’t quite tell if he was telling the truth or not.
Her heart stuttered. He’s joking, right? Instinct took over because deflecting was easier, and she let out a half-laugh, shaking her head. “I did not.”
His smile widened. “Oh no, you definitely did. Got down on one knee, proposed right there in the snow. Very dramatic.”  
She let out a breathy laugh, shoving his arm. “Shut up.”  
Lu grinned, but there was something careful behind his eyes. Something guarded. He let the moment stretch, like he was waiting for something.
Then he shrugged. “Nah, I’m messing with you.” He glanced at her out of the corner of his eye, testing her reaction. “But you did ramble about how I have nice hands, which, honestly? The most unnecessarily intimate thing anyone has ever told me.”
Pip blinked. “I what?”  
“Oh yeah. Full monologue. Went on for a while.” He glanced at them like he was genuinely contemplating their appeal. “Not gonna lie, I was flattered.”  
Pip groaned, pressing the heels of her palms against her eyes. “I hate myself.”  
Lu chuckled. “I thought it was sweet.”  
She peeked at him through her fingers. “You’re enjoying this, aren’t you?”  
“Immensely.”  
Pip groaned again, but her mind was racing. Because she knew Lu. She could tell he was doing this on purpose, avoiding the real thing she had said.  
She saw it now. Lu wasn’t acknowledging it because he was protecting her—like he always did. He was giving her an out. Letting her brush it off so she wouldn’t have to deal with it.  
For a long moment, there was just silence—thick and heavy, wrapping around them like neither of them knew how to break it.  
Then there was more—hazy, warm, something heavier curling in her chest. Flashes of cold air, of Lu’s arm around her, steadying her as they walked. Of his voice, softer than usual, saying You can’t just say all that.
Of her saying—
Pip sucked in a breath.
You’re all I ever wanted.
The words crashed over her like a wave, and suddenly, she was too aware of everything—the way her heart was hammering, the way Lu had hesitated when she asked if she’d said anything dumb, the way her fingers could still feel his wrapped around them.
Oh.
Oh, fuck.
Pip didn’t move. Because suddenly, she knew.
Suddenly, she wasn’t just remembering saying it. She was remembering how it felt. And the way he had held her.
The way he had not said it back.
And that was enough to realize that she had said something really very real that changed everything. Something she had never let herself say out loud, even when it was clawing at the edges of her thoughts.
Whatever this was—whatever was sitting heavy between them, waiting to be named—wasn’t something she could brush off.
It had always been there. And for the first time, she wasn’t sure if she could pretend otherwise. It wasn’t something she could take back.
She swallowed hard, fingers twisting in the blanket on her lap. No. Maybe... she could let this slide. She could laugh it off. She could let him keep pretending, keep protecting her from words she’d already said.
Or—
Pip inhaled sharply. “Lu.”
His smirk faltered, just slightly. “Yeah?”
She looked at him, really holding his gaze. Her heart was a hammer in her chest, but she forced the words out. “I meant it.”
Lu’s breath hitched. For the first time since she woke up, he looked thrown. His lips parted slightly, but no words came out.
She inhaled deeply, gathering the courage that felt like a live wire beneath her skin, and just kept going because if she stopped now she’d never say it.
“I remember,” she admitted, voice quiet but firm. “I remember saying that, and I—” She exhaled, gripping the fabric in her lap. “I meant it, Lu.”
For a second, he just stared at her, like he couldn’t believe she had actually said that out loud.  
Lu flexed his fingers slightly like he was trying not to react, but she could see it. She knew that movement. It meant he was thinking too hard, feeling too hard.  
She bit her lip, her chest tightening. “You didn’t say anything back.”
His gaze flickered to the floor. 
Pip swallowed. “Was it because I was drunk?” She hesitated. “Or
 because I’m not the girl you were talking about last night?”
Lu let out a breath—sharp, unsteady. His fingers twitched, his jaw tensed. He was still trying to hold something back.
Then, finally, finally, he ran a hand through his hair, looking away for half a second before muttering, “God, Pip.”
She waited.
Something broke in his expression—something raw, something wrecked.
“It was you.” His voice was rough, unsteady. “It’s always been you.” 
It felt like the floor was escaping from under her feet.
“I didn’t say anything back because you were drunk and I didn’t think you meant it,” he admitted, voice lower now, rougher, like the words were dragging out of him. “And because
 I didn’t think I could handle it if I let myself believe it.”
Pip’s breath caught.
Lu shook his head, exhaling sharply, and looked at her like she was the only thing in the world. “I’m in love with you, Pip. I have been for—God, I don’t even know how long. But I never said anything because I genuinely didn’t think you’d feel the same way.” He hesitated. “I thought if I told you, I’d just lose you.”  
Pip felt something break open in her chest. Her pulse thundered like mad in her ears. “Why?”
He let out a small, breathy laugh, shaking his head. “Because of the way you talk about love and relationships. Like it’s something that happens to other people. Like it’s something you don’t care about.”
He paused, and Pip could see the way his chest rose and fell too quickly for someone who was just standing still.
“Because I’ve watched you go on a date with someone, get bored, and never text them back. I just
 I figured if you wanted something like this, you would’ve already—”
Pip’s breath hitched. “Lu.”
He exhaled. “Yeah?”
She swallowed. “I didn’t want something like this with anyone else.” Pip let out a nervous laugh, running a shaky hand through her hair. “I mean, look at me. I am horrifically bad at feelings. And I avoided dating because no one ever felt right. And I told myself I wasn’t that kind of person, that I didn’t care about romance, but—” She exhaled. “Maybe I was just lying to myself. Because it wasn’t until you that I started wanting something real.”
Lu inhaled sharply, like he’d forgotten how to breathe properly. His expression had shifted entirely, something new burning behind his eyes.
Pip felt breathless. “And now I’m saying all of this, and I don’t know how to shut up, so if you’re—”
Lu surged forward and kissed her.
Pip gasped against his mouth, barely processing before she was kissing him back, her fingers gripping his shirt, dragging him closer, tilting her head to let him deepen it.
And Lu just melted into it.
His hands found her waist instantly, his lips parting against hers like he had been waiting for this—like he had spent a lifetime holding it back, not letting himself have this, not letting himself want this.  
But now she was right there. And she meant it.  
And Lu—Lu was so in love with her, he didn’t really know how to breathe anymore.  
It was slow and warm and perfect. Like every touch they had ever shared had led to this.
When they finally pulled back, neither of them moved for a second. Their breathing was uneven, their foreheads pressed together, hands still fisted in each other’s clothes. The moment stretched between them, enveloping them, shielding them from the world.
“I love you, Philippa,” he said, barely a whisper.
Her heart skipped a beat.
Lu exhaled, brushing his nose against hers. “And I am so fucking mad at myself for not telling you sooner.”
“Yeah,” she murmured, “you’re a real idiot.” Pip let out a breathless laugh, pressing a soft, almost disbelieving kiss to the corner of his mouth. And then, whispering right against his lips, “I love you too, Luigi.” 
Lu chuckled, tilting her chin up to kiss her again, slow and deep, fingers threading into her hair.
And this time—
There was no reason for them to hold anything back.
---
Click here for the tag list! ✹
@straw8erry @belncaldern @starlightslvtt @number1yearner @fancyyanci
106 notes · View notes
mogruith · 2 months ago
Text
BG3 Virtual Photography Supplement: Mods and Resources
Here's some popular and useful mods I use for virtual photography! I will try to update this as I find more. You may find these useful with the rest of my tutorial:
Chapter 0: Overview
Chapter 1: Script Extender Debug Console
Chapter 2: Scene Manipulation
Chapter 2.5: More Scene Manipulation
Chapter 3: Otis_Inf Camera Tools
Supplement: Mods and Resources
Tools
EasyCheat - Teleport to locations near and far, summon armor and items for your characters, clean the dirt off. All at the press of a button!
Lighty Lights - An incredible tool but terribly finicky. Actively being worked on.
Native Camera Tweaks - A Native Mod that allows you to unlock the camera pitch and zoom in and out of combat. It's handy for photo stuff but generally useful.
WASD Character Movement - another Native mod for WASD movement. More precise placement of characters in the field.
Remove Broken Objects - can help clean up sets.
Scribe Object Inspector and Event Logging - sometimes you need to find the IDs of objects in the game. This is an easy way to do it.
Polyamory Mod - can be useful for flag checking but I haven't used it recently. But it may have use for some.
Characters
Full Custom Companions (Hirelings) - have full custom control over hirelings. Great if you wanna add more Tavs to your shots! Have done family portraits for my Tav's family this way, it's so fun!
Recruit any NPC - Make an NPC a playable character. Can be really handy sometimes if you don't wanna do code transformations.
Appearance Edit Enhanced - if you're not using this already, you should be. Modify your characters at any time. Works great with the Custom Hirelings mod.
Transmogs and Spelltheft - identity theft! Another mod that lets you copy the appearance of characters. There was some special case scenario that I used an old version of this but I don't recall what that is anymore. Listing it here anyway.
Ring of Metamorphosis - Another mod for changing your character into several known characters and also INVISIBLE. Being invisible is extremely useful when you start conversations for facial expressions but you don't want another character in the way of a shot.
Effects
Pretty Particles - I've only used this once but if you combine it with Depth of Field, you can use it to get some really pretty bokeh effects. Also, blood and sweat in varying degrees/combinations.
No Annoying VFX - a series of mods that will remove the effects that you may not want for a shot. Like casting glows, glowing armor, UI indicators, among other things.
Posing
Hugs - Hug your companions!! Great for a quick and cute hug that doesn't require any coding.
Kisses - Kiss your companions using anybody animations! For best results cast the spells on a body type that matches up.
Replayable Romance Scenes - what it says on the tin. Romance scenes playable through casting a spell. These cutscenes play in new locations.
Stay Still In Camp and Play Idle Animations Everywhere - basically what it says. Once you switch from a companion to Tav, they won't run back to their tent. They also have some idle animations that are new.
Sit Happens - spawn chairs to sit!
Emotes - Poses and Toggle Walk - TONS of poses to use in the open world. Extremely useful for non-cinematic shots.
Cutscenes
Cut Scene Edits for Better Screenshots - A mod by Moxi that allows for cutscenes to be modified slightly - including forced clothing when you want something custom (shirtless Astarion, for example), removing Karlach's glow from her cutscene, among other things. Take a read through.
Musical Instrument Yeet - Sometimes the instruments pop up in a kiss cutscene and it is really distracting. Remove them with this!
Resources
Moxi's Research Directory - TONS of resources for finding character UUIDs, some copy-pastes ready to modify for scenes, cool locations like Private Camp Rooms and how to get there, Teleport commands. HANDY!
Google Spreadsheet of Tags - for scripting purposes.
Google Spreadsheet of Dialogue Lines - for finding cutscenes you want to script and play.
A few useful ScriptExtender commands.
An In Depth list of Osiris Commands - for advanced use.
LaughingLeader's list of Osiris Commands - another resource for commands.
91 notes · View notes
fipindustries · 17 days ago
Text
also, im realizing the way im playing this game is probably fucking deranged, this is how most players seem to build their circuits and, indeed, is how the game actively encourages to do it
Tumblr media
straight lines, spaced out so its all clear to see and easy to debug
this is how i do it
Tumblr media
why? again, because of deranged design philosophies i inherited from zachtronics where the smaller and more cluttered your design is the more efficient it becomes, i dont want to use straight lines when diagonal lines are shorter, and obviously i want everything piled on top of everything else, that is how things go faster!
and you know what? fuck you it works, i can keep perfect track of all of it in my head, you think you see spagetti in that second picture? i can see order, logic, reason. i can read it perfectly fine, skill issue
30 notes · View notes
simdertalia · 2 months ago
Text
Tumblr media
Item fix attempt, new item
Someone messaged me about a very old postcard valentine item that I did, it was a DEBUG menu postcard that goes on the in game cork board. For some reason it is not showing up in game, even with the bb.showhiddenobjects command. I have a feeling it may be related to the DX11 update for people who are using DX11 with their games, as this update has caused issues with some CC items.
I've tried to fix the original item, and also improved the image textures, but the person who wrote to me about it is still having an issue. The DX11 batch fix is something that I am very afraid to do on my own CC folder, since I am not using Dx11. From what I have read, if someone is not using DX11, they should not batch fix their CC folder for it, as it could create a big problem. I fix my CC when needed & update the downloads, but the DX11 fix is something I cannot run on my own game. I have written about this in some posts, but I'm putting it here for anyone who hasn't seen it,
Batch fixes are a tool in Sims 4 Studio that is very easy to use, and will repair any CC that may have needed to be fixed. Various batch fixes have come out for various game updates as time as gone on, so there are many useful ones. When you run it, it will fix any CC you have in your folder that needed the update you've chosen. Here is a link to a tutorial on how to download and install Sims 4 Studio, and here is another tutorial on how to do a batch fix, in case anyone wants to make use of this great tool. (and though it's probably not needed, I still want to mention that anyone is welcome to message me if they need some help!)
So anyway, I made a new object from this item, that is just a non-DEBUG wall decor object. It won't snap to the cork board, but you can decorate the wall with them if you so desire.
Download HERE (SimFileShare)
Mega Mirror
34 notes · View notes
simstorian-blog · 6 months ago
Text
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
1 Torrendi Tower
(CC List + Links)
[Note: Light switches, for the Ravasheen hidden lights, are near the doors in the bathrooms)
World Map: San Myshuno
Area: Fashion District
Lot Size:  40 x 30
Amenities:
A Bar
Bowling (4 Lanes)
Bubble Tea Counter
Karaoke (1 main room, 4 private rooms)
Restaurant
Outdoor Performance Stage
Gallery ID: Simstorian-ish
Packs Needed
Expansion Packs
City Living
Get Together
Get To Work
Growing Together
High School Years
Island Living
Lovestruck
For Rent
Snowy Escape
Game Packs
Dine Out
Journey to Batuu (Only debug wires)
Jungle Adventure
Spa Day
Strangerville
Stuff Packs
Bowling
Moschino Stuff
Kits
Desert Luxe
Party Essentials (Only 1 light)
Recommended Gameplay Mods
(Please read through what each mod has to offer before deciding if it fits your gameplay style or not.)
Carl’s Dine Out Reloaded
City Vibes Lot Trait Collection
Lock/Unlock Doors for Any Lot
MC Command Center
Spawn Refresh
CC Used
[All credits go to the following creators for sharing their work with the community. It is greatly appreciated and I hope that you all have endless nights of the best sleep ever.]
Helpful Tip: Having Only What is Needed For CC Builds (Tumblr)
Felixandre: Estate Pt. 2 & 3, Florence Pt. 4, Grove Pt. 1, Kyoto Pt. 1, 2, & 3, Shop the Look 2, SOHO Pt. 1
Harrie: Brutalist Bathroom, Klean Pt. 1 & 2, Octave Pt. 2, Spoons Pt. 2 & 3
House of Harlix: Bafroom, Baysic, Harluxe, Kichen, Kichen 2.0, Livin’ Rum, Orjanic Pt. 1 & 2
Hamsterbelle: Cyberpunk Light (Embers)
Kirsicca: Tekstuuri Wall
LittleDica: H&B Store (Lit Letters)
MyCupofCC: The Modernist
Necrodog: Into Music
Peacemaker: Creta Kitchen
Pierisim: Stefan Living Room
Ravasheen: Counterfit Mini Fridge, Easy Peasy Lumen Squeezy Light System
Severinka: Apollo Rug
Soloriya: Sonata
Sooky88: Checkered Marble Floor, Modern Farm Rugs
Syboubou: Lift Classic Elevator
TaurusDesign: Eliza Walk In Closet, Lilith Chiling Areas Pt. 1
TUDS: Cave, Ind 02, Ind 03
DO NOT REUPLOAD MY LOTS.
DO NOT CLAIM THEM AS YOUR OWN.
DO NOT PLACE BEHIND A PAYWALL.
DOWNLOAD (242 MB)
36 notes · View notes
digi-lov · 11 months ago
Text
Tumblr media Tumblr media
Digimon Liberator Novel
[read on the official website] DEBUG.1-1 [Yuuki] - DEBUG.1-2 [HEAVY METAL PLAY] - DEBUG.2-1 [Winr] - DEBUG.2-2 [GOOD GAME]
First spoiler free, then more detailed including spoilers under cut
Tumblr media Tumblr media
So the first 2 chapters of the Digimon liberator novel dropped last week! We don't exactly know how frequent it'll update, but most likely not as regular as the comic. First impressions on the main characters, I really like them. I think they are fun and interesting enough to drive the story. They don't feel like exact copies of previous characters, and make me exited for a fresh adventure!
As far as I could tell, the translation seems fairly good, but there was a mistranslation of a card effect. However the translation of TCG card effects can be a bit tricky, and the translators might not have known the official english wording. They also show the respective card right there, so it's easy to see what the effect should be, but it might be confusing to people who weren't already familiar with the cards.
Nevertheless I'm optimistic and looking forward to read more!
So now for a bit more detail
First off, I think they way they incorporate the player's tamer cards is really smart. A player get's their own blank tamer card, and can obtain various effects to add to it within the game, to customize their own tamer card to their play style. Nice! This way it doesn't feel like a weird 4th wall break for Yuuki to have a Yuuki Tamer card for example.
I really like Yuuki , immediately! She's fun, and she definitely has flaws and quirks to work on that'll make her interesting to watch grow. Her relationship with Impmon is nice too. Impmon is not exactly a serious character, but does want Yuuki to be a bit more serious, and recognize the weight of the situation. To an extend, Impmon wants Yuuki to take their partnership more serious in turn, I'd say. The way they talk to each other feels very familiar. You can tell they're close, not holding back complaining about the other. They bicker, but they also quickly drop the fight when needing to figure something out together.
Yuuki's Impmon, as most already know, get's a new evolution line: Punkmon, Loudmon, and HeavyMetaldramon. I love them! I like how it gives Yuuki and her Impmon more of an individual identity, than if they used a previously common Impmon line. The detail about Yuuki being a dancer, and vibing with the cool metal dragon is sweet too!
Tumblr media
Also, I wonder if that Altea character is this girl from the poster? It's interesting that Impmon is not a fan of her...
Tumblr media
Winr and FunBeemon's introduction was great too. Winr seems like a proud kid, without being feeling too stuck up. The story taking place after he's already known Yuuki for a year, really helps with his walls having started to come down already. I'm curious if his parents will be related to the in universe Digimon Franchise or Game Company in a way, or it they're just generic absent rich parents. Which, I don't think would take away from Winr's character if they are. I feel for him to want to escape from his home life into a virtual world. I love his relationship with FunBeemon. FunBeemon is very attentive to Winr's feelings, and cares a lot about him. And Winr doesn't get annoyed by it, but appreciates it, even though he doesn't quite know how to express it. The new evolutions for FunBeemon are also cool! I've like FunBeemon for a partner Digimon for a while, and I'm excited to see it finally happen!
I'm curious about Winr's real name too, assuming Winr is his username. Winr is a play on "winner", with his Japanese name ă‚”ă‚€ă‚­ăƒš Saikiyo being a play on æœ€ćŒ· (さいきょう) saikyou meaning "the best" or "the strongest". FunBeemon's nickname "Winnie" is キヹちゃん kiyo-chan in Japanese.
Tumblr media
For anyone who's interested: Japanese first person pronouns
Yuuki uses the japanese first person pronoun あたし atashi, which is quite feminine, but as being too over the top girly is sometimes seen as disruptive, atashi also has a do-as-I-please kinda vibe sometimes. For example, it's used by Yuffie from FFVII. The even more cute-girly atai in turn is often used in media by very strong-willed, rough women, such as Plumeria fom PokĂ©mon Sun&Moon, or the Gerudo women from the Legend of Zelda games. It can also be played straight as super cute too thoug, like with Vivian from Paper Mario TTYD.
Impmon uses ă‚Șハ ore, which is a strong, proud, often masculine pronoun. In formal situations it would be considered rude, but it's normal for guys to use in a casual setting. Very rarely it is also used by super tough women in media, such as Kumatora from Mother 3, or Big Mom from One Piece. Eiichiro Oda mentioned himself knowing women who use ore, but this is quite uncommon and likely a modern developement. You go girls! Impmon also uses it in katakana, which gives it a bit more emphasis.
Winr uses 惕 boku, which is quite common for young boys, or more soft spoken men in casual settings. In media it is also occasionally used by girl characters that have a "tomboy" vibe, but also sometimes by female singers in their songs.
FunBeemon uses 私 watashi, which is technically a polite neutral pronoun, but using it in a casual setting has a feminine connotation.
PS: Sorry this took so long, I'm still very sick, and writing coherent sentences with okay spelling is diffcult.
94 notes · View notes
zoeythebee · 1 year ago
Text
This is THE single largest milestone in my entire 7 year game programming career.
I don't think I've ever gone over my history with moving platforms before, but basically. Back in my sophomore year of highschool I had a programming class! I hadn't chosen to take it, but the class I wanted got cut so I got this instead. And I already knew how to program, and the teacher was chill so I was like "can I like just work on whatever?" and she said sure. The rest of the class was doing an online html+css class.
Anyway I was like "yo I have an entire class period to program! I am gonna make a game!" That game was the first version of ThreeEye, and it's scope was very small. My plan was some like 8 levels, and the only mechanics were movement, spikes, and moving platforms. Spikes were extremely easy.
But there are no words for the difficulties I faced trying to impliment moving platforms.
I spent... Every. Single. Class period.
For. A. Semester.
Trying get them working.
I tried making the game in Gamemaker and Godot.
In Gamemaker I had a strange issue with the player sorta hovering above the platform, instead of cleanly moving on top of it. And also sinking a pixel inside of the platform when moving up. I never fixed it.
I then tried Godot, and I continued to struggle.
Oh I struggled, I struggled and struggled and struggled.
And was it worth it? No.
I found the bug, and it was caused by my refusal to actually read documentation and instead follow tutorials. The tutorial I was reading had the arguments for a 'move_and_slide_with_snap` function out of order.
So I fixed the bug.
And immediately found another bug that was even more dramatic and hard to debug.
And I quit.
I quit game dev for 2 years, and never looked back. At that point almost all I had done was watch tutorials and ineffectively debug. And I was so hyper focused on fixing this ONE issue that I never grew. I burnt out and I declared that programming wasn't for me.
2 years later I discovered a video of someone making a game without a game engine, but in C. And I thought it looked fun. So I decided that I would try programming again, but I wouldn't focus on trying to FINISH something. I would program as a hobby, and try to enjoy the act itself.
And I got that spark back, and now, 2 and a half years later. I solved moving platforms with the following 2 lines of code.
Tumblr media
And it's not these lines specifically, my skills as a programmer and EVERYTHING surrounding these two lines is what brought me here. My code structure was good enough, such that actually implementing the moving platforms took 5 minutes. I copy and pasted some code, cut some stuff out, and added the above lines.
I know I am technically a better programmer than when I first faced this challenge, but after having actually beat it. I feel like I have made it further than I ever had before.
Also that means this game is also further along in progress then anything else I've made before.
Yippie!
160 notes · View notes
batbetbitbotbut · 3 months ago
Text
Tumblr media Tumblr media
(ID: photos of a chunky blue hardback book "The Complete Illustrated Lewis Carroll", plus "The Annotated Alice: The Definitive Edition" and a beautiful gilt-edged copy of "The Hunting of The Snark".)
My best charity shop find in some time: the complete works of Lewis Carroll, 1232 pages, fully illustrated, in perfect condition, for ÂŁ3! I have miscellaneous poems of his in other anthologies, but he might now have earnt his own corner of bookshelf somewhere.
The Alice books are in here of course, but there are so many dozens more poems and stories which I had never read before. I have started off with Phantasmagoria, a dialogue between a man and the ghost who comes to haunt him, and was particularly delighted / horrified by this pun and this stretched rhyme:
Tumblr media Tumblr media
ID: two photos of text. First one:
"Inspector Kobold came to you -" / The little Ghost began. / Here I broke in - "Inspector who? / Inspecting Ghosts is something new! / Explain yourself, my man!" "His name is Kobald," said my guest: / "One of the Spectre order: / You'll very often see him dressed / in a yellow gown, a crimson vest, / And a nightcap with a border. "He tried the Brocken business first, / But caught a sort of chill; / So came to England to be nursed, / And here it took the form of thirst, / Which he complains of still. "Port-wine, he says, when rich and sound, / Warms his old bones like nectar: / And as the inns, where it is found, / Are his especial hunting-ground, / We call him the Inn-Spectre."
Second one, bolding mine:
"And when you've learned to squeak, my man, / And caught the double sob, / You're pretty much where you began: / Just try and gibber if you can! / That's something like a job! "I've tried it and can only say / I'm sure you couldn't do it, e- / ven if you practised night and day, / Unless you have a turn that way, / And natural ingenuity.
And it also turns out that Carroll's style remains even when writing a serious logic textbook (Symbolic Logic) under his actual academic mathematician name Charles Dodgson:
Tumblr media
ID: photo of text:
(3) When you come to any passage you don't understand, read it again: if you still don't understand it, read it again: if you fail, even after three readings, very likely your brain is getting a little tired. In that case, put the book away, and take to other occupations, and next day, when you come to it fresh, you will very likely find that it is quite easy. (4) If possible, find some genial friend, who will read the book along with you, and will talk over the difficulties with you. Talking is a wonderful smoother-over of difficulties. When I come upon anything - in Logic or in any other hard subject - that entirely puzzles me, I find it a capital plan to talk it over, aloud, even when I am all alone. One can explain things so clearly to one's self! And then, you know, one is so patient with one's self: one never gets irritated at one's own stupidity!
Some wisdom from 1897 for us all. RIP Carroll you would have loved rubber duck debugging, idk how you have such faith in my not getting irritated at my own stupidity though
21 notes · View notes
danieyells · 5 months ago
Note
Hello! Sorry for the bother but do you know how the live 2D files of Tokyo debunker is accessed? I'm like so hyped about this help- Let me know if you could answer for me! THANK YOUUUU
I'm on the way to work so I'll just copypaste what i sent to someone else over DMs. Lmk if you run into any trouble, but it'll be like 8+ hours before I get to it
Hiya! No need to apologize for the sudden message. I just woke up so sorry for the wait!
I can explain the process for you and get screenshots to hopefully help out, and if you have any problems with it you can let me know!
You'll need:
An android phone and a way to transfer files between your phone and computer(a wire is preferable in my experience)
I think you need a windows or linux computer? I'm not sure if the necessary programs will work on mac.
AssetStudioGUI https://github.com/Perfare/AssetStudio
UnityLive2DExtractor https://github.com/Perfare/UnityLive2DExtractor/releases/tag/v1.0.7
First you'll need to transfer the game files to your computer. I assume you already have that part done so I won't walk you through it.
Next go into AssetStudioGUI and go into 'Debug' and turn off 'Show error message' to save yourself some headache
Now you need to open the folder with the files in AssetStudio. This will probably take a long time. Get yourself something to eat or play a game or read or something!
Once everything is loaded you'll need to find one of the live2d files. For tokyo debunker the easiest way to do this is just to go to "Filter Type" and filter to "Texture2D". I don't know the file structure or naming convention for Twst, but the image you're looking for should look kind of like this
Tumblr media
Right click and choose "Show original file".
Copy the FOLDER that this file is in to another folder.
If you haven't already extracted L2DExtractor, do that now. You should have these files.
Open the L2DExtractor FOLDER in another tab or window. Then drag the folder that you copied before to "UnityLive2DExtractor.exe" in the UnitLive2DExtractor folder that you have in a separate window. (You can also copy it and right click→paste it INTO THE EXE FILE if dragging is difficult.)
Tumblr media
You should get a command prompt(the black box with text in it) with the name of the asset in it. Wait until it says "Done!" Close the command prompt.
Tumblr media
Go to the folder that you put the asset folder in. You should now have a new folder named "Live2DOutput". That will have a folder in it. Go into the folder until you find the asset you just extracted.
You should now have the .moc3 file, textures, and motions! You can open the moc3 file with Live2D's Cubism Viewer which you get off of their website. It's free.
Tumblr media
If you don't have the expressions in there you'll have to extract them separately! I always have to extract them separately and I'm not sure why, but it's easy enough once you know where they are.
Open AssetStuido back up and change your filter to "MonoBehavior"
Search "exp3"
Order by Container and find the character character and outfit you just extracted(in this case I just need to find "romeo_academy". The name of the asset you extracted should be in the container path.
Highlight only the .exp3 files that go to this asset.
Tumblr media
Go to "Options→Export options"
Change "Group exported assets by" to "Do not group". If you want to do any datamining in the future you're probably going to want to change this back to "container path" or else you'll just get a ton of files in one folder, so don't forget you did this! If you're only using assetstudio to get the l2d files however you can leave it as is.
Tumblr media
Press "OK"
Right click on one of your highlighted exp3 files
Choose "Export selected assets"
Navigate to the folder with the moc3 file in it. Make a new folder. The name doesn't matter because you'll have to manually move the expressions into l2d every time, but I just use "expressions" for simplicity
Extract the exp3 files into here.
Once they're extracted you can select them all at once and drag them into the Cubism Viewer window OF THE CORRECT CHARACTER. This will instantly import all of the expressions.
Tumblr media
You're done! You can view and play with them all you want. But you'll have to do every character individually and then export their expressions separately.
Hope that helps. If you need anymore help let me know.
18 notes · View notes
xinyuehui · 1 year ago
Note
Hello there! do you still have an older version of evolwallpaper? I was late to the party and I can't install it properly anymore T_T
Hi anon, unfortunately I no longer have the old .exe đŸ˜© I checked weibo, other users in China are having problems with it as well, my conclusion to this is that it's a broken app full of bugs, probably got nothing to do with regions (ăƒŽăžïżŁă€)
Babe because of your ask, I spent good 5 hours tonight trying to debug it, because I insist we all get the dynamic wallpapers!!!
Original guide // Deepspace PC guide
By the end of this tutorial, we should have a video like this applied to our computer wallpaper:
Tumblr media
There's Nikki, MLQC, Deepspace and The Perceiver wallpapers.
New guide:
https://paperwall.papegames.com/
Tumblr media
Same step as before, download this but don't install yet!
The following was actually hidden in their Q&A, you'll also need this for it to run, download the runtime version.
https://dotnet.microsoft.com/en-us/download/dotnet-framework/net48
Tumblr media
After you install the .NET Framework 4.8 go ahead and try to install the PAPERWALL .exe
→ If it works, great! We solved the problem!! 🎉 (You can skip to the section on the bottom on how to use the app)
→ If you get this error message, ugh congratulations, this is where I tried about 67 solutions for hours just so you don't have to
Tumblr media
It's weird, because at this point, the thing have successfully installed on your local drive but it won't run.
Tumblr media
Let's go back a step, if you open the .exe again, take note of where it's at on your computer. For me you can see that it's in the C drive, I presume it'll be the same for you.
Tumblr media
Find the folder, open it
Tumblr media
Open the app
Tumblr media
→ If it works, great! We solved the problem!! 🎉 (You can skip to the section on the bottom on how to use the app)
→ If you get the same error message, read on:
Tumblr media
If the images haven't loaded in the 1.0.1 version it will most likely going to crash when you try to do anything on it, so read on:
Tumblr media
Let go back to the C drive
Tumblr media
We are gonna move this somewhere else, if you have a hard drive, paste it to your hard drive, if you have another drive on your pc, you can move it to the other drive. BUT DO NOT MOVE IT TO YOUR DESKTOP!!!! Because we practice good computer hygiene 🙏
Once you've moved everything away, open it back up and try to install it again in your new file location
Tumblr media Tumblr media
→ If it works, great! We solved the problem!! 🎉 (You can skip to the section on the bottom on how to use the app)
→ If you still get the same error message, I will send my portfolio to Paper Games to be a software developer in their office and write a new app
Tumblr media
Once you get it running *fingers crossed* move the entire folder back to your C drive if you moved it to your hard drive, unless your hard drive is plugged in all the time.
If for whatever reason you get the "access to the path is denied" error message, try the right click and select the "Run as administrator" option.
Tumblr media
For easy access:
Tumblr media
Go onto your desktop, or wherever you want to access it from quickly and paste shortcut!! Remember it's the shortcut!!
Tumblr media
───── ⑅ ♡ ⑅ ─────
How to use the app
The UI has changed a little since the original one, but it's easy to navigate.
Tumblr media Tumblr media
Change the language to English, it should reboot the app
Tumblr media
From here it's self explanatory
Tumblr media
For good computer hygiene you might want to double check where the wallpapers are stored and change directory if needed.
Tumblr media
If you're like me and have 2 monitors, this is what it'll look like with the wallpapers applied and the game opened, looks like I need a 3rd monitor for Shen Xinghui ⭐
(Desktop icons should show up, I just don't have icons on the desktop)
───── ⑅ ♡ ⑅ ─────
If you still have problems, check your PC specifications against the following that were recommended on the official site:
System: Windows10 or above
RAM: 1024MB or above
Processor: 1.66Hz Intel i5 or above
Graphics: HD Graphics 4000 or above
DirectX: 10
Secret third thing: you might be able to run it and have the lovely wallpapers but it suddenly goes glitchy or black screen... that's because of the faulty app, I've seen people mention it on weibo, it's not just you 😔
───── ⑅ ♡ ⑅ ─────
Feel free to drop me an ask with images if you still run into problems, hope this helps, until next time~ (✿◠‿◠)
Check out this tag for already answered questions #/wallpaper woes
69 notes · View notes
techav · 3 days ago
Text
On Making Progress
With my Wrap030 homebrew computer operational again, I could finally get back to the work I had been wanting to do with it in the first place. I was able to get it running my multi-user BASIC kernel from ROM with the main board, DRAM card, and 8-port serial card.
There's still more work I want to do with software, and pulling and burning the ROM for every little change is not a great way to develop software. It would be great if I could load programs from a disk instead. I did previously have disk access working, but that was with a different system configuration and a different ROM. There was also a limitation with my old code where files that spanned multiple clusters didn't load right.
So I needed to test the system with the FPU+IDE mezzanine board added to the stack, and I needed to add disk load functions to my ROM.
Adding the FPU board went better than expected. I added it to the stack and the system continued running as it had previously. I didn't even have to lower the clock speed to compensate for the new board.
So time to update that ROM. My previous disk load functions were written to work with the TSMON monitor program I had been using. I wanted something that could load my Multibasic system (or another OS) without intervention, so TSMON was not going to be a good fit. All I really needed was a simple bootloader — something that could load a file, BOOT.BIN, from the disk and run it.
Rather than try yet again to wrap my head around parsing FAT filesystem headers and how to traverse the allocation table, I decided to try using an existing library. The Elm-Chan FatFs library was just the thing I needed. It's written to be portable, needs only a few custom functions implemented by the host system for disk sector reads, and documented reasonably well. I was able to get it running in a weekend, including all the time it took for me to debug my own silly mistakes like reading only 510 bytes of each disk sector instead of 512 and accidentally swapping bytes when caching data read from the disk.
Getting Multibasic ready to run from disk instead of from ROM was actually fairly straightforward since it was already built to be loaded from ROM to RAM and then run from there. I just needed to make a few minor changes to the linker script and add a branch at the beginning of its vector table.
Tumblr media
So after many hours of work, I am right back where I was at the start 
 but also miles ahead of where I started. If I need to make a change to the Multibasic kernel, I can just copy the new program to a CompactFlash card like any other file. If I want to load a new program I can do so easily. And swapping programs is as easy as swapping cards and hitting Reset.
7 notes · View notes
mogruith · 2 months ago
Text
BG3 Photomode Tutorial #3: Otis_Inf Camera Tools
Chapter 0: Overview
Chapter 1: Script Extender Debug Console
Chapter 2: Scene Manipulation
Chapter 2.5: More Scene Manipulation
Chapter 3: Otis_Inf Camera Tools
Supplement: Mods and Resources
Instead of talking about ReShade, I'm going to talk about the awesome Otis_Inf BG3 Camera Tools. These will allow you to pause the game, move the camera around, and add some depth of field effects using ReShade and an addon.
Tumblr media
If you want to know about ReShade and basically have a video version of what I'm going to cover, check this video here. This video is where I learned pretty much everything about these tools. If you like watching over reading, go for that!
What you need to use these tools:
ReShade - @moriarfer reported some issues with 6.4.1 (latest as of this post) and downgraded to 6.3.3 to resolve that issue. If you're worried, download from that 6.3.3 link (links to the ReShade site.) Either way, you should grab the "Addon" version for IGCS.
Otis_Inf Baldur's Gate III Photomode Tools v1.0.23 (latest as of this post) - It's behind a Patreon for $5.50 USD a month. Note that sometimes it breaks after a major update and Patch 8 is Soon (tm) so ... buyer beware.
IgcsConnector - note that when you install ReShade, you can select IgcsConnector as an addon when you go through the wizard. However, you can also download it from here: IGCS Connector - I personally use v2.5.1 but 2.5.2 should be fine if you're running ReShade 3.x. If you're running ReShade 4.x, go for 2.5.3. Scroll to the bottom to see your options.
Installing ReShade
For installing ReShade, I recommend that video, but the Wizard guides you through it pretty easily. If you don't know what shaders to get, stay tuned for another post on that. There is one configuration you may have to make if you've never got ReShade working in BG3 before, and that's the Depth settings.
Installing IGCS
The video also covers IGCS but truth be told, it's easy to install manually if you didn't do it with the ReShade Wizard. Download that zip for IGCS and extract it to your Baldur's Gate folder. If you installed ReShade with the wizard, it will likely have a structure like I have. If you didn't, it may be slightly different.
Tumblr media Tumblr media
ReShade Depth Settings
When you run ReShade for the first time in BG3, you may need to configure the Depth settings. This is easy to do if you have the DisplayDepth shader installed. It should be installed by default, if I recall.
Toggle that on and check your settings: just make sure that the Reshade Depth Input is Reversed. You can check if it looks okay - a setup with characters in a foreground should look like this while DisplayDepth is toggled on:
Tumblr media
Make sure to uncheck DisplayDepth when you're done so the game looks normal.
Camera Tools!
At last! The fun stuff!
There's no "installing" them. You extract archive and you have a standalone program that injects code to unlock the camera. As such, it may be flagged as a virus by certain virus scanners. Be assured, if you got it from the Patreon, it is safe.
For best results, run the tools (IGCSClient.exe) after you've started BG3 and at least loaded the start menu. And then press Inject DLL. Once you do that successfully, the button will change from "Inject DLL" to "Re-Hook XInput".
Tumblr media
I personally use the keyboard/mouse, but it is possible to configure the buttons with a controller under "Gamepad button bindings". I will not be teaching you that, however.
Let's start with the essentials to take a single shot. I use the default keyboard settings so I'll be using those.
You can start a scene or just find a nice place or animation in the game you like and set up a shot. Once you find a shot you like, press 0 on the NumPad to freeze time.
I'm going to have my Tav, Coranzan, hug his sister, Z'ress so I'll pause it mid-animation so I can take as many shots as I like from as many angles as I like.
I've frozen time and the default camera shows this, which isn't particularly interesting to me.
Tumblr media
Here's some default controls for your reference:
Tumblr media
TL;DR:
8456 on NumPad is WASD
7 and 9 on NumPad is Up/Down
1 and 3 on NumPad Rotate Left/Right
2 on Numpad resets rotation
Up/Down/Left/Right arrows on Keyboard Rotate the Camera
NumPad + and - Increases and Decreases FoV
NumPad 0 Pauses/Unpauses
Delete on Keyboard Removes the HUD
So I let's press Insert to unlock the camera and used Up/Down/Left/Right arrows and 8/4/5/6 on NumPad to move the camera to their side.
Tumblr media
This is okay, let's work with this. I would like them to be a bigger focus in the shot. So I'm going to Increase the FoV with + on the NumPad until I get what I like. I'll have to adjust with a Arrow Keys and 8/4/5/6 NumPad as I do that.
Tumblr media
Alright this is okay. Let's make the backdrop nice and soft. By default you need to open ReShade using Home. By default you should get something like this, which may vary depending on your settings - don't worry about that too much for now. For now got ahead and click on the Addons Tab and then click Start depth-of-field session.
Tumblr media Tumblr media
Depending on the settings, your game might look really blurry - don't worry, that's normal:
Tumblr media
Most of the settings I do not regularly change, so if you want to copy the numbers as a starting point and slowly modify them, you totally can. But this will get very long if I get into each of the settings. So here's my "quick and dirty" depth of field settings. Some settings like Blur Type may drastically increase the time that it takes to render a shot, as a heads up.
Let's focus on a couple numbers for now:
Max bokeh size: This is basically the amount of "blur" you want to add to distant objects. If you increase the number, the double-images get further apart. If they're VERY part apart, the background will be EXTREMELY blurry.
Focus delta x: This controls the plane where the image maintains focus. If you increase the number, the foreground characters/objects will slowly come into focus. If you go too far, they will lose focus again. So we need a tool to help us with that to ensure details stay focused: The magnifier.
Magnifier: Check Show Magnifier and adjust the location numbers to change its left/right, up/down values. Pick something to focus on like an eye or some other tiny detail. Now adjust the magnification factor to zoom in on that detail.
I know Coran's tattoo pretty well so I'm going to get these two points from his tattoo to line up:
Tumblr media
So I just need to modify the Focus Delta X to line them up like so:
Tumblr media
Now that we've done that, we can see that their faces are nice and clear but there's double images for the fireflies and the like. These will become nice soft blurry bubbles when we render the shot.
Tumblr media
So now you're going to want to click the Start Render button at the bottom of this section:
Tumblr media
Once you click on that a bar should appear in the top left and the double-images should disappear. It should start blurring the background more as the meter increases.
Tumblr media
And once it's done, you can simply press the ScreenShot key and it shoulder render a screenshot using ReShade. If I recall correctly, this will be the Baldur's Gate III executable folder, but if you click the Settings tab, you can change it.
The resulting screenshot should be nice and soft in the background and focused in the foreground with perhaps a bit of smoothing on features like hair:
Before rendering:
Tumblr media
After rendering:
Tumblr media
Some other options I'll go over briefly:
Hot sampling: This gives you the ability to resize the window beyond what you monitor can see for extremely high resolution shots. I generally don't do this unless I want to do a detail shot like an extreme closeup or some mark/scar or something.
Configuration: If it's taking you WAY too long to move the camera because you increased the FoV to zoom way in, slide the options in the left column around, it really helps.
Image Adjustments: check Higher LODs for distant objects to have better rendering.
And that covers most of the tools. I may add another couple supplementary posts after this of some mods that I use and the shaders that I use in ReShade.
But for now, I believe I have at least briefly covered the major points, but it could be that I've glossed over some details. If you're struggling, please let me know.
Thanks for reading! Please send me any questions and I'll be happy to help in the comments, DMs, Discord, or whatever you need!
30 notes · View notes
ipso-faculty · 11 months ago
Text
A review of intersex/intergender flag mashup techniques
I really like it when I can figure out what a new pride flag means just from my knowledge of other flags, and I know I'm not alone on this. For example, here are some flags other people have made that I could immediately figure out were <thing> plus intersex:
Tumblr media Tumblr media Tumblr media
So, I've been thinking about how we as intersex flag creators can create hybrid flags in consistent way. I'm most motivated to figure out a recipe for intergender flags: genders that are connected to being intersex.
I assembled a spreadsheet of 66 gender flags, and wrote a Python script to take my csv file, parse it, and use the drawsvg library to draw the different flags in different ways. And then I stared at the results, showed them to friends, and discussed what would be both reliable in terms of producing clear, decent-looking results. (A subset of the results are under the keep reading cut.)
In this post I'm gonna review five mashup techniques that I automated and talk about advantages/disadvantages to each. But first a TLDR: adding yellow border stripes is a simple and reliable way to make an intersex-hybrid flag that is now my favourite (and recommended) way to make a new intergender flag.
For example, here's the interfluid flag (genderfluid in a way that is specifically intersex):
Tumblr media
***
Method 1: put a ring on it - advantages: simple to do, simple to understand - disadvantages: incredibly dependent on how well the ring colour works with background stripes, and the number of stripes. Would very roughly estimate only ~20% look decent.
Here's a subset of the results. Some, like genderfaun, look nice, but most look awkward:
Tumblr media
A yellow ring is even worse:
Tumblr media
I think the purple ring has a bit of potential, but I think it's not really viable for being used as a consistent, procedural way to make intergenders. ***
Method 2: stick a belt on it - advantages: already used for some existing mashups - disadvantages: some other genders are doing similar things, like voidpunk, and a white belt has been used by tons of groups for their mashups (e.g. neurogender).
It looks better than the ring alone, but I was still kinda underwhelmed because of how much it depends on the background stripes to not clash. Very roughly I'd say about 40% of the total results look good. Again, here's genderfae through paragender for comparison:
Tumblr media
Using a purple belt helps in some cases but makes for some visually busy results:
Tumblr media
The purple ones make me think of pokéballs. Again, there are some nice looking ones, but the effect over the whole group was underwhelming. ***
Method 3: inset into the ring - advantages: it's the most clearly "intersex plus X" - disadvantages: hard to read flags where the stripes are similar to each other; might clash with ring colour
When zoomed out like this the results aren't always super easy to read, but overall I'd say this is a reasonably reliably method - very roughly 60% of the results look good to me.
Playing with lightness and contrast on the inset flag likely would improve that number, but my goal here is to compare methods without tweaks.
Tumblr media
Insetting into the intergender flag has similar results:
Tumblr media
Method 4: add intersex-coloured stripe to the middle - advantage: seems like it would be simple - disadvantage: yellow middle stripe used for pansexual mashups; purple stripe is used in a bunch of of existing mashups - also disadvantage: turns out to actually be complicated in how to do it. Many flags have an odd number of stripes, not all flags have equal-length stripes, etc. I got buggy results on a whole bunch of flags like hijra and hypergirl and honestly if it takes dedicated debugging to fix it's probably too complicated.
When the original flag has an odd number of stripes, I doubled the original middle stripe up and this only works if there's a symmetry to the flag and all the stripes are of equal size.
The results are kinda busy. It looks good to my eyes very roughly 1/8 of the time (~12%) (I did an alternate version where I doubled the purple stripe around the original middle stripe and it's way worse.)
Purple stripe:
Tumblr media
Yellow stripe looks less busy but more confusing:
Tumblr media
Method 5: add border stripes with intersex colours - advantages: simple - disadvantages: maybe not as obviously intersex
I honestly didn't expect to like this one, but it has turned out to be my favourite. It works really reliably, like ~90% of the time, and it's distinctive.
Tumblr media
Surprisingly, using purple gives a really different vibe. It kinda makes me feel claustraphobic:
Tumblr media
Method 6: change the colours
This one I don't have automated results to share (at least not yet). Right now there are flags like how ultergender recolours the trans flag, that could serve as a template for recolouring.
Tumblr media Tumblr media
This is much more complex computationally - I spent a bunch of time playing around with different colourspaces (HSV, LCH, oklab, okLCH) to try to do this automatically and have concluded that this actually a difficult computational problem and not feasible as a widescale recipe.
Part of why the ultergender recolouring works is there are just two colours to recolour. How should one recolour the genderfluid flag? The demigender flag? It's possible to create a convention but not something I'm up to this moment.
I think recolouring is better suited to creating entirely new identities (like ultergender) rather than intergenders that are "<gender> but in an intergender way". ***
Discussion
My goal in all of this has been to try and identify some reliable recipes for creating hybrid flags particularly for intergenders.
My entirely subjective and imprecise estimates of how reliably each method yielded a decent-looking result were: 1. Add yellow border: ~90%-ish 2. Inset: ~60% 3. Belt: ~40% 4. Ring: ~20% 5. Add middle stripe: ~1/8-ish
I was honestly surprised at how much I liked the yellow border method and the friends I've shown it to so far have liked it as well!
I'd like to propose adding yellow border stripes as a recipe for creating intergender flags. This is already in use for interfluid (genderfluid in a specifically/uniquely intersex way):
Tumblr media
Indeed, it's the only one of the mashup functions I wrote that yields something for genderfluid that I actually like:
Tumblr media
Extrapolating, here are examples of some gender coinings that I think would work: Interdemigender: demigender in a specifically/uniquely intersex way and/or demigender in a way linked to being intersex/intergender
Tumblr media Tumblr media Tumblr media
Intervaguegender: vaguegender in a way that is specifically intersex, such as in a way that is connected to being intersex (i.e. one's gender is vague not just for being neurodivergent but also intersex)
Tumblr media Tumblr media Tumblr media
I think it works well! I hope you like it! Let me know if you have any feedback. If there are other mashup techniques I didn't think of, let me know. :)
43 notes · View notes
mesaprotector · 5 months ago
Text
Clarity trumps efficiency.
*I would've liked to write this essay to be understandable for someone without a programming/Linux background, but it was a bit too difficult. If you skip to the paragraph beginning with "...", it gets a bit easier from then on.
If you’ve ever written your own shell scripts you may have heard of the phrase “useless use of cat*”, or less tactfully, “cat abuse”. This refers to the practice, common among new shell script enthusiasts, of writing commands like “cat file.txt | grep name”, when “grep name file.txt” would serve perfectly well. Tools like shellcheck will bug you about it—along with similar constructions like “ps ax | grep Discord | wc -l” instead of “pgrep -c Discord”.
Well, I’m here to defend cat abuse! There are two arguments I see against the cat | grep construction, one of which is valid but situational, and the other of which is completely invalid. The former is that the extra pipe just adds additional overhead into the command. Yes, it does. And it’s unlikely to matter at all if you’re using it on 20KiB text files on a system built in the past 40 years; however, in production, when writing tools that need to be able to deal with arbitrarily large text files as efficiently as possible, sure.
The latter is “well, it’s just unnecessary”. I disagree. I think the cat | grep construction—along with similar such as grep | wc, ps | grep, ps | awk, and so on—serves a very important purpose in that it makes shell scripts easier to read, easier to modify, and easier to debug.
Consider this example from above:
ps ax | grep Discord | wc -l
Read the process table; filter for "Discord"; count the number of lines. It’s very atomic. Each operation can be swapped out for something else without confusing the reader. On the other hand:
pgrep -c Discord
Now, this does the same thing—counting the number of lines in the process table with "Discord" in them. It looks like only one operation... but it’s really still three in disguise. And worse, imagine you suddenly want to add another filter; sorting not only by Discord, but by processes that include the word “title”. This is not straightforward at all! It turns out that while regex has a standard way of searching for alternatives, it really does not provide an easy method for searching for BOTH of two words. On the other hand, with the atomic version, it’s easy:
ps ax | grep Discord | grep title | wc -l
Take that, “useless” use of cat.
There’s a broader meaning, though, to my statement of “clarity trumps efficiency”. I apply it to every aspect of use of electronics, from web searches to backup routines to yes, silly little shell scripts that use cat.
I use command aliases, but to a pretty limited degree; I avoid cutesy stuff like “ll” for “ls -l” and “yeet” for “pacman -Rns”, along with possibly-dangerous substitutions like “rm” for “rm -i”; I’d never dream of aliasing “nano” or “vi” to my preferred text editor (vim). I believe strongly that my commands should be transparent, and saving me from my own muscle memory once or twice is not worth making them completely opaque.
Tab completion on the other hand is one of my favorite features in the shell. It’s the perfect combination of transparent and convenient; without having to alias any of my application names or get hit by the information overload fuzzy finding gives you, I can still launch any of them in no more than four keystrokes. (Except audacious and audacity, admittedly.)
I use a floating window manager (Openbox), and when I need to briefly use a tiling layout, I have a very boring way of doing so: focusing each window one by one and moving it into the slot I want. (While holding down the Super/Windows key, 1-C-2-V does a basic left-right split.)
... I make some use of spellcheck on assignments to be turned in, but never autocorrect, which I abhor even in messaging apps. Every change to your inputs should be deliberate; otherwise you’ll never learn what you’re doing wrong, and you’ll never need to be precise because you’ve turned over that part of your brain to the algorithm.
This leads me to an important corollary of my principle: “it’s better to have a slow algorithm that you understand, than a fast one that you don’t”.
Satya Nadella’s vision of the PC of the future is one where you tell it what to do in natural language and it interprets that using LLMs and so on into machine instructions. Instead of viewing a PC as a toolbox you go into the workshop with, and work on projects with in certain defined ways, he wants the PC to be an assistant; you give the assistant directions and pray that it gets things right. Of course you aren’t allowed into the workshop with the tools anymore; that’s the assistant’s job!
Anyone who’s used Google Search over the past ten years knows how miserable this model is; you search for a specific phrase that Google “helpfully” corrects to something it thinks you meant. There was a learning curve to the old way, but once you learned how to state queries precisely, you were done; now you need to play psychologist, sociologist, and statistician all at once.
This is a decent part of why I dislike generative AI, though far from the main reason. I don’t want an opaque algorithm making decisions for me, unless those decisions are incredibly low-level stuff like core parking that no human should be directly involved with in the first place.
To get back to my own setup, I have a whole text file documenting the system maintenance process I go through once every month; most of it could be automated, but I make every step a deliberate choice. Not to go all new-age, but for me specifically—it all ties back in to mindfulness.
I think people have only a vague concept of what mindfulness is. Until two years ago or so, I was the same way. But to who I am now, mindfulness means not doing anything on autopilot. Instead of letting yourself half-doze off on a drive home, scarcely remembering the 20 minutes from the parking lot to the garage, be conscious of every turn. Instead of immediately putting on music and blocking out the world on a train ride to the next city, force yourself to be present in the train car, and notice the way the light reflects on the plastic seat two rows in front.
And to me, clarity in code, and in UX, is a part of this mindfulness. Programs that are easy to read, easy to modify, and easy to debug encourage you to look closer—to consider every atom that goes into their statements instead of taking them for granted. Slow algorithms that you understand can help you think of improvements; fast algorithms that you don’t encourage you to give up and leave the real thinking to someone else.
So write silly little shell scripts with five pipes in a single statement, and yes, that uselessly use cat. Rather than doing anything wrong—you’re allowing yourself and others to think, to try, and to improve.
12 notes · View notes