Project Metal Entrails

Hey! I’ve been bumming around on this project for a few months and dropping updates in the godot discord. It’s survived the 2 month test, so I think it’s time to get a dev log up and running and share my progress as I go.

The Game
Metal Entrails(working title) is a sci-fi pinball metroidvania geared towards people who want to learn more about some of the more advanced pinball techniques in an approachable and gamified way.

You play as an ‘Interfacer’, a lil creature genetically engineered to extract valuable genetic material from the refinery complex where the game takes place. Your interfacer is spawned into a collapsing facility, and the overseeing AI tells you to make your way to a transit station by telepathically manipulating the various pieces of industrial machinery around the complex (flimsy flipper justification lmao) so you can be moved to a healthy facility.

Aesthetically, I’m really inspired by super pulpy sci-fi horror from the 80’s and 90’s, stuff like Alien(obviously), Event Horizon, and Heavy Metal magazine. I’m planning on dedicated a big part of my development bandwidth to visual fidelity and really show off how capable Godot is for high-quality 3D stuff (spoilers, it’s really capable!)

Currently working on:
Right now I’m smack dab in the middle of a big design and lore push. Doing stuff like writing the over-arcing narrative, figuring out the flow of the gameplay from start to finish, finding various holes and blind spots. Lots of cool stuff cooking for sure, and I’ll share as soon as it starts to get a little more fleshed out, but right now it’s all a big pile of disconnected spaghetti.

20 Likes

Wow, that looks super cool! <3

1 Like

Here’s a lil WIP shot of the player interfacer:

Godot_v4.2-stable_win64_KDAqOYnw46

Theres a part of me that wants to go really crazy on this lil guy and have them mutate visually over time as abilities get unlocked but it may be crazy OOS. Either way, I quite have all the planned abilities locked down to a point where I’d want to make a commitment like that, but it’s definitely a fun idea

2 Likes

OH NO WAY i’m star struck, I was just poring over your article about the doom 3 volumetric glow yesterday :o

thanks for popping in and saying hi!

1 Like

Haha :smiley: Oh yes, this doom3 tech is still mind blowing to me!

1 Like

This is a little visualization of how my flipper collision works;

GIF 2023-09-19 12-53-10 PM

I figured between the ball flying around and the flipper flipping away, CCD probably wouldn’t be totally up to the task of keeping everything where it needed to be. What I’ve got now is a big circular area3D around my flippers that starts tracking ball entities on enter, and if they recieve a flip input, they grab the position of any balls being tracked and runs some math to figure out the contact position and hit normal, along with some magic (read: faking) to simulate the ball rolling a little bit from centrifugal force on contact before it’s launched. There’s also some scaling to the launch force based on the derived amount of time the ball would be in contact with the flipper and the distance the flipper would have travelled, which lets us do stuff like live catching right out the gate.

All in all it works pretty well! there’s a couple things I’ll probably need to revisit (backhand shots and drop catching don’t work yet) but for now its exactly fine.

1 Like

Image got me expecting some scifi horror game, then to read “Pinball Metroidvania” got me as stunned as seeing a facehugger

How do you do merge Pinball with Metroidvania? I am curious on that, and certainly others too, it sounds like an un-thought-before genre mix

Peggle is a thing, so I think this game can work out

1 Like

I had to think the intersection of pinball and metroidvania through a bit but they slot into eachother weirdly really well;

Basically where i’ve landed is to treat tables similarly to combat rooms in wave shooters, so there’s an assumption players will spend a decent chunk of time in each of them. They’re connected via little transitionary areas that are -kind of- tables but without scoring or anything, they just serve as a way to connect the world together. Accessing the transitions and navigating the world was the easiest part, if you’re familiar with traditional pinball, they’ve got the modes that you can activate by hitting certain things in a certain order or a certain amount of time and they trigger a rule change and potentially a state change. What I’ve done is locked my transitions behind modes.

So if I’m playing on table A, and I need to get to Table B, I might have to for example hit a ramp X number of times for the gate to the A>B transition to open up. Its rad! it kind of just works in practice.

I’ve also got save rooms littered about a-la super metroid which serve as checkpoints and (potentially) fast travel stations.

Here’s a quick lil demo about how moving between tables works:

9 Likes

Squish tech get!

GIF 2023-11-30 3-22-06 PM

I wrote this effect along with an elastic follow for the sluggo, so he kind of has a rubber band effect while following the balls position. Although i really like how it turned out, I may end up cutting it cause its unfortunately not super readable in situ, but we shall see. It might be worth keeping just to ensure the slug stays in the ball as its bouncing around.

Edit: i forgot to talk about how i actually did the thing

So what I’m doing here is I have a vertex displacement shader that grabs a vertex’s world position and subtracts the position of a reference point (the balls center) and then divides the results length by the ball’s radius. I’m using this value as kind of a mask and just displacing verts along their normals according to this value and then clamping their position to make sure verts are always inside the ball radius, then lightening the color of any verts that are getting clamped. Not the most complicated thing in the world but pretty effective! It wouldn’t stand up to up-close scrutiny but I figured the ball is usually going to be quite small on screen so it was fine.

8 Likes

Super cool effect. Also, nice that the color is changed. Gives the impression like when pressing a button super hard and the blood is pushed out of the finger and turns it white.

2 Likes

Looking really nice! I know pinball fans who will happily play this one.

2 Likes

Looks like it can work, that video convinced me that the idea is solid. Especially since powerups can be movement powerups to reach impossible spots (sequence breaking earlygame if pro?)

Though I want to emphasize something from that video, and that is the traversal between the tables. It is one of the most frequent problems in Metroidvanias, that the world gets so large that a player cannot navigate from where he is to somewhere he desires, because every room is generally the same. The Metroidvania which suffers greatest from this is Hollow Knight, where each room looks pretty much the same (a biome has the exact same aesthetics, same enemies, same traps) and you get lost and frustrated, wishing for a fast travel or opening an online guide.

The easy path to this is adding a world map, which is imo cheating and cheapens the experience. There are only 2 Metroidvanias which pulled it off without a world map, and that is Salt&Sanctuary (don’t play the sequel, it’s horrible), and Dark Souls 1 (3D Metroidvania)
There are 2 main reasons for the above:

  1. Every “room” is iconic, and sticks out. It cannot be confused for another room.
  2. There are many world connections so there are more than 1 paths to a location

Honestly, it depends on your game, because I cannot imagine some games without a map. For example, System Shock 2 works so good with a map.

I guess the “should I have a map” depends on how many rooms your game has (massive worlds like Super Metroid/Castlevania), how many times they are traversed (one-time rooms which you never return to progress often lead to a map system), and if they contrast each other. In the above (excellent) video, even though I saw only 3 tables, I can assume they won’t contrast each other, they will all feel urban/scifi.
3D transitions (falling inside the center gap) while an excellent tool to expand the world, makes me feel like mapping the in-game world map in my mind will be impossible and I would open an online guide.

Random suggestion for center gaps: Perhaps use the center gap as an “transition to other table world” or “transition to save point”, so the player recognizes them from afar (kinda like Dark Souls when you see a bonfire from far away, or you see a fog gate)

Boring text aside, my only suggestion is to have no fadein/fadeout transitions for the levels, or at least minimize it. 2 seconds to traverse a room is unacceptable in a Metroidvania. I suggest on loading the current table/level, with background threads load all levels accessible by that table. So when you load the next level, it will not take over 0.5 seconds, since it’s already loaded in memory.

Also personal opinion and I suck at pinballs, but aren’t arcade pinballs flashy and colourful (ding ding ding! color comes to mind) because they are more enjoyable? Why are the aesthetics in this so moody/bland? Like, is the setting/story worth this aesthetic choice?

Also random feedback inspiration: It would be cool to have Decals on the collision point of where the ball hits. Visual feedback ftw, and you could perhaps even use it later as some powerup to teleport to the latest-hit decal

No spoilies but a lot of what you brought up is stuff I’m cooking on :wink: tons of exciting stuff planned.

One thing you brought up that I can touch on though is the point you made about the flashiness of pinball;

So the choice to down play that was 100% intentional. You’re absolutely right that the flashing lights and spectacle of arcade pinball are a huge draw, but I also feel like they really get in the way of the average user engaging with pinball for more than a few fleeting moments. The two big things I’ve taken away from chatting with non-pinball people about pinball are that they have a really hard time knowing what they’re supposed to do and that their agency over what happens on the table is really low. This game is pretty much for people like this specifically, so bringing the signal to noise ratio way way up is super necessary.

Basically above everything I want to empower people who are interested but not -into- pinball yet to get into the game as a game rather than a spectacle

1 Like

Nothing super crazy to report yet this week, I’m currently doing some art for the save room. However!!! One of my art production tenets is to abuse trim sheets as much as humanly possible, and I grabbed an add-on for blender called Zen UV and it’s insane how much it facilitates trim texturing, I think it’s going to be a huge time-saver

Wow!
Just saw this thread and decided to read it.

This is one of the best things I’ve seen done in Godot.

Props to you!

1 Like

oh wow thank you! That’s awesome to hear cause one of my big goals for this project is to evangelize Godot and open source in general a bit :joy:

ngl, this looks amazing. It is definitely inspiring to see people like you create such amazing projects that I did not even know was possible, especially with Godot! Great work!

1 Like

This is the most over-thought concept for a pinball game, and I’m all for it. It looks really cool so far.

1 Like

More or less finished up the geometry for the save room, this ended up taking a lot longer than I wanted it to but since it’s gonna be a heavily-recurring room I figured it would be worth the time investment. A -significant- chunk of the time went towards things I can reuse or remix elsewhere as well so that’s always a win.

Theres still a decent chunk of work left to do, the animations in this section are -relatively- involved, but I’m behind schedule so I may just make some placeholders and put this to the side for a little bit so I can catch up with some of the non-art tasks I have on my list for this chunk.

2 Likes

I got ball rewind (one of the unlockable abilities) up and running today, the implementation is SUPER jank so I’m definitely gonna have to polish it up later, but its in! and it’s (mostly) working!

Edit: also managed to sneak slow mo in today, I’m blasting through my weeklies lfg

1 Like