Developer - abstractfactory/pipi GitHub Wiki

A birds-eye view of Pipi and its capabilities.

Prior to setting out to develop a minimalist, re-mixable and extendible framework for content creation, a number of constraints was set out. We wanted Pipi to reach as broad of an audience as possible and to facilitate the heterogeneous needs involved within each production; whether it be pre-visualisation, game level design or feature film work.

Upon the above requirements, an architecture was formed.

Uniformity

Each resource is uniform in behaviour and appearance; including what may be referred to as assets, shots, sequences, levels, users, tasks et. al. This allows tools to operate on anything and everything without requireing special attention or maintenance.

/projects/spiderman/shot1/private/<app>/<user>/v001.mb
/projects/spiderman/private/<app>/<user>/v001.mb
/projects/spiderman/Peter/animLow/private/<app>/<user>/v001.mb

Schemaless

Resources are natively schemaless. As opposed to other solutions that lock you into a schema prior to initiating any new project, a schemaless approach means that you are free to start out a minimalist and only build out when and where you actually need to.

/projects/spiderman [Project, Superhero]

De-centralisation

De-centralisation means to be without dependence on centralisation. Each application operates in isolation under a commonly understood language (messaging, more on that later) and may, but doesn’t have to, interoperate with other applications. This is a service-oriented architecture.

Consolidation

Metadata is stored together with its content. Traditionally, metadata is seggragated into a database where it is later manipulated and managed. When separated you face issues of where the true source of things are located; is this file the latest version, even though the database has recorded another version? Where is it? You also face issues of synchronisation; I’m storing this file here, now I’ll tell the database that this is what I did.

Codebase

⚠️ **GitHub.com Fallback** ⚠️