From efb13bfd786b58179713e81f70497e0c01a498e1 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Mon, 9 Nov 2015 22:16:21 -0500 Subject: Update documentation a bit. --- doc/sly.texi | 60 +++++++++++++++++++++++++++--------------------------------- 1 file changed, 27 insertions(+), 33 deletions(-) (limited to 'doc/sly.texi') diff --git a/doc/sly.texi b/doc/sly.texi index 8eaeb71..71a84cd 100644 --- a/doc/sly.texi +++ b/doc/sly.texi @@ -65,40 +65,34 @@ Scheme programming language. With the help of Guile, Sly provides all of the essential building blocks for making video games, such as: window management, input even handling, rendering, linear algebra, and powerful scripting capabilities. Sly differentiates itself from -traditional game engines by providing a dynamic live coding -environment, functional reactive programming, and a declarative scene -graph. - -Live coding is the practice of improvised interactive programming. -Sly provides a suitable environment for live coding by leveraging -Emacs, Geiser, and Guile's cooperative REPL server. With these tools, -programmers may evaluate arbitrary code and see the effects of their -modifications in real time. This tight feedback loop allows for -faster prototyping, greater productivity, and most importantly, more -fun. +traditional game engines by providing a dynamic live codinng +environment and a functional API. + +For those unfamiliar with the term, ``live coding'' is the practice of +improvised interactive programming. Sly provides a suitable +environment for live coding by leveraging Guile's cooperative REPL +server. When used with a powerful editing tool such as Emacs (with +the fantastic Geiser extension), programmers may evaluate arbitrary +code and see the effects of their modifications in real time. This +tight feedback loop allows for faster prototyping, greater +productivity, and most importantly, more fun. Functional reactive programming (FRP) is a technique used to model time-varying values with pure functions. A pure function is a -function that produces no side-effects, such as calling 'set!' on a -variable or writing to the contents of an array. Sly encapsulates -time-varying values in ``signals'', a high-level data structure for -controlling the flow of events. Unlike imperative event callbacks, -signals can easily be composed to form new signals. By modeling game -state with pure functions and immutable data, a game can be seen as a -function of time, in the mathematical sense. Constructing a game this -way allows for deterministic behavior that is easier to reason about -than the accumulation of side-effects seen in traditional game -engines. - -A scene graph is a data structure for positioning renderable objects -relative to one another. Child nodes inherit the transformations -applied to their parent, making it easy to move a large amount of -objects around as a group rather than individually. Sly's implements -a declarative scene graph API, which means that the programmer -describes @emph{what} to render, rather than @emph{how} to render it. - -These three major components form a powerful, high-level environment -for building video games. +function whose return value depends solely upon its arguments. They +also produce no side-effects, such as calling 'set!' on a variable or +writing to a file on disk. Sly encapsulates time-varying values in +``signals'', a high-level data structure for controlling the flow of +events. Unlike imperative event callbacks, signals can easily be +composed to form new signals. By modeling game state with pure +functions and immutable data, a game can be seen as a function of +time. To play the game is to ``fold'' (accumulate a result) over +time. Constructing a game this way allows for deterministic behavior +that is easier to reason about and test than the accumulation of +side-effects seen in traditional game engines. The signal interface +is also declarative, meaning that the programmer describes @emph{what} +the state of the world should be like at any given time, rather than +@emph{how} to get there. @node Installation @chapter Installation @@ -195,8 +189,8 @@ grow! Please get in touch with us on @code{#sly} on the Freenode IRC network. We welcome ideas, bug reports, patches, and anything that may be helpful to the project. -The git source code repository can be found on Gitorious at -@url{https://gitorious.org/sly/sly}. +The git source code repository can be found at +@url{https://git.dthompson.us/sly.git}. @node Copying This Manual @appendix Copying This Manual -- cgit v1.2.3