Giter Club home page Giter Club logo

uty-save-editor's Introduction

UTY Save Editor

A save editor for the Undertale fangame Undertale Yellow.

Usage

The save editor is currently available on uty-save-editor.netlify.app. It has not been thoroughly tested and there may be bugs. Did you find an error which you don't understand? Do you want to propose a feature which is missing? Does something not seem very logical or obvious to you when using the editor? Then please open an issue for your feedback! I don't guarantee the fixes will always be fast, but I can try my best.

Features

  • Supports all 4 types of save files (main save, persistent data, temporary save and game config)
  • Can edit most important fields of the main save file
  • Can edit most fields of other save files
  • Fancy location picker which lets you visually select your location!
  • Fun value picker! (You no longer need to remember what does each fun value mean.)
  • Editing of GameMaker DS lists! (which are normally unreadable through a text editor)
    • For example, Dimensional Box items, Fast Travel locations...
  • Templates for save files! You can get save files for the most important moments (such as the Pacifist final battle) in the game right through the editor, and then modify them to your desire.
  • Helps you fix your Genocide Route save file that you accidentally aborted before Axis by not exhausting the kill counter before it was to late.
  • Helpful explanations of some options
  • Tries to make you not shoot your foot while editing as much as possible
  • Steamworks ID editing! (I bet you didn't need it)

How can I help?

There are several ways in which you could help:

  1. Use the editor: while using it, you can spot bugs and other issues with it and report them as issues.
  2. Do research: there are many flags in the game which are not documented publicly yet. Research into the save file structure is currently available in this repository's research directory, and more thorough research into some flags is available here. If we discover the entire structure of the save file, it makes implementing its editing much easier!
  3. Curate save files: there are some save file repositories (such as this one) available, which could be used to curate the save files for the editor. What that means is to pick the save files for the most important moments, optimize their equipment to a reasonable extent and add them as templates to the editor. This way, users will be able to pick a predefined moment in the game to start from, while changing it the way they like.
  4. Add features: you can also help develop new features for the save editor! Please consult the section below on how to get started with development.

Development

You will need Node.js, Git and Git LFS to run the site locally. After their installation, clone the repository using:

$ git clone https://github.com/KockaAdmiralac/uty-save-editor.git

then install the site's dependencies (while ignoring all "security" warnings) using:

$ npm install

and then you can run a local instance of the site on localhost:3000 using:

$ npm start

uty-save-editor's People

Contributors

kockaadmiralac avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

spiritaxolotl

uty-save-editor's Issues

Advanced mode

Just like in Flowey's Time Machine, this save editor could benefit from a mode where more advanced flags can be edited. We don't currently have a grasp of all the flags and their meanings... but some of the more obscure flags are listed as (Advanced) in research/save.yml, and these would be suitable for a flags editor for more advanced users.

Allow debugger followers

Instead of just Ceroba and Martlet, obj_debugger and obj_dev_console (I think those are the names) could be useful for setting as followers, to activate some debug features.

Necklace is missing

There's no Necklace in the editor. It's displayed as Nothing if loaded from a file

Save.sav
image

uty-save-editor.netlify.app
image

Add more save file templates

To make the 'load from template' option more useful, there should be more save files to pick from. The key problem here is identifying which save files would be useful as starting points, and then optimizing their inventory and equipment for the occasion.

Synchronize location data between different controls

Currently, there are several issues arising from location controls not synchronizing between themselves:

  1. When changing the room, the room name does not update.
  2. When changing the room, the X and Y coordinates stay the same so the map may be way out of the location picker.
  3. When the SAVE room is not in the picker, the "Show only SAVE locations" control needs to be updated to reflect that.

This could be solved by extracting location-related controls into a separate component with state of its own.

Areas with kills left

The Genocide Route kills table could display a "where" button that shows you the maps on which more monsters are left to kill.

Better description of Flowey petal attacks

Currently, in the temporary save editor, Flowey's regular attacks are just named "Attack 1", "Attack 2"... they should have more descriptive names so that players know which attacks are they selecting.

Get current save/section through context instead of props

Many times in the code, there are repeating save="save" section="Save1" and similar constructs. We know that for the same save editor the same save should be edited, and for the same section of the editor (usually) the same section of the save file should be edited, so we could pass this information through context. This information never changes, so we don't need to worry about useless re-renders.

Synchronize battle stats between different controls

Similarly to #2, battle stats need to change whenever equipment or LV changes. This is pretty important because it's not obvious at all that when changing equipment, primary/secondary AT/DF should be changed as well.

Doing 5 damage to Flier

When doing a genocide route, I set all my stats to 9999999999999999999999 and gave myself friendliness pellets and yet I still do 5 damage to flier, did I set the values to high or is this a bug? [[NOTE]] I set myself to LV.20 but then I killed a Flier I went to LV.21.

Finish the Ruins, Snowdin, Dunes, Steamworks... sections

These unfinished sections are supposed to contain many important flags we discovered so far, such as which bosses have been killed. Not all flags should be listed under these sections, but the ones we discovered so far seem important enough to be added.

Axis fixer

Detect when users load a save file where a Genocide Route has been aborted in the Steamworks by going past the point where the encounter list is cleared, and ask them how they want to fix it (restore encounters, set Genocide as complete).

Wrong save room name

"Factory - Offices [SAVE]" should be the third floor of the Steamworks Factory, but that room is currently named "Factory - Third Floor". This issue is for me to check out what's with that.

Allow user template deletion

Currently, users can only save their user templates, but not delete them. Once their user template storage overflows, removing specific user templates is not going to be very easy without an interface for it.

Axis fixer does not fix the level

If the user has already passed Axis, and loads the save file, the editor fixes them back onto the Genocide Route but does not update the level to LV 19.

Pass save file data through props instead of context

Right now, all saves are under the same context and controls that modify save file data (all of them) use the same context. This means that all the controls re-render whenever any control changes save file data. This does not currently create performance issues (aside from ones with the Steamworks ID editor... which were patched rather horribly) because the editor is not very big, but could create them in the future.

The solution to this is to have save files as state in the app, passed to their respective editors and controls through props. This way, only controls whose values were actually changed get re-rendered.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.