Artemos

Invested 1.3 – a Mistborn physics game

4 posts in this topic

It seems like it's a good week for Mistborn fangames. Hello again. It's been a while since my last post about this project of mine, but I've made a lot of progress and I'm finally ready to publish my updates.

For those who aren't familiar, I've been making a Mistborn game for fun over the past few years. It's not focused on the events of the books (the fact that the player is a little robot ball might give it away), but it does feature several of the same powers, including Iron, Steel, Pewter, and (Feruchemical) Zinc.

The main additions

  • New interludes that explain the powers and setting I eventually want to write a story in
  • New sandbox levels, including a completely reworked Luthadel
  • Challenges (time trials, target shooting…)
  • New control modes for pushing in an Area and in a Bubble
  • Sound and music
  • Surprise, surprise - big changes to the controls

tJoSGRP.png

I'm comfortable with how the physics work now - I haven't made any major changes since my last post. Here's a summary for how the forces in Pushes and Pulls are calculated:

Spoiler

The most general formula I have is this:

F = (A * S * q_1 * q_2 * d) + APB, where

  • F is the Allomantic force, which is the actual force exerted on the allomancer and target
  • A is the Allomantic force constant, which sits at 1750 by default and is just to make it "feel right" for most cases
  • S is the Allomancer's strength, which is usually 1, but may be higher in certain cases (e.g. flaring metals)
  • q_1 is the Allomantic charge of the Allomancer, which is just the 8th root of its mass
    • q_2 is the Allomantic charge of the target
    • The purpose of this is to make the force scale with the weight of the allomancer and target, but not linearly. A coin is 1000x lighter than an anvil, but the force shouldn't be 1000x weaker. Note that we're not talking about accelerations here.
  • d is the distance factor, which is depends on the mode*. It changes how distance affects the force.
  • APB is the anchored push boost, which depends on the mode**. It affects how the target's "anchored-ness" affects the force.

* There's 3 modes for the distance factor: linear, inverse square, and exponential with distance. I made some graphs a while back: https://www.desmos.com/calculator/sisedw0feo

  1. Linear means the force decreases linearly with distance up to some max range (100 by default). When the target's 0 meters away, the force is at its max. When the target is 100 meters away, the force is 0.
  2. Inverse square means the force decreases like real-world magnetic forces do. If the force is 1N at 1m away, then it'll equal 0.01N at 10m away and 0.0001N at 100m away. Similarly, it'll equal 100N at 0.1m away at 10000N at 0.01m away. (I think? I haven't messed with this one in a while but the math sounds right to me.)
  3. This is the default mode: Exponential with distance. When the target's 0 meters away, the force is at its max. Anything further away and the force falls off at an exponential rate.

** The APB is tricky but I think I talked about it enough in my older forum posts. Its purpose is to make anchored targets give stronger pushes.

  • Allomantic Normal Force (ANF): The normal force that walls, floors, etc. exert on targets when you Push on them is transferred to you with the ANF. This is analogous to holding a long pole and physically pushing on the target - you would feel that resistance. It gets messy because it kind of has to be different for the target and Allomancer.
  • This is the default mode: Exponential with velocity. While Pushing, take the relative velocity between you and the target. Here's another graph: https://www.desmos.com/calculator/lai09klneq, which is a function of the APB versus relative velocity.
    • If it's positive, the force should be weaker. It's like you have a weaker grasp on the object because it's moving with your push, like trying to push water in a direction it's already moving.
    • If it's negative, the force should be stronger. It's like you're pushing against a train moving towards you. It's slamming into you and you're slamming into it, so you should be able to get more oomf in your force.
    • There's no good physical reasoning for this mode, but what matters more is how it feels. If you're falling towards the ground and you want to slow your fall, you throw a coin down. At first, the force is weak because the coin isn't anchored and your relative velocity is positive. Once it hits the ground, it's anchored, and your relative velocity is negative. Your force is then suddenly stronger.

As before, the game is available for free on my GitHub.

I'm just about to start my final senior semester, but I was able to get a lot done over the winter break. I'm not sure how much time I'll be able to keep putting into this project going forward. There's not a lot of raw content in this update - it was a lot of creating systems to use as a baseline for the future. I've still got plenty I want to do, and I've still got plenty to learn.

kt2GwRM.png

Plans for the future

  • Optimization. I still have plenty to learn about optimizing unity games for different hardware. I've got very modern hardware, and at maximum settings and a 2560x1440p resolution, it drops to under 50fps in Luthadel due to a bunch of buildings with small parts. I need to clean those up and organize the LODs better. There's a lot of small things in Unity with material and shader management that can make an improvement, but it's hard to wrap my head around.
  • Story. The interludes set the backdrop, but there's more to what happened at the Metallic Arts Research Lab that I want to explore. I haven't written a lot of fanfic before, and this is a pretty unusual medium.
  • Accessibility and Controls. There's a lot of things that I could change to make the game more accessible, like options for UI scaling or toggling instead of holding buttons for certain actions. The gamepad controls are already kind of messy - I'm thinking about combining "Mark for Pulling" and "Mark for Pushing" into a single "Mark for Pushing/Pulling" option, which would open up a shoulder button/keyboard key for something else. It also would work better for an eventual combat system to have a single "Mark" command.
  • Workflow improvements - I've gotten good at struggling my way through modeling, texturing, and baking lighting for Unity environments, but it's always a pain. I'm hoping something will click and I'll find a way to make building locations easier. I generally prefer to make my own environments instead of using the Unity asset store for consistency reasons (if it's all ugly in the same way, it's not ugly - it's an aesthetic).
  • General polish. Better sound effects, more texture and model diversity, things like that.

h7fd9o7.png

Have fun, and let me know what you think!

11

Share this post


Link to post
Share on other sites

I've been waiting for this!

1

Share this post


Link to post
Share on other sites

This is awesome, I don’t know the difficulty, and this is probably more work that it would ever be worth, but a virtual reality Mistborn game is something I have been wanting for a long time.

0

Share this post


Link to post
Share on other sites
13 minutes ago, Chinkoln said:

This is awesome, I don’t know the difficulty, and this is probably more work that it would ever be worth, but a virtual reality Mistborn game is something I have been wanting for a long time.

Someone made a VRChat world with pushing and pulling - it's probably the closest we'll have for a while. https://ask.vrchat.com/t/featured-udon-worlds-row/783/12

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.