December 2017 - Android.


Introduction
Features
Downloads
Format
Credits

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


Features:
- Fast and light yet powerful.
- Comes with 5 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!


Downloads:
Live Wallpaper Maker on Google Play


Themes:
New in v1.003: Use the menu option "Import Downloaded Themes" to automatically move all the downloaded .zip files starting with "LWM_" to the correct folder.

Sample Themes:
Jungle by Jesse M.
Gothic Town by Luis Zuno
Cyberpunk Street by Luis Zuno
Glacial Mountains by Vicente Nitti
Underwater Diving by Luis Zuno

Community Themes:
The Official XDA Thread


Format:
Theme
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.

Iterating
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.

Images
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:
spriters-resource.com
spritedatabase.net

Script
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 ...
x
A line with simply an x will stop the execution of the script, skipping all the remaining commands. Example:
x
[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.

Commands
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].

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.

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.


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

Share on Twitter:


Share on Facebook: