Alex Dixon

Welcome to my programming blog and portfolio, I have worked in gamedev for over 10 years and I am currently principal programmer at Flavourworks. I enjoy shuffling bytes and swizzling vectors...

jsn

A relaxed, user-friendly json-like data format.

jsn is a user-friendly data format that can be easily read and reliably edited by humans. It adds powerful features such as inheritance, variables, includes and syntax improvements to make jsn files more compact and re-usable than a json counterpart, it is an ideal solution for multi-platform build configuration, packaging and content building pipelines.

Example extract of a jsn config to setup a multi-platform code and data build pipeline:

base:
{
    clean: {
        directories: [
            "${data_dir}"
            "${bin_dir}"
            "${build_dir}"
            "temp"
        ]
    }
    
    copy: {
        files: [
            ["assets/source/fonts", "${data_dir}/fonts"]
            ["assets/source/lua", "${data_dir}/lua"]
            ["assets/source/timelines/*.json", "${data_dir}/timelines"]
            ["assets/imgui_default.ini", "${data_dir}/imgui_default.ini"]
            // 2 meta data files for syncing data
            ["assets/fwbuild_init.jsn", "${bin_dir}/fwbuild_init.jsn"]
            ["assets/config.jsn", "${bin_dir}/config.jsn"]
        ]
    }
}

ios-library(base): 
{
    jsn_vars: {
        data_dir: "bin/ios_library/data"
        bin_dir: "bin/ios"
        build_dir: "build/ios"
    }
    
    premake: {
        args: [
            "xcode4"
            "--library"
            "--wwise"
            "--platform=ios"
            "--file=tv_editor.lua"
            "--fwtechdir=${fwtechdir}/"
            "--scripts=${fwtechdir}/third_party/premake-android-studio"
            "--curl_fetch"
        ]
    }
            
    pmfx: {
        args: [
            "-platform osx"
            "-shader_platform metal"
            "-i assets/source/shaders ${fwtechdir}/assets/shaders"
            "-o assets/built/ios/data/shaders"
            "-h shader_structs"
            "-t assets/temp/ios"
            "-metal_sdk iphoneos"
            "-metal_min_os 10.9"
        ]
    }
    
    premake: ["xcode4 --library --wwise --platform=ios --file=tv_library.lua"]
}

Check out the GitHub page for more information and how to use.

GitHub