# open-baba A simple browser clone of the Baba Is You rules-as-gameplay game mechanic  ## Running it - Clone this repository - `cd open-baba && npm install` - `npm start` ## Game objects Everything is a Noun or an Adjective. Nouns consist of a name, an image for the text component and an image for the entity component. The hold a bag of adjectives that dictate their collision interactions with other bags-of-adjectives (nouns) Adjectives consist of a name, an image for the text component and a set of rules for when other adjectives collide with them. At present there are a preset number of responses to a collision, and only "is-moved" and "stop" have been implemented. A level is specified with a width, height, a set of Nouns and a set of Adjectives. An adjective has its rule set specified as part of its inclusion in a level, and so can operate differently between levels. The actual rules are either `internal` (a pointer to a core-rule, which is currently 'push' or 'you') or they are `inline`, in which case the decision hash is stored as part of the level. If this doesn't make sense, check `ser/data/testlevel1.json` for the level from the above screenshot, and `src/data/adjectives/*.json` for example adjective descriptors. ## Principles Everything is fully dynamic with the exception of the connectors (currently "is", but in future other connectors such as "and" may be implemented). By including a noun with the name "text", the properties of the text itself can also be changed (By default, it uses an internal noun that only has the "push" adjective)