Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[EO3.0] Ping based movement problem


Tic Tac 2
 Share

Recommended Posts

I'm using the custom build Eclipse Worlds, the movement in it for most people including myself feels "clunky" and "jittery". The more ping/farther you are from the server, the laggier and the slower your character move. Is there a way to fix this? In normal EO 3.0 no matter where you connected from, your moving would always feel fluent, but for other people viewing you, you would be lagging around a little. This is the way i want the movement to be.

Is there a simple fix for this? I'd be eternally grateful if anyone would haelp me fix this :-)

EDIT: Connect to my server with any client or download mine here to see what i mean. (13mb)

[http://www.mediafire.com/download/gdvgndmic0e1c54/Fantura+2+Alpha.zip](http://www.mediafire.com/download/gdvgndmic0e1c54/Fantura+2+Alpha.zip)

EDIT2: I think the problem is that the movement is sent like this "Client>Server>Client" I just want it to be sent like this "Client>Server". Do you know what i mean? I want movement to be client-sided. I know people can hack that way to make their movement faster than other people. But this is just something i want temporarily until i get a good host. I'll ban the hackers separately. The game isn't enjoyable when moving feels really laggy and not fluent.

This is my server's Sub HandlePlayerMove, **I don't even know if i'm supposed to edit these specific subs to make the movement less laggy and client sided, please fill me in if im wrong**

```
' :::::::::::::::::::::::::::::
' :: Moving character packet ::
' :::::::::::::::::::::::::::::
Sub HandlePlayerMove(ByVal index As Long, ByRef Data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim Dir As Byte, i As Long
Dim Movement As Byte
Dim Buffer As clsBuffer
Dim TmpX As Integer, TmpY As Integer
Set Buffer = New clsBuffer
Buffer.WriteBytes Data()

Dir = Buffer.ReadByte
Movement = Buffer.ReadByte
TmpX = Buffer.ReadInteger
TmpY = Buffer.ReadInteger
Set Buffer = Nothing

Call PlayerMove(index, Dir, Movement)
End Sub

```
This is my clients PlayerMove

```
Private Sub HandlePlayerMove(ByVal Index As Long, ByRef data() As Byte, ByVal StartAddr As Long, ByVal ExtraVar As Long)
Dim I As Long
Dim X As Byte
Dim Y As Byte
Dim oldx As Long, oldy As Long
Dim distanceX As Long, distanceY As Long
Dim Dir As Byte
Dim n As Byte
Dim buffer As clsBuffer

' If debug mode, handle error then exit out
If Options.Debug = 1 Then On Error GoTo errorhandler

Set buffer = New clsBuffer
buffer.WriteBytes data()

I = buffer.ReadLong
X = buffer.ReadByte
Y = buffer.ReadByte
oldx = GetPlayerX(I)
oldy = GetPlayerY(I)
Dir = buffer.ReadByte
n = buffer.ReadByte

distanceX = (X - oldx)
distanceY = (Y - oldy)

Call SetPlayerX(I, X)
Call SetPlayerY(I, Y)
Call SetPlayerDir(I, Dir)

' Let the client know we can move.
IsWaitingForMove = False

TempPlayer(I).Moving = n
TempPlayer(I).xOffset = distanceX * PIC_X * -1
TempPlayer(I).yOffset = distanceY * PIC_Y * -1
Exit Sub

' Error handler
errorhandler:
HandleError "HandlePlayerMove", "modHandleData", Err.Number, Err.Description, Err.Source, Err.HelpContext
Err.Clear
End Sub

```
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...