Efficient, Lossless, and Secure
ESKEES is a desktop application that assembles parts from PSD files or illustrations and exports them as EMG—an open format that treats the assembly as a single texture. It offers a solution useful for loop animations and asset management. AlphaChannel Supprted.
In development. If you would like to take part in the test, apply below.
News
-
eskees.com is liveNEW
The product site is up. We are getting the Editor ready for release.
Product
-
ESKEES Editor
Coming soon
Assemble parts from PSD / KRA / images / animated GIF / sprite sheets, add blink, lip sync and motion, and export .emg. A Windows desktop app.
-
ESKEES Screen
Test build
Use motion backgrounds on your PC desktop.
-
CDN
Available
A player that renders .emg in the browser. Works with two script tags.
-
Viewer
Available
Open a .emg in the browser and inspect its parts, layers and atlas. Just drag your own file in.
-
Importer
Available
Implementations that bring .emg into Unity, Godot, Ren'Py and YMM4. All published under Apache 2.0.
ESKEES Screen
Runs the .emg you exported as a Windows desktop wallpaper. No other software needed.
-
Nothing else to install
It draws with the OS WebView, so no browser is bundled.
-
Driven from the tray
Switch the file on show, how it fits the screen, the render resolution and the backdrop colour.
-
Fits any screen
Crop to fill, fit whole, or stretch.
-
Eco Mode
It stops animating while covered by other windows, and on battery or in power-saver mode.
- Windows 10 / 11. It renders with WebView2, which ships with Windows 11.
- Scheduled Releases for macOS Versions.
- A test build is available. If it does not work, send us eskees-screen.log from next to the executable.
Use it from a CDN
Two script tags and a URL. No build step, no bundler.
<div id="layerContainer"></div>
<!-- JSZip(必須依存。.emg は ZIP なので展開に要る) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js"></script>
<!-- EMG Player -->
<script src="https://pxrllc.github.io/emg/emg-player.0.3.0.js"></script>
<script>
EMGPlayer.loadEmgFromCDN('https://example.com/avatar.emg');
</script>
- JSZip is required. A .emg is a ZIP, so it is needed to unpack it. Load it first.
- It renders into #layerContainer by default. For another element, pass loadEmgFromCDN(url, 'myContainer').
- The result arrives on window as emg:loaded / emg:error.
- The .emg may live on another origin, but it must allow CORS — it is fetched.
Drive it from the host
EMGPlayer.setFrame(partID, frame) | Pick the visible frame of a switch part |
EMGPlayer.showPart(partID, shown) | Show or hide a part |
EMGPlayer.setPartPlaying(partID, playing) | Stop or resume a part |
EMGPlayer.setBlinkState(state) | Blink (requires mapping.json) |
EMGPlayer.setViseme(v) | Lip sync (same) |
EMGPlayer.setExpression(name) | Expression (same) |
EMGPlayer.setPreset(id) | Switch several parts at once (0.5.0 §5) |
It is currently served from the public repository's GitHub Pages. If it moves under eskees.com, the versioned URLs will be kept.
Demo
Experience the features of EMG.
-
Browser packer
Drop in a PSD and it converts to .emg.
Learn
EMG is an open format. The specification and the implementations are public (Apache 2.0).
-
EMG specification
The current 0.5.4 specification.
EMG specification
Readable here, version by version. Each version says whether it is stable.
-
EMG 0.5.4
Current (pre-stable) (JA)
Every field, with the version that introduced it and where it is specified.
The source of truth is the public repository, pxrllc/emg. What is served here is a copy fetched at build time and never edited by hand.
Changelog
-
eskees.com is live
The product site is up. We are getting the Editor ready for release.
-
EMG specification 0.5.4
Added per-frame transforms (§7.4.1) and rules for blend modes.
About
PXR LLC
ESKEES is a product of PXR LLC. We keep the EMG format open, and build ESKEES as a product on top of it.