Simple API for 2D games, built around Sprite and App::update

Client programs should implement App::update to execute game logic and add instances of Sprite to App::sprites and App::ui_sprites. At each frame, all sprites are drawn to the screen.

This system relies on two cameras App::world_camera and App::ui_camera.

  • App::world_camera applies a perspective effect to draw the game world. This camera is designed to be moved around to see the world as well as to zoom in and out. It is used to position the sprites in App::sprites.

  • App::ui_camera is a simple orthogonal camera to display UI objects. This camera should mostly be still, it can still move for chock effects and the like. It can be used to standardize the size of the UI across devices. It is used to position the sprites in App::ui_sprites.

See the sample game at contrib/asteronits/ and the basic project template at lib/gamnit/examples/template/.

All class definitions

package_diagram gamnit::flat flat gamnit::limit_fps limit_fps gamnit::flat->gamnit::limit_fps gamnit::keys keys gamnit::flat->gamnit::keys gamnit::camera_control camera_control gamnit::flat->gamnit::camera_control gamnit::tileset tileset gamnit::flat->gamnit::tileset gamnit::bmfont bmfont gamnit::flat->gamnit::bmfont app::audio audio gamnit::flat->app::audio gamnit gamnit gamnit::limit_fps->gamnit realtime realtime gamnit::limit_fps->realtime gamnit::keys->gamnit gamnit::camera_control->gamnit gamnit::cameras cameras gamnit::camera_control->gamnit::cameras gamnit::font font gamnit::tileset->gamnit::font gamnit::bmfont->gamnit::font dom dom gamnit::bmfont->dom app::app_base app_base app::audio->app::app_base ...gamnit ... ...gamnit->gamnit ...realtime ... ...realtime->realtime ...gamnit::cameras ... ...gamnit::cameras->gamnit::cameras ...gamnit::font ... ...gamnit::font->gamnit::font ...dom ... ...dom->dom ...app::app_base ... ...app::app_base->app::app_base gamnit::more_materials more_materials gamnit::more_materials->gamnit::flat gamnit::virtual_gamepad virtual_gamepad gamnit::virtual_gamepad->gamnit::flat gamnit::more_models more_models gamnit::more_models->gamnit::more_materials gamnit::selection selection gamnit::selection->gamnit::more_materials gamnit::more_models... ... gamnit::more_models...->gamnit::more_models gamnit::selection... ... gamnit::selection...->gamnit::selection a_star-m a_star-m a_star-m->gamnit::virtual_gamepad a_star-m... ... a_star-m...->a_star-m

Ancestors

module abstract_collection

core :: abstract_collection

Abstract collection classes and services.
module abstract_text

core :: abstract_text

Abstract class for manipulation of sequences of characters
module angles

geometry :: angles

Angle related service using Float to represent an angle in radians
module app

app :: app

app.nit is a framework to create cross-platform applications
module app_base

app :: app_base

Base of the app.nit framework, defines App
module array

core :: array

This module introduces the standard array structure.
module assets

app :: assets

Portable services to load resources from the assets folder
module aware

android :: aware

Android compatibility module
module bitset

core :: bitset

Services to handle BitSet
module boxes

geometry :: boxes

Provides interfaces and classes to represent basic geometry needs.
module bytes

core :: bytes

Services for byte streams and arrays
module c

c :: c

Structures and services for compatibility with the C language
module caching

serialization :: caching

Services for caching serialization engines
module cameras

gamnit :: cameras

Camera services producing Model-View-Projection matrices
module cameras_cache

gamnit :: cameras_cache

Cache the Matrix produced by Camera::mvp_matrix
module circular_array

core :: circular_array

Efficient data structure to access both end of the sequence.
module codec_base

core :: codec_base

Base for codecs to use with streams
module codecs

core :: codecs

Group module for all codec-related manipulations
module collection

core :: collection

This module define several collection classes.
module core

core :: core

Standard classes and methods used by default by Nit programs and libraries.
module display

gamnit :: display

Abstract display services
module dom

dom :: dom

Easy XML DOM parser
module dynamic_resolution

gamnit :: dynamic_resolution

Virtual screen with a resolution independent from the real screen
module engine_tools

serialization :: engine_tools

Advanced services for serialization engines
module environ

core :: environ

Access to the environment variables of the process
module error

core :: error

Standard error-management infrastructure.
module exec

core :: exec

Invocation and management of operating system sub-processes.
module file

core :: file

File manipulations (create, read, write, etc.)
module fixed_ints

core :: fixed_ints

Basic integers of fixed-precision
module fixed_ints_text

core :: fixed_ints_text

Text services to complement fixed_ints
module flat

core :: flat

All the array-based text representations
module flat_core

gamnit :: flat_core

Core services for the flat API for 2D games
module font

gamnit :: font

Abstract font drawing services, implemented by bmfont and tileset
module gamnit

gamnit :: gamnit

Game and multimedia framework for Nit
module gc

core :: gc

Access to the Nit internal garbage collection mechanism
module geometry

geometry :: geometry

Provides interfaces and classes to represent basic geometry needs.
module glesv2

glesv2 :: glesv2

OpenGL graphics rendering library for embedded systems, version 2.0
module hash_collection

core :: hash_collection

Introduce HashMap and HashSet.
module input

mnit :: input

Defines abstract classes for user and general inputs to the application.
module inspect

serialization :: inspect

Refine Serializable::inspect to show more useful information
module iso8859_1

core :: iso8859_1

Codec for ISO8859-1 I/O
module kernel

core :: kernel

Most basic classes and methods.
module list

core :: list

This module handle double linked lists
module math

core :: math

Mathematical operations
module matrix

matrix :: matrix

Services for matrices of Float values
module meta

meta :: meta

Simple user-defined meta-level to manipulate types of instances as object.
module more_collections

more_collections :: more_collections

Highly specific, but useful, collections-related classes.
module native

core :: native

Native structures for text and bytes
module numeric

core :: numeric

Advanced services for Numeric types
module parser

dom :: parser

XML DOM-parsing facilities
module parser_base

parser_base :: parser_base

Simple base for hand-made parsers of all kinds
module performance_analysis

performance_analysis :: performance_analysis

Services to gather information on the performance of events by categories
module points_and_lines

geometry :: points_and_lines

Interfaces and classes to represent basic geometry needs.
module poset

poset :: poset

Pre order sets and partial order set (ie hierarchies)
module programs

gamnit :: programs

Services for graphical programs with shaders, attributes and uniforms
module projection

matrix :: projection

Services on Matrix to transform and project 3D coordinates
module protocol

core :: protocol

module queue

core :: queue

Queuing data structures and wrappers
module range

core :: range

Module for range of discrete objects.
module re

core :: re

Regular expression support for all services based on Pattern
module realtime

realtime :: realtime

Services to keep time of the wall clock time
module ropes

core :: ropes

Tree-based representation of a String.
module serialization

serialization :: serialization

General serialization services
module serialization_core

serialization :: serialization_core

Abstract services to serialize Nit objects to different formats
module sorter

core :: sorter

This module contains classes used to compare things and sorts arrays.
module stream

core :: stream

Input and output streams of characters
module text

core :: text

All the classes and methods related to the manipulation of text entities
module textures

gamnit :: textures

Load textures, create subtextures and manage their life-cycle
module time

core :: time

Management of time and dates
module union_find

core :: union_find

union–find algorithm using an efficient disjoint-set data structure
module utf8

core :: utf8

Codec for UTF-8 I/O
module xml_entities

dom :: xml_entities

Basic blocks for DOM-XML representation

Parents

module audio

app :: audio

Services to load and play Sound and Music from the assets folder
module bmfont

gamnit :: bmfont

Parse Angel Code BMFont format and draw text
module camera_control

gamnit :: camera_control

Simple camera control for user, as the method accept_scroll_and_zoom
module keys

gamnit :: keys

Simple service keeping track of which keys are currently pressed
module limit_fps

gamnit :: limit_fps

Frame-rate control for applications
module tileset

gamnit :: tileset

Support for TileSet, TileSetFont and drawing text with TextSprites

Children

module more_materials

gamnit :: more_materials

Various material implementations
module virtual_gamepad

gamnit :: virtual_gamepad

Virtual gamepad mapped to keyboard keys for quick and dirty mobile support

Descendants

module a_star-m

a_star-m

module cardboard

gamnit :: cardboard

Update the orientation of world_camera at each frame using the head position given by android::cardboard
module depth

gamnit :: depth

Framework for 3D games in Nit
module more_models

gamnit :: more_models

Services to load models from the assets folder
module selection

gamnit :: selection

Select Actor from a screen coordinate
module stereoscopic_view

gamnit :: stereoscopic_view

Refine EulerCamera and App::frame_core_draw to get a stereoscopic view
module vr

gamnit :: vr

VR support for gamnit depth, for Android only
# Simple API for 2D games, built around `Sprite` and `App::update`
#
# Client programs should implement `App::update` to execute game logic and
# add instances of `Sprite` to `App::sprites` and `App::ui_sprites`.
# At each frame, all sprites are drawn to the screen.
#
# This system relies on two cameras `App::world_camera` and `App::ui_camera`.
#
# * `App::world_camera` applies a perspective effect to draw the game world.
#   This camera is designed to be moved around to see the world as well as to
#   zoom in and out. It is used to position the sprites in `App::sprites`.
#
# * `App::ui_camera` is a simple orthogonal camera to display UI objects.
#   This camera should mostly be still, it can still move for chock effects
#   and the like. It can be used to standardize the size of the UI across
#   devices. It is used to position the sprites in `App::ui_sprites`.
#
# See the sample game at `contrib/asteronits/` and the basic project template
# at `lib/gamnit/examples/template/`.
module flat

import gamnit::flat_core

# Extra optional features
import gamnit::limit_fps
import gamnit::keys
import gamnit::camera_control
import gamnit::tileset
import gamnit::bmfont
import app::audio
lib/gamnit/flat/flat.nit:15,1--44,17