Giter Club home page Giter Club logo

mobagen's Introduction

MoBaGEn

MoBaGEn - Module Based Game Engine - Educational tool to teach game programming concepts.

Join us: say thanks Discord

Metrics: Codacy Badge codecov GitHub language count GitHub search hit counter Lines of code GitHub all releases GitHub contributors

CI: Windows Web Linux OSX Release pages

Philosophy

  1. Webassembly is the future. The initial plan is to create a Game Editor and Engine to run on browsers or wrap it in apps such as electron, wasm3 or any other;
  2. The engine core should be written in C++;
  3. Scripts in JS, TS or WASM, or any language via specialized module;
  4. The core should be as small as possible and the modules should be as swappable as possible;
  5. Modules are the way to customize and extend the engine. We should create modules to do specific tasks and glue them all together. Ex.: rendering module, physics module, audio module, etc;
  6. A build is simply the combination of: a engine player, packed with the modules used, plugins and the assets;
  7. The engine should be able to run on any platform, but the editor should be web-first;
  8. The company will receive funds from the community to pay the developers and the servers to host the editor. The core will be open source and free to use;
  9. The company will offer subscription model to have access to version control and remote build;
  10. The company will also offer a marketplace to sell assets, plugins and modules.

Try online

Before checking it online, some demos are intended to be implemented by you. So most of the demos would look like empty;

Want to showcase your work here? Create a pull request.

Do you like it?

Motivation

  • Act as a central point to teach basic game dev concepts;
  • Build a regional community around game dev to bring attention to our people;
  • Have full control of all the processes from code to the delivery;

Follow us!

Did you like this project? Follow me on social medias

Why C++

  • Has many solid, well maintained, efficient and stable libs;
  • It speaks straight to hardware, you can do whatever you want;
  • It is portable.

Why CMAKE

It is the best all-around solution to:

  • Create projects cross-platform
  • Configure variables and flags
  • Build complex projects in easy way
  • Most relevant libs supports it

Why CPM

  • Best package manager to import and use third party libs from source code with low maintenance code.

Architecture

Restrictions

  • Don't recreate all game engine stuff, glue them all. "Life is too short to build a game engine from scratch";
  • If a library do not easily compile on all supported platforms, we won't use it.
  • Use consolidated libs and do not reinvent the wheel (only if is strictly needed)
  • Start small and make small steps towards the goal.
  • Always make everything lib interaction swappable as good as we can.
  • Never use any lib on the core code. The core should interact with the libs through a glue code. Ex.: core lib -> physics module -> bullet physics engine
  • Target the latest C++ version that is portable to our targets(iOS, Android, Windows, Linux, OSX, WEB). compiler support table.
  • CI should be able to build to all targets at once.

Essential Modules

  • Core
  • Job/Task Module
  • Resources Manager

Optional modules

  • Graphics
    • 2D - Needs to not rely on SDL_Renderer anymore
    • 3D
  • Physics
  • Sound
  • Networking
  • Scripting
  • GUI
    • ImGUI via 2D renderer - needs to become agnostic
  • Input
  • Game Components
  • Scene
  • Logger

Todo List

  • Image Editor Application
    • Design Editor similar to Slicer3D
    • DICOM loader
    • 3 viewports synced with exam data
  • Game Editor Applications
    • Compilation of scripts
    • Execution of scripts within their respective contexts
    • Manipulation of variables within script contexts
    • Support importing and exporting compiled scripts

Star History Chart

Anurag's GitHub stats

mobagen's People

Contributors

tolstenko avatar semantic-release-bot avatar dillondrum70 avatar dnekos avatar omurex avatar winterequinoxalpha avatar tylersloss avatar

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.