◄♦ Shoot. Loot. Share. ♦♦ https://esbuilder.onrender.com/ ♦►
◄♦ Developed by WildCharger ♦♦ Twitter/X ♦♦ YouTube ♦♦ LinkedIn ♦►
EVERSPACE™ Builder (shorthand ESBuilder) is an online platform that allows users to create, manage, & share customized loadouts for the game EVERSPACE™, a deep space combat simulation with roguelike & story-based elements released in 2017 by ROCKFISH Games GmbH. This application serves as a tool for players to assemble their own ship, enhancement, & equipment configurations, using a GUI that reflects the menus in the game itself as closely as possible. This makes it possible for players to do things such as record in-game loadouts they have created in the past, plan for loadouts they may seek to build in the future, or create loadouts to help other players, among other possibilities.
Learn more about EVERSPACE™ on its official website, or purchase it on Steam or GOG.
ESBuilder is currently in early beta. Functionality is present, but significant bugs are likely to be present, and many edge case scenarios have likely not yet been caught. Testers are encouraged to use the Issues board to submit problems with the application as needed.
The loadout builder has been built to be compatible with the widescreen (16:9) aspect ratio, tested at the minimum resolution of HD 720p up to a resolution of 2K 1440p. Screen resolutions above or below this are not guaranteed to display properly.
The current goal is to make ESBuilder proficient at its core functionalities, as well as their accuracy to the original game. Features that require completion in order to achieve this currently take top priority, including:
- Stat numbers that have been properly formatted & appear with their respective units of measurement
- Ship stats visually appearing influenced by installed Enhancements & Equipment (e.g. installing the Splitter enhancement reduces the ship's Secondary Weapons slot number to 1)
- Equipment stats visually appearing influenced by installed Enhancements & Mods (e.g. outfitting a Teleporter with Energy Consumption Mods causes the displayed Energy Consumption stat to decrease accordingly)
- Comprehensive Primary Weapon & Device Enhancement, allowing players to define the differences of applicable Equipment from their basic versions within reasonable restrictions
Additionally, in order to ensure that Loadouts remain accessible as more are added:
- The Recent Loadouts page will be completed, properly ordering loadouts by newest first, and allowing users to see more than just ten.
- A basic profile system will be implemented, allowing users to see all of the loadouts they specifically have created.
Once this goal has been achieved, further development will only continue if there is sufficient interest in the project from EVERSPACE™ players. Long-term goals include, but are not limited to:
- Additional loadout details, including the option to input the player's run number/name.
- A more comprehensive profile system that allows users to share unique elements such as their favorite Ship, Weapon, or Enhancement.
- A completed user system that allows for the modification of user details as well as account deletion.
- A search feature that finds loadouts by name.
- The ability to save existing loadouts locally as images, thereby allowing them to be shared offline.
- Some way, somehow, maybe allow users to upload a save file of their current run, and decipher the loadout data from it. This one's a massive reach.
- Implementation of player progression. This allows players to change what perks, preset loadouts, etc. they have unlocked, and having the loadout builder optionally reflect the applicable differences as a profile setting. This would be the last stretch goal to complete ESBuilder, and mark the end of its extended development cycle; any other major features would be implemented before this.
As with many applications, ESBuilder was built on a foundation of many other packages & modules that make it possible.
- Application powered by Express, Morgan, & Sequelize, with assistance from dotenv, Helmet, & bcryptjs, among others.
- Database developed in SQLite and deployed using PostgreSQL.
- Image asset delivery provided by Amazon Web Services S3 using AWS SDK. Note that the AWS SDK v2 will reach end-of-support on September 8, 2025, and use of AWS SDK v3 is recommended for new projects.
- Special thanks to Chalk for letting me assemble a development logging system that stands out and is easily recognizable & findable in a sea of other messages.
- Application is powered by ReactJS, React Redux, and React Router, with assistance from JavaScript Cookie, Redux Thunk, and Reselect.
- Website icon SVGs provided by React Icons. High-resolution background images provided by various wallpaper sites.
- Special thanks to use-fit-text for allowing text all around the site to dynamically scale based on current screen size.
- Credit belongs to ROCKFISH Games for creating EVERSPACE™. I've been playing their games ever since the original Galaxy on Fire on iOS - and it was Galaxy on Fire 2 that led me to being a big part of one of the greatest internet communities I could have ever asked to join. Almost all of the website's image assets are sourced from EVERSPACE™ itself, and its UX was the basis for the design of the loadout builder.
- The idea to create this can be attributed to PD2 Builder, a loadout builder for the game PAYDAY 2.
- ESBuilder itself was created over the course of many sleepless nights by me, WildCharger. I hope you enjoy using it.
The following information is mainly for the technically inclined - continue at your own discretion!
| Request | Purpose | Return Value |
|---|---|---|
GET /api/custom-equippables/:customEquippableId |
Retrieves a specific Custom Equippable's data. If no Custom Equippable is found, a 404 is returned, but no error is thrown, as this is expected to be handled on the frontend. | { |
POST /api/custom-equippables |
Creates a new Custom Equippable & returns its data. | { |
GET /api/loadouts |
Retrieves the ten most recently created Loadouts & their owners. No error is thrown if the list is empty, as this is expected to be handled on the frontend. | { |
POST /api/loadouts |
Creates a new Loadout & returns its data. | { |
PUT /api/loadouts/:loadoutId |
Edits the data of an existing Loadout. Verifies that the user sending the request is the owner of the Loadout. Returns a success message if no errors occur. | { |
DELETE /api/loadouts/:loadoutId |
Deletes an existing Loadout. Verifies that the user sending the request is the owner of the Loadout. Returns a success message if no errors occur. | { |
GET /api/session |
Retrieves the current Session User's data. Unlike GET /api/users/:userId, also returns the User's Email. |
{ |
POST /api/session |
The User Login route. Validates input data, then returns the specified User, in the same way as GET /api/session. |
{ |
DELETE /api/session |
The User Logout route. If no User exists, a faux error (not sent to the default error handler) is returned with status code 400. Returns a success message otherwise. | { |
GET /api/users/:userId |
Retrieves a specific User's ID & Username. If no User is found, a 404 is returned, but no error is thrown, as this is expected to be handled on the frontend. | { |
GET /api/users/:userId/loadouts |
Retrieves a User's Loadouts. If any exist, also safely returns the User's ID & Username. Does not reveal any personally identifying information. | { "list": [ |
POST /api/users |
The User Signup route. Validates input data, then returns the created User. Signups are blocked if a User is already logged in. | { |
GET /img-assets/* |
For all backend routes beginning with /img-assets, serve assets from the AWS bucket. |
{ |
GET /favicon.ico |
This catches the browser request to get a favicon when directly accessing a backend route. The request is intercepted and, instead of proceeding as a 404 error, returns a 204 No Content. |
No Response |