Skip to content

tutorial

Marcus Ottosson edited this page Jul 5, 2015 · 41 revisions

be helps developers help their artists.

It takes a naive approach to content creation and flips it upside down. Rather than first creating and then deciding on how and where to store things, the decision is made up-front.

A typical use of be might looks something like this.

$ be in hulk bruce modeling

At which point you are in the project hulk, ready to work on modeling for bruce.

A follow up to this command typically involves launching the software you intend on using for this task.

$ photoshop



introduction

Artists don't like to mess about with technicalities and convention. But developers depend on it.

be is the middle-ground. It helps developers by having artists transparently embed information about the task they are about to perform. Developers can then use this information to build tools that know of the artists intentions; i.e. tools that are sensitive to the current context.

It allows tools to ask questions typically only accessible to the artist him/herself.

  • Where do I save my files?
  • What is the current project?
  • What is the asset I'm working on?
  • For which task am I working on this asset?

For example, have a look at this simple asset browser. (todo)

The benefits, in short.

be allows developers to:

  • define a project directory structure up-front
  • decide what information to make available in an environment per-project
  • develop context-sensitive tools that harnesses this environment

be allows artists to:

  • not worry about where to save files
  • get started quickly using pre-formatted directory layouts
  • use the context-sensitive tools developed for their environment



getting started

From an artist's perspective, getting started on new projects is also made easier.

$ be new tutorial-project
"evasive_cactus" created

Following this command, be goes out looking on the internet for project presets matching the term "tutorial-project" and creates a project using it.

Presets are tiny collections of be configuration files that artists and developers build together and then reuse across similar projects. They can also be shared with the world via the be hub, a central repository of available presets, which is also where tutorial-project lives.

Once complete, it will have created a new directory evasive_cactus within your current working directory and applied the preset for you to customise.

▾ evasive_cactus/
    templates.yaml
    inventory.yaml

Not given a particular name, be makes one up. Here's how you give it a specific name.

$ be new tutorial-project --name myproject



project configuration

These two files are the absolute minimum for any project. The inventory represents all items part of a project, typically assets and shots, whereas the template specifies their directory layout on disk.

Let's have a look inside inventory.yaml.

$ cd evasive_cactus
$ cat inventory.yaml
asset:
- myasset

shot:
- shot1
- shot2

The preset comes with a few items already defined. Feel free to adjust these to your liking. The top-most keys, asset and shot, specify which "template" an item adheres to.

$ cat templates.yaml
asset: "{cwd}/{0}/assets/{1}/{2}"
shot: "{cwd}/{0}/shots/{1}/{2}"

Each argument passed to be in is mapped to their corresponding position within it's template.

For example.

$ be in myproject myasset mytask

Resolves to /projects/myproject/assets/myasset/mytask, as myasset is an asset, as defined in inventory.yaml.

This connection between inventory and template is known as a "binding".




entering a project

$ be in evasive_cactus shot1 animation

Following this command, be will attempt to enter evasive_cactus for the given task, in this case animation for shot1. As this is our first time entering this task, be will ask to create a "development directory". That is, a directory for you to save your files.

No development directory found. Create? [Y/n]: y

The development directory is then created according to the corresponding template, each token replaced by an actual value relative the task.

This is what the template for shot1 looks like.

# before
shot: "{cwd}/{0}/shots/{1}/{2}"

# after
shot: "/projects/evasive_cactus/shots/shot1/animation"

Besides positional arguments, these values are also available to each template.

cwd: The directory in which you called `be`
user: The currently logged on user

To automatically change your working directory to the newly created development directory, pass --enter.

$ exit
$ be in evasive_cactus/shot1/animation --enter



environment

When entering a project, be does two things. One of which is to apply a number of environment variables to the current command-line session.

$ be dump
BE_ACTIVE=true
BE_DEVELOPMENTDIR=/projects/evasive_cactus/shots/shot1/animation
BE_ITEM=shot1
BE_PROJECT=evasive_cactus
BE_PROJECTROOT=/projects/evasive_cactus
BE_PROJECTSROOT=/projects
BE_TYPE=animation

be, a minimal directory and environment management system for creative projects.

table of contents

contributing

reference

configuration

aliases

commands

faq

in the wild

Clone this wiki locally