Harmonic Flow Framework (libhffwk)
Cross platform C++ 2D Game Engine Framework
API Documentation


Harmonic Flow Framework (libhffwk) is a cross platform 2D / 3D game engine framework written in C++.

Harmonic Flow Framework currently supports Windows, Mac OS, GNU/Linux, iOS and Android platforms, aiming to be easy-to-use, fast and easily extendable to other platforms if needed.

For more information checkout:

Harmonic Flow Framework is free software and is distributed under the zlib license:

Harmonic Flow Framework documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 Unported License and all future versions:

Short example:

#include "hffwk.h"
int main(int argc, char *argv[])
// publisher name:
HFCore::UString publisherName = "Harmonic Flow";
HFCore::UString gameName = "CoolGame";
// preferences file name:
HFCore::UString prefFileName = "pref.xml";
// data file and data file password to use:
HFCore::UString dataFile = "data.hfl";
HFCore::UString dataFilePassword = "TransformationOfMan";
// default encrypt psw when using crypto methods:
uint8_hf buf[] = "SeeingIsDoing";
uint8_hf *encPassword = buf;
// Android java activity class path:
HFCore::UString androidActivityClass = "org/libhffwk/demo1/HFActivity";
// path to icon to use, if any:
HFCore::UString iconPath = "";
iconPath = "data/icon/icon32x32.png";
#elif defined(HF_PLATFORM_LINUX)
iconPath = "data/icon/icon96x96.png";
// initialize the platform:
GameMain::instance(), // singleton Game interface
gameName, // window title
publisherName, // publisher name
prefFileName, // preferences file name
dataFile, // data file where resources are located
dataFilePassword, // password to unpack pakdata file
iconPath, // window icon to use, if any.
encPassword, // encryption password to be used when using Crypto methods
androidActivityClass // Android java activity class path
// start the main loop
// destroy the game:
// destroy the environment:
return 0;

GameMain in above example should be singleton and implement needed methods from HFCore::Game interface. That's all there is to get started!