A community-driven update for Legacy Game Maker 8.1

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

setup:
- added option to install the Extension and Library Makers

room:
- new Instance List panel!
    -> easily find and select instances in large rooms
    -> allows you to reorder instances within the same depth grouping
- pointing at instances will now focus the smallest instance
    -> this helps select smaller instances placed behind big ones
    -> clicking already did this, but pointing has been updated to reflect it
- massively optimized fps when editing a room with a large instance count
    -> this is 100% related to the change above this one
- it is now again possible to change the sprite of an instance thru preview fields
    -> when disabling preview fields, the sprite is reset to the object's default
- added object property getters for preview fields
    -> GM's builtin object_get_ functions will return useful values
    -> object name is passed as a string, like the other field functions
- multiline textfields now correctly break lines
- textfields in general are more stable, especially when the editor is laggy
- the textfields in the color picker are less jank and in-line with the others
- fixed some small visual bugs and typos
- fixed a crash when setting a background's scale to zero
- fixed weird spacing inconsistencies when selecting enum fields
- fixed usage of constants in enum and value fields
- fixed usage of commas in enum strings

core:
- default GM message boxes are now styled to match GM 8.2
- fixed a typo

video:
- removed a debug message from the encoder program

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

The Setup has been fixed to correctly set file associations for the Video Player and
gmk/gm81/gm82 files. However, this requires running the setup as Admin. Don't worry,
if you don't have Admin access, you just have to manually associate them using the
Windows dialog for opening unknown files.

core:
- new functions ds_list_find_first and _last
- new function date_is_easter
- new function envelerp
- the 'undefined' constant now uses a more unique value

audio:
- [Lovey847] fixed ogg decoder producing garbage on right ear

video:
- updated encoder's help document

room:
- saving now enforces 1 newline at the end of gml files
- Ctrl-G no longer activates instance gluer

dx9:
- new function surface_load to load a surface from an image file

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

gm82:
- fixed collision event precompilation

core:
- merge_color_corrected() no longer crashes when given a negative factor

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

Starting with this update, you will notice that large games no longer spend quite a while
between when the loading bar hides, and when the game actually pops up. This is because
Floogle researched what was taking so long, and replaced horribly unoptimized code in the
game runner.

When the game starts, the runner builds a list of all collision events between objects.
This process is O(n^2), which means that for a large game like MKF with 5000 objects, it
performs 25.000.000 comparisons, which can hog the fastest modern cpus for upwards of 20
seconds. Moreover, these checks were repeated every time a new event was added to an
object at runtime, which made its use as a modding API impractical.

Now, Game Maker 8.2 will pre-compile collision lists when building an exe. This causes
newly compiled games to finish their loading process effectively instantly. As a bonus,
adding events that aren't collisions is now relatively instant as well.

Additionally, due to the release of an 8.2 port of the real GMLive extension by community
legend YellowAfterlife, 8.2 Live has been renamed to 8.2 Live Room and its nonfunctional
Rust-based code reloader has been deleted. This restores Windows XP compatibility for the
extension. Projects that used Live need to be fixed to use the new Live Room function
names, and the old Live and Live Stub extensions will no longer be bundled with the setup.

Unrelated to that, the documentation bundled with the installer has been updated.

gm82:
- redid the extension dialog to fit longer extension names and descriptions

core:
- new function unpick()
- new function game_get_state()

video:
- fixed problems with surface mixups

dx9:
- made surface shim stronger against id collisions

room:
- the hotbar is gone, replaced by a 'favorite' system using the digit keys.
- drawing a lot of grid cells is now considerably faster.
- new tool for dividing the room grid into larger, view-sized blocks for level planning.

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

room:
- pushed a hotfix for Preview Fields

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

room:
- fixed an error about directories
- fixed an error with preview fields
- added a preference for trimming broken tiles
- freshened up the preferences window
- added an included plugin to demonstrate the new system

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

gm82:
- updated zlib, smaller and faster png saving

room:
- new plugin system
- color picker now accepts pasting #rrggbb colors
- fixed some issues loading projects with broken resource names
- fixed a division by zero in backgrounds
- fixed a crash when setting range fields manually with parenthesis
- added a new option to skip recentering objects when transforming them
- fixed multiple issues when pressing both mouse buttons
- grid and crosshair are now drawn in all modes
- hold control or shift to set both grid fields at once with the right-click menu
- sorta fixed preferences modal breaking when the window is resized
- fixed weird selection behavior for object change and gigaknife tools
- added a new key N to select the next stacked object when clicking on a stack
- added new keys G to quickly Glue and K to quickly Gigaknife selected instances
- instance fields will no longer affect the room instance, or collide with builtin editor variables

video:
- added new option for output fps
- added Save As button
- encoder now properly gathers information from dropped files
- added new option for interframe interpolation for low-fps videos
    - this allows slow videos to smoothly blend between frames, at the cost of more cpu and memory usage

core:
- [DFelipehDEV] new function lerp_angle
- [TsukiruP] declared a stray variable in draw_sprite_tiled_extra
- string_better is now limited to float64 precision 15 decimal digits
- fixed some docs
- fixed clerp2 when range is backwards
- declared a stray variable in instance_create_moving
- new functions:
    - place_meetings
    - position_meetings
    - instance_places
    - instance_positions
    - instances_place
    - instances_position
    - instance_place_list
    - instance_position_list
    - window_set_dpiaware

sound:
- declared a stray variable in sound_delete

anvil:
- now retains user selection when re-pasting the same type of shader

gltf:
- fixed crash in gltf_destroy

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

room:
- added a short description when pointing at an object
- fixed creation code crash when having an empty field
- fixed number fields receiving invalid values
- allowed running a test build more than once
- fixed false detection of variable names containing 'mp_'

core:
- [elpoep] updated file_find_list to list directories in the correct order
- renamed distance_to_instance to distance_to_center and allowed object ids

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

room:
- fixed a crash when selecting a sound field
- fixed a crash when moving instances that have specific fields set and then undoing

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

setup:
- setup no longer attempts to install a font (it fails anyway)
- setup no longer bundles the visual c redist, has to be downloaded separately
- as a result of the above changes, the setup no longer requires admin provileges

joystick:
- [elpoep] fixed a bunch of documentation errors
- [elpoep] added rumble support

audio:
- [Zasus] error for preloading a sound now displays the sound name
- [Zasus] added loop point getters
- fixed pack creation requiring a backslash at the end of the path
- fixed pack loading crashing if the file doesn't exist
- fixed a mysterious crash that would happen in a project with zero sound resources

core:
- [TsukiruP] new function draw_sprite_tiled_extra
- [TsukiruP] rectangle_in_rectangle now works with flipped rectangles

room:
- right click grid size textfields to pick from common sizes
- added info/warning boxes to each object tool
- added a preference to remove such warning boxes
- fixed cleanup/replace tools only working on the current object rather than the selection
- fixed several actions not updating the object name textfield
- clarified the right click preferences

Setup updated

We have a new update ready for download. You can get the new version in the Downloads tab.

core:
- Fixed a bug that caused string_better to always output .00000000

Website Launched

Today we're launching the official 8.2 Project Website!

We've been cooking something for a while and we think it's ready for public preview. Here you can find news, updates, and links to all the important parts of the Project.

Setup Update

We have a new update ready for download. You can get the new version in the Downloads tab.

core:
- new functions get_system_region, get_system_language
- new functions draw_self_blend, draw_self_ext
- new function file_create
- new function clerp2
- new functions for dealing with included files
- new function font_add_winui for using font files in like the show_message box
- new functions get_open/save_filename_ext for more control
- new functions string_justify,string_wrap
- new function ds_map_write_ini
- fixed the draw self variations crashing when the instance has no sprite
- fixed the battery level returned when you have no battery
- fixed dumb bug in move_wrap
- fixed the default font being broken when using core
- fixed crash when a string is given to string_better
- string_better now returns up to 16 decimal digits

room:
- fixed errors when misdetecting constants in creation code
- fixed misdetection of xy fields when arrays are used in fields
- fixed a crash in the object replace tool
- fixed test run button when using 'portable' gm82
- fixed unwanted zooming when typing digits
- added a preference for using pre-1.2 mouse controls
- added room centering buttons for instances
- added a new tool 'gigaknife'
- made right click actions more sensical
- merged the object tool buttons

dx9:
- fixed surface_reset when using an appsurf

live:
- added a stub extension that can be swapped to in release builds of your game

video:
- added support for using with the Audio extension

What is 8.2?

8.2 is an unofficial, unendorsed, open-source improvement patch for Game Maker 8.1 that we have been chipping away at since 2019. Main changes include:


  • New .gm82 plaintext file format designed for Source-Control and external tools
  • New Room Editor designed from the ground up with dozens of new features
  • Fields, a new visual way to use type-checked Creation Code with the new Room Editor
  • File watcher to allow quick-reloading of projects from disk when using Source Control
  • Many improvements to the IDE appearance and functionality
  • New ability to swap the order of create events and instance creation code
  • New Drag-And-Drop actions for Draw Self, User Event, Event Inherited and Inherit Object
  • Option for default room settings when creating new rooms
  • Re-added support for Bitmap fonts in the IDE and Games
  • Improved performance significantly when saving and loading projects
  • Improved compile times: much faster multithreaded building, scales with cpu core count!
  • Improved compression of Game data (around 5-10%)
  • Improved Game startup: Games with large amounts of objects now finish loading much faster
  • Dozens of custom-built native extensions adding new functionality to the Game Runner
  • Removed one frame of in-Game input lag
  • Removed unnecessary DirectPlay installation prompt in Windows 10+
  • Fixed memory leak in the Image Editor that causes a crash after some time
  • Fixed massive Game slowdown when USB Gamepads are added and then removed from the system
  • Fixed Game slowdown and stuttering on Windows 10+ by adjusting the thread scheduler
  • Fixed IDE access violations and unpredictable corruption of program files
  • Fixed foreign text turning into garbage when loading a v8.0 gmk file
  • Fixed Game crashing when the computer is locked or sleeps
  • Fixed the IDE and Games running out of memory too early

  • The Team behind 8.2

    Floogle
    IDE and Runner Reverse Engineer, Extension Programmer, Tool Programmer

    renex
    UI Designer, Extension Programmer, Tool Programmer


    The new 8.2 Extensions and Tools

    As part of the project, we have a collection of extensions and tools built in GML and C++ to extend the capabilities of the Game Runner. Here's a primer:


  • Alpha
    Apply transparency effects to the Game Window. Supports color-key and direct alpha mode.
     
  • Anvil
    Shader Linter and Compiler for DX9. Supports Studio-like GLSL, ShaderToy and HLSL9. Outputs ready-to-use shader setup code and packed HLSL shaders.
     
  • Audio
    New sound extension based on Cute Framework. Supports Wav and Ogg formats with sound instance control and automatic music fading options. You can also use builtin Sound Resources added through the IDE.
     
  • Chunk
    Load parts of rooms saved to chunk files using the New Room Editor.
     
  • Console
    Open and manipulate a real Console Window, with extensive input and mode support.
     
  • Core
    Large collection of helper functions and fixes for buggy built-in functions, and central solution for running and connecting the other extensions. Most of the 8.2 extensions require Core, and Core also fixes a few traditional Game Runner bugs, with functions to toggle such fixes on and off.
     
  • Drag
    Accept files when they're dragged onto the Game Window.
     
  • DirectX9
    Upgrade your Game's visuals with Shader Programs and fast Vertex Buffer support.
     
  • Gex
    Tool for automatically building and installing Extensions, used for rapid development.
     
  • GLTF
    Load and render complex animated GLTF models with ease in your 3D Games using DirectX9.
     
  • Joystick
    Wrapper for SDL2 Joystick. Replaces the builtin functions with a much more powerful api, with support for up to 16 concurrent joysticks of almost any model.
     
  • Live Room
    Edit rooms in realtime using a live connection to the New Room Editor.
     
  • Network
    Handle Memory Buffers and TCP/UDP Sockets. Also supports basic HTTP functionality.
     
  • Room
    A brand-new Room Editor for the .gm82 project format with hundreds of new features. Required for using the new Fields feature, as well as instance and tile scaling, rotation and blending.
     
  • Sound
    A FmodEx wrapper extension replacing the builtin sound api with a powerful sound engine with support for dozens of audio formats and advanced realtime effects. Currently stuck in a commercial license limbo, and provided mostly for compatibility with old projects.
     
  • Video
    Add Full Motion Video cutscenes to your Game, with support for multiple video tracks and rendering to surfaces. Includes a Video Encoder tool, and a Video Player for the custom .rv2 format.
  • Setup Wizard

    This is the recommended option.

    Download Setup Wizard

    Installs 8.2, Examples, Documentation, the new 8.2 Room Editor, the Model Viewer tool, and both Video Encoder and Video Player tools. Run as Admin to setup file associations as well.

    Portable Version

    Get the program files directly.

    Download "Portable"

    Note that the program will still use the Windows Registry to store preferences due to limitations in our modifications.

    Microsoft Visual C Runtimes

    If you run into issues about "msvcrt140.dll" or similar, please install the following update package from Microsoft.

    Download VC_redist.x86.exe

    Note: Requires Admin privileges to install.

    GitHub Organization

    We have a GitHub org where we store all the source code used to create the various extensions and components for the 8.2 Project.

    8.2 Project on GitHub

    Personal Repositories

    Various legacy or satellite components of the Project are stored on our personal GitHub pages. You can find links to those below.

    Floogle renex

    Discord

    Join our Discord community!

    8.2 ProjectJoin

    There, you can get help and support directly from the developers and users of the 8.2 ecosystem, and also find a showcase of various projects using it.


    Showcase

    Here are some interesting and notable projects created with 8.2.

    Mushroom Kingdom Fusion
    An unofficial, non-profit Mario fan-game crossed over with many other video game franchises.
    elpAudio
    Simple audio player using FMOD. Supports custom visualisers, plugins, Discord Rich Presence and themes.
    renex² engine
    A modern fork of various IWBTG engines, designed to utilize the new 8.2 features.
    WannaFest 22
    Developed by Cherry Treehouse for Fangame Marathon 2022's Blind Adventure event, WannaFest 22 is a fast-paced rollercoaster through hidden gaming gems of the past!
    I Wanna Be The Guy Remastered
    This is a faithful remaster of the original I Wanna Be The Guy, aiming to balance the spirit of the original game with the desire for consistent physics like the fangames that came after while fixing some of the jank.
    Boll Deluxe
    A crossover fan game with Mario and Sonic, in which you progress through Mario-styled levels as various Mario or Sonic characters (plus a couple of guests).