Table of Contents

Place File Synax

Place Files

Overview

Place files contain:

Header Line

This line must begin with #, and may include any text desired. There must be at least one header line, but the file may include as many as are deemed useful for documentation purposes.

# Place file for Project Name

Comments

Comments may be included anywhere in the .place file:

; Any line beginning with a semicolon is a comment.

Importing Content from Other Files

IMPORT FROM / IMPORT ALL ... FROM

When a library is imported, its contents becomes available for use elsewhere in the Place File, but they are conceptually still stored in the library, and don't get compiled in with your game until you make use of them individually. If you import a location specifically, it gets incorporated into your project immediately (you can still open its definition back up to make modifications, however.) A package is a named set of connected locations

IMPORT [LIBRARY | LIBRARIES] FROM "filename":
  "BUILDINGS" AS "B"
  "NATURE" AS "N"
  "BUILDINGS" LOCATION "INT. CAFE" [AS "INT. DINER"]

or

IMPORT ALL LIBRARIES FROM "filename" [PREFIXED BY "IMPORTED"]

[FROM ...]

When you see [FROM …] (but not FROM “filename”) as part of other syntax, it means you may optionally specify a Library or Area from which the preceding named object should be fetched.

[FROM LIBRARY "L" | FROM AREA "A"]

(BASED ON)

This must be the first line after an Area Declaration or after a Location Header.

When used for an Area:

   MY NEW AREA
   -- --- ----
(BASED ON "AREA OR LIBRARY NAME" [IMPORTED FROM "filename"] [ROTATE 0])

When used for a Location, it makes a copy of the named Location and opens it for modification. This Location may either be a Location that already exists in your game, or a Location defined in an imported Library:

INT. MY NEW LOCATION
(BASED ON "INT. LOCATION NAME" [FROM ...] [ROTATE 0])

When used for a Camera, it makes a copy of the named Camera and opens it for modification. This Camera may either be a Camera that already exists in your game, or a Camera defind in an imported Library:

CAMERA: OFFICE
(BASED ON "OFFICE" [FROM ...])

REFER TO IMPORTED ... AS ...

Goes after the (BASED ON) line for an Area, this is used to effectively rename any Package, Location, or other identifier from the imported place file so that a different name is applied throughout the imported version of the content.

REFER TO IMPORTED "POLICE STATION" AS "SHERIFF'S DEPARTMENT"

Packaging Sets of Locations

PACKAGE

Packaging Locations together allows them to be imported or cloned as a related set, maintaining any connections between the exits of the various locations. All Cameras associated with the Locations are also automatically included in the package.

PACKAGE "TRAIL" (START):
  EXT. TRAILHEAD ([FROM ...] AS $START)
  WITHIN $PACKAGE:
  EXT. TRAIL / SWITCHBACK PATH
  EXT. TRAIL / LARGE ROCK
  EXT. TRAIL / MEADOW

UNPACK

UNPACK "TRAIL" [FROM ["filename.place"] [LIBRARY "OUTDOORS"]]
  AS "NATURE PATH" (START = "PARKING LOT")

Location Definitions

LOCATION DEFAULTS:

This opens up the template for locations defined within this Library or Area that aren't BASED ON any other location. Once this line is encountered, you are in “Location Definition Context” until switching to another context.

LOCATION DEFAULTS:

A-CAM:  $FILENAME($LOCATION), Default($FILENAME($LOCATION))

INT. / EXT.

Name a Location in uppercase on an unindented line to either create it (if new) or re-open its definition for additions, changes, or deletions. Once this line is encountered, you are in “Location Definition Context” until switching to another context.

INT. OFFICE

Descriptive Text

To add or replace a description:

INT. OFFICE

  You are in a poorly lit, smoke-filled office.  In the center of the
  room is a heavy, well-worn mahogany desk.

To append to the existing description:

INT. OFFICE

  You look around to gain your bearings. $DESCRIPTION

or

DELETE DESCRIPTION

MARK / DELETE MARK

To add or update a mark in the current Location:

MARK markname

To delete an existing mark:

DELETE MARK markname

x-CAM / DELETE x-CAM

This is how to assign cameras to a location. You can use $A-CAM, $B-CAM, etc, to refer to the previously defined value of any CAM.

Note that the same Camera Angle can be assigned to multiple named CAMs, which may be useful (for example) if the coverage area is wider than what had originally been envisioned.

If a camera includes visibility of other locations, pass those location names in parenthesis as named parameters to the Camera Angle.

If the current Location is not the primary subject of the desired camera, you may use POV and the primary Location name to treat that Location as primary, and then list which of the Camera Angle's named parameters the current Location should be passed into (it will be automatically filled in with this current Location's name, which doesn't need to be written in.)

Note also that each CAM designation may list more than one Camera Angle. If the game is going to be rendered with more than one rendering engine (i.e., fully 3D vs. Visual Novel style), or if the designatd Camera Angle is disqualified for some other reason (i.e., not supporting a night-time view when the current time is night), then the first available/eligible camera in the list will be used when the given CAM is called for.

When a location is shown in a scene, and no specific camera angle is specified, the lowest-lettered available camera will be used (usually A-CAM.)

A-CAM: OFFICE
B-CAM: OFFICE_REVERSE(HALL = "Ext. Office"), $A-CAM
C-CAM: POV "Ext. Office" OUTSIDE_OFFICE(INTERIOR), OFFICE

To delete an existing CAM definition from this location:

DELETE C-CAM
DELETE OFFICE_REVERSE FROM B-CAM

@(EXIT) / DELETE @(EXIT)

Defines, edits, or deletes exits in the current location.

Exits can be a simple direction or a named target:

Simple directions include the abbreviated compass directions (N, NNE, NE, ENE, E, ESE, SE, SSE, S, SSW, SW, WSW, W, WNW, NW, NNW), UP, or DOWN.

Target names may not include spaces.

Locations may be substantially abbreviated. Int. or Ext. alone will flip to the corresponding exterior or interior matching with the current location (if any.) If a location has a main area and sub-areas (separated by a slash), and it is within the same main area as the current location, only the sub-area needs to be given.

After a location, flags may be given in parenthesis. These flags help the Ghostwood Engine to verify the integrity and sensibility of your location definitions. If either end of a connected route contains the flag “WINDING”, the game engine doesn't care if the return direction is at variance with the arrival direction. And, if the origin route has the flag “ONE WAY”, then no return route is expected.

  DELETE @N
  @NW Ext. BACK ALLEY (WINDING)
  @DOOR Int. (ONE WAY)