Noteworthy functions that became obsolete
Moving from GameMaker 8.* to GameMaker Studio 1.4.*, these functions were made obsolete, to focus on fast cross platform development.
•
•
•
•
•
•
#GML
Moving from GameMaker 8.* to GameMaker Studio 1.4.*, these functions were made obsolete, to focus on fast cross platform development.
•
screen_*, display_*, window_*•
variable_* and other dynamice resource management•
execute_*, script_get_text, and dynamic code execution•
file_* and anything based on the Windows API•
io_* and other low-level I/O manipulation•
error_*#GML
History of GameMaker: "Game Maker"
1999, summer: The development of Animo, developed in #Delphi by Mark Overmars, a professor at the University of Utrecht, started.
1999, 15 November: V1.1, a simple 2D animation designing tool with a limited visual scripting language, was publicly released. V1.4 made it possible to generate executables. Subsequent releases changed the name to "Game Maker" and moved towards more general-purpose 2D game development.
2000, September: V2.0 was released, which first used #DirectX for sounds, but not graphics.
2001: V3.0 was released and now also used DirectX for graphics. It saved games as
2001, July: V4.0, rewritten from scratch, was released. The GUI was completely revised and took the form that was more or less preserved in later versions. The file extension was changed to
2003, April: V5.0 was released and had a completely new interpreter, making games considerably faster. Although it had been freeware up to v5.0, later versions introduced an optional registration fee.
2004, January: V5.3 introduced many features for registered users, including: particle systems, networking, and DLLs.
2004, October: V6.0 was released. The runtime's drawing pipeline migrated from VCL to Direct3D. This led to sprites, better fonts, primitives, and 3D graphics, but it also broke compatibility. The file extension was changed to .gm6. V6.1 added surfaces.
2007: Growing public interest led Overmars to seek help in expanding the program, which led to partnership with YoYo Games, and Overmars retained a position as one of company's directors.
2007, January: V7.0 was released under the partnership with YoYo Games. It introduced the use of extensions. The file extension was changed to
To create a "YouTube for games", the now archived YoYo Games Sandbox website was created a for uploading and playing Game Maker games, and became quite a success.
2009, December: V8.0 was released. Sprites and the built-in sprite editor were greatly improved, making it much easier to use alpha transparency.
2011, April: V8.1 changed the name to GameMaker (lacking a space) to avoid confusion with the 1991 software Game-Maker. The runtime was rewritten in #CPP to address performance concerns with previous versions. The file extension was changed to
Because of competing projects such as G-Java, G-Creator, LateralGM, etc., the editable game files were encrypted since v.7.0. However, it was not long before the encryptions were broken.
— Summary from game-maker.nl
1999, summer: The development of Animo, developed in #Delphi by Mark Overmars, a professor at the University of Utrecht, started.
1999, 15 November: V1.1, a simple 2D animation designing tool with a limited visual scripting language, was publicly released. V1.4 made it possible to generate executables. Subsequent releases changed the name to "Game Maker" and moved towards more general-purpose 2D game development.
2000, September: V2.0 was released, which first used #DirectX for sounds, but not graphics.
2001: V3.0 was released and now also used DirectX for graphics. It saved games as
.gmf files.2001, July: V4.0, rewritten from scratch, was released. The GUI was completely revised and took the form that was more or less preserved in later versions. The file extension was changed to
.gmd.2003, April: V5.0 was released and had a completely new interpreter, making games considerably faster. Although it had been freeware up to v5.0, later versions introduced an optional registration fee.
2004, January: V5.3 introduced many features for registered users, including: particle systems, networking, and DLLs.
2004, October: V6.0 was released. The runtime's drawing pipeline migrated from VCL to Direct3D. This led to sprites, better fonts, primitives, and 3D graphics, but it also broke compatibility. The file extension was changed to .gm6. V6.1 added surfaces.
2007: Growing public interest led Overmars to seek help in expanding the program, which led to partnership with YoYo Games, and Overmars retained a position as one of company's directors.
2007, January: V7.0 was released under the partnership with YoYo Games. It introduced the use of extensions. The file extension was changed to
.gmk.To create a "YouTube for games", the now archived YoYo Games Sandbox website was created a for uploading and playing Game Maker games, and became quite a success.
2009, December: V8.0 was released. Sprites and the built-in sprite editor were greatly improved, making it much easier to use alpha transparency.
2011, April: V8.1 changed the name to GameMaker (lacking a space) to avoid confusion with the 1991 software Game-Maker. The runtime was rewritten in #CPP to address performance concerns with previous versions. The file extension was changed to
.gm81.Because of competing projects such as G-Java, G-Creator, LateralGM, etc., the editable game files were encrypted since v.7.0. However, it was not long before the encryptions were broken.
— Summary from game-maker.nl
History of GameMaker: "GameMaker: Studio"
2012, May: GameMaker: Studio was launched as a completely new series that targeted commercial developers instead of hobbyists, and supported: #Windows, #Mac_OS (in development since 2007), #HTML5 (in development since 2011), #Android, #iOS, and many other platforms and OSs.
It also completely changed the projects structure: each project is a folder with all resources as individual
Since the launch of Studio, the product has been fully developed by YoYo Games. This makes Game Maker 8.x a closed chapter.
2015, February: GameMaker was acquired by Playtech together with YoYo Games. Announcements reassured improvements and plans to appeal to more advanced developers. They also promised GameMaker Studio 2.0. Nothing was changed for developers.
2016, November: GameMaker Studio 2 beta was released.
2017, March: GameMaker Studio 2, with a completely redesigned IDE rewritten in #CSharp, was released.
Present
Currently, a single code base can run natively across multiple platforms including Android, iOS, HTML5, PS4, Xbox One, Windows Desktop, OS X, Ubuntu, Windows UWP.
Future
GameMaker Studio 2 Roadmap
2012, May: GameMaker: Studio was launched as a completely new series that targeted commercial developers instead of hobbyists, and supported: #Windows, #Mac_OS (in development since 2007), #HTML5 (in development since 2011), #Android, #iOS, and many other platforms and OSs.
It also completely changed the projects structure: each project is a folder with all resources as individual
.gmx files in #XML format. This allows version control, and thus collaboration. Another new feature is a built-in Box2D physics engine.Since the launch of Studio, the product has been fully developed by YoYo Games. This makes Game Maker 8.x a closed chapter.
2015, February: GameMaker was acquired by Playtech together with YoYo Games. Announcements reassured improvements and plans to appeal to more advanced developers. They also promised GameMaker Studio 2.0. Nothing was changed for developers.
2016, November: GameMaker Studio 2 beta was released.
2017, March: GameMaker Studio 2, with a completely redesigned IDE rewritten in #CSharp, was released.
Present
Currently, a single code base can run natively across multiple platforms including Android, iOS, HTML5, PS4, Xbox One, Windows Desktop, OS X, Ubuntu, Windows UWP.
Future
GameMaker Studio 2 Roadmap
No idea is too correct for it to not need reinvention; not even the wheel.
“All our knowledge begins with the senses, proceeds then to the understanding, and ends with reason. There is nothing higher than reason.”
— Immanuel Kant
— Immanuel Kant
“I don't believe in the sort of eureka moment idea. I think it's a myth. I'm very suspicious that actually Archimedes had been thinking about that problem for a long time. And it wasn't that suddenly it came to him.”
— Tim Berners-Lee
— Tim Berners-Lee
“I am on the verge of mysteries and the veil is getting thinner and thinner. The nights seem to me too long... I am often scolded by Madame Pasteur, but I tell her I shall lead her to fame.”
— Louis Pasteur
— Louis Pasteur
“Intuition becomes increasingly valuable in the new information society precisely because there is so much data.”
— John Naisbitt
— John Naisbitt
Let the age of approximations be over. Stop formulating the reality with the ironically named "real" numbers. Existence is discrete in every way. Continuity is an impossibility. Even Democritus knew this.
A machine that would be left dormant forever without human intervention is not truly intelligent.
Data must be meaningful for the machine, not [just] meaningful to us.
Said meaning must be communicate-able among several separate subjects, to ensure its evolution and prevent its corruption.
Data must be meaningful for the machine, not [just] meaningful to us.
Said meaning must be communicate-able among several separate subjects, to ensure its evolution and prevent its corruption.
Most features in languages are solutions to problems that could've been avoided entirely.
Programming means writing a program;
meta-programming means writing a program that writes a program, possibly itself.
meta-programming means writing a program that writes a program, possibly itself.
Ideally, mental datatypes such as text comprising natural language, pictures and sounds, will be transferrable among people.
“Classes will dull your mind, destroy the potential for authentic creativity.”
— John Nash, A Beautiful Mind (2001)
— John Nash, A Beautiful Mind (2001)
You cannot control what you cannot see [or feel].
You cannot send meaningful input to what from which you cannot recieve meaningful output.
You cannot send meaningful input to what from which you cannot recieve meaningful output.
instance place vs. place meeting
Having merged and summarized the information found in the documentations of both GMS1.3 and GM8, I've prepared the following comparison. In the end you will find that they are both the same rountine, only they return different things. According to the documentation of GMS1.3,
These functions let you check a position for a collision against some object, using the collision mask of the current instance. These effectively move the instance to the new position, check for a collision, move it back and tell you if a collision was found or not.
These will work for precise collisions, but only if both the instance and the object being checked for have precise collision masks selected otherwise only bounding box collisions are applied.
In both,
Having merged and summarized the information found in the documentations of both GMS1.3 and GM8, I've prepared the following comparison. In the end you will find that they are both the same rountine, only they return different things. According to the documentation of GMS1.3,
place_meeting is slightly faster than instance_place.These functions let you check a position for a collision against some object, using the collision mask of the current instance. These effectively move the instance to the new position, check for a collision, move it back and tell you if a collision was found or not.
These will work for precise collisions, but only if both the instance and the object being checked for have precise collision masks selected otherwise only bounding box collisions are applied.
// place_meeting(x, y, obj) returns whether the instance placed at position (x, y) meets obj
if keyboard_check(vk_left) if not place_meeting(x-5, y, wall) then x -= 5
// instance_place(x, y, obj) returns some obj, or noone, met when the current instance is placed at position (x, y)
with instance_place(x, y, enemy) {
other.hitpoints -= damage
instance_destroy()
}
In both,
obj can be an object, an instance, all, or other; however the documentation on GM8 lacks allowing other for obj in instance_place