# GMLscripts.com

Discuss and collaborate on GML scripts

You are not logged in.

## #1 2015-04-22 06:09:52

xot
Registered: 2007-08-18
Posts: 1,195

### GM:Studio Early Access 1.99.402 Changes

These are the changes since the Stable/Beta Version 1.4.1567 release.

##### New Stuff

Buffers
buffer_copy_from_vertex_buffer() — Copy all or part of a vertex buffer into a regular buffer.
buffer_create_from_vertex_buffer() — Create a new buffer using data from a vertex buffer.
buffer_create_from_vertex_buffer_ext() — Create a new buffer using data from a vertex buffer, specifying the number of vertices in the buffer to use.

Data Types
is_int32() — Returns whether the given argument is an int32.
is_int64() — Returns whether the given argument is an int64.
is_matrix() — Returns whether the given argument is a matrix.
int64() — Attempts to convert a value into a 64bit integer.
ptr() — Attempts to converts a given value into a pointer.

Note that created variables in GameMaker are all stored as double-precision floating point numbers, but you can use other formats when dealing with extensions. These can be passed into GameMaker: Studio from an extension and then checked using the appropriate is_ function, listed at the bottom of this page.

Networking
network_create_socket_ext() — Create a new client socket, with a specific port number.

Steam API
steam_available_languages() — Returns the available languages for Steam.
steam_current_game_language() — Returns the language string for the game.

Vertex Formats
vertex_format_delete() — Remove a custom vertex format from memory.

YYC
gml_pragma() — Set the YYC target to compile using the given command.
Mac OSX compiler now available.
Ubuntu (Linux) compiler now available.

YoYo Account

The YoYo Account is unified across GM:Studio license, Marketplace, and Player.

##### Changes

Events
Animation End Event behavior has been clarified in the documentation.

In GameMaker: Studio sprites are not static things as they can have sub-images and be animated at different speeds. Each frame of an animation (called a sub-image) has its own number, starting at 0, which can be checked in code or even through actions, but sometimes all you really need to know is when the animation has ended. That's when this event is triggered, right at the end of the animation, the moment that the sub image index loops back to the beginning (0). This event is really useful for many things, for example an explosion object where you can set the instance to destroy itself after the last frame of the animation has been shown.

NOTE: Because the animation has already looped when this event fires, if you want to freeze the animation on the exact last frame then you will need to manually reset the image_index to the last frame (image_number - 1) in this event.

Room Editor
The Room Editor has new keyboard commands for Objects and Tiles.

• <Cursor Keys> — Move the instance/tile 1 pixel in the direction of the cursor key.

• <Cursor Keys> + <Shift> — Move the instance/tile 10 pixels in the direction of the cursor key.

• <Cursor Keys> + <Control> — Move the instance/tile 5 pixels in the direction of the cursor key.

• <Cursor Keys> + <Shift> + <Control> — Snap the instance/tile to the next nearest grid position in the direction of the cursor key.

Fonts
It is now possible to export a base font (eg. TTF file) as part of a Marketplace package. Normally fonts cannot be exported due to licensing reasons.

Code
Code snippets are now stored in the Local App Data directory. They will no longer be overwritten when updating GM:Studio.

Game Assets
asset_get_index() — NOTE: Script names will not resolve as assets on the HTML5 target platform due to obfuscation of the final code, which may cause issues and should be taken into consideration when using the function.

font_add() — NOTE: You should be aware too that there is a limitation of around 200 glyphs that can be rendered
in a single frame for a particular font.

Miscellaneous
game_restart() — NOTE: However it should be noted that global variables will not be re-initialised
unless explicitly coded as such -  for example, the built-in global variable score will not start at zero after a game restart if it has been modified in the game already.

Device Input
device_is_keypad_open() — Constants have been changed a bit for Sony Xperia Play devices.

For those users with a Sony Xperia Play, there is a set button/key map setup within GameMaker: Studio, so you can use the keyboard constants vk_up, vk_down, vk_left, vk_right for the joypad keys and Triangle is ord('T'), Square is ord('S'), Circle is vk_alt + vk_backspace while the back button is simply vk_backspace, Cross is vk_space, Select is vk_return and Start is vk_rshift, the L Trigger is ord('L') and R Trigger is ord('R').

Instances
instance_find() — The documentations clarifies that the order the instances are selected is the order in which they were created.

Objects
event_perform_object() — The documentation clarifies that the actions performed by the event are performed on the calling instance, not the given object.

Networking
Reliable UDP

Russell Kay wrote:

It is reliable in that the packets are sent in order and will be resent if they do not arrive (subsequent ones are buffered until needed) but UDP is always used so it makes the UDP socket like a TCP one.

Strings
string_format() — The documentation (sort of) clarifies that zeros will be appended to the decimal portion of the returned value if that portion is shorter than the requested length.

Abusing forum power since 1986.

Offline