
рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛
рд╕реЗрдореА ,
рдлреНрд░реЗрдорд╡рд░реНрдХ , mmorpg рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╡рд╣реА рд╣рдо рдХрд░реЗрдВрдЧреЗред
рдбреЗрдореЛ conventionalities
рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдЧреЛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реА-рд▓рд╛рдЗрдХ рднрд╛рд╖рд╛ рдХреЛ рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ js рдореЗрдВ рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВред
рдЗрдВрдЯреНрд░реЛ рдЯреВрд░ рдкрд░ рдЬрд╛рдПрдВ
рдХреИрдирд╡рд╛рд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓
рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдореБрдЦреНрдп рдЙрджреНрджреЗрд╢реНрдп рдореЗрд░реЗ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдХреНрд░рдо рдореЗрдВ рд░рдЦрдирд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдХреЗ рдкреВрд░реНрд╡рдЧрд╛рдореА рдХреЛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдорд╛рдирдирд╛ тАЛтАЛрдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рд╕реЗ рдЖрдк рдмрд┐рдирд╛ рд╕реЛрдЪреЗ рд╕рдордЭреЗ рдХреЙрдкреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХрд╛рд░реНрдп рдкрд░ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВред рдЖрдкрдХреЛ рдЫреЛрдЯрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдЕрддреНрдпрдВрдд рд╕рд░рд▓реАрдХреГрдд рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд┐рдЦреЗрдВрдЧреЗ рдЬреЛ рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╕реЗ рд╡рд░реНрдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдбреЗрдЯрд╛ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдмрджрд▓реЗ рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЧреЗрдо рд▓реЙрдЬрд┐рдХ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред
рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рд╡реЗрдм рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╣рдореЗрдВ рдЗрддреНрдореАрдирд╛рди рд╕реЗ рдЯреАрд╕реАрдкреА рднреА рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрджреЗрд╢ рдореЗрдВ рд▓рд┐рдЦреЗрдВрдЧреЗред
рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдпрд╛ рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╣рд▓реЗ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд▓рд┐рдЦрдирд╛ рдерд╛, рдЬрд┐рд╕рдХреА рдорджрдж рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╕рд░реНрд╡рд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рд╣рдо рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░реЗрдВрдЧреЗ; рддрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпреЛрдВред
рд╕рд░реНрд╡рд░
рд╣рдорд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдЧрд╛:
- рдЧреНрд░рд╛рд╣рдХреЛрдВ рд╕реЗ рдЖрдЬреНрдЮрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
- рдЦреЗрд▓ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреБрдбрд╝реЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░реЗрдВ
- рджреБрдирд┐рдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рдПрдХ рдЦреЗрд▓ рдЪрдХреНрд░ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реЗрдВ
рджреБрдирд┐рдпрд╛ рд╕реЗ рд╣рдорд╛рд░рд╛ рддрд╛рддреНрдкрд░реНрдп рдЬреБрдбрд╝реЗ рд╣реБрдП рдкрд╛рддреНрд░реЛрдВ рдФрд░ рдЕрдзрд┐рдХ рдХреА рд╕реВрдЪреА рд╕реЗ рд╣реЛрдЧрд╛ред рдХреЛрдИ рдХрд╛рд░реНрдб рдирд╣реАрдВ, рдХреЛрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ - рдХреЗрд╡рд▓ рдЦрд┐рд▓рд╛рдбрд╝реАред рдкрд╛рддреНрд░реЛрдВ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЧрддрд┐ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдЪреАрдЬ рд╣реЛрдЧреАред
рддрдм рд╣рдорд╛рд░реЗ рдЪрд░рд┐рддреНрд░ рдХреА рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
... type Point struct { X, Y float64 } ... type Character struct { Pos, Dst Point
рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛ рджреВрдВ рдХрд┐ рдЬрд╛рдиреЗ рдореЗрдВ, рдПрдХ рдХреИрдкрд┐рдЯрд▓ рд▓реЗрдЯрд░ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦреЗ рдЧрдП рдлрд╝реАрд▓реНрдб рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ), рдФрд░ рдЬрдм рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЗрд╡рд▓ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдХрд┐рдП рдЧрдП рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рд╣реА json рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред (
рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рдЗрд╕ рд░реЗрдХ рдкрд░ рдХрджрдо рд░рдЦрд╛, рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рдХреЛрдб рдХреНрдпреЛрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЦреЗрддреЛрдВ рдХреЛ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдкрддреНрд░ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ )ред
рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░, рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рд╕рднреА рд╡рд░реНрддрдорд╛рди рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП
character.x = data.X
рдЬреИрд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдкреБрди: рд╕рд░реНрд╡рд░ рд╕реЗ рдбреЗрдЯрд╛ рдлрд╝реАрд▓реНрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдПрдВрдЧреЗ рдФрд░, рдпрджрд┐ рдирд╛рдо рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдкреВрдВрдЬреАрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЧреЛ рд╕реНрдЯрд╛рдЗрд▓ рдЬреЛрдВрд╕ рдирд╛рдордХрд░рдг рд╕рдореНрдореЗрд▓рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рд╣рдордиреЗ рд╕рд░реНрд╡рд░ рдХреЛ рджреЗрдЦрдХрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ред
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЖрд░рдВрднреАрдХрд░рдг рдФрд░ рдореБрдЦреНрдп рд▓реВрдк
package main import ( "fmt" "time" ) const ( MAX_CLIENTS = 100
Character.update рдореЗрдердб рдореЗрдВ, рд╣рдо рдХреИрд░реЗрдХреНрдЯрд░ рдХреЛ рд▓реЗ рдЬрд╛рддреЗ рд╣реИ рдЕрдЧрд░ рд╡рд╣рд╛рдБ рдЬрд╛рдирд╛ рд╣реИ рдЬрд╣рд╛рдБ:
...
рдЕрдм рд╣рдо рд╕реАрдзреЗ рд╡реЗрдм рд╕реЙрдХреЗрдЯ рд╕реЗ рдЧреБрдЬрд░реЗрдВрдЧреЗред
package main import ( "code.google.com/p/go.net/websocket" "fmt" "io" "net/http" "strings" ) const ( MAX_CMD_SIZE = 1024 MAX_OP_LEN = 64 CMD_DELIMITER = "|" )
рдПрдХ рдЪрд░рд┐рддреНрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг, рд╣рдореЗрдВ рдЙрд╕рд╕реЗ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдкреВрдЫрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╛рдиреЗ рдореЗрдВ рдпрд╣ NewTypename рдкреНрд░рдкрддреНрд░ рдХреЗ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдерд╛рдЧрдд рд╣реИ
... const ( CHAR_DEFAULT_SPEED = 100 ) ... func NewCharacter() Character { c := Character{Speed: CHAR_DEFAULT_SPEED} c.Pos = Point{100, 100} c.Dst = c.Pos return c }
рд╡рд╣ рд╣рдорд╛рд░рд╛ рдкреВрд░рд╛ рд╕рд░реНрд╡рд░ рд╣реИред
рдЗрд╕ рдкрд╛рда рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЧреНрд░рд╛рд╣рдХ рднрд╛рдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдВрджрд░реНрдн
рдбреЗрдореЛрдХрд╛рд░реНрдб рдЬреЗрдирд░реЗрдЯрд░ (рдкреГрд╖реНрдарднреВрдорд┐ рдкрд░ рдЪрд┐рддреНрд░)рд╕реНрд░реЛрдд рдХреЛрдб