So, back on more general discussion. I'm not sure that wall-jumping works so great right now. There is a timing and speedmeter built into skulk_client.lua for walljumping. If you set l<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->ocal gEnableSpeedMeter = true<!--c2--></div><!--ec2--> then you get it to always display. Having played with it extensively now (custom moved the timing bar to be centered below my crosshair) I must say that it is very hard to get the timing right unless you just jump on the ground. If you bump into something the timing sometimes shoot up much faster then normally would be expected, and I can't see how you cen keep getting the timing right when jumping around on different geometry when not having the bar there. It might help if you didn't have to constantly jump to keep the bonus, right now you have to time so that you land and can jump up and reach a wall at an optimal point to build up good speed. It works with simple geometry, but once you get anything more complex then straight walls it is very hard to get you to to be far enough away from the wall when you jump as to not lose stickyness and slip down towards the floor, and eighter lose the bonus right away, or lose it just after the jump as you touch the floor right away and the bonus is usually lost, and if you were to far from the wall you might not even reach it, or you reach it but land so low that you jump and slide over the ground as before and lose the bonus.
I had a quick look at how collision detection works, you can turn on the physics debug by typing "physics" in the console (was introduced a few builds ago).
The skulk is approximated as a cylinder (well octagon) :
Then I added the rotation to the cylinder but it got stuck in the wall sometimes, so that's the reason why there is no rotation I guess :)
In the screen-shot above you could think the skulk will be unable to exit by going up or down because of the sharp edge of the cylinder, but it doesn't happen because of how the movement is implemented, in short there is a few tricks to make the movement smoother (I can go into more details if anybody is interested).
I don't know, the cylinder is created using the method SetupCylinder, I looked for other instances of SetupSomething into the code but didn't found anything. Maybe SetupSphere would work.
Because the cylinder goes into the wall. You can imagine if you have the cylinder standing up close to a wall and you do a 90 degree rotation around its center, it can go into the wall. Something like that happens if you just pass the model coordinates to the cylinder, I don't know exactly how and why, but that's what I observed.
Yeah probably. It seems that the cylinder is fairly standard in game (quake, ut, ..) but I found it a bit weird for the skulk. The weird part is that this cylinder is in close contact with the wall and get blocked by any little perturbation in the wall, so you need to introduce all kind of tricks to avoid to get stuck.
I would rather have a cylinder that just cover the body of the skulk and deal with the wall contact with rays traces (the lines what are used for the wall walking).
I tried something like that, I do a trace bellow the skulk and compute the distance to the floor, then I move the skulk to a specific height above the floor, so it "levitate" above the floor at a constance height. Then I reduce the cylinder size so it doesn't touch the ground, so you can't get stuck. It works well but it also broke a lot of other things because it's such a drastic change.
<!--quoteo(post=1901214:date=Feb 9 2012, 07:11 PM:name=Yuuki)--><div class='quotetop'>QUOTE (Yuuki @ Feb 9 2012, 07:11 PM) <a href="index.php?act=findpost&pid=1901214"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->I would rather have a cylinder that just cover the body of the skulk and deal with the wall contact with rays traces (the lines what are used for the wall walking).<!--QuoteEnd--></div><!--QuoteEEnd--> What is the cylinder used for then?
Prevent to body the enter other parts of the map, but it might be avoided by a few others rays. The thing I don't know is which one are the most computationally intensive, a few rays or the cylinder?
Yeah, and other players more importantly. You can have a look with the current onos, they reduced a lot the cylinder size, if you type physics in console you see it. In some situations you can burry almost the whole head of the onos into the wall :)
<!--quoteo(post=1896626:date=Jan 22 2012, 08:31 AM:name=Fluid Core)--><div class='quotetop'>QUOTE (Fluid Core @ Jan 22 2012, 08:31 AM) <a href="index.php?act=findpost&pid=1896626"><{POST_SNAPBACK}></a></div><div class='quotemain'><!--quotec-->Not that I could find. You can try it yourself by an easy mod to your Skulk_Client.lua file.
There's no use trying to play with it though, it's only the view that changes, your pitch, yaw and imputs still relates to "floor" mode.
Well, that one was specificly for someone else...<!--QuoteEnd--></div><!--QuoteEEnd-->
I dislike this, its unintuitive. Instead one could shift orientation as in Baller, but add invisible smoothing to all corners, edges. That way transition is not as jarring.
Something I don't understand is how the mouth is always parallel to the ground even when your on a wall sideways, they should make the mouth swivel around as you jump on the walls so it makes sense. Also why is the view inside the mouth when clearly skulks have eyes? They should take away the eyes of the aliens so this makes sense IMO. Why not? I think it would make them look more interesting too, and of course it would explain why the camera is inside their mouth.
Comments
The skulk is approximated as a cylinder (well octagon) :
<img src="http://i.imgur.com/AZsPh.png" border="0" class="linked-image" />
The cylinder follows the skulk around and detect the collisions.
One thing I found a bit weird is that the cylinder do not rotate with the skulk model :
<img src="http://i.imgur.com/wne5J.png" border="0" class="linked-image" />
Then I added the rotation to the cylinder but it got stuck in the wall sometimes, so that's the reason why there is no rotation I guess :)
In the screen-shot above you could think the skulk will be unable to exit by going up or down because of the sharp edge of the cylinder, but it doesn't happen because of how the movement is implemented, in short there is a few tricks to make the movement smoother (I can go into more details if anybody is interested).
Maybe SetupSphere would work.
I would rather have a cylinder that just cover the body of the skulk and deal with the wall contact with rays traces (the lines what are used for the wall walking).
I tried something like that, I do a trace bellow the skulk and compute the distance to the floor, then I move the skulk to a specific height above the floor, so it "levitate" above the floor at a constance height. Then I reduce the cylinder size so it doesn't touch the ground, so you can't get stuck. It works well but it also broke a lot of other things because it's such a drastic change.
What is the cylinder used for then?
Change
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->Skulk.kCameraRollTiltModifier =0.05<!--c2--></div><!--ec2-->
to
<!--c1--><div class='codetop'>CODE</div><div class='codemain'><!--ec1-->Skulk.kCameraRollTiltModifier = 1<!--c2--></div><!--ec2-->
There's no use trying to play with it though, it's only the view that changes, your pitch, yaw and imputs still relates to "floor" mode.
Well, that one was specificly for someone else...<!--QuoteEnd--></div><!--QuoteEEnd-->
I dislike this, its unintuitive. Instead one could shift orientation as in Baller, but add invisible smoothing to all corners, edges. That way transition is not as jarring.