oice users can upload several types of asset and group them into an oice library. They are namely: characters(sprites), backgrounds, peripherals, BGM and SFX. Among them the operation of uploading sprites seems to be the most complicated, so let me share some of my tips here.

This passage is written based on oice v3.5.0. As oice.com has updates almost every week, the content of this passage may be out-dated. If you find any out-dated content, please let me know.

Click the + Button to create new characters.

Characters and Sprites

In oice.com a “character” is different from a “sprite”. We may regard a “character” as a collection of sprite images. There are some global parameters for each character, for example, character name, re-namable setting, the coordinates, etc. Each sprite image normally represents a single face/emotion with different posture.

When you upload the sprite images, you can hold the shift key to select multiple files and upload them in a batch.

By they way, the sprites must be in png format as you need to make the space around the sprite to be transparent.

You can hold the shift key to select multiple images and
upload them in a batch.

Attribute the author of the sprite

oice takes the author attribution seriously. You can attach the author’s name to each sprite image directly if that author has an oice account. If the author does not have an oice account, you can still attach a piece of arbitrary text such as a URL or the author’s email address to that sprite.

You can attach the author’s name to each sprite image directly.

Character’s Position and Coordinates

There is a preview pane on the right hand side of the sprite upload view. You can change the position of the character by drag-and-drop, but I recommend to change the coordinate values under the global setting section directly as the operation will be more accurate. If you adjust the horizontal coordinates (value x), both the sprites on right and on the left will be affected as oice will try to balance both positions. If you adjust the vertical coordinates (value y), all left/centre/right sprite versions will be affected in line.

Note that the coordinates apply to the “character”, that means all sprite images share the same set of values. Pay attention that the “origin coordinates” (0,0) refers to the point at the upper left corner of the canvas, and the (x,y) coordinates of the sprite are referring to the upper left corner of the sprite image including the transparent space. For example, if you set the left position of the character to be at (-30,0), the upper-left corner of the character will then be set outside the canvas.

Global parameters for a character -apply to all sprites


You can set the character to be “renamable” so that other users can assign a custom name to the character while using it in a story.

Dimension of Sprite

The canvas of oice is 1080x1080 pixel, so I always set the height of the sprite to be 1080 pixel including the transparent space. If the size of your uploaded image is too big, part of the image may go beyond the seeable canvas.

An important tip for the sprite size is that all sprite images should be in the same dimension including the transparent spaces. If there exists one sprite that the size is different from the others, the character will look ugly while switching between different faces. Remember to set identical canvas size for the sprites when output graphics.

Order of the sprites

The order of the sprites will affect the efficiency of the story writer. It is better to have the most common faces to be arranged first. Unfortunately, oice does not support the reordering of the sprite images now. What you can do is to upload the sprite images one by one, and upload those which are the most common first.

Other tips

As I use photoshop only, the screens I used here are all photoshop GUI. The principle of the skill, however, is the same: it is about the use of “layers”. It is nothing about oice functions, but computer illustration only.

When the character changes faces in a story, in order to have the best play I will used a single layer for the sprite’s head and body. Each faces and hand gestures will all be in separate layers. Although the posture of the sprite will be limited by this method (only the hand gestures are different), it is an efficient way for me to output sprites with different expressions, and for good asset management in the future.

In addition, if your library contains more than one character, note that the dimension of their body (especially the head) are similar, or else you will get an effect of one character is being “nearer” than the others (see the illustration below).

When dimension is different, one character is being “nearer” than the others.

The last point to be shared is to reserve some transparent space around the sprite, but not necessary using 1080x full width. The reserved space is useful if you have some new hand gestures added in the future, which the arms may be extended.

Did this answer your question?