the virtual notepad

data artifacts by andi


ZDK enters beta phase#2, is updated to v191127, Seagull's pre-release

A new public iteration of the pre-release ZDK is now available. A basic UI has been implemented. Some issues have been fixed or corrected.

The associated Hello World projects have also been updated to reflect changes. An additional project has been added demonstrating the new UI capabilities. Comments, licensing and formating on existing files have not been updated, and may be missing from the newest files.

An implementation of all changes can be reviewed in the Seagull application and its source code, which is a very basic cell automata simulator according to Conway's 'Game of Life' ruleset. It is presently Windows-only, and runs natively, relying solely on the existing operating system and the ZDK wrapper, and thus weighs in at a sleek 117 KiB, zipped. Seagull has basic functionality, and may be upgraded with new features as part of further functional demonstrations for ZDK, but will be kept updated to reflect changes to existing codebases.

All items can be found in the downloads section.

I'm now presently working on ZScope, an oscilloscope-software and it appears it will require some more advanced UI elements, so I'll need to update ZUI and ZDK, too.



ZDK - ZaidaTek Development Kit v190703, first public release

ZDK rapidly accelerates developing native C/C++ applications on their target platforms with basic multimedia output and typical hardware input.

This is its first public release and mostly intended as a technical demo.

Current support is limited to Windows, creation of 32-bit binaries, loading images from 24-bit bitmap only (you may, however, specify a transparent color) and inputs from mouse and keyboard only.

Currently, less than 24 lines are required to open a window and print "Hello World!" inside a native OS window with repeated draw-clears/-presents (see "HelloWorldMinimum.exe" in "ZDK - Hello World" download).

Other features include:
- support for alpha-blending 2D sprites/surfaces
- generating 2D sprites from pixel arrays, null-terminated character arrays and from local bitmap files
- an event loop system
- no main loop freeze while resizing/moving the window
- idling/wake/heartbeat timer functions (i.e. wait for sytem/user input/wake/heartbeat messages, thus reducing CPU load)

Known issues:
- random (subjective 3 out of 4) chance per execution, that a sprite will not be drawn, if the total number of sprites to be drawn per frame is less than two (could be neglible, or the tip of an iceberg of a much larger issue, this is presently unknown)

A more detailed application example is "HelloWorldAdvanced.exe" included in the "ZDK - Hello World" download, that opens a native OS window 2/3rds of the client's primary screen size, loads a few sprites and animates these at a maximum of 125 fps while (on my system) keeping CPU load below 1%. It automatically detects window resizes and reloads the sprites accordingly. This binary required less than 280 lines of code to generate.

From its intended purposes and audience, the most popular and comparable existing library would be SDL2.

Short-term roadmap:
- create a simple GUI system (ZUI)
- png/jpg support

Long-term roadmap:
- OpenGL/Vulkan support (2D)
- Linux support
- 64-bit support
- 3D support

Specs and interface are very volatile in this early stage, but the development kit can easily stand on its own to develop simple games like Tetris, Space Invaders, Game of Life and any software with similiar specifications. That is, if it's intuitive enough to use on its own, because it currently has no documentation.

ZDK was and is compiled using MinGW32 and developed with Code::Blocks and Notepad++ on a Windows 7 x64 Ultimate x86-compatible-PC that uses an 6600K CPU, has 16GB of RAM and has an RX580X as its GPU.

Lots of coffee was drunk during this time :)