# Force 2025.b1 (Preview 2)

✅ **Latest Preview**

## Overview

Since every next release of **Force** is definetly large, so i cannot predict when i will release it, i will go with **previews** for that release witch are compiled in Debug, so someone can test it, before actuall release. This previews can be multiple times reuploaded, if something major happens it will next preview up to actuall release. This type of releases can be downloaded only via Nave.

#### **Preview 2 (rel):**

**Changes List:**

* Audio. Rewrite the Audio System from scratch, fixed tonna bugs with different audio formats, fixed a lot of memory leaks with streaming audio. Now Streaming Audios can be deleted, renamed, moved, in the Browser, also Streaming Audios now played on its own Audio Thread. Plus improve the Audio Playback UI in Browser, Preview, and Mini-Preview, add X2 back/forward playing. Add new properties to AudioSource component, and fixed positional and rotational 3D-audio, so camera angle and position now affects on audio.
* Browser Thumbnails. A long time ago i cannot figure out how make thumbnails look as good as i wanna it to be, so now its final version of it. Basically now selection of thumbnails covers the thumbnail image + text, so now it can be selected even if click on text, now they looks like a Windows Explorer thumbnails. For image assets, make the image inside thumbnail scale with proper aspect ratio, so different sized images looks good. For font assets, instead of raw texture, make display actual font ABC preview texture.
* Commands & UR-Commands. Improve many commands, one example: fix bug when editor at startup loader state, GUIPanel's witch was as outside main window i.e has a platform interface shows before main window.
* Presets & Prefab Previews. This two previews was completly broken on time of 0.4.0 released, i'm totally forgot about it. So almost all components that shows throw Preset Preivew, cause a crash, when user try to modify them, and the same thing with Prefab Previews, that Prefab Editor even doesn't shows up. So in total there i fixed over 130+ real crashes, and also add abitilty to Undo-Redo actions in Prefab Preview Editor, for Presets it a little too complex (in terns of amount code duplication, not that its too hard to implement), due to how Force Undo-Redo API works. &#x20;
* Editor & ECS. Rework that managment of all editor assets, and runtime resources. Because before too many assets (Textures, Fonts, Audios, Scripts) was not completly removed from memory (in some cases yes, but in some not). One of examples if delete component from object its all resources was released, but if delete scene all objects components resources was not deleted.
* Fonts. Improve speed of loading fonts. Now all fonts that loaded to the project are cached, and that allows editor load project at 90% faster that before. Also in Font Importer all properties can be modified.
* Text Assets. Add support for Text Assets of following formats (.txt, .html, .htm, .xml, .json, .yaml, .csd), now all of this format are recognizable by Force, and they can be modified by specified importers using new Text Editor.
* Scripting:

&#x20;   Rework existing API:&#x20;

&#x20;      —  [AudioClip](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/audioclip)

&#x20;      —  [AudioSource](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/audiosource)

&#x20;      —  AudioEngine ->  [AudioManager](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/audiomanager)

&#x20;      —  [AudioListener](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/audiolistener)

&#x20;      —  [Font](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/font)

&#x20;      —  [Resources](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/resources)

&#x20;      —  [Scene](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/scene)

&#x20;      —  [SceneManager](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/scenemanager)

&#x20;      —  [Text](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/text)

&#x20;      —  [Texture](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/texture)

&#x20;      —  [Texture2D](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/texture2d)

&#x20;    Add new API:

&#x20;      —  [ForceError](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/forceerror)

&#x20;      —  [TextureBlendMode](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/textureblendmode)

&#x20;      —  [TextureFilterType](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/texturefiltertype)

&#x20;      —  [TextureFormat](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/textureformat)

&#x20;      —  [TextureWrappingMode](https://danil-dukhovenko.gitbook.io/force/force-scripting-api/force/texturewrappingmode)

* Graphics:

&#x20;       The problem with OpenGL is that it is becoming obsolete every year and does not support new graphics updates, as its replacement, Vulkan, is already available. Force is about to start developing a 3D renderer like VERY soon, which will primarily support DirectX11 and potentially DirectX12 in the future. I will keep OpenGL around as long as the renderer does not become too large and my hardware supports Vulkan/DirectX12 specifications. As soon as this becomes possible, I will completely abandon OpenGL. Because making complex rendering pipelines such as HDRP is impossible to abstract all of this and because of driver/vendor different implementations of OpenGL that on some may run or on some validate a error.

&#x20;      Since 2021 when i first integrate support for OpenGL, and later DirectX and all renderers, i never techincally improve or refact the renderer, its was raw, my old-write style, and when i looked at it before refactoring my eyes was just blown off. I always had a plan to sit down, take my time, and rewrite the hole renderer, before even thinking about to moving to 3D at the end of the year, in December i suppose, but when i integrade proper Font system for editor, and especially ABC's textures in the Font asset thumbnails, my eyes just can't process what i was seeing. The first problem was with Textures API, between renderers, some texture feature was working on OpenGL, but not working on DirectX. Next, I decided to check what exactly worked on DirectX and what worked on OpenGL. And as it turned out, 90 percent of the textures in DirectX (filtering, samplers) didn't work at all. On the other hand, OpenGL was a bit easier, but again, for example, (mipmapping generation didn't work, or .jpg textures were stretched and rendered incorrectly). And that was just the tip of the iceberg, as it turned out that Uniform Buffers, Vertex Buffers, and Index Buffers also had a lot of problems, one of which was that the editor's grid was completely broken on DirectX 10/11, but it worked on OpenGL. Therefore, I decided to take a break from the editor and focus on a complete, global refactoring of the renderer. In essence, I wrote it from scratch, as I had to modify all the related files and introduce several new concepts. So what going on here:

* FIxed Uniform/Constant Buffers.
* Fixed Index and Vertex Buffers.
* Reworked Context System.
* Reworked Shader System.
* Reworked Textures API.
* Reworked Framebuffers API.
* Fixed bugs with DirectX 10/11 Grid.
* Fixed bugs with DirectX 10/11 Samplers.
* Fixed bugs with DirectX 10 Blending.
* Fixed bugs with DirectX 10/11 Pipeline states leaks.
* Fixed bugs with OpenGL .jpeg textures and mipmapping.
* Support for DSA vs Bind-to-Edit model for OpenGL.
* Support for Debug Layers on DirectX 10, DirectX 11.
* Support for Texture Cubes on DirectX 10, DirectX 11.
* Restore the completly broken OpenGL 3.3.
* Integrate support for dealing with Multiple Render Targets (Attachments).
* Integrate new concept of Pipelines. Which replaces old static RenderCmd.
* Integrate new concept of RenderPasses.
* Rewrite Renderer2D, RendererUI, Basic Renderer (3D).

#### **Preview 1 (dbg):**

**Changes List:**

* Fully completed Undo-Redo system.
* Add Undo-Redo commands for script fields.
* Improve AssetManager and Importers API.
* Improve Scripting and fix multiple crashes.
* Rework Project System and format. Nave now can create projects by using this system. Sadly because this wiil not work for older versions. But with this system Nave can create projects for all next versions.
* Projects now be created only with minimum build tools or Visual Studio installed. **Force** now better  searching for this tools.
* Update scene format to 1004. Add beta support for recovering from older scene versions.
* Rework Assets Previewing from Browser and Preview panels, fix multiple crashes.
* Migrate from C++17 to C++20.
* Release Nave 1.0.5.

## Other Changes

### Bug Fixes

* (F/C) #0316: Fix bug in Application first frame when timer is not fully initialized and give delta time with too large value and thats currupts other variables. (Catch in ExampleApplication).
* (F/E) #0315: Fix some crashes with editor on reloading.
* (F/E) #0314: Fix bug when pressed ctrl + clicks should select/deselect but it also starts to rename (cuz double-click) in browser and explorer.
* (F/E) #0313: Fix bug in Browser when we can open asset when shift/alt/ctrl pressd.
* (F/E) #0312: Fix bug in Browser table entry desel-sel first thumbnail + not sel on full row (on was on selected button)
* (F/M) #0311: Fix bugs with MoveAsset(): Copy, Move operations, and rework WriteExtFile(), ReadExtFile(), CreateAsset with template.
* (F/S) #0310: Fix bug with renaming project, a static buffer cause a crash.
* (F/E) #0309: Fix some bugs with opening/closing in DialogStartup.
* (F/E) #0308: Fix incurrect base dialog opening and closing, because callbacks OnOpenCallback, OnCloseCallback sometimes was not called.
* (F/A) #0307: Fixed crash when user delete Assets project directory.
* (F/G) #0306: Win32: Fix crash when closing Force by Debug Console.
* (F/C) #0305: Fix new Paste (master command) witch are not working.
* (F/E) #0304: Fix bug with incurrent behviour of select asset (the same as Explorer).
* (F/E) #0303: Fix incurrect behaviour in Explorer with select asset (and constantness and C++20).
* (F/P) #0302: Fix multiple bugs with project loading.
* (F/S) #0301: Fix bug that ScriptEngine data was saved to old file.
* (F/E) #0300: Fix bug with wrong Undo-Redo button action in MenuBar.
* (F/S) #0299: Fix bug that ScriptEditor was not recompile script engine after save script them.
* (F/M) #0298: Fix bug during moving folder asset to Backup.
* (F/C) #0297: Fix CommandUR\_RenameScene, CommandUR\_ActivateScene, CommandUR\_SetAsEditableScene, CommandUR\_AddRemoveGameObject/s with sceneUID, instead of Scene
* (F/C) #0296: Fix CommandUR\_OpenScene, CommandUR\_ActivateScene, CommandUR\_SetAsEditableScene when trying to undo/redo in play/simulate mode, it not possible.
* (F/C) #0295: Fix CommandURData\_OpenScene, CommandURData\_ActivateScene with open/close in multicontext, and deactivation states.
* (F/G) #0294: Win32: Fix bug that WorkerDialogThread sometimes shows loading dialog after hide. Need more testing.
* (F/C) #0293: Fix bug in CreateProject witch cause crash in Inspector, Explorer while trying get component from wrapper of GameObject, witch scene was deleted.
* (F/C) #0292: Fix a lot of problems with SaveScene, SaveSceneAs, SaveProject + appearing multiple times the same action dialogs while saving scene from different state of execution.
* (F/C) #0291: Fix SaveScene command witch are clear the current scene UID while saving renamed scene.
* (F/K) #0290: Fix huge CPU usage when dialog windows are opened. Add vSync to Present/SwapBuffers in ImGui implementation.
* (F/G) #0289: Fix bugs with EditorCamera scroll events.
* (F/E) #0288: Fix some bugs in Explorer when scene is not active but we can use commands on it
* (F/C) #0287: Fix bug where Click+Shift UR\_SelectDeselectGameObject was not recorded.
* (F/C) #0286: Fix bug that UR commands not works currectly in simulate mode, and when go from simulate to edit.
* (F/C) #0285: Fix incurrect Undo-Redo recording while selecting, deselecting objects by using Rect tool.
