Types/NoiseExpression

From Official Factorio Wiki
Revision as of 16:28, 1 September 2018 by TOGoS (talk | contribs) (Move from User:TOGoS)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Types/NoiseExpression

Basics

A fragment of a functional program used to generate coherent noise, probably for purposes related to terrain generation.

Mandatory properties

type

Type: Types/string

Name of the type of this expression. Which other properties apply depend on the expression type.

Expression types

variable

Reference to a pre-defined variable, constant, or a named noise expression.

Predefined variables include "x", "y", and "distance".

Properties:

function-application

Apply a function to a list or associative array of arguments. Some functions expect arguments to be named and some expect them not to be.

Function calls are their own class of expression (as opposed to every function just being its own expression type) because function calls all have similar properties -- arguments are themselves expressions, a call to any pure function (i.e. most functions other than random()) is referentially transparent and can be constant-folded if all of its arguments are constant, etc.

Properties:

  • function_name (a string; see functions, below)
  • arguments (a list or associative array of argument expressions)

literal-number

Evaluates to the same number every time, given by the literal_value property.

literal-string

Evaluates to the same stringevery time, given by the literal_value property.

Since the noise generation runtime has no notion of strings or use for them, this is useful only in constant contexts.

literal-object

Evaluates to the same object every time, given by the literal_value property.

e.g.

{
  type = "literal-object",
  literal_value = {
    name = "Bob Hope",
    birth_date = {
      year = 1903,
      month = 5,
      day_of_month = 29
    }
  }
}

Since the noise generation runtime has no notion of objects or use for them, this is useful only in constant contexts, such as the points argument of the distance-from-nearest-point function.

Functions

add

Arguments (positional): term, other term

Takes 2 positional arguments and adds them.

subtract

Arguments (positional): minuend, subtrahend

Takes 2 positional arguments and subtracts the second from the first.

multiply

Arguments (positional): factor, other factor

Takes 2 positional arguments and multiplies them.

divide

Arguments (positional): dividend, divisor

Takes 2 positional arguments and divides the first by the second.

exponentiate

Arguments (positional): base, exponent

Takes 2 positional arguments, and raises the first to the second power.

absolute-value

Arguments (positional): value to be absoluted

Takes a single positional argument and returns its absolute value. i.e. If the argument is negative, it is inverted.

clamp

Arguments (positional): value to be clamped, lower limit, upper limit

First argument is clamped between the second and third. The second is treated as a lower limit and the third the upper limit.

ridge

Arguments (positional): value to be ridged, lower limit, upper limit

Similar to clamp but the input value is folded back across the upper and lower limits until it lies between them.

factorio-basis-noise

factorio-multioctave-noise