Force 0.3.9
⚠️ This is outdated build of Force. Soon it will be removed from downloading.
Overview
Finally it's time again for another pre-release of Force. It was probably the longest and most difficult pre-release of all that came before. Since Force has changed and grown cordially lately, in the capabilities and amount of code, I decided after the release of 0.3.5 to work on its optimization and fix various kinds of errors and unfinished fitches, which have already accumulated a lot.
Therefore, from the user side, he does not contains any there coordinated visual changes (although there are some), but rather focuses more on flexibility and stability.
This pre-release is divided into 3 categories of changes:
One of them is its Сore, which has been almost completely redesigned.
The second is the modification and correction of errors in the Editor itself.
And the third is this stability and a completely redesigned Scripting System that corrects one of the most global errors is a memory leaking.
Also with this pre-release, the first version of the launcher, Force Nave, was supposed to be released. But since I didn't have time to finish it completely in the prescribed time, it will be released in the next upcoming releases.
So let's get started.
Core
Application System
Rewrite the Force Application system, now creating and handling application with Force is a lot easier that was before. Add more information about Application that sorted nices now in specifications, specific for user, build, and other various kinda of scenarios.
Also now Force can reload Application on the fly. That feature is allows dynamically switch between windowed and fullscreen mode, and switch the rendering API, that implemented in Editor already.
And Application now can create and load users, that defines the information about current application session, but still sometimes buggy yet.
And finally, the entire main application cycle has been completely redesigned and has several states, that allows redraw some content during current frame for several visual effects.
Element System
Elements that holds Editor and Runtime stuff, also have few new additions. One of them is that some events with loading, opening projects, or compiling scripts now happens after main frame ended and some of it use different threads.
Scripting System
Most important changes
Scripts instantiates now only in runtime. Before it was like when attach script it already instantiate it in Edit Mode.
Improve Build Script Engine, now its builds on different thread and you can still working in Editor without waiting.
Rework the rebuild scripts in runtime, add new options in to Preferences -> Editor -> Rebuild Scripts In Play Mode.
Fix a freaking hold bunch of memory leaks with Mono Runtime. So now Editor should not grows in memory when user uses script in their project in runtime.
Now Force detect status of build script project from MSBuild, and print correspond messages.
C# Scene Manager
Extended C# Physics
Adds AABB, PhysicsShape2D, PhysicsShape2DType, Physics2DSettings, Transform2D, and expand Collider2D and Rigidbody2D classes. In general now user can more control on physics from scripts.
Editor
New Dialog System
Maybe the most big visual update of this pre-release is new Dialog System. By this i mean that im completely rework on all dialogs in the Force. For example: Creation, Opening projects & scenes, Settings (that now called Preferences), Preset selection dialog window and so on. Now creating projects, scripts, prefabs, scenes is a lot easily and what is more, it is stability and not crashes as it was before.
New Create Project Dialog
New Create Script, Prefab, Scene Dialog
Also now Force has kinda of startup screen or Project Configuration on startup, that allows to you create, open or open recent opened project right there.
Project Configuration Dialog
Editor UI
The editor's UI has also undergone some changes. Now all UI are displayed correctly with all components in the inspector and so on.
Status bar also have few changes. Now it actually shows that scene or project was changed, saved, or for example that scripts are building right now.
Asset Manager & New Assets Browser
Asset Manager itself and Project Browser (now called Assets Browser) was fixed and slightly redesigned. Was added new section of Asset Manager is relationship between relative and full paths, reason it because i already build application to final executable and because path was fullpath it breaks game when its game folder moves to another directory.
Most important fixes that i've made its with moving assets to another directory was incorrect, sometimes lead to crash, fixed copying, pasting, deleting, and creating assets because of the same reason.
Physics
A lot improvements comes to Physics Engine. Fixed incorrect controlling physics variable, creating and destroying bodies in play and simulation modes, and also incorrect displaying colliders.
Runtime
Implement the full runtime, that allows build and play the game outside the Editor in the executable application. But now that feature available only for me and feature developers.
Rendering
Fixed some bugs with graphics and rendering, with rendering camera, resizing window and game viewport. Also add raw implementation of 3D render engine, but not included in the Editor for now.
Other Changes
Bug-Fixes:
0.3.9:
Now Application update loop is updates by running flag not by window request.
Fix that audio/sounds sources not currently delete and that cause crash at the end.
Fix lot of bugs with freeing resources when application is shutdowns.
Fix bug with OpenGL frame, when ImGui was detached is not render anything.
Fix bug with DirectX 11/10 with incorrect primitive topology when ImGui was detached.
Fix bug that when we in multi context mode and create object on different "editable" scene it create object on first in list.
GLFW: Fix Force input not call pull event.
PlatformLoader: GLFW not create the graphics context.
Rename MoveAssetToDirectory to MoveAsset, and MoveAssetToDirectory1 to MoveAssetItem, and MoveAssetFolderToDirectory1 to MoveAssetFolder.
Remove BrowserItemType, fully replaced by AssetType.
SubItem renamed to HierarchyNodeRecursive.
Fixed bug to not allow go back on SubBarPanel if directory tree has identical folders.
Rewrite behaviour of DrawThumbnail.
Create OpenAsset function and rename OpenItem/Directory to OpenAssetItem and OpenAssetFolder.
Group the asset manipulation code.
Rewrite Drag & Drop Files/Folder API.
MoveAsset, with behaviours for file (MoveAssetItem) and folder (MoveAssetFolder) is updated to relative path and using FileSystem::CopyFile/CopyFolder.
Fix PasteAsset + with additional checks and changes few small thing.
Fixed start dragging. Add delta to resolution of 5 px to start drag.
Remove strange possibleCopy variable that was do nothing.
Remove unused selectedThumbnailInFrame variable.
Add new folder icon.
Fix bug that max scrolled area with button + image, but not include text.
Rename DrawThumbnailWithInputText to DrawThumbnailEdit.
Remove AssetCreationData and AssetModificationState_NewAsset.
Rewrite behavior of DrawThumbnailEdit, now edit state have two state Create and Rename.
In future fix bug with is we copy from selectedDirectory to copyDirectory where selectedDirectory == copyDirectory.
When reloading scripts at play mode object still have old assembly pointer. See OnStart() vs OnValidate()
Fix deleting objects at runtime.
Edit name in runtime not affect on instance of object in script.
Tag in runtime not affect on instance of object in script.
Transform in runtime not affect on instance of object.
Transform with physics not affect on instance of object.
Runtime fixture not became NULL on colliders when body destroy it.
Fix bug that script project include the scripts from Backup folder. For example old ExampleScript.cs.
Fix bug that script fields not appears in simulation mode.
Fix a freaking hold bunch of memory leaks with mono: mono_string_new_wrapper replaced by mono_string_new. mono_string_new_wrapper actulally not free the string and no way to free it its just wrapper over mono. So mono_string_new_wrapper used in Force script engine almost in each function so always before was memory leak.
Last updated