Game developer

PORTFOLIO

I’m Pedro

Find me on GitHub (opens in a new tab)

Graduated in Computer Science, I'm Pedro, a Generalist Game Developer with 5+ years of experience creating gameplay mechanics and optimized pipelines across Unity, Unreal Engine, and Godot.

Proficient in C#, C++, GDScript, and Python, with a strong focus on clean architecture, GPU profiling, shader development, and multi-platform development.

Pedro CoelhoGAME DEVELOPER

Built to be played.

A selection of worlds, mechanics, and the code behind them.

7 projects

Under the hood.

Gameplay that feels right

Responsive character controllers, combat, and mechanics that make every interaction count.

GAMEPLAY · INPUT · PHYSICS

Systems built to grow

State machines, enemy AI, and save systems built with clear, maintainable C# architecture.

C# · DESIGN PATTERNS · AI

The details that bring life

Smooth scene transitions, camera work, and visual feedback that connect code to the player experience.

CINEMACHINE · TWEENING · UI

Let’s make
something playable.

Looking for a gameplay programmer or a creative collaborator?
I’d love to hear about your next project.

Project details

Afonse

  • Unity
  • C#
  • State machines

Overview

A post-apocalyptic adventure built around responsive movement, reactive enemies, and a challenging first boss.

My contribution

I built the state-machine system that manages the player, enemies, and boss, keeping movement, jumps, and attacks organized.

Gameplay focus

The player responds directly to input, while enemies react to their surroundings. Boss attack patterns give players room to observe, learn, and adapt.

Character controller

A shared state machine lets the player move between walking, jumping, crouching, and gliding.

Modular architecture

PlayerBrain initializes the StateMachine. Each state owns its behavior: GlideState, for example, handles input and airborne physics.

State transitions

States change when their internal conditions are met. Global exceptions can also force a transition when the player needs to react immediately.

Boss behavior

The boss uses its own state machine to choose actions and react to the player.

Attack patterns

Each state represents an action. Once it finishes, the boss returns to its idle behavior or moves into the next attack.

Readable encounters

Consistent patterns make the fight learnable. Players can recognize the boss’s behavior and choose when to move or attack.

Enemy navigation

Spider enemies use raycasts to find their next move, creating unpredictable pressure around the player.

Environment checks

Raycasts scan for walls and possible landing points. The enemy then chooses whether to walk or jump toward the selected position.

A focused state machine

Three states — Idle, Move, and Jump — organize navigation and keep the behavior straightforward to maintain.