/nico

a Game Framework in Nim inspired by Pico-8.

Primary LanguageNimMIT LicenseMIT

NICO Game Framework

test

NICO is a simple game framework for the Nim programming language inspired by the PICO-8 API.

Supported platforms:

  • Windows
  • Linux, including RaspberryPi
  • Web/HTML5 via Emscripten
  • Android
  • MacOS likely works but is not tested

What it does:

  • Paletted Bitmap Graphics (you can load a custom palette up to 256 colors)
  • Fixed or flexible custom display resolution with pixel scaling
  • Sprite drawing, load png spritesheets, specify tile size per sheet (can load multiple and switch between them)
  • Tilemap drawing, import json from Tiled
  • Drawing primitives: pixels, lines, rectangles, circles, triangles
  • Input: Keyboard, Gamepad, Mouse, Touch
  • Sfx playback: load and play ogg vorbis files, configurable number of mixer channels.
  • Built in chip synth
  • Music playback: stream ogg vorbis files.
  • Custom audio callback for generating your own sounds via code.
  • Text drawing: load and draw fonts from png, supports variable width fonts.
  • Export animated gifs

Installation

  • You will need to have the Nim compiler installed
  • Run nimble install nico
  • Run nicoboot <yourname> <projectname> <directory> to create a new directory with an example base ready to start working with.
  • You can watch a quick tutorial here
  • Native build:
    • You'll need SDL2 for native builds, on Windows, ensure SDL2.dll is copied to your project directory.
    • From your project directory run nimble runr to build and run the example as a native build.
    • From your project directory run nimble rund to build and run the example as a debug native build.
  • Web build:
    • For web builds you'll need Emscripten.
    • From your project directory run nimble webr to build for web in release mode.
    • From your project directory run nimble webd to build for web in debug mode.

Learning

Why should you use NICO?

  • It's fun and easy to use
  • Learn Nim the fun way! It's a great new statically typed programming language that compiles to C.
  • You can build for Web, Windows, Linux, Mac, Android, and potentially other platforms.

Future work:

  • API Documentation
  • More examples
  • Tests
  • Utility modules for common higher level tasks
  • Browser to browser networking using WebRTC
  • Immediate mode GUI
  • 3D Utils and Rasterizer

Games made using NICO: