Short Description
Primarily, this project is a test environment for my outline shader, which I created with the help of a tutorial. This was my first attempt at creating my own shaders. The vehicle prototype came about spontaneously.
Background
Creating my own shader was still on my to-do list for 2025. The standard Unreal Engine look bothered me after so many projects. I liked the outline shader I created so much that I wanted to do some world building to see whether the shader was truly ready to use or still had issues. I also wanted to test my animation skills with the cannon on the car: the goal was to animate a cannon that "extends" from the car and rotates sensibly toward the mouse cursor. That worked pretty smoothly. Around that time, I also tested Substance Painter. I liked the result in Substance Painter so much that I absolutely wanted to create a fully animated enemy for this prototype.
Gameplay (Idea - not yet implemented)
- The player starts in the neighborhood (base). There are tasks to complete for the residents. With resources, the player can upgrade buildings and unlock new upgrades for the car.
- Once the player is ready, they leave the city (in the car) and explore the surroundings (the "exploration phase" begins). The car's fuel supply limits how far the player can travel, and the player must also make it back to the neighborhood with that fuel supply.
- In the exploration phase, the player encounters enemies that can be defeated with weapons to obtain resources. Depending on the car's equipment, certain things in the game world can also be interacted with (example: the player picks up the "fire extinguisher attachment" -> during the exploration phase, they may encounter a burning car with an NPC; if they extinguish the car, the NPC appears in the neighborhood and new upgrades are unlocked).
- Important: This is only the rough plan/idea for this project. Currently implemented: getting in and out of the car; cannon + shooting mechanic (no damage logic yet); one enemy with animations (animations: patrolling, spotting the player, running to the player, (once at the player) jumping toward the player, attacking the player) and the enemy's attack/jump logic
Technical Details
- Engine: Unreal Engine (Blueprints / Visual Scripting)
- 3D models: Blender + Substance Painter
- Source control: GitHub.
- Solo project
- Status: Prototype, unpublished.
Challenge → Solution
- Challenge: Rotating the cannon toward the mouse cursor position ("LookAt node" made the cannon look strange)
- → Solution: Limit the cannon's rotation: restrict the rotation of the lower plate the cannon is mounted on to the Z-axis only. The cannon itself was restricted to the Z and Y axes, allowing it to move vertically and horizontally with the mouse cursor without clipping through the cannon mount.
- Challenge: The outline shader sometimes created very large black areas (where the viewing angle to the objects became too narrow) and flickered in some places.
- → Solution: I made many changes to the outline shader variables and added additional variables that reduced both the flickering and the large black areas. A few spots still flicker, so I still need further solutions.
Learnings
- Substance Painter is very helpful for quickly creating nicer textures.
- Understood the basics of shaders.
Art
This asset was mainly used to test Substance Painter. I liked the textures so much that I wanted to see this enemy concept developed further, which is why I created the animations and integrated this enemy, along with its animations, into the vehicle prototype.
- Bomber Enemy (Vehicle Prototype) -
View: Front
View: Side
View: Top
- Bomber Enemy: Animations -
Animation: Patrolling
Animation: Spotting the Player
Animation: Running to the Player
Animation: Jumping at the Player