User Tools

Site Tools



This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
twine_2_wishlist [2014/03/28 09:11]
l [Macros]
twine_2_wishlist [2017/10/09 20:39] (current)
Line 2: Line 2:
 //This is a private page for Leon to brainstorm the features he wants in Twine 2, then frown discontentedly at them.// //This is a private page for Leon to brainstorm the features he wants in Twine 2, then frown discontentedly at them.//
 +*Fix (replace:) inside { }
 +*A (goto:) that doesn'​t make a state object?
 +*(live:) diffing
 +*(rerun:) macro
 +*(mirror:) macro, or (live:​)+(print:​)?​
 +*add Infinity as a number
 +*allow curly quotes as string delimiters?
 +*(click-replace:​),​ (click-append:​),​ (click-reveal:​) etc.
 +*$Story'​s fullscreen macro
 +*(when: $a becomes 2)
 +*(when: $a changes)
 +*(when: $a > 2 becomes $b > 2)
 +*(remap: (fn: input item, output item's 1st), $map)
 +*(fold: (fn: input (total, item), output total + (reversed:​item)))
 +*(cycling-link:​) isn't a link, nor explicable from basic primitives. It's an input.
 +*(set:​$a'​s -1th to 2) gives bad error
 +*Sort out how <​script>'​s behaviour in a passage works.
 +*Text alongside (goto:)
 +*(filter: item -> item's destination is "​Ichorcave",​ ?Links)
 +* reverse the args of (count:) and make it spreadable
 +* position-x: parentx-15, etc.
 +* can't use positions with datamaps etc?
 +* bidirectional macro call (2,​4,​6,:​either)?​
 +* more t8ns
 +* replace colours with $colours?
 +* import: colours??
 +* colour complement macro: (complement:​ red + white)
 +* Range syntax for both numbers and gradients
 +* Textfile HTTP macros - import a text file as easily as an image.
 +* (if: $red is 2 or 3 or 4)
 +* (if: $red is 2 or $red is 3 or 4)
 +* (set: $a and $b to 2)
 +* (replace:?​dontexist)[] doesn'​t error
 +* Change colour of (color:"​red"​)[Wow] after rendering
 +* Add debug mode style denoting macro (not) connected to hook.
 +* Add debug (print:) button.
 +* (for-each:) ?
 +* (click-forever:​) ...
 +* Error for composing (click:) and (replace:)
 +*(subset: $a, 2, 4..7, )
-=====IDE===== +</code>
- +
-  * Syntax highlighting that is equivalent to Twine 1. +
-  * The passage editor'​s "​Silent Area" - a section separate from the main text of a passage, where macros can be run with impugnity. Works very well with the "​separation of text and control"​ that hooks afford - the notion of setting up hooks, then defining functionality to them. +
-  * A possible tags alternative:​ **regions**. Anything within a specific drawn rectangle on the Story Map is considered to be "​tagged"​ with that rectangle'​s name. +
- +
-=====Game Engine (Harlowe)===== +
- +
-  * Some way of specifying **stretchtext** on a per-passage basis, or possibly a per-link basis. If a passage is a "​stretch",​ it appears below the last, instead of replacing and removing it. +
-  * Imported Images +
- +
-=====Macro Syntax===== +
- +
-  * Less ugly macro syntax than << and >>, maybe. Nothing springs to mind, though. Maybe Smalltalk'​s (|set $a to 1|) ? Or ~set $a to 1~ ? +
-  * [[http://​​X9igCDs.png|Block syntax for macros]] - using multiple macros in a row without opening and closing symbols separating them. +
-      * Counterpoint:​ leaving macros in tags better conveys their "​atomic"​ and interchangeable "​building block" nature to new users. Also, the awkwardness of "then else then"​. +
-  * Named parameters for macro parameters? <<​cyclinglink var:$red text:​["​Cool",​ "​Warm",​ "​Hot"​]>> ? (It worked for HTML) +
-  * [[https://​​webbedspace/​status/​446158492273897472|'​s syntax]] - 's as a substitution for Javascript'​s dot syntax. "​Person'​s name" instead of "​"​. Math's random? +
-  * [[http://​​Sz6TvQR.png|A sigil for passages]] - a way of passing passages around as easily as variables - <<​print>>​ing them akin to <<​display>>,​ eliminating the need for separate macros. +
-     * But how to display a passage in a variable? Maybe introduce a cast operator, "​as"​ ? <<​print $red as passage>>​ ? +
- +
-=====Macros===== +
- +
-  * <<​when ... >> - executed when the parameter is true. An always-functioning <<​if>>​ that responds to hook or variable changes. +
-  * Something equivalent to <<​cyclinglink>>​. Maybe a "chain of hooks"?​ [word][a][other word][b][third word][c] <<​click-cycle ?a ?b ?​c>>​. +
-    * But what of the variable-setting?​ +
-  * [[http://​​node/​5061|HTML5 Audio Macros]]: the ability to play MP3s. +
-  * [[http://​​Ny4llKD.png|<<​render>>​]] : "Style with Twine syntax instead of CSS". Use familiar Twine syntax to select types of elements, or hooks, //or pseudo-hooks//,​ then write the properties to use. Separate the [[https://​​webbedspace/​status/​446893957788618752|selectors from properties]]. Define styles per-passage,​ or for the whole story, based solely on which passage they'​re in. +
-     * CSS syntax can remain, of course, but as a '​fallback',​ much like complex JS is to basic macros currently. +
-     * "​Extend Twine syntax":​ define new basic styling syntax using <<​render>>​. Convert Twine'​s standard syntax to a "​standard library"​ rather than an engine built-in?? (Will require yet more Marked.js refactoring...) +
- +
-====="​Passage the Ultimate"​===== +
- +
-  * **Passage the Ultimate** is the lackadaisical philosophy that passages should be used for any complex data structure, simply because A) the passage data structure already exists and is familiar to Twiners, and B) an alternative necessitates needless complexity or needless intrusion of Javascript. +
-  * //Passage the Ultimate Template//: this already exists in Twine 1 in the form of the "​widget pattern"​ popularised by SugarCube, and canonised by Twine 1.4's [[display|shorthand <<​display>>​]] and [[function|parameter() function]]. Whether or not people are using it, though... +
-  * //Passage the Ultimate Array//: An immutable array of strings [[http://​​t7yu5yV.png|in the form of a passage.]] Obviously impractical for one-use datasets, but for multi-use data... +
-  * //Passage the Ultimate Documentation//:​ See [[annotation]]s in Twine 1. +
-  * //Passage the Ultimate Stylesheet//:​ a passage full of <<​render>>​ macros that get used for the whole story. Not a CSS alternative,​ but an accessible alternative. +
-  * //Passage the Ultimate Abstract Asset//: Twine 1 already regards images, stylesheets and scripts as passages.+
twine_2_wishlist.1396012265.txt.gz · Last modified: 2017/10/09 20:38 (external edit)