You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
copygirl 6b78cb2985 Refactor namespaces 11 months ago
.vscode Add ".NET Attach" launch config 12 months ago
docs Add README 11 months ago
src Refactor namespaces 11 months ago
.editorconfig Big refactor and Entity Inspector 1 year ago
.gitignore Initial commit 2 years ago
.gitmodules Add ImGui.NET fork as submodule 1 year ago
README.md Update README 11 months ago
gaemstone.sln Source Generators, step 1: Components 1 year ago

README.md

gæmstone Game Engine

.. is meant to (eventually) function as a foundation for ultra-moddable games with runtime inspection and modification features, that allow fast iteration in game development, basically while actively playing your games.

This is a custom game engine written from scratch in C#, using modern .NET, targeting cross-platform development and deployment. It's making heavy use of Entity Component System (ECS) design, made possible with the powerful and versatile ECS library Flecs, using the flecs-cs bindings on top of which lives gaemstone.ECS – our own "medium-level" wrapper.

The name gæmstone (also written "gaemstone") is supposed to be pronounced /ɡɛmstoʊn/ – like "gem" but with the G from "game". As we all know, fancy project names and their weird pronounciations (looking at you, Godot Engine) is of utmost importance.

Goals, aka. Future Features

Core features, some of which have yet to be written, include:

  • Incredibly modular, in part due to ECS design
  • Tools to modify entities, components and their relations in-game
  • Hot-reloading of assets and systems (which run game logic)
  • Safety will (hopefully) be achieved by compiling modules from source
  • Multiplayer support, including co-op development
  • Module for creating "bloxel" (Minecraft-like) games

Showcase

Screenshot of "Immersion" from 2023-05-16.
Screenshot of the "Immersion" test project, which is included in this repository, showing basic functionality and the built-in but work-in-progress entity inspector and input debug window.

Motivation

A lot of time nowadays is spent either re-inventing the wheel (often due to copyright), or waiting for changes you've made to be ready for testing or playing (compiling, pushing changes to servers and players, restarting, reconnecting, ...), and gæmstone is supposed to provide an environment where this is not a problem.

With this engine and eventually the games I plan to create, I'm hoping to create a community in which sharing and remixing work – both assets and code – is the norm. No more saying goodbye to outdated mods. No more incompatibilities because an author didn't decide to support something. Need to adjust anything for your version of the game, or your server? Go ahead.

As such, I have not yet decided whether to pick a permissible license like MIT, or a copyleft one like GPL, to hopefully encourage this kind of sharing. However, I could leave that for my games. Feel free to share your thoughts, since as of now I'm the only consumer of the engine.