#int: mechanical keyboards
Explore tagged Tumblr posts
Text
help bc that's the exact reason i was collecting them. i have a container of those forbidden pop rocks and once i start fixating on keyboards again, im considering buying a bigger one to accommodate to the growing amount of these lil guys 😭
keyboard switches must be like candies to robots this stuff looks straight up scrumptious
8K notes
·
View notes
Text
another thing to add here is that i find it interesting that i prefer to read fanfics with music bc it really helps setting the mood but id rather type in silence... or mostly, silence just with the sound of my keyboard clacking or ambient music. while usually it seems to be the other way around for most people lol
0 notes
Text
Thess vs Basic Misunderstanding
Quick break from the workspace because there's a thing I kind of want to get down on "paper". See, I've been reading the reviews of the Horizon: Forbidden West PC port - I know it was reviewed as a game on the PS when it first came out, but I wasn't reading those because I couldn't have it yet, y'know? Anyway, obviously these new reviews touch on the game in and of itself, and at least one part of one particularly meh review kind of stuck with me.
I'm not talking about the one that keeps insisting that "you're not playing it at its best with mouse and keyboard; you need a controller". Though that one ... fuck you, I cannot use a controller, and I'm playing it just fine, thanks.
No, it's the one that talks about how stupid it is that a "video game protagonist" is taking off solo instead of accepting the help of her new-made friends on a mission that could prove fucking deadly. Because apparently all "video game protagonists" are supposed to be likeable. (Part of me wonders if the reviewer would have said that if Aloy was a man, but never mind.)
See, the thing he's not getting is that games aren't just about the end goal of the final mission. They're not just about the bosses, the fights, the exploration, the mechanics. No, Aloy's journey isn't just over physical distance - and no protagonist's journey should be. And her journey was about not being an exile anymore.
She had exactly one person her whole life who cared about her. One more who was willing to speak to her. And one who was just about willing to loophole the system where Aloy wasn't supposed to exist. That kind of thing will stick with you, especially when a first attempt at approaching kids her own age got a rock thrown at her head. And when she won the right to call herself one of the Nora? There was a nasty attack, and a lot of people - including her fucking father figure - died. Said father figure, in fact, died to save her. Now, she couldn't deal with that at the time, emotionally, because she had a mission - to save her now-people and all people from destruction at the hands of HADES.
But it's a long journey to the Forbidden West, and a longer time scouting for the thing she needs so desperately to save the world, and don't you think she'd be kind of attempting to cope with that? Probably badly, since she hasn't exactly got grounding in that whole "dealing with people" thing?
Especially when you consider the other thing Aloy couldn't dwell on - people becoming fond of her. People liking her. People wanting to help her. The last - hell, practically the only - person who ever did that died doing it. On one hand, she probably doesn't want more friends in her life because she doesn't want people to die. On the other hand, there are people she's fond of and she doesn't want them to die most of all. So yeah, she's going to slip off on her own and do the dangerous thing. And probably a part of her is going, "If I save the world, maybe I'll be worthy", and a part of her is going, "I was literally created to do this, and anything else would let my creator and progenitor down, and that includes other people", and most of all, "People? Nice people? People who like me? HOW POSSIBLE? WHAT DO I DO WITH THIS?". Frankly, dealing with monster dinosaurs and smarmy assholes from the far past is probably easier.
But this reviewer goes on about how "Varl gets shortchanged because all of his character development is offscreen" and I'm like, "I get that side characters are important, but ... you do get that Aloy is the main character, right?" So the reviewer is impatient about Aloy's character development but whining that this other guy doesn't get enough attention in Aloy's fucking game?
I haven't got that far into it - more bullet points later, honestly - but I just got angry about that bit. Like, why are we so impatient with a female protagonist who doesn't always know how to deal with people because she never fucking had to, who is now trying to internalise the fact that she is worthy of help and affection and care?
I swear, I still wonder what this guy's take on it would be if Aloy was a dude.
5 notes
·
View notes
Text
Haven't posted about Elden Ring in a bit.
I've been off on vacation for two weeks, then sick for a week. I hadn't played since I finished the game but basically the only thing I could focus on while sick was farming every single item in the game. The Magma Blade was painful to get.
It occurred to me that I really avoided getting good at Elden Ring combat (except for some specific skills). One thing I'm going to do before the DLC is try to fix that. I guess I could post this on somewhere like Discord or Reddit that has a lot more PvP tryhards, but I honestly find those communities pretty unpleasant. So here goes.
I played the game blind. Well, mostly blind - I gradually caved and researched more once I got near the end. This meant my understanding of the game's mechanics was poor at best. I beat the game with effectively 23½ Vigor (25 with a permanent debuff I didn't know about), fat-rolled through almost every fight, and depended on summons and Torrent most of the time. The skills I did develop (strategic aggro, stealth, crossbow shots) were useless in most boss fights. My reasoning was "well, I'm not getting one-shot...".
I play with mouse and keyboard, and always have. I never owned a controller as a kid (I wouldn't have thought to ask my parents, and they wouldn't have bought me one if I had), and since I've grown up I've played games seldom enough that it was never a priority. I vaguely know how to use one thanks to trips to friend's houses, but I still find it a miserable experience. On my recent trip I went over to a friend's and started Stray, the game where you're an adorable cyberpunk cat. I got to the very first action sequence, and attempting to turn corners with the controller was useless, it felt like the floor was slippery ice. I plugged in my mouse and beat it first try.
Aiming with a mouse is just so natural for me. You don't need lock-on (which is a necessary evil for controllers, but is at least a little immersion-breaking). Horse combat, which most Elden Ring players think is clunky and difficult, becomes easy.
The main downside of keyboard and mouse* is that the default keybinds are quite awkward. Sprint and dodge are the same key (and can't be separated). Switching equipped items uses the ARROW KEYS which means one of your two hands needs to leave its position for a second. The pouch keybinds are obscure and I never used it my entire playthrough.
So, after 200+ hours in Elden Ring, I changed all my keybinds. Shift is now sprint/dodge; space is now jump; the mouse middle key is now heavy attack and mouse 4th button is now weapon skill. Definitely taking some getting used to and I expect a lot of silly deaths but I can already tell it's so much better.
(*some absolute genius said they used controller and mouse to play the game, which is definitely superior but too daring for me)
I played the majority of my run with the Treespear, which it turns out was a rare good decision on my part - it's one of the best Dex/Fai weapons - but the main reason it's so good is something I didn't know, which is that you can buff it with Order's Blade for crazy damage, one of only two split-damage weapons that's true for. I never used Order's Blade... it requires 13 Int and my character was dumb as rocks, and proud of it. Plus I kind of want to use something different on my next run.
So after farming everything in sight this past week and trying them out, I found a weapon I'd never looked twice at - the Guardian's Swordspear (Keen affinity). It only scales with Dex but can still be buffed; halberds are absolutely the #1 mounted weapon class; and it just feels natural. Still unsure on which weapon art I'll stick with but for now I have Piercing Fang. It's a quick running attack that has lovely synergy with Wrath of Gold.
And yes, I'm still going to use incantations on the next run - how can you be a Faith build and not? - but disallowing lock-on means I'll be focusing on close-up magic and buffs. Hitting soldiers from across the map is funny a couple of times, but it doesn't have nearly the visceral joy of getting the timing down on a Fortissax's Lightning Spear or a Catch Flame.
Dex/Fai is a weird combination because it feels it doesn't get a lot of balanced, merely "very good" weapons. You have unique weapons that are downright broken (Blasphemous Blade, Sacred Relic Sword, Envoy's Long Horn) plus ones that are situationally good but not a great primary choice (Godslayer's Greatsword, Black Knife, Vyke's War Spear). I'm hoping my new Swordspear strikes a happy medium and gets me up to scratch on dodging, spacing, timing, and everything else. I'm still never going to join the PvP scene - I just want to git gud for my own sake.
0 notes
Text
I've been trying to put it in to words why my fellow Yankees (and myself sometimes) just refuse to take the L and just, keep making excuses for why they do [bad behavior signifying usamerican exceptionalism], for some time now, and I think I finally figured it out.
A non-insignificant part of yankee culture is built around a pattern ofperformative incompetence and faux learned-helplessness, wit regard to confrontations about the cultural mores and behaviors that either build up the myth of usamerican exceptionalism or are borne as a direct result of it. 'Tis a thought and behavior patter which I both really fucking hate and catch myself just accidentially slipping into alarming often for someone who considers themself a person who puts a lot of effort into NOT doing it.
"Oh, I simpley caaaaaaaan't put USA at the end of the address because I wasn't taught to do so when I was 11. Woe are us; no, is me, for we, no I am truly the victims in this scenario, wrogn'd by systemic malice and miseducation; my agency has been taken from me. How will I ever as an individual change my behavior in the face of such cultural malfeasance."
And, I think this part of yankee culture is a form of denialism about the falseness of the reality USAmerican exceptionalism presents.
Like, USAmerican Exceptionalism is one hell of a drug; really, its that nationalism is one hell of a family of drugs and USAE is the Methadone, maybe Oxymorphone, to British Exceptionalism's Oxycodone (Gotta leave room at the top of the scale for outright fascism's dogmatic hypernationalism).
The illogic of it, that you are special because you're lucky enough to live in the special country: it seeps into your bones like lead. It becomes, almost by design, a core facet of your worldview that being a Yankee is what makes you special; and in this, your self-esteem gets tethered to and tangled around your 'country-esteem'
And when people say, "You're country isn't special," by golly even if you agree there theyr right, it just sucks to hear because the nationalism's got its claws in ya good, and it twists a critique of the country int o a critic of you, personally; mal-interpretted as, "You're not special," and that triggers the fight, flight, fuck, freeze response.
Yanks respond to criticisms of USAE with more examples of USAE thinking because they perceive themselves as being under attack, so the critical-thinky part hands the keyboard off to the monkey tulpa and goes fishing, and this particular monkey; well, lets just say it ain't the one that manages to write shakespeare.
And even if you reject USAE academically, you'll still learned some of it, and you'll reflexively bristle up and get ready to fight. It's become a part of the culture we've built. It's a bad part of the culture we've built and we'd do well to be rid of it, but it's currently a thing we have to deal wit (unfortunately for y'all, y'all moreso than us)
This isn't to excuse the behavior: Is bad behavior: Get's spray bottle. Merely, I'm trying to put into words how I sees it. No idea how to address behavior or fix issue systemically tho. Sleepie Zwölf needs a nap, not several more hours typing out an indepth action plan and policy proposal to counter USAE and its internalized defense mechanism for a single tumblr post.
one thing I’ve noticed while running an online shop is that Americans never include their country when writing their address.
I don’t mean when filling in online forms, bc that’s obviously a required element. but when emailing me for address changes for orders, they never include a country in the updated address. but I always know the country is the United States of America because literally nobody else around the world would do that.
65K notes
·
View notes
Text
Behind the Scenes of Fic Writing: 30 Questions for Authors
This is such a cool tag! Thanks @breaniebree
What was the first fandom and/or pairing that you wrote fic for?
Hinny, all the way! It wasn’t good, but it was Hinny.
Do you participate in any writing events or challenges throughout the year? If so, what do you like about them?
I tend to participate in them semi-often on SIYE. I find them a good way to get some creative juices flowing with a topic or subject I wouldn’t have thought about on my own.
Do you write fics from start or finish, or jump around?
I go chapter by chapter. I would confuse myself too much if I started writing chapter 5 but then headed over to chapter 12. Also, I kinda don’t plan everything that far ahead. Which I’ll explain more in the next question lol
Do you outline before you start writing? If so, how far do you stray from that outline?
I do a quick overall base of what I want to do, who the enemies are, important moments I really want to happen, but I never do a full outline. A lot of the time I will have something planned for 5 chapters in the future, but no idea how to get there. I let inspiration strike me and go from there.
What is the perfect environment for you to write in?
A hot cup of tea, music playing softly in the background, and an empty house. It’s perfect when everything is quiet except for my music and my mechanical keyboard.
If you’re really concentrating, how many words can you write in a day?
Hmmm. I’ve never tested myself but I think the most I’ve ever done is 10,000 in one day. I wrote two chapters of “Only the Best” in one day and I aimed to make every chapter in that story at least 5,000 words. So I’d guess around 10,000.
Which part of writing do you struggle with most?
Editing. I hate re-reading my work only looking for flaws. If I were to re-read my work I’d want it to be for enjoyment and nostalgia, but alas in order to find enjoyment in the writing it needs to be edited well lol.
Do you listen to music while you write? If so, share a song that’s been inspiring you lately.
There is this live version of Can’t Go on Without You by KALEO that I love. Actually I’m listening to it right now. I listen to it at least once when I’m writing.
Do you prefer to write AUs, canon divergence, or canon-compliant fic?
AU”s all the way! I love taking a different world than the original and trying to fit everything into this different situation. I love Muggle AU’s the best for some reason.
Do you enjoy writing dialogue, exposition, or plot the most?
Dialogue is so much fun. Trying to come up with a witty comeback or heartwrenching final line is so intense and interesting.
If you could only write angst, fluff, or smut for the rest of your life, which would it be?
I love me some fluff. Like sometimes I go out with every intention on making things angst, and then they turn int fluff lol.
Is there a trope you haven’t written yet but really want to?
I don’t think I’ve done a “forced to share a bed” fic and that could be fun
Is there a trope you wouldn’t write if it was the last trope on earth?
Does slow burn count as a trope? I just can’t handle waiting so long for my ship together lol
If you were stuck on a desert island with only two characters, which would you pick?
Ginny Weasley and Hermione. Hermione because she could get us off the island somehow, and Ginny because she and I would have a great time cracking jokes while we helped Hermione.
A Hollywood producer tells you that they want to film just one of your fics. Which fic would you want it to be?
Hmmm. I think I would dig a film of Doom Days or Covert Love. Both have everything needed for a movie. Action, romance, and twists you don’t see coming lol.
What is your most underrated fic?
I wouldn’t say I have any underrated fics because they always are so much better received than I ever intend… that being said, I would love if more people read Doom Days
What fic are you most proud of?
This goes back to the last question. I spent so long planning and plotting Doom Days and I am extremely happy with the way it’s come out.
What is a line/scene you’re really proud of? Give us the DVD commentary for that scene.
Well because I don’t want to give to much away I’ll show off this once part.
His lips curled with forced levity.
I love the word levity and I really wanted to use it and then I thought about how when I’m making a bad joke in a bad moment I always smile to make people understand how I truly feel. Such a simple sentence brought me so much pride.
Who is the easiest/hardest character for you to write about? Why?
I find that I struggle with Hermione. She’s so much more… straight edge than I tend to focus on, so I have a hard time adding her into stories because I’m afraid I won’t do her justice.
What’s your favorite minor character you’ve written?
Right now it’s Prue from Covert Love. She is my own created character and I’ve had so much fun crafting this backstory that revolves around.... Things I wouldn’t talk about here ;)
What is the one fic that got away?
It hasn’t gotten away yet! I can still write it…. But when I was on a volcano in Spain I saw an adorable meet-cute and I really wanna make it a Hinny meet-cute. I just need to dedicate time… which I never seem to have lol
Have you cried while writing a fic?
Ummm…. I don’t think there have ever been tears but I was hit hard while writing the argument between Harry and Ginny in Covert Love.
If you had to remix one of your own fics, which would it be and how would you remix it?
Hmmm. I think I would have to say Only the Best because I would have liked to add more hints towards who was the culprit. I don’t think I put out enough clues so the reader could have had a chance to figure it out on their own.
How did you come up with title for Covert Love?
I knew I was going to be focusing a lot on the undercover element in this story but the love aspect was also going to be huge so I looked up words that meant undercover and really liked Covert. And it’s also a play on words because Harry and Ginny need to keep their love covert from everyone so Harry doesn’t get in trouble ;)
Which idea came to you first in Covert Love?
It was literally just the general idea of Harry being undercover and falling in love with Ginny. The idea to have her be under his protection started to form as I explored ways for them to meet. And when I decided to have him be unable to tell her about his job… I knew I had something I would love creating and working on. I knew I would have drama and so many intense moments I would be so proud of the story, which is always my goal.
Which part of Covert Love was the hardest to write?
The moment where Harry and Ginny fight because he didn’t tell her about his job. I knew the discovery scene was going to be vital and it always hurts to write Ginny and Harry fighting. So it felt like a lot of pressure and I think overall it came out really well!
If you were ever to do a sequel to Covert Love, what do you think might happen in it?
Hmmm… well I don’t have any plans on doing a sequel at this time, but that’s because I haven’t finished writing the first one yet :P
In Covert Love, what is a happy, post-fic headcanon you have about Hinny?
Harry and Ginny getting to stay together when everything is said and done… maybe a kid or two that love quidditch as much as their mom
A word that describes my WIP
Strive. Everyone is striving for something, even the bad guy. It all comes back to the person and their goals and how much effort they are willing to put into getting what they want/need.
Tell us an idea for a long fic you want to write in the future.
Well… I haven’t started it at all and the research will take a while, but I wanna do a Muggle AU treasure hunter fic. Harry is a treasure hunter who is out searching for a famous lost treasure. While out on an adventure, he runs into a wild red head who is somehow roped into helping Harry. They hate each other at first but fall in love with each other as the adventure goes on. Also, there is another hunter out for the glory of finding this treasure and they have to deal with that crazy bloke and his men. If you’ve played the Uncharted games you’ve seen the format and I’d love to do something with it! Let me know what you guys think!
19 notes
·
View notes
Text
Batman Rebirth Part 10
EXT: AMUSEMENT MILE - PIER- CONTINUOUS
JOKER casually waves at BATMAN...
...JOKER slashes the rope. PLUNGING JIM into the river...
EXT: AMUSEMENT MILE - PIER- MOMENTS LATER
... BATMAN runs towards the river, going to dive in after JIM.
...A GUNSHOT RINGS out. Hitting BATMAN in the chest, HE stumbles back...
...JOKER advances - firing again. HITTING BATMAN again...
...BATMAN dives at JOKER, knocking the revolver onto the floor...
...JOKER fights back, SWIPING again and again with the knife, BATMAN ducking and diving out of the way...
TERRY: (V.O) Why?
...BATMAN keeps trying to get the edge of the pier, JOKER coming back at him with the knife, BATMAN's fighting gets more and more DESPERATE, HE's bleeding out, panicking about JIM...
...BATMAN dives forward, tackling JOKER to the ground. THEY grapple, DESPERATELY fighting...
...BATMAN clambers to his knees. The revolver in his hand. HE's PANICKY, FRANTICALLY points it at the JOKER...
...The lever CLICKS...
SASHA: (V.O) To prove one point...
A maniacal smile CRACKS across the JOKER's face, He's achieved his lifelong ambition - Broke the Bat...
SASHA: (V.O) All it takes is one bad day to reduce the sanest man to lunacy...
MONTAGE ENDS.
END FLASHBACK:
INT: BATCAVE: MAIN CONCOURSE
BRUCE turns away from the ROBIN suit, to face TERRY. HE's eyes are red, almost on the verge of tears - visibly shaken.
BRUCE: Barbara never forgave me... I couldn't do it anymore after that....
THEY sit in awkward silence for a good few minutes. BRUCE and TERRY not looking at one another.
BRUCE: So... Terry, you sure you still want to do this?
TERRY glances up, MEETING BRUCE's gaze.
TERRY: Bruce... It's never been about wanting to do this, this needs to happen. Gotham needs hope.
INT: BATCAVE: BATCOMPUTER - MOMENTS LATER
An satellite view of GOTHAM appears on screen - flickering as it ZOOMS in. Following an BLINKING RED DOT.
BROTHER EYE: Target moving.
INT: BATCAVE: MAIN CONCOURSE - CONTINUOUS
BRUCE DIVES over - watching as the satellite ZOOMS in.The screen flickering as the image becomes clearer and clearer.
BRUCE: Powers is on the move.
TERRY turns. The RED DOT flying across the river, getting closer and closer to an structure floating in the distance.
TERRY: What's he heading towards?
BRUCE taps on the keyboard, bringing up a diagnostic screen - clicking OPTIMISE.
ON SCREEN:
The image clears up - revealing GOTHAM HOVERDOCK. Imagine an amalgamation of an aircraft supercarrier and a cargo ship. All kept in the air by four massive rotor systems.
ON SASHA:
SASHA: Looks like Gotham hoverdock... Must be where they are shipping from.
BRUCE: (O.S) Terry, If you want to do this, you better get in the air.
INT: BAT-JET: COCKPIT - NIGHT
TERRY'S in the cockpit, helmet on, visor up. The full HUD is activated - boresight, flight path vector all hovering in- front of BATMAN.
Lights flicker across the cockpit - forming into an SHIMMERING HOLOGRAM of BRUCE.
BRUCE: Terry, we got access to those files... Have a look at this.
The full VENOM GENOME flickers into existence - hovering next to BRUCE. Each gene labelled. BATMAN looks across at it.
BRUCE: This Blight has an remarkable similar genetic to street Venom.
TERRY So Powers was supplying Venom to those Jokerz?
BRUCE: By the looks of it... BRUCE: they dealt to the vagrants, in order for Powers to study the effects it had on them...
INT: BAT-JET: COCKPIT - NIGHT - MOMENTS LATER
TERRY God... I hope Dad wasn't involved...
A proximity alarm starts BEEPING on the HUD.
BROTHER EYE: Approaching target.
BRUCE: Terry, listen to me. We cannot allow that weapon to leave the city. It's more important than Powers. Untold numbers of lives are at stake.
TERRY glances down, gathering HIS thoughts.
TERRY: I know Bruce.
EXT: GOTHAM HOVERDOCK - NIGHT
A massive CARGO DRONE WHINES down through the sky. IT passes through a cloud, revealing... Gotham Hoverdock.
It's floating way above Gotham city. Imagine an amalgamation of an aircraft supercarrier and a cargo ship - Two runways, surrounded by cranes.
Our DRONE flies down, towards the hoverdock. Blades HUMMING. IT swings down, around the control tower...
INT: GOTHAM HOVERDOCK - CONTROL TOWER - NIGHT
It's the main hub of the hoverdock, A central control table surrounded by consoles and windows. It's alive with activity. PEOPLE running about, every console manned.
VILMOS is standing at the control table, watching the shipment being loaded on the overhead monitors.
VILMOS: How long until the transport is in the air?
Behind VILMOS, the double doors SWISH open. DEREK POWERS steps through, making HIS way to the control table.
DEREK: Why? Feeling like you've outstayed your welcome?
VILMOS turns, watching DEREK.
VILMOS: After the government raided your office? Of course I am!
DEREK: Relax, it was only GCPD. I'll make a call in the morning and it will all be cleared up. The Mayor owes me...
VILMOS: What about this Bat?...
DEREK looks up at the monitors.
DEREK: I doubt he's the real one.
DEREK looks over at VILMOS. VILMOS is still not convinced.
DEREK: Even if he does show up, I've brought some friends along, shouldn't be a problem.
On cue, the double doors SWISH open and two soldiers - clad in bulky mechanized armour MARCH in, their visors raised. Each has a insignia on their armour, a black chess piece - a Knight.
VILMOS turns - looking them over...
VILMOS: Can I help y...
DEREK (Interrupting) Ah, may I introduce Checkmate, America's finest private army.
DEREK moves across to introduce the Checkmate soldiers - SERGEANT CONRAD MACKAY and SERGEANT CONNIE WEBB.
DEREK: This is Sergeant Conrad Mackay.
VILMOS shakes HIS hand. The armour WHIRRING.
DEREK And this is Sergeant...
CONNIE: (Interrupting) Just Connie, sir.
VILMOS shakes HER hand. the armour WHIRS.
CONNIE: Heard all about you Vilmos.
VILMOS: Ah, What did you hear?
CONNIE: Only the best things Sir.
VILMOS nods - impressed.
VILMOS: (To Derek) So these were the friends that you were referring to?
DEREK: Yes, We have these two and some others.
VILMOS: How many others exactly?
CONRAD: We've deployed two squads on this rig. More than enough to deal with some man in...
INT: GOTHAM HOVERDOCK - CONTROL TOWER - MOMENTS LATER
An ALARM BLARES across the control tower.
VILMO'S, CONNIE, CONRAD watch the screens above. Looking for the cause.
DEREK What the hell's going on?
CONNIE points at the screen.
VILMOS: He's found us.
DEREK looks up... seeing the BAT-JET on approach...
...Derek turns to CONNIE...
DEREK: Deal with him!
EXT: GOTHAM HOVERDOCK - WALKWAY - NIGHT
The walkway runs along the edge of the hoverdock, on one side there is the cargo - rows and rows of containers. The other - the night sky.
CHECKMATE SOLDIERS charge onto the walkway, all carrying multi missile launchers...
The SOLDIERS crouch down. Look through the targeting sights...
SOLDIER 1: Target locked!
SOLDIER 2: FIRE!
EXT: GOTHAM HOVERDOCK - WALKWAY - MOMENTS LATER
...BOOM! MISSILE after MISSILE ROAR out of the tubes, towards the BAT-JET...
#batman#batman beyond#rebirth#science fiction#cyperpunk#cyberpunk#the dark knigth rises#the dark knight#bruce wayne#fan fic#fan fiction#screenplay#batman fandom#batman fanfiction#joker#sci fi#terry mcginnis
8 notes
·
View notes
Text
Part 2 of Star Wars if It Was Written by AI
(Disclaimer: I don’t own The Force Awakens. All copyrighted material is used for parody and is not officially endorsed.)
Generated using the Botnik predictive keyboard, here are a few more scenes from Star Wars Episode VII: The Other Space Gang in which Poe Dameron continues ripping out windshields, Han eats some cables, Rey can fly thanks to Kylo Ren, Finn is attacked by doors, BB-8 gains solar power ability thanks to Hux, and Hux finds out that Rey hit Kylo.
-- int. sweet shields intersect the sand tape. Pilots prep their ships, narrowly missing the treachery of the loathsome resistance. Destruction is here. Rey runs down a long narrow hall lined with sinister First Order banners and the entire planet of Hosnian Prime. She hears something insane: Han Solo.
Han: Water is cute...
Rey turns frantic. Quietly, she opens her mouth and panics.
Rey: Who stole the sand pump?
Han is not sure what she's up to. He rips out his voice and softens a lot.
Han: We gotta lose that thing.
Han turns to look at his son with dread. He offers to get a rathtar. Rey is horrified.
Rey: Kylo is not how I thought he was. He looks like crazy, but he is a Jedi. I respect that guy. I thought he was a mistake. Then, he convinced me to blast that bucket of fire, and I found that I could fly.
Han is not liking this conversation. Han moves out of the room, tears stream down like elastic metal, and rey reacts with subtle flat conformity.
The falcon is parked in this giant hairy thing. Quietly, eerily, she tries to play the chess set. Rey looks hopeful, but the ship is suddenly filled with BB-8.
BB-8 turns to her feet, scrutinizing her staff and beeps furiously.
Rey the force ability of ren 's rage continues to be vulnerable. Kylo is a bit of an acquired taste.
-- the First Order Star Destroyer Fireball Room --
Mitaka watches Poe run with BB-8 out the window in front of him.
Hux, clearly worried about bb-8: He's doomed with Poe. (louder) I hope you know what I've seen!
Amid the corridor, the First Order officer launches a massive, glossy glove from the dark side. Another problem is about to happen.
Hux, with enormous resignation: Poe is alive and brought me a long cable. I don't want it, but I can't leave here without his ship. Do you think he is a bit impressed when I am calm?
Poe, knocking over food and plates: General Hux, i like you!
Poe is likable.
General Hux lines the ship with poisonous water and Poe 's face. The other intimacy in his voice echoes from the transport through the woods of the corridor.
Hux: Will you help me with this?
Hux is gesturing to the droid. He makes a hard decision to get bb-8 a small sun sucking panel, which displays a little space gang. The droid tells him to be nice.
Poe: Well, you see, I need your idea about this thing...
Hux: Thanks, no.
-- the corridor by the imposing space castle ruins --
Rey is angrily spinning her staff. Finn slowly extends his best Finn voice to her.
Finn: We can't trust those little freaks in the First Order. Perhaps since Luke is gone, Kylo senses the Force ability. Somehow, he looks like a tough wall of fire. Yeah...
Rey: it 's just Poe 's black glove's not how I thought it was...
(continued) You probably don't know what happened to him, but I can't be helpful for this job when he rips out the windshield. It's bad... General Hux destroyed the Hosnian Window Door where we need to get out of here. I don't want my help, but I don't care that I don't want it.
Rey and Finn climb up a level and pass close to camera. After this, Finn is reminded that she can't move fast until Skywalker returns.
Finn: Chaos is the First Order. I need to get as far away from the First Order precious sunlight as we can or we're not gonna get away from trees...
Across the ship, tears flood the First Order. Someone is hit by a fiery blade of fire. Horrified voices fill the air tape. Trash doors and sweeping chairs attack Finn.
Finn (very slowly): this is so scary!
Rey watches him, wielding a long tentacle. She tries to force a smile, but the smoke is Snoke...
Mitaka turns off the controls, and Finn hurriedly crawls through the large hut. Another Mace kicks over a Resistance base computer.
Rey: I've got three thousand yards of white joy ships but I don't know how to run with this.
Clank! Without hesitation, she opens her canteen again and again. Sinister metal lines reflect the Force of Rey, who suddenly starts to see Kylo Ren. She wraps his helmet in agony and heads for the door where Bala, the apprentice of Han Solo, is incinerated. Finn sighs and heads toward the ship.
Rey: Tennis match!
-- The Resistance fleet of the loathsome Resistance --
Guard # 2: I'll drop your family on Jakku.
Han is chewing cables connected to the ship with excitement. He rips a long cable and heads for a bunch of bombs. Poe sighs heavily at the holochess set. He looks less certain now that food in the Resistance is gone.
His hand rises up to the main control panel and turns off the sand filter. The ship is suddenly filled with the sandy nothingness of Jakku. Horrified, he rips out the ship 's hull and grabs his knees light. Poe is not going to be helpful with this day. General leia organa launches a missile box to the first order, but Han is nowhere to be helpful.
The black duffel in the lounge is suddenly hit by steam. Grotesque, evil, grimy doors drive Han Solo to the edge of his confidence.
Han: Will we both react to this horrible news?
-- the First Order Officer Railing --
Hux dials Supreme Leader Snoke, Poe and Kylo Ren. He hears a mechanical breathing sound, but no one says anything.
Hux waits frantic and isolated. Finally. Kylo walks into the atrium.
Hux: (gestures to the Resistance base) I don't want that thing to be there. Poe and I found a lot of your hair in there and I thought that was incredibly foolish.
Kylo appears to be ready to fire him.
Hux ( cont'd ): Oh no no no no no. No one ever gave you permission to look at me like that. You think this is great?
Ren watches him with more eyes open. Dark power goes out from inside the box of his mask. He sees his lightsaber and slowly extends it to slit the controls.
Hux, clearly yelling: This is not going anywhere. Kylo, I know you've been hit by a girl, Rey.
Ren turns to him with crazy embarrassed panting. Then, he makes towards the door and runs out of the destroyer. Hux is stunned by this.
See Part 1 of Star Wars Episode VII: The Other Space Gang
#rey star wars#general hux#finn star wars#reylo#gingerpilot#poe dameron#kylo ren#han solo#dopheld mitaka#first order#the smoke is snoke#botnik#star wars episode vii: the other space gang
19 notes
·
View notes
Text
Thanks to @dearmirah for tagging me! :)
Rules: Answer 16 questions and tag 21 blogs.
Nickname: ana is a nickname, i have a longer but equally common name actually :)
Starsign: capricorn
Height: 5′11″
Last Film I Watched: mmm i often binge tv shows but i can’t remember the last movie i watched. any recs?
Favorite Musician: hozier
Song Stuck in my Head: currently lorde’s writer in the dark because last week i stumbled on that dark academia playlist post on tumblr
Other Blogs: inactive
Do I get asks: nope!
What am I wearing: pajamas that my mum bought me (they’re nice and soft and have buttons and a collar! i’ve been sleeping in old t-shirts+pants as long as i can remember, so this feels lavish!)
Dream Job: this ties in with my intro post, but whenever i get inspired to try out a new craft, i start daydreaming about making a living practicing it (this isn’t to say i think being an artist is all sunshine and daisies! it’s just become a coping mechanism at this point, imagining i can just go live somewhere in the countryside, build myself a little shack & get a bunch of cats and dogs and plants to keep me company while i putter about creating nice things for people)
Dream Trip: i’d really like to make it to japan one day!
Play any instruments?: i taught myself how to play a few songs very badly on an electric keyboard/my library’s piano when i was in high school. and i can strum a couple of chords on a guitar, but yeah, no, i can’t play any instruments.
Languages: english, i can read in both french and italian (the last was a surprise, as i’ve had no formal training in it). also if you speak swedish, you can drop me a hej! (men förvänta dig inte att jag skulle kunna säga mer än hej tillbaka -.-)
Favorite food: freshly baked bread
Favorite song: currently my go-to song for impromptu humming and swaying around the house is would that i.
Random fact: i’m lowkey looking for opportunities to move to rome sometime in the future after travelling there this summer. i’ve never fallen in love with a city like this before!
I tag but in no way obligate: I tag but in no way obligate: @oystertongue, @suiteinphd, @readjournalstudy, @historia-vitae-magistras, @shelomit, @etudesceltiques, @451degreesofprocrastination, @minty-bea, @5am-raining, @nouvellemission, @le-malaise-du-moment, @studiesofaclassicist, @shadingadream, @themindatwork, @the-wayfaringstranger
#thank you this was fun!!#sorry for getting to it so late#i kept putting it off bc i knew it would require a bit of detective work#i hope i got all u guys's studyblrs right!#i tried not tagging people @dearmirah had tagged already#also @dearmirah: a summer friendly presentable pajama-like outfit is the ideal!!#and i feel you on being so burnt out you just want to go home#hope you can take some time off and feel better soon!#GBC19
4 notes
·
View notes
Text
Vagante 1.0
http://store.steampowered.com/app/323220/Vagante/
It’s been a long road (over four years!), but we’re super happy to present version 1.0 of Vagante. It wouldn’t have been possible to make it this far if it weren’t for all the people who supported us. Thank you all for sticking with us throughout Steam Early Access!
What’s in store for the future of Vagante you might ask? We plan on continuing development as we have throughout Early Access, with bug fixes and new content, as well as adding localization and porting to other platforms. We’ll also start looking into support for modding and adding user-generated content to the game.
Vagante will retain its Early Access price until February 25 2018, after which we’ll be increasing the price to $17.99. However, if you miss this window of opportunity you can look forward to Vagante participating in future Steam sales.
If you like the music of Vagante, Sam English has released the full Vagante OST on bandcamp. https://samenglish.bandcamp.com/album/vagante-original-soundtrack We’ll also be making the OST available on Steam in a couple days, if you prefer getting it here.
Without further ado, you can read the full changelog below.
New/Balance
Added final area + credits to the game
Added new progression and unlocks system
Reworked Shadow Knight Boss
Reworked Necromancer Boss
Multiple Rock Worm Boss can now be hit with the same swing
Items stolen from Shops now have a new property that identifies them as Stolen
Reduced monster health scaling per player from 33% to 25%
Reduced Mechanical Soldier vertical spinning speed
Polished title screen
Polished game over menu
Changed default keyboard controls
Added input presets
Reworked emote menu
Reworked Tutorial
Removed starting affinity point
Leveling up now occurs at Bonfires, rather than on entering an intermission
Increased Bonfire healing hp (10 -> 20)
Fish Man now has a chase leash range
All characters can now aim up and down with bows
Bow aim persists between shots, until you attack with another weapon or press Melee while aiming
Reworked Archery affinity
Changed exiting of levels to use holding Up instead of Interact
Increased lighting persistedness
Increased Summon Monster spell tier, and slightly reworked the levels
Reduced bat instability 1.9 -> 1.0
Increased starting Int of non mage classes
Polished a number of weapon sprites
Added some new backgrounds
Bugfixes
Fixed Rock Worm Boss sometimes getting stuck in walls
Fixed multiple bugs with the Thief sidequest
Fixed speech bubbles sometimes not being drawn
Fixed Factory monsters not being frozen properly, and sometimes dealing damage while frozen
Fixed Icebolt and other projectiles not hitting monsters that it spawns on
Fix wallmeat spawning in tiles that serve as platforms
Fix boulders being pushed by Vine Lord’s poison clouds
Fix players being able to phase through non-level geometry
Fixed Mushroom Golem Boss’s boulder attacks teleporting through walls.
Fixed Spikes sometimes spawning in Breakable Walls
Fixed Shopkeepers not spawning when loading a saved game
Fixed some units not having a visible sprite until they have a target
Fixed Piranhas freezing at bottom of water
Fixed frozen imps falling through walls
Fixed arrows sticking to Wisps after their death
Fixed intermissions not being indestructible
Fixed Wisp Queen aggroing from non-player damage
Fixed a handful of untraversable room types
Fixed being able to hurt self when using Lion’s Roar while standing on a crate
Fixed being able to roll while casting spells
Fixed being able to roll through Tower gates
Fixed being able to get underneath Tower Serpent boss without triggering boss fight
Fixed charged sword’s sprites wandering off when the game is paused
Fixed Man-eating Plant eating doodads other than crates/barrels
OMP: Fixed tile updates not being synced sometimes for new levels
OMP: Fixed a number of issues with Platforms and their sync.
OMP: Fixed Demon Armor attacks being desynced sometimes
OMP: Fixed bug where shop inventory becomes desynced
OMP: Fixed rod charges being set to zero upon starting a new game
OMP: Fixed being able to use an item while moving it, resulting in an inventory desync
303 notes
·
View notes
Text
How to choose the Digital Piano
Kraft music and thank you for visiting and I'm here today to talk to you about digital pianos what is a digital piano.
how is it different than a keyboard and how do you select the right digital piano for you and your family a digital piano by definition would have eighty-eight hammer weighted keys there hammer weighted so they're heavier like a real piano oftentimes a keyboard something that's referred to as a keyboard or a portable keyboard or a synthesizer wouldn't necessarily have that heavier hammer weighted key action to be a light touch like a spring-loaded action for piano performance for piano lessons to build strength and dexterity in your fingers.
what you want is very specifically that hammer action an acoustic piano has 88 keys the digital piano will have 88 keys they'll have that hammer action and what you'll find is that most of them not only have a hammer action but a graded action they're heavier on the left and as you play up to the right they become a little bit lighter and this is exactly true on a real grand piano as well digital pianos are available in a variety of styles and you're going to see some examples of these right behind me one of the first questions to ask yourself when shopping for a digital piano.
do you need it to be portable are you going to travel with the piano on a weekly basis maybe to church or to your piano lessons or are you looking for a piece of furniture for the home if you're looking for a piece of furniture for the home digital pianos are designed and built as a console like an upright piano beautiful cabinetry built-in speakers looks like a conventional piano if you're in a condo or an apartment.
you like the idea of a piece of furniture but you need to save some space they are also manufactured as a slimline piano they don't go as deep they're quite slim and they fit in small compact areas quite well both styles of piano are going to have the 88 hammer weighted keys that you're looking for in the digital piano and for the most part the features and the functions are going to be just the same. piano-reviews.com/roland-fp-30-vs-yamaha-p115/
we'll talk a little bit more about common features and functions across the board with digital pianos in just a little bit furniture style pianos will typically come with their own dedicated matching furniture style stand the triple pedal unit integrated into the body of the instrument is the music rest on a console piano they'll also be a hard sliding key cover comes over the keys to keep them protected when you're not playing.
slimline furniture pianos that key cover is a folding key cover and again the purpose just to protect your keys when you're not playing most of the furniture style digital pianos also include a matching bench if you'd love to have a furniture style piano in your home but you'd still like the option to travel with it you can't have both in one of the hybrid pianos we refer to them as the contemporary pianos a contemporary piano can be purchased with the optional dedicated furniture style stand.
triple pedal board have that set up in your home it looks great in the living room when it comes time to travel you remove the piano from the furniture stand and you take a portable x-frame stand which folds up very nicely and neatly and compact and very easy for travel typically the furniture style pianos do come with the triple paddle unit for the pianos that do not come with a triple pedal unit many of those do come with a single pedal the single paddle will behave as your sustain pedal .
which is the most commonly used pedal on the piano you may be asking yourself do I need all three pedals if you're an experienced piano player you probably already know the answer to this if you're not I can tell you that the pedal on the right that's a stained pedal you're going to need it you're going to use it all day every day can't live without it that pedal on the left that soft pedal brings the overall volume the piano down just a little bit you're going to find markings for that in early lesson books a pedal in the middle that's austere neutral pedal you're going to find any case for that in advanced classical music
so while you may not need that immediately we have found that most of our customers prefer the finished look of a digital piano with the triple pedal option this brings me to something else not all digital pianos have built-in speakers what how do you hear them if they have no built-in speakers well stage pianos
when you go see a major concert and there's someone playing the keyboards up o stage those keyboards those digital pianos typically don't have speakers built into them they don't need them they have big speakers on the stage that they connect those to so while you are shopping if you do see something called a stage you know stage pianos are portable they typically don't have furniture stands that go with them it's a portable piano it still has the great action and the great sound but no built-in speakers the only way to hear a staged piano would be to put on headphones or to plug it int an amplifier studio monitors or your home stereo system one of the most important things that changes as you move up the line in digital pianos is the key action despite the fact that they all have 88 keys they're hammer weighted they're graded .
they're velocity-sensitive not all key actions are created equal certainly the key action in an entry-level student model is absolutely appropriate for an entry-level student as you move up and up the line what you're going to find is a faster key return a heavier key in some cases the keys are no longer made of plastic that actually made a wood with a true seesaw mechanism built in just as it would be on a real grand piano for a seasoned professional pianist . Read the Comparison of roland fp30 vs yamaha p115
very high-end key action would be very important let's talk about some other things that improve as you move up the line in digital pianos that talk to customers each day on the telephone here for Kraft music and a lot of what I hear is I'm not looking for bells and whistles and while there are a couple models on the market that are loaded with bells and whistles for the most part that's not what's happening with the digital pianos as you move up the line rather than bells and whistles what's happening is quality is coming up we already spoke about how the quality the key action comes up well so does the quality of the piano sound not only the internal sound engine producing better piano samples but also the amplification systems the speaker systems making just a bigger more robust grand piano sound.
the last thing I'd like to tell you as you move up the line in digital pianos is that the build quality will improve not only that but there'll be some upgrades cosmetically here at Kraft music we specialize in digital pianos we have experts on staff that know the instruments inside now and are ready to answer any questions you may have additionally we have bundles pre-built for your needs whether it's for your home piano whether you're traveling the church or do your piano lessons with your portable piano we've got a a bundle ready to go that's going to save you time and it's going to save you money once again my name is Adam burrs oski here with kraft music if you have any questions about our digital pianos or any of our products.
88 notes
·
View notes
Text
Path tracking code
Find the skeleton and the pantograph codes below:
SKELETON
/** ********************************************************************************************************************** * @file sketch_2_Hello_Wall.pde * @author Steve Ding, Colin Gallacher, Antoine Weill--Duflos * @version V1.0.0 * @date 09-February-2021 * @brief PID example with random position of a target ********************************************************************************************************************** * @attention * * ********************************************************************************************************************** */
/* library imports *****************************************************************************************************/ import processing.serial.*; import static java.util.concurrent.TimeUnit.*; import java.util.concurrent.*; import controlP5.*; /* end library imports *************************************************************************************************/
/* scheduler definition ************************************************************************************************/ private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); /* end scheduler definition ********************************************************************************************/
ControlP5 cp5;
/* device block definitions ********************************************************************************************/ Board haplyBoard; Device widgetOne; Mechanisms pantograph;
byte widgetOneID = 5; int CW = 0; int CCW = 1; boolean renderingForce = false; /* end device block definition *****************************************************************************************/
/* framerate definition ************************************************************************************************/ long baseFrameRate = 120; /* end framerate definition ********************************************************************************************/
/* elements definition *************************************************************************************************/
/* Screen and world setup parameters */ float pixelsPerMeter = 4000.0; float radsPerDegree = 0.01745;
/* pantagraph link parameters in meters */ float l = 0.07; float L = 0.09;
/* end effector radius in meters */ float rEE = 0.006;
/* generic data for a 2DOF device */ /* joint space */ PVector angles = new PVector(0, 0); PVector torques = new PVector(0, 0); PVector oldangles = new PVector(0, 0); PVector diff = new PVector(0, 0);
/* task space */ PVector posEE = new PVector(0, 0); PVector fEE = new PVector(0, 0);
/* device graphical position */ PVector deviceOrigin = new PVector(0, 0);
/* World boundaries reference */ final int worldPixelWidth = 1000; final int worldPixelHeight = 650;
float x_m,y_m;
// used to compute the time difference between two loops for differentiation long oldtime = 0; // for changing update rate int iter = 0;
/// PID stuff
float P = 0.0; // for I float I = 0; float cumerrorx = 0; float cumerrory = 0; // for D float oldex = 0.0f; float oldey = 0.0f; float D = 0;
//for exponential filter on differentiation float diffx = 0; float diffy = 0; float buffx = 0; float buffy = 0; float smoothing = 0.80;
float xr = 0; float yr = 0; float xO = 0; float yO = 0; int last = 0; int m = 0 ;
// checking everything run in less than 1ms long timetaken= 0;
// set loop time in usec (note from Antoine, 500 is about the limit of my computer max CPU usage) int looptime = 500;
/* graphical elements */ PShape pGraph, joint, endEffector; PShape wall; PShape target; PFont f; /* end elements definition *********************************************************************************************/
/* setup section *******************************************************************************************************/ void setup(){ /* put setup code here, run once: */
/* screen size definition */ size(1000, 700);
/* GUI setup */ smooth(); cp5 = new ControlP5(this); cp5.addTextlabel("Prop") .setText("Gain for P(roportional)") .setPosition(0,0) .setColorValue(color(255,0,0)) .setFont(createFont("Georgia",20)) ; cp5.addKnob("P") .setRange(0,2) .setValue(0) .setPosition(50,25) .setRadius(50) .setDragDirection(Knob.VERTICAL) ; cp5.addTextlabel("Int") .setText("Gain for I(ntegral)") .setPosition(0,125) .setColorValue(color(255,0,0)) .setFont(createFont("Georgia",20)) ; cp5.addKnob("I") .setRange(0,2) .setValue(0) .setPosition(50,150) .setRadius(50) .setDragDirection(Knob.VERTICAL) ; cp5.addTextlabel("Deriv") .setText("Gain for D(erivative)") .setPosition(0,250) .setColorValue(color(255,0,0)) .setFont(createFont("Georgia",20)) ; cp5.addKnob("D") .setRange(0,4) .setValue(0) .setPosition(50,275) .setRadius(50) .setDragDirection(Knob.VERTICAL) ; cp5.addTextlabel("Deriv filt") .setText("Exponential filter for Diff") .setPosition(0,375) .setColorValue(color(255,0,0)) .setFont(createFont("Georgia",20)) ; cp5.addSlider("smoothing") .setPosition(10,400) .setSize(200,20) .setRange(0,1) .setValue(0.8) ; cp5.addTextlabel("Loop time") .setText("Loop time") .setPosition(0,420) .setColorValue(color(255,0,0)) .setFont(createFont("Georgia",20)) ; cp5.addSlider("looptime") .setPosition(10,450) .setWidth(200) .setRange(250,4000) // values can range from big to small as well .setValue(500) .setNumberOfTickMarks(16) .setSliderMode(Slider.FLEXIBLE) ; cp5.addButton("RandomPosition") .setValue(0) .setPosition(10,500) .setSize(200,50) ; cp5.addButton("ResetIntegrator") .setValue(0) .setPosition(10,560) .setSize(200,50) ; cp5.addButton("ResetDevice") .setValue(0) .setPosition(10,620) .setSize(200,50) ;
/* device setup */
/** * The board declaration needs to be changed depending on which USB serial port the Haply board is connected. * In the base example, a connection is setup to the first detected serial device, this parameter can be changed * to explicitly state the serial port will look like the following for different OS: * * windows: haplyBoard = new Board(this, "COM10", 0); * linux: haplyBoard = new Board(this, "/dev/ttyUSB0", 0); * mac: haplyBoard = new Board(this, "/dev/cu.usbmodem1411", 0); */ haplyBoard = new Board(this, "COM3", 0); widgetOne = new Device(widgetOneID, haplyBoard); pantograph = new Pantograph();
widgetOne.set_mechanism(pantograph);
widgetOne.add_actuator(1, CCW, 2); widgetOne.add_actuator(2, CW, 1);
widgetOne.add_encoder(1, CCW, 241, 10752, 2); widgetOne.add_encoder(2, CW, -61, 10752, 1);
widgetOne.device_set_parameters();
/* visual elements setup */ background(0); deviceOrigin.add(worldPixelWidth/2, 0);
/* create pantagraph graphics */ create_pantagraph();
target = createShape(ELLIPSE, 0,0, 20, 20); target.setStroke(color(0));
/* setup framerate speed */ frameRate(baseFrameRate); f = createFont("Arial",16,true); // STEP 2 Create Font
/* setup simulation thread to run at 1kHz */ thread("SimulationThread"); } /* end setup section ***************************************************************************************************/
public void RandomPosition(int theValue) {
xO = random(-0.3,0.3); yO = random(-0.3,0.3);
} public void ResetIntegrator(int theValue) { cumerrorx= 0; cumerrory= 0; } public void ResetDevice(int theValue) { widgetOne.device_set_parameters();
}
/* Keyboard inputs *****************************************************************************************************/
/// Antoine: this is specific to qwerty keyboard layout, you may want to adapt
void keyPressed() { if (key == 'q') { P += 0.005; } else if (key == 'a') { P -= 0.005; } else if (key == 'w') { I += 0.00001; } else if (key == 's') { I -= 0.00001; } else if (key == 'e') { D += 0.1; } else if (key == 'd') { D -= 0.1; } else if (key == 'r') { looptime += 100; } else if (key == 'f') { looptime -= 100; } else if (key == 't') { smoothing += 0.01; } else if (key == 'g') { smoothing -= 0.01; } else if (key == ' ') { cumerrorx= 0; cumerrory= 0; } else if (key == 'i') { widgetOne.device_set_parameters(); } else if (key == 'b') { xr = random(-0.5,0.5); yr = random(-0.5,0.5); } }
/* draw section ********************************************************************************************************/ void draw(){ /* put graphical code here, runs repeatedly at defined framerate in setup, else default at 60fps: */ if(renderingForce == false){ background(255); update_animation(angles.x*radsPerDegree, angles.y*radsPerDegree, posEE.x, posEE.y);
} } /* end draw section ****************************************************************************************************/
int noforce = 0; long timetook = 0; long looptiming = 0;
/* simulation section **************************************************************************************************/ public void SimulationThread(){ while(1==1) { long starttime = System.nanoTime(); long timesincelastloop=starttime-timetaken; iter+= 1; // we check the loop is running at the desired speed (with 10% tolerance) if(timesincelastloop >= looptime*1000*1.1) { float freq = 1.0/timesincelastloop*1000000.0; println("caution, freq droped to: "+freq + " kHz"); } else if(iter >= 1000) { float freq = 1000.0/(starttime-looptiming)*1000000.0; println("loop running at " + freq + " kHz"); iter=0; looptiming=starttime; }
timetaken=starttime;
renderingForce = true;
if(haplyBoard.data_available()){ /* GET END-EFFECTOR STATE (TASK SPACE) */ widgetOne.device_read_data();
noforce = 0; angles.set(widgetOne.get_device_angles());
posEE.set(widgetOne.get_device_position(angles.array()));
posEE.set(device_to_graphics(posEE));
//m = (millis()-last); // if(millis() > last+20000){ // last = millis(); //}
//if (m <= 2000){ // xr = xO ; // yr = yO ; //}
//if (m > 2000 & m <= 8000){ // xr = xr + 0.0001 ; // yr = yr ; //}
//if (m > 8000 & m <= 11000){ // xr = xr ; // yr = yr - 0.00012; //}
//if (m > 11000 & m <= 17000){ // xr = xr - 0.0001 ; // yr = yr ; //}
//if (m > 17000){ // xr = xr ; // yr = yr + 0.00012; //}
x_m = xO*300 ; y_m = yO*300+350;
// Torques from difference in endeffector and setpoint, set gain, calculate force float xE = pixelsPerMeter * posEE.x; float yE = pixelsPerMeter * posEE.y; long timedif = System.nanoTime()-oldtime;
float dist_X = x_m-xE; cumerrorx += dist_X*timedif*0.000000001; float dist_Y = y_m-yE; cumerrory += dist_Y*timedif*0.000000001; //println(dist_Y*k + " " +dist_Y*k); // println(timedif); if(timedif > 0) { buffx = (dist_X-oldex)/timedif*1000*1000; buffy = (dist_Y-oldey)/timedif*1000*1000;
diffx = smoothing*diffx + (1.0-smoothing)*buffx; diffy = smoothing*diffy + (1.0-smoothing)*buffy; oldex = dist_X; oldey = dist_Y; oldtime=System.nanoTime(); }
// Forces are constrained to avoid moving too fast
fEE.x = constrain(P*dist_X,-4,4) + constrain(I*cumerrorx,-4,4) + constrain(D*diffx,-8,8);
fEE.y = constrain(P*dist_Y,-4,4) + constrain(I*cumerrory,-4,4) + constrain(D*diffy,-8,8);
if(noforce==1) { fEE.x=0.0; fEE.y=0.0; } widgetOne.set_device_torques(graphics_to_device(fEE).array()); //println(f_y); /* end haptic wall force calculation */
}
widgetOne.device_write_torques();
renderingForce = false; long timetook=System.nanoTime()-timetaken; if(timetook >= 1000000) { println("Caution, process loop took: " + timetook/1000000.0 + "ms"); } else { while(System.nanoTime()-starttime < looptime*1000) { //println("Waiting"); } }
} }
/* end simulation section **********************************************************************************************/
/* helper functions section, place helper functions here ***************************************************************/ void create_pantagraph(){ float lAni = pixelsPerMeter * l; float LAni = pixelsPerMeter * L; float rEEAni = pixelsPerMeter * rEE;
pGraph = createShape(); pGraph.beginShape(); pGraph.fill(255); pGraph.stroke(0); pGraph.strokeWeight(2);
pGraph.vertex(deviceOrigin.x, deviceOrigin.y); pGraph.vertex(deviceOrigin.x, deviceOrigin.y); pGraph.vertex(deviceOrigin.x, deviceOrigin.y); pGraph.vertex(deviceOrigin.x, deviceOrigin.y); pGraph.endShape(CLOSE);
joint = createShape(ELLIPSE, deviceOrigin.x, deviceOrigin.y, rEEAni, rEEAni); joint.setStroke(color(0));
endEffector = createShape(ELLIPSE, deviceOrigin.x, deviceOrigin.y, 2*rEEAni, 2*rEEAni); endEffector.setStroke(color(0,0,255)); strokeWeight(5);
}
PShape create_wall(float x1, float y1, float x2, float y2){ x1 = pixelsPerMeter * x1; y1 = pixelsPerMeter * y1; x2 = pixelsPerMeter * x2; y2 = pixelsPerMeter * y2;
return createShape(LINE, deviceOrigin.x + x1, deviceOrigin.y + y1, deviceOrigin.x + x2, deviceOrigin.y+y2); }
void update_animation(float th1, float th2, float xE, float yE){ background(255); pushMatrix(); float lAni = pixelsPerMeter * l; float LAni = pixelsPerMeter * L;
xE = pixelsPerMeter * xE; yE = pixelsPerMeter * yE;
th1 = 3.14 - th1; th2 = 3.14 - th2;
pGraph.setVertex(1, deviceOrigin.x + lAni*cos(th1), deviceOrigin.y + lAni*sin(th1)); pGraph.setVertex(3, deviceOrigin.x + lAni*cos(th2), deviceOrigin.y + lAni*sin(th2)); pGraph.setVertex(2, deviceOrigin.x + xE, deviceOrigin.y + yE);
shape(pGraph); shape(joint); float[] coord;
translate(xE, yE); shape(endEffector); popMatrix(); arrow(xE,yE,fEE.x,fEE.y); textFont(f,16); // STEP 3 Specify font to be used fill(0); // STEP 4 Specify font color
x_m = xO*300+500; y_m = yO*300+350;//mouseY; pushMatrix(); translate(x_m, y_m); shape(target); popMatrix();
}
PVector device_to_graphics(PVector deviceFrame){ return deviceFrame.set(-deviceFrame.x, deviceFrame.y); }
PVector graphics_to_device(PVector graphicsFrame){ return graphicsFrame.set(-graphicsFrame.x, graphicsFrame.y); }
void arrow(float x1, float y1, float x2, float y2) { x2=x2*10.0; y2=y2*10.0; x1=x1+500; x2=-x2+x1; y2=y2+y1;
line(x1, y1, x2, y2); pushMatrix(); translate(x2, y2); float a = atan2(x1-x2, y2-y1); rotate(a); line(0, 0, -10, -10); line(0, 0, 10, -10); popMatrix(); }
/* end helper functions section ****************************************************************************************/
PANTOGRAPH
/** ********************************************************************************************************************** * @file Pantograph.java * @author Steve Ding, Colin Gallacher * @version V3.0.0 * @date 15-January-2021 * @brief Mechanism extension example ********************************************************************************************************************** * @attention * * ********************************************************************************************************************** */
import static java.lang.Math.*;
public class Pantograph extends Mechanisms{
private float l, L, d; private float th1, th2; private float tau1, tau2; private float f_x, f_y; private float x_E, y_E; private float pi = 3.14159265359f; private float JT11, JT12, JT21, JT22; private float gain = 1.0f;
public Pantograph(){ this.l = 0.07f; this.L = 0.09f; this.d = 0.0f; } public void torqueCalculation(float[] force){ f_x = force[0]; f_y = force[1];
tau1 = JT11*f_x + JT12*f_y; tau2 = JT21*f_x + JT22*f_y; tau1 = tau1*gain; tau2 = tau2*gain; } public void forwardKinematics(float[] angles){ float l1 = l; float l2 = l; float L1 = L; float L2 = L;
th1 = pi/180*angles[0]; th2 = pi/180*angles[1];
// Forward Kinematics float c1 = (float)cos(th1); float c2 = (float)cos(th2); float s1 = (float)sin(th1); float s2 = (float)sin(th2); float xA = l1*c1; float yA = l1*s1; float xB = d+l2*c2;
float yB = l2*s2; float hx = xB-xA; float hy = yB-yA; float hh = (float) pow(hx,2) + (float) pow(hy,2); float hm = (float)sqrt(hh); float cB = - ((float) pow(L2,2) - (float) pow(L1,2) - hh) / (2*L1*hm);
float h1x = L1*cB * hx/hm; float h1y = L1*cB * hy/hm; float h1h1 = (float) pow(h1x,2) + (float) pow(h1y,2); float h1m = (float) sqrt(h1h1); float sB = (float) sqrt(1-pow(cB,2));
float lx = -L1*sB*h1y/h1m; float ly = L1*sB*h1x/h1m;
float x_P = xA + h1x + lx; float y_P = yA + h1y + ly;
float phi1 = (float)acos((x_P-l1*c1)/L1); float phi2 = (float)acos((x_P-d-l2*c2)/L2);
float c11 = (float) cos(phi1); float s11 =(float) sin(phi1); float c22= (float) cos(phi2); float s22 = (float) sin(phi2);
float dn = L1 *(c11 * s22 - c22 * s11); float eta = (-L1 * c11 * s22 + L1 * c22 * s11 - c1 * l1 * s22 + c22 * l1 * s1) / dn; float nu = l2 * (c2 * s22 - c22 * s2)/dn;
JT11 = -L1 * eta * s11 - L1 * s11 - l1 * s1; JT12 = L1 * c11 * eta + L1 * c11 + c1 * l1; JT21 = -L1 * s11 * nu; JT22 = L1 * c11 * nu;
x_E = x_P; y_E = y_P; } public void forceCalculation(){ } public void positionControl(){ } public void inverseKinematics(){ } public void set_mechanism_parameters(float[] parameters){ this.l = parameters[0]; this.L = parameters[1]; this.d = parameters[2]; } public void set_sensor_data(float[] data){ } public float[] get_coordinate(){ float temp[] = {x_E, y_E}; return temp; } public float[] get_torque(){ float temp[] = {tau1, tau2}; return temp; } public float[] get_angle(){ float temp[] = {th1, th2}; return temp; }
}
0 notes
Text
Battlebots Season 5 Episode 5: What the hell was that?
Spoilers follow. If you don’t wanna know what happened, you don’t wanna read this . I mean, you may not want me to read this anyway, but I thought I should let you know about the spoilers just in case.
So, about last week…I wrote a pretty mediocre recap of the action and then my cat jumped on my keyboard. Thanks to Squarespace’s baffling decision not to implement an autosave feature, the whole post was lost and, frankly, wasn’t worth re-writing. Let’s move on.
Fight 1: Black Dragon v. Claw Viper
A couple of 1-0 bots squared off in the opening fight. Claw Viper had the more impressive win, showing tremendous mobility against HiJinx. Black Dragon’s win was a little more controversial, a split decision over Kraken that wasn’t especially convincing.
Claw Viper performed their customary box rush which was rendered ineffective by Black Dragon lining up at a diagonal and immediately moving out of the way. Claw Viper bumped into the wall, but unfortunately for them, Black Dragon’s drive and weapon were actually working this time around and the Brazillian spinner got a couple of good hits.
The hits didn’t do anything flashy, but Claw Viper just sort of stopped working. “Not working” is enough to start a countdown and that’s what happened. Pretty impressive win for Black Dragon, which is good, because it wouldn’t be Battlebots without a bot from Brazil in the tournament.
Winner: Black Dragon (Knockout)
Fight 2: JackPot v. Ghost Raptor
The low-budget rookie JackPot came in on the back of a win over SubZero, while Ghost Raptor was 0-1 after getting knocked out by Shatter. I didn’t really want to see either of this bots lose, what with JackPot having a compelling backstory and Ghost Raptor coming back after a four year layoff looking like Cherno Alpha in Pacific Rim.
The bots went weapon to weapon right off the bat and this didn’t go well for Ghost Raptor. JackPot’s giant spinning disc knocked Ghost Raptor’s spinning bar clean off the top of the bot. Ghost Raptor gamely attempted to do some shoving and lifting, but every time it got int he way of JackPot’s weapon, the floor got littered with bits of Ghost Raptor.
One hit split Ghost Raptor in half, and that, as they say, was that. I don’t know how JackPot will fare against a top-tier bot, but this was a very impressive win.
Winner: JackPot (Knockout)
Fight 3: Grabot v. SubZero
This was the maiden fight for Ben Davidson’s Grabot, a grappler of some sort, featuring a couple of “hands” and some chain thingies. It looked complicated. SubZero was coming off a lost to JackPot and, honestly, years and years of losses.
Grabot sort of limped out of the gate and SubZero, possibly not able to believe it’s luck, dove in and flipped Grabot on its back.
Grabot does not have a self-righting mechanism.
So, SubZero spent the next few minutes tossing Grabot around until the flipper rang out of gas but by then, Grabot was done. The cool looking grapple things never came into play, which was disappointing, but it was nice to see SubZero finally get a win.
Winner: SubZero (Knockout I think, maybe it was a unanimous decision, I can’t remember)
Fight 4: HUGE! v. Hydra
This is the fight everyone is talking about and for all the wrong reasons. This was probably the worst fight I’ve ever seen in Battlebots and I’m a little surprised they aired it. HUGE! came in at 0-1 having lost an epic battle against Mammoth. Hydra was 1-0 after taking a split-decision against Witch Doctor.
If you’ve been around Battlebots for a while, you probably remember the famous Ghost Raptor/Icewave fight where underdog Ghost Raptor mounted a pole with a V on the front in place of their spinning bar. They used it to keep Icewave at bay, eventually flipping the horizontal spinner bot and knocking it out.
Hydra’s Jake Ewert, having seen HUGE! dismantle Bronco last year, decided to take this to an extreme and mounted a giant C-shaped bar to the front of his bot. His strategy was to negate both robots’ weapons, force HUGE! into a corner, and just collect the win.
If that sounds like a boring, chickenshit strategy, you got it exactly right. HUGE! kept trying to get around or through the safety bar but could only make a little minor contact with Hydra. Hydra just patiently corralled HUGE! into the corner and sat there. The referee told him to back off and he refused until he was threatened with…whatever action a referee can take.
That was the whole fight. What total garbage. The judges gave the fight to Hydra. I’m not sure what the thinking was. Neither bot did any damage. Hydra had total control but precisely zero aggression (actually, you could argue negative aggression). How do you judge a fight like that?
To make it worse, Ewert was a complete dick about the whole thing. I’m team whoever-is-fighting-Hydra from here on out. It’s an amazing bot, easily the best flipper I’ve ever seen, but if he’s too scared to fight? Screw him. The folks at Battlebots weren’t amused, either:
Second fight this season where there was willful nonuse of an active weapon. There WILL be a penalty for this next season. #BattleBots
— BattleBots (@BattleBots) January 8, 2021
Winner: Hydra (unanimous decision)
Fight 5: Aegis v. Fusion
This marked the first fight for Chris Sparzo’s Aegis, a Kevlar-armored, shield-shaped flipper. Fusion came in at 0-1 after having failed to do much of anything in it’s first fight. Still, Fusion is a Team Whyachi bot, so you’d have to think it was a heavy favorite, especially as Kevlar seemed an extremely curious choice for armor.
Literally nothing happened for the first 15 seconds of the fight. Both bots came out of their square and…did nothing. Finally, Fusion’s weapons came online and Aegis was left to wonder what might have been had they attacked when their foe was helpless.
As it happened, Aegis actually got a good run at Fusion, but they fired their flipper too early, leaving them utterly helpless. Fusion ripped open the sides of the defenseless bot and kept attacking even as the count was going because they could, I guess.
Winner: Aegis (Knockout)
Fight 6: Big Dill v. Lock-Jaw
Both of these bots came in at 1-0 thanks to victories over hapless opponents. Big Dill actually worked pretty well in their win over Atom #94, but Lock-Jaw sputtered badly in their fight, but since it was against Captain Shredderator, they had the luxury of just waiting for their opponent to knock itself out.
Neither bot really impressed, but it’s always a pleasure to watch Donald Hutson drive Lock-Jaw. He got his bot flipped over early on, but it didn’t make a lot of difference. He bent one of Big Dill’s lifting forks and very nearly knocked ‘em out, but the pickle bot managed to get moving and see out the match.
It was more entertaining than I made it sound, as there were sparks a-plenty, but neither bot packed the punch to really put the other to the sword and that’s not a good sign for Lock-Jaw.
Winner: Lock-Jaw (unanimous decision)
Fight 7: Witch Doctor v. Kraken
Both of these bots came in at 0-1 after suffering split-decision defeats to Hydra (Witch Doctor) and Black Dragon (Kraken). It’s a little strange to see the main event be a battle of winless robots, but in this case, it made sense: Witch Doctor was a finalist last year and Kraken has made unbelievable strides from being a hopeless gimmick bot to a pretty strong control bot.
The two went head to head immediately, and you’d think that that would have favored Witch Doctor. However, just like in the fight against Hydra, the weapon system let them down. One of the two discs broke and the bot was now unbalanced and couldn’t spin the weapon at full speed.
Kraken spent most of the match biting into one or another part of Witch Doctor and running them around the box. From time to time, Witch Doctor would get their weapon going and managed to rip off some of Kraken’s armor. Kraken responded by tearing a belt off of Witch Doctor.
This was a really good fight and it went to the judges, who all agreed on the winner and I think they got the call right: A huge upset for Kraken.
Winner: Kraken (unanimous decision)
Obviously, the HUGE! v. Hydra fight was the big talking point here. People have been saying this was nothing new, that it was essentially the same as the Ghost Raptor/Icewave fight and Beta/Rotator tussle. Neither of those comparisons really hold water though: Ghost Raptor won by knockout after all and Beta charged headlong into their opponent which certainly qualifies as “aggression.” This was just anti-fighting and it was egregious enough that the rules will be changed so we won��t be subjected to this B.S. again next year.
1 note
·
View note
Text
2/27/18 Mechanics and Details
[[[Normally this is where I'd put cute little keyboard typing sounds, but I've gotten a bit tired of it. Anyways, let me check my theoretical answering machine to see if Walter called back.]]]
[NO NEW MESSAGES]
[[[Yup. That translates roughly to the equivalent of 'I changed my mind, and I have other patchwork things to talk about'. It's a whirlwind, ladies and gentlemen. We don't dwell on a single thing for too long. But what it lacks in consistency or organization, hopefully it makes up for in fresh and curious ideas that I'm really hoping other people haven't come up with or implemented yet. So that's what I'm going to do today.]]]
[[[I'm going to be talking about game mechanics. The little things. The details. The stuff that makes you exhale a little bit more from your nostrils and sometimes might induce a sensible and light-hearted chuckle.]]]
[[[So we'll start off with one of my personal favorites. The garbage.]]]
*takes off triple bracket borders, because that was getting annoying, and there aren't any characters around*
Ahh, that's better. Alright. Let's begin.
(Wowee, I discovered the��‘Keep Reading’ link. Hopefully that makes this easy to scroll past or read separately if you couldn’t be bothered with this a while ago.)
In a good variety of games, the trash has always been an oddly good place to check. Because in the fictional reality that such games create, you're smart, efficient, and everyone loves to just throw away useful items in the garbage not knowing that a...pardon my brief language...That a slam-jammin' badass MAIN PROTAGONIST (a pro) was gonna be rolling by that day, looking for items to give them that extra edge to beat the everlasting snot out of some dude that's just begging to get curb-stomped.
But naturally, every item could make the difference between life, death, and being OP, because you're the thorough-type; And in the middle of you making sure that every single soul in that fictional universe is happy and sidequest-free (spare for Mr.Boss "Curbstomp Me" McBadboi, because obviously, the only help he's getting is a hearty helping of whoop-ass), you just GOTTA check every unique interactable place! It's common knowledge! Collect every rare item. Complete every side quest. Amass good amounts of restorative items. Check every place to scrounge for aforementioned rare and restorative items. Get to the main boss with no less than probably 3 hiking backpacks full of loot and items, and then achieve that sick victory you've been hankering for.
And you couldn't have done it without that perfectly tasty and safe cheeseburger you fished out of some trashcan about halfway through the game...Well...Probably, but it helped heal you when you were anticipating that Mr. Boss was going to OHKO you if you anything less than full health.
Heck yeah. If taking stuff from the LITERAL trash to help you defeat the bad guy in a videogame isn't ironic, then I don't know what is. Except for deliberately crappy quality pictures and memes that don't have any significant immediately apparent meaning, because it's buried under 6 or 7 layers of irony. I can't count.
Anyways, I'm getting off-topic, and so far I've only explained the finer semantics of typical RPG materialistic acquisition tropes. Let's roll back a bit.
When you interact with a garbage can or some trash-related thing in general, the character only interacts with it on a basic level.
"[Insert character name] searches through the trash can...and finds a healing item!"
"[Insert character name] has found a capture module!"
But...It's always odd, since they seem to always either find one item or nothing. And not just that, but some trash cans can be BIG. And have a LOT in them. And it takes only one 3-second search to go through it all? No way. If you've ever dug through the trash to find something you accidentally put in it, you know you have to go through the process of taking some of the trash out, and being careful to avoid certain unpleasant parts of it, while you search and search for what you're looking for.
Now...while fully replicating this entire experience would be a poor idea, since it stinks in multiple senses, due respect should be given to the size and the contents of the trash. A point should be made by letting the player pick up and store whatever 'trash' they deem to be 'treasure'. And that it will take you multiple searches to really see all there is to see when it comes to what people will throw away.
So here is the meat and potatoes of the trash experience. If you really want to see the entirety of what's in the trash can, you'll have to do multiple searches. Based on the size of the trash receptacle. If we're thinking of a normal average wastebasket you probably have near your desk, that'll only be like...2 searches. I'll admit, they're small. Stuff can be crammed in there sometimes, but only so much. You search through the top 50%. You're given a screen showing what you can leave or take. The stuff you leave is now on the ground surrounding the trash can. You search through the bottom 50%. Again, take or leave what you will. But now almost ALL of the remaining trash is on the ground. Congratulations. It's a flippin' mess. You gotta take 3-5 seconds stuffing everything back in. But that's okay. Because you did a nice thing by not leaving the trash in a mess. Because do you know who DOES leave trash in a mess after they've gone through it?
Raccoons. Forest creatures of a mean and scroungy disposition. No-one likes 'em. Not anyone I'm friends with, anyways. Raccoons don't have any class. And neither will you if you decide to be a chowderhead and leave the trash all over the place. You'll be treated like a raccoon, mark my words…It will be a bad day.
...ANYWAYS, how about that trash stuff, right? What do you typically find in trash?
Those plastic bottles? Hey, there's a recycling center just down the road that'll give you a bit of money for them.
Those bottle caps and used slushie cups? Looks like if you collect like...50 of them, they mail you a radical backpack or some cheap toy you can totally sell on Ebay after you remember that you'd look like a clown if you ever went out in public. Or if you have a remarkably unique fashion sense or a low self-esteem, you can flick double birdies to the wind and rock that Slush Puppy(™) brand backpack and matching beanie, because heck the world, you don't need people to define 'swag' for you. You just reinvented it.
Well what about those broken bottles and baby diapers? They could make good throwable temporary weapons or you could craft them int-SCREW THAT NOISE. Leave those there, you weirdo! Sheesh.
What about food items? Heck YE-...Well wait, no, take a look at that food, though. If your ocular-based assessment has reported to you that "Yes, why would you look at that. An unblemished and high-quality cheeseburger happens to be in this trashcan.", then heck, I don't need to tell you what to do. But you KNOW that's not all that might be in there. The adjectives attached to certain cheeseburgers you find in the trash might be a bit deviant from 'perfect' and 'mouth-watering'. Y'know...Adjectives like 'half-eaten', 'maggot-infested', 'moldy', 'a raccoon is actively eating this one, you ding-dong'. The obvious ones. Determine what each of those adjectives might mean for you.
If there's an animal attached to a food item, and you stumble across it, there is a chance you two are going to sit down and have a nice discussion about the finer points of politics and trash-eating etiquette and make a business negotiation over splitting the remainder of the loot item. There is a chance. A very very slim chance, but more than likely, you will have to negotiate by means of fear, intimidation, and/or physical violence. You know how raccoons are.
...That's probably a thorough-enough explanation on the practicality and realistic expectations of trash. I'll let you digest this post, and I'll see you in the next one. I'll share one more.
4 notes
·
View notes
Text
Welp, I got my GitHub account set up, but damned if I know how to use it. I suppose just dumping this stuff on Tumblr is good as anything for now. Here is the final version of the character controller code I’ve been working on for the past I-don’t-even-want-to-think-about-how-long.
CHARACTER CONTROLLER (goes on the player capsule):
using UnityEngine; using System.Collections;
public class _MyController : MonoBehaviour {
//Variables related to jumping public bool isPlayerJumping = false; public int jumpTimer = 0; public float jumpStrength = 5f; public float gravityForce = -7.5f;
//Variables related to crouching Vector3 crouchCoordinates;
//Variables related to walking and sprinting public Vector3 moveDirection = Vector3.zero; //This is the final coordinate set the player is moved to at the end of Update. public float mySpeed = 2f; //If this changes it also needs to be changed under the crouching mechanics. public float mySprintSpeed = 10f; //If this changes it also needs to be changed under the crouching mechanics. int forwardMovement; int backwardsMovement; int zAxis; int rightMovement; int leftMovement; int xAxis;
void Start () { Cursor.lockState = CursorLockMode.Locked; //This locks the cursor when the game starts. }
void Update () {
CharacterController myController = GetComponent<CharacterController>(); //Sets myController to the CharacterController component of the player this code is attached to.
if (Input.GetKeyDown ("escape")) //This unlocks the cursor if escape is pressed. Cursor.lockState = CursorLockMode.None;
//CROUCHING crouchCoordinates = transform.localScale; //Sets crouchCoordinates to the current Scale value of the player capsule. if (Input.GetKey ("left ctrl")) { //Sets the Y value of crouchCoordinates to .5 and reduces the player to crouching speeds if the ctrl key is held. crouchCoordinates.y = 0.5f; mySpeed = 1f; mySprintSpeed = 1f; } else { //Sets the Y value of crouchCoordinates to 1 and brings the player back up to regular speeds if the ctrl key is not held. crouchCoordinates.y = 1f; mySpeed = 2f; mySprintSpeed = 10f; } transform.localScale = crouchCoordinates; //Scales the player capsule to crouchCoordinates.
//SPRINTING and WALKING
//This resets movement variables to 0 before the keyboard states are checked. moveDirection = new Vector3(0, moveDirection.y, 0); //The value of moveDirection.y needs to stay the same through each update due to the jumping timer. forwardMovement = 0; backwardsMovement = 0; rightMovement = 0; leftMovement = 0; //These translate WASD input into ZAxis and XAxis values. if (Input.GetKey ("w")) forwardMovement = 1; if (Input.GetKey ("s")) backwardsMovement = -1; zAxis = forwardMovement + backwardsMovement; if (Input.GetKey ("d")) rightMovement = 1; if (Input.GetKey ("a")) leftMovement = -1; xAxis = rightMovement + leftMovement; //This multiplies zAxis and xAxis by mySpeed if the shift key is not held, by mySprintSpeed if it is, and bundles them into a Vector3 called moveDirection. if (Input.GetKey ("left shift")) moveDirection = new Vector3 (xAxis * mySprintSpeed, moveDirection.y, zAxis * mySprintSpeed); //The value of moveDirection.y needs to stay the same through each update due to the jumping timer. else moveDirection = new Vector3(xAxis * mySpeed, moveDirection.y, zAxis * mySpeed); //The value of moveDirection.y needs to stay the same through each update due to the jumping timer.
//JUMPING if (Input.GetKeyDown ("space")) { //This initiates the jump process and changes moveDirection.y from gravityForce to jumpStrength. isPlayerJumping = true; moveDirection.y = jumpStrength; }
if (isPlayerJumping == true) { //This causes jumpTimer to tick up by one jumpTimer = jumpTimer + 1; }
if (jumpTimer == 25) { //This terminates the jump process and resets jumpTimer to zero once it reaches its end. jumpTimer = 0; isPlayerJumping = false; }
if (isPlayerJumping == false) { //This sets moveDirection.y to gravityForce if the player is not jumping. moveDirection.y = gravityForce; }
moveDirection = transform.TransformDirection(moveDirection); //This transforms moveDirection from global to local myController.Move(moveDirection * Time.deltaTime); //This moves the player according to the final value of moveDirection
} }
MOUSELOOK (goes on the camera):
using UnityEngine; using System.Collections;
public class _MyMouseLook : MonoBehaviour {
GameObject myPlayer;
void Start() {
//Sets myPlayer to the parent of the camera this script is attached to. myPlayer = this.transform.parent.gameObject; }
void Update() {
//These get output from mouse movement var mouseY = new Vector2(Input.GetAxisRaw("Mouse Y"), 0); var mouseX = new Vector2 (0, Input.GetAxisRaw ("Mouse X"));
//This rotates myPlayer left to right so it is always facing where the camera is pointing. myPlayer.transform.Rotate(mouseX);
//This rotates the camera up and down. transform.Rotate(-mouseY); } }
I’m sure to someone who knows what they are doing, this is messy as all hell, but the fact that it works and that I wrote it and know basically what all of it is doing makes me quite pleased.
To recap, this project has three phases I wanted to complete:
-A character controller
-A game world interaction system
-An inventory and journal system
Once I have all three of these I believe I will understand C# enough to start making a proper game. I have the first phase done, except for a few issues - The player can still jump when not on the ground, and I can’t get the mouselook clamped. The first issue I should be able to solve with what I learn from making the interaction system. I have no clue at all how to solve the clamping issue, and no tutorials I have found are even vaguely penetrable, so if you have any advice, I’d appreciate it.
I think I might take a break at this point and go back to learning Blender, see if I can’t make environments for my new character controller to walk around in. We’ll see.
2 notes
·
View notes
Text
Wireless Gaming Keyboard and Mouse,Rainbow Backlit Rechargeable Keyboard Mouse with 3800mAh Battery Metal Panel,Removable Hand Rest Mechanical Feel Keyboard and 7 Color Gaming Mute Mouse for PC Gamers
Wireless Gaming Keyboard and Mouse,Rainbow Backlit Rechargeable Keyboard Mouse with 3800mAh Battery Metal Panel,Removable Hand Rest Mechanical Feel Keyboard and 7 Color Gaming Mute Mouse for PC Gamers
Price: [price_with_discount] (as of [price_update_date] – Details)
K680 Wireless Rechargeable Keyboard and Mouse Combo Removable hand rest is born for Gaming. The High Performance ensure you faster and stronger during every competition. The ergonomic design makes you more comfortable during long time gaming.
Keyboard Specifications: ① Normal Keys: 104 ② Keyboard Dimensions: about 45517545mm ③Int…
View On WordPress
0 notes