Code Monkey home page Code Monkey logo

reworks-org / galaxy Goto Github PK

View Code? Open in Web Editor NEW
75.0 7.0 8.0 3.48 GB

Real-Time C++20 Game/App Engine. Built on data-driven design principles and agile software engineering.

Home Page: https://reworks-org.github.io/galaxy/

License: Apache License 2.0

C 86.13% C++ 6.61% Batchfile 0.01% Lua 0.01% CSS 0.01% HTML 7.23% Python 0.03% Shell 0.01%
cpp opengl json lua tile openal physics 2d modern fast logging renderer editor continous integration documentation entity-component-system game-development game-engine gamedev

galaxy's Introduction

galaxy

Real-Time C++23 Game/App Engine. Built on data-driven design principles and agile software engineering.

galaxy

Building

Note that only 64bit is supported.

Windows:

Visual Studio 2022

Major Components:

Desktop development with C++
Game development with C++

Minor Components:

Windows Universal CRT SDK
Windows SDK 10.0.20348.0
Windows Universal C Runtime

Building Instructions:

git clone --recursive https://github.com/DomRe/galaxy.git galaxy
git submodule update --init --recursive
Open galaxy.sln and go Build -> Rebuild Solution, in either Debug or Release mode.

Linux:

Only Ubuntu is supported.

CMake v3.24

Ubuntu 22.04.3 LTS OR WSL2 - Ubuntu

sudo apt update && sudo apt upgrade -y
sudo apt install git curl cmake llvm clang build-essential libfreetype-dev libz-dev pkg-config mesa-utils libglu1-mesa-dev mesa-common-dev

MacOS:

No.

Scripts:

There are additional helper scripts located in the scripts folder.

In order to run these, you require MSYS2 or WSL2.

Documentation

See online documentation.

Features

- (A)sync Timers
- Entity Component System
- Config Loader
- Prefabs
- OpenGL 4.6 w/ Extensions Renderer (i.e. Bindless Textures).
- Error handling.
- Flexible logging.
- Event Handling.
- Virtual File System.
- File Dialogs.
- Input Handling, both callback and poll.
- LDTK mapping support.
- Various algorithms and math stuff.
- (De)compression support.
- Platform abstraction.
- Resource and asset handling.
- Unity style scene Management.
- Lua and JSON scripting support.
- State management for things like animations and movement.
- ImGUI + Nuklear for UI.
- Lua bindings for Nuklear UI.
- Supercluster editor to be used in conjunction with coding. Not standalone.

Contributing / Feedback / Issues

Feel free to open an issue for feedback, bug reports, ehancements, issues, etc, and pull requests for contributions. (Don't forget to add yourself to the credits section below.)

Credits

galaxy's People

Contributors

reworks avatar reworks-org avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

galaxy's Issues

redshift: Notes for possible physics engine.

packaged task -> divide out and parallel check multiple "collisions" or entitys (NOT calcs...)

i.e. every collision is checked on a thread, while the main thread waits for results.
this is faster than doing it all on one thread.
i.e. should take 1/10 the time instead if u have 10 collisons...

rather than run in parallel -> distribute calculations across CPU.

Rewrite ThreadPool to use C++20 Coroutines.

galaxy: ECS implementation.

Entitys ID used as insertion for std::vector so [entity] = components (but how to get which one?).
components stored in groupings of type, assigned unique id, then paired with their entity.
stored in std::vector

so:
std::vector with element being = entity.
packed components = std::vector?

So the element to be inserted is the type of component, then an array of those components of that type.
the key is the type of component, the value is components of the same type, which is in a data structure, paired with an entity.
get all components belonging to the types and only keep entities that match all components and destroy
the others that are not needed

		if entity is in type array a b and c etc]

		use a counter to see how many occurancers of an entity there shouild be

		https://www.google.com/search?client=firefox-b-d&ei=qvUuXYuwK6zZz7sP9tG50AI&q=C%2B%2B+checking+for+occurances+of+an+entity+in+a+set+of+arrays&oq=C%2B%2B+checking+for+occurances+of+an+entity+in+a+set+of+arrays&gs_l=psy-ab.3..33i10i21.2051.5564..5758...0.0..0.293.4290.2-18......0....1..gws-wiz.......0i71j33i10i160j33i22i29i30j33i10.7KmPP2JGx6Y
		https://www.google.com/search?client=firefox-b-d&q=check+if+an+integer+is+in+a+variable+amount+of+std%3A%3Avectors

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.