It’s been a trying time for everyone due to the Covid-19 pandemic, and unfortunately it has caused some disruptions to the development of Bright Engine. However, things are now getting back on track and we’ve managed to make excellent progress despite the ongoing situation. The scripting system is now approximately 40% functional with six of the core classes now fully implemented! We’ve also completely revamped the diagnostics suite and squashed a whole lot of bugs!
A Huge Thank you to our Patrons! Your contributions make Bright Engine Possible!
Cody Pryor • Massum Zaidi • Mark Makarainen
In the last update input triggered script events were introduced. But aside from getting the console to print “hello world”, there was no scripting functionality. We’ve now expanded the scripting class base to include - Cameras, Lights, Paths, Sounds, and Waypoints. That means you can control any of these objects by script!
We’ve also begun building up a base math library to speed up the process of performing complex calculations starting with a Vector2D, Vector3D and Vector4D math classes, while also laying down the foundation for more advanced calculations such as complex numbers.
A new addition to the object library of Bright Engine is Trigger objects. Being able to execute scripts using a mouse and keyboard is important, but games need far more flexibility than that.
Trigger objects are invisible areas you can place throughout your zones which will execute a specified script when the camera enters their radius.
They are equipped with three trigger events. Entry (triggers when the camera enters the trigger radius), Exit (triggers when the camera leaves the trigger radius), and Inside (triggers while the camera is inside the trigger radius). This system also comes with a cooldown mechanism to prevent the execution of scripts for a certain period of time.
Changes & Improvements
Since the main theme of this update is scripting, we’ve made several improvements to the user experience of the Script Editor itself.
The code editor is now equipped with a more robust and optimised syntax highlighting system, along with an autocompleter for functions and object properties.
We’ve also made some tweaks to improve the in-editor documentation tooltips for a clear explanation as to what each function or property does, and how they work.
Beyond these improvements, we’ve also added a file save catching system to stop you from accidentally closing the editor without saving your work, as well as changed the default weight of a keymap to one instead of zero.
The World Editor has also had some attention.
We’ve completely removed the old GPU diagnostics suite and replaced it with a brand new profiling suite.
Data and performance tracking is now far more accurate, as well as faster. A big problem with the previous version was the sudden decrease in performance once the diagnostics suite was opened. This is no longer an issue and has subsequently allowed for more variables to be tracked over time.
We’ve also taken the time to adjust the layout of certain components within the UI as well as fixing some visual glitches. The object Place buttons are now in alphabetical order, icons in the hierarchy are thematically consistent with the rest of the editor, and some default values have been adjusted for a more intuitive workflow.
The zone hierarchy has also had some under the hood improvements. It now performs an object validation when loading zones to ensure any entries of missing objects are not included in the list (this eliminates a lot of problems where on the rare occasion you could select an object that didn’t exist causing all sort of weird behaviour). We’ve also added a shortcut key to hide/unhide the entire selection of items within the hierarchy instead of having to do them individually.
Further minor optimisations have been added to the waypoint path transformation routines, reducing the number of cpu cycles and resulting in a high end fps for users.
We’ve also made some further improvements to the Material Editor.
We’ve introduced a new material type system. You can now create PBR materials as well as fully Emissive materials. The purpose of the latter is to exclude objects from the lighting and shadow calculations if they are never going to interact with it. This adds an additional layer of streamlining performance, as well as laying the groundwork for further unique materials such as Glass in the future.
The node library has also been expanded with the addition of the Animate UV node. This node brings support for animated texture atlases on your models, allowing for some crazy effects, with both step and interpolated frame transitions.
As part of getting this node to function, the UV Coordinate input plug of the texture nodes is now functioning allowing you to apply transformations to your object’s UV coordinates.
- Fixed bug where removing an object would sometimes re-appear in the hierarchy next time the zone is loaded
- Fixed bug where selecting an object from the hierarchy sometimes caused a crash
- Fixed bug where manipulating an object's waypoint path offset with the 3D cursor incorrectly updated the UI and sometimes caused a crash
- Fixed bug where deltaTime was being calculated twice per frame
- Fixed bug where camera lens settings were not being copied when duplicating a camera object
- Fixed bug where audio effect settings were not being copied when duplicating an audio object
- Fixed bug where camera lens settings were not being correctly registered with the undo/redo system
- Fixed bug where the audio effect settings were not being correctly registered with the undo/redo system
- Fixed bug where the Waypoint Sleep Randomiser setting was missing
- Fixed bug where changing the Position offset values of an object assigned to a waypoint Path caused a crash
- Fixed bug where changing the Rotation offset values of an object assigned to a waypoint Path caused a crash
- Fixed bug where entering a hexadecimal color code without the hashtag symbol sometimes caused a crash
- Fixed bug where entering a double negative sign into a vector 2D or vector 3D field would cause a crash
- Fixed bug where the Ctrl key was defocusing UI preventing users to copy/cut/paste values
- Fixed bug where creating a new zone led to errors in the Post Processing Data file causing the engine to crash
- Fixed bug where the Editor camera speed was not being loaded correctly upon restarting the engine
- Fixed bug where the Editor Camera Range was not being loaded correctly upon restarting the engine
- Fixed bug where adjusting the camera range using the keyboard shortcuts allowed a value to be out of bounds causing a crash
- Fixed bug where adjusting the camera range using the keyboard shortcuts produced incorrect results
- Fixed bug where diagnostic textures were not being bound correctly
- Fixed bug where adding a camera to a scene with no lights caused a crash
- Fixed bug where adding a particle to a scene with no lights caused a crash
- Fixed bug where duplicating a light would crash if the color mode of a light had not been previously set
- Fixed bug where duplicating an object after deleting another object of the same kind resulted in an incorrect write to the data files corrupting the zone
- Fixed bug where importing corrupted model files caused the engine to crash
- Fixed bug where selecting a group of emitters when there are no lights in the zone caused a crash
- Fixed bug where Emitters could be placed without specifying an emitter file path
- Fixed bug where selecting an Emitter when there were no lights in the zone caused a crash
- Fixed bug where selecting an Emitter when there were no models in the zone caused a crash
- Fixed bug where removing an Emitter would sometimes cause a crash
- Fixed bug where Input keymaps were not updating until after the World Editor was restarted
- Fixed bug where changing the light type before removing the same light from the scene would cause a crash
- Fixed bug where changing the particle system of an emitter before removing the same emitter from the scene would cause a crash
- Fixed bug where changing the preview mode caused strange behavior when using keyboard shortcuts
- Fixed bug where the bloom effect was still being enabled when previewing the material outside of composite mode
- Fixed bug where duplicating a Color Node did not copy over the color value to the new node
- Fixed bug where duplicating an Image Texture Node caused a crash
- Fixed bug where moving a Comment Box after changing the zoom level sometimes did not move the nodes with it
- Fixed bug where the autocompleter did not ignore whitespaces when generating lists
Last update managed to excite a lot of new developers to join the alpha. This is awesome to see, but it did reveal a lot of hardware based problems with the engine. Therefore, the next update is going to be focused on fixing those bugs as well as some drastic improvements to performance! We’re also going to be continuing our efforts to expand the functionality of the scripting system to include more Classes as we slowly move closer towards implementing the first round of user interface systems! Stay safe and thanks for tuning in!