Code Monkey home page Code Monkey logo

gdsion's People

Contributors

yurisizov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

gdsion's Issues

Extension is not documented

Right now the GDSiON extension provides only the auto-generated documentation, containing method and property names and types, but no functional description or guidance.

GDExtensions may not support XML documentation yet, so in the meantime any other means to describe the functionality should be explored, including Markdown files and GitHub wiki.

The original SiON project has quite a lot useful comments with descriptions and examples, which can be lifted as a starting point. Note that some liberties were taken when porting certain aspects of the original implementation, so care must be applied when borrowing descriptions. I also noticed a few outdated comments/errors/copy-paste mistakes while working on the codebase.

No way to test the project without building it yourself

There is currently no way to get GDSiON other than compiling it on your own. This naturally limits the adoption and won't cut it for the stable release.

GitHub Actions CI should be used to compile binaries for all target platforms (Windows, Linux, and macOS for now; web requires further testing). We can have a fixed "Release" entry for unstable/main-branch builds, which is going to be auto-updated through the same CI process. Then clear and obvious download links can be added to the readme file as well.

Improve and sanitize memory usage and resolve leaks

The original code relies on some sort of garbage collection and doesn't care much about freeing allocated memory. It also practices a pattern where objects are never freed after allocation, but instead are put into a pool for future reuse.

As I ported the code, I decided to not bother with resolving leaks like that to allow for quicker pace. But the goal is to resolve them eventually. As the first step we must look into Godotifying some of the types, even if they are not supposed to be exposed. Converting appropriate types to RefCounted, or even Resource, will help automate memory management, especially when multiple objects can reference some data, and we can't cleanly dedicate one of them to handle the memory.

For the rest, normal calls to memdelete in the destructor should be sufficient. Following Godot's approach, we don't rely on STL in this project and all memory management is done using Godot's facilities.

Port SiON demos to the new library

The original library had quite a few cool and public demo projects (which you can find here http://wa.zozuar.org/user.php?name=keim_at_Si with their source code available).

It would be a good idea to port some of these to both test the new library and showcase its capabilities better, given how broad they are. Demos should probably be stored in a separate repo, so if you want to help with this task and the repo is not set up yet, please let me know.

As a word of warning, at least some of the demos use classes not available in the current version of GDSiON. This is because the initial version of this port focuses on the core of the library, and parts which are either used internally or needed for the project that I'm making with GDSiON. Notably, there is a whole high-level SoundObject abstraction (https://github.com/keim/SiON/tree/master/src/org/si/sound) with an extensive network of related classes which can be very helpful for end users. These need to be ported first, either as a part of this project, or as a auxiliary tool (to keep things lean).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.