Description

Ever-growing all-in-one package of GML essentials. The package currently contains over 200 scripts and it's still growing! Every script documented. Documentation available online for free. Has a dedicated Discord server to help you out.

EXAMPLES

Assert

A collection of scripts for checking whether certain values or variables meet given conditions. If not, the program ends with your specified error message. Super handy when creating test for checking correctness of your code.

ce_assert_equal(add(1, 1), 2, "Something went horribly wrong.");

Custom Events

A collection of scripts that allow you to trigger GM's user event with additional data and optionally return result from it.

// Inside user event 0
switch (ce_get_event())
{
case EV_GOT_HIT:
    var _attack = ce_get_event_data();
    hp -= _attack / defense;
    ce_event_return("Ouch!");
    break;
}

Macros

Handy macros for stuff like ensuring that given script is executed at most once, no matter how many times you call it.

/// @func init_global()
/// @desc Initializes global variables.
gml_pragma("global", "init_global();");
CE_PRAGMA_ONCE; // As easy as that!
global.gameLaunchedAt = date_current_datetime();

Math

GameMaker by default misses a lot of useful math functions. This library targets just that. It contains matrix functions, vector math, quaterions and more.

// Rotate 3D object towards target
var _vec = [target.x, target.y, target.z];
ce_vec3_subtract(_vec, [x, y, z]);
var _quat = ce_quaternion_create_look_rotation(_vec, [0, 0, 1]);
var _mat = ce_quaternion_to_matrix(_quat);
matrix_set(matrix_word, _mat);

Utils

Library of miscellaneous utility scripts for things like manipulating data structures, color conversions, hexadecimals, string and char utils, UUID 4 generator and more.

// Generate random indices
var _indices = ce_array_create_range(0, _size - 1);
ce_array_shuffle(_indices);
for (var i = 0; i < _size; ++i)
{
    var _index = _indices[i];
    var _object = objects[| _index];
    ...
}

XML

Library for reading and writing XML files.

var _enemies = ce_xml_elem_find_all(_elemCharacters, "enemy");
var _size = ds_list_size(_enemies);
for (var i = 0; i < _size; ++i)
{
    var _enemy = _enemies[| i];
    instance_create_depth(
        ce_xml_elem_get_attribute(_enemy, "x"),
        ce_xml_elem_get_attribute(_enemy, "y"),
        ce_xml_elem_get_attribute(_enemy, "depth"),
        obj_enemy);
}
ds_list_destroy(_enemies);

Serialize

Enables you to serialize object instances into data structures which can be then for example saved on the disk or sent over network and then loaded and deserialized back into instances.

// Save level
var _buffer = buffer_create(1, buffer_grow, 1);
buffer_seek(_buffer, buffer_seek_start, 0);
ce_buffer_write(_buffer, buffer_u32, instance_number(OGameObject));
with (OGameObject)
{
    ce_serialize_to_buffer(id, _buffer);
}
var _compressed = buffer_compress(_buffer);
buffer_delete(_buffer);
buffer_save(_compressed, "save1.sav");
buffer_delete(_compressed);

// Load level
var _compressed = buffer_load("save1.sav");
var _buffer = buffer_decompress(_compressed);
buffer_delete(_compressed);
buffer_seek(_buffer, buffer_seek_start, 0);
var _instanceCount = buffer_read(_buffer, buffer_u32);
repeat (_instanceCount)
{
    ce_deserialize_from_buffer(_buffer);
}
buffer_delete(_buffer);

LINKS

Forum

Discord

Documentation

End User Licence Agreement (EULA).

Changes in 1.1.0

  • Added new script ce_string_explode for splitting strings into array at every occurence of a specified delimiter.
  • Added new script ce_ds_map_clone which creates a shallow copy of a map.
  • Added new scripts ce_string_startswith and ce_string_endswith for checking whether string starts/ends with a given substring.
  • Added new script ce_string_format which replaces all occurences of ${identifier} in the string with data from array/map or instance variables.
  • Added new library Serialize which enables you to serialize instances into data structures which can be then for example saved on the disk or sent over network and then loaded and deserialized back into instances.
    • Contains script ce_add_serializable_property which registers object property for serialization.
    • Contains script ce_deserialize_from_array which instantiates an object serialized to an array.
    • Contains script ce_deserialize_from_buffer which instantiates an object serialized to a buffer.
    • Contains script ce_get_serializable_properties which returns a list of object's serializable properties.
    • Contains script ce_serialize_init_global which intializes the serialization functionality.
    • Contains script ce_serialize_to_array which serializes an instance into an array.
    • Contains script ce_serialize_to_buffer which serializes an instance into a buffer.

Version 1.1.0. Published June 2, 2019

Age Rating: 4+

Average Rating

This asset hasn't received enough reviews yet.

Your review

You can only review assets you've bought.

No reviews yet

No reviews have been left for this asset - be the first!

Package contents

Loading, please wait

What is the issue?

Back to Top