Page 1 of 2

KTRose Bug list and Todo List

PostPosted: Mon May 27, 2013 5:47 pm
by XxXshidoXxX
''First we make bug list,then code it''
-White-Ra,great philosopher of the 21th century.


Here is the actual KTRose bug list,this way server hosts can easily follow the actual state and devs can pick something they'd like to fix without spending time :

Bug List :

-One shot a monster with a skill makes your character turn around (sometimes ) for too long and death animation is not always shown (Probably something to do with the new addition of the deathTimer)

-Cart passenger (Does not work at all) (PY : probably boolean RIDE value out of place in the ride request code )


-Server crashes now and then for no apparent reasons (Might be related to clans butt nothing is sure)

-HP sync will eventually be wrong after a long fight (You'll see yourself with 1 HP client side when you have like 500 server side,or the exact opposite you'll see 300 hp client side when you'll be already dead server side (resulting on your character dying client side without knowing why ) )

Funfact : You will have more HP server side when fighting monster that have a good atk speed (jelly beans...) and you'll have less HP server side than client side when fighting a monster with slow atk speed (mother choropy,wolfs...)
So i guess it probably has something to do with monster atk speed calculation.

(osirose had this issue too,we nearly suicide ourself figuring it out)

-Regen while sitting is absolutely bugged,i can't even state what is wrong,everything is,nothing works.


Todo list :

-Fix the bugs stated before

-Finish setting up LIST_NPC.STB so that the monsters correctly match the combat functions. Might need to modify weapons too.

-Timings - finish off and add lookup tables

-Tower Def - finish up. Add new crystals, NPCs AIP/QSD/CON

-Set up Keako's shop in adventure plain so he can sell KTrose stuff


Feel free to contribute to the bug list,or put any lead/clues you might have here.
Together we'll fix it all don't worry !

Image

Re: KTRose Bug list and Todo List

PostPosted: Tue May 28, 2013 2:58 pm
by PurpleYouko
here are a couple more things that I know are wrong.

Carts: When using any of the carts that were imported from JRose we have speed issues. It's basically when using any wheels or engine that makes the move speed greater than the maximum normal move speed (don't remember exact numbers). To yourself you seem to be going Reeeaaallly fast but everybody else sees you tootling along at walking speed. very annoying.

Passengers. You can't pick up a passenger in your cart properly. they jump in just fine and you drive away and they are still there in the back of your cart. from their point of view though they just stay where they are when you drive off. Eventually when you get out of visibility range they will disappear from your back seat.
I'm pretty sure this is just down to the misapplication of the "stance" of the rider so shouldn't be too hard to pin down.

The annoying as hell bug that causes the server to go into an infinite loop and lock up occasionally when quite a few players are online. Doesn't crash completely so the auto-restarter never kicks in. It just freezes. I suspect it to be related to clans in some way but I can't be certain. Testing this isn't something that seems to be possible while you are the only player online.


What's wrong with my little Keako? She seems to work OK for me.
The only problem really is in resetting your original union affiliation after you leave her shop.
solutions for this include
1) Add an area trigger than runs some QSD code to reset after leaving.
2) Put her inside a custome shop house like the union sellers in Evo then trigger the reset on exit.
3) any other ideas that anyone comes up with

Re: KTRose Bug list and Todo List

PostPosted: Tue May 28, 2013 3:16 pm
by Qix
Sounds like we need a multi-client bypass or a utility that emulates a client for that last bug.

Re: KTRose Bug list and Todo List

PostPosted: Thu May 30, 2013 6:13 pm
by XxXshidoXxX
I would like some of your opinions on the issue about the HP of the server and the client not being the same while fighting.
To me its a bug in the aspeed value (server moving faster than client or in some case the opposite).

I think we should use a constant that divide the monster stat of the STB to know how much faster an attack would be.

I did some with a mini jelly bean

For Aspeed= 80
Each attack
2,304
2,396
2,355
2,324
2,423
2,343
2,373
2,339
2,398
2,299
2,327
2,72

2,383416667 ---average----

33,56525996 Constant



our constant being 33,56525996 we can use that to divide any monster speed stat from the STB and tell the server when do each attack happen (in the mini jelly bean case they happen each 2,383416667 seconds )

What do ya think ?

Re: KTRose Bug list and Todo List

PostPosted: Fri May 31, 2013 1:56 pm
by PurpleYouko
That was the approach that I started to work on a few years back.
problem was that the constant seems to change when you equip different weapon types, regardless of the attack speed listed in the STB.
Within a particular weapon type the constant stays the same for all attack speeds though.

I was planning to repeat the tests with weapons of every type and set up a kind of lookup table of constant modifiers. just never got around to it.

Re: KTRose Bug list and Todo List

PostPosted: Fri May 31, 2013 8:54 pm
by Qix
Is there a source file I can look at for this bug?

Re: KTRose Bug list and Todo List

PostPosted: Fri May 31, 2013 8:55 pm
by XxXshidoXxX
But you're talking about the player attack also ?

I'm just talking about putting this method on use to the monster attack only since it would fix the HP-bug.

See i try to view the problem in a player way,if they logg in on your server they will not really be annoyed about their atack not being sync with the server (since they will not notice it client side) but they will be annoyed when their char dies and they still had 300HP left.

That's why i think we could implant it for monsters only for now and fix the player aspeed later.

Also if you still have those code about the lookup i could complete them by timing the different weapons,it would take time and i don't have many but at least someone would be working on it.

Re: KTRose Bug list and Todo List

PostPosted: Mon Jun 03, 2013 2:13 pm
by PurpleYouko
We do have the capability of sending player HP from the server to the client to force it to sync up.
  1. BEGINPACKET( pak, 0x7ec );
  2.     ADDWORD( pak, hpamount );
  3.     ADDWORD( pak, mpamount );
  4.     thisclient->client->SendPacket( &pak );

This doesn't work in osirose or osprose but in the KTRose client i had Maxxon modify my trose.exe so that it does work.
The answer might be to send this packet a bunch of times during any fight. It's a very small packet so it won't take a lot of bandwidth or processing time.

possibly add a new function Synchpmp(CPlayer* thisclient) into CCharacter class that just calls this simple code to resync everything then call it after every monster attack calculation.
Doing so kind of breaks my rule on fixing code rather than putting band aids on it but it will get the job done in the short term till we can find a more elegant fix. :D

Check PakGMHeal in GMCommand.cpp for a nice history of all the weird stuff I tried to get the heal command to work :lol:

Re: KTRose Bug list and Todo List

PostPosted: Tue Jun 04, 2013 8:46 pm
by XxXshidoXxX
But if i do that the player will see his HP go down but the monster will still not be sync with his counterpart client side.

Meaning the player will be seeing his HP go down while the monster is in the ''reload'' phase.
Am i wrong ?

Re: KTRose Bug list and Todo List

PostPosted: Wed Jun 05, 2013 4:42 pm
by PurpleYouko
Well the way it works (in theory) is that once combat is initialized the server and client both perform the same timing calculation so that combat should be synchronized attack for attack. In practice one or other lags behind.
All damage calculations are 100% server sided though. The client doesn't perform any of those. It just applies damage that the server sends it on the next animated attack after the arrival of the damage packet.
That's the reason that you see one of these two things.

1) sometimes the apparent damage will be double what the server sends. This means that the server has sent two or more packets between any two attack animation
2) Client displays a miss where server shows a hit. The damage packet arrives too late for the attack animation.

The real problem here is that the client applies regeneration and damage mitigation without waiting for an input from the server so during a long battle the HP and MP values on server and client get further and further out of sync.

If a sync packet is sent immediately after each attack damage packet then the tiny differences will be corrected before they can build up into a large discrepancy. there will possibly be some very tiny jumps shown at the client but so small that they will be hardly noticeable. maybe two or 3 HP / MP or so.

Of course this is just my theory. It has yet to be tested. ;)