Skip to content

Latest commit

 

History

History
357 lines (347 loc) · 29.3 KB

todo.md

File metadata and controls

357 lines (347 loc) · 29.3 KB

TODO list

  • Tasks in priority order in descending priority, the most urgent ones first. Check when ready and move to the section Ready, when ready.

Fixes needed

  • BUG Fix bug on console size after changing window size small enough. (to be fixed in the Widget implementation)
  • BUG Fix bug that current console line is not visible after a lot of output produced e.g. by info in a small window size. (to be fixed in the Widget implementation)
  • BUG Fix unit tests on a debug build. "ofbx.cpp:3575: ofbx::Object* ofbx::Object::getParent() const: Assertion `parent == nullptr' failed."

Tasks which are necessary for the first stage (Hirvi-Demo)

  • YLILISP Implement abstract syntax tree (AST) creation code for YliLisp.
  • YLILISP Create a basic implementation of YliLisp interpreter (YliLisp is a statically typed Lisp-1 type multiparadigm scripting language).
  • YLILISP/CONSOLE Convert Console into a proper YliLisp REPL that supports S-expressions like a proper Lisp REPL.
  • ONTOLOGY/GUI Implement yli::ontology::Window class.
  • ONTOLOGY/GUI Implement yli::ontology::Widget class.
  • ONTOLOGY/CAMERA/GUI Implement yli::ontology::CameraWidget class that inherits yli::ontology::Widget.
  • TEXT/UI Implement proper bitmap font rendering: https://learnopengl.com/In-Practice/Text-Rendering
  • TEXT/UI Implement proper vector font rendering using FreeType and HarfBuzz: https://learnopengl.com/In-Practice/Text-Rendering
  • TEXT/UI Change terminal font to APL385. https://apl385.com/fonts/index.htm
  • TEXT/UI Change general purpose font to Canada1500. http://typodermicfonts.com/canada1500/
  • GUI Add support for multiple windows.
  • GUI Add support for multiple widgets in each window.
  • ONTOLOGY/LISP/GUI Implement create-window built-in YliLisp function.
  • ONTOLOGY/LISP/GUI Implement create-widget built-in YliLisp function.
  • TOOLS Design initial software architecture for YliEdit and HirviEdit editors (HirviEdit is a specialization of YliEdit for Hirvi and Hirvi-Demo).
  • TOOLS Implement YliEdit and HirviEdit editors' prototype.
  • DATA/VULKAN/RENDERING Use displacement fields for height map rendering, like in Far Cry 5.
  • VULKAN/RENDERING Add Vulkan support.
  • OPENGL/RENDERING Remove OpenGL support.
  • LIBRARIES/DATA/TERRAIN Use libgeotiff to load GeoTIFF elevation model 2 m heightmaps of the National Land Survey of Finland. https://github.com/OSGeo/libgeotiff
  • TOOLS/DATA/TERRAIN Convert heightmaps into a custom format with precomputed vertices, UVs, and normals, ready to be loaded into GPU.
  • MATH/RENDERING Implement shadows.
  • RENDERING Implement skybox.
  • RENDERING Add support for screenspace effects.
  • RENDERING Implement Larusse fire clouds. See Complex - Dope for a reference: https://youtu.be/HtXxM0pezAs
  • RENDERING Implement pattern vectors. See Renaissance - Amnesia for a reference: https://youtu.be/sxW6CW0RWlg
  • MATH/RENDERING Implement L-system trees. https://en.wikipedia.org/wiki/L-system

Tasks which are necessary for the second stage (Hirvi prototype)

  • BUILD/LIBRARIES Make GLEW a Git Submodule: https://github.com/nigels-com/glew
  • BUILD/LIBRARIES Make libpng a Git Submodule: https://git.code.sf.net/p/libpng/code
  • ONTOLOGY/SHAPESHIFTERS Implement yli::ontology::ShapeshifterTransformation, whose children are ShapeshifterForms and ShapeshifterSequences.
  • ONTOLOGY/SHAPESHIFTERS Implement yli::ontology::ShapeshifterForm, inherits Entity.
  • ONTOLOGY/SHAPESHIFTERS Implement yli::ontology::ShapeshifterSequence, whose apprentices are Shapeshifters.
  • ONTOLOGY/SHAPESHIFTERS Implement yli::ontology::Shapeshifter, child of Scene, apprentice of ShapeshifterSequence.
  • BUILD Implement building on GitHub Actions Windows runner.
  • ONTOLOGY Enable support for referring to master in the factory functions by using master's global name instead of master's memory address.
  • LIBRARIES Replace OpenFBX with fastgltf. https://github.com/spnda/fastgltf
  • ONTOLOGY/AUDIO Create yli::ontology::AudioTrack class that inherits Entity.
  • ONTOLOGY/AUDIO Create yli::ontology::PlayList class that inherits Entity.
  • ONTOLOGY/DATA/EVALUATE Evaluate Far Cry 5 terrain rendering talk: https://www.gdcvault.com/play/1025261/Terrain-Rendering-in-Far-Cry
  • ONTOLOGY Implement yli::ontology::Mission class that is a child of Universe and has programmable logic for evaluating the success.
  • LIBRARIES Integrate libjpeg-turbo into Ylikuutio. https://github.com/libjpeg-turbo
  • UI/TESTS Write unit tests for keyboard callback snippets.
  • PHYSICS Implement yli::ontology::RigidBodyModule class (to be used as a component of Movable) to be used for Jolt Physics.
  • LIBRARIES/PHYSICS/EVALUATE Evaluate Jolt. https://github.com/jrouwe/JoltPhysics
  • LIBRARIES/PHYSICS Implement rigid body physics using using Jolt. https://github.com/jrouwe/JoltPhysics
  • CONSOLE/UI Add support for Tab complete for local names in Console.
  • CONSOLE/UI Add support in Console for indexing the children of an Entity through the Registry and ParentModule, e.g. foo_entity.bar_children[0].
  • CONSOLE/UI Add support in Console for indexing the apprentices of an Entity through the Registry and MasterModule, e.g. foo_entity.bar_apprentices[0].
  • DISPLAY/UI Add support for high DPI displays.
  • TOOLS Implement new yli_convert program that converts ASCII files of elevation model of National Land Survey of Finland into custom .yli binary format.
  • ONTOLOGY/DATA Implement yli::ontology::HeightmapStruct that inherits yli::ontology::EntityStruct, to support heightmaps consisting of several sheets.
  • ONTOLOGY/DATA Implement yli::ontology::Heightmap class that inherits yli::ontology::Entity, to support heightmaps consisting of several sheets.
  • ONTOLOGY/DATA Implement yli::ontology::HeightmapSheet class that inherits yli::ontology::Species, to handle each sheet of a multisheet heightmap.
  • ONTOLOGY/DATA Implement support for loading multiple sheets of elevation model of National Land Survey of Finland at once.
  • ONTOLOGY/DATA Implement support for multiple water levels within a Scene.
  • ONTOLOGY/DATA Plan data structures suitable for 3D model loading with zones with different LOD levels (at any given time).
  • ONTOLOGY/DATA Add support for OpenStreetMap data: https://www.openstreetmap.org/ (needed for roads, rail network, tram network, road names)

Tasks which are necessary for the third stage

  • ONTOLOGY Add scale_up_limit Variable* of type uint32_t to Holobiont to control the automatic creation of additional Bionts.
  • ONTOLOGY Add scale_down_limit Variable* of type uint32_t to Holobiont to control the automatic deletion of excessive Bionts.
  • ONTOLOGY/DATA Add support for 3D model of Helsinki: http://www.hri.fi/en/dataset/helsingin-3d-kaupunkimalli http://www.hri.fi/fi/dataset/helsingin-3d-kaupunkimalli
  • ONTOLOGY/MATH Add support for setting Biont-specific coordinate adjustments with coordinates_adjustments vector in HolobiontStruct.
  • GUI Add support for multiple displays.
  • MATH/RENDERING Implement support for multiple light sources in each Scene.
  • RENDERING Implement deferred rendering.
  • RENDERING Implement post processing.
  • MATH/RENDERING Implement HDR rendering.
  • UI Add support for different keyboard layouts in Console.
  • REFACTOR Convert local variables of Application::create_simulation implementations into heap-allocated ones so that Universe::start_simulation can be called from main.
  • REFACTOR Call Universe::start_simulation from main instead of Application::create_simulation implementations.
  • LIBRARIES/GUI/EVALUATE Evaluate Dear ImGUI: https://github.com/ocornut/imgui
  • YLILISP Modify set console command so that setting a value is done using set 'value foo bar or set 'value foo bar baz ('value must be used).
  • YLILISP Modify set console command so that setting a global name is done using set 'global-name foo bar.
  • YLILISP Modify set console command so that setting a local name is done using set 'local-name foo bar.
  • YLILISP Implement continuations for YliLisp by logging the last relevant successful Variable::set function call for each Variable and setting that again when needed.
  • YLILISP Implement closures for YliLisp.
  • AI Implement A* route finding. https://en.wikipedia.org/wiki/A*_search_algorithm
  • OPTIMIZE Implement octree segmentation.
  • OPTIMIZE Implement frustum culling using bounding spheres.
  • ANIMATION Implement skeletal animation.
  • CONSOLE/YLILISP/ONTOLOGY Implement creating new named Variables using Console.
  • MATH Plan coordinate systems and physics for interplanetary/interstellar/intergalactic travel.
  • TERRAIN/VOXELS Implement voxel world (yli::ontology::ChunkMaster, yli::ontology::Chunk).
  • TEXT/UI Add support for changing font size.
  • RENDERING Implement transparent rendering of 3D objects.
  • RENDERING Implement transparent rendering of 4D objects.
  • WATER/RENDERING Implement dynamic not flowing water, using Vulkan shaders.
  • TEXT/GUI Implement better font support.

Tasks which are necessary for the fourth stage

Tasks which are necessary for Tulevaisuus

  • Remove dynamic_cast of YliLisp function dispatch by storing in Registry instead of yli::ontology::Entity* a std::variant.
  • Split ylikuutio library into yli_core, yli_vulkan, yli_network, yli_server, and yli_client libraries. All libraries depend on yli_core.
  • Implement turn file sending over the network into yli_client.
  • Implement turn file receiving over the network into yli_server.
  • Implement processing of turn files in yli_server.
  • Implement yli::ontology::Multiverse class.
  • Evaluate OpenCV: https://opencv.org/ https://github.com/opencv/opencv
  • Evaluate LLaVA: https://llava-vl.github.io/ https://github.com/haotian-liu/LLaVA
  • In yli_server, implement creation of the master Universe, that is a child of the Multiverse and knows everything..
  • In yli_server, implement creation of apprentice Universes, one for each player.
  • In yli_server, implement computing turn outputs to each human and AI player, using software rendering for computing visual detection and rendering turn videos.
  • In yli_server, implement producing result files for players.
  • In yli_server, implement sending result files for players over the network.

Tasks which are needed for Avaruus

  • AVARUUS/YLIAVARUUS Port N-body Newtonian star simulation into C++
  • MATH Plan n-body star simulation of Milky Way stars.
  • MATH Plan the simulation of black holes.
  • MATH Plan the simulation of merging of 2 black holes.
  • MATH Implement simulation of the merging of supermassive black holes Sagittarius A* and the one in Andromeda.

Tasks which are necessary for the development of Ylikuutio

  • Add support for hexadecimal input in set console command.
  • Implement yli::ontology::PipelineSymbiosis.
  • Add support for .yli loading.
  • Add support for exporting as .yli in yli_convert.
  • Implement saving commands into a file that can later be loaded using command line parameter --input-file in Hirvi and Ajokki.
  • Implement command line parameter --input-file to Hirvi and Ajokki (load keypresses and keyreleases from a file, e.g. --input-file foo or --input-file=foo).
  • Implement command line parameter --debug to Hirvi and Ajokki (log all kinds of debug information).
  • Add Scene loading command load into console.
  • Implement play console command for playing Sounds and Playlists.
  • Implement pause console command for pausing Sounds and Playlists.
  • Implement next console command for changing to the next Sound in a Playlist.
  • Implement prev console command for changing to the previous Sound in a Playlist.
  • Add support for automatic detection of optimal window size.
  • Implement modifying of vertices.
  • Implement generation of terrain meshes in different levels of detail (LOD) using different x_steps and z_steps (e.g. 1, 2, 4, 8, 16, 32, 64, 128).
  • Implement terrain mesh LOD selection based on the distance between the camera and the terrain.
  • Implement marching cubes algorithm for voxel terrain as described in https://transvoxel.org/Lengyel-VoxelTerrain.pdf .
  • Write code to convert ASCII grid files (height maps) to binary GLTF files, storing also interpolated vertices, UVs, and normals.
  • Implement scene loading which works in the background.
  • Evaluate AppVeyor: https://github.com/marketplace/appveyor
  • Add support for help command in console (a container class with the command callback together with the help text for the command).
  • Optimize Symbiosis entities' rendering by going through SymbiontMaterial->SymbiontSpecies->Biont hierarchy.
  • Add support for packed files.
  • Add support for CityGML file format.
  • Add support for 3D model of Vantaa: https://hri.fi/data/en_GB/dataset/vantaan-3d-rakennukset https://hri.fi/data/fi/dataset/vantaan-3d-rakennukset
  • Add support for 3D model of Oulu: http://ubicomp.oulu.fi/infrastructure-virtualoulu/ https://github.com/Oulu-UCC/3D_City_fbx
  • Add support for 3D model of Turku campus and science park area: http://www.lounaistieto.fi/blog/2017/09/06/turun-kampus-ja-tiedepuistoalueen-3d-kaupunkimalli/
  • Use TinySpline.
  • Add bicubic interpolation.
  • Add spline interpolation.
  • Add Lanczos interpolation.
  • Implement Theta* route finding. http://aigamedev.com/open/tutorials/theta-star-any-angle-paths/

Less urgent

  • Implement flowing water (computed on a server, based on players' actions) using GridFluidSim3D. https://github.com/rlguy/GridFluidSim3D
  • Add support for 3D text.
  • Add support for partially transparent text.
  • Store each robot's current view into an array from which the robot may access it programmatically using YliLisp.

Ready

  • Add test VBO, e.g. some kind of particle object.
  • Define an object class.
  • Add support for several vertex buffer objects (VBO).
  • string.h -> cstring.
  • strcmp -> std::strcmp.
  • strlen -> std::strlen.
  • Implement callbacks.
  • Test functioning of callbacks.
  • Add console (it opens with key `).
  • Enable naming of entities of any level in entity hierarchy.
  • Add scrolling into console when the 'window' gets full.
  • Add command info into console (tells about entities, e.g. number of vertices of an objects etc. information).
  • Add variable horizontal_angle.
  • Add variable vertical_angle.
  • Add variable right.
  • Add variable up.
  • Add variable window_width.
  • Add variable window_height.
  • Add set wireframe true, set wireframe false.
  • Add support for command line parameters in Ajokki.
  • Add variable wireframe: set wireframe true / set wireframe false.
  • Add object listing command info into console.
  • Add entity-specific pre-render and post-render callbacks prerender_callback and postrender_callback.
  • Add audio with SFML.
  • Add support for an initial rotation for Objects.
  • Implement Symbiosis entities.
  • Bind each Biont also to its corresponding SymbiontSpecies (and also unbind from its corresponding SymbiontSpecies).
  • Implement Entity-specific variables.
  • Fix Travis configuration file .travis.yml.
  • Fix Coverity Scan Travis integration configuration (in .travis.yml).
  • Rewrite obj_loader.cpp without fscanf, using instead stringstream for parsing.
  • Evaluate CHICKEN Scheme. https://www.call-cc.org/
  • Evaluate s7 Scheme. https://ccrma.stanford.edu/software/snd/snd/s7.html
  • Write code to save screenshots into a raw data file which can be opened e.g. with GIMP.
  • Add variable text_size (affects size of console text and other texts printed on screen).
  • Implement AnyStruct.
  • Implement audio using SDL (SFML does not support Android and iOS yet).
  • Implement s7 support in console.
  • Add support for GPGPU using OpenGL 3.0/GLSL 1.30.10 shaders.
  • Implement Camera entities.
  • Implement rendering into a texture (ComputeTask).
  • Implement AnyValueEntity : public AnyValue, public Entity.
  • Implement AnyStructEntity : public AnyStruct, public Entity.
  • Implement command line parameter --window_width to Hirvi and Ajokki (e.g. --window_width 1600).
  • Implement command line parameter --window_height to Hirvi and Ajokki (e.g. --window_height 900`).
  • Fix bug that only 2D text gets rendered when window width is less than window height.
  • Add support for changing window size.
  • Implement yli::ontology::Brain AI class.
  • Implement command line parameter --headless to Hirvi and Ajokki (do not open any windows, do not render anything).
  • Implement fullscreen mode.
  • Fix bug that some Objects (e.g. cat.fbx) do not appear on screen on some environments.
  • Implement printing Settings using Console.
  • Evaluate LuaJIT: https://luajit.org/
  • Write yli::ontology class generator in Python.
  • Implement printing parent of Entities using Console.
  • Implement creating new named AnyStructEntities using Console.
  • Implement yli::ontology::EntityStruct that all other structs used for creating different kinds of Entities should inherit.
  • Inherit yli::ontology::EntityStruct in all structs that are used for creating different kinds of Entities.
  • Restrict what characters are allowed in global names (regex: [a-zA-Z][a-zA-Z0-9_-]*).
  • Restrict what characters are allowed in local names (regex: [a-zA-Z][a-zA-Z0-9_-]*).
  • Implement setting the global name by defining the global_name member variable of yli::ontology::EntityStruct.
  • Implement setting the local name by defining the local_name member variable of yli::ontology::EntityStruct.
  • Implement setting global name in yli::ontology::EntityFactory factory functions by calling set_global_name.
  • Implement setting local name in yli::ontology::EntityFactory factory functions by calling set_local_name.
  • Implement set-global-name console command so that setting a global name is done using set-global-name foo bar.
  • Implement set-local-name console command so that setting a local name is done using set-local-name foo bar.
  • Implement support for local variables in YliLisp function argument binding.
  • Implement support for local variables in all console commands.
  • Convert Setting into a an yli::ontology class that inherits yli::ontology::Entity.
  • Fix bug in print so that it accepts print cat1.x (instead of print cat1 x).
  • Fix bug in set so that it accepts set cat1.x 1234 (instead of set cat1 x 1234).
  • Implement yli::ontology::MasterModule.
  • Implement creating new named yli::ontology::Variables of given type in Entities using Console command create-variable.
  • Implement creating new named yli::ontology::Objects using Console command create-object.
  • Implement creating new named yli::ontology::Holobionts using Console command create-holobiont.
  • Implement printing children of Entities using Console command children.
  • Implement main game loop inside yli::ontology::Universe class.
  • Implement int main(const int argc, const char* const argv[]) function with try & catch in new function file code/ylikuutio/core/entrypoint.hpp.
  • Implement yli::ontology::Application class that inherits yli::ontology::Entity and binds to the yli::ontology::Universe.
  • Implement processing command line arguments in the yli::ontology::Application class based on the data received from the application itself (as before).
  • Create initial design of custom .yli binary format.
  • Implement Variable azimuth (for geographical angles/azimuths), 0 pointing north, pi/2 pointing east, pi pointing south, -pi/2 pointing west.
  • Create yli::ontology::Registry class in which different modules (ChildModule, ParentModule, MasterModule, ApprenticeModule etc.) may bind with a name.
  • Add support for yli::ontology::Registry in different modules (ParentModule, MasterModule).
  • Add support for Tab complete for global names in Console.
  • Replace stb with libpng (http://www.libpng.org/pub/png/libpng.html).
  • Fix compiling on MacOS.
  • Fix compiling in a Podman container on CentOS 8.
  • Fix segfault when running in headless mode (with --headless, bug entered in commit e9ea16157b51403685a3df2d0884cb87fbf500dc).
  • Fix compiling on GCC on Travis CI Bionic Beaver environment.
  • Fix compiling on Clang.
  • Make Material a child of the Scene.
  • Modify yli::ontology::SymbiontMaterial so that it inherits yli::ontology::Entity, and does not inherit yli::ontology::Material any more.
  • Modify yli::ontology::SymbiontSpecies so that it inherits yli::ontology::Model, and does not inherit yli::ontology::Species any more.
  • Implement yli::ontology::ModelModule class (to be used with composition), that will replace yli::ontology::Model class.
  • Make Species a child of the Scene.
  • Add support for references in YliLisp.
  • Add roll rotation.
  • Make Object a child of the Scene.
  • Make Symbiosis a child of the Scene.
  • Implement yli::ontology::Ecosystem class for storing Shaders independently of Scenes so that they can be used in multiple Scenes.
  • Change OpenGL requirement to 3.3.
  • Print alternative completions in Console.
  • Use uniform buffer objects to enable sharing uniforms between shaders.
  • Fix compiling on Clang.
  • Fix downloading of Google Test in CMakeLists.txt.
  • Fix binding Object apprentice to Species master.
  • When binding any Entity class instance to a different Scene parent, unbind from all masters except from ones that are children of an Ecosystem.
  • Do not bind to any master that belongs to a different Scene.
  • Replace obsolete Travis CI workflow with GitHub Actions CI workflow.
  • Fix compiling on MacOS.
  • Rename RenderMaster to RenderSystem and RenderMasterStruct to RenderSystemStruct.
  • Rename AudioMaster to AudioSystem.
  • Rename InputMaster to InputSystem.
  • Add support for storing yli::ontology::Material Entities in yli::ontology::Ecosystem class.
  • When running in windowed mode, by default open window in the main display and make its size match the display resolution.
  • Add support for storing yli::ontology::Species Entities in yli::ontology::Ecosystem class.
  • Make Holobionts children of the Scene and apprentices of the Symbiosis.
  • Add support for scaling Movables in Console.
  • Fix yli::snippets::switch_to_new_material.
  • Fix yli::snippets::delete_entity.
  • Fix yli::snippets::transform_into_new_species.
  • Fix compiling on MacOS.
  • Add support for storing yli::ontology::Symbiosis Entities in yli::ontology::Ecosystem class.
  • Implement LocationModule.
  • Implement OrientationModule.
  • Implement GaitModule, to be used for different bi- and quadrupedal gaits like walking, running, trot, canter, gallop, pace, tölt.
  • Implement SwimModule, to be used for swimming.
  • Implement DiveModule, to be used for diving.
  • Implement ClimbModule, to be used for climbing on different surfaces.
  • Implement FlyModule, to be used for flying animals and aircraft.
  • Implement RoadVehicleModule, to be used for road vehicles.
  • Implement RailVehicleModule, to be used for rail vehicles.
  • Implement ShipModule, to be used for ships.
  • Implement RoadVehicle class that inherits Holobiont and uses RoadVehicleModule.
  • Implement RailVehicle class that inherits Holobiont and uses RailVehicleModule.
  • Hirvi: Implement Elk class that inherits Holobiont and uses GaitModule and SwimModule.
  • Hirvi: Implement Cat class that inherits Holobiont and uses GaitModule, SwimModule, and ClimbModule.
  • Hirvi: Implement PoliceModule for sharing data such as knowledge about Hirvi's location, orientation, and speed between polices.
  • Hirvi: Implement EmancipationModule for emancipation-related behavior.
  • Hirvi: Implement PoliceCar class that inherits Holobiont and uses RoadVehicleModule and PoliceModule.
  • Hirvi: Implement PoliceDog class that inherits Holobiont and uses GaitModule, PoliceModule, and EmancipationModule.
  • Hirvi: Implement PoliceHorse class that inherits Holobiont and uses GaitModule, PoliceModule, and EmancipationModule.
  • Hirvi: Implement PoliceShip class that inherits Holobiont and uses AircraftModule and PoliceModule.
  • Hirvi: Implement PoliceHelicopter class that inherits Holobiont and uses AircraftModule and PoliceModule.
  • Hirvi: Implement PoliceTrain class that inherits Holobiont and uses RailVehicleModule and PoliceModule.
  • Hirvi: Implement PoliceTram class that inherits Holobiont and uses RailVehicleModule and PoliceModule.
  • Rename Shader to Pipeline.
  • Improve create_yli_ontology_class.py to create default destructors.
  • Improve create_yli_ontology_class.py to create the constructor in the .cpp file, with the declaration in header.
  • Refactor CallbackEngine, CallbackObject, and CallbackParameter into yli::ontology namespace and make them inherit Entity.
  • Fix Universe::get_number_of_children to count CallbackEngines as well.
  • Fix Universe::get_number_of_descendants to count CallbackEngines as well.
  • Move InputMode into yli::ontology and make it a child of the Universe, and make InputMode inherit yli::ontology::Entity.
  • Refactor InputMaster into yli::ontology::ParentOfInputModesModule and take it into use.
  • Add yli::core::Application& as the first parameter of yli::ontology::Entity and all its derivative classes.
  • Create MockApplication class to be used in tests.
  • Do not access derived class Universe instance in Entity destructor when destructing Universe.
  • Implement custom memory allocation system.
  • Fix compiling on g++ (Debian 12.2.0-14) 12.2.0 .
  • Fix segfault in GPGPU test in yli::opengl::prepare_opengl_texture (see commit cb041b92726df81afe3d349ac5a90d3bbbd14e91).
  • Fix bug "ERROR: GenericParentModule::unbind_child: the value of childID is invalid!", in the deallocation of datatypes 121, 130, 131 (CallbackEngine etc.).
  • Fix main loop to make it run on a reasonable speed on ThinkPad Z16 with AMD Ryzen 9 PRO 6950H and Radeon 680M (1 Hz is not reasonable).
  • Fix crash of Hirvi upon start.
  • Split Hirvi game code into hirvi_lib library and hirvi application that links against hirvi_lib.
  • BUG Fix double free in Hirvi upon deallocation.
  • BUG Fix Camera activation, e.g. in Ajokki activate cat_camera makes all values nan.
  • BUG Fix audio in Hirvi.
  • BUG Fix audio in Ajokki.
  • LIBRARIES/AUDIO/EVALUATE Evaluate SoLoud audio library: https://solhsa.com/soloud/
  • ONTOLOGY/TESTS Write unit tests for Brain snippets.
  • ONTOLOGY/AI Add yli::ontology::Waypoint class to be used for Brain snippets.
  • AVARUUS/MATH/PHYSICS Implement n-body Newtonian star simulation of Milky Way stars in Fortran.
  • MATH Change to right-handed Z-up coordinate system so that X points east, Y points north, and Z points up.
  • MATH Add support for Tait-Bryan angles. https://en.wikipedia.org/wiki/Euler_angles#Tait%E2%80%93Bryan_angles
  • BUG/MATH Fix Brain snippets.
  • ONTOLOGY Enable support for referring to parent in the factory functions by using parent's global name instead of parent's memory address.
  • BUG Fix graphics rendering in full screen mode on high DPI displays (graphics are rendered currently only in bottom left of the screen).
  • BUG/HIRVI Esc key should exit to OS in Hirvi and Ajokki.
  • BUILD Upgrade CMake to at least 3.16 to enable support of precompiled headers directly in CMake.
  • BUG/LISP Fix the behavior of std::nullopt in YliLisp by wrapping the std::optional<yli::data::AnyValue> return value into a wrapper with success information.