World Foundry FAQ
Want to add a question or an answer? Use the "Edit" link at the bottom of this page. Anyone can add questions or answers.
Q: What is World Foundry?
A: A game development kit designed to allow non-programmers to create games by using
- a graphical 3D editor to create game object geometry and mesh animations (sometimes called "geometry editor")
- a graphical 3D editor to place game objects in 3D (the "level editor")
- a menu-based system "attribute editor" to assign attributes to game objects (mass, speed, damage value, lighting)
- a large collection of pre-programmed general-purpose game object types which can be included by clicking in the attribute editor. Object types include tracking camera shots, movement paths, shields, weapons, static and moving platforms, particle systems, spikes, monetary units, life/health displays (meters), object generators (to generate bad guys, etc), and more. See CommonObjectAttributes and ObjectAttributes.
- a scripting language to allow level designers to add dynamic game behavior without writing C code
- an extensible, cross-platform 3D engine which handles player inputs, scripting, physics-based-movement, and rendering of the 3D game world
- a build and packaging system which allows you to deploy (distribute) your game as a single file
The "geometry editor" and "level editor" are external packages to World Foundry. 3DSmax (commercial product, Windows only) was originally used as geometry editor and level editor; some work has been done on making Innovation 3D (GPL, http://innovation3d.sourceforge.net
, Linux only) work as a geometry and level editor. Currently simple levels can be exported from Innovation 3D and run inside of WorldFoundry
. Work will start soon on making a Blender (http://www.blender3d.com
, GPL, Windows and Linux) geometry and level exporter, at which point a fully free-software geometry editing and level editing solution will exist for both Windows and Linux.
As you can see, World Foundry is more than just a "3D engine" - it is a toolkit designed to help you make games.
Q: Where can I download World Foundry?
A: You currently have to download it from CVS and compile it yourself.
Q: How is World Foundry licensed?
A: GNU GPL. All of your game content (including dynamic behavior, programmed through scripts) is independent of the World Foundry license and can be proprietary/commercial.
Q: What features does the World Foundry game engine have?
A: See Overview for a summary, and WorldFoundryFeatureList
for a detailed analysis.
Q: What platforms does World Foundry support?
A: Game creation and execution work under both Linux and Windows. (October 2002 - Linux geometry, animation, and level editor still in progress, will use Blender as exporter. Preliminary Innovation3D
export support exists for Linux already, but Blender is a more mature 3D package.)
Q: What makes World Foundry unique?
- the predefined collection of many useful and functioning game objects (see CommonObjectAttributes and ObjectAttributes)
- the intuitive graphical attribute editing system
- the use of external, professional, free (GPL) 3D packages to do level editing and geometry editing
- the focus on making as much behavior as possible parameterizable and tuneable without changing any C code in the engine - in other words, putting power in the hands of non-programmer game designers
Q: What's the best way for me to learn how to use the World Foundry?
A: There is no best way to learn, but to become familiar with the engine it's important to become familiar with the classes and objects of the World Foundry, and their attributes.
Here's one recommended course of study:
- Do the tutorials.
- Explore the engine, building objects out of the Cookbook.
- Try to create something of your own, using the individual objects descriptions in the resource guide.
- Experiment with building a complete level.
Q:What happens if an object is created in the Gameworld at the same location as another object.
A: This ain't Quake, and you don't get extra points for tele-frags. If an object comes into existence and another object is already there unpredictable behavior could result.
If you're running in debug mode the game will probably crash. If you're running in release mode a number of different things could occur.
Try to avoid this whenever possible.
Q: What does real-time mean?
A: Normally the game runs in real-time. For each game-loop the amount of real-time that has passed is communicated to the objects in the world.
This value can and will vary over the course of the game, the objects then update their position based on the amount of "real-time" that has passed. The upshot is that if the frame-rate slows down the objects will not move more slowly, but will move less smoothly.
Q:What resolution does World Foundry run in?
Unless the -window switch is set the game runs in full screen mode. It chooses which resolution by finding the lowest supported 16 bit resolution. (Note that the engine only supports 16 bit modes.)
From there the system moves through higher resolutions until it finds one that is supported.
Full screen modes are:
Q:What's the difference between Z-Buffered and Z-Sorted?
When 3D objects are drawn into the distance the system must have a way to determine what polygons appear over one another, and what vertices should be hidden from the camera.
This is the more advanced of the two solutions and is supported by the PC, as well as advanced game systems like the N64.
In this system as each pixel is written it checks its 3D position to see if any pixels have previously been drawn before it. If their virtual distance from the camera is closer than the existing pixel then the new pixel will be drawn. If not, then the existing pixel remains.
This solution is used by the Playstation and Saturn, and 3DO..
This system is similar to what occurs above, except that each polygon is checked for distance instead of each pixel. While it takes much less processor time it also does not allow for accurate rendering because polygons cannot intersect. One or the other must be drawn closer to the camera.
Q: What exactly is a mailbox?
A: In the World Foundry Mailboxes function similarly to variables. They contain numbers.
Generally Mailboxes are used by objects to gather information about the current state of the world, or to allow other objects in the world to be aware of their own state.
There are three main ways that mailboxes are used:
Many times a mailbox can also function as a light switch. In this case when the value is zero it is off, when the value is non-zero it is on.
In this case it the Mailbox contains information that says that points to a specific object. If, for example, you wanted a camera to track a missile, you would put the missile's identifying value into this mailbox.
This Mailbox contains a specific value. Hit points and economic units are both examples of this type of Mailbox.
Q: How do rooms work?
A: Rooms are objects that define a distinct area in the Gameworld. Every non-descriptive object in the game needs to be located in a room in order to work.
More importantly you must never have an area where the player can fall out of the room object and into an undefined area. Put spikes on the floor, put up invisible walls, do what you have to, but don't let it happen.
In the Room definition you must also define which rooms come before and after the current room. This lets the WF engine know how to build the world.
Remember that when the game is playing it can only hold three rooms in memory at any given time; the current room, the previous room, and the next room. Anything beyond that is simply not displayed, so unless you don't mind areas of the world popping on and off , try to hide the rooms that can't be seen.
Q: How closely do the edges of my rooms have to match?
You may think you can get away with resizing objects, but eventually the software will catch you and crash the level.
Always make sure your objects match the grid coordinates exactly.
Q: But I need to resize the room objects. I don't want to lose all my attributes!
A: That's not a question, but since you mentioned it, you are going to have to delete your rooms if you want to resize them. But don't despair!
In order to do this efficiently follow the following steps:
- Use the Copy Attributes function and copy the attributes of your room object.
- Delete your old room object.
- Make a new box for your room.
- Use the Paste Attributes function, and paste the attributes of your old object onto the new one.
Don't worry about losing your attributes. Once you use the copy command the attributes are saved to the disk, and will remain there until you copy something else (even if you quit.) You can delete without fear.
Q: Can you explain how cameras work?
It takes three objects to set up a Camshot (four to make it work, but we'll get to that later.)
This is the actual camera, so it's the object that does the viewing.
2. Track Object
This is the "Stand in" for the object that the camera will follow around the game world. The reason we don’t use the actual object is that it allows us to set up a camera shot without having to stick the camera right in the middle of the game geometry. On more complicated levels you’ll be glad to have the Cameras out of your way.
Also remember that the camera doesn't have to follow it the track object. That's the difference between Relative and Absolute. You can set the Camshot so that it only follows the track object as it moves in any combination of X,Y,or Z
This is what the camera is pointed at. It would seem that the target should also be what the camera is following (the track object), but that would mean you would have very limited controls of the camera shot.
To help explain all this lets set up a few sample shots.
This is your most basic shot . It consists of a camera, a tracking object, and a target. What you have here is your basic cheesy polaroid of the smiling family member, except ours isn't off center.
This may look the same but it really isn't. If the Camera's field of view is tight enough the track object may not even appear on the screen at all. But, if we assume that the Camera | Position have been set to relative then during the game, when the track object moves around the Camera will move with it.
3D STUDIO MAX HINTS
Q: I can't get my snap to grid to work right.
That's because 3D studio is loaded with way more features than we need to build a level.
The secret of using grids is knowing what to turn off.
First go into the Views menu and bring up the Grid and Snap Settings window.
Click on the Snap tab and set the snap strength to maximum (20). Sine we're not modeling we want the snap to work all the time.
Now, under Snap Priority turn Priority off for all types except for Grid Intersections, and set it to 3D. This makes the grid work in a manner almost identical to the previous version of 3D Studio, (and a number of paint programs you're probably familiar with).
Remember, it's important to try and keep your objects properly aligned, especially if you're trying to create a solid surface out of multiple objects. If you don't you may run into serious problems when the player runs through the world.
Q: How do I save/load scripts between objects?
The scripting tool uses a specific location, so you need to make sure that when you move a script around between objects that you do so using the cut and paste function.
Although you can (and should) save your scripts out as text files, you will not be able to simply open a .txt file and have it be accepted as the valid script for that object.