Skip to content

4. Resources

John W. DuBois edited this page Nov 30, 2020 · 89 revisions

This page lists resources that may be useful for building Rezonator, including GameMaker extensions; gesture conventions; icon fonts; Unicode; language support; and so on.

Learn GameMaker Studio 2
GameMaker extensions
JSON
Linguistics/NLP
Infrastructure
Style
Gestures
Icons
Unicode

Learn GameMaker Studio 2

This section lists resources that may be useful for learning GameMaker Studio 2 (especially 2.3+).

GameMaker Studio: Basics

Building a Crafting Game in GameMaker (Matharoo)
Beginner's Guide to GameMaker Studio 2 (UPDATED 2020) (Spalding)
Complete Platformer Tutorial (Spalding)
Space Rocks: Make your own arcade classic (YoYo Games)
Farming RPG Tutorial [Beginners] (Friendly Cosmonaut)

GameMaker Studio 2.3+ (New features)

GameMaker Data Structures in 100 Seconds (Matharoo)
JSON SAVING in GameMaker with STRUCTS (Matharoo)
OOP GML with Structs & Constructors (Matharoo)
GameMaker Inventory with Structs (Matharoo)
SCRIPTS HAVE CHANGED! (GMS 2.3) (Spalding)
Saving and Loading Tutorial (Spalding)
JSON Saving and Loading (Spade)
Making a GAME with SEQUENCES! [Broadcast Messages] (Matharoo)
Struct Accessor: Replacing DS Maps (GMS 2.3.1) (DragoniteSpam)
Structs and Constructors: OOP (GMS 2.3) (FunBox)
Structs: Lightweight Objects (GMS 2.3) (DragoniteSpam)

GameMaker Studio 2.3+ (Technical)

GameMaker 2.3 Resources (Tsereteli/GutPunch)
GameMaker 2.3 syntax in details (Yellow Afterlife)
SNAP: Struct N' Array Parser (GitHub) (Juju Adams)
GMLodash (DatZach)

GameMaker Studio: General

GameMaker Station (Matharoo)
Game development tutorials (Spalding)
GMLive - Livecoding in GameMaker!? (Spalding)

GameMaker extensions

This section lists resources that may be useful for building Rezonator, such as GameMaker extensions.

User Interface

Dialog Module (Samuel Venable)
Error handling (YellowAfterlife)

Editor

GMLive (Yellow Afterlife) Live coding (Yellow Afterlife)
GMEdit (Yellow Afterlife)
GMEdit on GitHub (Yellow Afterlife)

Data manipulation

gdash (GML Utility Library)
GM core (foundational GML utilities)
Getter-Setter
GMlinear (GML matrix & vector operations)

Testing

GMAssert (for GMS 2)
Gamatas (Testing Automation Suite) (for GMS 1.4)

Speech balloons and text

Multiline textbox (thread) Draw Text Justify
Draw Text Special Slidge: Visual novels
Pop-up speech balloons

Animation

Tweenline Animation Engine
Retro Palette Swapper

External calls

How to make a DLL (C++ sorting via DLL)
Execute Shell

Publishers

YellowAfterlife
FrostyCat (GML, JSON) SamuelVenable
Kaguva (iOS, Android, Firebase)

JSON

For a basic introduction to JSON, see:
Introduction to JSON

For using JSON to represent syntactic and semantic structures, see:
Forbes, Angus G., Lee, Kristine, Hahn-Powell, Gus, Valenzuela-Escárcega, Marco A. & Surdeanu, Mihai (2018). Text Annotation Graphs: Annotating complex natural language phenomena. In Goggi, S. & Mazo, H. (Eds.), Proceedings of the Eleventh International Conference on Language Resources and Evaluation (LREC 2018). Miyazaki, Japan: European Language Resources Association (ELRA).

More information about Angus Forbes' approach to JSON is available from the Creative Coding Lab (on GitHub).

Ines Montani of Spacy makes an interesting proposal for a new approach to JSON formatting for linguistic data/NLP. For basic documentation on Spacy's current use of JSON for corpus data, see JSON input format.

Stanford NLP describes a JSON formatter

For an extensive project to create a JSON framework for linguistic fieldwork resources, including lexicon, texts, see Data Format for Digital Linguistics or Digital Linguistics (on GitHub).

On using JSON schemas for data validation:
Understanding JSON Schema (textbook)
JSON schema
BibJSON
Digital Linguistics (DLx) JSON format
Language data (DLx)
Morph (DLx)
Tags (DLx)

For parsing JSON files, see:
PapaParse
PapaParse on GitHub

For using JSON in GameMaker Language, see:
JSON Toolkit (GML)
TJSON (GML)
TJSON thread (GML)
JSON rooms (GML)

Linguistics/NLP

Some useful tools for computational linguistics, Natural Language Processing (NLP), etc.:

  1. spaCy (for tokenizing, tagging & parsing corpus data).
  2. Named Entity Recognition & visualization (spaCy)
  3. displaCy demo (dependency visualization in spaCy)
  4. Stanford CoreNLP (resources for tokenizing, tagging & parsing corpus data)
  5. Stanford CoreNLP (demo)
  6. textaCy (text processing)
  7. word2vec
  8. sense2vec (Spacy)
  9. pair2vec (paper)
  10. pair2vec (GitHub)
  11. Graph analysis
  12. Diffusion goes critical
  13. ALIGN: Linguistic alignment (GitHub)
  14. ALIGN (article)
  15. PyLangAcq (language acquisition research in Python)
  16. CHAT format data (a version of the XML format) from the CHILDES database at TalkBank.
  17. AntConc (concordance)
  18. Top 20 Python libraries for Data Science

Infrastructure

Cloud Game Infrastructure (Google)
Indie Games (Google)
Launching mobile games

Style

In general, the visual style of Rezonator, as an analytical tool, should follow principles of Google's Material Design, especially for interaction and gestures. As much as possible, the style should be intuitive, functional, and familiar.

In contrast, games created with Rezonator may have their own style, with design elements that are game-specific, to the extent that they are internal to the game itself.

Gestures

The design of gestures for Rezonator can draw inspiration Google's Material Design gestures. In general, try to use gestures that will already be familiar and intuitive to most users, based on the conventions that are commonly implemented on phones. The goal is that the user's previous experience with commonly used apps or programs in iOS, Android, or Windows (etc.) will carry over to the touch screen conventions used in Rezonator (whether in Windows, MacOS, Linux, Android, iOS, etc).

See also the GameMaker tutorial on gestures.

Gesture Start End Angle activityState Action newActivityState
tap word - - null focus word Rez
tap word - - Rez focus & link (to current Rez chain)
tap word - - Track focus & link (to current Track)
tap word - - Stack focus & link (to recent Rez/Track) chainState= R or T
tap space - - Stack focus & link Unit to current Stack
tap chunk - - any focus Chunk
tap box - - any focus Box
tap menu - - any perform PieMenu or Menu action see menu action
tap-long word - - any pick Chain (if none, pick Unit)
tap-long space - - any pick Stack
tap-long speaker - - any pick Turn
tap-long line# - - any pick Unit
tap-long discoID - - any pick Discourse
tap-long chunk - - any pick Chunk
tap-long box - - any pick Box
double-tap word - - Rez quit current rezChain
double-tap word - - Track quit current trackChain
double-tap space - - Stack quit current Stack
double-tap space - - not Rez/T/K quit current Focus [*?]
double-tap menu - - any quit PieMenu
drag word word R/L any mark Chunk
drag word word U/D any mark Link or QuickLinks Rez
drag word word diag any DWELL: mark Link [*?] Rez
drag word word diag any NO DWELL: mark QuickLink [*?] Rez
drag word space diag any mark QuickLinks [*?] Rez
drag word word arc any focus & link (to current Track) Track
drag word space arc any - (do nothing)
drag space any U/D any create Stack, add current line(s) to it Stack
drag space space R/L any mark single-line Box
drag space space diag any mark multi-line Box
drag space word diag any mark multi-line Box
drag line# any U/D any move line ("scroll") up/down
drag border any any any move border
drag border marg any any hide Pane
drag col -3 col -3 U/D any mark nested Stack Level 2
drag col -2 col -2 U/D any mark nested Stack Level 3
drag col -1 col -1 U/D any mark nested Stack Level 4
flick any any U/D any scroll up/down
flick word any R any add word to collection/attach Tag
flick space any R any add line to collection/attach Tag
flick line# any R any add line to collection/attach Tag
flick word any L any don't add word to collection
flick space any L any don't add word to collection
flick line# any L any don't add word to collection
flick word any U any delete word from current Chain
flick space any U any delete line from current Stack
flick line# any U any delete line from current Stack
flick border any out any hide pane
flick border any in any show pane
pinch any any R/L any column width smaller
pinch any any U/D any line height smaller
pinch any any diag any font + column + line height smaller
unpinch any any R/L any column width larger
unpinch any any U/D any line height larger
unpinch any any diag any font + column + line height larger
rotate any any any any but volume Select brush/button from Pie menu see menu action
rotate any any any volume Set audio volume

Icons

Icons for Rezonator tool, as a key element of style, should be intuitive, functional, and familiar. Whenever possible, use existing icons, in a scalable format. Inevitably, some icons will have to be designed for Rezonator, for functions which are unique to Rezonator. But in general, the style guidelines to follow are those for the Material Design icons. See the developer's guide for icons.
See also the Material Design Cheatsheet. Graph icon ideas

Icon Meaning
pick
unpick
👁 show
👁/ hide
align
don't align
scroll up
scroll drag
scroll down
prior (context)
= tween (context)
next (context)
↑↓ sort
? help

The following are some examples of icons that could be relevant for Rezonator. There is no need to implement all of these icons (or their functions), but they do illustrate the resources available, to avoid duplication of effort.

Icon group Examples
Action label, label_off, alarm, alarm_off, announcement, backup, help, help_outline, home, info, list, pan_tool, question_answer, settings, star_rate, stars, swap_vertical, swap_horiz, thumb_down, thumb_up, thumb_up_down, touch_app, verified_user, vertical_split, view_carousel, view_column, visibility, visibility_off, zoom_in, zoom_out
Audio/Video av_timer, fast_forward, fast_rewind, games, hearing, not_interested, pause, pause_circle, pause_circle_outline, play_arrow, play_circle_filled, play_circle_outline, playlist_add, playlist_play, recent_actors, replay, shuffle, skip_next, skip_previous, slow_motion, snooze, sort_by_alpha, stop, volume_down, volume_mute, volume_off, volume_up
Communication chat, chat_bubble, forum, message, textsms, speaker_phone, sentiment_satisfied
Content add, add_box, add_circle, add_circle_outline, archive, backspace, ballot, block, clear, create, file_copy, filter_list, flag, font_download, forward, gesture, link, link_off, low_priority, outlined_flag, remove, remove_circle, save, send, sort, undo, waves, select all
Device developer_mode, mobile_friendly, mobile_off
File folder, folder_open, create_new_folder, format_align_center, format_align_left, format_align_right, format_list_bullet, format_quote, format_size, format_textdirection_left, format_textdirection_right, insert_comment, insert_emoticon, notes, publish, scatter_plot, show_chart, space_bar, text_fields, table_chart, vertical_align_, short_text, wrap_text
Hardware computer, desktop_mac, desktop_windows, gamepad, headset, headset_mic, keyboard, keyboard_hide, keyboard_arrow[s], mouse, phone_android, toys, videogame_XXX
Image audiotrack, brush, camera, color_lens, compare, edit, grid_off, grid_on, movie_creation, music_note, music_off, slideshow, style, timer, timer_off, tune
Maps layers [= show tiers], layers_clear [= close tiers], local_florist, local_library, map, navigation, zoom_out_map
Navigation arrow_back, arrow_forward, arrow_downward, arrow_upward, arrow_drop_down, arrow_drop_up, arrow_left, arrow_right, cancel, check, expand_less, expand_more, first_page, last_page, fullscreen, fullscreen_ex, menu, more_horiz, more_vert, refresh, subdirectory, unfold_less, unfold_more
Notification sync, sync_disabled
Places casino [dice]
Social [Use logos for FaceBook, Twitter, etc. as needed]
Toggle check_box, check_box_out, radio_button, star, start_border, star_half, toggle_off, toggle_on

Unicode

Support for a diversity of languages is important for Rezonator. This requires support for different alphabets and thus a wide range of characters (non-Latin alphabets, International Phonetic Alphabet, arrows, a rich repertoire of technical symbols, etc.). (Ideally, Rezonator would also support alphabets with right-to-left writing direction, such as Arabic and Hebrew. But GameMaker Language offers limited support for this, so it is not currently implemented in Rezonator.)

For a versatile Unicode text editor, consider Editpad Lite.

Unicode IPA (International Phonetic Alphabet)

For a wealth of detailed information on Unicode, with special attention to the International Phonetic Alphabet (IPA), download the following excellent resource (free):

To dig deeper, check it out on GitHub:

For a table containing the Unicode characters for the standard IPA letters, see:

For a table of additional IPA symbols (mostly for prosody), see:

For tables of more specialized and complex IPA symbols (combining diacritics, etc.), see:

Unicode and Fonts

The basic font for Rezonator should be a proportional font with very solid coverage for Unicode characters (that is, with coverage for a large repertoire of technical symbols as well as multiple languages). At present, the best candidate for multi-language character coverage is perhaps Noto Sans (Google). Basic Unicode fonts should be included in a package with Rezonator.

To find out more, see how to get the Noto fonts.

For some users, the basic Noto Sans font may need to be supplemented by individual Noto Sans fonts for Chinese, Japanese, and/or Korean:

For an all-in-one approach to Chinese/Japanese/Korean (CJK) fonts, see:

For a general discussion of Unicode fonts (possibly superceded by the Unicode Cookbook), consider:

For "Popular Pairings with Noto Sans", consider: Fjalla One and Noto Sans, or a font like Gill Sans MT.

Unicode fonts in games

For a general approach to Unicode fonts for games (not specifically for GameMaker Studio), see: Silver.
Silver supports characters in these Unicode blocks

Unicode stress test

To test Rezonator support for Unicode special characters, apply the Unicode stress test.

Unicode Character Database

The Unicode Character Database contains information about the "properties" of every Unicode character. For example, the "letter" property indicates whether a character is a "letter" in any script in the world; the "width" property tells you how wide a character is; etc.