Forum

2 Fishies-related questions

Discuss programming in the QuakeC language.

Moderator: InsideQC Admins

2 Fishies-related questions

Postby CocoT » Sat Mar 22, 2008 2:51 pm

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!
User avatar
CocoT
 
Posts: 695
Joined: Tue Dec 14, 2004 5:39 pm
Location: Belly-Gum

Re: 2 Fishies-related questions

Postby Dr. Shadowborg » Sat Mar 22, 2008 4:35 pm

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.
User avatar
Dr. Shadowborg
InsideQC Staff
 
Posts: 1110
Joined: Sat Oct 16, 2004 3:34 pm

Postby Canadian*Sniper » Sat Mar 22, 2008 11:39 pm

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
User avatar
Canadian*Sniper
 
Posts: 25
Joined: Mon Mar 03, 2008 1:14 am
Location: Canada

Postby CocoT » Sun Mar 23, 2008 12:50 am

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!
User avatar
CocoT
 
Posts: 695
Joined: Tue Dec 14, 2004 5:39 pm
Location: Belly-Gum

Postby mh » Sun Mar 23, 2008 2:14 pm

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
User avatar
mh
 
Posts: 2292
Joined: Sat Jan 12, 2008 1:38 am

Postby CocoT » Mon Mar 24, 2008 12:19 am

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!
User avatar
CocoT
 
Posts: 695
Joined: Tue Dec 14, 2004 5:39 pm
Location: Belly-Gum

Postby Gilgamesh » Tue Mar 25, 2008 11:02 pm

... like Piranha II: The Spawning (1981) :lol: :lol: :lol: :lol:
#EOP
Gilgamesh
 
Posts: 67
Joined: Tue Oct 26, 2004 6:08 pm
Location: Brazil

Postby CocoT » Thu Mar 27, 2008 10:46 pm

Hehehe... that's pretty close to what I'm playing with ;)
Neurotic Conversions - New location: Update your bookmarks!
User avatar
CocoT
 
Posts: 695
Joined: Tue Dec 14, 2004 5:39 pm
Location: Belly-Gum

Postby venomus » Tue Apr 01, 2008 10:42 am

Someone needs to do a Quake fishing sim :roll:
venomus
 
Posts: 41
Joined: Tue May 24, 2005 4:54 pm

Postby Urre » Tue Apr 01, 2008 1:39 pm

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
User avatar
Urre
 
Posts: 1109
Joined: Fri Nov 05, 2004 2:36 am
Location: Moon

Postby venomus » Tue Apr 01, 2008 3:28 pm

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_tutorial.html#fish
venomus
 
Posts: 41
Joined: Tue May 24, 2005 4:54 pm

Postby leileilol » Tue Apr 01, 2008 3:49 pm

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
leileilol
 
Posts: 2783
Joined: Fri Oct 15, 2004 3:23 am

Postby Dr. Shadowborg » Tue Apr 01, 2008 6:18 pm

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.
User avatar
Dr. Shadowborg
InsideQC Staff
 
Posts: 1110
Joined: Sat Oct 16, 2004 3:34 pm

Postby venomus » Tue Apr 01, 2008 10:24 pm

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..
venomus
 
Posts: 41
Joined: Tue May 24, 2005 4:54 pm


Return to QuakeC Programming

Who is online

Users browsing this forum: Bing [Bot] and 1 guest