Skip to content

raylib 2.6 roadmap #911

@raysan5

Description

@raysan5

raylib has grown a lot in the last years and like in the past, I feel is time to sit down and think carefully about raylib next steps. It's very easy to lose focus and keep adding features to make raylib the next big engine... that's not raylib pourpose.

So, for next raylib installment, I'll try to focus efforts on library stability and core features to improve the multiplatform raylib experience. I'll try to leave aside new 3d features... 3d requires lot of effort and time.

Proposed improvements:

  • DONE [core] Frame stuttering when using Sleep() mechanisms. This issue worries me, when avoiding the BUSY_WAIT_LOOP, it seems there is a micro-second delay every second or so, it seems related to the time required to recover from the system halt. I investigated it but I couldn't find a solution yet. Help is welcome! [core] Stuttering on animated elements every second or so #865 Possible solution: 42d56d2

  • DONE [core] Input mechanisms review, try to unify it between platforms. Specially focus on:

    • SKIP Raspberry Pi input system, reviewed several times in the last year to replace raw keyboard input reading mechanism by evdev based input reading (inputs already processed by OS), both mechanisms are enabled at this moment for compatibility reasons (SSH keyboard support) but most probably only evdev one should be available. [core] Keyboard input system not working properly #863
    • DONE Android and HTML5 touch input system should be reviewed to properly scale inputs when framebuffer does not match display resolution and it's consequently scaled and offseted. [core] Review touch inputs scaling #163
    • DONE Desktop and HTML5 inputs should be redesigned to support mouse and touch inputs as they were the same, so the same applications could work indistintly with mouse and touch. [core] Broken touch input for web demos #726
  • DONE [core] Improve High DPI support. This is tricky, High DPI means that depending on the screen DPI your fixed pixel-size applications will look bigger or smaller on the screen. Solution implies re-scaling application framebuffer and mouse/touch inputs to match an equivalent resolution for the new DPI... it looks like a hack to me and doing that scaling brokes any pixel-perfect design of the original application, for example fonts. Additionally, every OS deals with that in a different way, some OS could automatically scale mouse input or even display window. I have to find a solution... [core] Mouse position reports incorrect values on macOS #826, [examples] shaders_julia_set doesn't fill screen on Macbook Retina #837

  • DONE [rlgl] This module has already been redesigned several times to improve draw batching mechanism. It was lately reviewed to improve push/pop vertex transformations, similar to OpenGL 1.1. Right now, those stored transformations are not applied to mesh drawing, it shouldn't be difficult to support it: [models] DrawModel() does not use current matrix from rlPushMatrix() #901 [core] GetWorldToScreen() does not support current matrix from rlPushMatrix() #902

  • DONE [textures] Review ImageDraw() function. This is the base function for all Image drawing funtions (including text drawing on Image), that's the core for the basic 2d software renderer provided by raylib, it has some issues and it should be reviewed. [textures] Review/rewrite ImageDraw() function  #555

  • DONE [raudio] This module was redesigned some time ago to use the amazing miniaudio library but base design still comes from the previous OpenAL implementation, I would like to review and improve internal library structure and also promote its standalone usage mode. Some points to review:

    • DONE Review AudioBuffers vs AudioStream structures, maybe they can be unified and exposed to the user for custom audio streamming implementations.
    • DONE Review Music structure to avoid an opaque structure and expose Music parameters to the users, it will also make things easier for people creating bindings to raylib.
    • SKIP Support for WAV music streaming, same as any other audio format. Right now WAV files are fully loaded into memory.
  • DONE [examples] Some examples do not work on some platforms and require review, some new examples are also proposed:

  • SKIP [rlvk] It's been long time I want to dig into Vulkan backend but the truth is that I can't find the benefits for raylib. In any case, I don't discard jumping into it if I had enough time.

Well, this is the intended roadmap for next raylib. Nothing set on stone!

Please, let me know your thoughts! :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions