45 lines
3.1 KiB
Markdown
45 lines
3.1 KiB
Markdown
---
|
|
sidebar_position: 0
|
|
title: Welcome
|
|
---
|
|
|
|
# sos!engine documentation
|
|
Welcome to the documentation for the StarOpenSource Engine!
|
|
<!-- StarOpenSource Fly verification links -->
|
|
<link href="https://fly.staropensource.de/@staropensource" rel="me"/>
|
|
<link href="https://fly.staropensource.de/@soscore" rel="me"/>
|
|
<link href="https://fly.staropensource.de/@sosengine" rel="me"/>
|
|
<!-- StarOpenSource Fly verification links -->
|
|
|
|
## What is it?
|
|
The StarOpenSource Engine (or **sos!engine** for short) is a modular, extensible and easy to use Java game and application engine. \
|
|
It is responsible for the logging infrastructure, displaying stuff to a monitor, talking with graphics cards, playing audio, displaying UIs and much more.
|
|
|
|
## Why another one?
|
|
Yeah, it's true that there are many game engines and frameworks out there that intend to ease development of applications and games.
|
|
I ([JeremyStarTM](https://git.staropensource.de/JeremyStarTM)) however have never seen an engine or framework that can be extended easily.
|
|
And I don't mean what you make within the bounds of the engine or framework, no, I mean the engine/framework itself.
|
|
|
|
## Architecture of the engine
|
|
The engine consists of the core engine (`base` dependency in your project) and various subsystems (`slf4j-compat`, `graphics`, etc.). \
|
|
\
|
|
The job of the base engine is to provide minimal classes and interfaces needed for an application.
|
|
It contains among other things a default logger implementation, useful methods, event system and a placeholder system. \
|
|
\
|
|
Subsystems on the other hand usually handle complex tasks. They provide abstractions for libraries and operating system calls. \
|
|
"But why are there so many of them?" you might ask. Good question! Subsystems are intended to [do one thing and do it well](https://en.wikipedia.org/wiki/Unix_philosophy).
|
|
|
|
## Available official subsystems
|
|
Besides the `base` engine, there is one stable subsystem, two experimental subsystems and one stub subsystem.
|
|
### Stable
|
|
- [`ansi`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/ansi): Provides an ANSI logging implementation and a ShortcodeParserSkeleton implementation
|
|
- [`slf4j-compat`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/slf4j-compat): Provides [SLF4J](https://slf4j.org/) compatibility logger that redirects all log calls to the engine.
|
|
### Experimental
|
|
- [`graphics`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/graphics): Provides interfaces and classes meant to be extended by Graphics APIs.
|
|
- [`graphics-glfw`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/graphics/glfw): Provides common GLFW code, meant to be used and extended by Graphics APIs using GLFW.
|
|
- [`graphics-opengl`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/graphics/opengl): Provides the OpenGL Graphics API.
|
|
### Stub
|
|
- [`graphics-vulkan`](https://git.staropensource.de/StarOpenSource/Engine/src/branch/develop/graphics/vulkan): Provides the Vulkan Graphics API. 100% unfinished, planned in the future.
|
|
|
|
## API documentation
|
|
To read the engine API documentation, visit [jd.engine.staropensource.de](https://jd.engine.staropensource.de).
|