I design game systems and then use player data to fix them. Over 5 years across mobile, PC, and web: 2 commercial releases, a graduation thesis, and more than 10 student and jam projects. I came into design from statistics, which is why I iterate with spreadsheets and analytics.
Index
Game DesignerSelected Projects 6 entries
A third-person stealth immersive sim from Jhorro Productions. The tension comes from systems reacting to each other, not from scripted moments. Announced for PC and Steam Deck, with full release in Q2 2027.
My biggest project so far, and the first commercial title Jhorro Productions is developing and publishing in-house. Thief, Dishonored, Metal Gear Solid, and Gloomwood are the clear references. The player is a spy in a Gothic-Victorian city where information is the best weapon and combat kills the spy about as fast as the guard. The systems core is done. Right now I'm building the cathedral levels, the second combat slice, and Steam Deck input.
| Role | Designer & Developer (Solo) |
|---|---|
| Engine | Unity 6.3 |
| Platform | PC · Steam Deck |
| Target | Demo Feb 2027 · Release Q2 2027 |
I built this on what I learned from Idle Kingdom Builder: deeper progression tiers and a monetization layer using reward ads and IAP. I instrumented Unity Analytics to snapshot player state at 4 milestones, which surfaced two economy bugs and a timer persistence defect. Five fixes went out across v1.70 and v1.81, and the July 2026 data pull measures what they did. It has 600+ organic downloads and a 4.2/5 rating with no marketing spend, a median session around 6 minutes, and a top 10% of players who average 15 minutes or more.
| Role | Designer & Developer (Solo) |
|---|---|
| Engine | Unity 6 |
| Platform | Android |
| Duration | 6 months |
View details →
An idle clicker set in a dystopian cyberpunk metropolis. Players earn credits to expand their city through passive income, active clicking, and deeper progression tiers. The whole loop is instrumented with real analytics.
I designed and developed it solo, concept to launch, building on lessons from Idle Kingdom Builder: a wider core loop, deeper progression tiers, and a monetization layer using reward ads and IAP. I instrumented Unity Analytics to snapshot player state at 4 milestones, which surfaced two economy bugs and a timer persistence defect. Five fixes shipped across v1.70 and v1.81, and I re-measured the economy against the pre-overhaul baseline afterwards.
4-Pillar Economy
Passive, Clicker, Offline, and Ascension buildings each open a different progression path, and each one rewards a different playstyle without spelling it out.
Budget Analytics
I designed 4 snapshot events to get the most data possible under Unity Analytics' free tier. Each captures buildings, upgrades, click/passive ratio, and time elapsed at that milestone. The post-overhaul version carries about 33 parameters per event instead of 7, plus session and ad tracking.
Price Asymmetry
Clicker buildings scale at 1.65×. Passive buildings scale at 1.25×. That drives the click-to-passive transition mechanically, without any explicit tutorialization.
Non-Intrusive Monetization
Reward ads are opt-in only. Banner ads stay peripheral. One review summed it up: "non-intrusive ads, a lot of rewards and a clean UI."
The rebalance did what I wanted at the opening and overshot in the middle: time to 1M is now a little over 4× what it was. The choke point moved with it, from 1M → 1B to 1K → 1M, so the next pass belongs earlier in the curve. Rewarded ads are still one power user rather than a habit, and I would spend that iteration on the pacing that gets ordinary players to try them.
My first published idle game. I designed the core loop and economy from scratch, using Cookie Clicker's formulas as a reference and tuning them toward a slower, more deliberate pace. It shipped on Google Play with 1000+ organic downloads and steady engagement in the early weeks. Without an analytics pipeline I had no reliable way to see where players dropped off, and that gap is what pushed me to build the analytics system for Cyberpunk City.
| Role | Designer & Developer (Solo) |
|---|---|
| Engine | Unity 2022 |
| Platform | Android |
| Duration | 6 months |
View details →
A medieval kingdom-building idle game. Players click to earn gold and build houses, farms, markets, and more. Each one generates passive income to expand the kingdom further.
Designed the core loop and economy system from scratch, using Cookie Clicker's formulas as a reference and tuning them toward a slower, more deliberate pace. 10 building types (House through Bank) with upgrade paths and a Royal Ascension prestige system. Ad monetization implemented with reward videos and banners.
Cookie Clicker as Foundation
I studied the exponential curves that make Cookie Clicker addictive, then slowed the pace. The medieval theme calls for deliberate growth, not frantic clicking.
Royal Ascension
Prestige system that resets progress for permanent bonuses. It gives long-term players a reason to restart and work through the economy again from a stronger position.
75 Achievements
Tiered achievement system (Common through Legendary) across buildings, upgrades, clicking, and GPS milestones. It fills the gaps between the major progression beats with smaller goals.
The Analytics Gap
Shipped without a data pipeline. I couldn't tell where players were dropping off. That gap is what led me to build the analytics system used in Cyberpunk City.
Add analytics from day one. Even basic milestone events would have revealed progression bottlenecks early. The economy feels solid in the first hour, but the mid-game pacing was never validated with real data.
This project taught me the scope management principles I later applied to shipping my solo idle games on time.
2.5D Metroidvania developed as a graduation project at PUC-SP. I started as game designer, then took on developer and producer duties as the project progressed, which meant core systems, parkour mechanics, and the art/sound pipeline. I led the scope cuts needed to ship a playable vertical slice with a team of 6 inside academic deadlines.
| Role | Designer → Developer / Producer |
|---|---|
| Team | 6 |
| Engine | Unity 2021 |
| Platform | PC (itch.io) |
| Duration | 1 Year |
View details →
A 2.5D Metroidvania with parkour traversal and dash-strike combat. Graduation thesis at PUC-SP, and the project that taught me scope is a design skill.
Started as game designer, then shifted to developer and producer as the project progressed. I programmed core systems and parkour mechanics in C# and managed the art/sound pipeline. I also led the scope cuts: the original doc had 8 movement mechanics, 4+ zones, combo combat, and skill trees. What we shipped was a focused vertical slice: 3 mechanics, 3 zones, dash-strike combat.
Dash-Strike Over Combos
The original 3-hit combo system broke player flow. The dash-strike emerged from prototyping and turned combat into an extension of the movement system instead of something fighting against it.
Stamina Cut
Removing the stamina gate made movement feel fast and expressive. The resource system was working against the core fantasy of fluid parkour traversal.
Linear Over Hub
We cut the hub and branching paths. Linear progression lets the level design teach mechanics in sequence. Each zone introduces and tests a new skill.
Environmental Narrative
No cutscenes. No NPC dialogue. The world tells the story through level design and environmental detail. The narrative survived the scope cuts by changing form.
Playtest earlier and more often. Beta testers caught navigation and control issues we had gone blind to. I would also set hard scope ceilings at month 1 instead of letting the dream doc grow unchecked before cutting. Cut early, cut once.
The clearest example of me building real-time combat architecture and animation state machines against a hard deadline.
Souls-like combat demo built for PUCJam 2023 on the theme: "Sacred". I designed and programmed the core fighting system: hitboxes, animation trees, life/death state, and combat balancing. It won Best Art at PUCJam 2023.
| Role | Designer, Programmer & Producer |
|---|---|
| Team | 7 |
| Engine | Unity 2022 |
| Duration | 9 Days |
View details →
A souls-like boss fight demo built in 9 days for PUCJam 2023. Theme: "Sacred". Core fighting system designed and programmed from scratch with a team of 7.
Designed and programmed the core fighting system: hitboxes, animation trees, life/death state machines, and combat balancing. I also handled production, scoping daily milestones across a 7-person team so the boss fight would be playable and polished by day 9.
One Boss, Done Well
Rather than several enemies with shallow behavior, the design effort went into a single boss: readable tells, punish windows, escalating phases.
Weight Over Speed
Animations prioritize impact and readability. Attacks use wind-up frames that telegraph intent. That is the souls-like contract: fair but punishing.
Stealth-action game set in an alternate 2031 Brazil, with Metal Gear Solid and Splinter Cell as clear references. I designed the level layout, the core stealth and shooting mechanics, and the narrative, which mixes espionage with absurd comedy in a Brazilian geopolitical setting. We built it for CtrlAltJam#3 with a team of 4.
| Role | Game Designer, Producer & 3D Artist |
|---|---|
| Team | 4 |
| Engine | Unity 2023 |
| Duration | 2 Weeks |
View details →
A stealth-action game set in an alternate 2031 Brazil. Metal Gear Solid-inspired espionage mixed with absurd Brazilian comedy. Built for CtrlAltJam#3.
Game designer, producer, and 3D artist. I designed the level layout, the core stealth and shooting mechanics, and wrote the narrative: espionage mixed with absurd comedy in a Brazilian geopolitical setting. I also created the 3D environment assets and managed the production pipeline across a 4-person team inside a 2-week deadline.
Stealth-First Loop
Detection triggers escalation, not instant failure. Players can fight their way out or retreat. That keeps tension in the loop without becoming frustrating in a jam-scoped project.
Comedy as World-Building
The absurd alternate-reality Brazil setting lets the narrative carry weight without taking itself too seriously. The satire lands through gameplay rather than exposition.
Currently Working On Dead Saints Parade · Systems Design
Immersive sims earn their reputation through systemic depth, and one developer cannot afford breadth. Every system has to justify its slot, and "it would be cool" is not a justification.
Four pillars, and what happens when they fight
Most projects list pillars. Fewer say what happens when two of them want opposite things. That second part is where the pillars actually do work, because without it a pillar list is decoration you can argue your way around.
Read as 1 > 2 > 4 > 3. The numbering is the pillars' own; the order above is what they beat. Vulnerability wins outright, so any feature that lets the player shortcut stealth is cut regardless of how good it feels in isolation. Information outranks exploration convenience, which is why a long detour to reach a document is preferred over auto-collecting it.
Bullet-time combat
Fun, genre-adjacent, and a direct shortcut past the stealth layer. Cut without debate, because Vulnerability outranks everything it would have served.
Auto-collect on documents
Would have smoothed exploration and cost the game its central act, which is going to the thing and reading it. Exploration convenience yields to information.
Both systems below are downstream of that ordering. The corner behaviour in the cover system is the clearest case: a feature that was built, played, and then cut because a higher pillar outranked it.
System 01 · CompleteCover: designing a refusal
Cover is the primary defensive tool, and the part I would point at first is the feature it deliberately does not have.
Walking into a wall puts the player in cover after 4 frames of sustained contact, about 66 ms at 60 fps. There is no cover button, because the point is to remove a button press from the moment the player's attention is most expensive. Camera-relative input is then projected onto the wall's tangent, so a wall facing the camera slides with A/D and a wall on the player's left slides with W/S. Any arbitrary angle works without branches or per-wall authoring.
| Parameter | Value | Purpose |
|---|---|---|
| Walk speed in cover | 1.5 m/s | Slower than a normal walk, and sprint is disabled |
| Magnetic standoff | 0.42 m | Controller radius plus 0.1, with a corrective nudge at speed 10 |
| Snap-in delay | 4 frames | About 66 ms at 60 fps, which kills flicker off a glancing wall |
| Exit threshold | dot > 0.65 | Roughly 49° into the wall, so leaving cover is always deliberate |
| Footstep interval | 0.45 m | Lateral travel, which feeds AI hearing at a 1 m radius |
Corners don't wrap, and that's the feature
Nearly every third-person cover system lets you round an outer corner with a button. The character slides around, the camera follows, and you are on the new wall. It feels good. I built it, and it is not in the game.
The system commits to one wall. At an outer corner the peek camera looks around it while the body stays clamped at the edge. Getting onto the next wall means pushing away from the current one and re-engaging, which is a deliberate act taken while exposed. Inside corners had the opposite problem, where the detection fan alternated between two surfaces and jittered; normal-locking keeps the player committed to the original wall.
Auto-wrap glides the player blindly into space they have not looked at yet. That is a shortcut past observation, and Vulnerability outranks the comfort it would buy.
What it costs is written down rather than discovered later. There is no cover-to-cover dash, no scripted corner turn, and no vaulting over cover. Peek saves and restores the scene camera with FindObjectsByType, which allocates, and single-surface tracking means genuinely complex geometry can still break it.
Perception: seeing versus noticing
A guard's eye is two cones, not one. That split is what produces the genre's signature moment, where the cone sweeps toward you and you freeze instead of running.
Shadow is a hard gate rather than a modifier. Below a light level of 0.2 the guard cannot see the player at all, at any range. Above it, light is remapped to 0 to 1 and raised to an exponent of 2.0, so 50% light gives 25% detection speed. The quadratic is doing real work: it makes the difference between dim and dark feel like a cliff rather than a slope, which is what makes extinguishing a single candle a tactical act.
Distance, angle, light, movement and posture all multiply into one combinedMult, which maps linearly onto a fill time between 0.5 s at worst and 5 s at best. Every threshold lives on a GuardData ScriptableObject, so a nervous guard in the catacombs is an asset rather than a subclass.
| Scenario | Time to alert |
|---|---|
| Standing, full light, centre of cone, close range | ~0.5 s |
| Crouching, dim light (0.4), edge of cone, far range | ~5 s+ |
| Moving, peripheral cone only | ~12 s |
| Still, below the light threshold, any range | never |
Demo Progress In development · updated as builds ship
22 Shipped Systems
Additional Work: FoxTales Studios Student studio · PUC-SP · 2020-2023 · Game Designer & 3D Artist
Case Study: Idle Cyberpunk City Clicker 220 players before the overhaul · 36 after · 7 tracked events · July 2026 pull
Flying blind after the first game
Idle Kingdom Builder shipped with 1000+ downloads and solid reviews, but no analytics pipeline. I had no visibility into where players dropped off, or why. Cyberpunk City was growing steadily and had the same blind spot. I needed a way to see inside the player journey without blowing the budget.
Milestone snapshots, then a wider net
The free Unity Analytics tier limits how much you can send, so the first pass was 4 snapshot events tied to credit milestones (1K, 1M, 1B, 1T), about 7 parameters each. After the fixes I widened it: the same events now carry around 33 parameters, plus SessionStart, AdWatched5x and AdFreeBuilding. The old event names stayed, so the pre-1.40 build still works as a baseline.
Economy validates, three bugs surface
The click-to-passive transition behaved as designed. The data also caught a clicker counter mapped to the wrong variable, and a timeElapsed persistence defect that invalidated the higher milestones. The expensive one was offline production: offlinePercentage already included the bonus and CalculateProduction() multiplied it a second time, which compounded to roughly 38,000× normal CPS on late-game saves. Leaving the app overnight paid better than playing it.
Five fixes, then a second read
v1.70 and v1.81 carried five fixes: corrected instrumentation, timer persistence, an offline rewrite with hard ceilings on rate, window and multiplier, rebalanced upgrade multipliers (passive 3.5×, clicker 7×), and an IAP boost that was off by one. In July 2026 I pulled the data again and read 36 post-overhaul Android players against the frozen 220-player baseline.
What the second read changed
The opening curve landed where I wanted it. Time to the first milestone rose 85% (194s to 360s) and clicks rose about 30% (302 to 394), while buildings bought held flat at 13 and 12. Players spend longer and click more without changing what they buy. The mid-game overshot, though. Median time to 1M went from 824s to 3,503s, a little over 4×, further than I was aiming for. Upgrades are at least doing their job now: 14 owned at 1M against 10 before, and clicker upgrades went from 0 to 6, since the old counter never recorded any.
The wall moved too. My earlier read was that 1M → 1B was the choke point, a 73% drop. In the new cohort that step converts better than it used to, 27% to 38%, and the one that slipped is 1K → 1M, 42% down to 36%. So the next tuning pass belongs earlier in the curve than I thought. I'm holding that loosely: the post cohort is 36 players at 1K and thins to one by 1T, so the far end is anecdote rather than measurement.
Monetization and retention only became visible with the new events. Rewarded video has 175 views and a single German player accounts for 120 of them. That same player holds the 1T record and had watched 111 ads by the time they got there, so ads hold up as a progression route at the far end. The median player reaches 1K having watched none. Session opens have also stopped clustering at install: days 8 to 24 carry 58% of them against 19% in the first two days. There is a returning core now, and that is who the next ad-pacing test should target.
Case Study: Guardian's Falls Team of 6 · 12 months · Scope management · Graduation thesis
Ambition outpaced capacity
The month-1 design doc planned for 4+ zones, 8 parkour mechanics, combo combat, skill trees, and layered narrative. Team of 6. No dedicated programmer. 12-month academic deadline.
Prototype fast, cut decisively
We built early prototypes covering the full mechanic set and tested which ones actually supported the core loop. Then a structured beta with categorized feedback. Features that weren't pulling their weight got cut.
Ship what works, not everything
The final demo covers 3 zones with streamlined movement (sprint, slide, dash), dash-strike combat, and environmental storytelling. Progression is linear so the level design can introduce mechanics in sequence.
Demo shipped + 3 design principles I still use
Shipped a coherent vertical slice. The scope and iteration lessons from this project shaped how I approached both idle games afterwards.
What We Envisioned vs. What Shipped
The original doc was deliberately ambitious. Dream big first, then scope down to what the team can ship well. I handled design, C# programming, and production. No dedicated programmer on the team.
| System | Month 1 Vision | What Shipped | Status |
|---|---|---|---|
| Movement | 8 mechanics: vault, slide, wall jump, grab/climb, swing, roll, sprint, free jump. Stamina system gating usage. | Sprint, slide, dash. Stamina cut entirely. Removing the resource gate made movement feel fast and expressive. Vault, wall jump, and grab/climb were prototyped, then cut for clarity. | Evolved |
| Combat | 3-hit combo tree, slide attack, bounce attack, power punches, sprint attack | Dash-into-enemy strike. Combos made players stop and chain punches. The dash-strike let them keep moving. It emerged from prototyping, not from the original doc. | Simplified |
| Zones | 4+ zones (Moonlit Meadow, Bond Fracture, Jade Jungle, Innerlake) + Hub | 3 zones shipped. Hub removed. Progression is linear, not branching. | Simplified |
| Progression | Skill tree, NPC quests, HUB, backtracking, left/right difficulty choice | Linear progression across 3 zones. No skill tree. No hub. Mechanical mastery carries the progression. | Cut |
| Narrative | 4 cardinal guardians, trauma metaphor, intro cutscene, NPC dialogue, symbolic enemy design | Environmental storytelling carries the narrative. No cutscene. No NPC dialogue. World-building is embedded in level design. | Evolved |
| Enemies | 3 types per zone + mini-boss + final boss, thematically symbolic designs | Generic enemy types. Focus shifted to making combat feel responsive rather than narratively themed. | Simplified |
Mechanic Spotlight: Dash-Strike Combat
Combat is movement
Instead of standing still and executing combos, the player dashes into enemies to attack. The original doc specified a 3-hit combo tree and special attacks. Early prototypes had them working. In practice, they pulled the feel in the opposite direction of the movement system. Combos made players stop. The dash-strike kept them flowing.
Iteration: This wasn't in the original doc. It emerged from prototyping. Once we saw how the dash felt during traversal, extending that momentum into combat was the obvious next step. We cut the combo system, and what replaced it was stronger than the original plan.
What I Carried Forward
Scope is a design skill
The original doc had 8 movement mechanics. The shipped game has 3, and they feel better. This mindset shaped how I built both idle games: start with the minimum viable loop, not the maximum vision.
Test before you're ready
Even rough testing with non-expert players surfaces problems you can't see from the inside. Beta testers caught navigation issues and control pain points we had gone blind to.
Mechanics must talk to each other
The combo system fought the movement system. The dash-strike emerged because we prototyped both and noticed the conflict. The design doc was a guess, and prototyping is what told us the guess was wrong.
Design Documents GDDs, QDDs, LDDs, and design tests: How I think on paper
About
Game designer with a statistics background. I build first and iterate constantly, and I try to settle design arguments with evidence rather than taste, whether the problem is economy tuning, mechanics, levels, or narrative. Over 5 years in game design across 2 shipped mobile titles, a graduation thesis, and more than 10 student and jam projects. Based in São Paulo, Brazil.
Alongside shipping games, I teach game development and design to kids and teens. Over 300 students across three schools, content adapted for ages 8 through 17. It's the best training I've found for studio communication: if a 10-year-old can follow your explanation of a state machine, your spec will probably survive a cross-discipline review. It also means I can scope a lesson the way I scope a milestone. Break a complex system into deliverable chunks, check whether people actually understood, adjust before moving on.
My core is systems and economy design, but I work across disciplines regularly. The Genshin Impact quest doc covers narrative and quest structure. Bagre Noturno combines stealth mechanics with alternate-reality storytelling. Cyberpunk City's atmospheric lore ties world-building back into the progression systems.
A lot of the approach comes from studying how Valve teaches Portal's mechanics through play, and how Half-Life guides players with lighting and architecture instead of waypoints. That kind of invisible design only holds up if you playtest obsessively. Kojima's influence shows up in the ambition: trust players with complex systems and meaningful choices. That sits next to the scope cuts elsewhere on this page more comfortably than it looks, because depth and breadth are different axes. Cutting systems is what buys the time to iterate on the ones left standing, and both Guardian's Falls and Dead Saints Parade got deeper by getting narrower.
| Engines | Unity, Unreal Engine 5, Godot |
|---|---|
| Design | GDDs, economy modeling, level design, quest design, playtesting |
| Data | Unity Analytics, spreadsheet simulation, Python, R |
| Code | C#, C++, SQL |
| Art | Blender, Maya, ZBrush, Adobe Creative Suite |
| Languages | Fluent English, Native Portuguese, Basic Spanish |
Contact Currently seeking a systems or gameplay design role · Open to remote or relocation
Available for new roles
Let's talk about your next game.
Have a role, a project, or just want to talk shop? Email is the fastest way to reach me. I usually reply within a day.
Based in São Paulo, Brazil · UTC-3