Coder Social home page Coder Social logo

ecs's People

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ecs's Issues

2D Physics

Roll our own. Start with gravity and jumping.

Entity

Create an abstract class called Entity that has a unique ID as a property and a dictionary of components (they will be looked up by name frequently so use their name as the key).

Component

Create an abstract class called Component that just holds arbitrary data. Ensure all components have a property of component name. We might want to introduce some type of tagging system for components as well.

World

Create a World class that allows you to create Entities or accepts instantiated Entities. It should also allow you to add a list of systems.

On update the World class should loop through each system and pass the list of entities to it.
On draw the World class should loop through each system and pass the list of entities to it.

Scene Management

  • Write SceneManager class for managing Scenes
  • Write Scene class representing what functionality and/or properties for classes to inherit
  • Write Scene classes that inherit from Scene and add Scene specific logic/rendering
  • Demonstrate text rendering to the screen from a scene using Monogame's Content Pipeline Tool
  • Provide some type of barebones interactivity for switching between scenes
  • Create a GameServices singleton to hold a GameServiceContainer which holds GameServices that need to be passed around such as ContentManager and GraphicsDevice

Tiled Format

Going to use TiledSharp. May need to write an adapter for Monogame

System

Create an abstract class called System that accepts a list of entities on update and draw. It will loop through the entities to find entities with components relevant to the system. Based on the components data it will execute some type of logic. Example is a render system that draws type Entity to the screen if it has the Appearance, Position, Physical components and the Entity IsActive.

Tile Engine

TileEngine - Determines the tile width and height (32px, 64px, etc), can take a Vector2D and determine what cell it is in, manages an ordered collection of TileMaps, each TileMap represents a layer..
Tile - Texture information, properties such as collidable
TileMap - a 2D array of Tiles
Camera - moves with the player or when the player gets to the edge of the screen, represents the visible viewport within a tilemap that extends beyond the viewport.

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.