In thinking about KorGE 2.0 and alternative applic...
# korge
g
In thinking about KorGE 2.0 and alternative applications of KorGE and Korlibs I am struggling with how to best follow developments and contribute, given that I’m easily 😕. My assumption is that Github issues are a good intermediate point between real-time discussion in slack/forums at one end and code and documentation at the other. Assuming that Github issues are used for intermediate level sharing, do the project maintainers have a preference for how to track issues that may be spread over one or more korlib libraries and are not yet clearly scoped? My guess would be to apply them as a parent tracking issue to either the korlibs project or the korGE project and then have leaf issues at the project level as they become clearer. Two example features I would like to help develop and track are enhanced text support and video. It would be great to have high level tracking issues to keep track of child and related to the parent issue, at least for me.
1
d
The way we are tracking cross-project issues is the kanban board: https://github.com/orgs/korlibs/projects/1
For video support, if you have something in mind to improve, you can add an isuse here: https://github.com/korlibs/korvi/issues
For text, if it is just text rendering into an image, korim, and if it is real time rendering as a korge view, korge
using the kanban boards you can filter tracks
g
sounds good, I’ll take a look at the kanban boards. One of the challenges I have is the “big picture” that underlies project level features that are added. What is the app-level capability that a low level feature is enabling? Is there a specific examplar of video or text capability that is being developed against? In video, I want efficient synchronized access to decoded video frames layered on the native platform decoder (or nearest wrapper ala ffmpeg). I’m also playing around with the concept of a frame synchronized atlas like capability for video compositing into a scene. Basically video tiles that are synchronized via the container to work around browsers not having synchronization between timed media. For text, I want native font quality rendering as opposed to bitmap. This may be available and I have missed it but all the examples I’ve seen don’t seem to have it.
d
Video is already native on JS and Android. The audio is played natively and a frame generated and updated with the right timming. Supporting ffmpeg crossplatform with kotlin native would be a pretty hard challenge. Was not able to figure out how to do that properly yet.
Regarding to native text rendering. We support TTF rendering. Each three major platforms have a "fonts" folder that could be scanned for fonts. There is a NativeSystemFontProvider. Not sure about the status, but the idea is to use it: https://github.com/korlibs/korim/blob/181584307defd38c7a04a10b25beac906946855b/korim/src/commonMain/kotlin/com/soywiz/korim/font/NativeSystemFontProvider.kt#L7 with a fallback implementation that uses a single TTF: https://github.com/korlibs/korim/blob/181584307defd38c7a04a10b25beac906946855b/korim/src/commonMain/kotlin/com/soywiz/korim/font/NativeSystemFontProvider.kt#L33
g
I need to look at the video implementation again. Is there an example of the native system font usage? I’m considering how to use KorGE for browser based linear scrollytelling (user controlled and doesn’t need branching) where the backdrop and zero or more foreground tiles are part of the container/atlas video and there are high quality text bubbles that are frame synchronized to the video. Audio is not part of the design at the moment. I am likely missing how to leverage KorGE for this and appreciate your help and patience 🙂
How does native font usage work on the browser?
d
I guess that what you can do is to add some css setting the height of the document to the right stuff, then putting the canvas with position: fixed. You can then subscribe to the document scroll event from korge and update your views according to the reported scrollTop I guess
that's a pretty interesting use-case. So if you end doing that, please let me know 🙂
👍 1