Releases: JujuAdams/Scribble
8.0.1 Beta 9
Change log against v7.1 here.
Documentation here.
Changes from beta 8:
- Fixes crash when redefining spritefonts
- Fixes whitespace glyph offsets persisting from previous generations
- Replaces the custom colours map with a struct
.fit_to_box()
no longer accepts split words- Many internal enum members have now had their names changed to avoid conflicts with macros that you may be using in your game
- IDE sprite speeds now affect the speed that sprites animate in-game. This feature can be turned off by setting
SCRIBBLE_LEGACY_ANIMATION_SPEED
totrue
8.0.1 Beta 8
Change log against v7.1 here.
Documentation here.
Changes from beta 7:
draw_text_scribble()
anddraw_text_scribble_ext()
now use Scribble's default font if no font has been set usingdraw_set_font()
- Fixes
.on_last_page()
calling a deprecated method - Fixes events not executing when there are no printable glyphs in the input string
- Adds
[zwsp]
tag to insert a zero width space into a string (which is useful for controlling where linebreaks happen) - Adds
.animation_speed()
and.get_animation_speed()
text element methods - Adds
.flash()
effect which replaces the old.fog()
effect - Fixes HTML5 again. Days since YYG broke HTML5:
000
- Fixes
.get_state()
returning inaccurate results when type in effect is smoothed
8.0.1 Beta 7
Change log against v7.1 here.
Documentation here.
Changes from beta 6:
- Works around upstream issue with HTML5 where cached text models wouldn't correctly update
- Massively improves the performance of font outline, shadow, and general shader baking
- Line height is now adjusted by changing the FONT_HEIGHT parameter of spaces rather than the HEIGHT parameter
.transform()
text element method will now accept a single argument to uniformly scale a text element- Updates superfont functions
8.0.1 Beta 6
Change log against v7.1 here.
Documentation here.
Changes from beta 5:
- Adds
scribble_font_duplicate()
- Adds
SCRIBBLE_MSDF_BORDER_TRIM
to help clip out edge glitches when using MSDF outlines - Fixes
scribble_glyph_set()
not actually adjusting all glyphs when using theall
keyword - Adds safety check for upstream bug with
script_get_name()
when a negative script index is used - Fixes command tags breaking text direction ("BiDi") prediction
- Fixes hyphens not being treated as symbols for the purposes of text direction
- Fixes gradient effect breaking colour cycling
- Fixes colour cycling glitching when followed by other text formatting commands
8.0.1 Beta 5
8.0.1 Beta 4
Change log against v7.1 here.
Documentation here.
Changes from beta 3:
- Fixes macro-related issue in HTML5. Reminder - Scribble now works on the HTML5 target but only on beta GameMaker runtime v23.1.1.433 (or later). There may still be remaining issues when running Scribble on HTML5. Please report any problems that you find
.padding()
now works properly, including affecting dimension getter functions- Model cache name generation has been optimised
- Fixes
.align()
not recognising"fa_justify"
as a horizontal alignment input - Fixes
.fit_to_box()
not regenerating a text element's draw matrix when changed - Removes
.get_page_width()
and.get_page_height()
. The.get_width()
and.get_height()
getters now default to returning the dimensions of the current page (as determined bySCRIBBLE_BOUNDING_BOX_USES_PAGE
) .get_bbox()
and.get_bbox_revealed()
now return transformed widths/heights (in contrast to.get_width()
and.get_height()
which return untransformed widths/heights)
8.0.1 Beta 3
Change log against v7.1 here.
Documentation here.
Changes from beta 2:
- Scribble now works on the HTML5 target (beta GameMaker runtime v23.1.1.433 or later, this will include future stable runtime 2.3.8.x). There may still be remaining issues when running Scribble on HTML5. Please report any problems that you find.
- Calling
.skip()
on a typist before the typist has been used to draw any text will now skip the first text element drawn with the typist (previously the typist would reset) - Fixes a crash in
draw_text_scribble*()
when using a spritefont - Adds
SCRIBBLE_SPRITEFONT_LEGACY_HEIGHT
to help transition from v7 to v8 - Using the
.sound()
method in conjunction with per-character delay at the end of a string no longer causes distracting audio playback - Fixes crash when using
.scale_to_box()
Known Issues:
.padding()
might have some issues
8.0.1 Beta 2
Change log against v7.1 here.
Documentation here.
Changes from beta 1:
- Turned off
SCRIBBLE_VERBOSE
by default (sorry for the debug spam) - Adds deprecation warning messages when trying to use the removed
.animation_*()
element methods - Adds
SCRIBBLE_INCREMENTAL_FREEZE
for a nice performance boost when drawing large amounts of text. Vertex buffer freezing happens one frame after the text model is created to help smooth out any one-time performance costs - Small amount of optimisation in addition to the above
- New pages are no longer generated when text vertically fills a textbox without exceeding the maximum height
- Fixes unnecessary extra lines being generated
- Fixes events bleeding from one text model to another leading to confusing event execution
- Fixes
draw_text_scribble*()
crashing when drawing without a font set - Fixes right-aligned text often having ugly whitespace when wrapping text. RHS whitespace trimming can be turned off by setting
SCRIBBLE_FLEXIBLE_WHITESPACE_WIDTH
tofalse
- Re-adding fonts (e.g.
font_add()
after callinggame_restart()
) no longer throws an error and will instead output a warning and regenerate the Scribble font
Known Issues:
.padding()
might have some issues
8.0.1 Beta 1
7.2.0pre003
This is a beta version and should not be used in production.
Typewriter behaviour is now controlled using a "typist". A typist is a unique (non-cached) machine that controls how your text is revealed and how events are executed as text is revealed. For example, you should create one typist per textbox. Typists are created by calling scribble_typist()
and are garbage collected automatically. Typists can be used with a text element by targetting the typist with the text element's .draw()
method. For example:
typist = scribble_typist();
typist.in(1, 0);
///Draw
scribble("Here's some typewriter text!").draw(x, y, typist);
Note that we called the .in()
method. This is analogous to the old .typewriter_in()
method that was available on text elements in previous versions. Here's a list of methods for typists, and they follow the same basic rules as the old typewriter functions.
.reset()
.in(speed, smoothness)
.out(speed, smoothness, [backwards])
.skip()
.sound(soundArray, overlapMS, pitchMin, pitchMax)
.sound_per_char(soundArray, pitchMin, pitchMax)
.function_per_char(function)
.pause()
.unpause()
.ease(easeMethod, dX, dY, xScale, yScale, rotation, alphaDuration)
.associate(textElement) <-- You'll probably never need to use this
A typist should only be used to control text reveal for one text element at a time. Changing text element, or changing the page for that text element, will cause the typist to automatically be reset.
Typists are automatically associated with a text element when targetted using that text element's .draw()
method. If you want to manually associate a typist with a text element you'll need to use .associate()
method (on the typist).
Additionally, two methods have been added to text elements. .reveal()
sets how many characters are visible in the text element (including spaces), and .reveal_get()
returns that value. Using a typist will override any value set with .reveal()
. Revealling characters using .reveal()
will also not execute any events whatsoever - you'll need to use a typist for that.
Finally, in light of above, .typewriter*()
methods have been deprecated for text elements returned by scribble()
. You will get a warning when trying to use these functions. If you don't want to transition across to using the new typist system then set SCRIBBLE_WARNING_LEGACY_TYPEWRITER
to false
. Existing behaviour should be unaffected if you use legacy methods, but try to migrate your code if you can as the old featureset will be fully removed in the next major version (later this year probably).