Media Guidelines

From WorldForgeWiki
Jump to: navigation, search

This is a collection of guidelines on how to best create and organize media. If you have any questions, please use the regular communication channels to ask questions.


  • All contributed media should be licensed under as many licenses as you like, but the default for all media contributed to the media repo (unless otherwise stated) is to be dual licensed with the GPL v2+ and GFDL v1.1+ license. What does this mean? (artist retains copyright, (and thus also the option to release the art later under additional licenses), but the GPL licensed version remains open, and can be used and modified by others as long as they make their modifications available).
  • If you want to license your media under additional licenses you should place a file named "COPYING" next to your media. This file should contain information about the additional licenses in use. Note that if you for example want to license your media under the CC-BY-SA license it must then be possible to use your media without it being dependent on any other media which is only licensed under GPL or GFDL. This is normally no problem. A mesh for example can be used without the suitable textures (it just won't look as nice). I.e. it's not considered a "derivative work" of the texture.

Content Creation Systems (CCS) Modeling/Animation Package

  • You can use whatever authoring tool you want, but we prefer if you use a FOSS tool such as Blender or The GIMP. 3D artists that have contributed to WorldForge have used and are using Blender, XSI, Maya, among others.
  • Note that it's of outmost importance that you both provide your source materials (.blend files for example) as well as the final result (.mesh files).
  • It is also highly recommended that you provide a Wavefront Object file (.OBJ) and material (.MTL) as this is a very commonly used and accepted format that all modeling software supports in Import/Export. This will ensure that others can make use of your work even if their software does not provide an import option for your native format.

File Formats and 3D Models

  • Include both the original 3D file (e.g. .blend) as well as the 3D model to be used in the game. The Blender files go to the art section /trunk/art/. Exported assets go to /trunk/3d_objects. The /trunk/3d_skeletons directory is deprecated and the media found there is in the process to be moved to /trunk/3d_objects.
  • Ember uses the Ogre format. You can export it from Blender, XSI, 3Ds Max, Maya, Milkshape and Houdini along with many others.
  • Sear uses the Cal3D format for characters. (Poorly supported)
  • 3DS file format is OK for static objects when using Sear, but Ember cannot read it.
  • Preview your assets to make sure that they look okay by using the Ember client. TODO: write up how to best do this.
  • Use Commandline Tools to convert xml and binary files for editing. Installing the tools should do the trick natively using MSDOS as long as the tools are in the Environment Path. Get the latest OgreCommandLineTools here.
  • Recommendation is installing cygwin and placing the binary files in /cygwin/usr/local/bin along with the dlls.

Number of Polygons:

  • 2000 to 4000 triangles for characters.
  • 400 - 900 triangles for items, depending on complexity.
  • UV Layout & Templates: UV layout should be 1 to 1.
  • For paintovers and reusable textures bake down the textures to the destination UV.


  • 1 unit = 1 meter.
  • Human is 1.8 units in Blender3D (very very small).
  • Location of the human male
  • When making a structure, e.g. something which will be placed on the ground and in many cases have a foundation (like a house, or a stone wall), you must make sure to extend the model a couple of meters below zero height. The reason is that when the mesh is placed on uneven ground, which often is the case, there then won't be any gap between the ground the the bottom of the mesh.


  • Texture sizes are to be at 1024 x 1024 pixels.
  • Images sizes are reduced and compress automatically by scripts upon delivery.
  • Image width and height need to be powers of two. For example, 1024x1024 and 2048x512 are both ok, but 1024x300 or 2048x1002 are not memory efficient. In addition older cards will not display the textures if they are not authored in powers of twos.
  • Make optimal use of texture space in when laying out UVs. The current bottle neck in games are textures not polygons.
    • When ever possible utilize existing Texture Templates or create one if there is not one available. This method promotes texture re-use and model variability.
  • Maps needed for a complete asset are the following;
    • Diffuse Map = name_of_asset/D.png
    • Specularity Map (optional) = name_of_asset/S.png
    • Normal Map with a Displacement Map in the alpha channel (optional) = name_of_asset/N.png
    • Normal Maps are swizzled X+Y+Z.
  • Next to the D.png texture there should be an Ogre material. The name of this file is "ogre.material". Note that such a material can be automatically generated from existing textures through executing the following command
resources/bash_scripts/ --create-missing


  • All D.png textures should have at least one Ogre material defined. The textures aren't used directly in Ember; there must be a material which reference them.
  • The material should be contained in a file named "ogre.material" placed next tothe D.png texture.
  • The material should inherit from one of the base materials found in "/trunk/resources/ogre/scripts/materials/base.material". You can of course also create your own material, but then it won't work with shadowing and other features found in Ember.
  • All materials are named using a standard based on their directory path. To get the proper path apply these rules:
    • Remove the first level under "trunk", i.e. "3d_objects" or "3d_skeletons" (The idea being that all assets in "3d_skeletons" eventually being moved into "3d_objects".)
    • Remove all instances of the word "textures". The reason being that this is redundant, as the naming scheme already states that all textures should be placed in a directory named "textures".
    • Prepend the name "/global/". The reason is that we should in the future allow for other "namespaces" for media. "global" is the namespace for all current media provided by Worldforge.
  • An example would be the texture "/trunk/3d_objects/items/furniture/textures/avalon/D.png" which will get the name "/global/items/furniture/avalon".
  • We however also provide a script which will automate this for you. While standing in the "trunk" directory, run the "resources/bash_scripts/" script. Use the "--print-missing" flag to print out any missing materials, and the "--create-missing" flag to make the script create suitable materials. Depending on whether S.png and N.png textures being available the proper parent material will be chosen.
  • The toolchain for a texture would thus be:
    1. Create a D.png texture in the correct path, using the naming scheme. Optionally also create a S.png and/or N.png texture if you want a specular and normal map.
    2. Stand in the "trunk" directory and run this command: "sh resources/bash_scripts/ --create-missing". You should now have a proper Ogre material created.

Art Source Directory Structure

  • Put all source art in to the art directory.

Game Assets Directory Structure

  • Use this directory structure.


  • We provide the Wombat web tool to allow for artists to commit new media.
  • If you're doing regular updated and additions you probably want to commit directly to Subversion. Check the list of coordinators to see whom you should contact. Also read the media FAQ to get up to speed on how Subversion works.
  • If you commit to svn you are automatically publishing under the GPL v2+ and GFDL v1.1+ licenses which are located at the root directory of the WorldForge trunk.

SVN - Wrangling The Art

  • E-mail balinor a.k.a. Philip [balinor at] and request a login and password.
  • You may also go to and join the media channel and request a login and password from balinor.
  • Download TortoiseSVN
  • Install TortoiseSVN and restart your system.
  • Create a directory where you want to check out the content to. C:/wf_trunk/. If you created this location elsewhere you will want to create a soft link using makelink.exe. A binary file with install.bat is located here
  • Another method which does not require compiling any code is to use a Freeware utility called Junction which can be found at in the File and Disk Utilities section. Copy the executable file into your \Windows\System32 directory and follow the instructions on how to create a link from the download page.
  • After creating the wf_trunk directory, right click in the folder and check out SNV repository by clicking on the SVN Checkout... .
  • Fill out URL of repostiory: with "". SVN will ask you for your login and password that was supplied by balinor. Download the files, downloading the files will take a while.



If you're authoring media and running Ember you would want to configure Ember to include your local Subversion repository to be used directly by Ember. The media used by a normal installation of Ember is a subset of the media repository, with most textures downscaled. In this case however you want Ember to use the raw media repository. Do this by adding an option to the Ember config file. Create a file (if none already exists) named "~/.ember/ember.conf" (Linux) or "c:\users\<your username>\appdata\roaming\ember\ember.conf" (Vista) or "c:\Documents and Settings\<your username>\ApplicationData\ember\ember.conf" (XP) and add these lines:


where <extramediapath> is the full path to where you've checked out the "trunk" directory. When running Ember you will now have it first load all of the media found in the media repository. Do note that since this media often is quite large (with textures being 1024*1024) it might eat up more RAM than usually.

Once inside Ember you can now use the built in AssetsManager to view meshes, textures, materials and shaders. You can also reload these assets in real time, allowing you to keep a window of Ember open while you alter an asset, and then seeing the new version of that asset directly in Ember after having it be reloaded. To bring up the AssetsManager use the console command "/show_AssetsManager".

You also have the option to open Ember and have it show a certain mesh directly in the AssetsManager. Do this by using these command line options:

ember --config authoring:loadmesh "path to your mesh"

For easier use this can be added to the OS through a .desktop (on Linux) or a .lnk (on Windows) file which would add such an option to the file manager.

More info

Human model layout