About
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.
how?
Haxe is an expressive, beautiful modern programming language
that compiles its own code into other languages. learn more
Alpha
Please note
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.
Design
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.
Reasons
For a short intro to why snowkit was created, read this blog post here.
Editor support
Where possible, full code completion and building from the editor is supplied.
Sublime Text (mac/windows/linux)
Atom (mac/windows/linux)
FlashDevelop (windows only)
template is at snowkit-fd, and here is a Download link
Guide
Setup guideInstall from git
haxelib git snow https://github.com/underscorediscovery/snow.git
OR
git clone https://github.com/underscorediscovery/snow.git
haxelib dev snow /path/to/snow/
Starter guides
one - start here
two - life of a snow app
Feature guides
windowing | audio | assets | input | render | IO | utils
API docs
API reference
Development guides
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
todo
todo
Features
render | audio | assets | input | util
On top of the comprehensive, full fledged Haxe API,
- consistent access to OpenGL API based on WebGL spec
- normal, borderless, fullscreen or resizable windows
native
auto or manual window swap controldesktop
multiple window supportdesktop
full 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
native
full direct access to OpenAL API from Haxe codenative
auto 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
web
audio - ogg, wav, mp3 (see snags)native
audio - ogg, wav, pcmnative
consistent manual file IO for platforms (like android) if neededdesktop
OS file change notification events on any folderdesktop
OS 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
desktop
mouse - set position, window lock, window grab, and visibilitymobile
multitouch supported
- 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
native
access to ndll/dll endpoints compiled with hxcpp on native platforms
Further details
Build pipeline details
project format | architectures
Platform implementation details
web | mac | windows | linux | android | ios
Snags
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
feedback
All trademarks and registered trademarks are the property of their respective owners.