Creating 2D animations for a mobile game

Character and combat effect animation determines whether a player stays in the game or closes it after the first level. We create turnkey 2D animation for mobile games: from storyboarding to ready-to-use sets that run equally smoothly on low-end phones. We deliver the project with clear documentation so your team can add new scenes without us.

Development and support of all types of mobile applications:

Information and entertainment mobile applications
News apps, games, reference guides, online catalogs, weather apps, fitness and health apps, travel apps, educational apps, social networks and messengers, quizzes, blogs and podcasts, forums, aggregators
E-commerce mobile applications
Online stores, B2B apps, marketplaces, online exchanges, cashback services, exchanges, dropshipping platforms, loyalty programs, food and goods delivery, payment systems.
Business process management mobile applications
CRM systems, ERP systems, project management, sales team tools, financial management, production management, logistics and delivery management, HR management, data monitoring systems
Electronic services mobile applications
Classified ads platforms, online schools, online cinemas, electronic service platforms, cashback platforms, video hosting, thematic portals, online booking and scheduling platforms, online trading platforms

These are just some of the types of mobile applications we work with, and each of them may have its own specific features and functionality, tailored to the specific needs and goals of the client.

Our competencies:

Frequently Asked Questions

Latest works

  • Development of a mobile application for FEEDME
    Development of a mobile application for FEEDME
    971
  • Development of a mobile application for XOOMER
    Development of a mobile application for XOOMER
    869
  • Development of a mobile application for RHL
    Development of a mobile application for RHL
    1289
  • Development of a mobile application for ZIPPY
    Development of a mobile application for ZIPPY
    1143
  • Development of a mobile application for Affhome
    Development of a mobile application for Affhome
    1076
  • Development of a mobile application for the FLAVORS company
    Development of a mobile application for the FLAVORS company
    677

Why 2D animation in a mobile game breaks on low-end devices

2D animation in a mobile game breaks not on flagships, but on mid-range devices — that is where the main audience sees it.

Animation stutters on a weak device show up in combat: when two or three dozen sprites with transparency and effects live on screen at the same time, rendering stops keeping up with logic.

Frames run unevenly, input feels "mushy," and the player blames the controls, not the graphics.

The second reason is frame drift when resolution changes. If animation is tied to pixel coordinates rather than character anchor points, on a different screen density the character shifts by several points: feet sink below the ground, a hit does not match the hit area.

Character animation smoothness depends not on the number of frames, but on the consistency of the skeleton, anchor points, and collision logic.

The third source of problems is the weight of mobile game graphics. When every frame is stored as a separate file, the build grows after each iteration: a new attack is added — plus dozens of images, some of them duplicates of already finished poses.

On weak devices this turns into long loading and memory shortage, because of which the system unloads textures exactly at the moment of combat.

The fourth is loss of source files: edits are made directly into finished frames, and returning to a clean version of the animation is no longer possible.

All this is solved at the level of asset preparation and assembly, not "optimization at the end," when the content has already been locked. We'll break down how this is covered.

What a well-structured character and combat effects animation delivers

Frame-by-frame drawing does not scale: each movement is a separate set of images, and the weight of the game's graphical assets grows linearly with the number of animations.

The skeletal scheme in Spine and similar tools describes a character with a set of bones and a small number of textures, so changing a pose is a recalculation of transforms, not new graphics. One skeleton covers dozens of states: running, attacking, taking damage, dying.

Animation reuse is built on a motion library: base cycles are assembled from shared phases, and layers are overlaid on top of them — the upper body shoots while the lower body keeps running.

Blending and transitions are described by data, so a new combat unit gets a full set of behavior without separate drawing. The designer adds a skeleton to the character instead of redrawing it for every angle and weapon.

Optimizing mobile game animation is first and foremost about the frame budget, not device power.

Combat effects smoothness relies on particles with a limit on simultaneous instances, object pooling, and shared textures with a single material — then the scene does not collapse on weak models.

Asset volume is reduced several times over: one skeleton goes into the build instead of thousands of frames, and adding a new enemy stops affecting level loading time.

Comparison of approaches: when each one fits and what limits it

The choice of approach determines the memory budget, build size, and cost of edits, not just the visuals. Frame-by-frame animation gives maximum plasticity, but each frame is a separate image: volume grows linearly, and changing a movement requires redrawing the entire cycle.

Skeletal animation stores poses as a set of bones and transforms, so a cycle takes many times less space, but soft deformations and cloth look broken in it.

Procedural animation calculates movement by rules — curves, interpolation, noise, body constraints: it uses almost no memory, but giving it character is hard.

Therefore, in practice, a hybrid animation scheme more often works: skeleton for the body, frame-by-frame inserts for hits and effects, procedural layers for camera tilt and input response.

Approach When it fits What limits it
Frame-by-frame animation Effects, shape transitions, rare characters Weight grows with every frame; editing movement means redrawing the cycle
Skeletal animation Walk, run, attack cycles; swapping parts and skins Handles cloth and soft deformations poorly, part seams are noticeable
Procedural animation UI elements, camera shake, aiming, input response Sameness; movement character is built through code and debugging
Hybrid animation scheme Combat characters and bosses, where both memory and expressiveness are needed More expensive to set up: preparation pipeline and layer seam tests

The choice should be based on three parameters: how many characters are on screen at the same time, what memory volume per frame is acceptable, and how often animation changes after release.

We lock them down before work begins — otherwise the approach has to be changed midway, and that means redoing already finished scenes.

How we work: stages from task analysis to delivery

We build the process so that animation does not have to be redone after being transferred into the game. Each stage ends with a verifiable artifact — a storyboard, a set of finished movements, a report on measurements on a weak device.

Below are the animation development stages in the order that removes risks earlier and more cheaply.

  1. Task and constraints analysis: number of characters, target devices, frame rate, memory and scene size limits. The result is a list of movements with a budget for each.
  2. References and storyboard of the game scene: style, plasticity, key poses, and timing. The storyboard is approved before start — edits at this step are many times cheaper than redoing a finished clip.
  3. Character skeleton setup: bone hierarchy, joint constraints, layer binding. The skeleton is assembled once, then all movements are built on it, so the edit cycle shrinks from days to hours.
  4. Movement assembly: key poses, curves, cycles, transitions between states. The animator checks the result in game context, not as a separate file outside the scene.
  5. Testing on weak devices: run on budget models, measure frame time and memory consumption. Where it fails, we simplify the skeleton and reduce the number of bones.
  6. Animation acceptance by checklist: looping without stutters, silhouette readability, clean transition stitching, behavior when switching states.
  7. Handoff and team training: source files, ready builds, documentation, and rules for adding new clips — after that your developers expand the set themselves.

What the client's team receives after project delivery

All animation artifacts are delivered to the project repository, not as an archive on disk: the client sees the edit history and can roll back to any version of a movement. Below is the minimum package that covers both acceptance and further independent work.

  • Animation source files — scenes and movement files in working formats, with preserved layers and groups, not only exported sprite sheets.
  • Configured character and object skeletons — bone hierarchy, bindings, constraints; editing a movement does not require rebuilding the model from scratch.
  • Atlases with descriptions: number of frames in each movement, frame rate, anchor point, bounds.
  • Game scene scheme — layers, draw order, binding of animations to character states (idle, run, jump, damage), and transition conditions between them.
  • Rules for naming frames and files: a single template "character_movement_direction_number", fixed case and separators — automatic atlas assembly does not break.
  • Regulations for adding animations: where to put the source file, which checks to pass, how to rebuild the atlas, and what to update in the scene scheme.
  • Documentation on key movements — which parameters affect character speed and weight, where to look for examples.

The package is considered delivered when the client's engineer adds a new movement according to the regulations without asking us for clarification.

Case study: how we removed stutters in a game on weak phones

A team came to us with a finished 2D game: more than forty objects lived simultaneously in the combat scene, each with its own frame-by-frame animation.

On lower price segment devices the picture stuttered: drops reproduced on 34% of tested models, and most strongly during mass effects, when hits, flashes, and enemy deaths triggered all at once.

What we changed. Characters and effects were switched to skeletal 2D animation instead of a set of frames — graphics weight dropped, and new movements became cheaper to add without redrawing.

Small elements were packed into shared atlases so the engine could draw them in one call, and heavy effects were moved to an object pool: sprites are no longer created and destroyed on every hit, but reused.

The project is on Unity, and a separate part of the work was configuring texture compression formats for target devices instead of a single "heavy" option. For off-screen objects, we disabled bone recalculation: the logic keeps running, but frames are not rebuilt.

What happened. The share of devices with drops decreased from 34% to 6%, stutters in the combat scene disappeared even with mass effects. Build size was reduced by 42% — the update downloads faster on mobile internet.

We left the previous animation scheme in the project as a backup: it is possible to return to it without redoing game logic.

What to do if the animations are already finished but the scene lags?

If the animations have already been accepted and approved, but the game scene still lags, redoing the movements themselves is almost never necessary.

The causes of drops lie in how those movements are executed on the device: how many objects update in one frame, how often transparent areas are redrawn, and when resources are loaded. Animation diagnostics starts with measurement, not redrawing.

The fastest way to localize the cause is by typical symptoms:

Symptom Probable cause What we check first
Scene drops when enemies appear Too many active animations List of running players
Lags on some devices Large textures, redrawing of transparent areas Atlas size, empty areas around frames
Stutters when switching states Recreating objects instead of reusing them Object pool, resource load timing
Smooth in the editor, not in the build Different compression and quality settings Build profile, texture format

Then the work order is: capture a profile and remove unnecessary redrawing — trim empty frame areas, pack them into an atlas, merge static layers into one. Then we move same-type objects to a shared pool so movement is not rebuilt every time they appear in the scene.

If the movements were assembled in a skeletal animation editor such as Spine, some edits are made directly in the skeleton: reusing bones instead of new frame sets reduces rendering load.

Refining finished animation happens without changing the visual sequence: approved movements remain the same, only the way they are executed changes. The scene stops stuttering on weak devices, and edits are limited to atlases, pools, and export settings.

Technical doubts we resolve before work starts

It is cheaper to resolve contentious technical points before the start than to redo finished scenes. We have collected the questions we most often raise during estimation so that most edits are done before the first delivery.

Can existing animation be refined without redoing everything?

Yes. We check timing and anchor points, edit only the affected scenes — there is no need to rebuild the entire library.

Do you work with third-party source files without documentation?

Yes, a common situation. We restore the structure from layers, atlases, and state names, rebuild some settings from scratch — and tell you in advance which scenes will come out more accurately.

How are animations handed off to programmers?

We hand over sets with agreed names and structure and describe transitions between states. We catch naming discrepancies before handoff, not during the build.

How long does delivery of one scene take?

Draft animation, in-game edits, polishing. The timeline depends on the number of characters and effects, so we lock it before the start and show progress on intermediate builds.

How do you check the load from animation?

We run the scene on a weak device, remove unnecessary layers and frames, and split dense scenes by state.

Let's discuss the task: what to send to get an estimate and plan

So that the animation work estimate is based on facts, not guesses, we need materials for task analysis: the more complete the inputs, the fewer assumptions in the calculation and the more realistic the animation work plan. The minimum set looks like this.

  • A built version of the game or an interactive prototype — it shows the real timing, animation behavior on the device, and places where transitions break.
  • Source files: frame-by-frame sprites, atlases, character skeletal files — it immediately becomes clear what is reused and what is drawn from scratch.
  • A list of scenes with priorities: where animation loops, where it plays once, where it depends on the player's state.
  • Video of the problem area: stutters on a weak device, jerky transitions, animation desync with a hit or sound.
  • Visual references — videos or games where the desired style, pace, and manner of movement are already implemented.
  • Project constraints: target devices, build size, number of simultaneously animated objects — they determine how many layers and poses are affordable.

Then the order is: we analyze the scenes and current files, evaluate each by complexity and risks, then assemble an animation work plan with stages, delivery order, and acceptance points. Describe the task and send what you already have — we will come back with an estimate and plan.