Releases: Electron7-7/nostalgia-game-engine
Releases · Electron7-7/nostalgia-game-engine
Nostalgia v0.17.0 - Alpha 17
Major Changes
FileSystem- Added new functions for generating a unique filepath if it points to an already existing file/directory
- Improved the
FileSystem::WriteandFileSystem::Readfunctions - Implemented new
FileSystem::Lazy::Writefunctions which perform filepath testing and will automatically rename the path, overwrite the file, or exit with an error depending on the givenFileSystem::OverwriteActionargument
ImageImage::SaveJPGwrites the stored image data to a file at the given path- This uses
FileSystem::Lazy::Writeto rename conflicting filepaths andstbi_write_jpgto write image data to the given filepath
- This uses
- Overhauled file loading vs direct data setting
Image::CreateFromDatanow assumes the given data is already formatted and does not call any STB functions- This is used when getting image data directly from frame/texture buffers.
Image::CreateFromFileis the new function used to create an image from a file (either via filepath or from memory)
- Similar changes were made to
Image::LoadFileandImage::SetData
OpenGLRendererAPI- Implemented a function for saving the entire default framebuffer to an
Image - Implemented a function for binding
FrameBufferobjects- By default, binds the default framebuffer (e.g.
glBindFramebuffer(GL_FRAMEBUFFER, 0))
- By default, binds the default framebuffer (e.g.
- Implemented a function for saving the entire default framebuffer to an
RenderBuffer/OpenGLRenderBuffer- Implemented a class for abstracting render buffers
- Very basic stuff for now; constructors, destructor, id getter, and a function for initializing storage
- Implemented a class for abstracting render buffers
TextureBuffer/OpenGLTextureBufferTextureBuffer::GetImagegets and dumps the texture buffer's current data into anImageOpenGLTextureBuffernow only uses gl4 DSA functions- No more
glTexImage2Dand the like, which also means no more mutable storage; if you wanna resize a texture buffer, you gotta make a whole new buffer
- No more
Viewport/ViewportTextureViewport::Attachbinds the framebuffer and resizes the renderer's viewportViewport::Detachunbinds the framebufferViewportnow holds aRenderBuffer,TextureBuffer, andFrameBufferand is in charge of controlling all of them- In the future, I'd like for
ViewportTextureto take over responsibility of the texture and maybe even render buffers
- In the future, I'd like for
ViewportTextureacts as a direct pass-through to itsViewportfor now
Camera3D/Camera2D/TheatreCamera3D::DrawandCamera2D::Drawnow take over drawing logic, replacingTheatre::Draw3DThinkersandTheatre::Draw2DThinkersCamera3D::DrawBackgroundnow takes over drawing the background/skybox
- Implemented
RenderManager::IsAPIActiveas a better way of checking that the renderer API both exists and is activated
Minor Changes
- Fully implemented ThingVar number type fix from 9d37031
- Added more file-related
Errorvalues - Re-introduced
SafeReturn- It's currently only used by a few new functions in
FileSystemand will most likely be used sparingly
- It's currently only used by a few new functions in
- Implemented
FileData::SetDatafor directly setting file data; this function also allows you to set the filepath if you wish- Now
FileDatareally is just astd::vector<uchar>wrapper
- Now
OpenGLRendererAPIdoesn't save the clear color to a variable anymore- Implemented
Thing::Invalidfor quickly checking if aThingwas created using the string name constructor or not
GitHub PRs
- Indev/v0.17.0/screenshots by @Electron7-7 in #95
Full Changelog: v0.16.2...v0.17.0
Nostalgia v0.16.2 - Alpha 16
Hot Fix
- Stop the frame profiler window from constantly setting its position
Full Changelog: v0.16.1...v0.16.2
Nostalgia v0.16.1 - Alpha 16
Hot Fix:
- Changed how a numeric
ThingVariable's number type is derived, fixing an issue where setting a float variable to a whole number would force it to be an integer variable with no way of changing it back- A full fix for this will be included in v0.17.0
Full Changelog: v0.16.0...v0.16.1
Nostalgia v0.16.0 - Alpha 16
Major Changes
- Major overhaul of the editor including, but not limited to:
- A revamped inspector window that uses
ThingDatato updateThingvariables instead of relying on hard-coding everything - Re-sizeable camera viewports
- Additional 2D viewport
- The editor fully covers the screen and stays in the background
- Improved frame profiler
- Improved
Thingadder- Including name searching
- Loading the current editor state into a playable
Theatreand vice-versa - More robust
Thingselection for certain variables - Fully implemented
BitMaskinterface
- A revamped inspector window that uses
- Replaced many
IDvariables in variousThings with pointers - Implemented
Camera2D's zoom functionality- This implementation uses the view matrix instead of directly fiddling with
glm::ortho
- This implementation uses the view matrix instead of directly fiddling with
- Fully implement type priority in
ThingFactory- Implemented
TheatreData::sort_by_prioritywhich sorts itsThingDatavector by type priority
- Implemented
- Implemented a
FileDataconstructor that takes a string, file type, and optional filepath override string as arguments- This is used to perform file operations on files in memory, forgoing the need to actually make files
- Implemented mouse scroll-wheel input events
- Implemented a custom
EditorTheatreclass for the editor that doesn't update/tick Things and renders special meshes/sprites for specific types (e.g. Camera3D mesh) - Better implement
BitMaskas its ownThingVariabletype
Minor Changes
- New models for
PointLight3DandSpotLight3Dwhen viewed in the editor - Add a boolean argument to the string version of
ThingData::set_variablewhich will accept an empty string variable- The string version of
ThingData::get_variablehas been changed to not ignore empty string variables - This is used in
Text2D::SetVariables
- The string version of
- Improved the body activation code in
Collider3D - A loaded Theatre file now stores its full path instead of just the directory
- Implemented getting raw
Theatresave data as a string, viaTheatre::GetSaveData - Implemented a function for copying data between different
Theatre-derived classes - Implemented a function in
TheatreManagerfor changing the next loadedTheatre's type nullptrexception safeguards in various renderer-related functions
GitHub PRs
- Indev/v0.16.0/bitmask and editor by @Electron7-7 in #94
Full Changelog: v0.15.0...v0.16.0
Nostalgia v0.15.0 - Alpha 15
Major Changes
- Add a function to
ThingFactoryfor getting the map of allThingtype declarations- Integrate
Thingtype declarations intoThingFactory::IsThingandThingFactory::IsDerivedFrom
- Integrate
- Add
ThingVariable::thing_type- This variable is used by 'ID', 'Child', and 'Parent' variables
- Integrate
BitMaskinto the number-related functions inThingVariable - Implement special named numbers into the parser
- These can be used with number variables to represent specific pre-determined numbers (used mainly for bitmasks)
- Removed
NostalgiaPlayer3Dand replace it withNostalgiaPlayerNostalgiaPlayerderives fromThinkerand contains two pointers, anActor3Dand anActor2D. These pointers can be assigned to actors in a Theatre file, and can be thought of like the 3D/2D components of a player
Minor Changes
- Tick rate and interval profiling are disabled by default in the debugger
- Implement
TheatreData::get_logandTheatreData::get_parseable_string - Improve the Theatre file parser
- Changed how
Camera2D,Camera3D,Visual2D, andVisual3Dset/get theirBitMaskvariable - Various editor/debugger improvements and features
GitHub PRs
- Indev/v0.15.0/nostalgia player by @Electron7-7 in #93
Full Changelog: v0.14.0...v0.15.0
Nostalgia v0.14.0 - Alpha 14
Major Changes
- Replaced
MeshwithArrayMeshMeshnow acts more like a pure virtual class (without actually being one, as that's not yet supported)ArrayMeshnow has an extra function for loading a model file directly/creating anArrayMeshfrom a model file
- Updated
OpenGLVertexArray,OpenGLVertexBuffer, andOpenGLIndexBuffer- Implemented more modern gl4 methods
- Added debug data query functions (very non-performant; strictly for debugging purposes)
- Removed the empty, default constructors from the mesh buffers (e.g. VBO & EBO/IBO)
- Redesigned how the buffer layouts and vertex buffers themselves are implemented
- I understand now that the reason for having multiple VBOs per VAO is to buffer separate vertex attribute data into separate VBOs. The changes I made better reflect this use case (and utilize modern gl4 methods, thus being more efficient)
- Created the idea of a mesh surface/shape via
Mesh::SurfaceMesh::Surfaceis a data struct containing the relevant information for drawing a mesh surface:- Primitve type
- Vertex array
MaterialID (unused for now)
Meshdeclares (and gives default definitions to) multiple functions for interfacing with a mesh's various surfacesArrayMeshdefines these functions and maintains a vector ofSurfaces- Rewriting the OBJ-processing code to use
Surfacealso resulted in me no longer needing theVertexstruct or code
- Improved the 'set-' functions in
TheatreFile::ThingData- If the variable being set already exists, it is replaced instead of being duplicated
- Added a new
ThingData::set_enum_variablefunction for setting an enum variable with only the name of the enum (the value is acquired via a new function inEnumRegistry)
- Fully overhauled the editor to be more programmatic and less hard-coded
- Some features are missing, like the ability to select bitmask flags for certain variables, but many new features were easily added in, including a more robust
ThingUID selector, and safer interactions leading to far fewer crashes - Also added some profiling to the debugger, with included graphs!
- Some features are missing, like the ability to select bitmask flags for certain variables, but many new features were easily added in, including a more robust
Minor Changes
- Updated
OpenGLRendererAPIto be less prone to crashes and compiler errors - Fixed a strange issue with
FileSystem::GetProgramDirectoryon Windows - Implemented next-closest type declaration functions in
ThingFactory - Added more functions to
Theatrefor getting the UIDs of allThinkerorResourcethings, as well as all orphanedThinkers- Also added functions for locking specific mutexes
- Added a function to the
EnumRegistryfor getting an enum's raw data value with only its string name - Added a function to the
EnumRegistryfor getting all enums of a specific category (e.g.enum EnumCategory...) with only the name of one enum in that category (e.g.EnumCategory::Enum) - Added a function for discerning the type of number a string represents in (number_parser.hpp)[Nostalgia/theatre/parser/number_parser.hpp#L101)
GitHub PRs
- Indev/v0.14/rendering optimizations by @Electron7-7 in #84
- Indev/v0.14/mesh surfaces by @Electron7-7 in #88
- Indev/v0.14/thing variables overhaul by @Electron7-7 in #89
- Indev/v0.14/editor by @Electron7-7 in #90
- Indev/v0.14/profiling by @Electron7-7 in #91
- Indev/v0.14/editor by @Electron7-7 in #92
Full Changelog: v0.13.1...v0.14.0
Nostalgia v0.13.1 - Alpha 13
Changed ThingData::set_variable. Now it will only add the string variable if it's not empty.
Full Changelog: v0.13.0...v0.13.1
Nostalgia v0.13.0 - Alpha 13
Major Changes
Thing::renameandThing::SetNameChangeCallback- If a callback is set,
Thing::renamewill not updateThing::mNameif it doesn't returnError::OK - Implemented by
TheatreandResourceDatabase
- If a callback is set,
Full Changelog: v0.12.0...v0.13.0
Nostalgia v0.12.0 - Alpha 12
Major Changes
- Removed
UID's functions and gave them toThingto manage its own uids - Overhauled how
Theatrestarts up and createsThingobjects - Overhauled how
Viewport,Camera3D, andCamera2Dinteract with eachother- This includes the added improvement that the "root viewport" is no longer a
Viewportobject tied to theTheatre
- This includes the added improvement that the "root viewport" is no longer a
- Added an
IsRunningquery to the renderer API- Implemented
WindowGLFWtoggling it before callingglfwTerminate - Implemented querying this value before calling gl- functions in most backend classes
- Implemented
- Improved library linking when building the editor/test apps
Minor Changes
- Optimized
Thinkerrelationship setup - Added some debug
Consolevariables - Implemented some more STL-related functions in
TheatreFile::ThingDataandTheatreFile::TheatreData - Other minor improvements and small changes
Previous Undocumented Updates
- Indev/docs by @Electron7-7 in #77
- feature(NostalgiaGoggles): implement getargs v2.0 by @Electron7-7 in #78
- Indev/v0.11.1/theatre file load fix by @Electron7-7 in #79
- Indev/v0.11.2/theatre filepath fixes by @Electron7-7 in #80
- build: don't build the editor by default, due to the more detailed an… by @Electron7-7 in #81
- Indev/v0.12/core thing changes by @Electron7-7 in #82
Full Changelog: v0.10.0...v0.12.0
Nostalgia v0.10.0 - Alpha 10
Major Changes
- Thing
- Made all the virtual functions
protected - Made
mNameprivate Thing::Shutdowngets called directly from the destructor
- Made all the virtual functions
Minor Changes
- ThingData
- Use
Thinker_tandResource_tin function templates
- Use
Full Changelog: v0.9.0...v0.10.0