-
-
Notifications
You must be signed in to change notification settings - Fork 491
Sprite
Most animated images you see in supertux are sprites. Sprite definitions are defined in individual files that end in “.sprite”, e.g. “data/images/creatures/snowball.sprite”, and follow S-expr syntax.
(supertux-sprite
(action
(name "left")
(hitbox 2 4 31.8 31.8)
(images "left-0.png"
"left-1.png"
"left-2.png")
)
(action
(name "right")
(hitbox 2 4 31.8 31.8)
(mirror-action "left")
)
(action
(name "squished-left")
(hitbox 1 -19 31.8 31.8)
(images "squished-left.png")
)
(action
(name "squished-right")
(hitbox 1 -19 31.8 31.8)
(mirror-action "squished-left")
)
)
Let's look at the sprite “snowball”:
A sprite consists of a set of actions. An action is simply an animation composed from several images. The engine can render a sprite and change it's currently displayed action. The snowball sprite, for example, contains 4 actions named “left”, “right”, “squished-left” and “squished-right”.
Additionally you can define animation speed (fps ) and a hitbox (hitbox ).
The hitbox offset indicates where the “origin” of the sprite is: If the engine draws a sprite at position 50,50 then will be substracted from the x coordinate and will be substraced from the y-coordinate. The hitbox size will get read by most sprites' gamecode to set the width and height of an imaginary rectangle that defines what parts of a sprite are solid.
The sprite description file is S-expr based. A sprite description starts with a (sprite) list, It should then contain a name entry (name “myname”) and then several (action) entries (at least 1).
The action block contains then the name of an action (name “myaction”) can optionally contain an (hitbox ) block. It's also possible to add an (fps number) block to define the number of frames played per second. Finnaly comes a list of (images) or the '(mirror-action “actionname”)'' keyword which will take an already defined action and flip all it's images vertically.
You can easily add your own sprites by creating a custom .sprite file and placing it somewhere appropriate, e.g. “data/creatures//.sprite” for badguys or “data/objects//.sprite” for game objects. Now you probably want to test your sprite. This is easily possible from the game Console (example for data/images/creatures/yeti/yeti.sprite):
testsprite<-FloatingImage("images/creatures/yeti/yeti.sprite")
testsprite.fade_in(1)
testsprite.set_action("run-left")
To remove the sprite from your screen, use
testsprite<-null
An alternative would be creating ScriptedObjects in the leveleditor and selecting your spritefile
A Python/GTK-based sprite editor, named GSprite, is currently under development. Such an editor will have a graphical interface, and be able to add, remove, and edit individual actions, but will require Python, GTK, and PyGTK libraries as dependencies.
Category:Game Engine Category:File Formats
Home
Guidelines
Game Mechanics
Tools
Engine
- Cameras in other games
- Collision
- Configuration File
- Console
- Cutscenes
- Game_Engine
- Lighting
- Map_transformer
- Portables
- SceneGraph
- Scripting
Specifications
Milestones
- Milestone 1 Analysis
- Milestone 2 Design Document
- Milestone 2 Design Document Old
- Milestone 3 Design Document
Building (mostly outdated)
- INSTALL.md
- Building
- Building on macOS
- Building SuperTux
- Building on Windows
- Building with MXE (cross-compile)
Meetings