DEVELOPMENT ROADMAP
Below are lists of all current development tasks and ideas for Mankind Reborn. While this may not be your traditional roadmap, we feel exposing the raw information to our community, directly from the Dev Team, will provide the most accurate, up-to-date information as items are created, implemented, thought of, or actively being worked on.
To view items on each list, you can toggle the list to open and close by clicking on the white arrow next to each heading.
Pre-Alpha Board

Pre-Alpha Board
For ongoing tasks: https://trello.com/b/hqrLab9Z/pre-alpha-board
Implants

Usable implants
Implants that can be activated, which drain bioenergy.

"Passive" implants
Implants that don't take equipment slots or drain bioenergy, these last for x amount of deaths before having to slot new ones.
Faction Perks and Exclusives

Faction Perks

Faction Exclusives
Character Customization Overhaul

Wearable system
Instead of placing the mesh components in the characters, we'll spawn visualization actors that will be attached to the character when equipping the weapon/equipment. This will allow more flexibility and customization with items, such as weapon attachments, etc.

Underlying Animation System
This system will provide the foundation for the emote system, by implementing an easy to use animation interface on which the emote system can safely play animations on the character (Think of fornite's emotes). It will mainly just use a function that allows an anim montage to be played alongside other parameters, such as not being able to move before montage is completed, allow movement, etc, can just pack all that into a struct. The anim will play on the client and then replicate to others using a multicast.

Emote System
The emote system will allow linking emote commands to anim montages, could possibly have Start and End anims, or maybe let the montage sections handle this. The players will have a list of emotes, similar to pmod licenses, by using a struct to define all data. All emotes will use /commands such as /dance, /sit, but they'll also work off a radial menu to make them easier to use.
Crime System

Prison system

Stun weapons

Drug Lab
- Drug Labs https://gyazo.com/9deb0c26b18453ad986c3e0267ff33df
Level Design

Union City - Industrial

Cliea

Ceres
Prison/Industrial World.
Don't forget to do a pass on the map and fix up any issues and also setup level streaming
Ceres is pretty close to a first pass, need to split up the level properly and setup streaming volumes then bake lights
Most of the level layout is already present, currently working on the airlock and external area of the level.

Union City - Downtown
Cloning System Overhaul

Implement cloning system similar to fom
Player loads into cloning and has to wait x seconds while his clone heals entirely, display progress bar and keep track of recent deaths and increase timer per death, allow player to buyout timer with UC Cloning status reference: https://gyazo.com/51ed01dbdd6583493dbe86c36f9f8929

Implement clone "lives"
Let's experiment with this, implement clones that the player can purchase, and will deplete with deaths, each clone will cost 200 UC, if it reaches 0 and the player has money, it will buy a new clone automatically, else if there's no UC left and 0 clones, the player will be permakilled (prepare cloud code to automate this and safely clean his data)

Implement different levels of clone insurance
Player will be able to purchase different levels of insurance that will protect the player's items on death, some examples: 1. Lock the player loot for 1 minute, hackable 2. Lock the player loot for 5 minutes, hackable 3. Lock the player loot for 10 minutes, hackable 4. Lock the player loot for 5 minutes, non-hackable 5. Lock the player loot for 10 minutes, non-hackable Could possibly explore with more levels of insurance, protecting armor, inventory, weapons, etc..
Economy

Trade system

Add recycler/scrapper terminal
UI Reference: https://gyazo.com/e61ad3c70a5709817dd9dadc001af7ee Scrapper will break down production materials/produced items into their item requirements, it will give out a random amount and depending on how much requirements it has it will pick randomly between them. The scrapper will have a list of all PMODs and when the player places the item, it will search through the list and once it matches it's PMOD, it will spawn the item and gather it's requirements, then it will calculate how much it will give out depending on the item's durability/decay (if it's a produced item). The price will be calculated from the base production cost.

Transfer/Temporary Storage
Players will have 2 new storages to complement their regular storage. Transfer Storage: This just holds pointers to the actual storage, items here will be "tagged" for transfer, once the player initiates a transfer, all items here will be moved to the destination. Temporary Storage: This is where players receive items transferred to them or rewards from contracts that couldn't make it to the regular storage and/or other sources such as market purchases, etc. Players can only retrieve items from this container and they'll auto delete after time (Container will poll on the server every min to see which items need to be deleted) Use GS messaging system for this, if the player is online and on the world where the transfer was sent, spawn the items and place em on the storage, else just add them to the storage data in GS.
GS messaging done, if the receiving player is online and on the transfer location, it will spawn the items into his temporary storage and display a message on the chat about the transfer. All that is needed now is to wrap up the buyback feature, which should be the same transfer cost calculation to move the item back to storage if it has expired
Finished the transfer stuff, it now properly transfers items between servers and handles the cleanup post-transfer, need to test this heavily as I'm sure there will be broken stuff during a playtest. Now just need to handle the GS messaging so if the player that's receiving the transfer is online, it will send him a message, which will then spawn the items on his temporary storage. Also need to wrap up the taxes on the storage manager after a transfer.
Transfer calculation almost done, needs tax and item counts, after that it should be good to go, then need to wrap up the UI portion and backend
All item container stuff related to transfer storage is wrapped up, just need to do the UI and backend stuff, lots of tweaking was done to the container system to support this, need to be wary of unwanted behavior during testing,
Need to work on this as it's an important aspect of ecoers, they need to be able to transfer their items between different worlds

Storage upgrade
Should be able to purchase more storage space, needs to get saved on the storage GS data and also update realtime in-game. Will use the new financials component to store the upgrade details (upgrade amount, purchase timestamp and expiring timestamp). There will be a 1min looping timer in the character financials that handles licenses and storage upgrades, upon expiring and if in the same world, reduce the amount of available storage space by the UpgradeAmount. Look for FoM functionality and UI references. https://gyazo.com/f9462e9b719b59158fb929d30b10a4a5 The upgrades should be saved individually on the storage data, the timestamp will be included and they'll expire in 1 in-game month (Around 7.5 IRL days), each purchase will expire individually, save similar to production licenses timestamps. Based on FOTD's prices, 500 additional spaces cost 4000 UC and it gets multiplied per each 500, so 1000 would be 8000 UC
Work on storage upgrade first, get it out of the way before doing transfers

Manager system refactoring
Reworking all manager classes to have them prepped up for factional income.
different taxes depending on faction can wait till factional content
Re-did the entire tax/profits/save/load system on all managers, now it needs another tax refactoring to add different taxes depending on factional relations (friendly, enemy, neutral)

Add a production limit, similar to how the mining one works

Implement Production Licensing
Production Licenses will be saved in MRPlayerState and handled under PlayerStatsPayload for backend/persistence stuff.
First pass of the licensing system has been implemented, need to refine some things related to the production process & widget to wrap this up
Implement multiple recipes under a PMOD (base production cost will be calculated from the cheapest recipe). So it will calculate all recipes, store the result and then compare them and assign the lowest amount.

Implement a transaction messaging template
Instead of just using the same messages when transferring UC, have templates so each condition has a different message, "You traded 2000 UC", "You bought x items for 1500 UC"
Actually reworked the whole add UC function and built it into a proper transaction system that's quite customizable and allows logging (so we can save the log to the player's data, possibly up to 100 transactions)

Revise how we're using the PMOD data tables
Go over it and make sure if it makes sense to keep it how it is now, double check the calculation price as well
Reworked the way we're defining PMOD recipes, now we bunch up recipes into data tables of the same type, for example: - Production Materials - Armor - Implants - Clothing - Guns - Melee - Throwables - Psionics - Hacking Tools - Consumables - Ammo Alongside the PMOD data table rework, PMOD items have the data table pointer and an ID to the row name, which it will populate the recipe details upon loading the item.
Navigation System

Navigation system like in Neocron
Reference: https://forums.unrealengine.com/development-discussion/c-gameplay-programming/1703390-creating-splines-from-navigation-paths
New Backend Implementation

Replace Gamesparks with Frontier backend
Territories

Influence Generators

Territory Controller

Territory final battles
EVE reference: https://wiki.eveuniversity.org/Sovereignty

Territory income
Need to refactor and add income to all manager classes, the fundamentals (profits & tax) are already included in the base class. Every 24 IG hours each manager will pay its profits to the owning faction and the world/territory owner will take a % cut out of that. Need to refactor manager costs to include base fees alongside the taxes and also not wipe most of the cost, should only lose around 10%-20% but to upkeep fees.
Hacking Revision

Current hacking system revision
Go over the hacking system's code, fix redundancies and improve it further. Add events that fire off depending on the hack state that affects the world (alarms, lights, etc). Maybe add difficulties? 4 digits = Low 6 digits = Medium 8 digits = Hard It would require overhauling how the widget is set up, but it's doable.
Contracts Overhaul

Contract system overhaul
Need to change the majority of this, make it more data driven and functional, also need to implement daily contracts that print money Contract Templates: https://docs.google.com/document/d/1iJyTH9RvT_H5DF7KFX9BmQuol8J2KsW5_ug3dLcstFs/edit?usp=sharing Star Citizen References: https://gyazo.com/a2dbb26858f4cb44fde5253c0f39921a https://gyazo.com/09bd08b47e8d68b71102a3ccc17b7cb3 https://gyazo.com/d259c61d2752267c61980f1f182bc325 https://gyazo.com/346ab1cfe41ba239e3fd78e8fa4d60e1
Switched the contract Templates and Objectives to GameplayTags as this will be a far more efficient and easier method to use

Re-implement old contract system for income
Let's keep the current contract system to have a way of earning income, add a few more contracts as well, remove the visit location ones and just use trash bag collecting

Finish adding all possible contracts to the data table
Event Messaging Overhaul

Implement more event messages
Need to go over a lot of in-game actions and implement event/log messages to them, such as not having ammo, using a public container that's being used, pretty much any action that would require giving the player feedback.
Could do a quick pass on this as it's just copy/pasting the event message template
Server Essentials

Replication Graph
This should greatly improve the server's performance as it will split the world into grids, essentially spatial partitioning, but I still need to do a lot of research on how this works, there's already some code written but need to go over it and also implement the visualizer/debugger to see what is going on
Did a final pass on the rep graph to optimize it even further
Replication graph implementation finished, this is likely going to cause issues in a packaged build so need to pay attention to this asap
Need to fix up some bugs introduced by the rep graph
Successfully managed to implement the replication graph, still pretty rough but so far it's heavily improved the networking, although I had to increase the server tick rate to 30hz as 10hz made the movement too laggy, still need to pay close attention to that, especially on long server uptimes. This is essentially spatial partitioning and also allows me to set very specific rules to replicate actors, which will reduce the networking bandwidth as actors will be considered for replication only when they meet those specific conditions.

Second authentication when entering a server to grab account role
0 = Banned player 1 = FACC player 2 = PACC player 3 = GM 4 = Dev 5 = God Instead of caching the role we'd want to grab it from the server when entering a game server to ensure it's updated and not spoofed.

Implemented a server-side MOTD
Can now set motd's on gamesparks and have it update in-game on every login

Refactored GS playerdata schema to include financials data and updated all accounts
Immediate Technical Priorities

Refactor the save/loading to only occur on the server
This will remove the issues of players outside the US region sending calls to GS and will likely reduce the chances of players losing their data.
Should be done with this, going over the entire loop and making sure it works as intended and cleaning up the code a bit.
Making significant progress on this, all save/load code has been refactored, massive cleanups, using a more streamlined approach to the gamesparks code, running entirely on the server and even faster request/responses. Just need to fix a few issues with the world saving/loading and this should be good to go.
Already outlined the flow in a whiteboard, just need to refactor the code and we should be good to go, very important to not make any GS calls on the client, except the initial authentication, all GS calls will occur only on the server, which will fix the issue with non-US players, also need to remove local caching after this.

Implement a method to prevent characters from staying in-game during a crash or unauthorized logouts.
Once a player quits the game, the GM logout should check if it was a valid logout, if not, it will start a timer for 10 secs to destroy the pawn & handle save game stuff. If a player logs in during those 10 seconds, during login it will check if there's a pawn with that name and ID, save it's data, destroy it, then load in the new pawn.
On begin play there's a 1 sec looping timer on the server, which detects if there's a controller possessing the character, if there's no controller it means that the player crashed or alt+F4'd. That will start a new 10 sec timer which will end up saving the character's data using the new component and then safely cleaning him up. If the character gets killed, it will do the same death processing, but obviously not send the character to cloning since there's no player behind it (Add a controller check before sending to cloning). It could be possible that the data doesn't update during the relog period, so need to pay attention to this, The player will never likely enter the server and see his character since the login process might take more than 10 seconds, there's no way of getting back to the main menu unless you get afk kicked, which safely saves the data and cleans up the player.
Doing a massive refactoring on the character components, moving them back to the character instead of being in the player state, this will allow the server to be able to grab the character's save data if there's no playerstate or player controller on that character, this should solve the issue of handling inactive characters properly. Also doing a beefy refactoring of the character class and removing a lot of old redundant stuff, plus enforcing more OnReps over multicasts.
Logout event doesn't get called when the game crashes/closes during log window exit. It only occurs when the connection times out. Upon re-login, the inactive player state doesn't have a pawn attached, would need another method to detect if the character is still in the world during the login phase.
Need to override OverrideWith in the playerstate and create a save data payload from the old playerstate so we can load that into the new one during PostLogin. Once we have that data in the new player state, nuke the old pawn, spawn the new one and load that data
we have logout when logging in working, but now need to figure out how to detect if the character doesn't have a local controller so we can save his data and safely remove him from the game after transfering the data from the dummy to the player logging in

Implement a tick manager system that consolidates all tick functions, plus automatically throttling tick rates depending on the amount of instances
Instead of doing a custom movement system, which has somewhat the similar execution times as CMC, lets implement a tick manager that consolidates all ticking actors/components and manages their tick intervals dynamically, depending on a specific set of instances and throttle rate.
Wrapped up, noticed substantial performance increases, throttling system in place, need to test in a packaged build.
Tick manager is done as well as bunching the classes together, just need to implement the throttling system.

Acquired east coast server to host the game on, which will result in better ping for eastern players

Implemented a new character component that reroutes all service RPCs
This got rid of all clutter in inventory/storage components by chucking all service-related RPC reroutes there (mining, market, travel, production, etc). We will place all future service functionality here so we keep all the behavior encapsulated in this class.