Skip to content

Commit

Permalink
Update README.md
Browse files Browse the repository at this point in the history
Fixed some outdated and incorrect information.
  • Loading branch information
profexorgeek authored Jan 23, 2019
1 parent 711ec89 commit e084b77
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ Frixl is written in TypeScript and renders, by default, to a 2D canvas. This
engine is not intended for 3D use. It is intended for animated data visualization,
simple video games and similar interactive media.

See a preview that runs right out of this repository here:
http://htmlpreview.github.io/?https://github.com/profexorgeek/frixl/blob/master/Example/index.html

## Setup
Setup assumes you have installed Node and NPM are are familiar with basic Node/NPM usage.

Expand All @@ -35,21 +32,20 @@ To use Frixl you extend its core objects such as Positionables, Sprites, Views a


## Current Features
Frixl engine is comprised of modular objects that are easy to extend and customize. At a high level, the game instance manages a scene graph that starts with a **View**. Views should be used for things like menu screens or levels and keep your game organized and scalable.

Views own a collection of **Positionables**. Positionables are the base type for every game component. They define handy properties for position, velocity and acceleration and offer a simple physics implementation. Positionables can also have children that are relatively positioned, making it easy to build a recursive scene graph of logical object attachments.
Frixl engine is comprised of modular objects that are easy to extend and customize. At a high level, the game instance manages a scene graph that starts with a **View**. Views should be used for things like menu screens or levels and keep your game organized and scalable. Views own a collection of **Positionables**. Positionables are the base type for every game component. They define handy properties for position, velocity and acceleration and offer a simple physics implementation. Positionables can also have children that are relatively positioned, making it easy to build a recursive scene graph of logical object attachments.

The **Sprite** type extends Positionable and supports texture mapping and animation with an **Animation** class that you can populate in code or from a persistant source such as JSON. This allows your game to use spritesheets for frame animation and loading and rendering efficiency. Since Sprites inherit from Positionable, they also get basic physics and support parenting and children.

Frixl offers a default **Camera** that extends Positionable, allowing the camera itself to have physics if desired! The camera can also be attached to any positionable, making tracking of game objects such as the player very simple.

Frixl defines an **IRenderer** interface that handles both rendering and texture loading/buffering (these are currently combined to make it easier to bind to other rendering libraries, which usually provide both). Frixl comes with a **DefaultRenderer** class that works great for most purposes, utilizing the 2D canvas renderer and containing basic texture loading methods. However, you can easily swap out the renderer with your own implementation of IRenderer if you want to use an existing library or your own system.
Frixl defines an **IRenderer** interface that defines a single `draw` method. Renderers are intended to be stateless so that a single renderer can render any camera to any context. Frixl comes with a **DefaultRenderer** class that works great for simple purposes, utilizing the 2D canvas renderer. However, you can easily swap out the renderer with your own implementation of IRenderer.

Frixl defines an **IContentManager** that defines methods for loading and retrieving assets. The **DefaultContentManager** is a simple implementation capable of loading and caching content.

Frixl provides an **InputHandler** and defines enums for keyboard and mouse input, making it easy to implement the most common types of input. It also translates touch input on mobile devices to mouse clicks so most implementations will work cross platform.

The Example folder demonstrates implementation of most of these features.

## Next Up
- Views should have an unload method that is called before moving to another view
- Simple collision implementation
- Implement audio
- Improve audio implementation

0 comments on commit e084b77

Please sign in to comment.