From Platinum Arts Sandbox Free 3D Game Maker
MovieCube is a Open Source Machinima production tool, based on the Cube 2 Engine, known from the game Sauerbraten. MovieCube is part of the Platinum Arts Sandbox Free 3D Game Maker project. As MovieCube is under heavy development, things are always changing. So before you post support requests, please consult this wiki first. All recent changes will be announced here.
What is Machinima
"Machinima (pronounced /məˈʃiːnɨmə/ or /məˈʃɪnɨmə/) is the use of real-time three-dimensional (3-D) graphics rendering engines to generate computer animation." Machinima on Wikipedia
Windows: Use the Launcher and select the MovieCube tab or click on MovieCube.bat
Linux: change into your PAS folder,
In MovieCube you can produce Live Machinima in multiplayer mode as well as working on scripted Machinima projects. You can import various model formats as md2, md3, md5 and obj. As modeling software we recommend blender, which provides exporters for these formats.
As MovieCube is based on the Cube2 Engine, known from the game Sauerbraten, you can create your own movie sets and maps with an powerfull and easy to use ingame editor also in cooperation over the net.
Tutorial on scripting commands
- Press "E" to get into the editmode, type:
- this is used as waypoints and spawnpoints for characters
- attr1: character yaw (vertical position) when used as spawnpoint
- attr2: radius/area
- adds a new character definition, you can now add commands to the characters command queue
/appendactionspawn [name] [state] [waypoint map uid]
- this adds the spawn command to character definition referenced by param name.
- param state should be always 0 at the moment
- param waypoint map uid is the unique identifier of the waypoint you want to spawn your character. Hover over the waypoint in editmode with the mouse to see the uid. Note that every map entity, mapmodel, waypoint, etc, has a unique id and cannot be changed by users.
/appendactionwait [name] [state] [milliseconds]
- lets a characters wait for certain milliseconds
/appendactionmove [name] [state] [waypoint map uid]
- lets the character walk to a given wayoint
- spawns a new character based on character definition given by name, you can repeat this several times
An Example on How to use These Commands
- go into editmode and add some waypoints:
- add a new character definiton, a temporary character will spawn in fron of you
- add some actions:
/appendactionwait mychar 0 5000
/appendactionspawn mychar 0 0
/appendactionmove mychar 0 1
/appendactionwait mychar 0 5000
/appendactionmove mychar 0 2
- leave editmode, your temp character will disapear
- spawn a real character
- and another one
- let a character action run as loop
/loopchar = (addcharacter mychar); loopcharacter $loopchar
- The "appendaction..." commands starts with the name of the character, the state (we have only state 0 at the moment) and the parameter of the command itself, e.g. waypoint id in spawn or move or the time in milliseconds in the wait command.
- All map entities including waypoints have an unique id, use this id as last parameter in
appendactionmodeto choose the waypoints. You will find these id's in editmode shown on top of the waypoint entities.
In MovieCube you can define characters, their appearance and the actions they will do. To make a movie or animation you can spawn different instances of an character.
newcharacter name - adds a new character to your map. In editmode the new character will spawn in front of you.
After you created a new character you can add commands the character will execute like change model or let the character move to a waypoint.
(not implemented) All commands you add to an charater where stored in command queue. Every character can hold different commands queues (aka states) and switch between them. The first state is created automatically when you create a new character. In States you can define different types of actions, e.g. use state 0 for configuring the character, state 1 for walk actions, state 2 for talk or interact with others. Spawned characters can receive signals forces them to change their actual state. (this does not work at the moment.)
adding and changing Charactermodels
If MovieCube starts only the default charactermodel is avabiable. To add more character models load them with the preloadplayermodel command.
thirdperson 2; preloadplayermodel ogre; setplayermodel 1
This will load a new playermodel and registers the animations. You can test this by changing your playermodel:
Overwrite Animation (AO)
(not fully implemented) In MovieCube you can overwrite the exisiting standard animations of an player or charactermodel. You can test this on your playermodel. If your model has an animation 50 (depends on the model you use), you can use this animation to overwrite the standard animation for e.g. swimming by using the following animation overwrite id's:
Animation Overwrites ID's:
AO_DEAD = 0, AO_DYING = 1, AO_IDLE = 2, AO_FORWARD, = 3, AO_BACKWARD = 4, AO_LEFT =5, AO_RIGHT = 6, AO_HOLD = 7, AO_ACTION = 8, AO_GESTURE = 9, AO_PAIN = 10, AO_JUMP = 11, AO_SINK = 12, AO_SWIM = 13, AO_EDIT = 14, AO_LAG = 15
setao 13 50 - now animation 50 is used as swimming animation
Future versions of MovieCube will provide a GUI for that.
MovieCube supports adding various attachments to the player or characters. Keep in mind that the model you use has to support this. The model needs special tags to attach stuff to it. For md5 models you have to define these tags with the
md5tag command in the md5.cfg config file of your model.
md5tag [armature bone] [tag name] - the armature bone are the existing bones of your model, the tag names are names hardcoded in MovieCube and refers to body parts.
Sample tag configuration of an model:
md5tag Head tag_head
md5tag Arm.L tag_rarm
md5tag Arm.R tag_larm
complete list of body parts and their corresponding tag names:
0 "Head" - "tag_head"
1 "Neck" - "tag_neck"
2 "LeftShoulder" - "tag_lshoulder"
3 "RightShoulder", "tag_rshoulder"
4 "LeftArm", "tag_larm"
5 "RightArm", "tag_rarm"
6 "LeftForearm", "tag_lforearm"
7 "RightForearm", "tag_rforearm"
8 "LeftHand", "tag_lhand"
9 "RightHand", "tag_rhand"
10 "Belly", "tag_belly"
11 "Hip", "tag_hip"
12 "LeftThigh", "tag_lthigh"
13 "RightThigh", "tag_rthigh"
14 "LeftShin", "tag_lshin"
15 "RightShin", "tag_rshin"
16 "LeftFoot", "tag_lfoot"
17 "RightFoot", "tag_rfoot"
To attach an other model to playermodel use the following commands:
playerattach 8 "items/flag" 0
playerattach (getattachnum LeftHand) "items/flag" 0
this will attach the model stored in packages/models/items/flags onto your players left Hand. the last parameter controls the animation of the attached model. just leave it blank, if it dont have any animation.
Listing of the current character commands available in Moviecube (27-09-2010)
newcharacter [name] - new character template
listcharacters - list character templates
addcharacter [name] - adds a new character based on template [name], returns a local uid
deletecharacter [name] [force] - deletes a character template
store commands in a character template:
appendactionspawn [name] [state] [uid] - set spawn point
appendactiondestroy [name] [state] - destroy character
appendactionwait [name] [state] [duration] - wait, duration in milliseconds
appendactionmove [name] [state] [uid] - move towards a waypoint
appendactionspeed [name] [state] [speed] - set character speed
appendactionmodel [name] [state] [model] - set character model, [model] = number of the model added by preloadplayermodel
appendactionsetao [name] [state] [anim] [ao] - animation overwrite
appendactionsetgesture [name] [state] [anim] - set animation for gesture
appendactionsethold [name] [state] [anim] - set hold animation
appendactiongesture [name] [state] [duration] - trigger gesture, duration in milliseconds
appendactionattach [name] [state] [body] [model] [rule] -
appendactiondetach [name] [state] [body]
appendactioncommand [name] [state] [command]
appendactioncond [name] [state] [condtional] [command]
appendactioncondwait [name] [state] [condtional]
appendactionjump [name] [state]
appendactionface [name] [characterid]
appendactionexpect [name] [characterid] [raduis]
appendactionfollow [name] [characterid] [follow characterid]
loopcharacter [name] [loop]
See RPG_cutscene for more info.
using the engine
moview 320- set the width of your video clip
movieh 240- set the height of your video clip
movie myclip- record movie into file myclip.avi
movieagain to stop recording
high resolution capture with glc (linux)
capture a sandbox movie with glc
glc-capture --start --out=/path/out.glc --fps=25 bin/sandbox_client_32_movie -t -w1024 -h768
you can use glc-play or mplayer:
glc-play /path/out.glc -y 1 -o - | mplayer -demuxer y4m -
glc-play /path/out.glc -o - -y 1| mencoder -demuxer y4m - -nosound -ovc x264 -x264encopts qp=18:pass=1 -of avi -o /path/video.avi
you can find more examples at the glc website.