-
Notifications
You must be signed in to change notification settings - Fork 2
4. Resources
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
This section lists resources that may be useful for learning GameMaker Studio 2 (especially 2.3+).
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 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 2.3 Resources (Tsereteli/GutPunch)
GameMaker 2.3 syntax in details (Yellow Afterlife)
SNAP: Struct N' Array Parser (GitHub) (Juju Adams)
GMLodash (DatZach)
GameMaker Station (Matharoo)
Game development tutorials (Spalding)
GMLive - Livecoding in GameMaker!? (Spalding)
This section lists resources that may be useful for building Rezonator, such as GameMaker extensions.
Dialog Module (Samuel Venable)
Error handling (YellowAfterlife)
GMLive (Yellow Afterlife)
Live coding (Yellow Afterlife)
GMEdit (Yellow Afterlife)
GMEdit on GitHub (Yellow Afterlife)
gdash (GML Utility Library)
GM core (foundational GML utilities)
Getter-Setter
GMlinear (GML matrix & vector operations)
GMAssert (for GMS 2)
Gamatas (Testing Automation Suite) (for GMS 1.4)
Multiline textbox (thread)
Draw Text Justify
Draw Text Special
Slidge: Visual novels
Pop-up speech balloons
Tweenline Animation Engine
Retro Palette Swapper
How to make a DLL (C++ sorting via DLL)
Execute Shell
YellowAfterlife
FrostyCat (GML, JSON)
SamuelVenable
Kaguva (iOS, Android, Firebase)
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)
Some useful tools for computational linguistics, Natural Language Processing (NLP), etc.:
- spaCy (for tokenizing, tagging & parsing corpus data).
- Named Entity Recognition & visualization (spaCy)
- displaCy demo (dependency visualization in spaCy)
- Stanford CoreNLP (resources for tokenizing, tagging & parsing corpus data)
- Stanford CoreNLP (demo)
- textaCy (text processing)
- word2vec
- sense2vec (Spacy)
- pair2vec (paper)
- pair2vec (GitHub)
- Graph analysis
- Diffusion goes critical
- ALIGN: Linguistic alignment (GitHub)
- ALIGN (article)
- PyLangAcq (language acquisition research in Python)
- CHAT format data (a version of the XML format) from the CHILDES database at TalkBank.
- AntConc (concordance)
- Top 20 Python libraries for Data Science
Cloud Game Infrastructure (Google)
Indie Games (Google)
Launching mobile games
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.
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 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 |
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.
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:
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:
- Noto Sans SC (Simplified Chinese)
- Noto Sans TC (Traditional Chinese)
- Noto Sans JP (Japanese)
- Noto Sans KR (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.
For a general approach to Unicode fonts for games (not specifically for GameMaker Studio), see: Silver.
Silver supports characters in these Unicode blocks
To test Rezonator support for Unicode special characters, apply the Unicode stress test.
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.