Sparkle project

The Sparkle project emerged as a personal journey, a quest to delve into the intricate realm of UI development and hone the fundamental skills required for implementing modern and useful UI Framework. It all began with a Spark of inspiration ignited by this small project, which served as a playground for testing various UI framework concepts using the SDL library.

Sparkle is not in the pursuit of becoming an ultra-professional and polished Framework or Game Engine; rather, it’s an exhilarating venture aimed at pushing the boundaries of creativity, conducting experiments, and engaging in the art of UI implementation. We aim to learn and have fun while exploring the challenges of UI coding and implementation.

So far we have implemented (21/01/2024):

  • Image and Texture resource manager
  • 9Slice image
  • Image map
  • Button
  • Horizontal and Vertical Layout container
  • Simple Label and a Font resource manager
  • Factory
  • Events
  • Gamepad support
  • Core (Matrix, Transform, Color, Widget, Etc)

It’s our hope to implement even more:

  • List Container
  • Menu
  • Context Menu
  • Window
  • Multiline Text
  • Input Editor
  • Text with glyph / Rich text
  • Bmp Font (in addition to TTF font)
  • Animation with Tween
  • Performance improvements
  • Better Memory Manegement
  • Game object
  • Behavior component
  • etc

Learning:

While SDL serves as the foundation, abstracting the platform, rendering, and input aspects, the Sparkle project takes a distinctive approach to UI development. Our UI Framework is constructed from the core basics and building up to modern UI features, this ensures a deep understanding of all systems involved.

In our quest for innovation, we draw inspiration from industry giants like Unity3D and Unreal. By examining their methodologies and feature implementations, we seek to incorporate the best practices into Sparkle. This approach ensures that our project not only reflects our unique creativity but also benefits from the collective wisdom of established game engines, enhancing the overall user experience.

Currently, Sparkle is a solo endeavor, driven by the desire to sharpen personal skills. The project serves as a dynamic canvas for individual growth, providing an opportunity to experiment, iterate, and implement ideas in a self-directed manner. While the current focus is on individual development, Sparkle’s potential for collaboration remains open-ended, inviting others to join this evolving journey.

Our approach to API development is guided by small, functional program examples. These not only serve as the building blocks for Sparkle’s functionality but also act as documentation for its features. By employing this method, we ensure that the development process is transparent, fostering a clear understanding of the API’s capabilities while creating a repository of practical examples for future reference.

Sparkle progresses at a deliberate, personal pace, shaped by the constraints of a busy schedule. Each step is a mindful one, reflecting a commitment to quality over speed. The devlog unfolds not just milestones but also captures the intriguing discoveries and tutorials that emerge amid the rhythm of a busy life. Your understanding and patience on this unique journey are truly valued.

Where to find it

Currently the project is devided in three projects: The solution, Sparkle UI and Sparkle UI Examples. They are versioned on Gitlab and you can find them on the links bellow. The solution project has the other two as submodules and the SDL configured as dependency; so you actually only need to clone the solution.

Sparkle Solution

Sparkle UI

Sparkle UI Examples

Notes

We are going to use the page Notes to share Sparkle Framework Snippets. Stay tunned.

Licence

This Framework should NOT be used in projects with any intent other than learning. This software is not performant or stable enough and it is provided as is. However you can do whatever you want with it, copy, modify, sell, etc. No attribution needed.

MIT-0

MIT No Attribution Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so. THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.