My hobby game engine.
Go to file
Natty 3082e88be9
Fixed SRClone font
2022-04-26 02:18:00 +02:00
.github/workflows New file perms 2022-04-19 01:31:52 +02:00
buildSrc Version bump 2022-04-18 12:54:28 +02:00
engine-core Undone Java source file perms 2022-04-19 22:44:18 +02:00
engine-demo Fixed SRClone font 2022-04-26 02:18:00 +02:00
engine-ext Undone Java source file perms 2022-04-19 22:44:18 +02:00
gradle/wrapper Fixed Gradle wrapper 2022-04-06 14:01:46 +02:00
libra@14c88cd8c4 Updated libra 2022-04-19 22:44:49 +02:00
.gitattributes SDK restructure, package reorganization, new ModLoader, new resource system 2022-04-06 11:04:32 +02:00
.gitignore SDK restructure, package reorganization, new ModLoader, new resource system 2022-04-06 11:04:32 +02:00
.gitmodules New file perms 2022-04-19 01:31:52 +02:00
LICENSE SDK restructure, package reorganization, new ModLoader, new resource system 2022-04-06 11:04:32 +02:00
NEXT_RELEASE_DRAFT.md Init method for PlutoApplication 2022-04-17 04:21:13 +02:00
README.md Updated README.md 2022-04-17 04:33:56 +02:00
UPDATE_NOTES.md Bitmap font renderer, bug fixes and cleanup 2022-04-19 22:39:16 +02:00
build.gradle.kts PlutoLib cleanup, module-info.java and array uniforms for PlutoShader 2022-04-13 02:28:26 +02:00
gradlew Fixed Gradle wrapper 2022-04-06 14:01:46 +02:00
gradlew.bat Fixed Gradle wrapper 2022-04-06 14:01:46 +02:00
settings.gradle.kts Bitmap font renderer, bug fixes and cleanup 2022-04-19 22:39:16 +02:00

README.md

plutoengine

Build Status Maven Version

My hobby game engine. This repository unifies all my previous Pluto repositories.

How to use Pluto

Quick start

Download the demo project open it in IntelliJ IDEA.

Gradle

repositories {
   mavenCentral()

   maven {
      name = "Vega"
      url = uri("https://vega.botdiril.com/")
   }
}


dependencies {
   implementation group: "org.plutoengine", name: "plutocore", version: "22.2.0.0-alpha.0"
}

or for Gradle Kotlin DSL

repositories {
   mavenCentral()
   
   maven {
      name = "Vega"
      url = uri("https://vega.botdiril.com/")
   }
}

dependencies {
   implementation("org.plutoengine", "plutocore", "22.2.0.0-alpha.0")
}

Versioning

All submodules share a version number for simplicity reasons.

Since version 20.2.0.0-alpha.0, PlutoEngine uses a combined version of semantic versioning and calendar versioning, the first number denotes the year.

Therefore, the version format is always YY.MAJOR.MINOR.PATCH-prerelease.

Only major and year version changes will bring breaking API changes, except for pre-release versions, which may introduce breaking changes at any time. Pre-release versions will never increment the minor or patch version numbers.

Usability status of submodules

Safe submodules

  • PlutoCore - Stable
  • PlutoFramebuffer - Stable
  • PlutoMesher - Stable
  • PlutoShader - Stable
  • PlutoTexture - Stable
  • PlutoSpriteSheet - Stable, some features are unfinished
  • PlutoDisplay - Stable, collision API nowhere near completion
  • PlutoUSS2 - Stable
  • PlutoLib - Mostly stable

Unstable submodules

  • PlutoGUI - Recently rewritten, the API is highly unstable
  • PlutoRuntime - Somewhat tentative, the module API has been rewritten and might contain bugs
  • PlutoAudio - Somewhat usable, unfinished

Current priorities

See NEXT_RELEASE_DRAFT.md for details.

To be fixed

[ Features or bugs that should be fixed ASAP ]

  • Implement gradient variation support for Libra fills
  • Improve code quality in PlutoGUI

Very high priority

[ Implemented in the current release. ]

  • Improve image loading capabilities, possibly rewrite PlutoLib#TPL

High priority

[ Implemented in the next release. ]

  • Finish PlutoAudio
    • Depends on the stage system
  • Expand upon the Color API
    • Color mixing and blending
    • Color transformation
    • High-performance serialization

Normal priority

[ Planned for an upcoming release. ]

  • The collision system for PlutoStatic

Low priority

[ Items not required immediately, planned to be implemented eventually. ]

  • Allow multiple running instances of Pluto
    • Alternatively, if this deems too difficult to implement, prohibit the creation of more than one instance per JVM to avoid issues
  • A networking API
  • Re-add support for external mod jars to the ModLoader
    • This feature requires a full rewrite and possibly a complete overhaul
    • Mods should have limited execution levels, for example restricted file access or disabled native library loading (this is probably not possible)