Giter Club home page Giter Club logo

miniengine's Introduction

MiniEngine

A full-fledged cross-platform 2D Game Engine.

Getting Started

  1. Reference the Project/Assembly.
  2. Create an initializer to load initial and additional game assets.
    GameEngine.AddInitializer(() =>
    {
        // do stuff
    
        return false; // return true if error occured in initializer.
    });
  3. Start the engine by calling GameEngine.Run().
    GameEngine.AddInitializer(() =>
    {
        // do stuff
    
        return false; // return true if error occured in initializer.
    });
    GameEngine.Run();

Using game assets

MiniEngine supports the use of a packed asset file that acts as a read-only virtual file system.

  1. Build and install the MiniEngine.Tools.CLI project and install as a dotnet tool.
  2. Create a .indexfile file in your project directory. Files and folders specified in this file are set to be packed by the CLI tool.
  3. Run metool pack on the project directory. The tool will produce a assets.mea file that contains your game assets.
  4. Place and include this file on your project's output directory.
  5. Reference a file by calling Resources.GetResource(string path). You may also opt for implicit conversion via strings when calling functions that uses MemoryResource.

Progress

Current State

Runnable with basic functionality included.

Roadmap

  • Create Basic Unit Structures
    • Size
    • Vector2
    • Color
  • Create BaseEngine Structure
    • Create engine init and cleanup
    • Create engine loop
  • Create Entity Component System
    • Create System Service (Register & Execute)
      • Support user-defined systems
    • Add wiring via reflection
    • Implement Basic Components and Systems
      • Add Transform and TransformSystem
      • Add Motion and MotionSystem
      • Add Sprite and DrawSystem
    • Implement Complex Components and Systems
      • Add PhysicsBehavior and PhysicsSystem
      • Add Script and ScriptSystem
      • Design a scripting API
  • Create Windowing System
    • Implement window creation and respect engine configuration
    • Add additional window configuration methods to be ran at runtime
  • Create Resource Manager
    • Create packed file format
      • Create index format
    • Create loader to load resources into memory
    • Create texture cache
    • Create font loader
  • Create Graphics Abstraction Layer
    • Add Primitive Draw Functions
      • Rectangle
      • Ellipse
      • Cicle
      • Pixel
      • Line
      • Curved Line
    • Add Sprite Draw Functions
      • Draw
      • Draw Spliced
  • Create Documentation
  • Create Example Projects
  • Publish to NuGet

miniengine's People

Contributors

xapier14 avatar

Stargazers

 avatar

Watchers

 avatar

Forkers

hengle

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.