GPM

Game Package Manager (Draft)

What is in this document

In this document you will find more information on what GPM or Games Package Manager is, what is its purpose and how could you use it effectively.

  • First comes the section bout unique keywords used to describe GPM and its environment.

  • Explanation on what is GPM and its purpose.

  • What GPM offers through its set of commands.

Keywords used in this document

(*) means the definition is either incomplete or needs verification and anyone with more knowledge is free to edit the definition.

  • Project: a project is the foundation of GPM, it is a directory on the user's disk where dependencies can be added to form a modpack. The project can be composed only of dependencies, source code for a new mod or both.

  • Package: a package is what a project becomes once it is stored in the store. A package is an archive with its own folder architecture and metadata files

  • Dependency: a dependency is essentially a package that a project depends on.

  • Remote or a Store: is a server on the internet storing the Packages and exposes them to the users in an organised way.

  • Local package cache:*

What is Game Package Manager

Game Package Manager is a CLI tool that will enable:

  • Download of mod packages from stores.

  • Installation of mod packages from stores or locally to a game.

  • Uninstall mod packages.

  • Package mods.

  • Upload package mods for stores.

  • Required dependencies will be handled by GPM.

CLI

Command

Usage

Description

add

For downloading dependency from a repository or by providing a path locally.

remove

Removes locally installed dependency.

list

Lists available dependencies.

init

Initializes a project for creating a dependency.

start

Starts the currently active project's game with selected dependencies installed.

build

Builds a project with metadata into a package.

publish

Builds a project with metadata into a package then publishes to a store.

enable

Enables a locally installed dependency.

disable

Disables a currently enabled dependency locally.

remote list

Lists stores that are already installed.

remote add

Adds a store to remote list via specifying URL.

remote remove

Removes a previously installed store specified by URL.

search

Queries packages from added remotes.

cache list

Lists packages in the local package cache.

cache add

Download and add a package to the local package cache

cache remove

Deletes a package from the local package cache.

Metadata

  • TOML --> JSON.

  • License will have a SPDX Expression

  • Basic metadata should be made through CLI when triggered by build or publish.

  • Contains title and small description up to 250 chars.

  • Specified game listed in metadata?

Remotes

  • There will be a default source

  • Adding insecure remote connections could prove a security concern.

  • allowlists and denylists will be implemented.

  • Mods will be encrypted.

  • Identifiers or priority for stores to address duplicate mods across repositories.

Installation Strategies

  • VFS 3 Categories.

  • Unify

Nightly Releases

Todo

GUI

Todo