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"


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

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

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.

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

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