An Idea for the Ranged Combat System

A secret forum for people who preorder Overgrowth!
bernyMG123
Posts: 2
Joined: Fri Jul 13, 2012 3:24 pm

Re: An Idea for the Ranged Combat System

Post by bernyMG123 » Tue Nov 27, 2012 9:45 pm

i think it would be cool to have a bow,but,here´s my idea: the arrow/s you fire will need to be picked up to fire again. too much use of the arrows will cause them to break, forcing you to craft new ones
or just basically loot them. also, too much use of the bow will cause it to waste out, or break.

with guns/flintlocks: Ammo is scarce, gun powder should be crafted or looted, and reload time should take a -kind of- long time. guns can be broke causing you to forcibly find or craft new gun parts.

sorry for spelling mistakes and thanks for reading. i hope you liked my idea :D

Sgt. Ramen
Posts: 1
Joined: Wed Apr 18, 2012 3:56 am

Re: An Idea for the Ranged Combat System

Post by Sgt. Ramen » Fri Dec 07, 2012 9:06 am

I'm not one to offer up suggestions a lot, but I think this is a nice compromise (from what I read and skimmed, might be some overlap).

First off, forget about guns or crossbows. These are the silly ideas that get tossed around by people who don't understand the tone and feeling of this game (many suggested these things in Minecraft years back, as well). We are sticking to melee weapons thrown or bows.

The idea here is to combine both auto-aiming with contextual attacking (as is already used in the melee system). To attack with a bow, you simply face towards your target and hold down your attack button. In the background, factors such as your movement, range from a target, and health weigh in on an overall timer that, once reaching zero and the attack button being released, launches an arrow at the target. To better understand when the background factors are increasing or decreasing the timer's length, it can be represented by how long it takes Turner to draw back the bow.

When the arrow is shot, it will always hit a vulnerable spot if fully drawn back. Depending on how soon the attack button is released determines how close to hitting the target / vulnerable spots on the target you were (unarmored targets wouldn't need full draw backs, but heavily armored ones would, to ensure a lethal hit).

This same idea could be applied to conventional or unconventional thrown weapons. Light weapons like daggers and spears could use a similar "winding back" animation to prepare the throw, while heavier weapons like the hammer or a sword could rely entirely on a spinning build up before throwing.

The issue of what target you are going to aim at can become as simple as looking towards a target, picking the closest one from you/your view, and then locking Turner's body to face that direction while moving (with again, longer firing times happening as you move, and possibly tripping).

The question is how to apply the melee weapon throws in a way that keeps Overgrowth's simple combat interface intact while still giving the options of dropping weapons, sheathing them, swinging them, or throwing them. Perhaps after a certain range, they revert to melee function when using the attack button.

So that is my take on this issue. I think it is still pretty sloppy, and still doesn't factor in many things (including enemy ranged attacks), but that was the easiest way I saw ranged combat happening while still presenting some kind of player input.

Also, I just wanted to mention that, while inappropriate for Overgrowth in particular, I thought the "rabbit-ears as crosshairs (crosshares? kill me)" idea was pretty cute.

User avatar
Endoperez
Posts: 5668
Joined: Sun Jan 11, 2009 7:41 am
Location: cold and dark and lovely Finland

Re: An Idea for the Ranged Combat System

Post by Endoperez » Fri Dec 07, 2012 6:02 pm

Sgt. Ramen wrote:First off, forget about guns or crossbows. These are the silly ideas that get tossed around by people who don't understand the tone and feeling of this game (many suggested these things in Minecraft years back, as well). We are sticking to melee weapons thrown or bows.
I don't really see that big of a difference between bows and crossbows. Sure, there's a slight technological cap, but as long as we're talking about the weaker crossbows it's not that important in my opinion.

I'd say guns won't fit the theme,
bows and crossbows are problematic mechanically but could fit the theme,
and thrown weapons fit the theme and the fact that you're throwing your weapon away makes it easier to balance.

MadSnailDisease
Posts: 1
Joined: Tue Dec 25, 2012 11:12 pm

Re: An Idea for the Ranged Combat System

Post by MadSnailDisease » Tue Dec 25, 2012 11:31 pm

I think bows would be nice, but I would really like an update on spear throwing, so they'll actually go straight instead of spiraling and hitting them with the shaft. :|

User avatar
Endoperez
Posts: 5668
Joined: Sun Jan 11, 2009 7:41 am
Location: cold and dark and lovely Finland

Re: An Idea for the Ranged Combat System

Post by Endoperez » Wed Dec 26, 2012 2:19 am

MadSnailDisease wrote:I think bows would be nice, but I would really like an update on spear throwing, so they'll actually go straight instead of spiraling and hitting them with the shaft. :|
It should be possible to do it in the latest version (it's easy to stop the rotation, but before, I couldn't set the spear's rotation so it's pointing towards an enemy), but I don't know how to add in a new parameter that tells the game that the weapon is thrown like a spear, not like a dagger.

User avatar
Endoperez
Posts: 5668
Joined: Sun Jan 11, 2009 7:41 am
Location: cold and dark and lovely Finland

Re: An Idea for the Ranged Combat System

Post by Endoperez » Wed Dec 26, 2012 2:28 am

Has anyone seen any references to r_knifethrow.anm, r_knifethrowlayer.anm or r_knifethrowflip.anm in the script files or character/weapon XMLs? I haven't, I think they might actually be hardcoded.

User avatar
last
Posts: 2154
Joined: Fri Jan 07, 2011 7:02 am
Location: Estonia

Re: An Idea for the Ranged Combat System

Post by last » Wed Dec 26, 2012 3:16 am

Since knife throwing is an animation layer then you can't find those animations in any script file.
But here is a code that i was able to find in aschar.as file.

Code: Select all

if(going_to_throw_item && going_to_throw_item_time <= time && going_to_throw_item_time > time - 1.0f){
        if(!flip_info.IsFlipping() || flip_info.flip_progress > 0.5f){
            int8 flags = 0;
            if(primary_weapon_slot == _held_left){
                flags |= _ANM_MIRRORED;   
            }
            if(!flip_info.IsFlipping()){
                throw_knife_layer_id = this_mo.AddLayer("Data/Animations/r_knifethrowlayer.anm",8.0f,flags);
            } else {
                throw_knife_layer_id = this_mo.AddLayer("Data/Animations/r_knifethrowfliplayer.anm",8.0f,flags);
            }
            going_to_throw_item = false;
        }
    }

And here is some other knife throwing code from aschar.as file

Code: Select all

void ThrowWeapon() {
    if(weapon_slots[primary_weapon_slot] != -1){
        int target = target_id;
        if(target != -1){
            int weapon_id = weapon_slots[primary_weapon_slot];
            this_mo.DetachItem(weapon_id);
            weapon_slots[primary_weapon_slot] = -1;
            MovementObject@ char = ReadCharacterID(target);
            ItemObject@ io = ReadItemID(weapon_id);
            float time;
            vec3 start = io.GetPhysicsPosition();
            vec3 end = char.GetAvgIKChainPos("torso");
            vec3 launch_vel = CalcLaunchVel(start, end, io.GetMass(), this_mo.velocity, char.velocity, time);
            io.SetLinearVelocity(launch_vel);
            vec3 ang_vel = io.GetAngularVelocity();
            vec3 dir = normalize(end - start);
            vec3 twist_ang_vel = dir * dot(ang_vel, dir);
            ang_vel = ang_vel - twist_ang_vel;
            float num_turns = floor(time * 2.0f / io.GetMass()) + 0.25f;
            // Calculate spins
            //Print("Num turns: "+num_turns+"\n");
            //Print("Time: "+time+"\n");
            io.SetThrown();
            io.SetAngularVelocity((normalize(ang_vel)* 6.28318f * num_turns)/time + twist_ang_vel);
            this_mo.velocity -= launch_vel * io.GetMass() * 0.05f;
            //io.SetVelocity(vec3(0.0f,5.0f,0.0f));
            UpdatePrimaryWeapon();
            UpdateItemFistGrip();
        }
    }
}
Edit: I tried to stop weapon to spin while thrown, but i found out that you have to edit twist_ang_vel and float num_turns. Here is the line with my changes

Code: Select all

vec3 twist_ang_vel = dir * dot(vec3(0.0f,0.0f,0.f), dir);
and

Code: Select all

float num_turns = floor(time * 0.0f / io.GetMass());
There is still a problem with that weapon it will remain at an angle so you may want to replace float num_turns with

Code: Select all

float num_turns = floor(time * 0.0f / io.GetMass()) + 0.25f;

User avatar
Endoperez
Posts: 5668
Joined: Sun Jan 11, 2009 7:41 am
Location: cold and dark and lovely Finland

Re: An Idea for the Ranged Combat System

Post by Endoperez » Wed Dec 26, 2012 5:12 am

Thanks!

I knew about the ThrowWeapon function already. You can remove the rotation with:

Code: Select all

io.SetAngularVelocity( vec3(0.0f) );
The problem is, then you have a pretty much vertical spear flying towards an enemy and hitting him with the middle of the shaft. Not very threatening. If enemies could catch it from the air, it would make a decent "here, have a weapon" animation.

It seems like there's hard-coded function between weapon XMLs and AngelScript. It looks like it's accepting text strings, but trying to feed it custom strings could cause some problems, because now it's using the same attack strings in all situations. It might be possible to read path to animation "throw_weapon", which doesn't exist in any weapons yet. There'd have to be some sort of a check first, to know if the weapon is using a custom throw animation or not - and I don't know if attack_getter can do that.

Code: Select all

   if(curr_attack == "air")
   {
            attack_path = character_getter.GetAttackPath("air");
    }
    attack_getter.Load(attack_path);

Theotian
Posts: 9
Joined: Fri May 18, 2012 9:18 pm

Re: An Idea for the Ranged Combat System

Post by Theotian » Thu Dec 27, 2012 9:23 pm

I just pre ordered this game and was looking around the forum and just wanted to say:while i would like a ranged system for bow and arrows and spear throwing i would not like guns in the game unless its a mod or something.just not vanilla.

Jellydonut
Posts: 101
Joined: Mon Aug 15, 2011 9:32 pm

Re: An Idea for the Ranged Combat System

Post by Jellydonut » Sun Dec 30, 2012 1:59 pm

One weapon that could take the place of the bow is the slingshot. You can only throw small rocks with it, it doesn't have much range, and the most damage you could possibly deal is a small concussion. It would be very good for distractions, and stealth.

e.g. You see some patrolling guards, and you fling a rock at some place within earshot of them, and you sneak by unnoticed; Possibly make someone look the wrong way so you could get up behind them and snap their neck, etc.

Also, it would be insanely fun if you could hit a bot; sneak away while he looks around for you; hit him again; repeat. :lol:

User avatar
Endoperez
Posts: 5668
Joined: Sun Jan 11, 2009 7:41 am
Location: cold and dark and lovely Finland

Re: An Idea for the Ranged Combat System

Post by Endoperez » Sun Dec 30, 2012 5:01 pm

Jellydonut wrote:One weapon that could take the place of the bow is the slingshot. You can only throw small rocks with it, it doesn't have much range, and the most damage you could possibly deal is a small concussion. It would be very good for distractions, and stealth.

e.g. You see some patrolling guards, and you fling a rock at some place within earshot of them, and you sneak by unnoticed; Possibly make someone look the wrong way so you could get up behind them and snap their neck, etc.
What does this add that being able to throw a rock doesn't?
Also, it would be insanely fun if you could hit a bot; sneak away while he looks around for you; hit him again; repeat. :lol:

This is way too easy to abuse. It could esaily become either the easiest way to either kill someone (if it deals any damage), or to lure them away from allies so you can kill them 1v1 (if it doesn't deal damage).

Jellydonut
Posts: 101
Joined: Mon Aug 15, 2011 9:32 pm

Re: An Idea for the Ranged Combat System

Post by Jellydonut » Sun Dec 30, 2012 9:24 pm

All agreed. Rock throwing it is! You, sir, are quite a good debater.

User avatar
Endoperez
Posts: 5668
Joined: Sun Jan 11, 2009 7:41 am
Location: cold and dark and lovely Finland

Re: An Idea for the Ranged Combat System

Post by Endoperez » Mon Dec 31, 2012 3:28 am

Jellydonut wrote:All agreed. Rock throwing it is! You, sir, are quite a good debater.
Haha, I've just seen something very much like your post before. :D

I wonder if it would be overpowered if there was an endless supply of rocks in a level?

Rocks could deal blunt damage that fully recovers, couldn't be sheathed, and would have a good chance of being removed from the game after throwing if the player can't see it.

Finding a rock would be done by holding down Q when you're standing on the terrain, and the character would wander around as if looking for a weapon, then crouch down and poke the ground a bit. All in all, it could take about 5 seconds, and would make some noise. Still, since you could do it far from enemies, it would be a safe way of getting a simple throwing weapon.

It would give you a small advantage in damage, but if the damage was negligible enough that it'd recover faster than you can run away / make the enemy lose sight of you... Hmm.

Jellydonut
Posts: 101
Joined: Mon Aug 15, 2011 9:32 pm

Re: An Idea for the Ranged Combat System

Post by Jellydonut » Mon Dec 31, 2012 10:42 am

Well, I think that on grassy/sandy levels, it would be more difficult to find rocks of good throwing size, so possibly there would be a scripted weapon for a rock. Place a few in the world - but the stupid AI would go crazy for weapons and run wildly for them - anyways - you should be able to pick them up and treat them just like a knife (depending on size; maybe have something like a pebble and something more substantial). But I think this would totally change the game into armed-fighting-only as your #1 option.

Also, about holding Q to pick up a rock, wouldn't it be difficult to just hunt for a weapon? Let's say you killed an enemy, and your weapon is stuck in their back, which is in the ground. You search blindly for your/their weapon and en up picking up a bunch of rocks. I would find this annoying. Eventually you would find your weapon. Possibly place a priority script so the player picks up real weapons first, and then if there are none, pick up rocks.

Just another idea: Throwing sand or dirt. When you're fighting a group of guards, and you don't really have an easy way to defend yourself, you could throw sand; in turn blinding a couple of your enemies temporarily if you're lucky. It would make fighting groups more easy for players like me who just hate dodging and want to throw everyone.

User avatar
Endoperez
Posts: 5668
Joined: Sun Jan 11, 2009 7:41 am
Location: cold and dark and lovely Finland

Re: An Idea for the Ranged Combat System

Post by Endoperez » Mon Dec 31, 2012 12:37 pm

Jellydonut wrote:Also, about holding Q to pick up a rock, wouldn't it be difficult to just hunt for a weapon? Let's say you killed an enemy, and your weapon is stuck in their back, which is in the ground. You search blindly for your/their weapon and en up picking up a bunch of rocks. I would find this annoying. Eventually you would find your weapon. Possibly place a priority script so the player picks up real weapons first, and then if there are none, pick up rocks.
Yeah, the character would prioritize weapons above rocks, of course. I was thinking that, once he's stopped searching and starts picking up a stone, it'd be more like digging something from the ground, not just picking it up. That way it'd be kind-of acceptable that you can find rocks in all terrain types.

As for how the rock would be different from a dagger - it deals only a little damage, and if you had a dagger-dealt wound, (some of) that damage never goes away. Also, being in melee with a rock would be kind of awkward - the attack would be slower, perhaps. So you're only getting a very small advantage, any weapon would be better than a rock - oh, but I guess rocks would still count as a weapon you can block with. That'd be hilarious, but not very good for gameplay. "Oh no, he has a sword - quick, everyone, start looking for some rocks, so we can block his attacks!"

Just another idea: Throwing sand or dirt. When you're fighting a group of guards, and you don't really have an easy way to defend yourself, you could throw sand; in turn blinding a couple of your enemies temporarily if you're lucky. It would make fighting groups more easy for players like me who just hate dodging and want to throw everyone.
How would the controls work?

I can kind of see it working. Some sort of action that keeps the enemies from closing in for a moment would be nice. I can't see you throwing sand into the eyes of three enemies at once. Maybe something more physical?

http://mangafox.me/manga/kenji/v01/c002/7.html
http://mangafox.me/manga/kenji/v01/c002/8.html
http://mangafox.me/manga/kenji/v01/c002/11.html



I'd like to see sand clouds as a consistent effect when moving on certain types of terrain, though:


Post Reply