2 Fishies-related questions

Discuss programming in the QuakeC language.
Post Reply
CocoT
Posts: 695
Joined: Tue Dec 14, 2004 5:39 pm
Location: Belly-Gum
Contact:

2 Fishies-related questions

Post by CocoT »

1) I've noticed that, when in water, fish will only follow you when you are totally immersed in it. They will stop and only start chasing again once the player's head is under water level, which, well, doesn't seem to make sense since his legs are still there. Has there been any fix for that anywhere? Or would you know of any quick way to solve this? (the reason I'm asking is because I really suck when it comes to tracelines, monster vision and the likes... :P)

1) Not code-related, but fishie-related, so... Do you guys know of any good new water monsters for Quake1? Or maybe just new models for the existing fish? The shark model of Frik's Jaws is one monster came to my mind, I was wondering if there might have been others...

Thanks in advance!
Neurotic Conversions - New location: Update your bookmarks!
Dr. Shadowborg
InsideQC Staff
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Re: 2 Fishies-related questions

Post by Dr. Shadowborg »

CocoT wrote:1) I've noticed that, when in water, fish will only follow you when you are totally immersed in it. They will stop and only start chasing again once the player's head is under water level, which, well, doesn't seem to make sense since his legs are still there. Has there been any fix for that anywhere? Or would you know of any quick way to solve this? (the reason I'm asking is because I really suck when it comes to tracelines, monster vision and the likes... :P)

1) Not code-related, but fishie-related, so... Do you guys know of any good new water monsters for Quake1? Or maybe just new models for the existing fish? The shark model of Frik's Jaws is one monster came to my mind, I was wondering if there might have been others...

Thanks in advance!
I'm not really sure about #1, but maybe it has something to do with the fact that it's a swimmonster and therefore not allowed to leave the water, coupled with it maybe going after your self.origin directly, and not actually able to reach it or something.

As for #2, there's the Electric Eel from Dissolution of Eternity. I can't particularly think of any others at the moment.
Canadian*Sniper
Posts: 25
Joined: Mon Mar 03, 2008 1:14 am
Location: Canada
Contact:

Post by Canadian*Sniper »

make the fish move like the scrag and if the fish mdl is out of the water, make it jump up a bit :P Hell make it jump out of the water and start flopping on the ground :]

So ya perhaps the best fix is to just make the fish chase it's target until it finds a new target.
SmashQuake at whitehot.quakeone.com
NewDM at flanders.servegame.org:26003
CocoT
Posts: 695
Joined: Tue Dec 14, 2004 5:39 pm
Location: Belly-Gum
Contact:

Post by CocoT »

Thanks, guys! I'll look into that tonight :)
And, yeah, maybe I can try to put my poor coding skills to the task of having them jump out of the water... that'd be pretty fun :D
Neurotic Conversions - New location: Update your bookmarks!
mh
Posts: 2292
Joined: Sat Jan 12, 2008 1:38 am

Post by mh »

If memory serves, there's code in the engine (one of the sv_ files) that determines if the player is underwater, which QC then uses to react accordingly. It would probably require an engine modification to "fix" this properly, but then you risk changing gameplay and/or breaking compatibility with other mods (not to mention potentially drowning in shallow pools).
We had the power, we had the space, we had a sense of time and place
We knew the words, we knew the score, we knew what we were fighting for
CocoT
Posts: 695
Joined: Tue Dec 14, 2004 5:39 pm
Location: Belly-Gum
Contact:

Post by CocoT »

Thanks for the pointer, mh! you totally confirm my suspicions :(
I tried to play around with it yesterday and could not find an easy solution. At this point, what I've done is make, as Canadian Sniper suggested, fish fly instead of swim, then edit the models so that they appear lower than they are (otherwise they'd kind of hoover above water level, which was weird). It works fine, except of course that the player cannot leave the water, otherwise, the fish would just follow him :P
Neurotic Conversions - New location: Update your bookmarks!
Gilgamesh
Posts: 67
Joined: Tue Oct 26, 2004 6:08 pm
Location: Brazil
Contact:

Post by Gilgamesh »

... like Piranha II: The Spawning (1981) :lol: :lol: :lol: :lol:
#EOP
CocoT
Posts: 695
Joined: Tue Dec 14, 2004 5:39 pm
Location: Belly-Gum
Contact:

Post by CocoT »

Hehehe... that's pretty close to what I'm playing with ;)
Neurotic Conversions - New location: Update your bookmarks!
venomus
Posts: 41
Joined: Tue May 24, 2005 4:54 pm

Post by venomus »

Someone needs to do a Quake fishing sim :roll:
Urre
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon
Contact:

Post by Urre »

CocoT: actually, I think you should rather make them walk. That'd ensure that they can't exit the water, as long as there are no stairs and slopes they can use. Make it a pool you have to jump out of, and it'd be fine. Assuming ofcourse the water is shallow in all spots, or the fishy would "drop" to the bottom of the lake :P

It obviously is possible to switch between different modes, but that requires experimentation and whatnot. Best I can think of is do an onground check, if true, walk, otherwise swim. Also, if players origin is above self origin, and player is in water, then swim (to ensure they don't walk around the bottom of some lake). This should basicly do it, it'd allow fishy to enter walk mode when a slope makes the water shallower, as they'd detect floor when they get close to the edge of the water, and start walking. If the player then goes back into the water, the fishy will walk after him, until the player is at all above the fishy, and thus start swimming again.
I was once a Quake modder
venomus
Posts: 41
Joined: Tue May 24, 2005 4:54 pm

Post by venomus »

Just make the fish chase after a helper entity placed underneath the player when they are on the surface (using a waterlevel check). Provided the entity is still inside the players bounding box the player should take damage when the fish try to nibble it.

Also I should mention that Quoth apparently fixed a number of bugs with monster_fish including not swimming towards a player on the surface, but those people havn't released the source code yet.

http://kell.quaddicted.com/quoth/quoth_ ... .html#fish
leileilol
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Post by leileilol »

venomus wrote: but those people havn't released the source code yet.
yeah i mean just think of the evil things that will happen if they release the source i mean goddamn
i should not be here
Dr. Shadowborg
InsideQC Staff
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Post by Dr. Shadowborg »

Here's an idea:

1. When the player is not in the water, make the fish find out the direction to it's enemy, but remove the height related part. (i.e. treat it just like if the player were on the same height as the fish)

2. Make the fish try to walkmove in that direction.
venomus
Posts: 41
Joined: Tue May 24, 2005 4:54 pm

Post by venomus »

Ah screw it, this I think will solve your problems:

Code: Select all

void (float dist) ai_swim =
{
	local vector mtemp;
	local vector org;
	local vector org_flat;
	local vector oldorg_flat;
	local vector oldorg;
	local vector reqvel;
	local float d;

	oldorg = self.origin;
	self.movetype = MOVETYPE_STEP;
	ai_run (dist);
	d = vlen ((self.origin - oldorg));
	self.velocity = '0 0 0';
	if ((d <= (dist + 5)))
	{
		if ((pointcontents ((self.origin + '0 0 16')) == CONTENT_EMPTY))
		{
			self.origin_z = oldorg_z;
		}
		self.movetype = MOVETYPE_FLY;
		reqvel = ((normalize ((self.origin - oldorg)) * dist) * TE_WIZSPIKE);
		setorigin (self, oldorg);
		self.velocity = reqvel;
	}
	if ((pointcontents ((self.origin)) == CONTENT_EMPTY))
	{
		self.velocity_z = -8;
	}
};
(in case you missed the hidden clue, this isn't my code)

EDIT: having actually tried it, this only fixes the bug when the fish get stuck near the water surface. They still won't swim toward you when you have your head above the water. Hmm..
Post Reply