Технологии:

ActionScript 3, FeathersUI, Reobotlegs, Flash, Windows, MacOSX, iOS, Android, Air, AGAIL

Cross-platform multiplayer music notes editor

Summer 2017

Drawing and editing are synchronized with all devices of the user and his partners in the group. My part was not only the development of the client application, but also the development of a simplified (prototype) version of the server functionality. This scheme allowed us to save a huge amount of time to synchronize the client and server blocks, writing the client-server protocol and documentation. I have written simplified solutions in PHP without paying attention to detailed elaboration of backend: in some places stubs, in some fully functional tools, which as a result took much less time than discussions could require for writing of the protocol. Later, the server developer simply replaced the existing endpoints with a more stable and well-developed version based on Python Django, without necessity of making changes in the client part. It allowed the server developer to be able during all the development time to check the result of his work on a visually working version, instead of writing of code "blindly"

Bookreader


Bookreader


Music notes are stored on the server in the user's virtual directory

Bookreader


User can add and delete notes to the personal library

Bookreader


A lot of development time was allocated to high-quality rendering of notes, interpolation of raster texts using an assembler language of communication with the video card AGAL

Bookreader


The application supports the displaying and hiding states for each of the layers of a book

Bookreader


Various modes of page displaying are supported: double and single page spreads, full screen and frame modes, page navigation

Bookreader


Bookreader


Bookreader


One of the most noticeable parts is a graphic editor-drawing. All displayed elements are actually vector graphic programmatically drawing lines with raster brushes in the GPU memory each time recreating a raster drawing from a vector path. Due to the high performance of the GPU rendering, after loading graphics into the memory of a video card, the pages are displayed without the slightest delay, even when the processor of the device is almost stuck due to loading by other applications or poor performance of the device. The thing is that all the graphics are drawn in the video memory and practically does not use the processor. Time is spent only on loading the raster into the video memory, but due to very detailed optimization, even this time remains invisible to the eyes. In addition, drawing occurs in asynchronous streams, which will avoid stalling even when loading a large amount of data.

Bookreader


All symbols and brushes are preloaded into video memory beforehand, therefore they do not take up CPU time during drawing

Bookreader


Much attention is paid to user preferences

Bookreader


Bookreader


Bookreader


The user has the possibility to select and sort his own palette of colors

Bookreader


And characters. There is also a possibility to set the sequence of pages for displaying in book scrolling