# Roadmap This note tracks the roadmap for SS14. This documents what features we are either working on or will soon be working on. All entries should include a link to a relevant GitHub issue, for work tracking. [Here's the tentative road to release pastebin](https://pastebin.com/6wG78Giu); the source for the current roadmap. <!-- TODO: REFERENCE EVERY FEATURE TO ITS COMMIT Example: - [x] Field of Vision & Shadow Casting [e#747](https://github.com/space-wizards/RobustToolbox/issues/747)) --> ## ~~Tentative Deadline: December 2, 2020?~~ ~~This means everything (except for the section with non-required stuff) should be coded and hopefully polished by December.~~ ## Priorities 1. Get a basic playable round functional with minimal feature set implemented for the main jobs. 2. Make concrete design decisions on features (and document them in github issues or hackmd documents) so people can start working on them. 3. Better documentation for new coders. Make sure newly submitted code has some degree of documentation, at least for parts that need it. --- ## The bare essentials for a release <!-- Put things we don't have yet here. --> #### Space Station 14 - [ ] Action bar / hotbar - [ ] Traitor gamemode - [ ] Evac shuttle - [ ] Adminhelp #### RobustToolbox - [ ] Sandboxing [e#1408](https://github.com/space-wizards/RobustToolbox/pull/1408) - [ ] Engine versioning --- ## Gameplay Systems ### Round Flow - [x] Lobby screen [c#127](https://github.com/space-wizards/space-station-14/pull/127) - [x] Character setup [c#511](https://github.com/space-wizards/space-station-14/pull/511) - [x] Roundstart - [x] Antag Selection [c#1264](https://github.com/space-wizards/space-station-14/pull/1264) - [x] Station - [x] Lateround Joining - [x] Latejoin Job Selection. [c#1284](https://github.com/space-wizards/space-station-14/pull/1284) - [x] Roundend [c#805](https://github.com/space-wizards/space-station-14/pull/805) ### Atmos - [x] Atmospherics System [c#1389](https://github.com/space-wizards/space-station-14/pull/1389) - [x] Gases - [x] Gas reactions - [x] Decompression - [x] Fire - [x] Things catch on fire [#1577](https://github.com/space-wizards/space-station-14/issues/1577) - [x] Firelocks [#1579](https://github.com/space-wizards/space-station-14/issues/1579) - [x] Map them in - [ ] Fix edge firelock collisions [c#2429](https://github.com/space-wizards/space-station-14/pull/2429) [e#1360](https://github.com/space-wizards/RobustToolbox/pull/1360) - [x] Fire extinguishers - [x] Temperature damage - [x] Gas Canisters [c#2151](https://github.com/space-wizards/space-station-14/pull/2151) - [ ] Plasma canister - [ ] Oxygen canister - [ ] Water vapor canister - [x] Gas Tanks - [x] Breathing [c#1544](https://github.com/space-wizards/space-station-14/issues/1544) - [x] Breathing from gas tanks and breath masks - [x] Pressure Damage [c#1605](https://github.com/space-wizards/space-station-14/pull/1605) - [x] Spacesuits - [ ] Portable scrubbers - [x] Pressurize Saltern [c#1629](https://github.com/space-wizards/space-station-14/pull/1629) - [ ] Piping [c#1626](https://github.com/space-wizards/space-station-14/pull/1626) - [x] Pipes - [x] Vents [c#2101](https://github.com/space-wizards/space-station-14/pull/2101) - [ ] Scrubbers - [x] Siphon - [ ] Air Alarms [#1585](https://github.com/space-wizards/space-station-14/issues/1585) - [ ] Map in a pipenet for Saltern ### Basic player movement/manipulation - [x] Movement - [x] Walking - [x] Pushing - [x] Pulling [c#850](https://github.com/space-wizards/space-station-14/pull/850) and [c#1409](https://github.com/space-wizards/space-station-14/pull/1409) - [x] Buckling [c#1155](https://github.com/space-wizards/space-station-14/pull/1155) - [x] Climbing - [x] Timed Actions (do_after()) [#1288](https://github.com/space-wizards/space-station-14/issues/1288) and [c#1616](https://github.com/space-wizards/space-station-14/pull/1616) - [x] Add do_after() to everything that needs it - [x] Pointing [c#1435](https://github.com/space-wizards/space-station-14/pull/1435) ### Player health, status effects, body system - [x] Refactor body system to use entities and components [c#2074](https://github.com/space-wizards/space-station-14/pull/2074) - [x] Limb System [c#855](https://github.com/space-wizards/space-station-14/pull/855) - [x] Surgery - [ ] Surgery but it actually works - [ ] Gibbing [#1765](https://github.com/space-wizards/space-station-14/issues/1765) - [ ] Interaction range based on your body [#1767](https://github.com/space-wizards/space-station-14/issues/1767) - [ ] Specific body part damaging [#1760](https://github.com/space-wizards/space-station-14/issues/1760) - [x] Body part rendering [#1544](https://github.com/space-wizards/space-station-14/pull/1544) - [x] Female/alternate body part sprite rendering [#1753](https://github.com/space-wizards/space-station-14/issues/1753) - [x] Mechanisms (organs) [#1770](https://github.com/space-wizards/space-station-14/issues/1770) - [ ] Appendix - [x] Brain [c#2284](https://github.com/space-wizards/space-station-14/pull/2284) - [ ] Ears - [ ] Eyes - [x] Heart - [ ] Kidneys - [ ] Liver - [x] Lungs - [x] Stomach - [ ] Tongue - [ ] Medical [#1472](https://github.com/space-wizards/space-station-14/issues/1472) and [c#1544](https://github.com/space-wizards/space-station-14/pull/1544) - [x] Cloning [#1473](https://github.com/space-wizards/space-station-14/issues/1473) and [c#1932](https://github.com/space-wizards/space-station-14/pull/1932)(https://github.com/space-wizards/space-station-14/issues/1753) - [ ] Blood types, blood system as part of body system - [ ] Reagents can hold data (for blood, etc) - [ ] Bleeding - [x] Hunger and Thirst [c#363](https://github.com/space-wizards/space-station-14/pull/363) ### HUD/UI - [ ] Abilities and Ability Bar [#1945](https://github.com/space-wizards/space-station-14/issues/1945) - [ ] Clean up/refactor HUD ### Lighting, shadows, rendering, etc. - [x] Field of Vision & Shadow Casting [e#747](https://github.com/space-wizards/RobustToolbox/issues/747) - [x] Lighting ### Combat - [x] Melee - [x] Click attacks - [x] Wide attacks - [x] Guns - [x] Players can die ### Communications - [x] Radios - [x] Headsets - [ ] Comms console announcements ### Power and machinery - [x] Power [c#863](https://github.com/space-wizards/space-station-14/pull/863) - [x] Remap with new power wires [c#1559](https://github.com/space-wizards/space-station-14/pull/1559) - [x] Machine linking component - [ ] Add component to all relevant entities ### Explosions - [x] Explosions [c#247](https://github.com/space-wizards/space-station-14/pull/247) - [x] Handle how various entities should act when sploded ### Construction - [x] Construction System [c#87](https://github.com/space-wizards/space-station-14/pull/87) - [x] Construction Graphs [c#2152](https://github.com/space-wizards/space-station-14/pull/2152) - [ ] Construction Graphs (IC Construction) (Crossed out stuff means it's not in game yet) - Floors - [x] Lattice - [x] Catwalk - [x] Underplating - [x] Plating - [x] Various Floor Tiles - Walls - [x] Normal Wall - [x] Reinforced Wall - [ ] Fake Walls - Wall Mounts - [ ] APC - [ ] Air Alarm - [ ] Fire Alarm - [ ] Security Camera - [ ] Light Fixture - [ ] Requests Console (?) - [ ] Newscaster (?) - [ ] Bounty Board (?) - Other - [ ] ~~Grille~~ - [ ] Barricade - [ ] Windoor - [ ] Button - [x] Firelock - [ ] Reflector - [ ] Airlock - [ ] Turret - [ ] ~~AI Core~~ - [ ] Solar Panels + Solar Trackers - [ ] Disposal related Machinery - [x] Computers - [ ] Modular Consoles - [ ] Upgradeable Machines - [ ] ~~Robots, Cyborgs and Mechs~~ - [ ] Mineral Door - [ ] Conveyor Belt - [ ] Railings - [ ] Sink - [ ] Shower - Furniture - [ ] Chairs - [x] Tables - [ ] Closet - [ ] Rack - [ ] Beds - [ ] Bookcase - [ ] Drying Rack - [ ] ~~Display Case~~ ### NPCs - [x] NPCs (AI system, pathfinding system, AI job system) [c#806](https://github.com/space-wizards/space-station-14/pull/806) ### Physics - [x] Physics - [x] Rework [e#1037](https://github.com/space-wizards/RobustToolbox/pull/1037) [c#872](https://github.com/space-wizards/space-station-14/pull/872) - [x] Gravity [c#841](https://github.com/space-wizards/space-station-14/pull/841) [e#1031](https://github.com/space-wizards/RobustToolbox/pull/1031) - [ ] Kinematics - [ ] Impulses ### Events - [x] Random Events [c#1518](https://github.com/space-wizards/space-station-14/pull/1518) - [x] Power blackout [c#1518](https://github.com/space-wizards/space-station-14/pull/1518) - [x] Radiation storm [c#1518](https://github.com/space-wizards/space-station-14/pull/1518) - [ ] Infestation (random mob spawns) - [ ] Meteor(s) - [ ] False alarm - [ ] Mimic - [ ] Gr3y T1d3 virus (brig cells open) ### OOC Systems - [ ] Adminhelps/Mentorhelps [#1587](https://github.com/space-wizards/space-station-14/issues/1587) - [x] Authentication [/SS14.Auth](https://github.com/space-wizards/SS14.Auth) - [x] Auth server code/game code - [x] Set up central auth server. - [x] Bans - [ ] Engine/Content versioning separation - [ ] Sandboxing - [x] Kicks - [x] Ghosts [c#799](https://github.com/space-wizards/space-station-14/pull/799) - [x] Netcode - [x] Graphics - [x] Chat - [x] UI - [x] Discord integration [c#201](https://github.com/space-wizards/space-station-14/pull/201) [e#776](https://github.com/space-wizards/RobustToolbox/pull/776) - [x] Database - [x] Configuration - [x] Buildmode --- ## Mapping backlog This category is for things that are already in the game, but need to be mapped in. - [ ] Map in basic equipment/weaponry for every department. Stuff like equipment lockers are currently empty. - [x] Firelocks - [ ] Edge firelocks with correct collisions for each direction - [ ] Fire extinguisher cabinets - [x] Booze/soda dispenser for bar - [ ] Clean up Saltern from Swept's shitty memes - [ ] Map in an arrivals shuttle, even if it doesn't do anything. - [ ] Fix the weird light on medbay's lobby - [ ] Cloning - [x] Kitchen meat spike - [ ] Kitchen walk-in freezer - [ ] Antimatter engine - [ ] Secure Tech Storage (for spare circuit boards) --- ## Job Content and department interactions ### Clown - [x] Banana cream pies [c#2122](https://github.com/space-wizards/space-station-14/pull/2122) - [x] Slips - [x] Bike horn - [x] Instruments - [x] Gilded bike horn ### Engineering - [x] Improve RCD [c#1609](https://github.com/space-wizards/space-station-14/pull/1609) - [x] Construction/Deconstruction - [x] Make construction/deconstruction a giant state machine to allow complex recipes [c#2152](https://github.com/space-wizards/space-station-14/pull/2152) - [x] Improve deconstruction steps to not just be "wrench everything" - [ ] More recipes - [ ] Mesons - [x] Deconstruction hints - [x] Replace the deprecated power network with new power - [x] Engines to actually produce power - [x] Singularity Engine [c#1548](https://github.com/space-wizards/space-station-14/pull/1548) - [x] Antimatter Engine [c#1905](https://github.com/space-wizards/space-station-14/pull/1905) - [ ] Cargo <-> Engineering <-> Science loop - [ ] Can fix breaches using materials from cargo - [ ] Can construct/repair machines using materials from cargo and with help from science - [ ] Being able to build disposal pipes and stuff. - [ ] Being able to build gas pipes and stuff. - [ ] Construction graph/recipe backlog - [ ] Airlocks and firelocks - [ ] Fire extinguisher cabinet - [ ] Meat spike - [ ] Wall lights - [ ] Upgradeable Machines - [ ] Chairs, stools - [ ] Tables - [ ] Lockers, crates - [ ] APC ### Cargo - [ ] Cargo shuttle - [x] Cargo console - [ ] Import telepad - [ ] Export telepad - [ ] Cargo <-> Science research loop [#1504](https://github.com/space-wizards/space-station-14/issues/1504) ### Science - [x] Research system - [ ] More research nodes - [ ] (fun) ways for players to earn points? - [ ] Upgrading machines ### Security - [x] Stun baton - [x] Tactical stun baton throw [c#2122](https://github.com/space-wizards/space-station-14/pull/2122) - [x] Handcuffs [#1664](https://github.com/space-wizards/space-station-14/issues/1664) - [x] Strip searching [c#1668](https://github.com/space-wizards/space-station-14/pull/1668) - [ ] Brig-related requirements (door timers, etc) - [ ] Security <-> Cargo interaction - [ ] Security can request (locked) weapon crates from cargo ### Command - [ ] Evac shuttle - [ ] Ability to call shuttle, return shuttle using comms - [ ] Access to all other department-specific consoles - [ ] HoP id card fabricator? ### Medical Doctors - [ ] Bruise packs, bandages, ointment - [ ] Fill basic medkits with items (basic medkit, burn medkit, oxygen medkit, tox medkit) ### Chemist - [x] Chemistry - [x] Chemical Dispenser - [x] Chemical tile and entity reactions - [ ] Chemical grenades - [ ] Smoke that holds reagents - [ ] Reagents can hold data (for blood, etc) - [x] Metabolization - [ ] Add different metabolization effects to reagents - [x] ChemMaster 4000 [c#1398](https://github.com/space-wizards/space-station-14/pull/1398) - [ ] Some basic chem recipes - [ ] Basic medicines for all damage types - [ ] Other basic things to at least cover some chemistry use cases - [ ] Chemist <-> Doctor loop - [ ] Provide doctors with pills/patches to heal people ### Janitor - [x] Janitorial crap [c#1378](https://github.com/space-wizards/space-station-14/pull/1378) [c#1367](https://github.com/space-wizards/space-station-14/pull/1367) - [ ] Soap cleans stuff - [ ] Blood for janitors to clean. - [ ] Bloody items that can be cleaned - [ ] Janitor <-> Chemist loop - [x] Janitor can request space cleaner from chemist - [ ] Janitor can request cleaning grenades from chemist ### Bartender - [x] Bartending job [c#e120f77](https://github.com/space-wizards/space-station-14/commit/e120f778f898bb14048b6f57129f7a4f516248af) - [ ] More drink recipes. - [x] Drink dispensers. - [x] Map it in - [ ] A still. Maybe not required as part of the minimal feature set. ### Chef - [x] Microwave [c#862](https://github.com/space-wizards/space-station-14/pull/862) - [x] Chef can butcher monkeys for meat - [x] Monkey cubes - [ ] More recipes/food variety - [ ] Pre-packaged food - [x] Botany <-> Chef gameplay loop - [x] Chef can use vegetables/fruits from cargo to make food - [ ] Cargo <-> Chef gameplay loop - [ ] Cargo can provide the chef with monkey cubes for meat - [ ] Cargo can provide with exotic ingredients - [ ] Selling food to centcomm for extra credits? ### Botany - [x] Growing plants [c#2357](https://github.com/space-wizards/space-station-14/pull/2357) - [x] Harvesting vegetables - [x] Botany <-> Chemistry loop - [x] Botany can request reagents from the chemist - [ ] Botany can provide with special reagents for chemistry? --- ## Antagonist Content - [x] Traitor role [c#459](https://github.com/space-wizards/space-station-14/pull/849) - [ ] Objectives - [x] Uplink [c#942](https://github.com/space-wizards/space-station-14/pull/942) - [ ] Basic set of antag items that can be bought --- ## Sprites Needed - [ ] Shuttles --- ## Not Required/Misc Stuff This stuff is nice to have but unneeded for a 1.0 release. - [x] Flares and glowsticks - [x] Disposals [c#1367](https://github.com/space-wizards/space-station-14/pull/1367) - [x] Mailing [#1662](https://github.com/space-wizards/space-station-14/issues/1662) - [ ] Outlets [#1663](https://github.com/space-wizards/space-station-14/issues/1663) - [ ] Arrivals shuttle for late joins - [ ] Other antagonist gamemodes - [ ] Revolution - [ ] Changeling - [ ] Temperature for chemistry - [ ] Chemical Heater/Cooler - [ ] Temperature-based reactions - [ ] Being drunk - [ ] Post processing support for distorted vision - [ ] Tabletop Simulator 2D - [x] Radiation - [ ] Make certain entities block radiation - [ ] Radiation protection - [ ] Wheelchairs - [ ] Holiday system - [ ] Forensics - [ ] Telecomms and possibly other mini areas to work with it - [ ] Support non-english languages (start with EFIGS?) - [ ] Fluff - [ ] Paperwork - [x] Basic framework [c#582](https://github.com/space-wizards/space-station-14/pull/582) - [x] Clothing - [x] Vending Machines - [x] Closets [c#112](https://github.com/space-wizards/space-station-14/pull/112) [c#195](https://github.com/space-wizards/space-station-14/pull/195) - [x] Instruments [c#368](https://github.com/space-wizards/space-station-14/pull/368) - [ ] Malf - [ ] Nuke Ops - [ ] Admin tools for custom events - [ ] Easy to use spawn tools - [ ] Tweakable AI settings - [ ] Saveable/customizable AI entity system - [ ] Customizable inventory - [ ] Customizable skills that can be plucked from other antagonist roles - [ ] Scripted speech with triggers? - [ ] YML-based custom scripting? ### Non-core/controversial jobs - [ ] Genetics - [ ] Toxins - [ ] Salvage Crew - [ ] Silicon - [ ] Robotics - [ ] Virology - [ ] Xenobiology ## Todo List ### Watchdog 1. If we 1. properly version the engine and 2. ship ALL resource files AND assemblies with server. We could COMPLETELY forego needing client builds and other distribution crap and you would actually be able to connect to dev servers via the launcher without any hassle this would also significantly lighten the load for "I just want a local server to play with my friends" people, https://discordapp.com/channels/310555209753690112/310555209753690112/696823045104468116 3. Acruid 5/40: each GamePack needs a specific version of Robust to run, so we need a repository of all versions of Robust for the Launcher to download and start so the User can join a server Acruid: this is a core requirement of the launcher, it would be good to think about how it is going to be implemented Acruid: i was wondering if you had any ideas on how to do this PJB: well PJB: we'd start doing weekly or such releases of Robust PJB: and maintain some semblance of backwards compatibility https://discordapp.com/channels/310555209753690112/310555209753690112/577950540257034243 3. Make it continue the download in the case of your connection failing, instead of downloading all over again. 4. Make it download only the update, instead of the whole game. ### Performance 1. Spare some GPU power on low spec machines. just render the game at 1:1 then upscale it. Another thing that would seriously save CPU time is making parallax lower res. Acruid 5/40: what would be way more efficient would be to enable depth testing and never draw a fragment of the skybox 99% of the time. https://discordapp.com/channels/310555209753690112/310555209753690112/681264537147539551 2. I could insert a bunch of glFlush(). https://discordapp.com/channels/310555209753690112/310555209753690112/681232943829614666 3. Post compile hook that transforms all IoC references into their concrete types to improve perf 4. FOV improvements https://discord.com/channels/310555209753690112/310555209753690112/726970367528403004 ### Security 1. Eventually we'll make it so that the engine has strict versioning, so that the server can only ship the content side and resources which will be sandboxed. But there's some technical things that need to be solved for that and it'd slow down development a lot since I'd need to start creating real engine versions 2. Hmmmm... is there any way to only send the client relevant info without computing FOV? No. But the problem I'm trying to solve at hand is client side purely. Some ideas: 1. you can specify render overrides on the sprite component that get picked if set and drawn from specific maps, so you could have your wallmount-visibility logic apply to the two viewports before they render and use the data like that and 2. just allow people to run custom code in entity rendering, I guess?. Then with (2) you could either just hijack the render function entirely OR modify the sprite data to fit the viewport. Really ick though because it makes stuff like future parallelization a PITA. (1) adds a crapload of complexity too because you'd need to duplicate the data on the spritecompon. Unless we start getting into crap like "flags which control what data gets copied over" which seems even worse https://discordapp.com/channels/310555209753690112/310555209753690112/702148459897290802