WFClassic
A server emulator which allows you to play older versions of warframe, currently 7.x versions are playbable directly. The two 8.x versions require the use of the OpenWF bootstrapper which can be found here OpenWF Homepage.
This work a combination of information from the OpenWF SpaceNinjaServer project, additional reverse engineering of earlier builds, trial and error, and a decent amount of coffee. Currently using .net9 and sqlite for persistence, linux and windows are both supported and builds are self contained, so no runtime install is necessary.
Getting started
Download the version of the game that you'd like to play using the steam console, here is the command to download the 7.9 version
download_depot 230410 230411 6399786153404128119
- Unzip the package to your desired location
- In appsettings.json , set
BuildLabelto the corresponding version of your client. - Run the executable
- Wait for the db to be created / migrations complete.
- ????
- Profit
You can either create an account via the web interface (http://localhost:5000) or an account will be created automatigally for you upon initial login using the waframe client.
In the steam content folder, C:\Program Files (x86)\Steam\steamapps\content\app_230410\depot_230411, run the following
.\Warframe.x64.exe -log -dx11:1 -webserver:http://localhost:5000/api/ -fullscreen
There is also an online server available which supports the 7.9 build that is listed below
.\Warframe.x64.exe -log -dx11:1 -webserver:http://138.197.55.72:5000/api/
Currently Tested Versions
| Version | Build Id | Manifest Id | Items not working? | Notes |
|---|---|---|---|---|
| 8.3.0 | 2013.07.04.20.17/ | 767517711548082020 | Requires the use of the OpenWF bootstrapper | |
| 8.0.0 | 2013.05.23.16.06/ | 5108594067645371108 | Requires the use of OpenWF bootstrapper | |
| 7.10.7 | 2013.05.15.13.37/ | 367921302756169619 | Build allows for login, but UI does not allow for gameplay. has a set of errors referring to rootNodeEntity in starchart.lua | |
| 7.10.6 | 2013.05.14.10.33/ | 5140912318581454574 | Build allows for login, but UI does not allow for gameplay. has a set of errors referring to rootNodeEntity in starchart.lua | |
| 7.10.5 | 2013.05.13.15.20/ | 1873918047633104541 | Build allows for login, but UI does not allow for gameplay. has a set of errors referring to rootNodeEntity in starchart.lua | |
| 7.10.4 | 2013.05.10.14.33/ | 609302931784914878 | Build allows for login, but UI does not allow for gameplay. has a set of errors referring to rootNodeEntity in starchart.lua | |
| 7.10.3.5 | 2013.05.09.14.56/ | 1333808825789667682 | Build allows for login, but UI does not allow for gameplay. has a set of errors referring to rootNodeEntity in starchart.lua | |
| 7.10.2 | 2013.05.08.10.59/ | 1214562332840994196 | This version has some issues loading certain textures, specifically those around grenades and melee attacks. Can only play a single level before needing to restart as the ui freezes | |
| 7.10.1 | 2013.05.06.10.38/ | 4151868779723562813 | This version has some issues loading certain textures, specifically those around grenades and melee attacks. Can only play a single level before needing to restart as the ui freezes | |
| 7.10 | 2013.05.03.18.06/ | 588705282697359018 | This version has some issues loading certain textures, specifically those around grenades and melee attacks. Additionally artifact cards cannot be received as rewards as there is a bug which was later fixed in 7.10.1. Can only play a single level before needing to restart as the ui freezes | do not not use this version to play 7.10.x as the card thing is impossible to bypass |
| 7.9 | 2013.04.26.17.24/ | 6399786153404128119 | ||
| 7.8.1 | 2013.04.24.11.45/ | 6629234302933135021 | ||
| 7.7.4 | 2013.04.15.14.48/ | 8278491043607750104 | ||
| 7.7.3 | 2013.04.12.12.05/ | 6961091191944066345 | ||
| 7.7.2 | 2013.04.05.12.20/ | 8357063435845098593 | ||
| 7.7.1 | 2013.04.04.10.09/ | 3065430017475545834 | ||
| 7.7 | 2013.04.03.14.47/ | 6180757407260335433 | ||
| 7.6 | 2013.04.01.16.24/ | 1412521350878833822 | ||
| 7.5.1 | 2013.03.28.17.01/ | 5572824118589588358 | Grineer corpses disappear after being killed. sometimes. this looks to be a hotfix | |
| 7.4.1 | 2013.03.27.17.06/ | 8927238311553521114 | ||
| 7.4 | 2013.03.27.09.43/ | 1958670258248515033 | ||
| 7.3 | 2013.03.25.11.45/ | 9176710083987114410 | Oddities with the starchart, least performant of the tested builds. |
How to play versions 7.11
7.x builds after 7.10.2 do not work as they seem to either be missing assets or a missing endpoint which causes issues in the client itself. In order to play 7.11:
- download version 2013.05.08.10.59 and copy warframe.exe and Warframe.x64.exe to somewhere safe
- delete all 7.10.2 files
- Download 7.11 ( manifest id 7689210280991293768)
- Delete Warframe64.exe and Warframe.exe from 7.11
- Copy Warframe64.exe and Warframe.exe from 2013.05.08.10.59 to to 7.11
Features
Nothing related to multiplayer has been added to the code base, and most likely never will. This is due to the fact that I dont want to get sued.
Client Features
This is not a comprehensive list of features, just the ones that really seem to matter for gameplay
| Name | Area | Description | Implementation | What needs work |
|---|---|---|---|---|
| Automatic Account Creation | Gameplay | Upon initial login from client, a new account will be created if one does not already exist | Fully | |
| Login | Authnz | Fully | ||
| Logout | Authnz | Fully | ||
| Initial Training and Warframe Selection | Gameplay | Fully | ||
| Complete Mastery Rank Challenges | Gameplay | Fully | ||
| Attach system wide artifact | Gameplay | Fully | This is not actually an api endpoint, but instead relies on returnign inventory correctly | |
| Obtain daily login reward | Gameplay | Fully | This is customizable and uses older documentation for the rewards listing. Current state drop table percentage is not period accurate | |
| Get the world state | Gameplay | Partially | Can be configured via db, alerts work for the most part. operations are not implemented | |
| Validate daily mission bonus status | Gameplay | Fully | ||
| purchase more revives | Economy | Fully | ||
| update taunt state | Gameplay | Fully | ||
| Get updated credits/plat | Economy | Fully | ||
| Purchase Item | Economy | Fully | All items as of 7.10.0 | |
| Craft item in Foundry | Foundry | Fully | all known recipes as of 7.10.0 are included | |
| Claim Foundry Item | Foundry | Fully | ||
| Instantly complete item in foundry | Foundry | Fully | ||
| Check build status in foundry | Foundry | Fully | ||
| Get Player Profile (All Players) | Stats | Partial | Some stats have not appeared in the metrics, so some stats might not be correct | |
| Get Kill Leaderboard | Stats | Fully | ||
| Get Kill Leaderboard With User Ranking | Stats | Partial | leaderboard that is returned is the same as the general leaderboard | |
| Get Inventory | Gear | Partial | ||
| Update Inventory | Gear | Partial | Some areas (goals/completions) might not be updated as they have yet to be encountered | |
| Attach mods | Gear | Fully | ||
| Upgrade Mods | Gear | Fully | ||
| Save loadout | Gear | Fully | ||
| Recharge health item | Gear | Nothing | used to recharge a single item that is not available in the base game. | |
| Attach reactors / catalysts to frames/weapons | Gear | Fully | ||
| Purchase new inventory slots (frames and weapons) | Gear | Fully | ||
| Send friend request | Friends | Fully | ||
| Remove friend | Friends | Fully | ||
| Approve Friend request | Friends | Fully | ||
| Get friend listing | Friends | Partial / Unknown | More data might need to be returned. but list works. | |
| Set player avatar | Friends | Fully | ||
| Get Guild Member Listing | Guild | Very Little | right now has hardcoded return object | |
| Create Guild | Guild | Nothing | ||
| Remove member from Guild | Guild | Nothing | ||
| Donate To Guild | Guild | Nothing | ||
| Customize Guild Ranks | Guild | Nothing | ||
| Invite to guild | Guild | Nothing | ||
| Accept guild invite | Guild | Nothing | ||
| change guild rank | Guild | Nothing | ||
| Get Messages (Api) | Nothing | No idea what this is and it might be a vestigial endpoint | ||
| Send Messages (Api) | Nothing | No idea what this is and it might be a vestigial endpoint | ||
| Get Ignored IRC Users | Client:IRC | |||
| Add IRC User To Ignore List | Client:IRC | |||
| Remove IRC User From Ignore List | Client:IRC |
Web Features
| Name | Area | Description | Implementation | What needs work |
|---|---|---|---|---|
| Login | Web | Fully | ||
| Logout | Web | Fully | ||
| Registration | Web | Fully | ||
| View player profile | No work done | |||
| View individual player stats | No work done | |||
| Leaderboards (player) | No work done | |||
| Leaderboards (guild) | No work done | |||
| View player inventory | No work done | |||
| Trading system | No work done | |||
| confirm account via email | ||||
| ban player |
IRC
In order to use IRC at the moment, you must run the client on port 80 or 443. Any IRC server can be used as long as it is running on ports 6695 to 6699. This IRC server will not, by default, be secured as the WF client does not provide a user/password combo. Instead the userId and and current nonce are provided as part of the USER command.
USER {UserIdGuid} 0 ** {CurrentNonce}
If you are utilizing inspircd you can configure sqlauth to query the sqlite db, the current nonce will be used as one time password, similar to how the client utilizes it. It's unknown whether or not the warframe client will routinely attempt to reauthenticate with the IRC server, so irc connections might not be dropped if the wfclassic server restarts.
select id
from AspNetUsers anu
where
id = '$ident'
and CurrentNonce = $real
and CurrentNonce != 0
limit 1