Skip to content

A React Three Fiber monorepo game engine.

License

Notifications You must be signed in to change notification settings

fgarrec0397/granity

Repository files navigation

⚠️ DEVELOPMENT STOPPED ⚠️

No more development will occure on this project

 

Granity Engine

Threejs React Redux MongoDB NodeJS

A React-Three-Fiber widgets based game engine build with NodeJs as back-end.

Current State of The Project

Basic Concept

When you create a React-Three-Fiber project it can be difficult to place your 3D objects on the scene. You don't have any visual support to help you doing that. Well, this project was originally about solving this issue, but evolved in something bigger with the time.

The base idea is to create individuals widgets (that are React-Three-Fiber components), place them wherever you want on the scene and they will interact between them without any intervention from you (a bit like Unity).

You can add fields on each widgets that'll be displayed in the editor that you'll be able to get the value from in your React props.

The goal is to provide you all the tools preset for you so you can focus on what is really important, your game !!

Key Features

  • Create and place programmable widgets on the scene
  • Access widgets informations
  • Transform widgets on the scene
  • Delete widgets
  • Copy widgets
  • Multiple cameras support
  • Key bindings (only with keyboard for now)
  • Save your scene

Roadmap

The roadmap elements below are classed in order, but are may subject to change.

0.1.0

  • Create and place programmable widgets on the scene
  • Access widgets informations
  • Transform widgets on the scene
  • Delete widgets
  • Copy widgets
  • Multiple cameras support
  • Key bindings (only with keyboard for now)
  • Save your scene
  • Add a history system
  • Add a npx command line to setup a clean project
  • Switch from a CRA environment to a Vite environment
  • Manage multiple scenes
  • Auto import widgets
  • UI widget type
  • Make a flappy bird clone (Flappy poop)

0.2.0

  • Implement unit testing
  • Adding the possibility to change widget name within the scene
  • Refactor project in monorepo
  • Extract App folder into its own package
  • Having a site for the admin and the game separatly
  • Remake the UI
  • Having multiple themes (one for the game, another for the editor)
  • Control Lights by widget instead of hardcoded default ones
  • Be able to manipulate the widgets through the UI

0.3.0

  • Add a basic setup of a dashboard to control some settings such as key bindings

0.4.0

  • File system (images, 3D models, etc)
  • Make shortcuts actions available from UI
  • Implement integration test for @granity/engine
  • Some optimisation (code split)
  • Make the app deployable

0.5.0

  • Select multiple widgets at the time
  • Group widgets together
  • Support multiplayer

In a near future

  • A lot of enhancements (there are too much to list them here)
  • Add more field types
  • Add more keyboard shortcuts
  • Fix bugs along the way
  • Refactor the back-end architecture

Documentation

  • Project installation
  • How it works
  • Document functions in the base code
  • Examples

And more...

Documentation

Coming soon...