Binary Options Robot Review The Best Binary Options ...

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]buntu:~/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]

Fixing KotFE Part 4 - What's An Alliance Without Allies?

Special thanks again to these two sites for summarising the expansions so I don't have to watch hours of youtube videos or fights thousands of Skytroopers to remember what happened in some of the chapters. They were incredibly helpful and I honestly don't know if I would have bothered finishing this if I didn't have them on hand. Also, if you want to compare and contrast my story to the original, these will probably come in handy.

Introduction

Welcome to Part 4 of Fixing KotFE! Here, I'll be looking at the story after you take over as Alliance Commander which, in my version, occurs in Chapter 6. The story up until this point can be found in Part 3 here.
This is the section where I usually write out my aims but these carry on from Part 3, so I'll save everyone some time there. I'm really happy with some of the changes I made and I think we get some cool concepts that aren't explored in the original so I hope you like it too. However, there is something I'd like to explain that I never really got into. Technically, I guess it would go into the gameplay section but it feels more story-based.
I'd add a prison to the base on Asylum where you can place characters who you decide to capture or imprison. At this point in the story, that would only allow for Senya, if you chose to imprison her, rather than allow her to join the council, however there are other characters in the future who can be held there. I think the prison would be an optional area that you can visit and talk to your prisoners, if you have any. They would say different things depending on your last completed chapter. This would obviously add more voice acting but I think it would help to create a sense of continuity when you can see and talk to these characters you chose t capture. It would also allow Senya to continue being a part of the story, even if you chose not to allow her onto the War Council. It's also just a fun idea that plays well into you being the big boss if you can interrogate your prisoners.
With that little bit out of the way, we'll start with:

Chapter 7: Twin-Tailed Scorpion

Some time has passed since you officially joined, and became the commander of the Alliance. You are called to the war table to discuss a strange broadcast that Theron had picked up. He refuses to tell you more without meeting in person.
You join your war council, who are already in place. As a reminder, this includes:
Theron reveals that he received a distress signal from the very prison you had been imprisoned in for 5 years. Even more peculiar, the signal was only broadcast on channels used by Imperial Intelligence before it was disbanded. Theron warns you that this was probably a trap but Lana points out that you could use some allies on Zakuul. You decide it's strange enough to investigate regardless.
The scene shifts to you being discreetly dropped off within the Old World district of Zakuul, with Hylo explaining that it would be impossible to get you any closer without being spotted, with Arcann having increased security after your escape, increasing the production of the prototype Skytroopers.
You make your way through the Old World where your radio signal is lost. Instead, you are greeted by a strange, robotic voice that begins directing you to a service door in the Old World. You go through the door which shuts and locks behind you and begin making your way back up to the prison, fighting through maintenance and industry droids as you do, all the time being directed by the synthesised feminine voice.
Eventually, you enter the prison once more. However, you are in a different part than before. You continue to receive directions, with doors closing to cut off Knights and allowing you to pass. You are eventually brought to a room. The door opening to reveal SCORPIO, hooked up to a machine and wired into the wall. She speaks to you, introducing herself and explaining the situation (or simply explaining what had happened if speaking to an agent).
SCORPIO explains that, after Arcann's takeover of the galaxy, she allied with him, quickly rising through the ranks to become one of Arcann's most trustworthy allies over the 5 years. However, this was all a ruse so that she could gain information. She planned to sell Arcann's secrets to the highest bidder but was caught before she could leave Zakuul. She was imprisoned and wired into the prison security system, trapped both physically and mentally. However, the Zakuulians underestimated her and within days, she had taken over the system completely. She'd even snark that this wasn't the first prison security system she had taken control of, referencing Belsavis. She explains that she had discovered your location while in the system and had managed to send a message to Lana, allowing her to enact your escape. SCORPIO goes on to add that she had used the security systems to aid you, in the hopes that you would return the favour and free her from her own imprisonment, since the prison was a closed system and she was locked inside. In return, she would join the Alliance, if only to get revenge on Arcann.
You agree to free her and are sent around the prison to deactivate various systems, allowing SCORPIO's escape.As you do so, you see snippets of SCORPIO's most recent memories, showing Arcann ambushing her as she attempts to leave the palace, sadly admitting that he had hoped she wouldn't try to betray him, even after the Scions warned him it would happen. SCORPIO, being her usual self, would respond snarkily, leading Arcann to angrily sentence her to be implemented within the prison security system. You then have to defend SCORPIO's body from Skytroopers and Knights while her consciousness downloads into it once again. As she is freed, explosions rock the prison and SCORPIO smugly explains that it is time for you to leave. Before you can ask how, another explosion causes the cell to break away from the prison complex, letting you freefall towards the planet's surface. You are saved as Hylo's dropship swoops in managing to catch the cell within the cargo bay.
Returning to Asylum, SCORPIO begins to brief everyone on what she knows; to get to Arcann, the infrastructure of Zakuul must be taken down, starting with the Old World, where he has the weakest grip. Arcann rules over the Old World thanks to a shaky alliance with the Scion cult. The Scions essentially rule over the sector by providing Arcann with access to Heskal's prophecies. In turn, only a minimal security force of Skytroopers exists in the Old World. She mentions that the best way to dethrone Heskal and the Scions is to work with one of the rival gangs. Lana adds that she had already established contact with two of the Old World's gangs and that she would need time to set up meetings with the gang leaders.
At this point, you see your first newsreel. It shows two presenters, a male who introduces himself as Adorus Bell and a female, Zelia Myker, sitting at a desk and recounting an act of domestic terrorism by the cell calling itself the Alliance. The Alliance, led by a radical extremist who is believed to be serving Vitiate destroyed a secure complex, killing a number of knights who were protecting the area and almost killing Princess Vaylin, who has been moved to a more secure facility. Thanks to the sacrifices of the Knights, no civilians were injured in the explosion. They then broadcast a message from Emperor Arcann himself, reassuring the people of Zakuul that he will personally capture this Agent of Vitiate and stop the Alliance.
My aim here was to establish SCORPIO with a clear character that fits her personality, keep her selfish amorality and also provide her with a motivation to actually help you, even if she's still secretive and coy about it. She wants revenge on Arcann for pre-empting her betrayal and imprisoning her. she simply thinks that you and your Alliance are the best chance at fulfilling her revenge. SCORPIO's weakness was always her pride. We don't really see that In the proper expansions. Instead, we just got a series of convoluted double crosses and fake outs which were just more confusing than anything and made it seem like she just bounced from one side to the other. I hope to create a more straight forward story For SCORPIO that is still true to the character. I also liked the idea of SCORPIO ending up in a similar situation to when the agent first meets her.
As an extra note, I added the idea of you escaping via SCORPIO ejecting the cell And hylo catching it at the last moment and I Just really think its a fun, silly concept that gets to show off SCORPIO's unique problem solving while selling Hylo as a great pilot.
Lastly, this is where I introduce a new narrative technique. In the original game, we often jump to conversations between Vaylin and Arcann that we, as the character, are not privy to. I think this is a problem since we, as the audience, now know more than our characters do which creates a narrative dissonance to the choices. I understand that the purpose of this was to develop Arcann and Vaylin as characters while we couldn't meet them but I think a better solution would be the newsreels. It lets us see Arcann, in character, and gives us an understanding of what the population of Zakuul are getting in terms of how our actions are portrayed.

Chapter 8: Friends In Low Places

You receive a message from Lana who has contacted two gangs within the Old World. She asks for you to accompany her to meet with the gang leaders and choose which one you'd want to work with. As you travel, you learn from Lana that the Scions are practically untouchable, due to Arcann's aid. The local security chief, Captain Arex, secretly protects them from other gangs in return for Heskal providing Arcann with visions of the future.
The two of you shuttle to the Old World and go to meet with the gangs. The first is a group of anarchists led by Kaliyo known as the Firebrands. They have a plan to blow up a Skytrooper factory and need your help. Theron argues over the radio that the factory is too close to civilians while Lana points out that destroying Arcann's source of troops would hurt the war effort.
You then go to meet the other gang, a group of thieves known as the Old World Kath Hounds, led by Vette, who steal from the rich living in the Spire to give back to people of the Old World. While they have the favour of the people of the Old World, the gang members aren't fighters and wouldn't be able to help much with the war effort. Vette proposes a plan to steal intelligence from the Old World security depot. However, they need your help to distract the security chief and his Skytroopers.
At this point, you have to choose who you will ally with; Kaliyo's Firebrands or Vette's Kath Hounds. Depending on the one you choose, you are sent on a different mission.
For the Kath Hounds, you create trouble, attracting the security forces and fighting off Skytroopers. While they chase you, Vette keeps you informed on the mission's progress as they sneak into the security depot and take what you need, before you are tasked with escaping from the Skytroopers and meet back up with Vette.
Meanwhile, if you chose to aid the Firebrands, you are tasked with placing bombs around supports beneath the droid factory, since the factory itself is too well secured. As you go, you are met by security forces that you have to defeat. As you finish, you rejoin with Kaliyo and watch the bombs go off, causing a section of the Spire to collapse down, much to Kaliyo's delight.
With the mission complete, your chosen gang agrees to aid you against the Scions. Both groups managed to find information on Arex that he was extorting money from civilians within the Old World in return for protection. If this was revealed to those in the Spire, they would demand his imprisonment. However, before you can set up plans, the base is attacked by Captain Arex and a prototype skytrooper design. You and your chosen gang leader fight the two of them. You can then choose to kill Arex, report him or blackmail him for his corruption to either leave his position or work for you.
With your new allies firmly established and Captain Arex dealt with, you join up with either Vette or Kaliyo to assault the Scions' fortress. Without Arex and his skytroopers to defend them, you are able to fight through the Scion forces and reach Heskal. Upon defeating him, you are given the choice to imprison or kill him, leaving your new ally to take control of the Old World.
Another newsreel with the same presenters rolls. The presenters discuss a gang war that had begun in the Old World district, followed by a video of Arcann alongside a woman he introduces as Knight-General Vendryl. Arcann apologises to the people of the Old World for this terrible tragedy and explains that Vendryll will be personally dealing with this new menace.
Speaking to Senya, either in her cell or the war council, will reveal that Vendryll was her second-in-command before her defection and that she is a ruthless individual completely devoted to Arcann.
So, the aim of this chapter is to provide a big choice that actually affects the story, this choice being whether you have Kaliyo or Vette as your advisor for the Old World gangs. There's an obvious light side/dark side binary with Vette's Robin Hood-esque antics obviously being nicer than Kaliyo's terrorism. However, I wanted to make it a bit more complex with Kaliyo actually being the more competent choice, pragmatically. While Vette has the favour of the civilian population, Kaliyo's gang are more competent combatants. This adds a different dynamic than just "Good choice" and "bad choice" but still allows that morality for those who wish to choose it.
The second notable choice is what you do with Arex. I think this is a fun one, since there isn't really a 'nice' answer, with you either handing him over to Arcann, blackmailing him to leave or work for you, or just straight up killing him. I like this as there isn't one 'right' answer.

Chapter 9: Mercy Mission

Koth asks to meet with you privately to talk. You oblige and he explains that he received a message from one of his contacts on Zakuul about a group of anti-Arcann refugees who are high profile targets looking to escape the planet. He planned to go pick them up but wanted to check with you first. You agree to go with him to meet these refugees.
The two of you take a shuttle to meet up with the refugees. There are 5 in total, all with different characters:
However, while down there, you receive word from Theron who has been tracking your movements, believing that he had to be careful after the disappearance of Marr and Satele. He informs you that he received intelligence that one of the refugees is a spy working for Arcaan. You are then tasked with speaking to each of the refugees in an attempt to discover who, if any, is the spy.
After speaking to all of them, you are given a decision: you can bring all of them back with you, accuse one character of being the spy or abandon them all. If you choose to leave the one you believe to be the spy or all of the refugees, you are given the choice to kill or imprison them. If you choose to imprison them, you can also have them tortured for information. Killing or torturing one or all of the refugees will negatively affect Koth's Alliance Influence to varying degrees, while allowing them to come to Asylum with you will positively affect it.
After returning to Asylum, we receive another news report. This time, Zalia is joined by a new host, Brennon Brosnee. The report explains that someone believed to be the Agent of Vitiate kidnapped many of Zakuul's greatest minds in a clear attack on Zakuulian society. Adorus Bell is not mentioned in the report.
This is what I'm calling a 'chill out chapter.' It's pretty short and doesn't have any combat but is more about player choice and character interactions. Your decisions in this chapter also have long-reaching effects as, in later chapters, Koth may leave the Alliance due to your choices here. If you do allow the spy onto Asylum, this will also affect the story later on.
I think, overall, this is a fun, short chapter which mixes things up from the longer ones that come before and after. It's fun, it's interesting. It's different and you don't even fight any Skytroopers! It would also be a good way to get a different perspective on Arcann's rule from the people of Zakuul themselves. On a technical side, this sort of 'bottle episode' type concept would allow the developers to spend more time on later chapters while still keeping a consistent schedule.

Chapter 10: The Lost Masters

Theron is finally able to decipher the information he took from the gangsters when you rescued him (see Chapter 6 for more info).
He explains that they are coordinates to a remote planet called Odessen within Wild Space. Lana adds that the planet seems to be unpopulated but shows all sorts of strange readings. She agrees that you should go investigate the landing coordinates with Theron.
When you land on Odessen, you find it to be a lush, fertile and wild planet. However, you also find a campsite and begin to investigate. You are met by Satele who explains that they had been awaiting your arrival. She invites the two of you to sit down and talk. As you do, she explains that she and Darth Marr had sensed a strong dark side presence on Odessen and had come to investigate. What they found was an entire compound controlled by the followers of Vitiate, hoping to revive him.
The two of them realised at this point that Vitiate's forces were more numerous and covert than either of them had believed, and resolved to stay on Odessen until the compound could be destroyed. Satele explains that they had learnt from their experiences with the Revanites and agreed that they could not trust even those in the Alliance in case it was compromised. However, Satele did leave a clue, saying that she knew Theron would be able to decipher it and bring you here. When you ask of Marr's location, Satele explains that they take turns keeping watch before noting that he should have been back by now. Suddenly, the camp is attacked by dark side beasts and the three of you fight them off. Once they're defeated, Satele states that Marr should have seen them coming and that he must be in danger. You head into the forest with her, leaving Theron to protect the ship.
You travel with Satele through the jungle of Odessen to reach the compound, fighting through local wildlife as well as mutated Sith beasts. As you approach, Satele suggests you sneak in while she distracts the cultists. You agree and Satele splits off from you as you make your way into the compound that seems like a fortress. You fight through a mixture of sith beasts and cultists loyal to Vitiate, mostly Sith. As you go, you hear Darth Marr and approach his location. A member of the (former) Emperor's Hand, Servant 11, is interrogating an unmasked and kneeling Marr who refuses to give up any information on Satele, surrounded by members of the Emperor's Guard. As you enter, Marr takes the chance to attack the guards, taking one of their pikes and impaling them upon it. He grabs his mask and lightsaber before the two of you fight the rest of the Emperor's Guards together until only Servant 11 is left. Marr starts interrogating Servant 11 on the cult's activities with you being able to act as the 'good cop' to his bad cop or reinforce Marr's bloodthirst.. Servant 11 smugly declares that there are plans in motion that will bring a new era of Vitiate's power. Marr then kills Servant 11.
Sidenote: I think this scene could go a couple of ways. We could finally get a Darth Marr face reveal or the scene could be shot in such a way that we never actually see his face until he retrieves the mask and puts it back on. I prefer the second because I just think it's a really fun concept for the scene.
You plan to escape with Marr but he refuses, stating that all remnants of the Emperor's filth must be cleansed from this place. You agree and travel with him, killing more cultists and making your way to a large room with a strange Sith holocron on it. Marr informs you that the holocron is a Reliquary, an artifact containing a fraction of Vitiate's presence and an item of Sith Sorcery. He explains that it absorbs the Force released by beings as they die and would eventually resurrect Vitiate if given the chance. With this said, Marr draws his lightsaber and impales the Reliquary, causing purple energy to blast out from within. The two of you then meet up with Satele and Theron to talk.
You discuss with the three of them on whether Satele and Marr should return to the Alliance. Satele agrees to join you but Marr states that he must ensure that the cult is completely destroyed before returning. You agree and leave the planet with Satele and Theron.
You return to Asylum and get the usual newsreel. However, since you haven't actually done anything that they know of, the news is instead about preparation for an upcoming event: Liberty Day, a yearly day of celebration in honour of Valkorion's forces defeating Vitiate and his Sith long ago. The two hosts discuss what Emperor Arcann could be planning for this year's Liberty Day, which would be happening in the coming months, and point out that the increased security provided by the Knights and Skytroopers will stop the Agents of Vitiate from stopping such an auspicious occasion.
So, I wanted to do a few things in this chapter: Firstly, I wanted to bring back Satele and Marr and, with Marr not being dead in my version, have them both do some cool stuff and show off a bit. In fact, my sequence with Marr is heavily based on his moment in the original story, shortly before he gets fucking gutted. I also wanted to be a bit fan-servicey with Marr's whole mask thing and I really love the idea that we never actually see him unmasked. On a slight tangent, I've just realised that, in the original expansion, Marr is just… left in his armour after being captured. Surely if you wake someone prisoner, you'd take their badass, technologically advanced battle armour off them, right? I suppose it's because they wanted him to be recognisable as Darth Marr still but it seems strange, not only from a literal point of view but a metaphorical one too. Stripping Marr of his armour signifies that he isn't some unstoppable machine but a man, and when he then fights back and kills Valkorion/Vitiate's minions, (in either version of the story) it shows that, as a man, he is able to overcome these greater odds.
I'd also want there to be some honest interactions between Theron and Satele, maybe having Satele actually show pride in Theron and what he's become. In the original story, I don't think Theron even meets her in these expansions, since you go to see her alone and then she just leaves. It honestly is just bizarre to me that you have two characters who are mother and son with a strained relationship (in an expansion that revolves very heavily about family ties, none-the-less) and they never interact. I think having Satele and Theron repair their relationship a bit would be good story progression and an interesting route for both their characters, especially if Satele is going a bit AWOL from the Jedi teachings, which she already was in the original version.
Secondly, I wanted to implement the Cult of Vitiate as antagonists. Since Valkorion isn't just Vitiate in a meat suit in this version, he should definitely have his own thing going. I also want this to be more of a thing later on, so I think it's good to plant the seed here.
Thirdly, I wanted to introduce Odessen as a location. Asylum being the home of the Alliance gives us a chance to make Odessen a little more interesting than 'the place you decided to just make a base'. Again, this will come back later in the story.
Lastly, I think this newsreel is a fun one. It's something light-hearted and unrelated to you and has the irony of Arcann pushing this 'Liberty Day' when he has taken over the entire Galaxy.

Chapter 11: Twists of Fate

With Satele back in the Alliance, things are running more smoothly. She calls you to join her to talk. When you meet with her, she is alone in the council room. She asks you to join her on a walk.
Satele explains that she has some errands to run on the station and asks you to help. Regardless of your answer, she begins leading you deeper into the underbelly of the station to meet a friend of hers. Before you reach your target, you are pickpocketed by a young boy who runs into a back alley. The two of you follow the thief and catch him. He explains that he has to steal in order to make enough money to feed himself and his sister and that if he doesn't return with something, his boss will throw them out. You are then given a choice to take your credits back, kill the boy or recruit him to the Alliance. Whichever choice you choose, the boy pleads with you to save his sister who is being held by a gang known as the Engineers. Satele admits that the Engineers have caused problems for the Alliance in the past, but are the only ones able to keep Asylum running. You decide to go and deal with them.
As you make your way down into the lower levels of Asylum, you are split off from Satele and are contacted by Valkorion once again. He apologises for possessing you and explains that doing so used up his energy and he was forced to retreat into your subconscious to recover. The two of you discuss the Alliance and your plans for after Arcann is defeated. Valkorion admits that he doesn't know if he will remain in your mind forever or eventually fade away. As the two of you talk, you arrive within the Engineers' territory. You fight your way through until you reach the Engine Room which is set out like a treasury.
In the middle of the room is a rotund twi'lek man, Ral Ekval, sitting on a throne made up of scrap metal. He sends his goons to attack you and you fight them off. You then speak to Ral, who smugly explains that only his people can run Asylum. Without him, the station would fall from orbit and be sucked into the gas giant. You then have a choice:
Whichever you choose, Satele makes her way inside with Alliance back-up to help you. If you chose to kill or imprison Ral, Satele notes that it will be hard to find anyone who could replace him and that she would ask Hylo to talk to her contacts. As this happens, you get an emergency broadcast from Theron, stating that Koth and the Gravestone have gone missing and have been spotted in the Spire.
You return to the Alliance base to meet with the War Council, deciding that a major assault would be too costly at this point. Instead, you will lead a small strike team into the Spire to retrieve Koth and the Gravestone. At this point, you're able to choose from the companions you have acquired to join you on the mission by performing different tasks:
Depending on who you pick to lead the distraction team, you gain Alliance Influence with the Republic, the Underworld or the Empire.
With the positions set, you start your assault, landing within the Old World and fighting your way through to an elevator that leads up into the Spire. This is the first time you get to actually see the splendors of the Spire but it doesn't last long as alarms start to blare out. As you go, you receive reports from the other members of your team, with SCORPIO providing overviews on security movements and Jorgan/Vette/Kaliyo/Pyron and Hylo providing updates on their conflict.
You make your way through the streets of the Spire, fighting through Skytroopers as you approach the palace. You fight through knights as you make your way through the palace towards the throne room. You reach the throne room where you are met by Arcann, alongside a group of Knights. You also see Vaylin, standing at her brother's side and Koth in manacles. Depending on whether Koth's Alliance Influence score is above or below a certain amount (heavily affected by your choices within Chapter 9 but also affected by other choices within the story), Koth will either have been captured while trying to pick up more refugees or he will have betrayed you, attempting to join forces with Arcann, who believes him to be a spy and had him locked up. Either way, you speak with Arcann, who seems strange. He is angered by your presence, claiming that you were an agent of Vitiate come to destroy him. He demands the Knights execute you and draws his own lightsaber, ready to fight. If you have Senya with you, she will attempt to talk him out of it, but this only enrages him further as he claims you have turned his mother to the darkness. You ready yourself for a fight, but before you can, Vaylin suddenly screams and the entire room begins to shake and shudder, windows smashing and the thin bridge to the throne collapsing, taking some of the knights with it. The throne room begins to fall apart and you are forced to retreat, bringing Koth with you.
You receive confirmation that the others have captured the Gravestone and you make your way towards the ship. You get onboard the Gravestone with your companion and Koth while Hylo takes off, escaping Zakuul. No one seems to know the cause of the sudden damage to the throne room.
With the danger passed, you're able to turn your attention to Koth. Regardless of whether he betrayed you or simply got captured, you're given the choice to let him go, imprison him or kill him. If you let him go after he betrays you, he agrees to exile himself. Otherwise, he will return to the Alliance. You return to Asylum and speak with the War Council who have mixed feelings. While some are happy about the victory, however minor, others believe that this will only harden Arcann's resolve.
This is where Part 4 will end, since I've already massively surpassed my 5000ish word limit for these posts. I felt like this worked as a pretty good 'midpoint' for the story. The theme of this section of Chapters is about building up the Alliance into a better fighting force. The next section will delve into deconstructing Arcann's powerbase some more and then getting to the grand finale. Laughably, I thought I could get away with 4 parts when I started writing all this but that clearly isn't the case.
This last chapter is fun because it gets you your first real look at Arcann since the start and you get to see his deterioration as he becomes more paranoid and cruel. It also includes the first seeds of Vaylin's storyline. I've also included a trope I really enjoyed when it was used in the class stories where each of your allies is doing something, with the twist of you picking and choosing for a few roles. There's also the whole bit with the Engineers which is more throwaway, but I thought some light adventure would be fun and I felt like I should bring Valkorion back for a bit. I've already gone on long enough though, so I'll finish with a TL;DR.

TL;DR

submitted by Magmas to swtor [link] [comments]

Respect Thanos, the Mad Titan (Marvel: Earth-616)

Respect Thanos, the Mad Titan

Fools taking up arms against omnipotence. They rush head-on into Armageddon. So I shall provide them with a most glorious doomsday! The heavens will run red with blood. But in the end, as always, Thanos will stand triumphant.
 
Thanos was born on Saturn's moon Titan as the son of Eternals A'lars and Sui-San; his brother is Eros of Titan. Thanos carries the Deviants gene, and as such, shares the physical appearance of the Eternals' cousin race. Shocked by his appearance and the belief that he would destroy all life in the universe, Sui-San attempted to kill him, but she was stopped by A'lars. During his school years, Thanos was a pacifist and would only play with his brother Eros and pets. By adolescence, Thanos had become fascinated with nihilism and death, worshiping and eventually falling in love with the physical embodiment of death, Mistress Death. As an adult, Thanos augmented his physical strength and powers through his superior scientific knowledge. He also attempted to create a new life for himself by siring many children as well as becoming a pirate. He finds no fulfillment in either until he is visited again by Mistress Death, for whom he murders his offspring and his pirate captain. Wishing to impress Mistress Death, Thanos gathers an army of villainous aliens and begins a nuclear bombardment of Titan that kills millions of his race, and then begins search of more power in order to fulfill his goal of spreading death and destruction through the universe for his love.
Note: Thanos while he was amped with the God Quarry can be found here, though some notable feats with the amp can be found marked within this thread.

Strength

Durability

Blunt Force/Impact
Energy
Extreme Temperature
Esoteric Resistances
Force Fields

Speed

Energy Projection

MatteEnergy Manipulation

Telepathy

Intellect

Technological
Trickery
Preparation
Other

Misc.

Teleportation/Portal Creation
Healing/Energy Transfer
Cosmic Placement and Awareness
Magical Capability
Other

Fights

Sanctuary

Sanctuary is Thanos' signature starship, one of the most powerful starships in the universe. It comes equipped with a variety of features, including a teleportation system that can be used anywhere throughout the universe, powerful force fields, and advanced weapon systems

Space Throne

Gear and Equipment

Spaceships

Weaponry

Synthetic Gem

Other

Weaknesses

Thanos' most consistent weakness is his ego and tendency for self-sabotage. He lets his opponents live when he could easily disable them and frequently weakens himself while fighting weaker foes. As said by Adam Warlock, Thanos always subconsciously supplied the means for his own defeat, such as letting Nebula grab the Gauntlet from his physical body.

The Cosmic Cube

God Thanos

The Infinity Gauntlet

For I am transformed! I have left the mortal plane behind me! In truth I have risen above the mantle of godhood! Even celestial status is now below me! The Infinity Gems have given me the power of Supreme Being!
Reality Warping/Alteration
Power
Space Manipulation
Time Manipulation
Soul Manipulation
Durability
Strength
Other

Heart of the Universe

Note: The canonical status of Marvel Universe: The End is questionable and up for debate.
submitted by MyNameIsJeffHarrison to respectthreads [link] [comments]

2018 r/Fantasy Bingo Statistics

As I’ve done every year for the last couple years, I’ve done an overly in-depth look at all the cards submitted for the 2018 Reddit Fantasy Bingo Challenge. I am NOT an actual statistician, but I have once figured how much to tip in my head.
PRELIMINARY NOTES
Before I get into the numbers, here are some notes:
  1. I am not someone who determines of anyone gets a bingo, so when assembling this information, I don’t question a book you may have read or where you placed it on your bingo card.
  2. To make it easier for my analysis, I followed the idea of one book per square (or up to five for short stories). If you submitted the name of a series or an omnibus volume, I took only the first book in the series or omnibus (I didn’t do this in a couple minor cases, however). If you said you read Heartstrikers by Rachel Aaron, for example, I wrote down that you read Nice Dragons Finish Last so I could compare you against others who read only the first book.
  3. Graphic Novels: I subdivided the Graphic Novels/Audiobooks square into its component parts. It's possible that I made a mistake if you weren't clear that you were reading an audiobook versus a graphic novel (I hate everyone who read the comic of or listened to Rivers of London). I found it is more much useful to compare comic book series against each other instead of by volume, so the person who read Monstress Volume 1 was compared with one who read Monstress Volume 3.
  4. I attempted a gender breakdown, but I may be wrong! I said female/male/nonbinary/other based on the pronoun the authors preferred (author bios were useful in this regard), but sometimes I guessed. In a few rare occasions, I couldn't find evidence either way and left it alone. If you notice an error on my part, please let me know.
  5. I did not look to see if the author was a person of color or other demographic data such as language or country of origin or other interesting information. It took me about 60 hours to get the data to its current point, and with almost 1500 individual authors read, it’s far too much work for me to research.
  6. If you want to see my raw data, please click this link. I don’t include anyone’s username on this sheet. Though I only show the most popular books and authors per square below, I do have exactly how many people read what and whom, so if you’re curious about a specific author or book, feel free to ask in the comments!

PART I: What Is Popular?

Overall Bingo Cards
Most Read Books Overall:
  1. The Poppy War by R. F. Kuang was the most read book (64 times) (9.3% of all books)
  2. All Systems Red by Martha Wells (58 times)
  3. Circe by Madeline Miller (57 times).
  4. The Library at Mount Char by Scott Hawkins (53 times)
  5. The Long Way to a Small, Angry Planet by Becky Chambers (43 times)
The Poppy War was used on 9 different bingo squares. The book with the lowest ratio of number of times read to squares used (minimum 10 times used) was The Monster Baru Cormorant (11 times in 7 squares).
Most Authors Read Overall:
  1. Once again, Brandon Sanderson was the most read author (121 times) (17% of all authors)
  2. (tie) Naomi Novik & Terry Pratchett (98)
  3. Neil Gaiman (86)
  4. Becky Chambers (80)
  5. Martha Wells (72)
Brandon Sanderson was the most widely used author in 20 squares, followed by Neil Gaiman in 15 squares, and Naomi Novik, Terry Pratchett, Michael J. Sullivan, and N. K. Jemisin tied for 14 squares.
Random Note: Something I realized is that someone read a Roald Dahl book for this bingo... and it was the first ever in 4 years anyone had read a Dahl book before. It's always interesting what people do and do not read for Bingo versus their possible general popularity in the real world.
1. Novel that was Reviewed on Fantasy
Books:
  1. Kings of the Wyld by Nicholas Eames (7 times)
  2. (tie) Grey Sister by Mark Lawrence & Witchmark by C. L. Polk (4)
TOTAL: 268 books (204 unique)
LEFT BLANK: 14 / SUBSTITUTED: 9
*Authors: * 1. (tie) Josiah Bancroft & Mark Lawrence (9 times) 2. (tie) Brand don Sanderson & Nicholas Eames (7)
TOTAL: 272 authors (166 unique)
GENDER: 153 by men (56.3%) / 116 by women (42.6%) / 2 by nonbinary (0.7%) / 1 unknown
Note: I was pleasantly surprised by how many different books we got for this one; aside from the short story square, the only other square with more options was the "Fewer than 2500 Goodreads Ratings." When you have it wide open like this, you get a lot of choices, though still leaning male and "Fantasy popular."
2. Novel Featuring a Non-Western Setting
Books:
  1. (tie) Children of Blood and Bone by Tomi Adeyemi & The Three-Body Problem by Cixin Liu (13 times)
  2. Jade City by Fonda Lee (12)
  3. The Bear and the Nightingale by Katherine Arden & The Poppy War by R. F. Kuang (10)
TOTAL: 265 books (131 unique)
LEFT BLANK: 14 / SUBSTITUTED: 3
Authors:
  1. Cixin Liu (15 times)
  2. Katherine Arden (14)
  3. (tie) S. A. Chakraborty & Tomi Adeyemi (13)
TOTAL: 276 authors (103 unique)
GENDER: 147 by women (53.3%) / 122 by men (44.2%) / 4 by nonbinary (1.4%) / 3 unknown (1.1%)
Note: The first square that women "win," thanks to the popularity of 3 of the 4 most popular books.
3. Five Short Stories
Short Stories (all tied at 3 times):
  • “Fandom for Robots” by Vina Jie-Min Prasad
  • “I, Kane” by Laura M. Hughes
  • “In the Stacks” by Scott Lynch
  • “No Fairytale” by Ben Galley
  • “Welcome to Your Authentic Indian Experience” by Rebecca Roanhorse
TOTAL: 300 short stories (261 unique)
Authors:
  1. (tie) H. P. Lovecraft & Ken Liu (14 times)
  2. Neil Gaiman (9)
  3. (tie) Brandon Sanderson & Tanith Lee (7)
TOTAL: 304 authors (170 unique)
GENDER: 156 by men (51.3%) / 137 by women (45.1%) / 11 by nonbinary (3.6%)
Note: 60 people chose to read 5 short stories instead of reading an anthology but it was quite obviously with some of you that you were reading FROM a collection/anthology; why didn't you finish them?
Collections & Anthologies:
  1. (tie) Brief Cases by Jim Butcher; Lost Lore by Terrible Ten; & The Paper Menagerie and Other Stories by Ken Liu (9 times)
  2. (tie) Arcanum Unbounded by Brandon Sanderson & The Last Wish by Andrzej Sapkowski (6)
  3. The Language of Thorns by Leigh Bardugo (5)
TOTAL: 193 books (113 unique)
LEFT BLANK: 25 / SUBSTITUTED: 4
Authors:
  1. (tie) Andrzej Sapkowski & Jim Butcher (10 times)
  2. Ken Liu & Terrible Ten (9)
  3. Neil Gaiman (8)
TOTAL: 214 authors (105 unique)
GENDER: 122 by men (57%) / 80 by women (37.4%) / 1 nonbinary (0.5%)/ 11 unknown (5.1%)
Note: Not too many surprises for me, Ken Liu is a pretty popular short story writer, and Brief Cases came out last summer, and Sanderson and Sapkowski are subreddit faves.
4. Novel Adapted by Stage, Screen, or Game
Books:
  1. The Last Wish by Andrzej Sapkowski (11 times)
  2. The Princess Bride by William Goldman (10)
  3. (tie) A Wrinkle in Time by Madeleine L’Engle; Blood of Elves by Andrzej Sapkowski; The Last Unicorn by Peter S. Beagle; & The Magicians by Lev Grossman (8)
TOTAL: 260 books (120 unique)
LEFT BLANK: 18 / SUBSTITUTED: 4
Authors:
  1. Andrzej Sapkowski (25 times)
  2. Neil Gaiman (12)
  3. Terry Pratchett (11)
TOTAL: 269 authors (90 unique)
GENDER: 211 by men (78.4%) / 57 by women (21.2%) / 1 unknown
Note: This was the most male-dominated square on here, I think we can all guess why.
5. Hopeful Spec-Fic
Books:
  1. The Long Way to a Small, Angry Planet by Becky Chambers (12 times)
  2. (tie) The Curse of Chalion by Lois McMaster Bujold & Theft of Swords by Michael J. Sullivan (11)
  3. (tie) Nice Dragons Finish Last by Rachel Aaron & Sir Thomas the Hesitant and the Table of Less Valued Knights by Liam Perrin (8)
TOTAL: 260 books (151 unique)
LEFT BLANK: 19 / SUBSTITUTED: 3
Authors:
  1. Michael J. Sullivan (29 times)
  2. Becky Chambers (25)
  3. (tie) Rachel Aaron & Terry Pratchett (14)
TOTAL: 266 authors (113 unique)
GENDER: 152 by women (57.1%) / 112 by men (42.1%) / 2 unknown
Note: Even though NOT reading Chambers and Aaron would be hard mode, plenty of people wanted to read them anyway.
6. Fantasy Novel that Takes Place Entirely Within One City
Books:
  1. Foundryside by Robert Jackson Bennett (22 times)
  2. (tie) The Lies of Locke Lamora by Scott Lynch & The Thief Who Pulled on Trouble’s Braids by Michael McClung (16)
  3. Torn by Rowenna Miller
TOTAL: 253 books (132 unique)
LEFT BLANK: 18 / SUBSTITUTED: 11
Authors:
  1. Robert Jackson Bennett (24 times)
  2. Scott Lynch (17)
  3. Michael McClung (16)
TOTAL: 259 authors (115 unique)
GENDER: 165 by men (63.7%)/ 94 by women (36.3%)
7. Self Published Novel
Books:
  1. On the Shoulders of Titan by Andrew Rowe (8 times)
  2. Sufficiently Advanced Magic by Andrew Rowe (7)
  3. The Thief Who Pulled on Trouble’s Braids by Michael McClung (6)
  4. (tie) A Star-Reckoner’s Lot by Darrell Drake & Nice Dragons Finish Last by Rachel Aaron (5)
TOTAL: 250 books (168 unique)
LEFT BLANK: 21 / SUBSTITUTED: 11
Authors:
  1. Andrew Rowe (15 times)
  2. Krista D. Ball (11)
  3. (tie) Rachel Aaron & Will Wight (9)
  4. Phil Tucker (8)
  5. K. S. Villoso (7)
TOTAL: 250 authors (136 unique)
GENDER: 163 by men (65.2%) / 83 by women (33.2%) / 4 unknown
Note: I think most of the top authors here have a presence on the subreddit, but I'm definitely surprised that Rowe's books took BOTH top slots for this square.
8. Novel Published Before You Were Born
Books:
  1. A Wizard of Earthsea by Ursula K. Le Guin (10 times)
  2. The Forgotten Beasts of Eld by Patricia A. McKillip (7)
  3. (tie) Alanna: The First Adventure by Tamora Pierce; Dragonflight by Anne McCaffrey; & The Left Hand of Darkness by Ursula K. Le Guin (4)
TOTAL: 255 books (178 unique)
LEFT BLANK: 18 / SUBSTITUTED: 9
Authors:
  1. Ursula K. Le Guin (22 times)
  2. Patricia A. McKillip (9)
  3. Terry Pratchett (7)
  4. (tie) Anne McCaffrey; J. R. R. Tolkien; & Robert Jordan (6)
TOTAL: 262 authors (127 unique)
GENDER: 156 by men (59.5%) / 105 by women (40.1%) / 1 unknown
Note: Le Guin dominates this, as an easy recommendation for most of the younguns on the sub.
9. Any fantasy Goodreads Group Book of the Month
Books:
  1. All Systems Red by Martha Wells (54 times)
  2. Circe by Madeline Miller (17)
  3. Kings of the Wyld by Nicholas Eames (15)
  4. The Poppy War by R. F. Kuang (14)
  5. (tie) Foundryside by Robert Jackson Bennett & Trail of Lightning by Rebecca Roanhorse (12)
TOTAL: 262 books (59 unique)
LEFT BLANK: 18 / SUBSTITUTED: 2
Authors:
  1. Martha Wells (56)
  2. Madeline Miller (17)
  3. Nicholas Eames (15)
  4. (tie) R. F. Kuang & Robert Jackson Bennett (14)
  5. Rebecca Roanhorse (12)
TOTAL: 262 authors (53 unique)
GENDER: 161 by women (61.5%) / 96 by men (36.6%) / 5 by nonbinary (1.9%)
Note: Wells and Miller contribute to the women's domination of this category, with the overwhelming popularity of Murderbot quite evident. This is also a rather restrictive square, as there were only 68 books to choose from.
10. Novel Featuring a Library
Books:
  1. The Library at Mount Char by Scott Hawkins (40 times)
  2. The Invisible Library by Genevieve Cogman (31)
  3. Arm of the Sphinx by Josiah Bancroft (14)
  4. The Forbidden Library by Django Wexler (9)
TOTAL: 260 books (110 unique)
LEFT BLANK: 20 / SUBSTITUTED: 2
Authors:
  1. (tie) Genevieve Cogman & Scott Hawkins (40 times)
  2. Josiah Bancroft (15)
  3. Django Wexler (9)
TOTAL: 264 authors (96 unique)
GENDER: 150 by men (56.8%) / 113 by women (42.8%) / 1 unknown
Note: People love libraries and they love Cogman & Hawkins. Also, only 5 out of the 110 books had "Library" in their title... but 3 of them are in the top 4, hmm.
11. Subgenre: Historical Fantasy OR Alternate History
Books:
  1. His Majesty’s Dragon/Temeraire by Naomi Novik (11 times)
  2. The Bear and the Nightingale by Katherine Arden (9)
  3. (tie) A Star-Reckoner’s Lot by Darrell Drake & The Calculating Stars by Mary Robinette Kowal (8)
TOTAL: 267 books (153 unique)
LEFT BLANK: 13 / SUBSTITUTED: 2
Authors:
  1. Naomi Novik (20 times)
  2. Katherine Arden (19)
  3. Mary Robinette Kowal (10)
  4. Darrell Drake (9)
TOTAL: 269 authors (128 unique)
GENDER: 176 by women (65.4%) / 87 by men (32.3%) / 6 by nonbinary (2.2%)
Note: Another women-heavy square, I'm not surprised by any of the popular books or authors here.
12. Novel Published in 2018
Books:
  1. The Poppy War by R. F. Kuang (25 times)
  2. Children of Blood and Bone by Tomi Adeyemi (19)
  3. Grey Sister by Mark Lawrence (12)
  4. Trail of Lightning by Rebecca Roanhorse (10)
TOTAL: 269 books (130 unique)
LEFT BLANK: 12 / SUBSTITUTED: 1
Authors:
  1. R. F. Kuang (25 times)
  2. Tomi Adeyemi (19)
  3. Mark Lawrence (12)
  4. Rebecca Roanhorse (10)
TOTAL: 275 authors (133 unique)
GENDER: 140 by women (50.9%) / 134 by men (48.7%) / 1 unknown
Note: You're going to see Poppy War again and again.
13. Novel Featuring a Protagonist Who is a Writer, Artist or Musician (NOT: Kingkiller Chronicles)
Books:
  1. Bloody Rose by Nicholas Eames (14 times)
  2. Where the Waters Turn Black by Benedict Patrick
  3. (tie) Dust and Light by Carol Berg & Song of the Beast by Carol Berg (8)
TOTAL: 256 books (124 unique)
LEFT BLANK: 17 / SUBSTITUTED: 9
Authors:
  1. Carol Berg (17 times)
  2. (tie) Guy Gavriel Kay & Nicholas Eames (14)
  3. Brandon Sanderson (13)
  4. Benedict Patrick (10)
TOTAL: 260 authors (102 unique)
GENDER: 140 by women (53.8%) / 120 by men (46.2%)
Note: I'm highly amused that two different Berg books tied in this case. Also, even though the highest ranked book by Sanderson is only 31st overall, his general popularity means he may not always win a category but he's often around somewhere, especially with the 20 different squares he's used for.
14. Novel Featuring a Mountain Setting
Books:
  1. The Whitefire Crossing by Courtney Schafer (29 times)
  2. Spinning Silver by Naomi Novik (21)
  3. The Demons We See by Krista D. Ball (14)
  4. A Face Like Glass by Frances Hardinge (8)
TOTAL: 255 books (129 unique)
LEFT BLANK: 23 / SUBSTITUTED: 4
Authors:
  1. Courtney Schafer (29 times)
  2. Naomi Novik (21)
  3. Krista D. Ball (14)
  4. Mark Lawrence (11)
TOTAL: 257 authors (110 unique)
GENDER: 154 by women (59.9%) / 101 by men (39.3%) / 1 by nonbinary (0.4%) / 1 unknown
Note: If you read The Whitefire Crossing you read it for this square, no question. This was the most popular book only used for one square. Also, only 3 books have "Mountain" or "Mount" in them, and the highest ranked one is all the way down in 9th at 4 books.
15. 2017 fantasy Top Novels List
Books:
  1. The Traitor Baru Cormorant by Seth Dickinson (15 times)
  2. Red Sister by Mark Lawrence (10)
  3. The Fifth Season by N. K. Jemisin (8)
  4. Traitor’s Blade by Sebastien de Castell (7)
TOTAL: 263 books (127 unique)
LEFT BLANK: 16 / SUBSTITUTED: 3
Authors:
  1. Mark Lawrence (18 times)
  2. (tie) N. K. Jemisin & Seth Dickinson (16)
  3. Becky Chambers (12)
  4. Lois McMaster Bujold (11)
TOTAL: 273 books (64 unique)
GENDER: 209 by men (76.6%)/ 64 by women (23.4%)
Note: No real surprises here.
16. Novel with Fewer than 2500 Goodreads Ratings
Books:
  1. (tie) Sir Thomas the Hesitant and the Table of Less Valued Knights by Liam Perrin & They Mostly Come Out at Night by Benedict Patrick (5 times)
  2. (tie) Kings of Paradise by Richard Neull & The Empire of the Dead by Phil Tucker (4)
TOTAL: 265 books (225 unique)
LEFT BLANK: 16 / SUBSTITUTED: 1
Authors:
  1. Benedict Patrick (8 times)
  2. K. S. Villoso (7)
  3. (tie) Krista D. Ball; Liam Perrin; & Phil Tucker (5)
TOTAL: 272 authors (217 unique)
GENDER: 146 by men (53.7%) / 124 by women (45.6%) / 1 by nonbinary (0.4%) / 1 unknown
Note: Another one of my favorite squares for the sure number of unique books. Almost 80% of the cards have this square unique. If you look at the raw data, I recommend scrolling this section to see what might be new and interesting for you.
17. Novel with a One Word Title
Books:
  1. Touch by Claire North (11 times)
  2. Mort by Terry Pratchett (8)
  3. Worm by Wildbow (7)
  4. (tie) Borne by Jeff VanderMeer & Circe by Madeline Miller (5)
TOTAL: 267 books (183 unique)
LEFT BLANK: 13 / SUBSTITUTED: 2
Authors:
  1. (tie) Brandon Sanderson & Terry Pratchett (13 times)
  2. Claire North (11)
  3. Wildbow (9)
  4. Jeff VanderMeer (8)
TOTAL: 272 authors (149 unique)
GENDER: 166 by men (61%) / 106 by women (39%)
Note: The longest one-word title was Transformation by Carol Berg; the shortest was Ra by Sam Hughes. I think the longest one with one syllable is Scourged by Kevin Hearne. The shortest with multiple syllables is probably City (Simak) or Fyre (Sage) depending on you say that last one.
18. Novel Featuring a God as a Character
Books:
  1. Circe by Madeline Miller (26 times)
  2. Warbreaker by Brandon Sanderson (16)
  3. The Gospel of Loki by Joanne Harris (11)
  4. The Library at Mount Char by Scott Hawkins (8)
TOTAL: 267 books (119 unique)
LEFT BLANK: 14 / SUBSTITUTED: 1
Authors:
  1. Madeline Miller (30 times)
  2. Brandon Sanderson (19)
  3. Neil Gaiman (13)
  4. Brian McClellan (13)
TOTAL: 275 authors (88 unique)
GENDER: 151 by men (54.9%) / 124 by women (45.1%)
Note: Miller adds to her Circe lead with a bit of Song of Achilles.
19. Novel by an Author Writing Under a Pseudonym
Books:
  1. Assassin’s Apprentice by Robin Hobb (28 times)
  2. The First Fifteen Lives of Harry August by Claire North (11)
  3. The Goblin Emperor by Katherine Addison (9)
  4. (tie) 84K by Claire North & A Darker Shade of Magic by V. E. Schwab (8)
TOTAL: 259 books (136 unique)
LEFT BLANK: 19 / SUBSTITUTED: 4
Authors:
  1. Robin Hobb (58 times)
  2. Claire North (34)
  3. (tie) Ilona Andrews & James S. A. Corey (13)
TOTAL: 288 total (70 unique)
GENDER: 184 by women (63.9%) / 102 by men (35.4%) / 2 unknown
Note: Raise your hand if you were surprised by this AT ALL, and I still wouldn't believe you.
20. Subgenre: Space Opera
Books:
  1. The Long Way to a Small, Angry Planet by Becky Chambers (20 times)
  2. Space Opera by Catherynne M. Valente (19)
  3. Leviathan Wakes by James S. A. Corey (9)
  4. (tie) Ancillary Justice by Ann Leckie & Record of a Spaceborn Few by Becky Chambers (7)
TOTAL: 258 books (118 unique)
LEFT BLANK: 21 / SUBSTITUTED: 3
Authors:
  1. Becky Chambers (27 times)
  2. Catherynne M. Valente (19)
  3. James S. A. Corey (17)
  4. John Scalzi (13)
TOTAL: 278 authors (85 unique)
GENDER: 154 by men (55.4%) / 118 by women (42.4%) / 6 by nonbinary (2.2%)
Note: I'm disappointed in you all for not getting the actual book called Space Opera to the top.
21. Stand Alone Fantasy Novel
Books:
  1. The Goblin Emperor by Katherine Addison (9 times)
  2. The Night Circus (8)
  3. Uprooted (7)
  4. (tie) Balam, Spring by Travis M. Riddle; Spinning Silver by Naomi Novik; & Tigana by Guy Gavriel Kay (6)
TOTAL: 268 books (171 unique)
LEFT BLANK: 13 / SUBSTITUTED: 1
Authors:
  1. Naomi Novik (13)
  2. Guy Gavriel Kay (12)
  3. Neil Gaiman (11)
  4. Katherine Addison (9)
TOTAL: 278 books (151 unique)
GENDER: 146 by men (52.5%) / 132 by women (47.5%)
Note: It's interesting to see Riddle's book make it so high here compared to the general popularity/recommendations of the others mentioned here.
22. Novel by a RRAWR Author OR Keeping Up With the Classics
Books:
  1. Senlin Ascends by Josiah Bancroft (20 times) [RRAWR]
  2. Alanna: The First Adventure by Tamora Pierce (18) [Classics]
  3. The Princess Bride by William Goldman (17) [Classics]
TOTAL: 246 books (47 unique)
LEFT BLANK: 24 / SUBSTITUTED: 12
Authors:
  1. Josiah Bancroft (23 times)
  2. Tamora Pierce (18)
  3. William Goldman (17)
TOTAL: 250 authors (43 unique)
GENDER: 176 by men (70.4%) / 74 by women (29.6%)
Note: I'm pleasantly surprised that the divide between the two clubs here is almost even: 125 books (25 unique) for RRAWR / 121 books (22 unique) for Classics. This was always going to be a tough square because of the limited number of books (only 24 in the end for Classics, and only about 24 authors for RRAWR [now RAB]).
23. Novel from the fantasy LGBTQ+ Database
Books:
  1. (tie) On the Shoulders of Titans by Andrew Rowe & Sorcerous Rivalry by Kayleigh Nicol (10 times)
  2. The Gentleman's Guide to Vice and Virtue by Mackenzi Lee (9)
  3. Sufficiently Advanced Magic by Andrew Rowe (8)
TOTAL: 270 books (143 unique)
LEFT BLANK: 12 / SUBSTITUTED: 0
Authors:
  1. Andrew Rowe (18)
  2. (tie) Kayleigh Nicol & Nicholas Eames (11)
  3. (tie) Mackenzi Lee & Mark Lawrence (10)
TOTAL: 281 authors (130 unique)
GENDER: 158 by women (56.2%) / 112 by men (39.9%) / 11 by nonbinary (3.9%)
Note: I'm glad to see that people took the challenge!
24. Format: Graphic Novel (at least 1 vol.) OR Audiobook
Graphic Novels:
  1. Monstress by Marjorie Liu (19 times)
  2. Saga by Brian K. Vaughan (9)
  3. (tie) White Sand by Brandon Sanderson & Rik Hoskin & Nimona by Noelle Stevenson (7)
TOTAL: 171 graphic novels (109 unique)
LEFT BLANK: 20 / SUBSTITUTED: 6 [shared with Audiobooks]
Authors:
  1. Marjorie Liu (19 times)
  2. Brian K. Vaughan (12)
  3. Noelle Stevenson (9)
TOTAL: 200 authors (111 unique)
GENDER: 138 by men (69%) / 62 by women (31%)
Note: I actually tried to convince lrich1024 to make the hard mode this year both Saga AND Monstress, so I'm not surprised Monstress had a good showing here!
Audiobooks: All tied at 2 each:
  • Midnight Riot/Rivers of London by Ben Aaronovitch
  • Red Rising by Pierce Brown
  • Ship of Magic by Robin Hobb
  • Storm Front by Jim Butcher
Authors: All tied at 3 each
  • Ben Aaronovitch
  • Brandon Sanderson
  • Jim Butcher
  • Robin Hobb
TOTAL: 88 authors (76 unique)
GENDER: 62 by men / 26 by women
LEFT BLANK: 20 / SUBSTITUTED: 6 [shared with Graphic Novels]
Another crazy square in which no one really dominates because of the lack of restrictions otherwise.
25. Novel Featuring the Fae
Books:
  1. The Cruel Prince by Holly Black (11 times)
  2. Fae: The Wild Hunt by Graham Austin-King (9)
  3. (tie) Rosemary and Rue by Seanan McGuire & Stardust by Neil Gaiman (8)
TOTAL: 262 books (142 unique)
LEFT BLANK: 16 / SUBSTITUTED: 4
Authors:
  1. Sarah J. Maas (25)
  2. Holly Black (21)
  3. (tie) Jim Butcher & Seanan McGuire (15)
TOTAL: 263 authors (101 unique)
GENDER: 158 by women (60%) / 105 by men (40%)
Substitutions
Out of 282 cards, 102 used the Substitution rule.
Books: No books were used as substitutes more than once except for the following 4 books: Into the Drowning Deep by Mira Grant; Just One Damned Thing After Another by Jodi Taylor; The Blade Itself by Joe Abercrombie; & The Fifth Season by N. K. Jemisin.
Squares: 36 squares from past Bingos were used as substitutes with the most popular being:
  1. (tie) Dystopian / Post-Apocalyptic / Apocalyptic / Dying Earth (from 2017) & Sequel: Not the First Book in the Series (from 2017) (8 times)
  2. (tie) Non-fiction Fantasy Related Book (from 2017) & Science Fantasy OR Sci-Fi (from 2016) (7)
Just One Damned Thing After Another was the only one used for the Time Travel substitute, which happened twice.
Of the 102 substituted books, 54 were by women (52.9%)
Note: Someone apparently would rather read a 1000+-page book by Brandon Sanderson (Oathbringer) than read Five Short Stories. I can't stop laughing at this.
Also, another bingo participant decided to replace the Hopeful Spec-Fic square with Dystopian / Post-Apocalyptic / Apocalyptic / Dying Earth. Who hurt you?

PART II: The People You Know and Love

In addition to the popularity charts above, I also ran through each individual card to figure out a few things:
  1. How much of your card did you submit (a full 25, or less than that?)
  2. How many squares had women/non-binary people in them?
  3. What was the unique title count? As in, how much of what you read was unique to your card?
  4. How many people have done the Bingo more than once?
  5. NEW: How did Hard Mode go this year?
Card Completion
282 cards were submitted by 264 people. Of the multiple-card submitters, 16 turned in 2 cards and two turned in 3 (among the secondary cards, 3 were incomplete).
47 out of 282 cards (16.7%) did not fill out all 25 squares. Each submitted card had at least 5 squares filled. In 2017, 44 out 243 cards (18%) weren't fully filled out.
One person had cards with only 24 squares submitted. Ouch! Better luck next year. :)
Gender in Cards
I counted a card as having a woman/non-binary person on it if at least one woman/non-binary person was involved. So if you read an anthology that had at least one story by a woman, it counts. If you submitted 5 short stories and one was by a woman, it counts.
6 out of 282 cards (2%) had zero men on them (with one incomplete card having all 18 squares by women/nonbinary). 16 other cards had at least 20 women.
There was an average of 11.4 women/nonbinary across all cards. The average raises to 12.2 for complete cards. This differs only slightly from 2016's 12.3 average for complete cards.
Two cards had zero women/nonbinary on them (both were 5-square-only cards). Among the 235 completed cards, two of them had only 1 woman/nonbinary on them
Unique Title Count
I specifically did not count short stories submitted, but did count anthologies and collections. (There were 300 short stories submitted and they had a very high unique rate overall).
For 2018, the average number of unique titles per card was 5.2. Three cards had 0 unique titles (everything they read was read by someone else). 8 cards had at least 12 unique titles, with only one person at 15 unique titles. As more people join Bingo, it becomes harder to get those unique titles.
(For 2017, the average number of unique titles per card was 5.3. Ten cards had 0 unique titles. 17 cards had at least 12 unique titles, with only one person at 17 unique titles. In 2016, the average unique count was 6.8, and no cards had 0. 11 cards had at least 12, with one person at 15. In 2015, the average unique count 8.0, and no cards had 0. 18 cards had at least 12, with one person at 18.)
Repeat Bingo Readers
From the survey we included int he Google Form, 31 of the 264 of you (11.7%) have done Bingo each year since 2015. Well done you!
Amazingly 113 say this is your first time doing Bingo--that's 42.8%! Wow.
NEW: Hard Mode
30 out of 282 cards were 100% hard mode cards. Another 7 just missed it by one square. 9 people didn’t bother with hard mode at all, including 6 complete cards. Average hard mode count was 11 squares, 12.3 for complete cards.
EDIT: Thanks to mantrasong for the calculating the following:
Fewest Hard Mode entries:
  1. Novel by a RRAWR Author OR Keeping Up With the Classics (61/246 - 24.8%)
  2. Any fantasy Goodreads Group Book of the Month (69/262 - 26.34%)
  3. Novel Published Before You Were Born (73/255 - 28.63%)
  4. Novel from the fantasy LGBTQ+ Database (78/270 - 28.63%)
  5. Novel Featuring a Non-Western Setting (78/265 - 29.85%)
Most Hard Mode Entries:
  1. Novel Featuring a Library (167/260 - 64.23%)
  2. Format: Graphic Novel (at least 1 vol.) OR Audiobook (174/256 - 67.97%)
  3. Stand Alone Fantasy Novel (176/268 - 65.67%)
  4. Five Short Stories (193/253 - 76.28%)
  5. Hopeful Spec-Fic (195/260 - 75%)

PART III: Measuring Variety

Something I've been interested in for the last couple years is trying to figure out how to meaningfully measure the overall variety of selections per square. For example, in the 2015 bingo, in the Comic Fantasy square, Terry Pratchett was read for 42 of the 88 cards. The next most popular author had only 5 reads. That's quite lopsided!!!
In the end, I decided to try to use the Gini index. The Gini coefficient is used by economists to measure income inequality, where 0 = everyone has the same income to 1 (or 100 in my case) = the income is concentrated in one individual.
In our case, instead of income, I'm using the number of books read and authors read. If, for example, 25 different books are each read once, its "FarraGini" index would be 0 (all books were read equally). If 24 books were read once and the 25th book was read 51 times, its FarraGini index would be 64. So the more widely spread a category is read, the lower its index number.
I've created a table below of all the categories (splitting short stories into individual Stories & Collections, and Graphic Novel and Audio) and their FarraGini indices per book and author.
You'll notice that the FarraGini index for Goodreads Group Book of the Month has the highest single number for book as All Systems Red dominated its category, but also that Pseudonym has the highest FarraGini index for author, since Robin Hobb accounts for 20% of all books in that category.
CATEGORY BOOK AUTHOR
01. Novel that was Reviewed on Fantasy 19.7 30.7
02. Novel Featuring a Non-Western Setting 41.8 49.4
03SS. Five Short Stories (Short Stories) 11.5 35.3
03CA. Five Short Stories (Collections/Anthologies) 34.1 40.4
04. Novel Adapted by Stage, Screen, or Game 40.3 47.6
05. Hopeful Spec-Fic 36.6 49.7
06. Fantasy Novel that Takes Place Entirely Within One City 41.6 47.0
07. Self Published Novel 27.4 38.5
08. Novel Published Before You Were Born 24.4 39.4
09. Any fantasy Goodreads Group Book of the Month 56.9 56.4
10. Novel Featuring a Library 51.1 55.6
11. Subgenre: Historical Fantasy OR Alternate History 35.6 44.1
12. Novel Published in 2018 44.1 43.9
13. Novel Featuring a Protagonist Who is a Writer, Artist or Musician (NOT: Kingkiller Chronicles) 39.6 47.7
14. Novel Featuring a Mountain Setting 44.0 49.5
15. 2017 fantasy Top Novels List 39.1 45.1
16. Novel with Fewer than 2500 Goodreads Ratings 13.8 18.5
17. Novel with a One Word Title 27.0 37.9
18. Novel Featuring a God as a Character 44.7 52.9
19. Novel by an Author Writing Under a Pseudonym 41.5 62.7
20. Subgenre: Space Opera 43.5 55.0
21. Stand Alone Fantasy Novel 31.2 39.3
22. Novel by a RRAWR Author OR Keeping Up With the Classics 47.1 47.2
23. Novel from the fantasy LGBTQ+ Database 38.9 43.7
24G. Format: Graphic Novel 33.1 38.9
24A. Format: Audiobook 4.5 12.4
25. Novel Featuring the Fae 37.2 50.8
Overall 52.4 66.7
As you can see above, the numbers paint a picture that we've seen in the individual square sections above--the FarraGini indices for Reviewed and <2500 Goodreads ratings are pretty low because of the variety (with Audiobooks at an insane number), where Goodreads Book of the Month and Pseudonym indicate that a book or author is really weighting numbers towards it.
submitted by FarragutCircle to Fantasy [link] [comments]

Option Robot Review - My Honest Scam Review Of OptionRobot ... FREE DOWNLOAD Robot Trading for Rise Fall Binary Option Trading System - RF V50 Slow Option Robot Review 90% ITM! Option Robot Binary Option Auto Trading Robot Review 2016 best Binary Option Robot 100% Automated Trading Software ... BINARY OPTION ROBOT 2016 - YouTube BINARY OPTION ROBOT How I earn $300 daily?!!! Binary Options Trading System 2016 – Best Automated Trading Software 2016 Binary Options System 99% PROFIT - FREE BOT - DOUBLE ZIGZAG - binary options robot BINARY OPTION ROBOT 2016 - YouTube

There are a lot of binary option robots out there but not all of them live up to their billing. Therefore, if you are intent on finding the best binary options trading robot, then BinaryRobot365 is a nice place to start. BinaryRobot365 is a binary option trading robot developed in 2016 by a team of Continue reading HOW TO PICK A GENUINE FOREX TRADING ROBOT. binaryoptionsrobotblog February 2, 2016 February 13, 2016 11 Comments. Basics. REASONS WHY YOUR FOREX AUTO TRADING SYSTEM IS NOT YIELDING PROFITS. You have probably invested in the most expensive Forex currency auto trading robot in town, but you cannot see any fruits in that. A high-quality auto trading robot should give you a ... It is important to emphasize that signals have to be created and delivered in real time in order to be useful for Binary Options Robot to use it in the trading process. Latest traders on Binary Options Robot. Traders; Profit; Mason. $50; Sophia. $80; Rob. $180; Rob. $170; Charles. $60; Abdul. $120; Isabella. $70; Tina. $130; Abdul. $200; Eric . $210; Open Free Account. Investors can lose all ... Binary Options Robot, as one of the most innovative binary options software on the market, has a plentiful of features that traders can simply use to customize their trading settings. Binary Options Robot features or setting are something that all traders can use not only to potentially increase their profit rates but also to understand… Read more. By Srdan Sore - December 23, 2016 2:59 am ... Binary Options Robot is using the next generation web-based technology that uses API connection and connects brokers with Robot backend. API technology represents the finest and most accurate technology that enables fast information performance. In binary options, everything is about time, and to be successful in binary trading, the system must provide the fast possible software. Traders can ... *June 2016 update: Binary Options Robot is not available for US customers anymore. If you are US citizen, we recommend you trading with US regulated broker, like Nadex. We know that many of our traders are coming from United States, so we would like to dedicate this article to US traders. Binary Options in US have different legal landscape so it is maybe sometimes a bit confusing to traders ... Binary Option Robot Settings Greg Boudonck 02/03/2016, 4:08 PM There are many automatic binary options trading systems available, but not all are created equal.

[index] [25842] [1558] [28852] [15565] [15549] [4168] [11219] [13703] [8248] [16596]

Option Robot Review - My Honest Scam Review Of OptionRobot ...

https://binarysignalspro.com Binary Options Trading System 2016 – Best Automated Trading Software 2016 Binary Options System binary options trading system bi... The Best Binary Option Robot 2016 easy money ----- http://goo.gl/dt9FpU----- Make sure you have watched the video "BINARY OPTION ROBOT" to the very end because we tried our best =) Ask your questions below the video, we appreciate any of your opinion about real binary options Binary Robot 2016 take youre money -----http://goo.gl/dt9FpU----- best Binary Option Robot 100% Automated Trading Software : http://tinyurl.com/go2AutoBinarySignals1 ---- best Binary Option Robot 100% Automated Trading Soft... Published on Aug 26, 2016. FREE DOWNLOAD Robot Trading for Rise Fall Binary Option Trading System. Hello all binary traders!!! Introducing the new script "RF V50 Slow". This script is specially ... Option Robot Review - http://www.adamsmarketingsecrets.com/free-access/ Grab your tested and proven software now! Hey there it's Adam Dozier here, I hope you... Option Robot works with these Binary Option Robot Brokers banc de binary, Goptions, stock pair, cherry trade What is OptionRobot.com Binary Option Robot Free Auto Trading Software DOWNLOAD FREE http://bit.ly/2CSd0C0orCONECT WITH ME TO GET IT https://goo.gl/7tRX2nBINARY BOT FREE DOWNLOADbinary robot downloadbinary robot freebinary robot ...

https://binary-optiontrade.nealycawonju.tk