CE Core CE Core is an exhaustive collection of GML libraries for GameMaker Studio 2 developed by an experienced programmer (tools and graphics programmer of BBP, TyuTyu NyuNyu: The Forest Ninja, PushEd, BlueBurn AssetCreator, Xpanda, YYC Overwrite, Optimizing code for YYC, Custom C++ in YYC without DLLs). Its target is to provide you with a strong codebase so you can focus on coding your games instead of their technical backgrounds. The extension is written in a modular manner, so you can decide on what parts of it you want to import and start utilizing it in your projects gradually. Class system CE Core comes with a custom class system built upon maps. It has support for inheritance, final classes (classes which cannot be further inherited), inheritance checks (you can check if given instance inherits from some class), casting instances from their class to another class which they inherit from, property calls (simple single parameter methods) including super, property getters & setters and destructors, which are scripts called automatically when an instance of a class is deleted. Component system Since GameMaker does not have support for multiple inheritance, it can become problematic to share code between objects which do not or cannot inherit from a common ancestor. The component system tries to address just that. It allows you to write game logic in form of components, which are special classes consisting of data and scripts which are triggered in specific events. These components can be added to and removed from instances on runtime. An example of a component could be an AI component, which would normally be added to enemies, but could also be added to disconnected players in a multiplayer game. The extension currently comes with three components - depth sort component, timer component, state machine component. The depth sort component allows you to define drawing order of instances like depth=-y did, but using layers. The state machine component, as the name suggests, allows you to easily define state machines. The timer components allows you to define timers which will trigger a callback script and / or a custom event after specified number of milliseconds. And of course, this system comes with handy scripts like getting list of all components of an instance, getting objects which have specified components etc. Event system GM does have support for a long list of events, but sometimes it would be useful to have custom ones tailored for needs of you game. CE Core enables not only that, but also triggering your custom events with additional parameters as well returning values from the triggered events. All in just a few scripts. Input system An input system is a crucial part of every game, as every game requires some kind of interaction with the player, whether its through a gamepad or mouse and keyboard. CE Core contains an input system which enables you to easily define, modify, save & load input schemes by assigning mouse + keyboard or gamepad controls to actions and then check whether any key bound to an action is held down/pressed/released. Math There is math behind every game, and CE Core comes with a highly optimized, high performance math library with which you won't have to write scripts for adding two vectors ever again. The math library contains an extensive list of matrix, quaternion, vector and other functions, with which tasks like rotating a cannon to face its target in a 3D space become easy. Serialization Object serialization and deserialization is a common task for many games, whether it is for a save system or sharing objects over network. The serialization library allows you to achieve this easily just by defining what variables you want to save or share and the (de)serialization is then just a matter of a single function call. Utilities We all know the boring repeated tasks of shuffling an array, converting colors from ARGB to RGBA format, filtering a list, getting all keys or values of a map, checking if a number is odd or even, exploding strings on a specified character into an array, blurring a surface and many others. The utilities library focuses on shortening the boilerplate code into single function calls. Still growing! CE Core is being developed alongside projects that utilize it and so its content is driven mainly by their needs. There is a high chance that if it's missing something right now, it may be added in future updates. You yourself can shape the future and extents of CE Core by using it in your projects! Documentation and help Every script contained in the extension is documented. For the more complex libraries, I am working on manuals and examples that should help you get started with the libraries more easily. And if you still have more questions or need more help with the extension, there is a dedicated Discord server where I will try to do my best to help you out. Open source Since September 17, 2019, the full source code is available under the MIT license on GitHub. Links GitHub Marketplace Itch.io Documentation Latest changelog Discord Trello Twitch You can also follow me on Twitter @kraifpatrik where I post notifications when a new update comes out etc.