Skip to content

Releases: JamesHoltom/TermEngine

Release 1.0.0

Choose a tag to compare

@JamesHoltom JamesHoltom released this 12 Mar 23:49
6c8257d

Changes from 0.9.0:

C++ Changes:

  • GLEW is now initialised using the default window, decoupling it from utility/ImGuiUtils.
  • Added error handling when calling a GameScene's on_init_, on_loop_ and on_quit_ functions.
  • Added support for AnimationFrames in the utility/ConversionUtils functions.
  • Added the GameWindow class, which manages a single Window and can be assigned a GameScene to run.
  • Moved close logic from Window into GameWindow.
  • Amended the default window to quit the program when closed.
  • Moved quit event checking into the application logic.
  • Moved object flagging behaviour into a Flaggable class, which is inherited by game objects/resources.
  • Split Background into an Image resource usertype, and a Background usertype managed by a GameWindow.
  • Tweaked GameObjects to store a CharacterMap, rather than a vector of Characters.
  • Added user-supplied callbacks to GameScene for when a scene is loaded, unloaded or running.
  • Added protection when calling Lua functions throughout the codebase.
  • Fixed multiple bugs, notably:
    • Multiple "Could not find game window with ID" errors when starting the application.
    • Segmentation fault when parsing invalid CLI arguments.
    • Searching for a Font with an empty string causes a segmentation fault.
    • Checks in EventListener and TimedFunction for if the user-supplied callback is valid.

Lua Changes:

  • Quit() and GameScene:Quit() now return void instead of bool.
  • In functions where the name of a GameScene/resource is given, the object itself can also be supplied.
  • Added more type validation when setting properties of BoxObject, InputObject, LineObject, MenuObject and TextObject instances.
  • Added buildable forms using FormObject, with multiple types of control:
    • Text inputs using TextControl
    • Number inputs with increment buttons using NumberControl
    • Checkboxes/radio buttons using CheckboxControl
    • Dropdown inputs using DropdownControl
  • Enabled vON and JSON (de)serialisation of CharacterMap-type objects.
  • Added the option to remove resources.
  • Added a variety of form control-related game objects, with optional validation functions.
  • Moved the contents of common/readonly into common/overrides, and added an override to type() to allow users to get the type of extended GameObjects.

Alpha Release 0.9.0

Alpha Release 0.9.0 Pre-release
Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 20 Jul 22:18
c339d59

Changes from 0.8.0:

This release adds the following:

  • Animations can now be created, which can be enqueued into GameObjects.
  • Projects can now be loaded/reloaded in code.
  • Dear ImGui has also been added to provide a handy debugging window. This can be enabled with the --debug flag and pressing F3 in-game.

Lua Changes:

  • Tab size is now a part of TextObject, and is configurable with the tab_size property.
  • Moved the No Program file into its own project folder.
  • Created a common folder and moved readonly.lua into it.
  • Added a setText() function, to simplify writing text into a GameObject.
  • Added a series of functions in common/interactive.lua, to aid in developing input-related GameObjects.
  • Added Animation and AnimationFrame to the list of serialisable usertypes.
  • Renamed all vector types to be proper-case (e.g. vec4 becomes Vec4, and ivec2 becomes Ivec2).

C++ Changes:

  • Added Unicode support.
  • Added the option to load different projects through code.
  • Added a text input mode, allowing users to type special characters.
  • Added clipboard support.
  • EventListeners can now be configured to listen to specific GameScenes.
  • Added the object_hover event, that triggers when hovering over a GameObject.
  • Added min, max and clamp to the GLM vector usertypes.
  • Added a debug window using Dear ImGui, to display information about game objects, scenes, resources, etc.
  • Added borderless support for game scenes.
  • Split usertypes into 2 categories, each with their own base class: BaseObject and BaseResource.
    • Amended BaseResource-type classes to accept a string name, rather than a filepath.
    • Converted Audio and ShaderProgram into a resource-type.
    • Renamed CharacterParams to Character.
    • Moved GameScene into it's own type, so it can be updated separately from other objects/resources.
    • Added Animations as a resource, which the user can add/edit/remove AnimationFrames from.
  • Added AnimationStates to GameObjects, allowing users to queue animations into an object.
  • Added a master volume that affects all Audio resources.
  • Moved more files around to make better sense (this is the last time, I promise).
    • Moved TexturePacker into rendering.
    • Moved Background, Character, CharacterMap, Timer and Window into usertypes.
    • Moved ShaderProgram into usertypes/resources.
  • Added more validation and assertions to all usertypes.
  • Configured the type names for all usertypes (i.e. instead of term_engine::usertypes::CharacterParams, it is now Character).

Other Changes:

  • Added a default font for MacOS builds.
  • Amended the CMakeLists file to specify each file being built, rather than relying on glob searches.
  • Added new example projects:
    • example/menus
    • example/multiple_game_scenes
    • example/multiple_projects
    • example/text_input
    • example/unicode

Alpha Release 0.8.0

Alpha Release 0.8.0 Pre-release
Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 30 Mar 17:59
4b3553d

Changes from 0.7.0:

This release adds support for opening multiple windows at once.

Lua Changes:

  • Added an optional parameter for specifying the name of a GameScene a GameObject/EventListener belongs to. This also applies to BoxObject, MenuObject and TextObject.
  • Added LineObject, which draws lines of characters on the screen.
  • Added utility functions to translate between data indices, row/column and pixel position.
  • The timestep in Loop is now given in milliseconds (ms).

C++ Changes:

  • Removed object proxies in favor of using unique_ptr for owning objects, and raw pointers for references in Lua.
  • Amended Audio, EventListener, GameObject and TimedFunction classes to derive from a BaseObject class, which are stored in a singular list.
  • Added debug information to all classes that derive from BaseObject, and to the application. This currently includes the time taken to update the objects.
  • Added a GameScene class that encompasses a Window, FontAtlas and Background. This allows multiple windows to be created.
  • Changed shaders/Shader into the ShaderProgram class, which is stored in a GameScene and now supports uniforms.
  • Changed views/View into the CharacterMap class, which is stored in a GameScene.
  • Extracted the texture-related features of FontAtlas and Background into a Texture class.
  • Added a TexturePacker, to pack font bitmaps and other images into a single texture.
  • Moved the static PlaySound function in objects/Audio into it's own file.
  • Added Seek and Rewind functions to object/Audio.
  • Removed Resume, and Play no longer rewinds to the start of the audio in objects/Audio.
  • Removed GetIntervalElapsed from timing/Timer.
  • Added the option to decide if a Window should hide itself, close or quit the program when a user closes it.
  • Added the option to set a Window's title.
  • Amended the following parameters to be stored as a vec4:
    • CharacterParams colours
    • Background colours
    • Window clear colours
  • Fixed EventListeners possibly being inactive upon creation.
  • Added TimedFunctions, used to delay/repeat code execution by a set amount of time.
  • Amended Object:set to require a Character as a return value, rather than having to set through code.
  • Rearranged some files to (hopefully) make more sense. See below for details.

Other Changes:

  • Removed MS Visual Studio build support.

File re-arrangement:

The primary reasons for rearranging files are for a couple of reasons:

  1. There really isn't a distinction between objects and resources.
  2. I dislike having folders that will only have 1 file/class in them. The shaders folder is an exception, as it will contain more shader-related code in a later release.

Rearranged files include:

  • Moving application/Application into the root folder.
  • Splitting the EventListener class from events/Listener into objects/EventListener.
  • Renaming logging/Logger into utility/SpdlogUtils.
  • Moving resources/Audio into the objects folder.
  • Renaming objects/Object into objects/GameObject.
  • Moving objects/Character, resources/Background, resources/FontAtlas and resources/Window into the rendering folder.
  • Moving shaders/ShaderProgram into rendering/ShaderProgram.
  • Renaming system/DebugFunctions into utility/DebugUtils.
  • Moving system/miniaudio.cc and system/stbi.cc into the vendor folder.

Alpha Release 0.7.0

Alpha Release 0.7.0 Pre-release
Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 09 Nov 23:48
6b41e06

Changes from 0.6.0:

C++ Changes:

  • Renamed Glyph to Character, as it fits the description better.
  • Removed requirement to call release() on all Objects and EventListeners before quitting.
  • Changed the Object position parameter to ivec2 for consistency.

Lua Changes:

  • Added comments to code in Lua files.
  • Removed unused project bindings.
  • Added support for Object:new() syntax.
  • Amended object:set() to take a function with the parameters ( data, index, character ).
  • Updated the BoxObject and TextObject to use object:set().
  • Removed font.isSquare(), in favor of font.get/setCharacterSize().
  • Renamed window.is/setGrabbed() to window.is/setCaptured().
  • Added new window options to show/hide the window.
  • Added support for less-than(or equal) and negation on all vec types.
  • Added bindings for creating Timer objects.

Other Changes:

  • Moved all existing code samples to projects/examples.

Comes with several example projects, the Space Mono font and multiple audio files.

The example project 07a_fonts uses Space Mono by Colophon, which is distributed under the Open Font License.

The example project 07c_audio uses audio from OpenGameArt.org, and are distributed under the CC0 license:

1.wav, from the [8bit SFX](https://opengameart.org/content/8bit-sfx) collection by celestialghost8
Map.wav, from the [NES Shooter Music](https://opengameart.org/content/nes-shooter-music-5-tracks-3-jingles) collection by SketchyLogic

Alpha Release 0.6.0

Alpha Release 0.6.0 Pre-release
Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 29 Aug 14:53
cce11d2

Changes from 0.5.0:

C++ Changes:

  • Added EventListeners, which listen for events; both SDL and custom, and triggers user-defined callbacks.
  • The existing EventManager code has been replaced with EventListeners.
  • Disabled vsync and set a default framerate of 60FPS.

Lua Changes:

  • Removed random in favour of Lua's math.random.
  • Added new options to window to:
    • Get/set window position
    • Enable/disable user resizing of the window.
    • Minimising/maximising the window.
    • Capturing the mouse whilst in the window.
    • Enabling/disabling vsync.

Other Changes:

  • This project now uses a vcpkg manifest to handle package versioning. This is to ensure packages like spdlog use a version of fmt that it can be successfully built with.
  • Moved tutorials into the projects/tutorial folder.
  • Added new tutorial 05 for event handling.
  • Moved tutorial 09a to tutorial 06.

Comes with several example projects, the Space Mono font and multiple audio files.

The example project 07a_fonts uses Space Mono by Colophon, which is distributed under the Open Font License.

The example project 07c_audio uses audio from OpenGameArt.org, and are distributed under the CC0 license:

Alpha Hotfix Release 0.5.1

Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 10 Aug 20:00
95cb9a4

This is a hotfix for 0.5.0 that addresses the following:

  • Fixed an issue with Audio.length always returning 0, instead of the audio length in seconds.
  • Amended the Audio.pan, Audio.pitch and Audio.position properties to get/set as doubles instead of floats, to match Lua's usage of double.
  • Added an Audio.cursor property to get the current position of an Audio resource, in seconds.
  • Added an Audio.volume property to get/set the volume of an Audio resource.

Alpha Release 0.5.0

Alpha Release 0.5.0 Pre-release
Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 03 Aug 20:12
e52c8a6

Changes from 0.4.0:

C++ Changes:

  • Added support for audio through miniaudio, with .ogg support from stb_vorbis.
  • Moved the Glyph class file, to be considered an object rather than a resource.
  • Refactored ObjectManager to be a set of static properties/methods of Object.

Lua Changes:

  • Updated 07a_fonts to use fitText() to display a background colour beyond the text.
  • Added 07c_audio to showcase adding sound/music to projects.

Comes with several example projects, the Space Mono font and multiple audio files.

The example project 07a_fonts uses Space Mono by Colophon, which is distributed under the Open Font License.

The example project 07c_audio uses audio from OpenGameArt.org, and are distributed under the CC0 license:

Alpha Release 0.4.0

Alpha Release 0.4.0 Pre-release
Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 08 Jul 23:11

Changes from 0.3.0:

C++ Changes:

  • Amended the file-related functions:
    • Read/write to files is now fully working.
    • Search functions for fonts and backgrounds have been condensed into SearchForResourcePath, which will look in the global/project resources folders.
  • Overhauled the folder structure, to put certain files in more appropriate locations.
  • Amended the inconsistent spelling in files (e.g. color to colour).
  • Fixed an issue with the Object data size not updating after being down-sized.
  • Added the option to set the size of tabs (i.e. \t).
  • Moved the core shaders into the codebase.
  • Removed the unused fullscreen command-line flag, and set the project flag as the default parameter. Calling the program now looks like ./TermEngine [lua_project] instead of ./TermEngine --project [lua_project].
  • Added the lua/vendor folder to the Lua package path.

Lua Changes:

  • Read/write to files is now supported. The io library is disabled, in favor of using the C++ code to lock down where projects can read from/write to.
  • Added support for vON serialisation, using vercas' vON library.
  • Added support for JSON serialisation, using grafi-tt's Lunajson library.
  • TextObject's now support:
    • Newlines and tabs
    • Rendering the background of the object as a box, or fitted to the text only.
  • Object's can now be released, removing them from the window and object list.
  • GLM's ivec3, ivec4 and vec4 types are now supported.
  • Updated the tutorial code:
    • Separated tutorial 02 into the text manipulation and colour manipulation.
    • Moved tutorial 07c into 07a, and added file manipulation as tutorial 07d.
    • Added serialisation as tutorial 09.

Other Changes:

  • Updated the copy-files-to-build.sh and clean-build-files.sh scripts.
  • Added license files for the vON and Lunajson libraries.
  • Removed license file for SDL_image.

Comes with several example projects, and the Roboto Mono & Space Mono font.

Roboto Mono was designed by Christian Robertson and falls under the Apache License v2.0.

Space Mono was designed by Colophon and falls under the Open Font License.

Alpha Hotfix Release 0.3.1

Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 19 Jun 16:54

This is a hotfix for 0.3.0 that addresses the following:

  • Fixed an issue where changing fonts preserved the original font's bounding boxes, causing the new font characters to appear broken.
  • Fixed an issue with certain fonts having characters extend beyond the bounds of their glyphs. Glyph sizes have been amended to fit the full character size.
    v0-3-1 Font Amends

Changes from 0.3.0:

  • Added a new parameter to font.set, as well as a new font.isSquare function. If set to true, this will set the width of glyphs equal to their height.
  • Added a new function glyphs.size, to retrieve the size of a glyph.
  • Removed unnecessary values from data::Uniform.

Alpha Release 0.3.0

Alpha Release 0.3.0 Pre-release
Pre-release

Choose a tag to compare

@JamesHoltom JamesHoltom released this 12 Jun 22:05

Changes from 0.2.0:

  • Altered the rendering pipeline to display text foregrounds/backgrounds with separate sets of vertices. Glyphs are now stored in a large, singular texture rather than an array.
  • Replaced SDL_Image with STB_image, made by Sean Barrett.
  • Amended the clear colour to black.
  • Added the option to set a background that appears in the back of the window.
  • Added more example projects related to the documentation.
  • Common colour and vector values are now available as read-only constants. See colours and values.

Comes with several example projects, and the Roboto Mono & Space Mono font.

Roboto Mono was designed by Christian Robertson and falls under the Apache License v2.0.

Space Mono was designed by Colophon and falls under the Open Font License.