Giter VIP home page Giter VIP logo

derydocaengine's Introduction

Derydoca Engine

This is a personal project of mine available for anyone who is interested in it. Feel free to fork the project and customize it for your needs. I am in the process of refactoring the engine and as a result, many things may be broken. If you are interested in a stable version, check out the releases/0.0.1 branch. An older video of that branch is below:

Watch the demo video

And if you are interested in some of the blog posts I have made about some of the development of this engine, check out the link below:

http://derydoca.com/category/derydoca-game-engine/

How To Build

After cloning the project you will have to restore the project's submodules. Run the two commands below in your console/terminal window:

git submodule init
git submodule update

You will also need to generate the solution and project files. This repo is utilizing CMake for project generation. It has only been tested to be working by generating Visual Studio project files, but you may also try other generators at your own risk. This project will currently only build in debug mode due to the explicit dependency to the glew32 library. This is planned to be fixed in the future when the renderer is upgraded to DX12.

derydocaengine's People

Contributors

derydoca avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

derydocaengine's Issues

Window resizing

A user should be able to resize the display window at run-time.

Mesh objects not storing mesh names in meta file

The derymeta files for mesh data includes a Name field which should populate based on the name of the mesh in the source file. While this is not being used currently, it will be in the near future. Investigate and fix the problem.

Create a GUI component for selecting assets of specific types

As a user I should be able to change the referenced assets in objects that reference external asset types. For example, a mesh renderer binds a mesh with a material. There should be a generic control that will allow the user to open up a window to select a different mesh. It would also work with materials in the same way.

Create orbital camera control logic

As a user of the animation viewer, I need to be able to easily visualize my animation. The traditional WASD movement is not optimal for this as we are usually focused on something at the origin. An orbital input control would be best as it would keep the origin in view. I should be able to rotate the camera about the origin as well as add an offset if the area of interest is not directly at the origin.

Add filters to ResourcePicker to restrict assets to a subset such as meshes with skeletons only

As a user of the engine, when picking assets that need to constrain to a specific subset of assets, the picker should hide all invalid resources. For instance, in the Animation Viewer, the picker for the mesh should only give me the option of selecting meshes that have a skeleton. The asset picker should implement this in a generic way so that filters can be added on a case-by-case basis

No license?

Hi, Cool engine. Could you add a license file dictating what license the code is under? GPL/MIT/PD?

Point Sprite scene not rendering correctly

The pointSprite scene is not rendering correctly when you load a scene and then load the pointSprite scene afterwards. It appears to be rendering the view recursively into each instance of the sprite.

Fix camera FOV rendering

The camera component has a field of view variable. When it is set to 70, the camera works as expected. Most any other value causes the camera to operate in strange ways. Investigate this issue and correct any problems with it.

Tessellating Teapot level not rendering

The tesselatingTeapot level is not rendering anything. This may be due to the implementation of the editor renderer not calling Update on the game components. This should work without needing Update to run.

Upgrade Engine to use a Shader Cross-Compiler

The engine should enable end-users to write code in one language and cross-compile to any potential platform in the future. Microsoft's Shader Conductor project may be a good library to use.

Tesselating Quad scene not rendering

The tesselatingQuad level is not rendering any of the quads. This may be due to the implementation of the editor renderer not calling Update on the game components. This should work without needing Update to run.

Create default window layout

As a user of the engine opening the engine for the first time, the user interface should be arranged in a sensible manner. This requires initial window docking states and sizes. Currently, the first thing the user sees is a jumble of different sized windows.

Fix state leak with lights between scene and animation viewer

There is state leak between AnimationViewer and SceneViewer where lights created in one are visible between both viewports. This is caused because the light manager operates as a singleton so they are both assumed to be in the same space. Since this is no longer the case, the light manager needs to either be refactored or removed in favor of another strategy that handles multiple viewports of different scenes.

Asset Browser Object Type Icons

As a user I should see an icon that represents the asset type in the asset browser. For instance, a material should have an icon that differentiates itself from a level or shader.

Create file monitoring process

The engine should watch the project directory to detect new files, modifications, and deletions. Create a system to monitor the project directory and have the engine update the internal representation of the folders.

Fix mouse movement when navigating

A user should be able to rotate the camera with the WasdMover component by holding down RMB and moving the mouse and not be bound by the size of the window. Currently the rotation stops when the mouse hits the border of the window despite the cursor being hidden. The component should use relative movement of the mouse to rotate the camera and keep the on screen location fixed while rotating.

Depth Based Tessellation level not rendering

The depthBasedTessellation level is not rendering anything. This may be due to the implementation of the editor renderer not calling Update on the game components. This should work without needing Update to run.

Create a Resource Manager

A resource manager is needed to ensure that all resources loaded into memory get deallocated. It also benefits performance by only needing to load a resource into memory once when it is being referenced in multiple locations.

Implement Error Shader

When a shader fails to compile, the engine will crash. The engine should swap out the shader for an "error" shader that renders a flat pink color.

Fix ImageProjector

When solving #34 it required the removal of loadComponents() which is required for ImageProjector to work currently. A workaround would need to be found for this.

Create a grid component for the animation viewer

As a user of the animation viewer, I should be able to visualize the scale of the model I am viewing via a grid pattern below the model. Each marking should be at a meaningful place such as 0.1 meters.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.