Skip to content
This repository has been archived by the owner on Jan 28, 2020. It is now read-only.

Project Phoenix

Toby plowy (Toby109tt) edited this page Jun 22, 2019 · 2 revisions

Preface

This document outlines the basic description and mission statement for project phoenix as well as what components will be made. Links to product spec documents are included with each component.

Feel free to request comment access to make suggestions throughout these documents, they are all WIP and we need your help to know what information is missing.

Description

We aim to create a voxel game engine that can be used to create content, such as mods and games using the Lua scripting language. Games are coded entirely in Lua using an API for adding content while the engine handles the process of running the resulting Lua code as a game. Our first project that will be developed alongside the engine is a voxel engine.

Components

The first project is the core engine (Quartz Engine), this contains all non-voxel (/non-game specific) code and will be designed to be reusable for creating additional games with a similar goal of content being added through scripts such as a first-person shooter. This provides rendering, content loading, executing plugins and similar modules through our Lua API, networking, and more.

The second project is a set of applications that make up what the user will interface with. This is a client, server, and a launcher. These applications will compile separately but share a common code base to reduce redundancy in code.

The client is the code one will need to run a game, this is the ability to render and display blocks as well as capturing user input. Essentially this is the front end.

The server handles a world, this is the ability to generate maps and record player data as well as saves. The server runs locally for single-player instead of having a dedicated function in the client.

Finally, the launcher, this piece of the triad brings the two together as well as provides the UI for the player to interface with. It will manage what game you want to play, what mods you want to install, texture packs, saves, and connecting to servers. On a technical side, the launcher will launch a server instance then launch a client instance connected to that server for single player. Similarly, for multiplayer, the launcher launches the client pointed at the multiplayer server. Local multiplayer should also be possible launching and running a server from the launcher allowing other clients to connect.

Glossary

Game

A game will be a collection of lua scripts, config files, textures, and sounds that the engine runs to create a game. The API draft is located here.

Mod

A mod is a collection of lua scripts, config files, textures, and/or sounds that add a new feature to a game.

Resource Pack

A resource pack is a collection of various types of audio and visual media designed to replace those that are in a game or mod. Resources are textures, sounds, shaders, fx, models, and font files.

World Gen Plugin

A world gen plugin is a file that contains the data necessary to generate a world It controls the shape of the terrain, like the height and depth of the terrain, how common caves are and if there are any in the first place, it also controls biome distribution.

Clone this wiki locally