The 3Cs Framework: Character, Camera, Controls
A small dose of design: how the 3Cs shape every player’s experience. This is the meta-game of emotions
Hello my fellow gamedevs!
Think back to the last time you picked up a new game. Within seconds — before the story, before the music — you already knew if it felt good or not.
I recently started Expedition 33: Clair’s obscure (I would recommend this game to everyone) and at the beginning you can feel something is a little bit off at the Control of the character, I can’t exactly tell you what is it.
Three invisible pillars involved:
Character
Camera
Controls
AAA studios hire 3C designers whose entire job is to tune these three things. Ubisoft even lists “3C Operations” as a design specialty.
At GDC, Joel Nilsson (Massive Entertainment, Avatar) opened his talk by saying:
“I’m a gameplay programmer… specializing in 3Cs, that’s Camera, Character and Controls.”
If the big studios treat this as a full-time discipline, why wouldn’t we apply it to our own projects?
Remember Game feel isn’t magic. It’s a framework, it’s fundamentals, it’s about pillars properlly refined and established.
The 3C’s triangle is the foundation of game feel.
Character — Your Body in the Game
When it comes to character movement, there is a set of essential that you should consider:
Speed. Maximum speed that our character will reach
Acceleration. How fast we reach max speed (Movement Pace)
Gravity (Doesn’t apply at all the scenarios, but 80%)
Jump Force.
Playing with those values you can actually create a good game feel and make sure our character movement is smooth.
Learning by my experience: making a “fast” character applying movement not thinking much about the player feel… many times I’ve end-up having a interactive stone, yes that was the literally the movement feeling. 😁
Here it comes when the word playtesting start taking the lead, you are the designer, creator and it’s your child (yes it is…) your opinion may not be objective.
After finding the right values, just take your partner, friend or uncle send your last build (or the controller) no words from your side, just listen the fresh feedback.
Super Mario 64. nailed its jump arc so precisely that players still describe it as “perfect” decades later. The level design matters less than the way Mario’s body obeys your thumb.
Ask yourself: Does my character’s body match the theme? A mech shouldn’t move like a ninja, and a ninja shouldn’t feel like a tank.
You can take some insights at character movement at one of my previous post
Camera — The player’s eye
You are on the right track, your character’s movement has been polished after some playtesting sessions and you are happy, no more refinement is required.
But then you realize that you don’t have any camera management applied to your game, I’m going to ask you few questions:
What if you want to follow your characters movement?
What if you have a fixed camera and you want to switch between scenes?
What if you want to create a cinematic effect that zooms in at the right moment?
The answer is the same in every scenario: you need a camera component in your videogame. At this specific case, the parameters to be modified will depend on the framework/engine you are using, but here’s some general guidance:
Don’t reinvent the wheel
Cameras are one of those systems that already have decades of research and best practices behind them. As much as we love to hack our own, it’s better to learn from what works:
Follow Cameras. The camera locks on to your character and smoothly follows their position. Great for platformers (Celeste) or top-down movement (Zelda).
Fixed Cameras. Each scene has a pre-set angle. Perfect for horror or puzzle games where atmosphere matters (Resident Evil 1).
Room-to-Room Transitions. When you move past a boundary, the camera snaps or blends to a new zone. Classic in metroidvanias (Metroid, Hollow Knight).
Dynamic/Cinematic Cameras. Trigger-based zooms, pans, or angle changes that highlight important actions, more advanced and usually applied to 3D Games. (Resident Evil 1, PSOne)
Controls — The player’s hand
Remember videogame are quite connected with all our senses and emotions and we are about to cover a really sensible one now… the sense of Touch
Celeste. Madeline’s dash is perfect because it’s instant and predictable. Players never blame the game when they fail; they blame themselves — and keep trying.
Responsiveness is king. If inputs don’t feel instant, players stop trusting you. And let’s be honest — we all love feeling in control, right? That same human craving for control is exactly what games amplify. Get it wrong, and you trigger frustration. Get it right, and you trigger satisfaction.
At GDC, one speaker noted:
“Poor camera operation and control is sometimes enough to cause a game to receive a poor rating.”
Make sure you don’t reinvent the wheel (again)
Look at games like Super Mario Deluxe (Game Boy Color) controls are quite simple.
Polished controls require instant feedback, meaning is not valid if my attack will be taking more than 1.5-2 seconds to be executed when I already pressed the button.
Keep it simple (Remember, KISS methodoly) and use as less buttons and controls as possible, as we as players can easily forget about them.
Now that we have covered the three pillars during our players first impression, you need to make sure Playtesting is executed many times as soon the foundations are set to be successfully at it.
GameDev Triforce! 3C’s learning
To summarize the concepts I’ve been explaining before:
Character = what you can do.
Camera = how you see it.
Controls = how you trigger it.
Bend one, and the others warp.
Speed up your character, but keep a slow camera, probably ends up in frustration.
Add a cinematic camera, but delay input, you are out of the experience, broken inmersion.
This is why 3Cs work together.
DIY Corner — Quick Prototyping with Pyxel
If you want to test the 3Cs without setting up a full engine, there’s a fun little tool you can try: Pyxel.
Pyxel is a retro-style game engine in Python, directly inspired by fantasy consoles like PICO-8 (My favourite ❤️) and Picotron — but unlike them, Pyxel is completely free. No license, no added cost, just a lightweight sandbox for quick experiments.
Quickstart tips:
Install with
pip install pyxel
.Create a new
.py
file, import Pyxel, and run the sample code from the docs.Try changing character values.
Focus on prototyping how your Character moves, how the Camera follows, and how the Controls respond.
With Pyxel, you can experiment in under an hour — no heavy setup, just pure learning.
Wrapping Up
The 3Cs are not just theory. They’re a practical debugging lens that indies and AAA alike rely on. If your prototype feels off, don’t panic. Review, polish again Character, Camera and Controls ,is easily 60% of the whole experience.
Question I have for you… what’s the best-feeling game you’ve ever played — and why?
What’s Next?
I want to celebrate a small but meaningful milestone with you all…
10+ subscribers! 🎉
It might sound modest, but to me it means something powerful: there’s an audience reading these words. I’m deeply grateful for every one of you, and it motivates me to keep growing together.
To celebrate, I’m preparing a new series where I’ll dive into the history of relevant studios in the videogame industry — their people, decisions, design and games. More soon 🚀
Nothing is worth more than the author’s freedom.
Thank you for reading GameDev Pills.