60 Second Binary Options - Trading at the Fastest Pace

Wasteland 3 - Review Thread

Game Information

Game Title: Wasteland 3
Platforms:
Trailers:
Developer: inXile Entertainment
Publisher: Deep Silver
Review Aggregator:
OpenCritic - 84 average - 97% recommended - 39 reviews

Critic Reviews

33bits - Juanma F. Padilla - Spanish - 95 / 100
After the excellent Wasteland 2, we were excited to get our hands on the new installment, and we can say without fear that it has met expectations. Wasteland 3 is a sign of the love that InXile has for his work and Brian Fargo for the genre that has created a name for him. If you are a lover of the saga or the genre, do not hesitate to enjoy it.
ACG - Jeremy Penter - Buy

Video Review - Quote not available

Attack of the Fanboy - Diego Perez - 4.5 / 5 stars
Wasteland 3 is one of the best RPGs I've played in years, and it's one you absolutely should not skip.
CGMagazine - Lane Martin - 9 / 10
Wasteland 3 is a lovely return to the post nuclear apocalypse with fun gameplay and interesting choices at its forefront, though at times it can be a bit clumsy in its implementation.
COGconnected - Tony Bae - 90 / 100
Wasteland 3 doesn’t pull any punches with its subject matter in sexuality, violence, and language. But if you are fine with that, I would highly recommend you give Wasteland 3 a shot, especially if you were (or still are) a Fallout fan.
Cerealkillerz - Julian Bieder - German - 8.8 / 10
On Paper Wasteland 3 sounds like the perfect RPG-Dream but the execution leaves much to be desired. Bugs, Glitches and graphics that doesn't really represent a game that releases and the end of this console generation are a bit of a letdown. Everything else from the great story, entertaining NPCs, solid battle system, clever leveldesign over to the love for details is amazing, besides some flaws that should soon be fixed, as inXile and Brian Fargo promise. Everyone that wasn't happy with the latest Fallout Games will surely love Wasteland 3.
Chicas Gamers - Adrián de Francisco - Spanish - Unscored
Wasteland 3 is a old-school role-playing game, with a compelling story, a combat system that promises but is not groundbreaking and some funny moments and black mood, which always remind us that we are in a post apocalyptic world, but with a smile. Don't forget the powerful character editor, rhythm voices, and the beautiful scenery that puts you in that atmosphere of cold and snowy Colorado.
Cram-Gaming - Robert Cram - 8.5 / 10
Wasteland 3 can be a bit of slog if you're gunning for marathon gaming sessions with it at the helm. Combat, whilst exciting initially can fall into the traps of repetition. A little more variety could have negated some of the repeated player actions. That said, the story is compelling and the characters an interesting assortment of misfit survivors, although perhaps fitting post-apocalyptic stereotypes. It's a fun, easy to play game overall though that should well-please fans of the series and keep players entertained for quite some time with its high replay-value. However, aside from some bugs here and there, the impressive amount of voice-work on offer, the character building is the best part of the experience where you can really nurture your ranger squad in this snowy post-apocalyptic world.
Digital Trends - Tom Caswell - 4 / 5 stars
Wasteland 3 is a rewarding game that offers unprecedented choice and is a great jumping on point for new players.
DualShockers - Kris Cornelisse - 9 / 10
Improving on its predecessor in almost every way, Wasteland 3 is one of the best and most reactive RPGs I've played in a long time.
EGM - Mollie L Patterson - Unscored
At least in my time with it, Wasteland 3 has been a fascinating experience. I’ve come to appreciate its depth of gameplay, character, building, and exploration, even if some of its pieces and parts still feel very foreign to me.
Entertainium - Eduardo Rebouças - Unscored
I will be even happier with Wasteland 3 once it’s patched and most of the bugs that bit me end up getting squashed. Even in its current state I’m having a grand ol’ time bringing some justice to the cold depths where no Ranger has dared to before. But for as much of a blast as I’m having out northeast in the cold, I hope I can make it back to sunny Arizona in time to save my fellow lawmen!
Eurogamer - Wesley Yin-Poole - Recommended
inXile's old-school RPG is the Fallout game we've been craving.
Fextralife - Castielle - 8.3 / 10
Wasteland 3 is a throwback to the old School RPGs of yesteryear, while providing a new combat experience and a bigger world. Players that liked previous Fallout Games, or games like Wasteland 2 or Baldur's Gate will feel right at home with this title, and will have the opportunity to try X-Com like combat. For the amount of content provided, 60 USD is a very good price, and fans of the genre should get more than their money's worth.
GAMES.CH - Nedžad Hurabašić - German - 83 / 100
Wasteland 3 is absolutely worth the money - the RPG brings dozens of hours of fun gameplay to the table. A must-buy for roleplayers.
Game Revolution - Jason Faulkner - 4 / 5 stars
Wasteland 3 is a marvel of a game, especially from a small studio like inExile. It’s not without its flaws, but the excellent writing and enthralling world overshadow those.
GameSkinny - Daniel Hollis - 9 / 10 stars
Wasteland 3 invokes feelings of classic RPGs such as Fallout and manages to nail the feel and tone perfectly in a modernized setting.
GameWatcher - Marcello Perricone - 8.5 / 10
A fantastic RPG that superbly mixes player choice and great combat to something bigger than the sum of its parts.
GamesRadar+ - Andrew King - 4 / 5 stars
Wasteland 3 doesn't bring much new to the table, both as a CRPG and as a piece of post-apocalyptic fiction. But, it's a terrifically executed role-playing game that rewards player investment from beginning to end.
GamingBolt - Ravi Sinha - 9 / 10
Wasteland 3 is a heady crescendo of post-apocalyptic story-telling. Its combat is compelling and fun while its characters and overall plot are engrossing, even when it goes to some dark places. A must-play for tactical RPG fans.
Gert Lush Gaming - Jim Smale - 9 / 10
Wasteland 3 is the defacto strategy experience and one that every gamer owes themself the pleasure of playing.
God is a Geek - Mick Fraser - 9.5 / 10
Wasteland 3 is a huge undertaking, marrying deep, choice-driven role play with fast-paced tactical combat and vast areas to explore.
IGN Spain - Álex Pareja - Spanish - 8 / 10
Wasteland 3 knows how to open to new players keeping the old school essence. It's not a revolution on the genre or in the post apocaliptic proposal, but it won't matter to the franchise lovers.
Niche Gamer - Cwb - 3.5 / 10
We’ll update this review if the game is fixed, and the issues outlined are fixed or at least addressed; and then I’ll pick it back up. As it stands now, I’ll be playing something else that isn’t as apt to crash. Buyer beware.
PC Gamer - Jody Macgregor - 84 / 100
A wilfully strange setting explored through a predictable but enjoyable old school RPG thats been streamlined just enough.
PC Invasion - Jason Rodriguez - 8.5 / 10
There are a few misgivings related to Wasteland 3's technical aspects, mechanics, and overall challenge. However, its cast of characters (both old and new), the switch to a traditional turn-based combat system, and branching paths filled with decisions and dire consequences make for a superb journey with the Desert Rangers.
PCGamesN - Gina Lees - 9 / 10
Lurid characters, a deep RPG system, and captivating combat set in an unhinged apocalypse - inXile Entertainment's latest shouldn't be missed.
Player2.net.au - Matt Hewson - A or higher
With a focus on freedom of choice that is second-to-none, Wasteland 3 has set the benchmark for CRPG narratives, all the while being supported by wonderfully engaging gameplay and roleplaying mechanics.
PowerUp! - Leo Stevenson - 9.7 / 10
If you’re an RPG fan, a Fallout fan or even just a videogame fan, do yourself a favour and play one of this year’s very best games; Wasteland 3.
Saving Content - Scott Ellison II - 5 / 5 stars
It took me a while to realize how much these interactions, whether it be the interpersonal conversation or combat encounters themselves, stuck with me. Wasteland 3 has rules, but they only exist for you to bend them. With limitless character creation combinations, branching dialogue choices that affect what quests you do or don’t experience, and multiple endings, Wasteland 3 is an expanse of content and opportunity. The change in locale does wonders, no longer relying on a tired post-apocalyptic biome. Wasteland 3 has a wonderful backdrop in Colorado’s frozen wastes, making it the perfect place to spend a nuclear winter.
Screen Rant - Christopher Teuton - 4 / 5 stars
Wasteland 3 takes players to a new location and presents them with equally unfamiliar challenges, yet still perfectly demonstrates all of the reasons why this series has had die-hard fans for over three decades, and is absolutely worth playing for anyone looking for their next post-apocalyptic fix.
Shacknews - Josh Hawkins - 9 / 10
If you’re a big fan of the original Wasteland games, or just an RPG fan in general, then I highly recommend picking up Wasteland 3 and giving it a try.
Spaziogames - Paolo Sirio - Italian - 8.3 / 10
Wasteland 3 doesn't change its predecessor's successful formula but, outside of certain design limitations, it perfects and modernizes it. It's easily the best game in the franchise, in terms of pure technique, and one that clearly gives you an idea of what inXile is able to achieve.
The Games Machine - Danilo Dellafrana - Italian - 8.7 / 10
Wasteland 3 is a good role-playing game, technically passable but enriched by a dense network of intriguing subplots that will push the most dedicated to play it several times. Watch out for the ever-present release bugs, though – best to wait a couple patches if you want to avoid unnecessary hurdles.
TrustedReviews - Alastair Stevenson - 4 / 5 stars
Wasteland 3 is a solid tactical RPG that will keep fans of the genre entertained for hours upon hours. But it doesn't do enough to bring the genre forward to a mainstream audience.
WayTooManyGames - Thomas Medina - 9 / 10
All in all, this is the game I wanted so badly for Wasteland 2 to be. It doesn’t just repeat what came before, but expands upon it all. Not just mechanically, but story wise as well.
Wccftech - Francesco De Meo - 9 / 10
Wasteland 3 features everything only the best role-playing games do: an engaging story powered by excellent writing, compelling characters, tons of customization options, and a deep tactical combat system that feels fresh even after dozens of hours. But, most of all, it features a living world that reacts to what the player does, and changes depending on how the player decides to deal with the troubles ahead, providing a role-playing experience of the highest degree, one that very few games can boast of.
Windows Central - Jez Corden - 5 / 5 stars
Wasteland 3 is a testament to the power of the branching narrative, taking it far beyond binary choices and into a grand canopy of cause and effect. It gives the wintry climbs of Colorado a lifelike quality that must have been painstaking to build. The most impressive RPG in years, Wasteland 3 is a masterpiece.
XboxEra - Jesse Norris - 9.7 / 10
Wasteland 3 shines with clear dedication to crafting the best game its genre has ever seen. Excellent visuals are matched by top notch voice work and some of the best and most natural writing I have seen in a video game not made by Naughty Dog. The combat is a brutal dance where one wrong move can spell disaster, but victory is an exhilarating rush that never becomes old. Wasteland 3 cements inXile as one of the best in the business in the RPG genre and affirms that Xbox has something truly special on their hands.
submitted by diogenesl to Games [link] [comments]

CMV: Proportional Representation (PR) is the Superior System

It is more fair

I was inspired by the American elections on this one. That's because hearing Trump complain about election fraud seems rich considering he would not have come close to beating Hilary or Biden in the last two elections without the Electoral College system (in both instances he lost the popular vote).
Of course, the Electoral College system is law, so gerrymandering cannot legally be "fraud" but come on - if a candidate wins the popular vote they should, morally speaking, win the presidency. The Electoral College system is even worse than British First Past the Post (FPTP) it seems, as a party that wins the Electoral Colleges still does not necessarily have control over the senate.

It reflects the voting majority better

Here in UK recently we had an election where the Prime Minister won an 80 seat majority the size of which he would never have gotten with proportional representation. While Johnson would have always stayed on as PM, he would not have had a "democratic" mandate to push through the policies he wants to: a hard Brexit, Americanising the Supreme Court, questionable Civil Service reforms (Cummings) and the Internal Markets Bill to name a few. That's because a stronger Opposition under PR would have opposed a lot of this.

You get more local representatives that may reflect your point of view

I have heard it said that FPTP returns you a constituent politician that can dedicate themselves to representing local issues. But with PR there may be several local representatives in population dense areas that reflect different political perspectives. So if you have an issue you think a socialist would understand better you can contact them, or if it was a conservative or a liberal you wanted to talk to, you'd be more likely to have those options as well.
Obviously in some communities, you might find there wasn't as broad an array of representatives. However you'd have a better shot at that under PR as well as a wider choice of representatives to talk to even if they are from the same party.

It is just as "stable", if not more so

First, I disagree with the premise that opponents to PR subscribe to that a constitution is stable if it does not require a coalition government and government can more easily enact policies in accordance with their voting base (and get those through parliament). Firstly, "more stuff done" is not better: quality, not quantity.
When we had a minority conservative government before 2019 I actually thought parliament were doing a good job of scrutinising and making amendments to Brexit legislation so that the country could come to a positive consensus on what would be a stable result. Being able to rush stuff through parliament just leads to chaotic mistakes like the Iraq war, where Blair was able to rush a decision to go to war even though the decision was very popular among the public at large.
Would he have been able to do this under a proportionally representative parliament? Also would Cummings have as much sway in bullying his vision for the country if parliament was proportionally representative? Neither of these seem likely. The other objection related to the point about is that FPTP means the largest group can get their voice heard whereas with a coalition government the negotiations result in a compromise that represent no particular group.
But actually PR just treats what the majority want a lot differently. For example if 40% of people want a No Deal Brexit but 60% of people are divided between Remain and Soft Brexit, sure the largest minority group wants a hard break from the EU. But it would seem that the majority of people (60%) would prefer to at least remain in a customs union with Europe. So FPTP has a twisted idea of what it means to represent the majority.
The idea that it would be less stable and more democratic to force a vision through parliament that most people don't want because ideology exists as a spectrum rather than a binary categorisation seems perverse. If a National Unity Government was strong enough - necessary in fact - to face Hitler, it seems that coalition governments should be able to fare well enough during times of lesser crisis.

It won't particularly lead to racist parties forming, or it might but it is not that substantial

So, with the vote split between two large parties partially "left" or "right to the Overton window people will generally vote for centrist governments, or centre-right if you consider UK and America are to the right of most other countries. This doesn't really give much breathing space for racist parties in general as racist parties tend to have radical ideologies that deviate far from the centre-ground.
But with proportional representation, people no longer consider voting for a party that deviates too far from centre a "wasted vote" since those parties now have a legitimate shot to either get into power, or simply to veto government. Whereas before, they would be stealing votes from a mainstream party closest too them, enabling the party you hate most to get in, now that doesn't matter because your favourite party can form a coalition with the enemy of your friend (whether in power or opposition).
Or they can form a coalition with your enemy, softening the blows and impacts of that party's policy making. This can lead to authoritarian and racist parties forming, some say. But the thing is firstly, racist parties can get in power even with FPTP.
For example, when the Reformed National Party won most of the seats in the 1948 FPTP election leading to apartheid South Africa (1). The Nazi Party had actually arrested all of the Communist deputies and changed the rules to make it easier to pass the Enabling Act in 1933 (1), thus making the system less proportionally representative.
Meanwhile, Karl Popper has this to say about tolerating (or not tolerating) intolerance in modern democracies:
Unlimited tolerance must lead to the disappearance of tolerance. If we extend unlimited tolerance even to those who are intolerant, if we are not prepared to defend a tolerant society against the onslaught of the intolerant, then the tolerant will be destroyed, and tolerance with them.
More relevantly to my argument, he says:
as long as we can counter them by rational argument and keep them in check by public opinion, suppression would certainly be unwise.
I extend an interpretation of this (my words, not Popper's) to mean that it could be prudent, even on a political level to occasionally hand the racists a platform so that we can debate and repudiate their ideas. Whereas complete suppression can occasionally lend credence to the idea that a person's logic is "irrefutable" and that is why their expression has been muted. Letting the racist party's a small portion of politic representation to refute their ideas can quash such a notion.
And besides, we can defeat racist parties through legal mechanisms to defeat or obstruct them when their policies become too extreme. For example, the British National Party (BNP) "gained all the borough council seats in parts of Burnley despite getting nowhere near a majority of the vote" (1).
However, the BNP were also obstructed by legal democratic mechanisms when a court ruled the party was legally required to allow ethnic minorities membership in the party, thus morphing the whole focus. Popper sort of makes a similar argument to this as well though neither of us have outright claimed racist or anti-democratic authoritarian parties should be banned entirely:
[W]e should claim the right to suppress [those who are intolerant] if necessary even by force; for it may easily turn out that they are not prepared to meet us on the level of rational argument, but begin by denouncing all argument; they may forbid their followers to listen to rational argument, because it is deceptive, and teach them to answer arguments by the use of their fists or pistols. We should therefore claim, in the name of tolerance, the right not to tolerate the intolerant. We should claim that any movement preaching intolerance places itself outside the law, and we should consider incitement to intolerance and persecution as criminal, in the same way as we should consider incitement to murder, or to kidnapping, or to the revival of the slave trade, as criminal.
I'm not saying that there is no threat from racist parties under PR as quite a few European proportionally representative democracies have them. I am just saying that the threat is firstly exaggerated and secondly we are not exactly protected from them by FPTP either. Could you imagine how bad it would be if a country were facing the same instability, economic depression and racial divisions as a country like Germany during the Weimar Republic but instead of a PR democracy, a racist anti-democratic government were able to gerrymander constituencies to their benefit through FPTP? (1)
___________________________________________

Resources

(1) Electoral Reform Website: "Did Proportional Representation put the Nazis in power?"
submitted by data_rights to changemyview [link] [comments]

The Shoulders of Orion- Ch. 1: First Contact

Space-time rippled as the Horns of Glory snapped into real space. The normally smooth transition from FTL subspace travel back to the laws of relativity was instead dangerously jarring, as the inertial dampeners struggled to hold the innards of the massive warship in their proper places. After straining mightily for the briefest of moments, they failed, throwing Admiral Halon Va and the rest of his bridge crew violently into their restraining harnesses. The ship shuddered under the immense stress, then settled, drifting silently through space on minimal power.
“Tactical, get me a status report for the fleet on screen now. I want updates the instant ships jump in.” The Admiral’s voice was still firm and authoritative; it was taking every last shred of resolve he had to keep it that way. “Lieutenant Roshin, put a detail together and work with medical. I’m sure that re-entry caused more than a few extra injuries. Get as many of the crew patched up and ready for emergency action as fast as you can. I want a full casualty report as soon as possible. And if you find Science Officer Lentith and he’s still alive, send him to the bridge immediately.”
Admiral Va settled back into his command chair, drawing creaking sounds from the over-stressed frame as it absorbed the weight of his massive form. The bridge was completely silent now, the command crew entirely focused on the tasks at hand. Or they were too afraid to say anything; Va couldn’t be sure. He was thankful for their silence, though. He didn’t have any answers for them about his failure.
Keying in a few commands on the command panel at his station, the damage report for his ship popped up, the bridge lights flickering from the extra power draw. The Horns of Glory floated before him in hologram form. Long and slender, the ship was over two kilometers from bow to stern. At least, it had been a few hours ago. The forward 20 percent of the holographic ship was flashing red, indicating heavy damage. This was inaccurate, however, as the forward 20 percent of the ship simply wasn’t there anymore. The graceful lines and carefully crafted angles of the ship's armor were an unrecognizable slagged mess, and deep gouges had been cut into the inner decks all over the ship. Whole sections were missing amidships, two of the main reactors were offline, all the primary weapon batteries had been completely destroyed, and most of the critical systems were barely functioning. It was a miracle that she had survived the jump. That morning, Horns of Glory had been the greatest feat of Arien’Ra engineering, and it was now a barely functioning hulk.
And it had all happened under my command, thought Va.
He had no time to wallow in his failures, however, as at that moment tactical finally reconnected to the fleet command systems. The hologram of Horns of Glory quickly scaled down, appearing as a small, flashing, red point of light floating in loose formation with several other points of light. Most of them were flashing red as well. A constant stream of data and various reports scrolled down the right side of the hologram, listing in no uncertain terms the doom that Va had subjected his command to.
If Va had thought that the bridge was quiet before, it was nothing compared to the complete stillness that now settled over them. No one so much as moved a muscle, as they all sat in stunned silence, reading the reports. Occasionally, the hologram would flash, and a new point of light would join the formation, adding more data to the pile spelling out their damnation. After 30 ticks, new points of light had stopped appearing. Admiral Halon Va had lost over 60 percent of his fleet, and not a single other dreadnaught had survived the slaughter. His defeat was total, and the Federation navy was crippled.




Science Officer Beredarin Lentith had been the first member of his family not to enroll in command school in eight generations. They had been some of the finest members of the fleet the Vorqual race had ever contributed to the Federation. His brothers and sisters had all enrolled, which meant that as far as he was concerned, his family had more than fulfilled their duty to the Federation. Military life wasn’t for him, anyway; he wanted to explore. The Federation had been around for over 3000 years, and there were still vast swathes of the galaxy that they knew nothing about. They were still encountering new species every few hundred or so years, and there was nothing he wouldn’t give to find the next one. That had been the dream that directed him away from the military and into academia. The odds of actually finding a new race were so small, though. There were still at least 200,000,000 unexplored systems in the galaxy. There just wasn’t time to visit them all...
He snapped out of his reverie as he stepped over the body, or rather, what was left of the body, of a Zelnassi marine. Most of it was just a green stain on the corridor wall at this point, though there had been enough of the chitinous armored torso to partially obstruct his path. The young lieutenant quickly continued on towards the bridge.
If he was being honest with himself, becoming an expert on the area of unexplored space directly between the Federation and it’s largest military rival wasn’t the smartest of ideas. Between his family reputation and his unique knowledge base, he was just asking to get pressed into service.
Which was exactly what had happened immediately upon the recent outbreak of hostilities.
And now here he was stepping over corpses, marveling at the fact that he had somehow survived this long. He still couldn’t believe the insanity of the Dominion forces. Boarding an enemy ship MID-COMBAT. It was like something out of a youngling’s tale from before space travel. It was pure madness, but there were the bodies to prove that it had happened. He gingerly stepped around the remains of yet another Zelnassi.
The signs of battle continued all the way to the bridge, where he found security forces still holding quickly fortified positions around the bridge entrance. There were more Zelnassi bodies at their feet. Berendarin shuddered. He had been closer to death than he thought.
He quickly pushed those thoughts out of his mind. He could only imagine why he was needed on the bridge so urgently.
The door slid open, and Lentith walked into a completely silent room. Admiral Va was slouched at his command station, his enormous arm propped up on the chair arm and supporting his massive, horned head. Lentith didn’t even know that Arien’Ra COULD slouch. Nevermind that the fastidious Admiral could or would ever do such a thing. Maybe things were somehow worse than he thought. No one seemed to notice him enter, so he announced himself to the Admiral.
Though he didn’t shout, his voice echoed in the deathly silent room, startling most of the bridge command. Two of the other Vorqual officers swore, and the tiny Jezren manning the com station let out a high pitched sound somewhere between a squeak and chirp. Berendarin would have found it quite funny if the situation wasn’t so dire.
Admiral Va immediately snapped back to being the hulk of muscle and horn that imposed his will on a room just by being in it. His booming voice only added to his authority.
“Science Officer Lentith. I’m glad to see you’re still alive. Are you seriously injured?”
Berendarin had almost forgotten that he had walked the entire way to the bridge holding a bandage to his head just above his left eye. The drop out of subspace hadn’t been kind to him. He pulled the bandage away, revealing a dark orange stain on the bandage and a crack in the bone plate above his eye.
“I’m fine, sir, just one of the outer plates, and the bleeding has already stopped.”
“Good. Commander Vortith is currently overseeing the emergency repairs. Take his seat. You are going to help me find a way back home.”
“Sir? I’m sorry I don’t understand. Why don’t we just go back the way we came?”
“That’s not possible. Most of our supply ships and tenders were destroyed when that third wave of Dominion ships hit our flank. Almost all of our pre-prepared fuel reserves are gone. On top of that, some of our ships are so damaged that they don’t have another long jump in them. And if we run into any enemy ships, the whole rest of the fleet is done for. We barely qualify as a fighting force in the state we’re in.”
“Is it really that bad?”
“It’s worse, but we don’t have time to get into the details. You’re the expert on this section of the galaxy. I need you to find the fleet a hiding hole. Somewhere away from the known jump routes through the Spur. Any system where we can use the few miners we have left to scavenge up some fuel, and get some critical repairs done while we’re at it. And from there either wait for reinforcements or get ourselves patched up enough to limp home. Wherever it is, it needs to be close. I’m not leaving any ships behind because they can’t make the jump.”
“Oh. Just that?” The lieutenant knew that Arien’Ra were strict herbivores, but with the look that the Admiral shot him, he couldn’t help but think about the fact that his head would easily fit into that giant, molar filled mouth.
“And away from any known pirate hideaways. Like I said, our fleet can’t take any more fighting. And find it quickly. It won’t be long before the Dominion fleet locates us.”
“I. Uh. Sure. I’ll see what I can find.”
Berendarin shrank into the commander’s chair next to the enormous Arien’Ra, desperately wishing he had been more professional. If he had acted like a proper soldier, it might soften the blow of telling the Admiral that what he wanted was next to impossible. If he had a few weeks, he might be able to find something. So much of the Spur was still un-surveyed. The odds of there being anything useful to the Admiral in the databases was absurdly low, and there was even less of a chance he’d be able to find it in time for the information to matter. He began pouring through his notes anyway. It was better than waiting around to die, which, if the situation was as dire as the Admiral made it sound, was the only other option.
He spent the next hour lost in his notes, finding nothing, while the bridge crew went about piecing the ship and the fleet back together. The young scientist had all but given up on the Admiral’s impossible request when a raucous cheer went up from everyone on the command deck.
“Sir,” The coms officer called out, “The Consul’s Pride just dropped out of subspace and is hailing us, sir.
The main communication screen lit up, and Berendarin Lentith looked to see the face of his oldest sister on screen, strapped into the captain’s chair of her dreadnaught. He let out a sigh of relief; Baraquen was his favorite sibling. Her uniform was drenched in a deep orange blood stain at the shoulder, and she was covered in what looked like flecks of green gore from a Xelnassi. The artificial gravity was clearly malfunctioning, as the captain’s restraining harness was the only thing keeping her from floating around her bridge. But the bone plates of her jaw were turned as always into her calm, self assured smile
“My apologies for the delay in joining you, Admiral Va. We had some… guests shut down our drive mid jump. We had to deal with them before we rejoined the fleet. I assume there is a plan to get us back to federation space?”
“It’s good to see you in one piece, Captain Lentith,” the Admiral responded. He was barely able to keep the relief from his voice. “And there is indeed a plan.”
Berendarin returned to his research as the two ranking officers in the fleet went over the details of their current predicament. He was glad his sister had survived, and not just because they were close. It would have been a terrible blow to the whole family to have lost not only their future matriarch, but the ship she commanded as well. A member of his family had been commanding that dreadnaught uninterrupted for the last 5 generations. Military service had never appealed to Berendarin, but his family history was certainly still important.
And then the solution to the current problem hit him like a driver round. He let out a gasp and tore into his notes with a fervor. Both Admiral Va and his sister’s projection turned to look at him, but he didn’t notice. After a few seconds of curious silence from the rest of the onlookers, Berendarin practically jumped out of his seat.
“Admiral, I think I’ve got something that will work.” The young Lieutenant punched a few commands into his datapad, and a set of stellar coordinates popped up on the navigation terminal. “It’s a main sequence star, about 500 light years from us, fairly close to the edge of the Spur. It’s not anywhere near any established jump routes. The Consul’s Pride made me think of it.” He nodded towards his sister’s face on the ship's screen. “Our great, great grandsire took the Consul’s Pride through the system on her shakedown run a little over 300 cycles ago. Chased a band of Qorthi slavers out of the system. The outer four planets are all gas giants. If we can’t find Helium 3 there, I don’t know where else we should look.”
On screen, Captain Lentith looked impressed, but Admiral Va clearly didn’t seem too sure. “We’re supposed to be going away from Dominion forces, not into them. What were the Qorthi doing there?”
“There are also four rocky inner worlds in the system, Sir, according to reports from the encounter. Apparently, the third planet is a Class 7 Deathworld, and the Qorthi were running some experiments on the primitive lifeforms there. They were caught completely by surprise by the Consul’s Pride, and it was the first time that she fired her weapons in anger. I can’t find any reports of Dominion ships in that section of the Spur since.” There was a long pause before Va responded.
“Good work, Lieutenant. I knew my trust in you wasn’t misplaced.” Admiral Va replied, before turning to the rest of the bridge and booming “Coms! Tactical! Get those coordinates to every ship in the fleet. I want every ship we have left formed up and ready to jump as soon as possible. Any captain who feels that his drives can’t make the jump is to focus all repair efforts on getting their drives functioning immediately. I will transfer repair crews from less damaged ships to more damaged ships if that means we jump even a tick earlier. Get to it everyone. I’m not losing any more of my fleet today.”




The four revolution long jump to Science Officer Lentith’s newfound sanctuary had done wonders for Halon Va’s mental state. The initial shock of his fleet's terrible defeat had worn off, and he had been able to focus on what came next. Repair crews were able to stabilize most of his ship's core systems, and he was no longer worried about the life support systems cutting out and killing the rest of his crew. There had also been time for him to visit with the wounded. To thank them for their sacrifices. He had expected it to be an act of contrition, maybe even a chance to start begging for forgiveness. But there had been no anger in his crew, and no blame hung on his horns. Most had just been relieved that he had survived, and had expressed as much. He would be forever grateful to them for that.
Most importantly, the four revolutions in hyperspace had given the admiral time to really think about what had gone wrong in the nebula. He had barely rested in the preceding four revolutions, spending every scrap of spare time in his office, pouring over records from the battle. That’s where he found himself now, tucked behind his massive ceramic and titanium alloy desk of Tellarim design. It had been custom made for him upon his promotion to this command, a gift from the high admirals and the council. It was the only luxury that Va allowed in his office. The rest of Va’s space he kept strictly utilitarian. There were no trophies adorning his walls, as was customary for other members of his species. The plain bulkheads of his office were instead lined entirely with screens, and each of them were now filled with footage and reports from the battle, running on loop.
Va soaked it all in. The more he watched, the more a singular conclusion crystallized in his mind. He had done everything right; he was sure of that now. 1000 years of doctrine and theory for fighting the Dominion had gone into his preparation for that battle, and he had followed it to the letter. And he had been winning. Then that attack on his flank by the Zelnassi had blown all of that out of the airlock. Something significant had changed in the way the Dominion fought...
Commander Vortith’s voice rang out over the com system. ”Admiral Va, we’ll be transitioning back to real space in moments.”
“Thank you. I’ll be there shortly. And get Science Officer Lentith to the bridge. I want him nearby just in case. He’s the only one who has any idea of where we are.” The Admiral pulled himself from his desk. He would have to leave the rest of his analysis for later. There was just enough time for him to reach the bridge and settle into his command chair before the Horns of Glory snapped back to real space. This time, the inertial dampeners held.
“Tactical, status report.”
“All ships accounted for, Admiral. Though the Consul’s Pride, several cruisers, and three of our escorts are all reporting massive failures in their Drive Cores. They won’t be jumping anywhere anytime soon.”
“Wonderful.” Va wasn’t sure if he meant that sarcastically or not. “Get scans up and running and deploy the pickets that aren’t crippled in a standard scouting formation. How close are we to the nearest gas giant?”
“We’re approximately half a light tick from the system’s innermost gas giant, sir.”
“Excellent. Deploy the rest of the fleet. Put us in a high orbit around the planet in a defensive formation, and get our miners working immediately. Once our orbit is stable, I want every hand, paw and hoof in the fleet working on repairs.”
“Yes sir.”
Admiral Va settled into his command chair for a long shift.
It would be a drawn out, boring process to refuel the ships. With his fleet limping along, and only two functioning miners, it would take far longer than it should. After all the chaos of the last few revolutions, boring would be a welcome change of pace. Va started to relax, sinking into his chair’s acceleration padding. His fleet and his crews were finally safe. The first priority would be to get one of the subspace beacons repaired and to get word back to the Federation that the fleet still existed. And hopefully call for aid. He was sure to be stripped of his rank as soon as contact was made, but hopefully he would avoid a Tribunal. That was an unpleasant prospect…
“Sir, we have unidentified ship signatures appearing from around the planet we’re approaching.”
Va had never heard panic in the voice of his young sensors officer before, but it was certainly there now. Va understood the sentiment, though. He found it difficult to keep the panic from his own voice as he started issuing orders
“Bring the fleet up to combat status immediately. How many ships are there?”
“I’m showing 35 individual signatures. All approaching us at combat speed and still accelerating. At current speeds, they will intercept us in just over 30 ticks, sir.”
“I want details as soon as you have them, Lieutenant. Size, make, estimated firepower. Who they are. And keep scanning the system. Find out where they came from.” The panic had partially subsided for Va. 35 unknowns was not too terrible a threat. He still had almost 240 warships under his command. Still, if there was a way to avoid combat, he had to try. His fleet couldn’t suffer any more losses. “Coms, any attempt by these unknown ships to contact us?”
“I”m not sure, sir,” the diminutive Jezren at the coms replied. “There’s nothing on standard communications channels. The ships are transmitting something, but I can’t figure out what it is.”
“Admiral,” the Lieutenant at the sensors station called out. “I think I might have an idea of where these ships came from. Preliminary scans show there is extensive urbanization on the third and fourth planets, as well as what appear to be habitation sized artificial satellites around the second and sixth planets. One of the moons of the gas giant we’re approaching shows signs of habitation as well. All of them are emitting significant signal pollution. This system clearly already belongs to someone, and they’re broadcasting everywhere.”
Halon Va, High Admiral of the Combined Federation Fleets, turned, slowly and with as much composure as he could muster, to face the young science officer seated to his left. Berendarin sat, mouth agape, staring transfixed at the sensor readouts in front of him. Va had never seen a Vorqual more confused in his life. “I want answers, Officer Lentith.”
“I… I don’t.. This doesn’t make any sense,” the young science officer stammered. “There shouldn’t be anything here.”
“Admiral,” The comms officer cut in, “The signal that we’re picking up from the unknown ships is definitely some kind of communication. I managed to put together audio from it.”
“Play it,” commanded Va. A series of short, guttural, and completely unintelligible sounds came over the speakers in reply. There was a short pause before the sounds repeated themselves again. “Coms, what was that?”
“No idea, sir, but it’s being transmitted on loop. If it is intended as a communication, our translators have no idea what to do with it.”
“Admiral.” The voice came from Va’s left, and was barely audible. Va turned yet again to look at the young science officer. His gaze was locked on the tactical readout, and there something in his eyes that Va couldn’t recognize. A mixture of pure terror and something else. Was it wonder? The young Vorqual’s voice was still barely above a whisper when he continued to address the admiral: “I think we should run the transmission through First Contact Protocols.”




Captain Benjamin Alvarez-León slammed against his restraining harness as the USCS Aurora started it’s decel burn. He had pushed the engines on the outdated cruiser to their limits, and the ship groaned in protest as it started counteracting his rather zealous acceleration orders. He hoped that his mad scramble with his small squadron of outdated ships had been an overreaction. The alternative was something he’d rather not think about.
All Ben had was the reserves; the rest of the fleet was on maneuvers at Sirius. The Admiralty had wanted to test the new, fully modernized fleet’s maneuvering abilities in the gravwell of a binary system. And, in their infinite wisdom, they decided they needed ALL of the new fleet assets, leaving nothing in Sol except for the handful of cruisers and escorts that couldn’t match the capabilities of the modern ships.
A handful of cruisers and escorts that were now hurtling towards more than 200 unknown contacts.
It was the unknown part of all of this that was unnerving Ben. There were no familiar energy signatures. No familiar scan data. No IFF. No signals coming off the contacts of any kind for that matter. Two of the contacts were too big to even be ships. If it wasn’t for the fact that they were moving towards Jupiter in formation, Ben wouldn’t even think they WERE ships.
“So what do you think, Alexi?” Ben asked, turning towards his second in command. “You and the rest of the bridge crew are always making inane bets. Have you whipped up an over-under for what we’re throwing ourselves at yet?”
“Haven’t had time,” came the quick reply from Ben’s right. The short, stocky man from Vladivostok was missing his trademark joviality. “Though, my money is on them being Ithacan, sir.”
Ben bristled at Alexi calling him sir. They’d been friends for twenty years, damnit, and had been practically joined at the hip since going through the Academy together. Outranking him still felt a little off. Now was hardly the time to worry about formalities, though.
“What makes you think they're from Ithaca?”
“It’s the only thing that makes sense. The locals have been getting increasingly radical, and Ithaca is the only sector where reports of piracy have been increasing.”
“Yeah, I could see a rebellion coming from Ithaca,” Ben added slowly, turning over that scenario in his head. “But there’s no way they could swing something of this magnitude. There aren’t even any shipyards in the sector. And even if there were, there’s no way they could keep the construction of over two hundred ships a secret.”
Alexi could only offer him a shrug in response.
It was at that moment that the coms station informed him there was a transmission incoming from the unidentified ships. Ben instructed the ensign to play it, and the bridge was suddenly filled with a stream of grotesque bleating noises and strange grunts, with the occasional recognizable syllable interspersed throughout the transmission. Ben thought he picked out ‘dentify’ from the mess, but he wasn’t sure. There was a long moment of silence on the bridge.
“What the hell was that?”
When no one had any answers for him, Ben tapped his command console and recorded a new message to broadcast.
“This is Captain Alvarez of the USCS Aurora. Unidentified ships, please clarify. Your transmission is badly garbled. We did not receive your identification. You are still trespassing in Commonwealth space and are on an unauthorized course towards Jupiter. Begin decelerating immediately and re-identify yourselves.”
He wouldn’t admit it to the crew, but Ben was profoundly unsettled. Something was deeply, deeply wrong about this whole situation. Not only was he vastly outnumbered by these things, but they were unwilling to communicate properly. He was almost believing this whole thing was some kind of bizarre prank.
“How much longer before we can get a decent visual on these things?
“Any moment now, sir.”
A new transmission arrived just then, and Ben had it played back immediately. This time, instead of almost bovine bleats and grunts, the sounds coming over the speakers were mostly intelligible. Or, they would have been, if any of the syllables were in the right order. It was almost like a toddler was rattling off all of his new favorite sounds, spitting them out in a random order and not knowing how they went together. There were still a few heavy grunts sprinkled in, just for good measure.
Before Ben could process this new joke of a transmission, the contacts finally started slowing. In a matter of moments, the strange wall of contacts was hanging lazily in Jupiter’s orbit, barely moving fast enough to keep their orbit from decaying. They were still in perfect formation.
“Huh. Well, I guess that’s something.”
With nothing to do but sit back and wait as his ship closed the distance, Ben tried to relax and began running over all of the possibilities in his mind of what the new contacts could be. He came up with nothing. Well, nothing feasible, anyway. He took a series of long, calming breaths, trying to clear his mind and focus. This was no time for his imagination to be running wild. But he couldn’t shake the feeling that logic was failing him. Something was off. Something…
“Captain, bringing visual of the unknown contacts up on screen now.”
Ben actually felt his jaw drop. Every contact on his display was clearly a ship. Most were long and spindly, wrapped in layers of some kind of highly reflective armor; a fleet of crystalline arrows hanging in the darkness. The two largest contacts, which Ben had just moments ago thought were too big to be ships, were large enough on the screen for him to clearly see details. In addition to their immense size and strange armor, both ships were dotted with what were clearly weapons platforms, though what kind, Ben couldn’t tell.
Noticeably, almost all of the ships on his screen were heavily damaged. Chunks were missing from some ships, and most had deep lines gouged into their hulls. Any form of decorative paint or markings had been burned away. Something had put these ships through absolute hell. But still, the damage could not take away entirely from the elegance of the ship’s designs. They were graceful and sleek, completely different from anything Ben had ever seen before.
It was all so different. So strange. So very, very… Alien.
Despite every effort he had made to avoid the word, it finally forced itself to form inside Ben’s mind, and forced him to acknowledge the reality that legitimate, extra-Solar life was hanging in the darkness in front of him. It forced him to acknowledge the screams he had been suppressing in the back of his mind. The screams of his imagination crying out in glorious triumph over reality. And with those screams came a deluge of accompanying thoughts and emotions.
He was a child again, staring up at the stars above Armstrong and wondering what else, and who else, was out there. He was a teen again, signing his name to the Academy enrollment paperwork, determined to get out there between the stars and see the galaxy himself. He was a young officer again, screaming and pleading with the Admiralty to at least consider a modern First Contact scenario. He was sitting in his command chair now, hurtling towards honest-to-god aliens, all of his dreams made manifest in an instant. He was overwhelmed. He was terrified.
And he had never imagined that he could feel such elation.
It was the young warrant officer at the coms that snapped Ben out of his reverie. “Sir, the contacts are hailing us on all standard channels, requesting a video feed.” She sounded very, very nervous.
Ben immediately stood up, straightening his uniform as best he could. “If they’re anything less than genocidal monsters, I’m going to offer them aid and repairs. As long as they’re peaceful, there’s no reason not to extend them the full hospitality of humanity.”
“Ben,” Alexi asked, clearly choosing his words carefully, “Are you sure that’s the… Wisest course of action? How will the Admiralty respond to Goddamned alien ships docking at Hephaestus?”
“Alexi, in the 250 years the Commonwealth has existed, the First Contact protocols haven’t been updated since the charter was signed. No one has cared. This has been nothing but a fantasy for most people. I am NOT letting this opportunity get away. Every child that has ever looked up at the stars and wondered finally got an answer, and I will not waste this moment. We’re making friends, the Admiralty and the government be damned.”
“You do realize you’re potentially deciding the fate of our entire species on a whim, right?”
“Is there someone else you’d prefer to have making this call?”
Alexi, apparently deciding that there was not, stood up and straightened his uniform, standing next to his friend as he ordered the connection of the video feed. The channel connected, and the human bridge crew found themselves looking at the bridge of a ship crewed by not one, but three alien races.
The largest alien in the center of the screen opened its mouth to speak. This time, instead of bleats and grunts, a choppy, mechanical voice that didn’t sync up to the alien at all proclaimed from the bridge speakers in broken, stuttering English: “I. Am Admiral. Halon. Va. Of the Federation of. Sentient Races. Greetings and. Welcome. To the. Galaxy.”
Ben couldn’t suppress his smile.
“On behalf of the United Solar Commonwealth, and all of Humanity, greetings, and welcome to Sol. Your ships look like they’ve had a bad time on your way here. If there’s any way we could aid with your repairs, we’d be happy to help.”




Slave 782 slammed his right appendage onto the control console hard enough to rupture his outer membrane and smear ichor over the panel. It had been four days since the battle in the nebula, and with the latest round of reports, he finally had to admit that the rest of the Federation fleet had escaped him.
It was a minor frustration, all things considered, but the escape prevented this from being a total victory. Still, he had proven his worth to his owners in this battle, and his experiments with the Zelnassi had paid dividends beyond his wildest imagination. He had earned a command today, and with every success in that command, his ability to bargain for his people's freedom only increased. For what he would be asking, it might take the total defeat of the Federation to earn that kind of leverage. Also frustrating, but not a task that he couldn’t handle. It would be a long war, he was sure, but like his owners, he was patient.
He would earn his freedom, even if it meant reducing the entire Federation to glass.


Author Wiki
Series Wiki
NEXT
submitted by STATICinMOTION to HFY [link] [comments]

How to prevent customer cancellations

Customer retention is a goal every business owner should be obsessed with. At the end of the day it's cheaper to retain an existing customer than it is to acquire a new one.
But how do you ensure that your customers keep using your service?
Are there any simple, yet effective ways to reduce or even prevent churn?
As it turns out there's one simple strategy you can use to keep your customers around even if they're about to leave your platform. Let's explore what it is and why it works.

Why you should obsess over customer retention

As already stated in the introduction it's important to focus on customer retention when building a sustainable business.
Acquiring customers can be an expensive endeavour. If you're not (yet) in a position where your product grows through Word-of-Mouth you're likely spending a good portion of your revenue on paid ads and marketing to drive traffic to your service. Only a few of your thousands of visitors will eventually try your product and convert to become a paying customer.
Optimizing this marketing and sales funnel is a tricky and costly activity. Think about it for a minute. Who finances your learnings and tweakings of such funnel? Correct, your existing customers.
That's why keeping your users happy and around is one of the most important business objectives.

Why customers are churning

If you think about it, there's really only one reason why your customers are leaving your platform:
Your product isn't a crucial part of their life anymore
While this sounds harsh I'd like you to think about all the services you're currently subscribing to. Now imagine that you can only keep one. What would you cancel? Probably everything except the one you can't live without.
Of course, the preferences are different from person to person and they change over time. And that's the exact reason why people cancel their subscription with your service: Their preferences have changed and they might want to take a pause from your service or need something else entirely.

"Churn Baby Churn"

Now that we know why your customers churn, it's time to get into their shoes and think about ways to keep them around.
One of the "industry" standards is to send out a survey once they're about to leave to gather feedback and convince them to stay. Some services offer coupon codes if for example the user has clicked on the "it's too expensive" option in the survey.
Other tactics are more on the "dark patterns" side of things. Hiding buttons, asking double negative questions or using other techniques to make it nearly impossible to leave. Needless to say that customers of businesses practicing such tactics aren't the ones who spread the word on how awesome the product is. Quite the opposite.
But let's take a step back for a minute and ask ourselves why this "should I stay or should I go" question has to be binary in the first place. Isn't there something "right in the middle"? Something where a user can stay but somehow go at the same time?

"Wait a minute... or a month..."

The solution to this dilemma is dead simple and obvious, yet rarely used: Make it possible to pause the subscription.
Yes, it's that simple. Just offer a way to pause a subscription and get back to it once your users current circumstances have changed.
Now you might think that it's a really bad idea to let users pause their subscription. They'll pause and never come back. So essentially it's a "passive churn" as they haven't left the platform yet but might never use it again. The stale user data is sitting in the database and your dashboards are still showing hockey-stick growth. Furthermore it's a huge implementation effort as pausing and resuming subscriptions isn't something considered business critical and hence wasn't implemented just yet.
Those are all valid concerns and some of them might turn out to be true even if you have a "pause- and resume your subscription" system in place. But let's take a seconds to look at the other side of the equation.

Why pausing is a good idea

They very first thing that comes to mind is the COVID-19 pandemic we're currently in. A lot of business scaled back and hence had to cancel subscriptions to their favorite SaaS tools to cut costs. A common "save the customer tactic" used here was to get in touch with the business owner and offer heavy discounted year long subscription plans. That way businesses could reassess if they should really quit and leave the huge discount on the table or just go with it and double down to benefit from the sweet, discounted multi-year subscription deal.
Letting business put their subscription on hold would be another strategy that could be used to help retain and eventually reactivate your users during this pandemic. Put yourself into your customers shoes again for a minute. Wouldn't you want to pay it back in the future if your supplier lent you a helping hand and wasn't "forcing" you out the door?
Even if your customers pause their account you still have their E-Mail address to reach out to them and keep them informed about your product. In fact you should use this opportunity to stay in touch, ask them how they're doing and providing something of value along the way. That way you keep the communication "warm" and your business stays on "their radar". There's a higher likelihood that they think about your service when times have changed and they're about to scale things up again.
Having a way to pause a subscription is an action that's usually taken with some level of consideration. If your customer wants to quit (s)he'll just cancel the subscription anyway. Offering a way to pause for the time-being is another option your users might just not have right now, so they're forced to make a very binary decision and therefore they just quit.
What you should also think about is that pausing a subscription doesn't necessarily mean that you'll lose revenue for sure. There are different and very creative ways in which you can implement the pause. My gym for example simply extends my membership for the amount of months I put my membership on hold. In the summer I make use of this feature since I do my workouts outside anyways. However those 3-4 months I "save" are simply "added" to my contract. I just have a little bit more control about how and where I spend my time with sports. You can get really creative here and invent other ways for this mechanism to work if you really want to ensure that you don't lose revenue.
A last, important point is that you can use this functionality as a competitive advantage and "marketing material". Be sure to add the fact that people can pause their subscription to your list of product benefits. Add it to the copy right next to your "Subscribe Now" button. Addressing objections and concerns right before the call-to-action is about to happen will drastically increase your conversion rates.

Things to keep in mind when going down that path

Now you might be excited and eager to implement this strategy in the near future but before you do so I'd like to call out a couple of things you should keep in mind when implementing it.
First of all: Keep it simple. There's no need to jump right into code and implement this functionality end-to-end. Do it manually in the beginning. Update the database records and the subscription plans for people who want to pause their subscription by hand. Maybe you find out that very few people want to make use of this feature. What you definitely want to put in place is your new copywriting. As discussed above you should ensure that your marketing website is updated and reflects the recent change you just introduced.
Next up you want to have an automated follow-up E-Mail sequence / Drip campaign setup for pausing customers. Keep in touch. Ask for problems they had with your software and help them succeed in whatever they're up to right now. You might want to jump on a quick call to gather some feedback as to why they paused and understand what needs to be in place for them to come back. If you do this, please ensure that you're genuinely interested in the communication. There's nothing worse for a user than composing a reply and shooting the E-Mail into the marketing void.
A very important, yet often overlooked step is to have a tool in place which deals with "passive churn". Such a system ensures that the credit cards on file are up to date and chargeable. There could be an overlap between your users pausing their subscription and their credit cards expiring. You don't want to make them look bad because of that. You could even think about a "concierge service" which onboards them in person once they'll come back. Combine this with a quick update on all the new features / updates they missed and are not yet familiar with.
Lastly you absolutely don't want to make it hard for your users to pause their subscription. As mentioned above, avoid dark patterns at all costs. And more importantly: Don't penalize them for pausing. Messages such as "We'll retain your data for the next 60 days" are inappropriate in the day and age of "Big Data" and access to Petabytes of storage for a nickel and dime.

Your challenge

I'd like to challenge you to think about adding the possibility to pause a subscription. Is it suitable for your business? Would it help you retain and reactive more customers (especially in the current situation we're in)?
If you're about to add it, keep in mind that it doesn't have to be complicated. Start with a simple E-Mail form your users can fill out to let you know for how long they want to pause. Just make sure that you follow the best practices outlined above and that you advertise that it's now possible for your customers to pause their subscriptions.

Conclusion

Customer retention is one of the most important metrics every business owner should focus on. It's the existing customers who finance the Customer Acquisition Costs that are necessary to bring new users into the door.
It's almost always cheaper to keep your existing customers happy than to lose them and acquire brand new ones.
Unfortunately a lot of SaaS services only offer a very binary option for their subscription plans. As a user you're either in or you're out. You stay or you leave. But what if a user wants to take a pause for a few months because of current changes in life circumstances?
Offering a way to pause a subscription is a simple, yet effective way to retain and eventually reactive your existing customers. Remember that a pause is temporary. If you follow-up with them on a continuous basis and help them succeed they'll eventually come back. Maybe even as a raving, more loyal fan of your brand.
I hope that you enjoyed this article and I'd love to invite you to subscribe to my Newsletter if you're interested in more, action-oriented posts like this.
Do you have any questions, feedback or comments? Feel free to reach out via E-Mail or connect with me on Twitter.
This post was originally published on philippmuens.com
submitted by pmuens to indiebiz [link] [comments]

How to prevent customer cancellations

Customer retention is a goal every business owner should be obsessed with. At the end of the day it's cheaper to retain an existing customer than it is to acquire a new one.
But how do you ensure that your customers keep using your service?
Are there any simple, yet effective ways to reduce or even prevent churn?
As it turns out there's one simple strategy you can use to keep your customers around even if they're about to leave your platform. Let's explore what it is and why it works.

Why you should obsess over customer retention

As already stated in the introduction it's important to focus on customer retention when building a sustainable business.
Acquiring customers can be an expensive endeavour. If you're not (yet) in a position where your product grows through Word-of-Mouth you're likely spending a good portion of your revenue on paid ads and marketing to drive traffic to your service. Only a few of your thousands of visitors will eventually try your product and convert to become a paying customer.
Optimizing this marketing and sales funnel is a tricky and costly activity. Think about it for a minute. Who finances your learnings and tweakings of such funnel? Correct, your existing customers.
That's why keeping your users happy and around is one of the most important business objectives.

Why customers are churning

If you think about it, there's really only one reason why your customers are leaving your platform:
Your product isn't a crucial part of their life anymore
While this sounds harsh I'd like you to think about all the services you're currently subscribing to. Now imagine that you can only keep one. What would you cancel? Probably everything except the one you can't live without.
Of course, the preferences are different from person to person and they change over time. And that's the exact reason why people cancel their subscription with your service: Their preferences have changed and they might want to take a pause from your service or need something else entirely.

"Churn Baby Churn"

Now that we know why your customers churn, it's time to get into their shoes and think about ways to keep them around.
One of the "industry" standards is to send out a survey once they're about to leave to gather feedback and convince them to stay. Some services offer coupon codes if for example the user has clicked on the "it's too expensive" option in the survey.
Other tactics are more on the "dark patterns" side of things. Hiding buttons, asking double negative questions or using other techniques to make it nearly impossible to leave. Needless to say that customers of businesses practicing such tactics aren't the ones who spread the word on how awesome the product is. Quite the opposite.
But let's take a step back for a minute and ask ourselves why this "should I stay or should I go" question has to be binary in the first place. Isn't there something "right in the middle"? Something where a user can stay but somehow go at the same time?

"Wait a minute... or a month..."

The solution to this dilemma is dead simple and obvious, yet rarely used: Make it possible to pause the subscription.
Yes, it's that simple. Just offer a way to pause a subscription and get back to it once your users current circumstances have changed.
Now you might think that it's a really bad idea to let users pause their subscription. They'll pause and never come back. So essentially it's a "passive churn" as they haven't left the platform yet but might never use it again. The stale user data is sitting in the database and your dashboards are still showing hockey-stick growth. Furthermore it's a huge implementation effort as pausing and resuming subscriptions isn't something considered business critical and hence wasn't implemented just yet.
Those are all valid concerns and some of them might turn out to be true even if you have a "pause- and resume your subscription" system in place. But let's take a seconds to look at the other side of the equation.

Why pausing is a good idea

They very first thing that comes to mind is the COVID-19 pandemic we're currently in. A lot of business scaled back and hence had to cancel subscriptions to their favorite SaaS tools to cut costs. A common "save the customer tactic" used here was to get in touch with the business owner and offer heavy discounted year long subscription plans. That way businesses could reassess if they should really quit and leave the huge discount on the table or just go with it and double down to benefit from the sweet, discounted multi-year subscription deal.
Letting business put their subscription on hold would be another strategy that could be used to help retain and eventually reactivate your users during this pandemic. Put yourself into your customers shoes again for a minute. Wouldn't you want to pay it back in the future if your supplier lent you a helping hand and wasn't "forcing" you out the door?
Even if your customers pause their account you still have their E-Mail address to reach out to them and keep them informed about your product. In fact you should use this opportunity to stay in touch, ask them how they're doing and providing something of value along the way. That way you keep the communication "warm" and your business stays on "their radar". There's a higher likelihood that they think about your service when times have changed and they're about to scale things up again.
Having a way to pause a subscription is an action that's usually taken with some level of consideration. If your customer wants to quit (s)he'll just cancel the subscription anyway. Offering a way to pause for the time-being is another option your users might just not have right now, so they're forced to make a very binary decision and therefore they just quit.
What you should also think about is that pausing a subscription doesn't necessarily mean that you'll lose revenue for sure. There are different and very creative ways in which you can implement the pause. My gym for example simply extends my membership for the amount of months I put my membership on hold. In the summer I make use of this feature since I do my workouts outside anyways. However those 3-4 months I "save" are simply "added" to my contract. I just have a little bit more control about how and where I spend my time with sports. You can get really creative here and invent other ways for this mechanism to work if you really want to ensure that you don't lose revenue.
A last, important point is that you can use this functionality as a competitive advantage and "marketing material". Be sure to add the fact that people can pause their subscription to your list of product benefits. Add it to the copy right next to your "Subscribe Now" button. Addressing objections and concerns right before the call-to-action is about to happen will drastically increase your conversion rates.

Things to keep in mind when going down that path

Now you might be excited and eager to implement this strategy in the near future but before you do so I'd like to call out a couple of things you should keep in mind when implementing it.
First of all: Keep it simple. There's no need to jump right into code and implement this functionality end-to-end. Do it manually in the beginning. Update the database records and the subscription plans for people who want to pause their subscription by hand. Maybe you find out that very few people want to make use of this feature. What you definitely want to put in place is your new copywriting. As discussed above you should ensure that your marketing website is updated and reflects the recent change you just introduced.
Next up you want to have an automated follow-up E-Mail sequence / Drip campaign setup for pausing customers. Keep in touch. Ask for problems they had with your software and help them succeed in whatever they're up to right now. You might want to jump on a quick call to gather some feedback as to why they paused and understand what needs to be in place for them to come back. If you do this, please ensure that you're genuinely interested in the communication. There's nothing worse for a user than composing a reply and shooting the E-Mail into the marketing void.
A very important, yet often overlooked step is to have a tool in place which deals with "passive churn". Such a system ensures that the credit cards on file are up to date and chargeable. There could be an overlap between your users pausing their subscription and their credit cards expiring. You don't want to make them look bad because of that. You could even think about a "concierge service" which onboards them in person once they'll come back. Combine this with a quick update on all the new features / updates they missed and are not yet familiar with.
Lastly you absolutely don't want to make it hard for your users to pause their subscription. As mentioned above, avoid dark patterns at all costs. And more importantly: Don't penalize them for pausing. Messages such as "We'll retain your data for the next 60 days" are inappropriate in the day and age of "Big Data" and access to Petabytes of storage for a nickel and dime.

Your challenge

I'd like to challenge you to think about adding the possibility to pause a subscription. Is it suitable for your business? Would it help you retain and reactive more customers (especially in the current situation we're in)?
If you're about to add it, keep in mind that it doesn't have to be complicated. Start with a simple E-Mail form your users can fill out to let you know for how long they want to pause. Just make sure that you follow the best practices outlined above and that you advertise that it's now possible for your customers to pause their subscriptions.

Conclusion

Customer retention is one of the most important metrics every business owner should focus on. It's the existing customers who finance the Customer Acquisition Costs that are necessary to bring new users into the door.
It's almost always cheaper to keep your existing customers happy than to lose them and acquire brand new ones.
Unfortunately a lot of SaaS services only offer a very binary option for their subscription plans. As a user you're either in or you're out. You stay or you leave. But what if a user wants to take a pause for a few months because of current changes in life circumstances?
Offering a way to pause a subscription is a simple, yet effective way to retain and eventually reactive your existing customers. Remember that a pause is temporary. If you follow-up with them on a continuous basis and help them succeed they'll eventually come back. Maybe even as a raving, more loyal fan of your brand.
I hope that you enjoyed this article and I'd love to invite you to subscribe to my Newsletter if you're interested in more, action-oriented posts like this.
Do you have any questions, feedback or comments? Feel free to reach out via E-Mail or connect with me on Twitter.
This post was originally published on philippmuens.com
submitted by pmuens to Entrepreneurship [link] [comments]

MAME 0.222

MAME 0.222

MAME 0.222, the product of our May/June development cycle, is ready today, and it’s a very exciting release. There are lots of bug fixes, including some long-standing issues with classics like Bosconian and Gaplus, and missing pan/zoom effects in games on Seta hardware. Two more Nintendo LCD games are supported: the Panorama Screen version of Popeye, and the two-player Donkey Kong 3 Micro Vs. System. New versions of supported games include a review copy of DonPachi that allows the game to be paused for photography, and a version of the adult Qix game Gals Panic for the Taiwanese market.
Other advancements on the arcade side include audio circuitry emulation for 280-ZZZAP, and protection microcontroller emulation for Kick and Run and Captain Silver.
The GRiD Compass series were possibly the first rugged computers in the clamshell form factor, possibly best known for their use on NASA space shuttle missions in the 1980s. The initial model, the Compass 1101, is now usable in MAME. There are lots of improvements to the Tandy Color Computer drivers in this release, with better cartridge support being a theme. Acorn BBC series drivers now support Solidisk file system ROMs. Writing to IMD floppy images (popular for CP/M computers) is now supported, and a critical bug affecting writes to HFE disk images has been fixed. Software list additions include a collection of CDs for the SGI MIPS workstations.
There are several updates to Apple II emulation this month, including support for several accelerators, a new IWM floppy controller core, and support for using two memory cards simultaneously on the CFFA2. As usual, we’ve added the latest original software dumps and clean cracks to the software lists, including lots of educational titles.
Finally, the memory system has been optimised, yielding performance improvements in all emulated systems, you no longer need to avoid non-ASCII characters in paths when using the chdman tool, and jedutil supports more devices.
There were too many HyperScan RFID cards added to the software list to itemise them all here. You can read about all the updates in the whatsnew.txt file, or get the source and 64-bit Windows binary packages from the download page.

MAME Testers Bugs Fixed

New working machines

New working clones

Machines promoted to working

Clones promoted to working

New machines marked as NOT_WORKING

New clones marked as NOT_WORKING

New working software list additions

Software list items promoted to working

New NOT_WORKING software list additions

submitted by cuavas to emulation [link] [comments]

AJ ALMENDINGER

glimpse into the future of Roblox

Our vision to bring the world together through play has never been more relevant than it is now. As our founder and CEO, David Baszucki (a.k.a. Builderman), mentioned in his keynote, more and more people are using Roblox to stay connected with their friends and loved ones. He hinted at a future where, with our automatic machine translation technology, Roblox will one day act as a universal translator, enabling people from different cultures and backgrounds to connect and learn from each other.
During his keynote, Builderman also elaborated upon our vision to build the Metaverse; the future of avatar creation on the platform (infinitely customizable avatars that allow any body, any clothing, and any animation to come together seamlessly); more personalized game discovery; and simulating large social gatherings (like concerts, graduations, conferences, etc.) with tens of thousands of participants all in one server. We’re still very early on in this journey, but if these past five months have shown us anything, it’s clear that there is a growing need for human co-experience platforms like Roblox that allow people to play, create, learn, work, and share experiences together in a safe, civil 3D immersive space.
Up next, our VP of Developer Relations, Matt Curtis (a.k.a. m4rrh3w), shared an update on all the things we’re doing to continue empowering developers to create innovative and exciting content through collaboration, support, and expertise. He also highlighted some of the impressive milestones our creator community has achieved since last year’s RDC. Here are a few key takeaways:
And lastly, our VP of Engineering, Technology, Adam Miller (a.k.a. rbadam), unveiled a myriad of cool and upcoming features developers will someday be able to sink their teeth into. We saw a glimpse of procedural skies, skinned meshes, more high-quality materials, new terrain types, more fonts in Studio, a new asset type for in-game videos, haptic feedback on mobile, real-time CSG operations, and many more awesome tools that will unlock the potential for even bigger, more immersive experiences on Roblox.

Vibin’

Despite the virtual setting, RDC just wouldn’t have been the same without any fun party activities and networking opportunities. So, we invited special guests DJ Hyper Potions and cyber mentalist Colin Cloud for some truly awesome, truly mind-bending entertainment. Yoga instructor Erin Gilmore also swung by to inspire attendees to get out of their chair and get their body moving. And of course, we even had virtual rooms dedicated to karaoke and head-to-head social games, like trivia and Pictionary.
Over on the networking side, Team Adopt Me, Red Manta, StyLiS Studios, and Summit Studios hosted a virtual booth for attendees to ask questions, submit resumes, and more. We also had a networking session where three participants would be randomly grouped together to get to know each other.

What does Roblox mean to you?

We all know how talented the Roblox community is from your creations. We’ve heard plenty of stories over the years about how Roblox has touched your lives, how you’ve made friendships, learned new skills, or simply found a place where you can be yourself. We wanted to hear more. So, we asked attendees: What does Roblox mean to you? How has Roblox connected you? How has Roblox changed your life? Then, over the course of RDC, we incorporated your responses into this awesome mural.
📷
Created by Alece Birnbach at Graphic Recording Studio

Knowledge is power

This year’s breakout sessions included presentations from Roblox developers and staff members on the latest game development strategies, a deep dive into the Roblox engine, learning how to animate with Blender, tools for working together in teams, building performant game worlds, and the new Creator Dashboard. Dr. Michael Rich, Associate Professor at Harvard Medical School and Physician at Boston Children’s Hospital, also led attendees through a discussion on mental health and how to best take care of you and your friends’ emotional well-being, especially now during these challenging times.
📷
Making the Dream Work with Teamwork (presented by Roblox developer Myzta)
In addition to our traditional Q&A panel with top product and engineering leaders at Roblox, we also held a special session with Builderman himself to answer the community’s biggest questions.
📷
Roblox Product and Engineering Q&A Panel

2020 Game Jam

The Game Jam is always one of our favorite events of RDC. It’s a chance for folks to come together, flex their development skills, and come up with wildly inventive game ideas that really push the boundaries of what’s possible on Roblox. We had over 60 submissions this year—a new RDC record.
Once again, teams of up to six people from around the world had less than 24 hours to conceptualize, design, and publish a game based on the theme “2020 Vision,” all while working remotely no less! To achieve such a feat is nothing short of awe-inspiring, but as always, our dev community was more than up for the challenge. I’ve got to say, these were some of the finest creations we’ve seen.
WINNERS
Best in Show: Shapescape Created By: GhettoMilkMan, dayzeedog, maplestick, theloudscream, Brick_man, ilyannna You awaken in a strange laboratory, seemingly with no way out. Using a pair of special glasses, players must solve a series of anamorphic puzzles and optical illusions to make their escape.
Excellence in Visual Art: agn●sia Created By: boatbomber, thisfall, Elttob An obby experience unlike any other, this game is all about seeing the world through a different lens. Reveal platforms by switching between different colored lenses and make your way to the end.
Most Creative Gameplay: Visions of a perspective reality Created By: Noble_Draconian and Spathi Sometimes all it takes is a change in perspective to solve challenges. By switching between 2D and 3D perspectives, players can maneuver around obstacles or find new ways to reach the end of each level.
Outstanding Use of Tech: The Eyes of Providence Created By: Quenty, Arch_Mage, AlgyLacey, xJennyBeanx, Zomebody, Crykee This action/strategy game comes with a unique VR twist. While teams fight to construct the superior monument, two VR players can support their minions by collecting resources and manipulating the map.
Best Use of Theme: Sticker Situation Created By: dragonfrosting and Yozoh Set in a mysterious art gallery, players must solve puzzles by manipulating the environment using a magic camera and stickers. Snap a photograph, place down a sticker, and see how it changes the world.
OTHER TOP PICKS
HONORABLE MENTIONS
For the rest of the 2020 Game Jam submissions, check out the list below:
20-20 Vision | 20/20 Vision | 2020 Vision, A Crazy Perspective | 2020 Vision: Nyon | A Wild Trip! | Acuity | Best Year Ever | Better Half | Bloxlabs | Climb Stairs to 2021 | Double Vision (Team hey apple) | Eyebrawl | Eyeworm Exam | FIRE 2020 | HACKED | Hyperspective | Lucid Scream | Mystery Mansion | New Years at the Museum | New Year’s Bash | Poor Vision | Predict 2020 | RBC News | Retrovertigo | Second Wave | see no evil | Sight Fight | Sight Stealers | Spectacles Struggle | Specter Spectrum | Survive 2020 | The Lost Chicken Leg | The Outbreak | The Spyglass | Time Heist | Tunnel Vision | Virtual RDC – The Story | Vision (Team Freepunk) | Vision (Team VIP People ####) | Vision Developers Conference 2020 | Vision Is Key | Vision Perspective | Vision Racer | Visions | Zepto
And last but not least, we wanted to give a special shout out to Starboard Studios. Though they didn’t quite make it on time for our judges, we just had to include Dave’s Vision for good measure. 📷
Thanks to everyone who participated in the Game Jam, and congrats to all those who took home the dub in each of our categories this year. As the winners of Best in Show, the developers of Shapescape will have their names forever engraved on the RDC Game Jam trophy back at Roblox HQ. Great work!

‘Til next year

And that about wraps up our coverage of the first-ever digital RDC. Thanks to all who attended! Before we go, we wanted to share a special “behind the scenes” video from the 2020 RDC photoshoot.
Check it out:
It was absolutely bonkers. Getting 350 of us all in one server was so much fun and really brought back the feeling of being together with everyone again. That being said, we can’t wait to see you all—for real this time—at RDC next year. It’s going to be well worth the wait. ‘Til we meet again, my friends.
© 2020 Roblox Corporation. All Rights Reserved.

Improving Simulation and Performance with an Advanced Physics Solver

August

05, 2020

by chefdeletat
PRODUCT & TECH
📷In mid-2015, Roblox unveiled a major upgrade to its physics engine: the Projected Gauss-Seidel (PGS) physics solver. For the first year, the new solver was optional and provided improved fidelity and greater performance compared to the previously used spring solver.
In 2016, we added support for a diverse set of new physics constraints, incentivizing developers to migrate to the new solver and extending the creative capabilities of the physics engine. Any new places used the PGS solver by default, with the option of reverting back to the classic solver.
We ironed out some stability issues associated with high mass differences and complex mechanisms by the introduction of the hybrid LDL-PGS solver in mid-2018. This made the old solver obsolete, and it was completely disabled in 2019, automatically migrating all places to the PGS.
In 2019, the performance was further improved using multi-threading that splits the simulation into jobs consisting of connected islands of simulating parts. We still had performance issues related to the LDL that we finally resolved in early 2020.
The physics engine is still being improved and optimized for performance, and we plan on adding new features for the foreseeable future.

Implementing the Laws of Physics

📷
The main objective of a physics engine is to simulate the motion of bodies in a virtual environment. In our physics engine, we care about bodies that are rigid, that collide and have constraints with each other.
A physics engine is organized into two phases: collision detection and solving. Collision detection finds intersections between geometries associated with the rigid bodies, generating appropriate collision information such as collision points, normals and penetration depths. Then a solver updates the motion of rigid bodies under the influence of the collisions that were detected and constraints that were provided by the user.
📷
The motion is the result of the solver interpreting the laws of physics, such as conservation of energy and momentum. But doing this 100% accurately is prohibitively expensive, and the trick to simulating it in real-time is to approximate to increase performance, as long as the result is physically realistic. As long as the basic laws of motion are maintained within a reasonable tolerance, this tradeoff is completely acceptable for a computer game simulation.

Taking Small Steps

The main idea of the physics engine is to discretize the motion using time-stepping. The equations of motion of constrained and unconstrained rigid bodies are very difficult to integrate directly and accurately. The discretization subdivides the motion into small time increments, where the equations are simplified and linearized making it possible to solve them approximately. This means that during each time step the motion of the relevant parts of rigid bodies that are involved in a constraint is linearly approximated.
📷📷
Although a linearized problem is easier to solve, it produces drift in a simulation containing non-linear behaviors, like rotational motion. Later we’ll see mitigation methods that help reduce the drift and make the simulation more plausible.

Solving

📷
Having linearized the equations of motion for a time step, we end up needing to solve a linear system or linear complementarity problem (LCP). These systems can be arbitrarily large and can still be quite expensive to solve exactly. Again the trick is to find an approximate solution using a faster method. A modern method to approximately solve an LCP with good convergence properties is the Projected Gauss-Seidel (PGS). It is an iterative method, meaning that with each iteration the approximate solution is brought closer to the true solution, and its final accuracy depends on the number of iterations.
📷
This animation shows how a PGS solver changes the positions of the bodies at each step of the iteration process, the objective being to find the positions that respect the ball and socket constraints while preserving the center of mass at each step (this is a type of positional solver used by the IK dragger). Although this example has a simple analytical solution, it’s a good demonstration of the idea behind the PGS. At each step, the solver fixes one of the constraints and lets the other be violated. After a few iterations, the bodies are very close to their correct positions. A characteristic of this method is how some rigid bodies seem to vibrate around their final position, especially when coupling interactions with heavier bodies. If we don’t do enough iterations, the yellow part might be left in a visibly invalid state where one of its two constraints is dramatically violated. This is called the high mass ratio problem, and it has been the bane of physics engines as it causes instabilities and explosions. If we do too many iterations, the solver becomes too slow, if we don’t it becomes unstable. Balancing the two sides has been a painful and long process.

Mitigation Strategies

📷A solver has two major sources of inaccuracies: time-stepping and iterative solving (there is also floating point drift but it’s minor compared to the first two). These inaccuracies introduce errors in the simulation causing it to drift from the correct path. Some of this drift is tolerable like slightly different velocities or energy loss, but some are not like instabilities, large energy gains or dislocated constraints.
Therefore a lot of the complexity in the solver comes from the implementation of methods to minimize the impact of computational inaccuracies. Our final implementation uses some traditional and some novel mitigation strategies:
  1. Warm starting: starting with the solution from a previous time-step to increase the convergence rate of the iterative solver
  2. Post-stabilization: reprojecting the system back to the constraint manifold to prevent constraint drift
  3. Regularization: adding compliance to the constraints ensuring a solution exists and is unique
  4. Pre-conditioning: using an exact solution to a linear subsystem, improving the stability of complex mechanisms
Strategies 1, 2 and 3 are pretty traditional, but 3 has been improved and perfected by us. Also, although 4 is not unheard of, we haven’t seen any practical implementation of it. We use an original factorization method for large sparse constraint matrices and a new efficient way of combining it with the PGS. The resulting implementation is only slightly slower compared to pure PGS but ensures that the linear system coming from equality constraints is solved exactly. Consequently, the equality constraints suffer only from drift coming from the time discretization. Details on our methods are contained in my GDC 2020 presentation. Currently, we are investigating direct methods applied to inequality constraints and collisions.

Getting More Details

Traditionally there are two mathematical models for articulated mechanisms: there are reduced coordinate methods spearheaded by Featherstone, that parametrize the degrees of freedom at each joint, and there are full coordinate methods that use a Lagrangian formulation.
We use the second formulation as it is less restrictive and requires much simpler mathematics and implementation.
The Roblox engine uses analytical methods to compute the dynamic response of constraints, as opposed to penalty methods that were used before. Analytics methods were initially introduced in Baraff 1989, where they are used to treat both equality and non-equality constraints in a consistent manner. Baraff observed that the contact model can be formulated using quadratic programming, and he provided a heuristic solution method (which is not the method we use in our solver).
Instead of using force-based formulation, we use an impulse-based formulation in velocity space, originally introduced by Mirtich-Canny 1995 and further improved by Stewart-Trinkle 1996, which unifies the treatment of different contact types and guarantees the existence of a solution for contacts with friction. At each timestep, the constraints and collisions are maintained by applying instantaneous changes in velocities due to constraint impulses. An excellent explanation of why impulse-based simulation is superior is contained in the GDC presentation of Catto 2014.
The frictionless contacts are modeled using a linear complementarity problem (LCP) as described in Baraff 1994. Friction is added as a non-linear projection onto the friction cone, interleaved with the iterations of the Projected Gauss-Seidel.
The numerical drift that introduces positional errors in the constraints is resolved using a post-stabilization technique using pseudo-velocities introduced by Cline-Pai 2003. It involves solving a second LCP in the position space, which projects the system back to the constraint manifold.
The LCPs are solved using a PGS / Impulse Solver popularized by Catto 2005 (also see Catto 2009). This method is iterative and considers each individual constraints in sequence and resolves it independently. Over many iterations, and in ideal conditions, the system converges to a global solution.
Additionally, high mass ratio issues in equality constraints are ironed out by preconditioning the PGS using the sparse LDL decomposition of the constraint matrix of equality constraints. Dense submatrices of the constraint matrix are sparsified using a method we call Body Splitting. This is similar to the LDL decomposition used in Baraff 1996, but allows more general mechanical systems, and solves the system in constraint space. For more information, you can see my GDC 2020 presentation.
The architecture of our solver follows the idea of Guendelman-Bridson-Fedkiw, where the velocity and position stepping are separated by the constraint resolution. Our time sequencing is:
  1. Advance velocities
  2. Constraint resolution in velocity space and position space
  3. Advance positions
This scheme has the advantage of integrating only valid velocities, and limiting latency in external force application but allowing a small amount of perceived constraint violation due to numerical drift.
An excellent reference for rigid body simulation is the book Erleben 2005 that was recently made freely available. You can find online lectures about physics-based animation, a blog by Nilson Souto on building a physics engine, a very good GDC presentation by Erin Catto on modern solver methods, and forums like the Bullet Physics Forum and GameDev which are excellent places to ask questions.

In Conclusion

The field of game physics simulation presents many interesting problems that are both exciting and challenging. There are opportunities to learn a substantial amount of cool mathematics and physics and to use modern optimizations techniques. It’s an area of game development that tightly marries mathematics, physics and software engineering.
Even if Roblox has a good rigid body physics engine, there are areas where it can be improved and optimized. Also, we are working on exciting new projects like fracturing, deformation, softbody, cloth, aerodynamics and water simulation.
Neither Roblox Corporation nor this blog endorses or supports any company or service. Also, no guarantees or promises are made regarding the accuracy, reliability or completeness of the information contained in this blog.
This blog post was originally published on the Roblox Tech Blog.
© 2020 Roblox Corporation. All Rights Reserved.

Using Clang to Minimize Global Variable Use

July

23, 2020

by RandomTruffle
PRODUCT & TECH
Every non-trivial program has at least some amount of global state, but too much can be a bad thing. In C++ (which constitutes close to 100% of Roblox’s engine code) this global state is initialized before main() and destroyed after returning from main(), and this happens in a mostly non-deterministic order. In addition to leading to confusing startup and shutdown semantics that are difficult to reason about (or change), it can also lead to severe instability.
Roblox code also creates a lot of long-running detached threads (threads which are never joined and just run until they decide to stop, which might be never). These two things together have a very serious negative interaction on shutdown, because long-running threads continue accessing the global state that is being destroyed. This can lead to elevated crash rates, test suite flakiness, and just general instability.
The first step to digging yourself out of a mess like this is to understand the extent of the problem, so in this post I’m going to talk about one technique you can use to gain visibility into your global startup flow. I’m also going to discuss how we are using this to improve stability across the entire Roblox game engine platform by decreasing our use of global variables.

Introducing -finstrument-functions

Nothing excites me more than learning about a new obscure compiler option that I’ve never had a use for before, so I was pretty happy when a colleague pointed me to this option in the Clang Command Line Reference. I’d never used it before, but it sounded very cool. The idea being that if we could get the compiler to tell us every time it entered and exited a function, we could filter this information through a symbolizer of some kind and generate a report of functions that a) occur before main(), and b) are the very first function in the call-stack (indicating it’s a global).
Unfortunately, the documentation basically just tells you that the option exists with no mention of how to use it or if it even actually does what it sounds like it does. There’s also two different options that sound similar to each other (-finstrument-functions and -finstrument-functions-after-inlining), and I still wasn’t entirely sure what the difference was. So I decided to throw up a quick sample on godbolt to see what happened, which you can see here. Note there are two assembly outputs for the same source listing. One uses the first option and the other uses the second option, and we can compare the assembly output to understand the differences. We can gather a few takeaways from this sample:
  1. The compiler is injecting calls to __cyg_profile_func_enter and __cyg_profile_func_exit inside of every function, inline or not.
  2. The only difference between the two options occurs at the call-site of an inline function.
  3. With -finstrument-functions, the instrumentation for the inlined function is inserted at the call-site, whereas with -finstrument-functions-after-inlining we only have instrumentation for the outer function. This means that when using-finstrument-functions-after-inlining you won’t be able to determine which functions are inlined and where.
Of course, this sounds exactly like what the documentation said it did, but sometimes you just need to look under the hood to convince yourself.
To put all of this another way, if we want to know about calls to inline functions in this trace we need to use -finstrument-functions because otherwise their instrumentation is silently removed by the compiler. Sadly, I was never able to get -finstrument-functions to work on a real example. I would always end up with linker errors deep in the Standard C++ Library which I was unable to figure out. My best guess is that inlining is often a heuristic, and this can somehow lead to subtle ODR (one-definition rule) violations when the optimizer makes different inlining decisions from different translation units. Luckily global constructors (which is what we care about) cannot possibly be inlined anyway, so this wasn’t a problem.
I suppose I should also mention that I still got tons of linker errors with -finstrument-functions-after-inlining as well, but I did figure those out. As best as I can tell, this option seems to imply –whole-archive linker semantics. Discussion of –whole-archive is outside the scope of this blog post, but suffice it to say that I fixed it by using linker groups (e.g. -Wl,–start-group and -Wl,–end-group) on the compiler command line. I was a bit surprised that we didn’t get these same linker errors without this option and still don’t totally understand why. If you happen to know why this option would change linker semantics, please let me know in the comments!

Implementing the Callback Hooks

If you’re astute, you may be wondering what in the world __cyg_profile_func_enter and __cyg_profile_func_exit are and why the program is even successfully linking in the first without giving undefined symbol reference errors, since the compiler is apparently trying to call some function we’ve never defined. Luckily, there are some options that allow us to see inside the linker’s algorithm so we can find out where it’s getting this symbol from to begin with. Specifically, -y should tell us how the linker is resolving . We’ll try it with a dummy program first and a symbol that we’ve defined ourselves, then we’ll try it with __cyg_profile_func_enter .
[email protected]:~/src/sandbox$ cat instr.cpp int main() {} [email protected]:~/src/sandbox$ clang++-9 -fuse-ld=lld -Wl,-y -Wl,main instr.cpp /usbin/../lib/gcc/x86_64-linux-gnu/crt1.o: reference to main /tmp/instr-5b6c60.o: definition of main
No surprises here. The C Runtime Library references main(), and our object file defines it. Now let’s see what happens with __cyg_profile_func_enter and -finstrument-functions-after-inlining.
[email protected]:~/src/sandbox$ clang++-9 -fuse-ld=lld -finstrument-functions-after-inlining -Wl,-y -Wl,__cyg_profile_func_enter instr.cpp /tmp/instr-8157b3.o: reference to __cyg_profile_func_enter /lib/x86_64-linux-gnu/libc.so.6: shared definition of __cyg_profile_func_enter
Now, we see that libc provides the definition, and our object file references it. Linking works a bit differently on Unix-y platforms than it does on Windows, but basically this means that if we define this function ourselves in our cpp file, the linker will just automatically prefer it over the shared library version. Working godbolt link without runtime output is here. So now you can kind of see where this is going, however there are still a couple of problems left to solve.
  1. We don’t want to do this for a full run of the program. We want to stop as soon as we reach main.
  2. We need a way to symbolize this trace.
The first problem is easy to solve. All we need to do is compare the address of the function being called to the address of main, and set a flag indicating we should stop tracing henceforth. (Note that taking the address of main is undefined behavior[1], but for our purposes it gets the job done, and we aren’t shipping this code, so ¯\_(ツ)_/¯). The second problem probably deserves a little more discussion though.

Symbolizing the Traces

In order to symbolize these traces, we need two things. First, we need to store the trace somewhere on persistent storage. We can’t expect to symbolize in real time with any kind of reasonable performance. You can write some C code to save the trace to some magic filename, or you can do what I did and just write it to stderr (this way you can pipe stderr to some file when you run it).
Second, and perhaps more importantly, for every address we need to write out the full path to the module the address belongs to. Your program loads many shared libraries, and in order to translate an address into a symbol, we have to know which shared library or executable the address actually belongs to. In addition, we have to be careful to write out the address of the symbol in the file on disk. When your program is running, the operating system could have loaded it anywhere in memory. And if we’re going to symbolize it after the fact we need to make sure we can still reference it after the information about where it was loaded in memory is lost. The linux function dladdr() gives us both pieces of information we need. A working godbolt sample with the exact implementation of our instrumentation hooks as they appear in our codebase can be found here.

Putting it All Together

Now that we have a file in this format saved on disk, all we need to do is symbolize the addresses. addr2line is one option, but I went with llvm-symbolizer as I find it more robust. I wrote a Python script to parse the file and symbolize each address, then print it in the same “visual” hierarchical format that the original output file is in. There are various options for filtering the resulting symbol list so that you can clean up the output to include only things that are interesting for your case. For example, I filtered out any globals that have boost:: in their name, because I can’t exactly go rewrite boost to not use global variables.
The script isn’t as simple as you would think, because simply crawling each line and symbolizing it would be unacceptably slow (when I tried this, it took over 2 hours before I finally killed the process). This is because the same address might appear thousands of times, and there’s no reason to run llvm-symbolizer against the same address multiple times. So there’s a lot of smarts in there to pre-process the address list and eliminate duplicates. I won’t discuss the implementation in more detail because it isn’t super interesting. But I’ll do even better and provide the source!
So after all of this, we can run any one of our internal targets to get the call tree, run it through the script, and then get output like this (actual output from a Roblox process, source file information removed):
excluded_symbols = [‘.\boost.*’]* excluded_modules = [‘/usr.\’]* /uslib/x86_64-linux-gnu/libLLVM-9.so.1: 140 unique addresses InterestingRobloxProcess: 38928 unique addresses /uslib/x86_64-linux-gnu/libstdc++.so.6: 1 unique addresses /uslib/x86_64-linux-gnu/libc++.so.1: 3 unique addresses Printing call tree with depth 2 for 29276 global variables. __cxx_global_var_init.5 (InterestingFile1.cpp:418:22) RBX::InterestingRobloxClass2::InterestingRobloxClass2() (InterestingFile2.cpp.:415:0) __cxx_global_var_init.19 (InterestingFile2.cpp:183:34) (anonymous namespace)::InterestingRobloxClass2::InterestingRobloxClass2() (InterestingFile2.cpp:171:0) __cxx_global_var_init.274 (InterestingFile3.cpp:2364:33) RBX::InterestingRobloxClass3::InterestingRobloxClass3()
So there you have it: the first half of the battle is over. I can run this script on every platform, compare results to understand what order our globals are actually initialized in in practice, then slowly migrate this code out of global initializers and into main where it can be deterministic and explicit.

Future Work

It occurred to me sometime after implementing this that we could make a general purpose profiling hook that exposed some public symbols (dllexport’ed if you speak Windows), and allowed a plugin module to hook into this dynamically. This plugin module could filter addresses using whatever arbitrary logic that it was interested in. One interesting use case I came up for this is that it could look up the debug information, check if the current address maps to the constructor of a function local static, and write out the address if so. This effectively allows us to gain a deeper understanding of the order in which our lazy statics are initialized. The possibilities are endless here.

Further Reading

If you’re interested in this kind of thing, I’ve collected a couple of my favorite references for this kind of topic.
  1. Various: The C++ Language Standard
  2. Matt Godbolt: The Bits Between the Bits: How We Get to main()
  3. Ryan O’Neill: Learning Linux Binary Analysis
  4. Linkers and Loaders: John R. Levine
  5. https://eel.is/c++draft/basic.exec#basic.start.main-3
Neither Roblox Corporation nor this blog endorses or supports any company or service. Also, no guarantees or promises are made regarding the accuracy, reliability or completeness of the information contained in this blog.
submitted by jaydenweez to u/jaydenweez [link] [comments]

Binary Options 60 Seconds Indicator 99% Winning Live ... This is how to trade Binary Options Full Time! - YouTube 60 Second Strategy: Learn how to trade binary options for ... 60 Seconds binary options strategy 99 - 100% Winning (100% ... 60 Second Binary Options Indicator 90% Win $2000 In 10 Minutes - (60-second) Binary Options trading strategy 2019 60 Second Binary Options - YouTube Day Trading 60 Second Binary Options Using Martingale Trading Strategy 60 Second Binary Options Signals - Best Auto Binary Signals‎ 60 second Binary Options Strategy Tips Learn Tricks And Tips For Trading Binary Options Successfully

The 60 Second binary option strategy is a trading algorithm or a set of rules allowing binary options traders to make profitable decisions on the very squeezed period of trading. Thee system is based on 1-minute charts, and it applies to any kind of asset class including single shares, stock indices, commodities, fiat currency pairs and even cryptos. The range of technical instruments to ... The most popular binary options broker is IQ Option. For a $10 minimum deposit and $1 minimum investment, you are good to go with this binary options trading platform. Additionally, it allows you to try out a $10,000 demo account to get a real feel of its features. This fast way of profiting from financial speculations was made even faster by the recent introduction of the 60 second trades in the platform. The 60 Second Binary Options. This new concept of trading in binary options was initially applied by TradeRush. In this regard, the traders in binary options did not have to wait for an hour to profit from their speculations. Although the return on ... And you should take 60-second trade. This indicator is a double confirmation setting and this only works on the mt4 platform. You can use any broker trading for binary options, for example, Deriv. We are using this indicator for a 1-minute change and 60-second expiries of each trade. If you like you can also test other time frames. 60 Second binary options are binary option trades with really short expiry times (60 seconds). For most brokers, this is also the shortest expiry time that they will offer on their platform. For most brokers, this is also the shortest expiry time that they will offer on their platform. 60 Second Binary Options Sniper: Zielen und 60 ... Die grundlegende Definition ist, dass es die Zeit ist, bis eine binäre Option abläuft, oder die Zeit, zu der eine binäre Option abläuft, je nachdem, welchen Broker Sie verwenden. Es ist besser, mehrere Indikatoren auf einem Demo-Konto auszuprobieren und zu wählen, was am besten zu den Vorlieben und Bedürfnissen passt. Ich lache ein wenig ... The TechFinancials Platform which supports 24option and OptionFair was the second entry into the 60 Second Binary Options market. Initially they seemed to have rushed to implement this feature as it was an add on selection on their main binary option trade screen. When I originally tested the 24option 60 Second Options there was a period of about one minute to place the order and the option ... A look at the 24option 60 second Platform – Trading binary options involves substantial risk and may lead to loss of all invested capital. The final areas of consideration come with the trading parameters themselves, which will form the basis of your trades. You will need to be aware of which asset you are looking to trade (for example, a stock, currency, commodity or index) and the expected ... 60-second binary options are for traders that want to be very active in the market and see results fast. Since these options expire in one minute you can potentially do hundreds of trades a day. Like traditional binary options, if you believe an asset will be higher than the current price 60 seconds from now you’ll buy a call option. A binary option is a fast and extremely simple financial instrument that allows investors to speculate on whether the price of an asset will go up or down in the future! On Binary Options 60 Seconds Platform you can make profits up to 95% every 60 seconds! Binary Options Trading with No Deposit Bonus on 60 Seconds Platform is the easiest way to try a trading platform without deposit! To get ...

[index] [2360] [9409] [26670] [11791] [2300] [5001] [24227] [7911] [7258] [3017]

Binary Options 60 Seconds Indicator 99% Winning Live ...

This is a 60 second binary options indicator that wins 90% of the time. It also works on the other time charts. It works with MT4 Platform. It has an arrow indicator with an audible sound (non ... With the 60 Second Binary Option a trader can make 65%-75% on the trade. A relatively new binary options trading feature available on many binary option trading platforms is the 60 Second Option ... http://60secondcashsystem.com/ Click Link To Left To Receive Your FREE Binary Options Trading Guide! 60 Second Binary Options http://www.youtube.com/watch?v=... The platform will give you the option to cancel or approve your decision for a few seconds after making it, and after three seconds have passed, your trade will be live and a 60-second timer will ... Learn to trade 60 second binary options for money with this simple strategy. Time Chart: Candlesticks display a unit of time. Example: On a 1 minute chart ea... Hi Friends I will Show This Video Binary Options 60 Seconds Indicator Signal 99% Winning Live Trading Proof -----... binary trading strategies, binary options 60 second binary options trading income secrets how to trade binary options ep. 2 trading 60 second binary options binary option strategy binary options ... IQ Option 60 Second Strategy for 90% Winning Trades. Make $2000 In 10 Minutes - (60-second) Binary Options trading strategy 2018 This Strategy is for 60 seconds timeframe. Watch carefully video to ... 60 Seconds binary options strategy 99 - 100% Winning (100% profit guaranteed) 90 - 95% Winning Binary Options Strategy in case of correct prediction - 1 to 5... This is how I have traded Binary for the past 3 years. Thank you for watching my videos, hit the subscribe button for more content. Check out our members res...

http://binaryoptiontrade.siotianasockbuckga.cf