snow is a free, open source light, pure and clean toolkit for building frameworks, applications and games using Haxe, targeting native platforms and web browser. This means snow by default runs natively on Mac, Windows, Linux desktops, as well as iOS and Android devices. It also runs directly in the Web browser using webgl.
Haxe is an expressive, beautiful modern programming language
that compiles its own code into other languages. learn more
snow is currently considered alpha, which means there may be bugs, inconsistencies, incomplete implementations, and possible minor API changes. It is still considered fairly stable and is being used by multiple frameworks and games, but there are things to tighten up before 1.0.0 release can be called final.
Join us in developing and testing the framework and tools, below.
snow embraces a minimal design.
This means snow is to the point and does what it is designed for only.
This includes exposing tools to you with as much consistency as possible across platforms.
This allows you to focus on your code, and not platform details as much.
snow is built as a facilitator.
This means that snow tries to avoid making assumptions, letting you decide your architecture.
This allows you to build frameworks, games and applications without it getting in the way.
This means snow is focused on portability, clarity, consistency and maintainability.
snow is as self contained as possible.
There are no current external dependencies, except for a build pipeline called flow.
snow strives to be reliable.
There are tests of various kinds, you can read about the testing approach in the guide.
snow has high standards.
From code quality, clarity and portability to documentation to samples.
For a short intro to why snowkit was created, read this blog post here.
Where possible, full code completion and building from the editor is supplied.
Sublime Text (mac/windows/linux)
FlashDevelop (windows only)
Install from git
haxelib git snow https://github.com/underscorediscovery/snow.git
git clone https://github.com/underscorediscovery/snow.git
haxelib dev snow /path/to/snow/
one - start here
two - life of a snow app
windowing | audio | assets | input | render | IO | utils
want to help? - start here!
being reliable - help write tests
the more you know - help write guides
what goes where? - structure guide
playing nice - code/design conventions
In depth guides
native code - build, modify, fix snow
On top of the comprehensive, full fledged Haxe API,
- consistent access to OpenGL API based on WebGL spec
- normal, borderless, fullscreen or resizable windows
nativeauto or manual window swap control
desktopmultiple window support
desktopfull access to display/mode info
- consistent high level api, with access to platform specific implementations
- named sound api, or object management play(‘sound’) vs sound.play()
- pitch, pan, volume, position, duration properties
- play sound or stream sound, looped or not
- on complete handling
nativefull direct access to OpenAL API from Haxe code
nativeauto background thread toggle
- consistent api for loading assets across platforms
- raw bytes, text, images and audio support
- async based api design to handle preloading easily
- strict loading on a list or per file basis
- images - bmp, png, jpg, gif, tga, psd
webaudio - ogg, wav, mp3 (see snags)
nativeaudio - ogg, wav, pcm
nativeconsistent manual file IO for platforms (like android) if needed
desktopOS file change notification events on any folder
desktopOS open/save/folder dialogs
- complete callbacks for for mouse, keys, gamepad, touches
- text input events for handling localized text reliably
- keys - spec based keycode/scancode access/conversion
- gamepad events for hot plugging/swapping devices at runtime
- immediate style access in addition to event callbacks
desktopmouse - set position, window lock, window grab, and visibility
- complete set (-1) of Typed Arrays for use on all platforms
- ByteArray util for handling bytes
- high res timestamps, consistent Timer for repeat/once handlers for all platforms
- open a url in the default browser
nativeaccess to ndll/dll endpoints compiled with hxcpp on native platforms
The snag list below is a list of things that are known issues or inconsistencies across platforms to take note of.
For a full list of issues, open and resolved, refer to the github issue tracker
All trademarks and registered trademarks are the property of their respective owners.