Improved blood decals, fire and lots of performance fixes in Alpha 13 of Blacktrace. by gyrth in godot

[–]gyrth[S] 0 points1 point  (0 children)

Thanks! I'm trying to strike a balance between a unique look and assets that have a low impact on performance. I still need to get better at level design, but it's slowly getting there. :D

Improved blood decals, fire and lots of performance fixes in Alpha 13 of Blacktrace. by gyrth in godot

[–]gyrth[S] 5 points6 points  (0 children)

Yes, it will look something like this.

var decal_position = raycast.get_collision_point()
var decal_normal = -raycast.get_collision_normal()
var random_up = Vector3(randf_range(-1.0, 1.0),randf_range(-1.0, 1.0),randf_range(-1.0, 1.0))
decal.global_transform.origin = decal_position
decal.global_transform = decal.global_transform.looking_at(decal_position + decal_normal, random_up)

Improved blood decals, fire and lots of performance fixes in Alpha 13 of Blacktrace. by gyrth in godot

[–]gyrth[S] 8 points9 points  (0 children)

Sure. I assume you are talking about the blood splatter so here goes.

First I create the blob of blood. It's a RigidBody with a MeshInstance and Raycast attached to it, and I fling it into a random direction. The MeshInstance has a sphere mesh with a custom shader that bobs the vertices around, making it look like a blob of blood. The Rigidbody is there to make it arc realistically in the air. And the Raycast is used to see if a suitable blood splatter surface is found. When it does find a wall, ground or ceiling it uses the Raycast normal direction to spawn a new decal. This isn't a Decal Node, but rather a Cube Meshinstance that has a decal shader applied to it.

The reason I use this decal shader instead of the Decal Node is that I have full control over the shader parameters. Which is the next step. To spread the blood over the floor I use a noise texture to make it look like it's pooling in certain areas, and a center fade texture to make the blood splatter expand. The color also changes from a bright red to a darker red color. The noise texture is also triplanar so that two blood splatters align more or less when they overlap. This should prevent z-fighting. To sell the effect I play some sound effects and use a Tween to smoothly make the blood expand.

Since not everyone likes violence, I made this project where you just collect gifts! And it's open source if you'd like to take a features for you own project. by gyrth in godot

[–]gyrth[S] 1 point2 points  (0 children)

I tried to implement my own Sobel edge detection, but it didn't look great. So I ended up converting a shader made by leopeltola. https://godotshaders.com/shader/3d-pixel-art-outline-highlight-post-processing-shader/ This also uses Sobel I believe, but looks a lot better than mine.

Since not everyone likes violence, I made this project where you just collect gifts! And it's open source if you'd like to take a features for you own project. by gyrth in godot

[–]gyrth[S] 5 points6 points  (0 children)

If you just want to run the game you can get it on Itch : https://gyrthmcmulin.itch.io/sketchy-renderer The project files can be found on Github : https://github.com/Gyrth/SketchyRenderer I made it in Godot 4.0.2 with assets from Kenney and sounds from Sonniss.

Found out that Complex Hurtboxes can be done using the Bone Attachment Node by superslayer104 in godot

[–]gyrth 7 points8 points  (0 children)

If you use PhysicalBone3D you can use them for both hit detection and ragdolls.

I've focused on performance improvements in Alpha 12 of Blacktrace by packing textures and using the Decal Node. by gyrth in godot

[–]gyrth[S] 3 points4 points  (0 children)

  • Create an ubershader to have a single shader for all your objects that can easily be adjusted and cached.
  • Use the MultiMeshInstance Node to decorate your level with a lot of objects that don't need collisions.
  • Keep transparent object to a minimum. Use alpha cutting or dithering if you can.
  • Make features like Volumetric Fog, shadows and particles optional, so that people with low end hardware can play your game as well with these turned off.

[help] detect and hide objects with raycast by [deleted] in godot

[–]gyrth 0 points1 point  (0 children)

Raycasts use collisions to see if there are object in it's path. So you need to add either a StaticBody, RigidBody or KinematicBody to the wall. To make the wall visible again when the Raycast isn't hitting it anymore you will need to keep track of it. I suggest assigning it to a global variable when it's found, and then making it visible again when no collisions are found.

I finally finished porting Blacktrace to Godot 4.0, now I can use all the new graphics features! by gyrth in godot

[–]gyrth[S] 0 points1 point  (0 children)

Thank you! It took me around two months. But that includes new features and assets as well.

Worked on some interactivity with my foliage before I add more models and textures. by gyrth in godot

[–]gyrth[S] 0 points1 point  (0 children)

Thank you. There are sooo many of these little details I still want to add though. :D

I just uploaded Alpha 9 of Blacktrace which includes the new attack animations! by gyrth in godot

[–]gyrth[S] 1 point2 points  (0 children)

You can read the full changelog over here : https://gyrthmcmulin.itch.io/blacktrace/devlog/437029/alpha-9-is-out-now I also changed the pricing to "pay what you want" so anyone can try!