Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature Suggestions & Backlog #13

Open
30 of 45 tasks
Malacath-92 opened this issue Apr 25, 2021 · 20 comments
Open
30 of 45 tasks

Feature Suggestions & Backlog #13

Malacath-92 opened this issue Apr 25, 2021 · 20 comments
Labels
bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request

Comments

@Malacath-92
Copy link
Collaborator

Malacath-92 commented Apr 25, 2021

This is just a rough backlog on what would be interesting to look at, it's not a guarantee that any of this makes it into Playlunky. The list is in order of priority. Please comment here if you have any other suggestion for features. As soon as someone decides to work on one they should open a separate issue for it and probably make a feature branch, you know, git etiquette..
The list is written from a developer perspective, so might not make sense to a user. Some points might be more fitting for the game-api or meta, but fret not, this is just a random list so it's allowed to contain illogical stuff.

  • Shuffle level gen mods
  • Add PRE/POST transition level generation
  • Create an interface to load Playlunky and only convert mods to a packable state
  • More enums instead of magic numbers
  • Level-Gen: biome-specific floor tile codes
  • Level-Gen: pass spawned entities to post_tilecode
  • Option to block saving the game to savegame.sav
  • Shipping mods with savegame.sav, loading from that and saving to it
  • Option to disable achievements
  • More sample mods
  • Multithread some mod init?
  • Changing constellation names
  • Adding new characters
  • Adding new entities
  • Some magic to help figuring out whether a character mod was renamed and thus adjusting which char some code affects

In Review:

Done:

  • Hitbox utilities (for draw functions and overlap checks)
  • Add draw functions to a context
  • Bug: Korean language mod can't be unzipped
  • Bug: Audio data is currently copied for no reason (needs 16 byte padding left and right to avoid)
  • Bugfix: Don't print script errors a billion times
  • Bugfix: Add pet menu sprite to pet entity sheets (credit to gmjosack)
  • Bugfix: Sprite settings invalidate cache
  • Bugfix: Cap num messages from scripts
  • Bugfix: Bind old and new entity sheets for pets/mounts
  • Bugfix: Scaled input for stickers
  • Bugfix: Still some duplicate messages
  • Level-Gen: Procedural entity placement hooks
  • Level-Gen: Post-Room-Gen hook
  • Level-Gen: Post-Level-Gen hook
  • Add getters for character def (name, heart color)
  • on_entity_spawn
  • spawn_liquid
  • Adding new in-engine textures
  • Gender control for characters
  • Hot-reload heart color
  • Per-mod save data API
  • Extended API for existing audio Load list of properties and events overlunky#67
  • Shipping with custom tile mapping data
  • load order == script execution order
  • Less visible watermark during gameplay
  • Watermark during gameplay only if non-character mods
  • Speedrunning support (speedrunner mode)
  • Modify char name in main menu
  • Changing character heart colors
  • Basic Level Gen API
@Malacath-92 Malacath-92 added bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request labels Apr 25, 2021
@gmjosack
Copy link
Member

Pet menu added to pet entity sheets

@Mr-Auto
Copy link
Contributor

Mr-Auto commented May 30, 2021

"Option to block saving the game to savegame.sav" wouldn't be easier just to make copy of the savefile at the start and then replace it after finish, i guess it depends what this point actually means.

Suggestion: can we look on how the entities are controlled? we can see button presses in movable, but can't force them, is it just a read only and the controls are done differently? there is also the whole logic of they behavior

@Malacath-92
Copy link
Collaborator Author

@Mr-Auto: It sounds sensible but that's not possible. There's no guarantee that the game shuts down cleanly, so if that doesn't happen we can't copy back the save data. It's also just much cleaner and more accurate to the intent to just not write to the save file as opposed to moving files. The intent is to let people play the game with mods without unlocking new things, some people might not want to unlock stuff while having mods that make the game easier for example.

Regarding your second point I don't know much. Only for HH and the Player I have some idea, but I never even looked at the buttons field of other entities.

@C-ffeeStain
Copy link

Could we please get "community rules" like we have "community tilecodes"?

@Malacath-92
Copy link
Collaborator Author

@C-ffeeStain could you share some links or explanations around what "community rules" would mean, how they would work and even what "vanilla rules" are doing right now?

@gmjosack
Copy link
Member

gmjosack commented Jun 7, 2021

Custom Level Improvements

Custom Generation

Currently a level will use specific templates depending on the type of level generation. For example 1-1 will never look for and use setroom templates as it expects to be procedurally generated. It would be nice if possible to tell a level to use setrooms for creators who want to build a non-procedural level.

Custom Level Files

To expand on the previous section, currently we have very limited ability to override an area per level. There are some areas that get custom overrides like jungle has blackmarket, tidepool has lake and lakeoffire, etc. dwelling for example doesn't have any overrides other than 1-4. If someone wanted to build a non-procedural experience for dwelling they'd end up with the same level played 3 times. It would be nice if we had some possibility of override per level within an area to support different setrooms for levels 1,2,3,4, etc. We might want to allow this to be dynamic for example if someone wanted to build a longer dwelling mod. (dwelling is just being used as an example here, this applies to all areas)

Expanded Rules

Currently 1/N spawns for traps and monsters are hard coded per area. e.g. you can only do a percentage spawn of moles in dwelling or 1/N spawn. Expanding support for all monsters/traps to have percentage based spawn rules in all areas would be helpful.

@C-ffeeStain
Copy link

also, it would be nice if when we get the community rules, if we could define the spawn conditions such as

rule_spawn_condition(function (x, y, layer)
  if get_entities_at(x+1, ...) == {} then -- if nothing to the right of this tile
    spawn_entity(ENT_TYPE.MONS_SNAKE, ...) -- spawn the snake
  end
end, "snake") -- would override default game rule handling for rule \+snake

@Malacath-92
Copy link
Collaborator Author

@C-ffeeStain I would imagine the interface for the procedural spawns to be the same as it is for tile codes, so exposing a set_pre_procedural_spawn and a set_post_procedural_spawn. We'll see how that pans out, if it is possible or not.

@Dregu
Copy link
Contributor

Dregu commented Jun 29, 2021

Manually updating decorations on newly spawned blocky floor tiles etc. would be sweet!

@Mr-Auto
Copy link
Contributor

Mr-Auto commented Jul 2, 2021

can we get:
get_heart_color
is_female
set_heart_color
for characters that are not in the current level? maybe as entityDB functions?

@Malacath-92 Malacath-92 changed the title Project Backlog Feature Suggestions & Backlog Jul 6, 2021
@Autumnagnificent
Copy link

Using custom .lvl files
Maybe New worlds/themes

@gmjosack
Copy link
Member

gmjosack commented Jul 6, 2021

Might be neat to specify the full level file hierarchy so you could say

["generic.lvl", "custom-level.lvl"]

or any other hierarchy you want

@Mr-Auto
Copy link
Contributor

Mr-Auto commented Aug 13, 2021

sound callback giving you entity that produced the sound, and position
also ability to set position for sound you start, so the game handles the volume correctly

@Dregu
Copy link
Contributor

Dregu commented Aug 13, 2021

A proper detoured callback for the current ON.LOADING stuff and/or something that runs right after the prng is initialized with a new seed.

@Mr-Auto
Copy link
Contributor

Mr-Auto commented Nov 2, 2021

Changing constellation names

this is done with the strings functions, unless you want to make special function for it or not overwrite when language change

@gmjosack
Copy link
Member

gmjosack commented Jan 9, 2022

Composable dmpreview.tok

dmpreview.tok provides the previews for arena levels in the menus:

image

Now that we understand the format for dmpreview.tok it'd be neat to try to auto generate and update the dmpreview.tok for any arena files included in a mod.

and/or

provide a more composable format such as dm1-1.preview that contains the byte preview for only a single level.

@Malacath-92
Copy link
Collaborator Author

Do we understand just the format or also how the game uses it? For example, is it possible to add new arena levels there (and for arena in general)?

@gmjosack
Copy link
Member

gmjosack commented Jan 9, 2022

The game only uses these to display a preview of the level and is orthogonal to the level files themselves. Currently the game just has 40 hard coded arenas and this file has the previews for all 40 arenas. People like to make arena packs but the previews don't get updated currently. Now that we know the format we have a few options. I could write something to just generate these and people could ship it with their mods but it loses composability. It might be annoying to rewrite the level parser for playlunky so another option is individual preview files I could make a tool to make them from modlunky easily and playlunky just merges them.

@Malacath-92
Copy link
Collaborator Author

Maybe we don't have to rewrite the level file parser, maybe we can load the level in-engine and pull all data we need from there. I'd have to look into how likely that is to work (or not work I guess) and if it does we can auto-generate these in Playlunky. Otherwise something mergeable as you suggest would be rather simple as well and it would most likely produce faster results.

Now that we talk about this though I'm curious as well whether we could load more than those 40 level files.

@gmjosack
Copy link
Member

gmjosack commented Jan 9, 2022

One thing I did learn this morning is there is a lot of space for adding your own symbols as well so I wonder if we wouldn't want to leave open the option for people to make their own previews with additional symbols which makes me think having something merge-able would be good regardless, with a stretch goal for automating previews if no custom one is provided.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

6 participants