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

✨ [Modders and game devs] What's the 3 features you need the most? #15092

Closed
Zughy opened this issue Aug 31, 2024 · 30 comments
Closed

✨ [Modders and game devs] What's the 3 features you need the most? #15092

Zughy opened this issue Aug 31, 2024 · 30 comments
Labels
Discussion Issues meant for discussion of one or more proposals @ Meta Not strictly related to MT development

Comments

@Zughy
Copy link
Contributor

Zughy commented Aug 31, 2024

After a discussion on IRC, I thought of running this experiment, similar to #14004

If you're a developer and/or a server admin, list here the 3 features you need the most to turn ideas into reality. To do so, justify every point with a short description. I'll then go through every issue and decide whether to label it as "high priority" or not (to justify the criteria: I've been modding and owning a server for 4 years now, and I work as a Minetest game dev consultant. Minor: I'm the one with the most useful reviews on CDB).

Rules:

  1. link features by following the format below
  2. justify your choices, e.g. why is so important to you? Would it be a game changer in the gameplay experience etc.
  3. keep it short
  4. at least one feature must not be yours: I think it might be useful for everyone if we look around us
  5. Let's avoid comments not following the format. If you want to correct what's been said by another user, it's fine. If more messages about the thing starts, it's not fine and they'll be hidden

Format

**What I do**:  
<!-- your CDB profile, MT server and/or an external link. Short descriptions such as "I'm an educator who.." are fine as well -->

**Features**:
1. link + reason 
2. "
3. "
@Zughy Zughy added Discussion Issues meant for discussion of one or more proposals @ Meta Not strictly related to MT development labels Aug 31, 2024
@Zughy Zughy changed the title [Modders and game devs] What's the 3 features you need the most? ✨ [Modders and game devs] What's the 3 features you need the most? Aug 31, 2024
@Zughy Zughy pinned this issue Aug 31, 2024
@sfence
Copy link
Contributor

sfence commented Aug 31, 2024

Mods and etc.:
https://content.minetest.net/users/SFENCE/

Features:

  1. Spread ABM scheduling across multiple globalsteps without lagspikes #14011 -> Because developers of some games (Exile etc.) are fighting with this and have to create crazy go-around code (Allow registering, removing and modifying LBMs and ABMs on the fly #13112). Changing chance and time is not always a solution, because it also affects probability distribution, especially for multiple-step events.
  2. Allow on_generated to hook different stages of the mapgen process #14911 -> Greate for Lua mapgens (do not have to include decoration generate), also useful for mods trying to change stone layers based on some not integrated algorithm, mod witch adds dimension layers, etc.
  3. Fix camera to follow player eyes when player is attached  #14231 -> Advtrains view bug: https://forum.minetest.net/viewtopic.php?t=28254&hilit=advtrains+camera+offset, plane mods from Apercy, everything mod which attaches the player to object with free move and rotation in space.

@lhofhansl
Copy link
Contributor

lhofhansl commented Aug 31, 2024

@sfence Can you outline what exactly is the issue with ABMs that requires the work-arounds? (maybe in #14011). I feel like there's a lot of confusion around this.

@sfence
Copy link
Contributor

sfence commented Aug 31, 2024

@sfence Can you outline what exactly is the issue with ABMs that requires the work-arounds? (maybe in #14011). I feel like there's a lot of confusion around this.

The typical problem is that you want something to happen and be a little predictable. You can add a timer everywhere, but it can cause lags. You can use ABMs, but they can be skipped for many nodes. If the server maintainer starts to play with the server step (100/50ms) big effect on ABMs can be expected. The maintainer now has nothing to do with it without changing all ABM parameters game environment reactions, and mechanics. It can affect flora growing, lava cooling, terrain terraformation, fire behaviors, etc..
I think that making ABM spreadable over more global steps can help with this problem. As a bonus, it allows better use of the server performance in time and probably also a better player experience. The environment will react more predictably also on busy servers.
I have noticed that the servers are doing nothing most of the time and then suddenly there is a rush of ABM calls and ABM skipping and then nothing again. And there is no performance reason for skipping them. If the remaining ABM is done in other steps it will result only in a better and more predictable environment. On the PvP server, smaller server steps can be the difference between life and death and 200ms is a long step for PvP.

@ryvnf
Copy link
Contributor

ryvnf commented Sep 1, 2024

What I do:
I am maintaining Mineclonia together with cora. Most of my time goes to that project but I am also experimenting with creating my own survival sandbox game on the side.

Features:

  1. Change light banks meaning to sunlight/artificial #5155 Implementing this allows for having natural light be blended fully with artificial light. Currently color blending is constrained by information lost due to the data format. This feature would open up possibilities for lots of visual improvements, especially when combined with more customizable lighting. It would also make minetest.get_natural_light more performant.
  2. Flowing Liquids Should Not Use Param2 For Flow Direction #12897. It is really about adding paramtype2 "colorflowingliquid". Allows for coloring water differently depending on biome. Currently it is only possible to color water source blocks which looks ugly when their flowing counterparts are not colored.
  3. Dual wielding (revival) #14427. Mineclonia has offhand but there is no way to render multiple wielded items. Our workaround is to draw the 2D inventory image of items held in the offhand which does not look very good. If this gets implemented we can render those in 3D like the primary hand.

Edit: Rephrased the first feature request after @nauta-turbidus's correction

@kromka-chleba
Copy link
Contributor

What I do:
I made multiple contributions to Exile such as 3D models, seasonal changes, performance improvements, etc.

I'm also making my own horror game called Perfect City (very early dev stage).

Features:

  1. Colored lighting #2670 it would greatly improve immersion and mood of my game, for example I could do orange lights for sodium street lights or red lights for some nightmarish locations.
  2. Optimize map rendering #10647 as above, higher view range would improve immersion
  3. Need for client-server time synchronization #15014 I could be mistaken but I believe this is one of the things responsible for lags that are visible for example when server sends mapblocks to the client.

@nauta-turbidus
Copy link
Contributor

@ryvnf Actually, natural light does have a different color than artificial. See vertex shaders for details.

@ryvnf

This comment was marked as off-topic.

@nauta-turbidus

This comment was marked as off-topic.

@kromka-chleba

This comment was marked as off-topic.

@jeremyshannon
Copy link
Contributor

jeremyshannon commented Sep 1, 2024

What I do:
Lead developer of Exile. Sometimes I contribute a thing to other projects as well, and I wrote VH1, a little mod to add hp bars over mobs' and players' heads

Features:

  1. SSCSM execution #13046 An obvious big one, Exile needs this for better handling of controls (AUX1 in particular) The CSM I wrote is a poor substitute
  2. Let games override world creation/configure window #5332 Edit: Going to add my support to rudzik's for this. We have a number of features that could do with a way to set them at world creation.
  3. Tracker music support #3878 Not important, but would be nice to have. I wanna sit in my cave and play a flute carved from wood or bone, and tracker music support could let me compose my own songs on the fly instead of just playing a canned song

@corarona
Copy link
Contributor

corarona commented Sep 1, 2024

mineclonia, several mods (some on cdb, most on https://codeberg.org/cora) , my own wip game, oysterity anarchy server

  1. Add minetest.generate_biomes and minetest.generate_biome_dust #14260 - this would make lua mapgens a lot more attractive
  2. Support setting camera roll via lua #14333
  3. Also agree with what's been said about ABMs however maybe it would be easier to simply add more conditions to where ABMs apply e.g. biomes or make more complex nodename/neighbor conditions possilbe ( Combined criteria in ABM neighbors field #13173 )

@Xeno333
Copy link
Contributor

Xeno333 commented Sep 2, 2024

I develop for a fork of mineclonia for my server Imperium (xeno333.github.io/Imperium-site), I also do other mods, and game dev.

  1. Add Aux2 key for games to use freely, and maybe Aux3, Aux4, etc.? #11446 Where to start on this one... modders can realisticly only use zoom or aux1 for anything and in practice its better to use a key combonation. It causes a lot of conflicts with other mods and/or player confusion. A dedicated mod key(s) is a MUST.
  2. Allow mods to detect damage greater than the player's health #14344 Really really need this for armour bugs.
  3. Ambient light and server control for it #14343 Lighting for caves and demensions.

@kno10
Copy link
Contributor

kno10 commented Sep 2, 2024

What I do:
I play with my kids, and try to fix bugs that annoy me (e.g., the collision with bouncy blocks bug #15029 that causes villagers to bounce through the roofs when there is lag).

Features:

  1. Waterlogging of nodes Liquidlogged nodes #14480.
  2. New pathfinder (extensible, fewer limitations) #5479. The pathfinder of the minetest engine is very poor:
    • it only supports mobs of height 1
    • it does not work with the fences of Voxelibre, Mineclonia, etc. that are slightly taller than one block, and cannot be jumped over with jump height 1
      This causes villagers to be stuck very often, in particular at fences and various decoration because the pathfinder tells them to jump over them.
  3. get_node_raw/set_node_raw API, coordinate-based APIs instead of vector-based APIs.
    • There is the minetest policy not to "clutter" an API, but I prefer to have different levels of working. Right now, we have the core get_node API, the voxelmanip get_node_at API (which is less optimized, lacking the equivalent optimizations of Implement get_node with a get_node_raw #14384), and the voxelmanip get_data API (that copies the entire area into a lua array of boxed numbers, so likely some 16 bytes per entry?). I would like to have core.get_data_raw a public API as well as voxelmanip.get_node_raw, if you need to access only a subset of the nodes in a particular area. This API allows working with node ids, without making a lua copy of the entire area as in voxelmanip.
    • There are many cases where a coordinate-based API can be more elegant than a vector-based API (and more efficient).
      For example, get_node_raw(x, y + 1, z) vs. get_node(vector.new(x, y + 1, z)) or get_node(vector.offset(pos, 0, 1, 0))). Once you need to offset positions, the vector API can become less elegant than raw coordinates (and is supposedly less efficient because of the tables).
    • you might only want to lookup the node groups, not be interested in the name or anything else registered_nodes by id, not name? #14967
  4. better support for spawning larger structures / decorations
    Right now, mods typically hook into the decoration API, place a 1x1x1 temporary block, then try to emerge a sufficiently large area (which can cause trouble if there are many structures and these areas overlap a lot, triggering recursive emerges) to place the structures. But for very large structures and when the player is moving fast, this may affect areas close to the player.
  5. add an optional priority to minetest.register_decorations to make the placement order more deterministic. This allows placing more important structures first, less important ones such as grass later.

@MisterE123
Copy link
Contributor

MisterE123 commented Sep 2, 2024

What I do: Make minigames (for fun and for money and sometimes host them on servers.

  1. Manual management of client media (replacing, dropping) #11640 or similar. Some way to unload media from the client's cache. My use case, one of many, is a custom HUD minimap that is generated by the server. Currently (using texmods), the client would consume something like a GB in 40 mins of gameplay or so. Other usecases include TVs, Digiscreens, and much more.

  2. Voxel Area Drawtype for Entities #10153 Voxel area entities with good collision physics. Modders (apercy, sumi, greenxenith) have already tried making large vehicles. They are simply limited by the engine. VAE + physics would be very useful for some minigame ideas as well.

  3. SSCSM execution #13046 SSCSM. I think we can all agree that this is limiting modders alot. FPS (Blockleague minigame, 4dguns), My Blockbomber minigame, HUDs that stay up-to-date despite lag, etc.

@ancientmarinerdev
Copy link

ancientmarinerdev commented Sep 2, 2024

Thanks for raising this issue, Zughy.

I'm a former maintainer of VoxeLibre/MineClone2. Created a skyblock mod for it and have been working on a prototype tower defence game.

For me, priorities are as follows:

  1. ABMs have so much potential, but most useful stuff goes on the global step as they're unreliable. They need to become less unreliable, and spreading over multiple globalsteps could help with this: Spread ABM scheduling across multiple globalsteps without lagspikes #14011
  2. Ambient Light (Ambient light and server control for it #14343) - Overall gameplay is poor in dark caves and darker dimensions like the nether. Currently there is no good way for mod developers to help improve this. Ambient light would help massively with this.
  3. A granular level of collisions. Rather than things colliding into nodes or objects or not, things should be configurable. Godot has layers. Unreal has a form of tagging to determine what something does and doesn't collide with. This would be useful for example in tower defence games where an entity may need to collide with another entity (arrow), but not collide with another unit (for example if it's faster and needs to phase through it. This issue has also created hacks in MCL type games when it comes to pushing cows, but them not being able to stand on each other. As a result, the implementation is pretty poor.

@Zughy

This comment was marked as off-topic.

@Zughy
Copy link
Contributor Author

Zughy commented Sep 8, 2024

My two cents. I've tried to think of things games might need in general, and not features specifically for my content:

What I do
See first message

Features

  1. Font media files #10416 : in order to customise the experience, we can't keep going on with the default font. I can't name all the times that the default font has ruined a well designed UI/HUD
  2. Colored lighting #2670 : as said above by different people, it allows creating different atmospheres
  3. Custom footstep sounds while sneaking #13639: this breaks the immersion so much. I'm sneaking, I'm not supposed to make any sound (or at least not as much as when walking/running). Very annoying in multiplayer

EDIT for the people above: it makes little sense linking PRs, especially if they're already in a milestone :P

@DragonWrangler1
Copy link
Contributor

DragonWrangler1 commented Sep 10, 2024

What I do:
I’m a very active modder, main developer of VoxelForge and make shaders For Mt.

Features:

  1. Colored lighting #2670. Why ? In order to have different colored nodes emit different colored light
  2. Something along the lines of Refactored the liquid system, and added an optional feature for liquids to flow to the next slope. #13764. Why ? Because current liquids are too messy and annoying ,something like that would allow for games to better control how much flooding their liquids do.
  3. Allow games to have and set their own shaders. #15145 Add a feature that allows games to set their own shaders (per game). Why ? this would allow for more diversity between games. Though still limited by what the engine allows.

@swagtoy
Copy link
Contributor

swagtoy commented Sep 10, 2024

What I do:
I'm working on temple_game. I've worked on some patches for the Minetest Engine but I haven't had time to complete them.

  1. Multiple worlds/dimensions in the same world (no :airquote: """dimensions""" :airquote: at the top/bottom of the world hacks). See Different "Dimensions" / Other worlds #4428.
  2. Better biome mapgen (I dont know anything about how v7 and stuff works but my buddy was complaining)

I'm sure issues exist but I will look at them later. Chances are I will implement the first one myself.

@DragonWrangler1

This comment was marked as off-topic.

@FreeLikeGNU
Copy link
Contributor

FreeLikeGNU commented Sep 11, 2024

What I do:
FreeLikeGNU I make mods like goblins that can work with several games (and make use of their existing content)

Features:

  1. Allow content to specify supported_games particularly on the subject of alternative depends. Why? Optional depends does not really make clear what is needed to run a mod for a number of games. For instance [goblins] can use mobs or mcl_mobs but it MUST have one OR the other. I think that instead of declaring | in "depends", I would like an "alt_depends" (to not break existing mod.conf settings) in which to define mods that must be present, but mutually exclusive.
    alt_depends = mobs | mcl_mobs, flowers | mcl_flowers | hades_flowers

@swagtoy

This comment was marked as resolved.

@DragonWrangler1

This comment was marked as off-topic.

@Zughy
Copy link
Contributor Author

Zughy commented Sep 13, 2024

I'd like to close this issue at the end of September, just to let people know

@FreeLikeGNU

This comment was marked as off-topic.

@appgurueu

This comment was marked as off-topic.

@nauta-turbidus
Copy link
Contributor

What I do:
Maintainer of VoxeLibre.

Features:

  1. Decouple Ambient Occlusion from Shadows #15176 This is needed to push Ambient Light over the line, and Ambient Light would be very versatile if it worked properly. I think we all understand the importance of it by now.
  2. Lua API for providing a custom biome system #5228 This could allow eg. biome generation based on a provided map. Think implementing a specific fantasy world with a specific map. If you need eg. mountain ranges in specific places (eg. for some Lord of the Test revamp), you'd have to do a bunch of Lua mapgen anyway, but in other cases custom biome system (or custom heat/humidity system, eg. based on a provided image and interpolation between values of the pixels) would be all it takes to make a map of a specific world, with different terrain each time. Currently the only workaround is to abuse min/max x/z in biome definition, and setting all biomes manually, which in some cases may be incredibly tedious.
  3. Animated item textures in the inventory #4758 All sorts of magical items for all sorts of games and mods could get a shiny animation. Fire (eg. torches?) carried in the inventory could get a shiny animation. Live animals carried in the inventory could be animated. All sorts of creative possibilities.

Aside of that, I'd support HUD meshes a lot, they'd be very useful for various projects, but it doesn't have a dedicated issue to my knowledge, and I decided not to have two of my own issues here.

@cx384
Copy link
Contributor

cx384 commented Sep 28, 2024

What I do:
I make casual Minetest content, the first mod back in 2014, but I haven't been really active in recent years. However, I took this as an opportunity to think about things I'm missing in Minetest.

Features:

  1. SSCSM Server-provided client-side scripting #5393
    It was already planned in 2015 by CSM: Ability to inject from server-side mod #3440, but there has not been a lot of progress recently, and it's holding Minetest development back, since it is required/would be beneficial for a lot of features I would like to have.
    e.g. dynamic formspec changes, entity movement prediction, complex custom player physics, and other rendering/graphic effects, such that the server does not have to send them every time.

  2. VAEs https://dev.minetest.net/TODO#Voxel_Area_Entities
    also see Different "Dimensions" / Other worlds #4428
    I mainly want it to be able to create a game like StarMade with Minetest.
    i.e. build/dig/move/walk-able spaceships, planets, asteroids, ...
    It could also be used to add smooth and diagonal movement to the digtron mod.

  3. Adjacent node dependent tiles / Connected textures #15203
    In my opinion, connected textures look very nice. Most 2D games have nice texture tiling, but in three dimensions a fixed number of nodes for all possibilities is not feasible. Minetest is missing this for a long time, maybe I will make it happen eventually.

@farooqkz
Copy link
Contributor

farooqkz commented Sep 29, 2024

What I do
I contribute to Minetest CTF(link and open PRs I have). I am also doing some stuff around voice ML, Mozilla Common Voice(we get next why this matters!)

Features

  • SSCSM Server-provided client-side scripting #5393. Imagine creating a game with which people contribute to Mozilla Common Voice. Contributions to MCV are either by saying or hearing. The hearing part is easy, you dynamically load the binary blob and then play it with the sound play API. But recording voice is not currently possible in Minetest. But if the server could tell the client to load a CSM which records audio and sends it to some server API, the record part of contributing to Mozilla Common Voice could be solved too. It could also have other applications. Such as in CTF I will suddenly shout "shangul! there is a red behind you!" while holding some key to record.
  • The data structure problem with active objects #14613 Not sure if I should include this here. But in PvP servers such as CTF, every single decisecond counts. Small amounts of lag still can be annoying. This could help reduce load on the server and therefore less lag or cheaper server costs.
  • Minetest doesn't support RTL languages (Arabic, Hebrew and Persian) #4637 This is really cumbersome others can chat in their own language but we can't chat in our native language. When you type Persian text into chat, nothing is shown. The same goes for Arabic as they are basically the same script. As for Hebrew, it is easier as to my knowledge Hebrew letters have the same connection no matter where in the word they are. I think some letters have different shapes when in the end of some word. But it's much easier than Arabic and Persian for sure. Also remember MCV? Two other ways to contribute to MCV is through writing and reviewing written sentences.

@Zughy
Copy link
Contributor Author

Zughy commented Sep 29, 2024

Thanks everyone for participating. In general, I've tried to label at least one issue as "High priority" per comment; and, even if your issues didn't receive a "High priority" label, rest assured core devs definitely noticed (several issues received new comments). Closing!

@Zughy Zughy closed this as completed Sep 29, 2024
@Zughy Zughy unpinned this issue Sep 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Discussion Issues meant for discussion of one or more proposals @ Meta Not strictly related to MT development
Projects
None yet
Development

No branches or pull requests