Skip to content

octronic-uk/dream

Repository files navigation

Dream

( Data Rules Everything Around Me )

What?

Dream is a Demo and Game Engine.

Key Features

  • Platform Independant
  • Written in C++
  • OpenGL Graphics
  • OpenAL Audio
  • Freetype Font Engine
  • Bullet Physics & Collision
  • Lua Scripting
  • Project Editor Written with ImGui

Architecture

This section will describe the key concepts used when working with Dream.

Project

Projects are the highest level of object in Dream. A Project consists of a json file and an assets directory structure. The Project holds definitions of Scenes, Entities and AssetDefinitions.

Assets

A Project will contain several 'Asset' objects. An Asset describes something that can be added into a Scene, such as a 3D model, Audio Clip, Spline Path, etc. (full list below).

AssetDefinitions

Asset Definitions are used to define an Asset's properties at start-up. They are defined once at the Project level and can be reused multiple times within your Screen to create implement Entities. Asset Definitions are defined at the Project level so that they can be shared by many Scenes and Entities. There are several types of Asset available in Dream.

  • Animation
  • Audio
  • Font
  • Light
  • Material
  • Model
  • Path
  • Physics Object
  • Script
  • Shader
  • Sprite
  • Texture

Scenes

A Project contains one or more Scenes that are to be displayed. A Scene is composed of one or more Entities. A Scene may for example represent a level, environment or stage within your application.

Entities

Entities are used to construct a 'Scenegraph' that describes the relationship of objects within the Scene. A Scene has a single 'Root' Entity with 0-N children. Entities are arranged within a parent-child relationship tree, through which they can inherit their initial transformation, visibility, etc. Each Entity is assigned zero or more 'AssetsDefinitions' to use at startup.

DreamTool

DreamTool is the Project editor for Dream. It is cross-platrofm, written with Dear ImGui. It allows you to build and test Scenes that can later be run using a standalone Dream engine frontend (DreamGLFW/DreamAndroid). Both DreamTool and Frontend applications use the same engine codebase 'DreamCore' so runtime results will be identical.

Build Dependencies

Dream uses the following libraries.

About

A 3D Multimedia and Game Engine.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published