top of page

Scratch 3D Game Engine

  • May 6, 2015
  • 2 min read

A functioning 3D game engine made in C++ with OpenGL. A proof-of-concept prototype for a later project.

Space Squash.png

Scratch 3D is a proof-of-concept prototype of a remake of an engine I made previously in C# using XNA. The engine is component-based (like Unity) as opposed to traditional object-oriented inheritance. The difference is, unlike Unity, there's a lot less rigidness and structure and a lot more freedom and flexibility; primarily, everything's a component and there's absolutely no reliance on entities, game objects, or scenes (they're all just components). I think this approach will be much easier for users to grasp too, since once you understand how components work, you understand how EVERYTHING works because everything IS a component.

It allows you to do things like attach components to components to components, run multiple scenes at the same time, toggle anythings visibility or activeness individually (including scenes, they're also components), pass any value type by reference (which is now inherit in this C++ remake), automatic updating, automatic drawing, and create game objects with game logic by simply adding components and adjusting their settings however you like.

The Scratch 3D Game Engine, however, is just a test, a sort of R&D, to see just what the final remake would entail (this is my first engine in C++). It still supports traditional object-oriented inheritance, and the test game in the image above (Space Squash) uses primarily that. So far it sets up the basic structure (game loop, updating, drawing, etc) and has support for the component system prepared but not functionally implimented just yet.

For more information on the original engine that Scratch 3D is a remake of (made in C# using XNA), click here (coming soon).

Development:

-OpenGL and GLSL

-C++ Programming Language

-3 Months Development Time (while in school)

-One-Person Team

Current Production Progress:

-Supports both Inheritance and Entity-Component based design

-Standard Game Loop

-GameObject class with 3D positioning, rotations, and scaling (should eventually derive from Component class).

-Automatic updating and drawing of gameobjects

-Light sources and lighting with OpenGL

-Fragment and vertex shaders in GLSL (blinn-phong model)

-Matrix-utilizing cameras (perspective and orthographic)

-UV texture mapping

-Preset primitive meshes for testing purposes

-Engine debug log file writing

-Engine game time functions


 
 
 

Comments


Featured Posts
Recent Posts
Archive
Search By Tags
Follow Us
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square

© 2015, Chris Devlieger

  • Facebook Clean
  • Twitter Clean
  • YouTube Clean
bottom of page