Administrator reports: y_bows Arrow spam via rapidfir ... #6055

Closed
opened 2024-01-23 16:48:31 +00:00 by yourland-report · 15 comments

Administrator reports a bug:

y_bows Arrow spam via rapidfire: Repro: Shoot "downwards" and leftclick as fast as you can

Player position:

{
	z = 1130.5419921875,
	x = 2246.7690429688,
	y = -4.3619999885559
}

Player look:

{
	z = 0.92200523614883,
	x = -0.38417133688927,
	y = 0.048152461647987
}

Player information:

{
	formspec_version = 7,
	max_rtt = 0.24400000274181,
	ip_version = 6,
	min_rtt = 0.014000000432134,
	avg_rtt = 0.016000000759959,
	min_jitter = 0,
	max_jitter = 0.22800000011921,
	avg_jitter = 0,
	connection_uptime = 636,
	protocol_version = 43,
	patch = 0,
	minor = 9,
	state = "Active",
	version_string = "5.9.0-yl-699d1bf27",
	lang_code = "de",
	serialization_version = 29,
	major = 5
}

Player meta:

{
	fields = {
		punch_count = "749",
		played_time = "4491068",
		digged_nodes = "75793",
		placed_nodes = "125890",
		["stamina:level"] = "0",
		crafted = "177",
		["stamina:poisoned"] = "no",
		["unified_inventory:bags"] = "return {\"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\"}",
		["stamina:exhaustion"] = "92",
		yl_commons_thankyou = "17",
		arenalib_infobox_arenaID = "0",
		repellant = "0",
		["y_bows:drawing_elapsed"] = "2",
		["ethereal:fly_timer"] = "-99",
		lagometer = "1",
		died = "185",
		xp = "0",
		hud_state = "on",
		yl_church = "return {[\"last_death\"] = {[\"y\"] = 54, [\"x\"] = -3844, [\"z\"] = -5201}}",
		["ocean_build.ocean_built"] = "4",
		yl_commons_player_joined = "1706027877",
		["3d_armor_inventory"] = "return {\"\", \"\", \"\", \"\", \"\", \"\"}",
		inflicted_damage = "18200",
		["ocean_build.last_warning"] = "1705058032",
		["y_bows:drawing_name"] = "y_bows:bow_steel",
		bitten = "0",
		["signslib:pos"] = "(2098,15,1304)",
		["sethome:home"] = "(2218.833984375,40.9880027771,981.63397216797)"
	}
}

Log identifier


[MOD] yl_report log identifier = hIanqKqyo7muZDdwoILp11nVk9DJvz8v

Profiler save:

profile-20240123T164831.json_prettyEE

Status:

# Server: version: 5.8.0-yl-test | game: Minetest Game | uptime: 17min 50s | max lag: 0.484s | clients (4/52): Administrator, AspireMint, JeCel, whosit

Teleport command:

/teleport xyz 2247 -4 1131

Compass command:

/give_compass Construction hIanqKqyo7muZDdwoILp11nVk9DJvz8v D2691E 2247 -4 1131
Administrator reports a bug: > y_bows Arrow spam via rapidfire: Repro: Shoot "downwards" and leftclick as fast as you can Player position: ``` { z = 1130.5419921875, x = 2246.7690429688, y = -4.3619999885559 } ``` Player look: ``` { z = 0.92200523614883, x = -0.38417133688927, y = 0.048152461647987 } ``` Player information: ``` { formspec_version = 7, max_rtt = 0.24400000274181, ip_version = 6, min_rtt = 0.014000000432134, avg_rtt = 0.016000000759959, min_jitter = 0, max_jitter = 0.22800000011921, avg_jitter = 0, connection_uptime = 636, protocol_version = 43, patch = 0, minor = 9, state = "Active", version_string = "5.9.0-yl-699d1bf27", lang_code = "de", serialization_version = 29, major = 5 } ``` Player meta: ``` { fields = { punch_count = "749", played_time = "4491068", digged_nodes = "75793", placed_nodes = "125890", ["stamina:level"] = "0", crafted = "177", ["stamina:poisoned"] = "no", ["unified_inventory:bags"] = "return {\"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\", \"unified_inventory:bag_large\"}", ["stamina:exhaustion"] = "92", yl_commons_thankyou = "17", arenalib_infobox_arenaID = "0", repellant = "0", ["y_bows:drawing_elapsed"] = "2", ["ethereal:fly_timer"] = "-99", lagometer = "1", died = "185", xp = "0", hud_state = "on", yl_church = "return {[\"last_death\"] = {[\"y\"] = 54, [\"x\"] = -3844, [\"z\"] = -5201}}", ["ocean_build.ocean_built"] = "4", yl_commons_player_joined = "1706027877", ["3d_armor_inventory"] = "return {\"\", \"\", \"\", \"\", \"\", \"\"}", inflicted_damage = "18200", ["ocean_build.last_warning"] = "1705058032", ["y_bows:drawing_name"] = "y_bows:bow_steel", bitten = "0", ["signslib:pos"] = "(2098,15,1304)", ["sethome:home"] = "(2218.833984375,40.9880027771,981.63397216797)" } } ``` Log identifier ``` [MOD] yl_report log identifier = hIanqKqyo7muZDdwoILp11nVk9DJvz8v ``` Profiler save: ``` profile-20240123T164831.json_prettyEE ``` Status: ``` # Server: version: 5.8.0-yl-test | game: Minetest Game | uptime: 17min 50s | max lag: 0.484s | clients (4/52): Administrator, AspireMint, JeCel, whosit ``` Teleport command: ``` /teleport xyz 2247 -4 1131 ``` Compass command: ``` /give_compass Construction hIanqKqyo7muZDdwoILp11nVk9DJvz8v D2691E 2247 -4 1131 ```
AliasAlreadyTaken was assigned by yourland-report 2024-01-23 16:48:31 +00:00
AliasAlreadyTaken added the
1. kind/bug
label 2024-01-23 17:24:09 +00:00
Member

why is this a bug? what's the expected behavior? currently, if you don't wait until your bow is charged, your arrows won't go very far at all, and you'll just end up wasting arrows.

why is this a bug? what's the expected behavior? currently, if you don't wait until your bow is charged, your arrows won't go very far at all, and you'll just end up wasting arrows.
flux added this to the flux's TODO list project 2024-01-23 23:53:25 +00:00
flux added the
4. step/question
label 2024-01-23 23:53:33 +00:00
Member

Maybe there should be a minimal cooldown (like 0.2 sec or something)

Maybe there should be a minimal cooldown (like 0.2 sec or something)

I remember messing around during the y-bows testing period on the test server, and i found that machine-gunning bows was possible but just wasteful (does no damage)
In addition you didn't need to shoot just downwards anyways

I remember messing around during the y-bows testing period on the test server, and i found that machine-gunning bows was possible but just wasteful (does no damage) In addition you didn't need to shoot just downwards anyways

The issue is that when you stand on a pillar and have a crowd of scouts below, this rapidfire delivers a lot more damage without the need to draw the bow. Either a minimum drawn bow or very much reduced damage?

There is already reduced damage when the bow isn't fully drawn.

The issue is that when you stand on a pillar and have a crowd of scouts below, this rapidfire delivers a lot more damage without the need to draw the bow. Either a minimum drawn bow or very much reduced damage? There is already reduced damage when the bow isn't fully drawn.
Member

very much reduced damage

thinking on this, i realize i made a mistake - damage should be proportional to kinetic energy, i.e. (m)v^2. it's currently proportional to just (m)v. lets fix that first and see if it still lets a player drop a bunch of arrows onto mobs and cause significant damage. it done right, slow arrows should do almost no damage. drag also prevents the arrows from achieving a high velocity due to "terminal velocity" - currently drag in air has a terminal velocity below the standard initial velocity.

> very much reduced damage thinking on this, i realize i made a mistake - damage should be proportional to kinetic energy, i.e. `(m)v^2`. it's currently proportional to just `(m)v`. lets fix that first and see if it still lets a player drop a bunch of arrows onto mobs and cause significant damage. it done right, slow arrows should do almost no damage. drag also prevents the arrows from achieving a high velocity due to "terminal velocity" - currently drag in air has a terminal velocity below the standard initial velocity.
flux added
4. step/ready to QA test
and removed
4. step/question
labels 2024-01-28 00:37:31 +00:00
flux self-assigned this 2024-01-28 00:37:35 +00:00
Member

i've enforced a 0.25s cooldown between firing arrows: 5c543c5719 - which is the draw time of the wooden slingshot, so it can't reasonably be made lower without taking that into account.

i also made damage scale to v^2 c797bb292e

i've enforced a 0.25s cooldown between firing arrows: https://github.com/fluxionary/minetest-y_bows/commit/5c543c571954fee84f48c5b9ef6a719a2ef5be49 - which is the draw time of the wooden slingshot, so it can't reasonably be made lower without taking that into account. i also made damage scale to v^2 https://github.com/fluxionary/minetest-ballistics/commit/c797bb292e82c1a0f04cb71d73dfa0bd6373bef0
AliasAlreadyTaken added this to the 1.1.123 milestone 2024-01-28 00:45:33 +00:00

QA

0.25s still sounds like a lot of arrows in very little time. Maybe either the weapon or the the ammo or both should decide on the minimum loading time or maybe could modify a global timeout?

QA 0.25s still sounds like a lot of arrows in very little time. Maybe either the weapon or the the ammo or both should decide on the minimum loading time or maybe could modify a global timeout?
AliasAlreadyTaken added the
4. step/question
ugh/QA NOK
labels 2024-01-28 12:02:45 +00:00
Member

let's start from the other end: what sounds like a good timeout? given the O(v^2) damage scaling, and the fact that draw time is proportional to initial velocity, firing a bunch of arrows quickly isn't going to give you as good damage-per-second (DPS) as waiting until the bow is fully drawn.

let's start from the other end: what sounds like a good timeout? given the `O(v^2)` damage scaling, and the fact that draw time is proportional to initial velocity, firing a bunch of arrows quickly isn't going to give you as good damage-per-second (DPS) as waiting until the bow is fully drawn.
Member

Maybe either the weapon or the the ammo or both should decide on the minimum loading time

if anything, the weapon should do this, not the ammo. weapons already have individual "draw_time" values - how long you have to hold the weapon in your hand for you to fully power up the projectile. draw times are currently:

weapon draw time initial speed multiplier
wooden slingshot 0.25 0.7
steel slingshot 0.5 1.0
wooden bow 1.0 0.8
steel bow 2.0 1.2

the initial speed multiplier means that e.g. the wooden slingshot shoots projectiles at 70% of the speed of the steel one - which translates to 50% of the damage when both are fully drawn. the steel bow probably needs to be nerfed to 1.0 or 1.05, i just haven't gotten around to that yet.

> Maybe either the weapon or the the ammo or both should decide on the minimum loading time if anything, the weapon should do this, not the ammo. weapons already have individual "draw_time" values - how long you have to hold the weapon in your hand for you to fully power up the projectile. draw times are currently: | weapon | draw time | initial speed multiplier | | - | - | - | | wooden slingshot | 0.25 | 0.7 | | steel slingshot | 0.5 | 1.0 | | wooden bow | 1.0 | 0.8 | | steel bow | 2.0 | 1.2 | the initial speed multiplier means that e.g. the wooden slingshot shoots projectiles at 70% of the speed of the steel one - which translates to 50% of the damage when both are fully drawn. the steel bow probably needs to be nerfed to 1.0 or 1.05, i just haven't gotten around to that yet.

Are the initial speed multiplier in blocks per second?

If those are abstract values, but people or modmakers are meant to interact with them, I suggest using "ingame" (I was about to say "real world" :D ) values that relate to something in people's perception

Are the `initial speed multiplier` in blocks per second? If those are abstract values, but people or modmakers are meant to interact with them, I suggest using "ingame" (I was about to say "real world" :D ) values that relate to something in people's perception
Member

I don't like mentioning this, because it will make stuff even more complicated, but...

There should be a way to affect those values depending on character class, XP level and possibly some other conditions like spells/potion effects?

I don't like mentioning this, because it will make stuff even more complicated, but... There should be a way to affect those values depending on character class, XP level and possibly some other conditions like spells/potion effects?

What sounds like a good timeout depends on what we are trying to achieve.

The generic approach would be to require 25% to 50% of the maximum charge time.

The game-y approach would be to look at the effect of the arrow or the weapon or both.

If we go for realism, then we need values both on the missile and the weapon. It takes way longer time to load a fire arrow than a normal arrow and it takes way longer to draw out a stronger bow than a weaker one.

What sounds like a good timeout depends on what we are trying to achieve. The generic approach would be to require 25% to 50% of the maximum charge time. The game-y approach would be to look at the effect of the arrow or the weapon or both. If we go for realism, then we need values both on the missile and the weapon. It takes way longer time to load a fire arrow than a normal arrow and it takes way longer to draw out a stronger bow than a weaker one.
Member

I suggest using "ingame" (I was about to say "real world" :D ) values that relate to something in people's perception

it's currently displayed that way (in "nodes/second"):

image

There should be a way to affect those values depending on character class, XP level and possibly some other conditions like spells/potion effects?

good idea, i should provide an API for that, using some item_monoids similar to my toolcap_monoids mod. possibly not for release 1.0, though, we won't be using it for a while.

It takes way longer time to load a fire arrow than a normal arrow

i'm not so sure this would be true of a minetest fire arrow, which comes pre-packaged with a torch. drawing the bow otherwise isn't different for any other kind of arrow.

The generic approach would be to require 25% to 50% of the maximum charge time.

let's just go with 50% for the moment and see how that feels. 55a2f902bb

> I suggest using "ingame" (I was about to say "real world" :D ) values that relate to something in people's perception it's currently displayed that way (in "nodes/second"): ![image](/attachments/e09b6fc4-7921-4a30-926e-c03710637be4) > There should be a way to affect those values depending on character class, XP level and possibly some other conditions like spells/potion effects? good idea, i should provide an API for that, using some [item_monoids](https://content.minetest.net/modnames/item_monoids/) similar to my [toolcap_monoids](https://content.minetest.net/packages/rheo/toolcap_monoids/) mod. possibly not for release 1.0, though, we won't be using it for a while. > It takes way longer time to load a fire arrow than a normal arrow i'm not so sure this would be true of a minetest fire arrow, which comes pre-packaged with a torch. drawing the bow otherwise isn't different for any other kind of arrow. > The generic approach would be to require 25% to 50% of the maximum charge time. let's just go with 50% for the moment and see how that feels. https://github.com/fluxionary/minetest-y_bows/commit/55a2f902bb92a6ab788c3924b8d7bed9bb93e90c
AliasAlreadyTaken added
ugh/QA OK
and removed
ugh/QA NOK
labels 2024-01-30 04:24:39 +00:00

QA

Feels way better now :)

QA Feels way better now :)
flux added
5. result/fixed
and removed
4. step/question
4. step/ready to QA test
labels 2024-03-28 20:40:49 +00:00
flux removed this from the flux's TODO list project 2024-03-28 20:40:52 +00:00
AliasAlreadyTaken was unassigned by flux 2024-03-28 20:40:53 +00:00
flux removed their assignment 2024-03-28 20:40:53 +00:00
Member

this is live

this is live
flux closed this issue 2024-03-28 20:42:17 +00:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: your-land/bugtracker#6055
No description provided.