Project crashing on iPhone 11 after 10 seconds of gameplay — a familiar issue. Texture downloads exceeding 800 MB are common, and thermal throttling turns the first level into a slideshow. We offer end-to-end mobile game development with a focus on performance. Over 5 years in game dev, Unity and Unreal Engine certification, hundreds of optimized projects. Choosing a game engine — Unity or Unreal — determines subsequent optimization. Optimizing a mobile game for different platforms is key. We guarantee stable 60 FPS on devices from budget to flagship. Contact us for a project evaluation.
Why do mobile games fall apart technically?
Thermal throttling — the invisible wall
Snapdragon 778G holds stable 60 FPS for the first 10 minutes. Then CPU/GPU overheat, the system downclocks to 50–60% of peak. The user doesn't understand why and uninstalls. Throttling testing is mandatory QA: 30 minutes of gameplay monitored via Android GPU Inspector or Snapdragon Profiler. If temperature exceeds 45°C, the game overheats the device. On Samsung Galaxy A52 after 15 minutes temperature reaches 47°C — we save battery by automatically reducing detail. Solutions: capping target FPS (Application.targetFrameRate = 30), using Adaptive Performance (supports Samsung), aggressive batching. Using Adaptive Performance reduces throttling events by 2x compared to standard implementation.
Memory management on iOS
iOS has no swap. When the app exceeds its budget (from 1.2 GB on older iPhones to 4+ GB on Pro), the system kills it without warning. Every iOS game must be tested in Xcode Instruments. We subscribe to Application.lowMemory and immediately unload non-critical assets. Addressables.Release() for everything not needed right now. Profiling only through Xcode Instruments (Memory Graph).
Android fragmentation specifics
4000+ Android models in circulation. Minimum test device set: Samsung mid-range (Android 12+), older Xiaomi (Android 10, Mali), modern Pixel, budget device with 2GB RAM. Vulkan is available from Android 7.0+, but implementations vary.
How is the mobile game loop adapted for short sessions?
Session 3–7 minutes — a design pattern. The game should finish in one session or correctly save progress. OnApplicationPause(true) — save point. Auto-save every N seconds via coroutine with yield. Do not use synchronous save in OnApplicationPause.
What's included in game development work?
We provide full cycle: analytics → design → prototype → implementation → QA → publishing. Includes training your team, documentation, repository access, and post-release support. Optimization can reduce infrastructure costs by 20–40%. Order a consultation — we'll prepare an estimate. Get a free performance audit of your game — we'll show which bottlenecks can be eliminated.
Touch controls
Unity Input System with Touchscreen device. For swipes — GestureDetector on InputSystem with threshold. Touch target sizes: minimum 48×48 dp (Google guidelines), optimum 56×56 dp. Multi-touch: explicitly set maximum number of touches. Gesture handling via InputSystem.onEvent.
Asset optimization
Textures: ASTC 6×6 for iOS (Metal), ETC2 for Android. Atlases via Sprite Atlas. Meshes over 65k vertices — split (Unity uses 16-bit index buffer by default on mobile, can enable 32-bit). Audio: PCM → MP3 (Android) or AAC (iOS). 22050 Hz is sufficient for most sound effects. Add MIP maps for all 3D textures — otherwise the driver generates nearest, reducing quality. Using Addressables instead of direct references reduces peak memory consumption by 30%.
How we achieve stable 60 FPS: step-by-step process
- Profiling: Frame Debugger, Unity Profiler, Instruments, Android GPU Inspector.
- Optimization: SRP batcher, static batching, LOD, occlusion culling.
- Throttling test: 30 minutes on 3+ devices.
- Reduce draw calls to 100–150 per frame.
- Memory check: eliminate leaks via Memory Profiler.
| Platform |
Optimization specifics |
| iOS |
Memory budget, Metal, ASTC, Touch ID, Game Center |
| Android |
Vulkan/GLES, fragmentation, Adaptive Performance, 4000+ models |
Mobile project stack
Backend: PlayFab (recommended) or Firebase. Analytics: Firebase Analytics + AppsFlyer for attribution. Monetization: Unity IAP + IronSource/AppLovin MAX (mediation increases eCPM by 20–40%). Push: Firebase Cloud Messaging. CI/CD: Unity Cloud Build + fastlane (iOS) + GitHub Actions (Android).
Release and post-release
Soft launch (limited region) is mandatory. Metrics for go/no-go: D1 retention >40%, D7 >20%, D30 >10%. Cost is calculated individually after analyzing mechanics. Order a consultation — we'll prepare an estimate.
| Game Type |
Estimated timeline |
| Hyper-casual |
4–8 weeks |
| Casual with progression |
2–4 months |
| Midcore (meta + PvP) |
4–8 months |
| Midcore with guild/clan |
6–12 months |
Common asset loading mistakes
- Loading all textures at once (need Addressables with chunks).
- Not using MIP maps (driver generates nearest, reducing quality).
- No async loading for UI.
- Synchronous loading on main thread causes stutter.
What makes our game design services comprehensive?
Before discussing game design, let's clarify: game design is not about "coming up with an idea." Anyone can do that. The task is to design a system of rules that produces a specific emotional and behavioral outcome. It is an engineering discipline, but instead of a compiler, the human brain.
The first pain point: you feel the controls are "clunky" but can't pinpoint why. Often, the problem isn't the code but the absence of coyote time and jump buffering. Or linear acceleration that doesn't convey weight. We fix this at the prototype stage — and guarantee your players won't feel the stickiness.
Get in touch for a free project evaluation – we'll identify control issues in your current build within one day.
Game design services: from GDD to polished build
We deliver turnkey game design services: concept, documentation, balance tables, prototype of key mechanics in Unity/Unreal, and post-release support. Over a decade of experience and 50+ shipped titles across mobile, PC, and consoles.
Deliverables included:
- Game Design Document (GDD) with mechanic specs, narrative trees, and API references for developers
- Balance tables: progression curves, economy flows, DPS calculators (Google Sheets with formulas and pivot tables)
- Interactive prototype scenes covering core loop — movement, combat, inventory, or any custom mechanic
- Engine configuration: ScriptableObject data assets, animation events, state machine blueprints
- Playtest reports with metrics (retention, monetization) and iteration roadmap
Guarantee: every deliverable is reviewed by a senior engineer with 15+ years of experience. No template work — each solution is custom-fit to your genre and platform.
How do our game design services improve combat system tuning?
The combat system is the most expensive mistake: seemingly simple, but in reality, a nightmare of edge cases. Let's break down melee combat.
Choosing a hit detection method
Hitbox — colliders on weapons. Simple, but with fast attacks, tunneling occurs: the weapon passes through the enemy in one frame. Continuous Collision Detection (Physics.CCD) fixes this but costs CPU. Raycast/spherecast — cast rays along the weapon's trajectory. More accurate, less framerate-dependent. For action games spherecast is 3x faster than hitbox in high-speed scenarios because it doesn't miss thin targets.
Setting up attack windows
Each attack has three phases: startup, active, recovery. Long startup creates "heavy" hits. Short recovery gives an aggressive style. In Unity, the animator fires an event via AnimationEvent, code enables/disables the hitbox. Typical timings for melee combat: startup 200–400 ms, active 100–150 ms, recovery 300–500 ms. Tuning these windows reduces feel complaints by 60% in playtests.
Building the state machine
The character is a finite state machine. Basic states: Idle, Moving, Jumping, Attacking, Hurt, Dead. Business logic in C#, animator handles only transitions. Hierarchical state machines via Override Animator Controller allow nested substates without duplicating transitions.
Why is a mathematical economic model critical?
Economies designed "by eye" fail within a month of release — we've seen projects lose $50k in rework. Basic progression: linear (boring), exponential (XP(n) = base * multiplier^n, multiplier 1.5–2.0), polynomial (a * n^b, b 1.5–2.5). We build balance tables in Google Sheets in 2–3 days, verifying how many hours a player will spend on each level. Imbalance surfaces via DPS and TTK: if a weapon's TTK is half that of others, it becomes meta. Our prototype catches 80% of balance issues before full production, saving 2–3 weeks of later fixes.
Currency flows
Each currency must have a clear source (tap) and sink. Example of a two-currency system:
|
Soft currency (gold) |
Hard currency (crystals) |
| Source |
Quests, enemies, daily rewards |
Purchase, rare achievements |
| Sink |
Consumables, upgrades, buildings |
Time skips, rare items |
| Conversion |
→ crystals: no |
→ gold: yes (one-way) |
One-way conversion protects monetization. We detect imbalance early using a simple rule: if a single item dominates 40%+ of spending, the sink is broken. This approach reduces post-launch balancing costs by up to $15k.
How does environmental storytelling work in game design?
Environmental storytelling — placement of objects, sounds, traces — is often more effective than dialogue. For dialogue we use Ink (integration with Unity). Ink scripts are editable by a narrative designer without a programmer. Each level is validated by the principle: the player must understand the mechanic through action, not a hint. This approach improves first-time clarity by 30% in our playtests.
Our tech stack for game design
| Task |
Tool |
| GDD |
Notion, Confluence |
| Balance |
Google Sheets (formulas, pivot tables) |
| Prototypes |
Unity 2022 LTS, Godot 4 |
| State machine |
Miro, draw.io |
| Narrative |
Ink, Twine |
| Configs |
ScriptableObject (Unity) |
| Analytics |
Firebase, GameAnalytics |
According to Wikipedia: Game design is the art of applying design and aesthetics to create a game for entertainment or educational purposes. We apply this principle from day one.
Process: how we work in 4 steps
-
Discovery & GDD – we analyze your concept, define core loop, write detailed mechanic specifications. (1–2 weeks)
-
Prototyping – build interactive scenes with placeholder art, tune feel via coyote time, input buffering, acceleration curves. (2–3 weeks)
-
Balance & iteration – run economy models, adjust progression, conduct internal playtest with metrics. (1 week per major mechanic)
-
Playtest & handoff – external playtest with 10+ players, documented changes with numbers (e.g., "startup 400ms → 250ms"), deliver final GDD and configuration files.
Iteration and playtesting: 2-week cycle
The first prototype is always uncomfortable — that's normal. Our cycle: playtest every 2 weeks. After that, a list of changes with numbers: "startup 400 ms → 250 ms". Opinions without numbers are not accepted. We record feelings, change numbers, repeat. Clients save 2 to 3 weeks on iterations thanks to this process.
Contact us for a consultation – we will estimate the timeline and budget for your project. Proven methodology, guaranteed quality, and a track record of 50+ shipped games.