December 2017 - Android.


Create your own dynamic themes using a simple format, then share them on the web or download new ones made by the community!

- Fast and light yet powerful.
- Comes with 7 random generated sample themes. Check how they work!

- Make your own themes or download more from the community.

- Perspective change as you swipe through your home screens, or with the gyroscope.
- Many settings: Toggle elements, FPS limit etc.
- Free. No ads!

Live Wallpaper Maker on Google Play

Community Themes:
The Official Thread on VG-Resource
The Official Thread on XDA

A theme is a collection of images + one script describing how it works.
These files can be either in a .zip archive - for sharing, or in a folder - for fast iteration.
The name of the theme is the .zip filename or the folder's name. The underline characters will be replaced by spaces.
The icon of the theme is the file icon.png, the recommended resolution is 512x512 pixels.
All the themes need be in the /LiveWallpaperMaker/ folder which will be created on the first launch.

The best way to learn how to make new themes is to unzip one of the samples to a sub-folder in /LiveWallpaperMaker/ then check and edit the files there.
Touch the Current Theme button in the settings to update the files.

All the images need to be in the .png format - transparency is supported, and with a specific naming syntax:
[name (string)]_[variation (int)]_[frame (int)].png
Example: street_layer0_1_1.png => name = street_layer0, variation = 1, frame = 1.
[name (string)]_[frame (int)].png
Example: woman_6.png => name = woman, frame = 6.
[name (string)].png
Example: base.png => name = base.
Want to make a theme from a specific game? Check out sprite-rip websites such as:

The script should be named theme.txt, each line in it represents a command:
# [comments]
A line that starts with # will be ignored. Example:
# Art by ...
A line with simply an x will stop the execution of the script, skipping all the remaining commands. Example:
[command] [key1]:[value1] [key2]:[value2] ...
This is the syntax of a command with multiple parameters. The order of the parameters is not important. Example:
floor name:base ycollider:78
=> command = floor, name = base, ycollider = 78.

floor (name (string), ycollider (int))
Sets the floor where the characters will walk and the sprites are on top of. The texture is [name].png, the recommended size is 672x80 pixels.
The characters and sprites will be at the height specified by [ycollider], in non-scaled pixels.

ceiling (name (string))
Sets the ceiling with the texture [name].png.

background (name (string))
Sets the background with the texture [name].png. It will be stretched on the whole screen with a linear filtering.

screen (name (string))
Sets the overlay on top of the scene with the texture [name].png, this can be used for having darker corners or a TV effect etc. It will be stretched with a linear filtering.

add_sprite (name (string), instances (int), variations (int), frames (int), duration (int), yposition (enum), ydirection (int), xseparationmin (int), xseparationmax (int), yseparationmin (int), yseparationmax (int), layer (enum), xscroll (float), xanimation (float))
Adds [instances] sprites, with textures starting with [name].
The texture is randomized between the [variations], and animated if [frames] > 1, each frame lasting [duration] milliseconds.
[yposition] can be either floor - the sprite Y line is on the floor, top - on the top of the screen, and bottom - on the bottom of the screen.
[ydirection] set it to 1 if the sprites are on top of the Y line, or -1 if they are under.
The initial X position of each sprite is set relative to the floor from left to right, the X separation between the sprites is a random value between [xseparationmin] and [xseparationmax], these values are multiplied by the sprite's width. Setting both values to 1 will make the sprites joined. Same principle for the Y separation with [yseparationmin] and [yseparationmax].
[xoffset] add this parameter to offset the sprites to the left of the floor and make an horizontal tile of sprites. Handy for big layers of animated clouds such as in the glacial mountains theme.

add_char (name (string), instances (int), frames (int), duration (int), speed (float), type (enum), between (string), xscroll (float))
Adds [instances] characters moving horizontally on the floor, with a [speed] factor, with textures starting with [name], and animated if [frames] > 1, each frame lasting [duration] milliseconds.
[type] can be either floor - the characters are on the ground walking in one direction then turn around when reaching the end, sine - they jump in a sine curve such as in the flying fish sample, between - they will walk between the sprites named [between] as in the pipe sample.

add_particle (name (string), instances (int), variations (int), frames (int), duration (int), layer (enum), xscroll (float), xanimation (float))
Adds [instances] particles, with textures starting with [name].
The texture is randomized between the [variations], and animated if [frames] > 1, each frame lasting [duration] milliseconds.
[yanimation] is the factor the elements will move vertically overtime, it can be set to negative. Set it to 0.0 if the element is static.

Common Parameters
[layer] can be either back - if the elements are behind everything else, or front - if they are on front of everything. The drawing order is:
Background > Particles Back > Sprites Back > Floor > Ceiling > Characters > Sprites Front > Particles Front > Screen.
[xscroll] is the factor of the horizontal movement when the perspective changes - which depends on the depth of the layer. A value of 50.0 is the same as the floor, the value should be higher if closer to the camera and lower if further away.
[xanimation] is the factor the elements will move horizontally with time, it can be set to negative. Set it to 0.0 if the element is static.

Design & Development: baka-neko (
Sample Themes Art:
Jesse M. (@Jsf23Art), Luis Zuno (@ansimuz), Vicente Nitti (@vnitti_art)
Special Thanks: altares

Share on TwitterShare on Facebook