рдпрд╣ gremlins.js рдФрд░ grunt-gremlins рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреЛ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рд╣реИред рдкрд╣рд▓рд╛ рд▓реЗрдЦ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ gremlins.js рдкреНрд░рд▓реЗрдЦрди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИред рджреВрд╕рд░рд╛ рдЧреНрд░рдиреНрдЯ-рдЧреНрд░реЗрдорд▓рд┐рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ gremlins.js рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИредGremlins.js рдПрдХ рдмрдВрджрд░ рдкрд░реАрдХреНрд╖рдг рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИ рдЬреЛ Node.js рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреА рдорджрдж рд╕реЗ, gremlins рдХреА рднреАрдбрд╝ рдХреЗ рддрд╣рдд рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИред
рдХреЗрдЯ: рд╡реЗ, рдмрд┐рд▓реА рдХреНрдпрд╛ рд╣реИрдВ?
рдмрд┐рд▓реА Peltzer: рд╡реЗ gremlins, рдХреЗрдЯ, рд╢реНрд░реА рдХреА рддрд░рд╣ рд╣реИрдВ рдлрдЯрд░рдореИрди рдиреЗ рдХрд╣рд╛ред

рд▓рдХреНрд╖реНрдп
HTML5 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдХреНрдпрд╛ рдЖрдк рд╕рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХрд╛ рдкреВрд░реНрд╡рд╛рднрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рд╕рдВрднрд╛рд╡рд┐рдд рдореЗрдореЛрд░реА рд▓реАрдХ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЖрдкрдХрд╛ рдЖрд╡реЗрджрди рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЖрдкрдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдбрд╛рд▓ рд╕рдХрддреА рд╣реИрдВ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕реНрд╡рдпрдВ рдЙрдиреНрд╣реЗрдВ рдЦреЛрдЬрдиреЗ рджреЗрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкрд░реАрдХреНрд╖рдг рдЪрд░рдг рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦрдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред
Gremlins.js рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИ: рдЬрд╣рд╛рдБ рднреА рд╡реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, gremlins рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдХреЛ рд░реВрдкреЛрдВ рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВ, рдпрд╛ рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдкрд░ рдорд╛рдЙрд╕ рд▓реЗ рдЬрд╛рдПрдБ, рдЬреЛ рдЗрд╕рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рд▓рдХреНрд╖реНрдп: рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддреНрд░реБрдЯрд┐ рдХрд╛ рдХрд╛рд░рдг рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреБрд░реНрдШрдЯрдирд╛ рдХрд╛ рдХрд╛рд░рдг рдмрдирд╛рдирд╛ рд╣реИред рдЕрдЧрд░ рд╡реЗ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдП, рддреЛ рдмрдзрд╛рдИ! рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмреБрд▓реЗрдЯрдкреНрд░реВрдл рд╣реИред
рдЗрд╕ рдкреНрд░рдерд╛ рдХреЛ
рдордВрдХреА рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдпрд╛
рдлрд╝рдЬрд╝ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдирд╛рдо рд╕реЗ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ (
рдПрдВрдбреНрд░реЙрдЗрдб рдордВрдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рджреЗрдЦреЗрдВ ) рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд╡реНрдпрд╛рдкрдХ рд╣реИред рдЖрдЬ, рдЬрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (MV *, d3.js, Backbone.js, Angular.js, рдЖрджрд┐) рдФрд░ рдмреИрдХрдПрдВрдб (Node.js) рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рддрдХрдиреАрдХ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд▓рд╛рдЧреВ рд╣реИред
рдореВрд▓ рдЙрдкрдпреЛрдЧ
Gremlins рдХреА рднреАрдбрд╝ рдЖрдкрдХреЗ рдРрдк рдХреЛ рд╣рд┐рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╡рд┐рд╢реЗрд╖ gremlins рдХреА рдПрдХ рд╕реЗрдирд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рддрдирд╛рд╡ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдХрд╛рд▓реЗрдВ:
var horde = gremlins.createHorde() horde.unleash();
Gremlins.js рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ gremlins рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ: рдХреБрдЫ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдиреНрдп рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдлрд╝реЙрд░реНрдо рднрд░рддреЗ рд╣реИрдВ, рдХреЛрдИ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐ред
рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЙрдирдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╡реЗ рдЙрдирдХреЗ рдкреАрдЫреЗ рдирд┐рд╢рд╛рди рдЫреЛрдбрд╝рддреЗ рд╣реИрдВ) рдпрд╛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╣реИрдВ:
gremlin formFiller input 5 in <input type=тАЛ"number" name=тАЛ"age">тАЛ gremlin formFiller input pzdoyzshh0k9@o8cpskdb73nmi.r7r in <input type=тАЛ"email" name=тАЛ"email">тАЛ gremlin clicker click at 1219 301 gremlin scroller scroll to 100 25 ...
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рд╛рдирд┐рд░рд╣рд┐рдд рдореЛрдЧреНрд╡рд┐рд╕ рд╣реИрдВред рдореЛрдЧрд╛рдИ рдХреЗрд╡рд▓ рдЖрд╡реЗрджрди рдХреА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рддрд░рдмреВрдЬ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдПрдлрдкреАрдПрд╕" рдореЛрд╣реЙрдХ рд╣рд░ 500ms рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдлрд╝реНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛ (рдПрдлрдкреАрдПрд╕) рджрд┐рдЦрд╛рддрд╛ рд╣реИред
mogwai fps 33.21 mogwai fps 59.45 mogwai fps 12.67 ...
рдХрднреА-рдХрднреА Moogwives рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм Gremlins рдЖрд╡реЗрджрди рдХреЛ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдПрдлрдкреАрдПрд╕ 10 рд╕реЗ рдиреАрдЪреЗ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдПрдлрдкреАрдПрд╕ рдкрд░ рд▓реЙрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдЙрддреНрдкрдиреНрди рд╣реЛрдЧреА:
mogwai fps 12.67 mogwai fps 23.56 err > mogwai fps 7.54 < err mogwai fps 15.76 ...
10 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж, рд╡рд┐рд╢реЗрд╖
Gizmo
рдореЛрд╣рд╡рдИ рд╕рднреА рдЬрд╛рд░реА рдХрд┐рдП рдЧрдП gremlins рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдмрдВрдж рдХрд░ рджреЗрдЧрд╛ред рдЕрдВрдд рдореЗрдВ, рдкрд╣рд▓реЗ 10 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдордЬрдмреВрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Gremlins, mohwas рдХреА рддрд░рд╣, рд╕рд░рд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рд╣реИрдВред рдЕрдЧрд░ gremlins.js рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ gremlins рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡рдпрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП
рдЙрджрд╛рд╣рд░рдг рдлрд╝реЛрд▓реНрдбрд░ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдХрд┐ gremlins.js рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдХрд┐рд╕реА рднреА рдШрдЯрдХ рдХреЛ gremlins.js рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓ рдмрдирд╛рдПрдВред
рд╕реНрдерд╛рдкрдирд╛
рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ,
gremlins.min.js
рдлрд╝рд╛рдЗрд▓ рдХреЛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж
gremlins
рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛:
<script src="path/to/gremlins.min.js"></script> <script> gremlins.createHorde().unleash(); </script>
рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐
gremlins.min.js
рдХреЛ рдЧреНрд▓реЛрдмрд▓ рдиреЗрдорд╕реНрдкреЗрд╕ рдХреНрд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдП:
require.config({ paths: { gremlins: 'path/to/gremlins.min' } }); require(['gremlins'], function(gremlins) { gremlins.createHorde().unleash(); });
рдЙрдиреНрдирдд рдЙрдкрдпреЛрдЧ
рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП gremlins рдФрд░ рдХрдмреНрд░реЛрдВ рдХреА рд╕реНрдерд╛рдкрдирд╛
рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╕рднреА gremlins рдФрд░ moghwis рдХреЛ рдкрд╣рд▓реЗ рд╣реА рд░реЗрдЬрд┐рдореЗрдВрдЯ (
horde
) рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред
рдЖрдк
horde
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА
gremlin()
рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЗрд╡рд▓ рдЙрди gremlins рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
gremlins.createHorde() .gremlin(gremlins.species.formFiller()) .gremlin(gremlins.species.clicker().clickTypes(['click'])) .gremlin(gremlins.species.scroller()) .gremlin(function() { window.$ = function() {}; }) .unleash();
рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ gremlins рдХреЛ рдорд╛рдирдХ рд▓реЛрдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП,
allGremlins()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
gremlins.createHorde() .allGremlins() .gremlin(function() { window.$ = function() {}; }) .unleash();
рдореЛрдЧрд╡реЗрд╡реНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЛрдЧрд╡реЗрдИ
mogwai()
рдФрд░
allMogwais()
рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд░реЗрдВред
рдлрд┐рд▓рд╣рд╛рд▓,
gremlins.js
рдХрдИ gremlins рдФрд░ рдХрдмреНрд░реЛрдВ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рддрд╛ рд╣реИ:
- рдХреНрд▓рд┐рдХрд░рдЧреНрд░реЗрдорд▓рд┐рди рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рднреА рджреГрд╢реНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ
- formFillerGremlin рдЗрдирдкреБрдЯреНрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рдХреЗ, рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ, рдЪреЗрдХрдмреЙрдХреНрд╕ рдЖрджрд┐ рдХреЛ рдЪреБрдирдХрд░ рдлреЙрд░реНрдо рднрд░рддрд╛ рд╣реИред
- scrollerGremlin рд╕реНрдХреНрд░реЙрд▓ рд╡реНрдпреВрдкреЛрд░реНрдЯ
- typerGremlin рдХреАрдмреЛрд░реНрдб рдкрд░ рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рджрдмрд╛рддрд╛ рд╣реИ
- рд╕рддрд░реНрдХрддрд╛ (рдЪреЗрддрд╛рд╡рдиреА) рдХрд╣реЗ рдЬрд╛рдиреЗ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдЕрд╡рд░реБрджреНрдз рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддрд╛ рд╣реИ
- fpsMogwai рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб (FPS) рдлрд╝реНрд░реЗрдо рд▓реЙрдЧ рдХрд░рддрд╛ рд╣реИ
- gizmoMogwai рдЙрдЧреНрд░ gremlins рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ
Gremlins рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди
Gremlins.js рдореЗрдВ рдЖрдкреВрд░реНрддрд┐ рдХрд┐рдП рдЧрдП рд╕рднреА gremlins рдФрд░ рдХрдмреНрд░
configurable functions
, рдЕрд░реНрдерд╛рдд, рдЖрдк рдЙрдирдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдХреНрд▓рд┐рдХрд░ рдЧреНрд░реЗрдорд▓рд┐рди рдПрдХ рдРрд╕рд╛ рдХрд╛рд░реНрдп рд╣реИ рдЬреЛ рдПрдХ рд╡рд╕реНрддреБ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕реАрдзреЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
var clickerGremlin = gremlins.species.clicker(); clickerGremin();
Gremlin
clicker
рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реАрдХреЗ рд╣реИрдВ:
gremlins.species.clicker() .clickTypes(['click'])
рдЯреНрдпреВрдирд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░реЗрдорд▓рд┐рди рдпрд╛ рдореЛрд╣рд╡рд╛рдИ рдХреЗ рдЕрдкрдиреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рдореИрдВ рдЖрдкрдХреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП, рд╕реЗрд╡рд╛ рдмрдВрдж рд╣реЛрдиреЗ рдкрд░ рд▓реЗрдЦ рджреЗрдЦреЗрдВредрд░реИрдВрдбрдо рд╕реАрдб рд╕рдкреЛрд░реНрдЯ
рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рд╣рдорд▓реЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рдП, рддреЛ рдЖрдкрдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд╕рдВрдЦреНрдпрд╛ рдЬрдирд░реЗрдЯрд░ рдХреЛ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред Gremlins.js рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдбреЗрдЯрд╛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
Chance.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╣рдорд▓реЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдмрд╛рдж рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди
рдЖрдк рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдкрд╣рд▓реЗ рдордирдорд╛рдирд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧреА:
- рдкреНрд░реЛрдлрд╛рдЗрд▓рд░ рдЪрд▓рд╛рдПрдВ
- рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрдВрдж рдХрд░реЗрдВред
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЖрд╡реЗрджрди
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
horde
рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ
before()
рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдХреЙрд▓рдмреИрдХ рдХреЛ рдПрдХрдорд╛рддреНрд░ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЗрддреА рд╣реИ:
horde.before(function startProfiler() { console.profile('gremlins'); });
рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
horde
рдСрдмреНрдЬреЗрдХреНрдЯ рднреА рдПрдХ
after()
рд╡рд┐рдзрд┐ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ:
horde.after(function stopProfiler() { console.profileEnd(); });
рджреЛрдиреЛрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЙрд▓рдмреИрдХ рдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреА рд╣реИрдВ:
horde.before(function waitFiveSeconds(done) { window.setTimeout(done, 5000); });
рд░рдгрдиреАрддрд┐
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, gremlins рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдкрд░ рд╣рдорд▓рд╛ рдХрд░реЗрдЧрд╛, 10ms рдХреЗ рдЕрдВрддрд░ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╣рдорд▓реЗ рдХреА рд░рдгрдиреАрддрд┐ рдХреЛ
рд╡рд┐рддрд░рдг рдХрд╣рд╛ рдЬрд╛рддрд╛
рд╣реИ ред рдЖрдк рдЗрд╕реЗ
horde.strategy()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ:
horde.strategy(gremlins.strategies.distribution() .delay(50)
рдЕрдиреНрдп рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдПрдХ рд░рдгрдиреАрддрд┐ рд╕рд┐рд░реНрдл рддреАрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░ рдПрдХ рдХреЙрд▓рдмреИрдХ рд╣реИ: рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ gremlins, рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ (
unleash()
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд▓реМрдЯрд╛), рдФрд░ рдЕрдВрддрд┐рдо рдХреЙрд▓рдмреИрдХред рджреЛ рдФрд░ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░рдгрдиреАрддрд┐рдпрд╛рдВ рдХрд┐рдЯ рдореЗрдВ рдЖрддреА рд╣реИрдВ (
рд╕рднреА рдФрд░
рдкреВрд░реА рддрд░рд╣ рд╕реЗ ) рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣рдорд▓реЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рд░рдгрдиреАрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмреЗрд╣рдж рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░реАрдХреНрд╖рдг рдмрдВрдж рдХрд░реЛ
рдЖрдкрд╛рддрдХрд╛рд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдорд▓реЗ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП
horde.stop()
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред 10 рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рдж рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рдПрдХ рдмрд╛рдж рдХреЗ рд╣рдорд▓реЗ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП
Gizmo
рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рд╣рдорд▓реЗ рдХреЛ рдЬрд╛рд░реА рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЙрдЧ рд╕рдВрд╢реЛрдзрди
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, gremlins.js рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╕рднреА gremlins рдФрд░ рдЧрдВрднреАрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рд▓реЙрдЧрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдХрд▓рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рдЧреНрд░реЗрдорд▓рд┐рди рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ AJAX рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рд░ 10 рд╕реЗрдХрдВрдб рдореЗрдВ рднреЗрдЬрдирд╛), рддреЛ
logger
рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЪрд╛рд░ рддрд░реАрдХреЛрдВ (рд▓реЙрдЧ, рд╕реВрдЪрдирд╛, рдЪреЗрддрд╛рд╡рдиреА рдФрд░ рддреНрд░реБрдЯрд┐) рдХреЗ рд╕рд╛рде
logger()
рд╡рд┐рдзрд┐ рд╕реЗ рдкрд╛рд╕ рдХрд░реЗрдВ :
var customLogger = { log: function(msg) { }, info: function(msg) { }, warn: function(msg) { }, error: function(msg) { } }; horde.logger(customLogger);
рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рдХрдбрд╝рд╣рд╛рд░рд╛ рдмрдирд╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдорд┐рдирд┐рд▓реЙрдЧ рдХреА рдУрд░ рджреЗрдЦреЗрдВрд╕рдВрджрд░реНрдн