Skip to content

Releases: Electron7-7/nostalgia-game-engine

Nostalgia v0.17.0 - Alpha 17

23 Apr 21:42
v0.17.0
37839c4

Choose a tag to compare

Major Changes

Minor Changes

  • Fully implemented ThingVar number type fix from 9d37031
  • Added more file-related Error values
  • Re-introduced SafeReturn
    • It's currently only used by a few new functions in FileSystem and will most likely be used sparingly
  • Implemented FileData::SetData for directly setting file data; this function also allows you to set the filepath if you wish
    • Now FileData really is just a std::vector<uchar> wrapper
  • OpenGLRendererAPI doesn't save the clear color to a variable anymore
  • Implemented Thing::Invalid for quickly checking if a Thing was created using the string name constructor or not

GitHub PRs

Full Changelog: v0.16.2...v0.17.0

Nostalgia v0.16.2 - Alpha 16

17 Apr 16:12
v0.16.2
72f4895

Choose a tag to compare

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

17 Apr 15:55
v0.16.1
a207aee

Choose a tag to compare

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

17 Apr 02:51
v0.16.0
485fb6c

Choose a tag to compare

Major Changes

  • Major overhaul of the editor including, but not limited to:
    • A revamped inspector window that uses ThingData to update Thing variables 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 Thing adder
      • Including name searching
    • Loading the current editor state into a playable Theatre and vice-versa
    • More robust Thing selection for certain variables
    • Fully implemented BitMask interface
  • Replaced many ID variables in various Things with pointers
  • Implemented Camera2D's zoom functionality
    • This implementation uses the view matrix instead of directly fiddling with glm::ortho
  • Fully implement type priority in ThingFactory
  • Implemented a FileData constructor 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 EditorTheatre class for the editor that doesn't update/tick Things and renders special meshes/sprites for specific types (e.g. Camera3D mesh)
  • Better implement BitMask as its own ThingVariable type

Minor Changes

  • New models for PointLight3D and SpotLight3D when viewed in the editor
  • Add a boolean argument to the string version of ThingData::set_variable which will accept an empty string variable
    • The string version of ThingData::get_variable has been changed to not ignore empty string variables
    • This is used in Text2D::SetVariables
  • Improved the body activation code in Collider3D
  • A loaded Theatre file now stores its full path instead of just the directory
  • Implemented getting raw Theatre save data as a string, via Theatre::GetSaveData
  • Implemented a function for copying data between different Theatre-derived classes
  • Implemented a function in TheatreManager for changing the next loaded Theatre's type
  • nullptr exception safeguards in various renderer-related functions

GitHub PRs

Full Changelog: v0.15.0...v0.16.0

Nostalgia v0.15.0 - Alpha 15

17 Apr 02:07
v0.15.0
347f47d

Choose a tag to compare

Major Changes

  • Add a function to ThingFactory for getting the map of all Thing type declarations
    • Integrate Thing type declarations into ThingFactory::IsThing and ThingFactory::IsDerivedFrom
  • Add ThingVariable::thing_type
    • This variable is used by 'ID', 'Child', and 'Parent' variables
  • Integrate BitMask into the number-related functions in ThingVariable
  • 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 NostalgiaPlayer3D and replace it with NostalgiaPlayer
    • NostalgiaPlayer derives from Thinker and contains two pointers, an Actor3D and an Actor2D. 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_log and TheatreData::get_parseable_string
  • Improve the Theatre file parser
  • Changed how Camera2D, Camera3D, Visual2D, and Visual3D set/get their BitMask variable
  • Various editor/debugger improvements and features

GitHub PRs

Full Changelog: v0.14.0...v0.15.0

Nostalgia v0.14.0 - Alpha 14

14 Apr 02:37
v0.14.0
4cbdbdf

Choose a tag to compare

Major Changes

  • Replaced Mesh with ArrayMesh
    • Mesh now acts more like a pure virtual class (without actually being one, as that's not yet supported)
    • ArrayMesh now has an extra function for loading a model file directly/creating an ArrayMesh from a model file
  • Updated OpenGLVertexArray, OpenGLVertexBuffer, and OpenGLIndexBuffer
    • 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::Surface
    • Mesh::Surface is a data struct containing the relevant information for drawing a mesh surface:
    • Mesh declares (and gives default definitions to) multiple functions for interfacing with a mesh's various surfaces
    • ArrayMesh defines these functions and maintains a vector of Surfaces
    • Rewriting the OBJ-processing code to use Surface also resulted in me no longer needing the Vertex struct 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_variable function for setting an enum variable with only the name of the enum (the value is acquired via a new function in EnumRegistry)
  • 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 Thing UID selector, and safer interactions leading to far fewer crashes
    • Also added some profiling to the debugger, with included graphs!

Minor Changes

  • Updated OpenGLRendererAPI to be less prone to crashes and compiler errors
  • Fixed a strange issue with FileSystem::GetProgramDirectory on Windows
  • Implemented next-closest type declaration functions in ThingFactory
  • Added more functions to Theatre for getting the UIDs of all Thinker or Resource things, as well as all orphaned Thinkers
    • Also added functions for locking specific mutexes
  • Added a function to the EnumRegistry for getting an enum's raw data value with only its string name
  • Added a function to the EnumRegistry for 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

Full Changelog: v0.13.1...v0.14.0

Nostalgia v0.13.1 - Alpha 13

07 Apr 22:46
v0.13.1
a683930

Choose a tag to compare

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

07 Apr 22:44
v0.13.0
6397ddb

Choose a tag to compare

Major Changes

Full Changelog: v0.12.0...v0.13.0

Nostalgia v0.12.0 - Alpha 12

07 Apr 22:15
v0.12.0
0d46c87

Choose a tag to compare

Major Changes

  • Removed UID's functions and gave them to Thing to manage its own uids
  • Overhauled how Theatre starts up and creates Thing objects
  • Overhauled how Viewport, Camera3D, and Camera2D interact with eachother
    • This includes the added improvement that the "root viewport" is no longer a Viewport object tied to the Theatre
  • Added an IsRunning query to the renderer API
    • Implemented WindowGLFW toggling it before calling glfwTerminate
    • Implemented querying this value before calling gl- functions in most backend classes
  • Improved library linking when building the editor/test apps

Minor Changes

  • Optimized Thinker relationship setup
  • Added some debug Console variables
  • Implemented some more STL-related functions in TheatreFile::ThingData and TheatreFile::TheatreData
  • Other minor improvements and small changes

Previous Undocumented Updates

Full Changelog: v0.10.0...v0.12.0

Nostalgia v0.10.0 - Alpha 10

02 Apr 01:19
v0.10.0
accbbb2

Choose a tag to compare

Major Changes

Minor Changes

Full Changelog: v0.9.0...v0.10.0