Repository navigation
CometEngine_2.0-rc.11
Pre-release
Pre-release
[2.0-rc.11] - 2026-04-21
Breaking Change
- Removed C# scripting support. AngelScript is now the only supported scripting language.
Added
- Project manager new functionalities:
- Added a search bar to the top menu for finding projects.
- Added "Scan" button to search for projects inside a folder recursively.
- Added a favourite button for every project in order to show it at the top.
- Added the current version of a project.
- Added the last modification date for a project.
- Support for exporting projects to Android and Web.
- Each project now includes a
project.cometProjectfile at its root to mark the folder as the project's entry point. - Opening the engine when the scripts project does not compile now can trigger two new popups:
- Just once when the engine is opened, a popup saying that the scripts do not compile and that they should be fixed before anything else is triggered.
- When the scripts now compile correctly (only once and just if the engine was opened when they did not compile correctly) a new popup saying that it is better to reload the project is triggered.
- Support for playing videos:
- VideoClip: New resource that can read video files.
- VideoPlayer: New behaviour class that is used to display a video clip in some different modes.
- The
.fntfiles can now be imported and used asBitmapFontto render usingBehaviourText. - Slider to modify the volume when previsualizing an audio on the AudioSample inspector.
- A text box explaining what is happening is now displayed in any collider inspector when an instanciable entity is selected, instead of showing nothing.
- In a
CometEvent, clicking an entity that owns a callback now highlights it in the hierarchy. - A behaviour can also be dropped inside a
CometEventand its Entity will be taken as reference. - Added the tag "Overriding" for the platform export options tab of the textures and texture atlas that are enabled.
- The
BehaviourTextnow uses the kerning of the font. - Now the inspector of a
Fontshows its texture and all the available glyphs. - Some
AudioEffectparameters:AudioEffectEcho:filter.AudioEffectReverb:width,damp,roomSize,freeze,wetMix.
- Script logs are now shown in the console panel with their script path, function name, and line number. Double-clicking a log entry opens and focuses the corresponding code in the editor.
AssetIconnow always shows the icon, even if the asset is not loaded.- Scenes referenced in the inspector of a
ScriptorCometObjectare now automatically included in the build. - New metadata attributes:
TreeNode: Makes a group with all the fields that has the same tree node name and shows them as a tree.Tab: Makes a group with all consecutive fields that has aTabattribute and shows them with tabs.
- The
BehaviourTextnow has a font by default. - Added a new (+) button in the Animation Event Inspector that allows adding a new event at the currently selected frame.
- Added support for 9-sliced sprites using configurable borders to maintain correct aspect ratios. Borders have to be set using the SpriteEditor panel.
- Added render modes for the
SpriteRendererandImage:- Simple: Renders the sprite normally (same as in previous versions).
- Sliced: Uses the sprite’s borders for 9-sliced rendering, preventing distortion and preserving aspect ratio.
- Tiled: Repeats the sprite using 9-sliced rendering, preserving the corners while tiling the edges and center.
- Added an option to add a UI background panel when right-clicking the hierarchy.
- New UI Behaviours added:
- Raw Image: New behaviour that allows rendering a
RenderTextureinside a Canvas. - RectMask: It allows to create a rect zone for the UI where only there it will be rendered.
- Mask: Creates a mask based on the image attached to the same entity, allowing rendering only within that area.
- HorizontalLayout: Organizes all children horizontally.
- VerticalLayout: Organizes all children vertically.
- GridLayout: Organizes all children into a grid.
- LayoutElementConstraints: Defines the preferred, minimum, and flexible sizes of an element.
- ContentSizeController: Adjusts the transform’s size to fit all its children.
- ScrollRect: Allows a rect’s content to be scrolled inside another rect.
- Scrollbar: Interactable bar that allows scrolling a ScrollRect.
- Toggle: Interactable that maintains an on/off state.
- ToggleGroup: Groups multiple toggles so they behave as a unified set.
- Slider: Interactable that holds a bar with a value between the minimum and maximum.
- InputField: Interactable that captures keyboard input to update a Text with what the user types.
- UIParticleSystem: Allows rendering the entity’s particle system directly inside the canvas.
- DropDown: Interactable that opens a popup options menu when clicked.
- Raw Image: New behaviour that allows rendering a
- The UI Interactable color transition now includes a “Use Scaled Time” property to determine whether the fade duration uses scaled time.
- The UI Interactable color/sprite transition now takes by default the self image as a target.
- Added "Ignore Mouse" property to
CanvasGroup, allowing it and all its children to ignore mouse interactions. - Added "Mouse Filter" property to UI Graphics, allowing control over how mouse events interact with them:
PROPAGATE: Mouse events propagate upward until handled.STOP: Mouse events are handled only by this entity.IGNORE: Mouse completely ignores this graphic.BLOCK: Mouse events stop when reaching this graphic.
- Text now has a property to auto set the font size to the biggest possible.
- Added
sortingLayoutandsortingLayoutOrderto the Canvas Screen Mode Camera. - Added
sortingOrderto the Canvas Screen Mode Overlay. - Nested canvases can override sorting and be rendered independently from their parent canvas.
ShowNavigationoption for selectables now saves the state when closing the app and recovers it when opening.- Added
GetPosition/SetPositionmethods at theWindownamespace. - Added an options button to the instantiable entity header in the scene view, allowing changes to be saved or discarded.
- New window configuration properties:
- Initial Position Mode: An enumeration that defines how the initial position of the window is determined. The possible values are:
- ABSOLUTE: The window position is set using the InitialPosition value.
- CENTERED_PRIMARY_SCREEN: The window is centered on the primary display.
- PRIMARY_SCREEN: The window position is set relative to the top-left corner of the primary display using the InitialPosition value.
- CENTERED_OTHER_SCREEN: The window is centered on a non-primary display specified by InitialScreenIndex.
- OTHER_SCREEN: The window position is set relative to the top-left corner of a non-primary display specified by InitialScreenIndex using the InitialPosition value.
- CENTERED_SCREEN_WITH_MOUSE: The window is centered on the display where the mouse cursor is currently located.
- SCREEN_WITH_MOUSE: The window position is set relative to the top-left corner of the display where the mouse cursor is currently located using the InitialPosition value.
- Initial Position: Value specifying the X and Y coordinates for window placement, used in conjunction with certain InitialPositionMode settings.
- Initial Screen Index: An integer specifying which display to use for positioning when certain InitialPositionMode settings are selected.
- Always On Top: Flag that indicates whether the window should always stay on top of other windows.
- Viewport Aspect Ratio: An enumeration that defines the aspect ratio of the game viewport.
- Free Aspect: The viewport will resize freely.
- 16:9, 4:3, 21:9, 16:10, 3:2, 5:4: The viewport will maintain the selected aspect ratio.
- Custom: The viewport will maintain the custom aspect ratio defined in Custom Aspect Ratio.
- Custom Aspect Ratio: Value specifying the custom width and height ratio when Viewport Aspect Ratio is set to Custom.
- Keep Aspect Ratio On FullScreen: Flag that indicates if the aspect ratio should be maintained when in FullScreen mode.
- Keep Aspect Ratio On FullScreen Desktop: Flag that indicates if the aspect ratio should be maintained when in FullScreenDesktop mode.
- New SplashScreen settings: enable or disable the splash screen, change its size, and assign a new texture.
- Initial Position Mode: An enumeration that defines how the initial position of the window is determined. The possible values are:
- Closing the Editor while the SpriteEditor has unsaved changes now triggers a popup asking the user whether to save or discard them.
- Added support for Undo/Redo when editing a sprite in the Sprite Editor.
- If the editor engine crashes, it will generate a .txt with the report of the crash.
- The panel that displays information about the selected sprite in the SpriteEditor can now be minimized and maximized.
- Added an option for the scene camera to simulate the culling view of another game camera.
- AudioClip now has platform-independent properties, such as Streaming Enabled.
- Creating a new project with the project manager now adds a basic gitignore with all files that Comet generates that should not be uploaded.
- New default resolutions available for the Game panel.
- Added a menu to customize Game panel resolutions.
- Added touch and pinch input information at
InputAngelScript class:GetTouchCount(): Returns the number of currently active touches.GetTouchById(uint64 id): Returns the touch data for a specific touch ID.GetTouchByIndex(uint64 index): Returns the touch data for a specific index.IsPinching(): Returns true if a pinch gesture is active.GetPinchZoom(): Returns the pinch zoom scale.onTouchStarted: Event called when a touch starts.onTouchMoved: Event called when a touch moves.onTouchEnded: Event called when a touch ends.onPinchStarted: Event called when a pinch gesture starts.onPinchMoved: Event called when a pinch gesture moves.onPinchEnded: Event called when a pinch gesture ends.
- Network support with TCP sockets (Not valid on Web builds):
SocketClient: TCP client socket for connecting to remote servers. Supports asynchronous connection, sending/receiving data, and connection events (onConnected,onDisconnected,onConnectionFailed,onNewData).SocketServer: TCP server socket for listening to incoming client connections. Supports accepting multiple clients, sending/receiving data to specific clients, broadcasting to all connected clients, and client management events (onClientConnected,onClientDisconnected,onNewData).
- SubResources in
PanelAnimationTimelinecan now be set all together and not one by one. - Deselect the current selected sprite on Panel Sprite editor when pressing ESC or clicking outside the sprite.
- Save shortcut (Ctrl + S) can now be used to save the current changes on the Panel Sprite Editor.
- Double-click the name of a folder or asset in
PanelProjectto rename it. - Popup Select Resource/Entity now can be auto accepted double clicking the desired item.
- Panel Console now shows the amount of logs of each type.
BehaviourTextureRectRenderer: Renders a texture within a specified rect.BehaviourImageRect: Renders a texture within a specified rect for UI.AnimatorStatescan now be configured with exit time in order to ensure a minimum time of the animation has been played before transitioning.- Inspector has a new option to set debug mode to show private variables.
InputActiononStartedandonCancelledevents added.- GraphNode support:
GraphNodeeditor window: Window that manages the visual graph.GraphNode: Base class that manages the flow and execution of the nodes attached to it. Must be inherited to implement custom graph behaviours.Node: Base class that must be inherited to implement custom node behaviours.GraphUpdater: Behaviour that receives aGraphNodeand executes its logic.
- Text now has a new property called
autoContentSizeModethat allows the text to modify theRectTransformsize to fit in width, height, or both. - New system for the InstanciableEntities:
- Nested Entities: Full support for nesting InstanciableEntities within other InstanciableEntities, enabling complex hierarchical structures.
- Variants & Overrides: Support for creating InstanciableEntity variants with property overrides, allowing inherited changes from the base entity while maintaining unique modifications.
- Project Selector now has a new button called "Open Folder" in order to open the file explorer with the selected project.
- New
OnEditedcallback for Script behaviours: called in the editor whenever inspector properties are modified (including after undo/redo), when the behaviour is loaded, or when it is pasted. Useful for reacting to inspector changes at edit time. - New
DataAssetresource type for importing text-based files directly into the project. Files with extensions.bytes,.csv,.htm,.html,.json,.md,.txt,.xml, and.yamlare now recognized as Data Assets and can be placed in the RuntimeAssets folder to be loaded at runtime. TheCometEngine::DataAssetAngelScript class exposes adatastring property to read the file's raw content (e.g. a JSON string). - Added
ResetTrigger()method toAnimator, allowing scripts to manually reset a trigger parameter by name or by parameter ID. - Added new AngelScript
RuntimeAssetsAPI methods for runtime loading and directory queries:LoadAllResources(),LoadAllEntities(),LoadAllScenes(),GetFilesAtDirectory(), andGetDirectoriesAtDirectory(). - Text from the Panel Console now can be copied.
- Added
worldMinandworldMaxread-only properties toCamerato retrieve world-space camera bounds. - Added scalar constructors to
Vector2,Vector2i,Vector3andVector3i, allowing creation from a single value (e.g.Vector3(5)creates(5,5,5)). - Added namespace
CometEditor::Shellwith two new methods:ExecuteCommand: Allows the execution of a system command and returns the exit code.ExecuteWithOutput: Allows the execution of a system command and captures the output.
Changed
- Editor font is now
OpenSans. It is bigger and clearer. - Project manager reorganization:
- Buttons "New" and "Import" have been moved to the top menu bar.
- Button "Delete Missing" has been moved to the bottom utility bar.
- Version has been moved to the top right menu bar.
- The popup "InstanciableEntity has been modified" its title has been renamed to "InstanciableEntity modified".
- Right-clicking an animation event on the timeline now shows individual options for each event instead of only removing all events at the current frame.
- The Sprite Editor tool gizmo now uses an improved handler.
- The default button texture has been updated to one with rounded borders.
- Behaviour image now has by default a white quad as a sprite.
- Creating a UI Behaviour via right-click on the hierarchy will now look for an existing canvas, or create one if none is found, and then create the entity there.
- Clicking in the scene now cycles through overlapping objects one by one, instead of always selecting the first one.
- The
CanvasandCanvasGroupoptions under the Inspector's "UI" → "Add Behaviour" menu have been moved to the "Layout" category. The same change applies to the Main Menu Bar under "Behaviour". - The UI interfaces
IBeginDragAction,IDragAction,IEndDragAction,IPointerClickAction,IPointerDownAction,IPointerEnterAction,IPointerExitAction,IPointerUpActionandIPointerUpOutsideActionnow have their methods receive aPointerEventparameter that contains information about the event. FullScreenMode::SIZEhas been renamed toFullScreenMode::WINDOWED.- The AudioClip Preload Data property is now platform-independent, allowing it to be configured per platform.
- "Build and Run" option now is only available if the selected platform is the current user platform.
- Windows: The Open Folder popup now uses the system’s default folder selection dialog.
- Platform settings for Windows and Linux are now unified under Standalone settings.
- Compilation script error logs now never disappear until the error is solved.
SaveProjectoption now saves everything instead of just saving the assets.- Selecting a directory from the tree no longer deselects the currently selected item.
- It is not needed to press enter to confirm a new name for an
InputGrouporInputAction. - Creating a new
Sceneasset now pre-populates it with a Main Camera entity (and a Global Light entity if the default lighting is enabled in Graphics Settings), instead of an empty scene.
Removed
- Some
AudioEffectparameters:AudioEffectEcho:dryMix.AudioEffectReverb:referenceLF,gain,roomRolloffFactor,decayTime,decayHFRatio,reflectionsLevel,reflectionsDelay,wetLevel,dryLevel,reverbDelay,diffusion,density,referenceHF.
- Some AudioEffects:
Chorus,Compressor,Fader. - Removed the support for the external code editor for VisualStudio. Now VSCode is the only one supported.
- Removed the
version.cometVersionfile from theLibraryfolder. - Selectable
SpriteTransitionno longer includes the Normal Sprite property, as the normal state now uses the attached image by default. - Canvas Screen Mode
sortingOrderproperty has been removed.
Fixed
- Default input bindings for UI Left and Right for controller were inverted.
- Switching the window to fullscreen or fullscreendesktop made it impossible to exit it.
- Executing CometEngine with a console on Windows now will show the logs.
- Modifying a canvas with the screen space render mode was causing a crash when an undo action was performed.
BehaviourTextnow can render characters with accents correctly.- Copying and pasting a canvas that had
ScaleWithScreenSizeScaleModewas causing a crash. - Closing Comet with a copied canvas in the cache that had a camera attached on the
WorldSpaceorScreenSpacewas causing a crash. - Closing Comet with a copied script behaviour after play and stop a game was causing a crash.
- Cameras that were rendering to a render texture were rendering to the game view as well.
- Once an AudioMixerGroup was set to an AudioSource, it was not possible to remove it again.
- Changing the 'Max Size' of a texture with no RGBA format in its inspector to a size that is smaller than the original was causing the texture to lose its alpha.
- Some fonts were not positioned correctly when rendering them using
BehaviourText. - When using the search in the panel project sometimes textures appeared black.
- If the pc crashed (blue windows) while CometEngine was opened, the next time Comet is opened it crashes.
- Selecting a tile and setting the desired tile object via the inspector was not rendering correctly the tile.
- The properties for the
PanelAnimatorTimelinethat were from a script were not showing the name of the behaviour. - When the
InputWrapperscript was deleted using the internal CometEngine filesystem or an external one,ProjectSettings/Inputwas incorrectly indicating that theInputWrapperalready existed. - The "InstanciableEntity modified" popup text now fits correctly.
- Importing a folder that already exists, now will overwrite file per file and import them again.
- Clicking a mixer or a layout at the project was not focusing the correct one at the mixer panel.
- Custom shaders were not able to use sprite renderer sprite texture.
- Closing Comet while playmode was active caused the current scenes to be saved as the last opened. As a result, the next time Comet started, those scenes were reopened instead of the original ones from before entering playmode.
- Tilemap brushes are now disabled when the panel is hidden.
- Dropping a texture with single sprite mode to the inspector script field variable was not reacting. Now it is possible to set it.
- Inspector script sprite fields now correctly accept textures in single sprite mode (previously dropping them had no effect).
- The renaming input box for sub-assets was incorrectly positioned at the start of the next asset.
- The renaming resource input box sometimes never disappeared, depending on the first action after requesting the rename.
- An animator state node was sometimes not deselected when another item was selected, requiring a double-click to select it again.
- Using the
AssetIconattribute on aTextureorSpritefield for aCometObjectdisplayed the icon in the project file nodes as expected, but if later it was set to null, the icon remained visible. - TextEditor was not capturing the keyboard so it was impossible to write.
- Animator nodes showing animation progress no longer grow in size.
- Scripts dropped onto hierarchy entities that are not selected now correctly attach even when another entity is selected.
- Dropping a script onto an entity in the hierarchy was deselecting everything.
- When the window was in fulldesktop mode and the focus was gained/lost then it turned to black for one second.
- The pref directory was not working on Linux.
- Default build platform was always Windows, now the default platform is the platform where Comet is running on.
- Joysticks and haptics were not working on Linux.
- Switching from fullscreen to windowed mode could cause parts of the screen that were outside the new resolution to retain old frame data instead of being properly cleared to black.
- Filtering a resource by type in the project panel could cause multiple resource types to appear selected at once.
- Filtering by instantiable entities in the project panel did not detect any, even when they were present.
- Undoing after modifying a Rect Transform was not restoring the entity to its correct position.
- Undoing after deleting an entity could crash the engine.
- Adding a canvas to an entity when that entity was already inside another canvas was scaling the current entity incorrectly.
- Nested canvases were not rendering according to their hierarchy, which sometimes caused incorrect render layouts.
- Nested canvases are now refreshed and adjusted correctly when the main canvas changes its render mode.
- Editing a draggable number field with the mouse, confirming with Enter, and then editing a different field caused Undo to revert both edits instead of just the last one.
- Disabling a
CanvasGroupnow stops applying its properties. - Fixed some issues when rendering a text with truncate activated.
- Huge performance improvements when moving a RectTransform within large hierarchies.
- Fixed an issue where adding an AudioListener after some audios had already started caused them to still be inaudible.
- Fixed an issue where opening a prefab containing UI elements would not render them.
- Loading scenes asynchronously could sometimes duplicate some entities.
- Double-clicking a folder in the Project panel would select another file or folder occupying the same position after entering it.
- Fixed error of Pivot/Center and Bounds transformation tool for sprite renderers when using the tool if that sprite had a pivot.
- Launching the engine using a shortcut (such as the Windows taskbar) could cause unexpected behavior.
- Closing the engine while Play Mode was active with the Play view maximized caused it to remain maximized the next time the engine was opened.
- Selected entities and resources were sometimes deselected unexpectedly.
- World Canvases were not sorted as expected.
- The cursor could become stuck when hovering the Game view and not return to normal.
- Crash when the panel animation was playing an animation and then another entity clicked to select it.
- Panel Project mode list various fixes.
- Painting a tilemap could sometimes freeze the entire editor.
- Shift-selecting assets did not preserve the correct order.
- Controller Axis Y was inverted.
- The version label in the Project Manager menu bar is now correctly positioned regardless of window width or version string length.
- Opening a project when the engine executable cannot be found now shows a clear error popup instead of failing silently.
OnDrawGizmosandOnDrawGizmosSelectedare no longer rendered if the "Gizmos" option in the scene view is deactivated.BehaviourUISelectableanimation transitions now reset all trigger parameters before applying a new state, preventing stale triggers from causing unintended transitions.AudioSourcemethodPlayOncewas playing theAudioSamplewith loop instead of single.- Stopping playmode no longer leaves audio sounds playing in the background
- Script variable names in the inspector now format correctly when containing consecutive uppercase letters.
- Clicking a field in the Behavior Inspector that references an InstantiableEntity was not highlighting the actual asset.
- Popup Select Entity now only shows the valid Entities instead of all Entities.
- The editor was not closed if the was a window outside the main editor.
- The
Mute Audiooption inPanelGamewas not persisting after restarting the engine if it had been activated. - Shortcut profiles could not be changed because the UI was unresponsive.