Smk
SMK - Simple multimedia kit - C++ WebAssembly
Install / Use
/learn @ArthurSonzogni/SmkREADME
SMK (Simple multimedia kit)

Features:
- Compatible with WebAssembly. One build for every platforms!
- Fast & simple.
- No dependencies: everything is fetched using cmake FetchContent.
Ready to start?
- WebAssembly demo from the ./examples directory.
- documentation
- starter project
- tutorial
Open a new Window:
auto window = smk::Window(640, 480, "Title");
The main loop:
window.ExecuteMainLoop([&] {
window.Clear(smk::Color::Black);
[...] // Draw stuff
window.Display();
});
Images
Load textures:
auto ball_texture = smk::Texture("./ball.png");
Display images:
auto ball_sprite = smk::Sprite(ball_texture);
ball_sprite.SetPosition({200,200});
window.Draw(ball_sprite);
Text
Load font:
auto font_arial = smk::Font("./arial.ttf", 32);
Display text:
auto text = smk::Text(font_arial, "hello world");
text.SetPosition({200,200});
window.Draw(text);
Sound
Load sound:
auto sound_buffer = smk:SoundBuffer("./boing.ogg");
Play sound:
auto sound = smk::Sound(sound_buffer);
sound.Play();
Transform the view
auto view = smk::View();
view.SetCenter({200, 200});
view.SetSize(320,240);
window.SetView(view);
Library made using SMK
- smkflow => A node editor library.
Games made using SMK
Please add yours.
Story
I needed to port several games made using the SFML to WebAssembly. SFML isn't supporting WebAssembly (yet), so I had to reimplement it myself. If you know the SFML, then SMK must be very familiar to you.
Minimal packages to install for building/executing:
They should already be installed. If they aren't you need to execute:
sudo apt install xorg-dev libgl1-mesa-dev libpulse-dev
Thanks
SMK depends directly on many great projects listed below:
SMK is also made possible thanks to:
Related Skills
node-connect
346.4kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
107.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
346.4kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
346.4kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
