aod6060 / dsge

This is a simple 2D engine for my projects.
MIT License
2 stars 0 forks source link

Scene System #4

Open aod6060 opened 1 month ago

aod6060 commented 1 month ago

This system will be the main system that the user of this software will be interactive with. It this system will be use to build up the Level, Map, or what I'm going to use is scene. Everything scene has a number of object called entities. These entities can have a number of prebuilt components that is a part of the engine and/or have a number of custom Behaviors which are created by the user programming in a simple scripting language aka Lua 5.4. In contract to an engine like Unity and Godot the Scene in my engine will have additional objects because I want the entites to be specifically used for creating game objects and not used in 1) Background/Foregrounds 2) Level Creation

The engine I'm creating is kind of taking the good stuff from RPG Maker VX and Unity 5 and smashing them together and making a coherent engine with some costs.

  1. Its not a general scene manager because if it was then it would have only entites or nodes
  2. The additions to the scene also means its not a general scene graph.

However, the advantages out way to disadvantages because This weird amalgamation of a scene graph will allow the creation of Background, Foreground, Tilemapping, and ObjectMapping(Basically tiles but its props). As well as dynamic entities. I want a system that is specifically designed to create Retro Style video game after all and the custom scene graph here will reflect it. I'll get more into once I get this into creating this system and I have a good design fore it.

aod6060 commented 1 month ago

Scene is basically the level or map object of the dsge engine. It will contain several different types of information that is need to make up a scene.

  1. Background Layers
  2. Foreground Layers
  3. Tilemap [background and foreground]
  4. Objectmap [background and foreground]
  5. Entities
  6. HUD Layer
  7. Misc GUI Layer (Menus and what not)

All of these components will make up what a scene is in the context of DSGE.

aod6060 commented 1 month ago

Background Layers. These will be full screen images that can be parallax scrolled with the camera layer. Here is a good explanation of parallax scrolling from Wikipedia article. In the eventual editor that I'll be working on it will be configurable.

aod6060 commented 1 month ago

Foreground Layer. This is similar to the background layer were it will be parallax scrolled. However it will sit in front of everything with the exception of the HUB Layer and Misc GUI Layer.

aod6060 commented 1 month ago

Tilemap are little textures that make a scene. Here is an example of a tilemap Tilemap Example The image is from a program called Tiled which an application that is optimized for dealing with tiled maps. How this will work in the engine is that it will load these images from an atlast texture that is 512x512 which is known as a Tileset. Here is an example of a Tileset. Tileset Example Now the cool idea I have for Tileset is that they will be stored into a Texture2DArray so this means I can have access to every tileset in the game to make some very interesting variation. Texture2DArrays allows for the use of xyz for texCoords instance of just xy. The z value is the kicker here because how a Texture2DArray works you can layer textures of the same is in an array like fasion so I can hyperthetically have over 1024 tilesets for one scene which is pretty cool. These reason why I'm choosing 512x512 is that it gives me room for a variety of different tiles and tile transitions. Down the line I will also what someway to animate tiles like for example water animation.

Now in my engine I want the ability for tilesets to be in the background aka behind entities or in front of entities so there will be two layers here. As for the size of the a tilemap per scene I'll start with 128x128. I'm also considering adding in the ability to loop the scene as well.

aod6060 commented 1 month ago

Object maps will be very similary to Tilemaps, but with props instead.

aod6060 commented 1 month ago

Entities will be a very complex topic so I'll be moving them to a separate issue for now. But yeah entities are the main objects of that will make a scene dynamic. These could be.

  1. Players Avitar
  2. Door
  3. Enemy
  4. Boss Just whatever you can think up. Unlike RPG Maker x (x is any version) which has a concept of an Event an entity will be composed of components and behaviors which I'll describe in its own issue which is here (Entity System).
aod6060 commented 1 month ago

The HUD layer is basically a layer where you can places information about the game.

Here is an example of a hub from The Legend of Zelda: Link to the Past Link to the Past If you look at the top of the image you'll see magic meater the amount of rupies that link has, his live bar, how many bombs and arrows he has, etc. Basically the hub layer is an information layer that is represented graphically. I might consider combining both the Misc GUI layer and the HUB together because to function very similarly. This issue can be viewed here HUB and GUI System

aod6060 commented 1 month ago

Misc GUI layer is basically allows for both visual information but its intractable by the player via either the keyboard or mouse (eventually the gamepads as well). It function similar the the HUD layer so I'll most likely add it later. Heck, I'll most likely add this to its own issue because it almost as complicated as entities. This issue can be viewed here HUB and GUI System