diff --git a/README.md b/README.md
index 897e391c8..1a76fa611 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
# Aetheria
-This repository is the home of Aetheria, an economy focused RTS MMO where you control the production, research, supply chains and actions of a corporation tasked with colonizing an alien galaxy. Control over your minions is indirect, like in Rimworld, and gameplay takes place over months as your production and tasks continue acting on the world even when you're offline.
+This repository is the home of Aetheria, an economy focused RTS/ARPG. In the ARPG mode you control a single ship, engaging in combat, mining, trade and participating in the narrative. In the RTS mode you control the production, research, supply chains and actions of a corporation tasked with colonizing an alien galaxy. Control over your minions is indirect, like in Rimworld, and gameplay takes place over months as your production and tasks continue acting on the world even when you're offline.
@@ -35,23 +35,25 @@ This repository is the home of Aetheria, an economy focused RTS MMO where you co
## Game Design
-The ARPG game design document is available [here](https://docs.google.com/document/d/1iULu1WsbuQoUM3c87XkGseb1P-8R5xlruoiyg03TsSE/edit?usp=sharing), while the RTS gameplay is documented [here](https://docs.google.com/document/d/1U3uGFqQboAiFJ_Y-nUOGpyixbXUHRbc5DiCuB59GM4w/edit?usp=sharing). There's also a document explaining how some of the shaders work [here](https://docs.google.com/document/d/1AFycvCtW6hA1jkKq1ZmYd3k6_uEWaaCqcZ4fYj4vU6A/edit?usp=sharing). The goal is to essentially create two games which both take place in the same persistent universe, allowing players with vastly different preferences to struggle together for the survival of mankind. Each instance of the game lasts until the inevitable destruction of the entire population at the hands of aliens, after which the universe resets. Each loop is designed to last up to a couple of months, during which the hostility of the aliens steadily increases until the players are unable to hold back the tide. As players gain proficiency with the systems, the length of the time loop may increase, allowing us to organically inject new content into the timeline.
+The ARPG game design document is available [here](https://docs.google.com/document/d/1iULu1WsbuQoUM3c87XkGseb1P-8R5xlruoiyg03TsSE/edit?usp=sharing), while the RTS gameplay is documented [here](https://docs.google.com/document/d/1U3uGFqQboAiFJ_Y-nUOGpyixbXUHRbc5DiCuB59GM4w/edit?usp=sharing). There's also a document explaining how some of the shaders work [here](https://docs.google.com/document/d/1AFycvCtW6hA1jkKq1ZmYd3k6_uEWaaCqcZ4fYj4vU6A/edit?usp=sharing).
+
+The eventual goal is to essentially create two games which both take place in the same persistent universe, allowing players with vastly different preferences to struggle together for the survival of mankind. Each instance of the game lasts until the inevitable destruction of the entire population at the hands of aliens, after which the universe resets. Each loop is designed to last up to a couple of months, during which the hostility of the aliens steadily increases until the players are unable to hold back the tide. As players gain proficiency with the systems, the length of the time loop may increase, allowing us to organically inject new content into the timeline.
## Previous Work
The concept for Aetheria goes back many years, during which I have steadily acquired my current skill with the primary objective of becoming competent enough to realize my vision. Previously I have built prototypes of the ARPG gameplay, [here's a video of the most recent one](https://www.youtube.com/watch?v=PNwVGtvefCg). While it included stations, AI opponents, multiple ships and a complex loadout system which simulates heat transfer between all of the ship's hardpoints with temperature affecting the performance of each item differently, the world was rather static and empty.
+As a result of lessons learned, we then focused on the economy system, and built a client-server architecture for the networked simulation of a persistent universe. We created an RTS client, allowing players to take the role of a corporation, where they can define roles for their population, gather resources, build infrastructure, research new technology and produce items in order to make as much money as possible.
+
## Current Work
-As a result of lessons learned, the current focus is on the economy system, and building a client-server architecture for the networked simulation of a persistent universe. The goal is to create an RTS client, allowing players to take the role of a corporation, where they can define roles for their population, gather resources, build infrastructure, research new technology and produce items in order to make as much money as possible.
-
-Once we have built a persistent universe with a dynamic economy, we will begin rebuilding the ARPG client allowing the player to take control of a single ship and engage in fast-paced combat, exploration, trading and narrative questing.
+At the moment we are focused on implementing and polishing the ARPG gameplay as a standalone title, first as a rogue-lite combat demo and then adding a story-driven campaign mode.
## Architecture
### Project Structure
-There are two solutions in this repository. One is a Unity project containing the desktop client for Aetheria, and the other is a .NET Core application intended to run on Linux cloud servers. There is some code shared between them, located at [Assets/Scripts/ServerShared](Assets/Scripts/ServerShared), defining a common protocol and data serialization format.
+There are two solutions in this repository. One is a Unity project containing the desktop client for Aetheria, and the other is a .NET Core application intended to run on Linux cloud servers. The bulk of the game's code is shared between them, located at [Assets/Scripts/ServerShared](Assets/Scripts/ServerShared), defining a common protocol, world simulation code and data serialization format.
### Third Party Libraries
@@ -65,7 +67,7 @@ The codebase makes heavy use of C#'s [Language Integrated Queries (LINQ)](https:
### Data Structures
-All of the state which is persisted to the database inherits from the DatabaseEntry class, which uses a GUID as each entry's primary key. Whenever a reference to a database entry must be held, it should be stored as a GUID and when needed, retrieved directly from the DatabaseCache held by the GameContext. References to Database Entries *should never be stored directly!* This is because the contents of entries can be updated in realtime by the database, causing changes to be pushed to the DatabaseCache and any previously existing DatabaseEntry instances will be outdated and invalid, potentially carrying stale data.
+All of the persistent state classes inherit from the DatabaseEntry class, which uses a GUID as each entry's primary key. Whenever a reference to a database entry must be held, it should be stored as a GUID and when needed, retrieved directly from the DatabaseCache held by the appropriate manager, usually ItemManager for references to ItemData. The ItemManager contains GetData helper methods for retrieving the ItemData for the various subclasses of ItemInstance.
#### Equipment
@@ -87,13 +89,13 @@ In order to make an item craftable in-game, that item needs to be associated wit
### Contributor Agreement
-By pushing to this repository or submitting a pull request, you are implicitly providing us (GameCult) an unconditional license giving us permission to relicense your work as we see fit. This means that your contribution will automatically be under the same license as this repository, but also grants us the right to release your contribution under a different license should we see fit. This agreement exists mostly because we have witnessed the difficulties some open source projects have had when they did not have such a contributor agreement in place.
+By pushing to this repository or submitting a pull request, you are implicitly providing us (GameCult) permission to relicense your work as we see fit. This means that your contribution will automatically be under the same license as this repository, but also grants us the right to release your contribution under a different license should we see fit. This agreement exists mostly because we have witnessed the difficulties some open source projects have had when they did not have such a contributor agreement in place.
### Getting the Files
In order to checkout the project, you need a git client (Github's zip download will not work!). You also need to have installed [Git LFS (Large File Storage)](https://git-lfs.github.com/). This is necessary because assets in gamedev projects can get rather large, and Git is essentially a text versioning system that does not by itself support that use case well. After installing LFS you'll need a Git client. I recommend [Github Desktop](https://desktop.github.com/), which has a nice simplified workflow and integrates with the site. For more advanced users, there's nothing wrong with using the command line or a more comprehensive client like [GitKraken](https://www.gitkraken.com/), but beginners beware that it's easy to shoot yourself in the foot that way.
-When you have synced with the repository, you can open the project using Unity. The project uses Unity 2018 LTS, and while it may work with newer or older versions, that cannot be guaranteed. You can open the project by opening the root of this repository either directly with the Unity Editor, or using [Unity Hub](https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe), which will also take care of downloading the correct version of the Editor.
+When you have synced with the repository, you can open the project using Unity. The project uses Unity 2020.2 at the moment, and while it may work with newer or older versions, that cannot be guaranteed. You can open the project by opening the root of this repository either directly with the Unity Editor, or using [Unity Hub](https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe), which will also take care of downloading the correct version of the Editor.
### Choosing a Task
@@ -115,11 +117,9 @@ You can unfold the categories of items in the list view to see what items exist.
### Testing Locally
-If midgard.gamecult.games is not currently up, you can always build and run the economy server yourself, and connect to it by typing localhost into the main menu. To start the game in this mode you open the "Start" scene and type "localhost" into the host field. You will still need to create an account.
+Testing the game entirely offline doesn't require running the economy server, but you still need to download the database contents. In the database list view, click the "Connect" button. Once the tools are finished syncing, which can take a while (there's a progress bar), you can click "Save" to create a local backup of the entire database. If you enter Play mode in the "ARPG" scene, the game will use that local copy instead of requiring a connection to the master server.
-Another way to test the game entirely offline doesn't require running the economy server, but you still need to download the database contents. Instead of connecting to the database with the "Connect" button, click "Connect All", which in addition to syncing item data will also sync galaxy data such as the sectors. Once the tools are finished syncing, which can take a while (you know it's done when the console has stopped logging "Received {table} entry"), you can click "Save" to create a local backup of the entire database. If you enter Play mode in the "Main" scene with the TestMode parameter set to true in the game manager, the game will use that local copy instead of requiring a connection to the master server.
-
-Note that this process needs to be repeated every time the data model changes or you wish to test the game with updated database contents.
+Note that this process needs to be repeated every time the data model changes or if you wish to test the game with updated database contents.
### Debug Console
@@ -127,30 +127,13 @@ Pressing the tilde key (`) while running the game allows you to access the conso
#### Commands
-##### spawn
+##### savezone
Creates a new entity under your control
-Prerequisites:
-
-- Sector is selected
-- Sector is populated (Sector tab is open)
-
Arguments:
-- Entity type: needs to be "ship", "station" or "turret"
-- Hull name (optional): selects the hull of the spawned entity by name
-- Gear List (optional): every additional argument specifies a Gear item to install
-
-##### newzone
-
-Replaces the current zone with a new one, randomizing the ID and contents
-
-Prerequisites:
-
-- Sector is selected
-
-Arguments: None
+- Filename: If the zone is saved as "Home", it will be automatically loaded on start
### Galaxy Editor
@@ -168,7 +151,7 @@ After generating stars, you can generate the links between them, which performs
## License
-The majority of this repository is under the Mozilla Public License and therefore available for anyone to use. This does not apply to any content found within any directory labeled "NIH", "Plugins", or any subdirectory thereof. Works in such directories are excluded from our license and subject to the copyright and licensing placed upon them by their creators.
+The majority of this repository is under the Mozilla Public License and therefore available for anyone to use.
## Contact Us