ื›ื™ืฆื“ ืฉื™ืคืจื ื• ืืช ื”ืžื›ื ื™ืงื” ืฉืœ ื—ื™ืฉื•ื‘ื™ื ื‘ืœื™ืกื˜ื™ื™ื ืขื‘ื•ืจ ื™ื•ืจื” ื ื™ื™ื“ ืขื ืืœื’ื•ืจื™ืชื ืคื™ืฆื•ื™ ื—ื‘ื™ื•ืŸ ืจืฉืช

ื›ื™ืฆื“ ืฉื™ืคืจื ื• ืืช ื”ืžื›ื ื™ืงื” ืฉืœ ื—ื™ืฉื•ื‘ื™ื ื‘ืœื™ืกื˜ื™ื™ื ืขื‘ื•ืจ ื™ื•ืจื” ื ื™ื™ื“ ืขื ืืœื’ื•ืจื™ืชื ืคื™ืฆื•ื™ ื—ื‘ื™ื•ืŸ ืจืฉืช

ื”ื™ื™, ืื ื™ Nikita Brizhak, ืžืคืชื—ืช ืฉืจืชื™ื ืžื‘ื™ืช Pixonic. ื”ื™ื•ื ืื ื™ ืจื•ืฆื” ืœื“ื‘ืจ ืขืœ ืคื™ืฆื•ื™ ืขืœ ืคื™ื’ื•ืจ ื‘-Multiplayer ื ื™ื™ื“.

ืžืืžืจื™ื ืจื‘ื™ื ื ื›ืชื‘ื• ืขืœ ืคื™ืฆื•ื™ ืขืœ ืคื™ื’ื•ืจ ื‘ืฉืจืช, ื›ื•ืœืœ ื‘ืจื•ืกื™ืช. ื–ื” ืœื ืžืคืชื™ืข, ืžื›ื™ื•ื•ืŸ ืฉื˜ื›ื ื•ืœื•ื’ื™ื” ื–ื• ืฉื™ืžืฉื” ื‘ืื•ืคืŸ ืคืขื™ืœ ื‘ื™ืฆื™ืจืช FPS ืžืจื•ื‘ื™ ืžืฉืชืชืคื™ื ืžืื– ืกื•ืฃ ืฉื ื•ืช ื”-90. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœื–ื›ื•ืจ ืืช ื”ืžื•ื“ QuakeWorld, ืฉื”ื™ื” ืื—ื“ ื”ืจืืฉื•ื ื™ื ืœื”ืฉืชืžืฉ ื‘ื•.

ืื ื• ืžืฉืชืžืฉื™ื ื‘ื• ื’ื ื‘ื™ืจื™ื•ืช ืžืจื•ื‘ื” ืžืฉืชืชืคื™ื ื”ื ื™ื™ื“ ืฉืœื ื• Dino Squad.

ื‘ืžืืžืจ ื–ื”, ื”ืžื˜ืจื” ืฉืœื™ ื”ื™ื ืœื ืœื—ื–ื•ืจ ืขืœ ืžื” ืฉื›ื‘ืจ ื ื›ืชื‘ ืืœืฃ ืคืขืžื™ื, ืืœื ืœืกืคืจ ืื™ืš ื”ื˜ืžืขื ื• ืคื™ืฆื•ื™ ืคื™ื’ื•ืจ ื‘ืžืฉื—ืง ืฉืœื ื•, ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ืขืจื™ืžืช ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืฉืœื ื• ื•ืชื›ื•ื ื•ืช ื”ืœื™ื‘ื” ืฉืœ ื”ืžืฉื—ืง.

ื›ืžื” ืžื™ืœื™ื ืขืœ ื”ืงื•ืจื˜ืงืก ื•ื”ื˜ื›ื ื•ืœื•ื’ื™ื” ืฉืœื ื•.

Dino Squad ื”ื•ื ื™ื•ืจื” PvP ื ื™ื™ื“ ื‘ืจืฉืช. ืฉื—ืงื ื™ื ืฉื•ืœื˜ื™ื ื‘ื“ื™ื ื•ื–ืื•ืจื™ื ื”ืžืฆื•ื™ื“ื™ื ื‘ืžื’ื•ื•ืŸ ื›ืœื™ ื ืฉืง ื•ื ืœื—ืžื™ื ื–ื” ื‘ื–ื” ื‘ืงื‘ื•ืฆื•ืช 6 ื ื’ื“ 6.

ื’ื ื”ืœืงื•ื— ื•ื’ื ื”ืฉืจืช ืžื‘ื•ืกืกื™ื ืขืœ Unity. ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ื“ื™ ืงืœืืกื™ืช ืขื‘ื•ืจ ื™ื•ืจื™ื: ื”ืฉืจืช ืกืžื›ื•ืชื™, ื•ื—ื™ื–ื•ื™ ืœืงื•ื— ืขื•ื‘ื“ ืขืœ ื”ืœืงื•ื—ื•ืช. ื”ื“ืžื™ื™ืช ื”ืžืฉื—ืง ื ื›ืชื‘ืช ื‘ืืžืฆืขื•ืช ECS ืคื ื™ืžื™ืช ื•ืžืฉืžืฉืช ื”ืŸ ื‘ืฉืจืช ื•ื”ืŸ ื‘ืœืงื•ื—.

ืื ื–ื• ื”ืคืขื ื”ืจืืฉื•ื ื” ืฉืฉืžืขืชื ืขืœ ืคื™ืฆื•ื™ื™ ืคื™ื’ื•ืจ, ื”ื ื” ืกื™ื•ืจ ืงืฆืจ ืœื ื•ืฉื.

ื‘ืžืฉื—ืงื™ FPS ืžืจื•ื‘ื™ ืžืฉืชืชืคื™ื, ื”ืžืฉื—ืง ืžื“ื•ืžื” ื‘ื“ืจืš ื›ืœืœ ื‘ืฉืจืช ืžืจื•ื—ืง. ืฉื—ืงื ื™ื ืฉื•ืœื—ื™ื ืืช ื”ืงืœื˜ ืฉืœื”ื (ืžื™ื“ืข ืขืœ ื”ืžืงืฉื™ื ืฉื ืœื—ืฆื•) ืœืฉืจืช, ื•ื‘ืชื’ื•ื‘ื” ื”ืฉืจืช ืฉื•ืœื— ืœื”ื ืžืฆื‘ ืžืฉื—ืง ืžืขื•ื“ื›ืŸ ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ื ืชื•ื ื™ื ืฉื”ืชืงื‘ืœื•. ืขื ืกื›ื™ืžืช ืื™ื ื˜ืจืืงืฆื™ื” ื–ื•, ื”ื”ืฉื”ื™ื” ื‘ื™ืŸ ืœื—ื™ืฆื” ืขืœ ืžืงืฉ ืงื“ื™ืžื” ืœืจื’ืข ืฉื“ืžื•ืช ื”ืฉื—ืงืŸ ื ืขื” ืขืœ ื”ืžืกืš ืชืžื™ื“ ืชื”ื™ื” ื’ื“ื•ืœื” ื™ื•ืชืจ ืžื”ืคื™ื ื’.

ื‘ืขื•ื“ ืฉื‘ืจืฉืชื•ืช ืžืงื•ืžื™ื•ืช ื”ืขื™ื›ื•ื‘ ื”ื–ื” (ื”ื ืงืจื ื‘ืคื•ืคื•ืœืืจื™ื•ืช ื”-input lag) ืขืฉื•ื™ ืœื”ื™ื•ืช ื‘ืœืชื™ ืžื•ืจื’ืฉ, ื›ืืฉืจ ืžืฉื—ืง ื“ืจืš ื”ืื™ื ื˜ืจื ื˜ ื”ื•ื ื™ื•ืฆืจ ืชื—ื•ืฉื” ืฉืœ "ื”ื—ืœืงื” ืขืœ ื”ืงืจื—" ื‘ืขืช ืฉืœื™ื˜ื” ื‘ื“ืžื•ืช. ื‘ืขื™ื” ื–ื• ืจืœื•ื•ื ื˜ื™ืช ื›ืคืœื™ื™ื ืœืจืฉืชื•ืช ืกืœื•ืœืจื™ื•ืช, ื›ืืฉืจ ื”ืžืงืจื” ืฉื‘ื• ื”ืคื™ื ื’ ืฉืœ ืฉื—ืงืŸ ื”ื•ื 200 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื” ืขื“ื™ื™ืŸ ื ื—ืฉื‘ ืœื—ื™ื‘ื•ืจ ืžืฆื•ื™ืŸ. ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื”ืคื™ื ื’ ื™ื›ื•ืœ ืœื”ื™ื•ืช 350, 500 ืื• 1000 ืืœืคื™ื•ืช ื”ืฉื ื™ื™ื”. ืื– ื–ื” ื”ื•ืคืš ืœื”ื™ื•ืช ื›ืžืขื˜ ื‘ืœืชื™ ืืคืฉืจื™ ืœืฉื—ืง ื™ื•ืจื” ืžื”ื™ืจ ืขื ื”ืฉื”ื™ื™ืช ืงืœื˜.

ื”ืคืชืจื•ืŸ ืœื‘ืขื™ื” ื–ื• ื”ื•ื ื—ื™ื–ื•ื™ ืกื™ืžื•ืœืฆื™ื” ื‘ืฆื“ ื”ืœืงื•ื—. ื›ืืŸ ื”ืœืงื•ื— ืขืฆืžื• ืžื—ื™ืœ ืืช ื”ืงืœื˜ ืขืœ ื“ืžื•ืช ื”ืฉื—ืงืŸ, ืžื‘ืœื™ ืœื—ื›ื•ืช ืœืชื’ื•ื‘ื” ืžื”ืฉืจืช. ื•ื›ืฉื”ืชืฉื•ื‘ื” ืžืชืงื‘ืœืช, ื”ื•ื ืคืฉื•ื˜ ืžืฉื•ื•ื” ืืช ื”ืชื•ืฆืื•ืช ื•ืžืขื“ื›ืŸ ืืช ืขืžื“ื•ืช ื”ื™ืจื™ื‘ื™ื. ื”ื”ืฉื”ื™ื” ื‘ื™ืŸ ืœื—ื™ืฆื” ืขืœ ืžืงืฉ ืœื”ืฆื’ืช ื”ืชื•ืฆืื” ืขืœ ื”ืžืกืš ื‘ืžืงืจื” ื–ื” ื”ื™ื ืžื™ื ื™ืžืœื™ืช.

ื—ืฉื•ื‘ ืœื”ื‘ื™ืŸ ืืช ื”ื ื™ื•ืื ืก ื›ืืŸ: ื”ืœืงื•ื— ืชืžื™ื“ ืฉื•ืื‘ ืืช ืขืฆืžื• ืœืคื™ ื”ืงืœื˜ ื”ืื—ืจื•ืŸ ืฉืœื•, ื•ืื•ื™ื‘ื™ื - ืขื ืขื™ื›ื•ื‘ ื‘ืจืฉืช, ืœืคื™ ื”ืžืฆื‘ ื”ืงื•ื“ื ืžื”ื ืชื•ื ื™ื ืžื”ืฉืจืช. ื›ืœื•ืžืจ, ื›ืืฉืจ ื™ื•ืจื™ื ืขืœ ืื•ื™ื‘, ื”ืฉื—ืงืŸ ืจื•ืื” ืื•ืชื• ื‘ืขื‘ืจ ื™ื—ืกื™ืช ืœืขืฆืžื•. ืขื•ื“ ืขืœ ื—ื™ื–ื•ื™ ืœืงื•ื— ื›ืชื‘ื ื• ืงื•ื“ื.

ืœืคื™ื›ืš, ื—ื™ื–ื•ื™ ืœืงื•ื— ืคื•ืชืจืช ื‘ืขื™ื” ืื—ืช, ืืš ื™ื•ืฆืจืช ื‘ืขื™ื” ืื—ืจืช: ืื ืฉื—ืงืŸ ื™ื•ืจื” ื‘ื ืงื•ื“ื” ืฉื‘ื” ื”ื™ื” ื”ืื•ื™ื‘ ื‘ืขื‘ืจ, ื‘ืฉืจืช ื›ืฉื”ื•ื ื™ื•ืจื” ื‘ืื•ืชื” ื ืงื•ื“ื”, ื™ื™ืชื›ืŸ ืฉื”ืื•ื™ื‘ ื›ื‘ืจ ืœื ื ืžืฆื ื‘ืžืงื•ื ื”ื–ื”. ืคื™ืฆื•ื™ ืขืœ ืคื™ื’ื•ืจ ืฉืจืช ืžื ืกื” ืœืคืชื•ืจ ื‘ืขื™ื” ื–ื•. ื›ืืฉืจ ื ื•ืจื” ื ืฉืง, ื”ืฉืจืช ืžืฉื—ื–ืจ ืืช ืžืฆื‘ ื”ืžืฉื—ืง ืฉื”ืฉื—ืงืŸ ืจืื” ื‘ืžืงื•ื ื‘ื–ืžืŸ ื”ื™ืจื™ื™ื”, ื•ื‘ื•ื“ืง ื”ืื ื”ื•ื ื‘ืืžืช ื™ื›ื•ืœ ื”ื™ื” ืœืคื’ื•ืข ื‘ืื•ื™ื‘. ืื ื”ืชืฉื•ื‘ื” ื”ื™ื "ื›ืŸ", ื”ืคื’ื™ืขื” ื ืกืคืจืช, ื’ื ืื ื”ืื•ื™ื‘ ื›ื‘ืจ ืœื ื ืžืฆื ื‘ืฉืจืช ื‘ืื•ืชื” ื ืงื•ื“ื”.

ื—ืžื•ืฉื™ื ื‘ื™ื“ืข ื”ื–ื”, ื”ืชื—ืœื ื• ืœื™ื™ืฉื ืคื™ืฆื•ื™ ืœืื—ื•ืจ ื‘ืฉืจืช ื‘-Dino Squad. ืงื•ื“ื ื›ืœ, ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœื”ื‘ื™ืŸ ืื™ืš ืœืฉื—ื–ืจ ื‘ืฉืจืช ืืช ืžื” ืฉื”ืœืงื•ื— ืจืื”? ื•ืžื” ื‘ื“ื™ื•ืง ืฆืจื™ืš ืœืฉื—ื–ืจ? ื‘ืžืฉื—ืง ืฉืœื ื•, ืคื’ื™ืขื•ืช ืžื›ืœื™ ื ืฉืง ื•ื™ื›ื•ืœื•ืช ืžื—ื•ืฉื‘ื•ืช ื‘ืืžืฆืขื•ืช ื”ืงืจื ื•ืช ื•ืฉื›ื‘ื•ืช-ืขืœ - ื›ืœื•ืžืจ, ื‘ืืžืฆืขื•ืช ืื™ื ื˜ืจืืงืฆื™ื•ืช ืขื ื”ืžืชื ื’ืฉื™ื ื”ืคื™ื–ื™ื™ื ืฉืœ ื”ืื•ื™ื‘. ื‘ื”ืชืื ืœื›ืš, ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœืฉื—ื–ืจ ืืช ื”ืžื™ืงื•ื ืฉืœ ื”ืžืชื ื’ืฉื™ื ื”ืœืœื•, ืฉื”ืฉื—ืงืŸ "ืจืื”" ื‘ืื•ืคืŸ ืžืงื•ืžื™, ื‘ืฉืจืช. ื‘ืื•ืชื• ื–ืžืŸ ื”ืฉืชืžืฉื ื• ื‘ื’ืจืกืช Unity 2018.x. ื”-API ืฉืœ ื”ืคื™ื–ื™ืงื” ืฉื ื”ื•ื ืกื˜ื˜ื™, ื”ืขื•ืœื ื”ืคื™ื–ื™ ืงื™ื™ื ื‘ืขื•ืชืง ื‘ื•ื“ื“. ืื™ืŸ ื“ืจืš ืœืฉืžื•ืจ ืืช ื”ืžืฆื‘ ืฉืœื• ื•ืื– ืœืฉื—ื–ืจ ืื•ืชื• ืžื”ืงื•ืคืกื”. ืื– ืžื” ืœืขืฉื•ืช?

ื”ืคืชืจื•ืŸ ื”ื™ื” ืขืœ ืคื ื™ ื”ืฉื˜ื—; ื›ืœ ื”ืืœืžื ื˜ื™ื ืฉืœื• ื›ื‘ืจ ืฉื™ืžืฉื• ืื•ืชื ื• ืœืคืชืจื•ืŸ ื‘ืขื™ื•ืช ืื—ืจื•ืช:

  1. ืขื‘ื•ืจ ื›ืœ ืœืงื•ื—, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื“ืขืช ื‘ืื™ื–ื• ืฉืขื” ื”ื•ื ืจืื” ื™ืจื™ื‘ื™ื ื›ืฉื”ื•ื ืœื—ืฅ ืขืœ ื”ืžืงืฉื™ื. ื›ื‘ืจ ื›ืชื‘ื ื• ืืช ื”ืžื™ื“ืข ื”ื–ื” ื‘ื—ื‘ื™ืœืช ื”ืงืœื˜ ื•ื”ืฉืชืžืฉื ื• ื‘ื• ื›ื“ื™ ืœื”ืชืื™ื ืืช ื—ื™ื–ื•ื™ ื”ืœืงื•ื—.
  2. ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœืื—ืกืŸ ืืช ื”ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ืžืฆื‘ื™ ื”ืžืฉื—ืง. ื‘ื• ื ื—ื–ื™ืง ื‘ืขืžื“ื•ืช ื™ืจื™ื‘ื™ื ื• (ื•ืœื›ืŸ ื”ืžืชื ื’ืฉื™ื ืฉืœื”ื). ื›ื‘ืจ ื”ื™ื™ืชื” ืœื ื• ื”ื™ืกื˜ื•ืจื™ื™ืช ืžืฆื‘ ื‘ืฉืจืช, ื”ืฉืชืžืฉื ื• ื‘ื” ื›ื“ื™ ืœื‘ื ื•ืช ื“ืœืชื•ืช. ื‘ื™ื“ื™ืขื” ืฉืœ ื”ื–ืžืŸ ื”ื ื›ื•ืŸ, ื ื•ื›ืœ ืœืžืฆื•ื ื‘ืงืœื•ืช ืืช ื”ืžืฆื‘ ื”ื ื›ื•ืŸ ื‘ื”ื™ืกื˜ื•ืจื™ื”.
  3. ืขื›ืฉื™ื• ื›ืฉื™ืฉ ืœื ื• ืืช ืžืฆื‘ ื”ืžืฉื—ืง ืžื”ื”ื™ืกื˜ื•ืจื™ื” ื‘ื™ื“, ืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ื™ื•ืช ืžืกื•ื’ืœื™ื ืœืกื ื›ืจืŸ ืืช ื ืชื•ื ื™ ื”ืฉื—ืงื ื™ื ืขื ื”ืžืฆื‘ ืฉืœ ื”ืขื•ืœื ื”ืคื™ื–ื™. ืžืชื ื’ืฉื™ื ืงื™ื™ืžื™ื - ื–ื–ื™ื, ื—ืกืจื™ื - ื™ื•ืฆืจื™ื, ืžื™ื•ืชืจื™ื - ื”ื•ืจืกื™ื. ื’ื ื”ื”ื™ื’ื™ื•ืŸ ื”ื–ื” ื›ื‘ืจ ื ื›ืชื‘ ื•ื”ื•ืจื›ื‘ ืžื›ืžื” ืžืขืจื›ื•ืช ECS. ื”ืฉืชืžืฉื ื• ื‘ื• ื›ื“ื™ ืœื”ื—ื–ื™ืง ื›ืžื” ื—ื“ืจื™ ืžืฉื—ืงื™ื ื‘ืชื”ืœื™ืš ืื—ื“ ืฉืœ Unity. ื•ืžื›ื™ื•ื•ืŸ ืฉื”ืขื•ืœื ื”ืคื™ื–ื™ ื”ื•ื ืื—ื“ ืœื›ืœ ืชื”ืœื™ืš, ื”ื™ื” ืฆื•ืจืš ืœืขืฉื•ืช ื‘ื• ืฉื™ืžื•ืฉ ื—ื•ื–ืจ ื‘ื™ืŸ ื”ื—ื“ืจื™ื. ืœืคื ื™ ื›ืœ ืกื™ืžื•ืŸ ืฉืœ ื”ืกื™ืžื•ืœืฆื™ื”, "ืื™ืคืกื ื•" ืืช ืžืฆื‘ ื”ืขื•ืœื ื”ืคื™ื–ื™ ื•ืืชื—ืœื ื• ืื•ืชื• ืžื—ื“ืฉ ื‘ื ืชื•ื ื™ื ืขื‘ื•ืจ ื”ื—ื“ืจ ื”ื ื•ื›ื—ื™, ืชื•ืš ื ื™ืกื™ื•ืŸ ืœืขืฉื•ืช ืฉื™ืžื•ืฉ ื—ื•ื–ืจ ื‘ืื•ื‘ื™ื™ืงื˜ื™ ืžืฉื—ืง Unity ื›ื›ืœ ื”ืืคืฉืจ ื‘ืืžืฆืขื•ืช ืžืขืจื›ืช ืื™ื’ื•ื ื—ื›ืžื”. ื›ืœ ืฉื ื•ืชืจ ื”ื™ื” ืœื”ืคืขื™ืœ ืืช ืื•ืชื• ื”ื™ื’ื™ื•ืŸ ืขื‘ื•ืจ ืžืฆื‘ ื”ืžืฉื—ืง ืžื”ืขื‘ืจ.

ืขืœ ื™ื“ื™ ื—ื™ื‘ื•ืจ ื›ืœ ื”ืืœืžื ื˜ื™ื ื”ืœืœื•, ืงื™ื‘ืœื ื• "ืžื›ื•ื ืช ื–ืžืŸ" ืฉื™ื›ื•ืœื” ืœื”ื—ื–ื™ืจ ืืช ืžืฆื‘ ื”ืขื•ืœื ื”ืคื™ื–ื™ ืœืื—ื•ืจ ืœืจื’ืข ื”ื ื›ื•ืŸ. ื”ืงื•ื“ ื”ืชื‘ืจืจ ื›ืคืฉื•ื˜:

public class TimeMachine : ITimeMachine
{
     //ะ˜ัั‚ะพั€ะธั ะธะณั€ะพะฒั‹ั… ัะพัั‚ะพัะฝะธะน
     private readonly IGameStateHistory _history;

     //ะขะตะบัƒั‰ะตะต ะธะณั€ะพะฒะพะต ัะพัั‚ะพัะฝะธะต ะฝะฐ ัะตั€ะฒะตั€ะต
     private readonly ExecutableSystem[] _systems;

     //ะะฐะฑะพั€ ัะธัั‚ะตะผ, ั€ะฐััั‚ะฐะฒะปััŽั‰ะธั… ะบะพะปะปะฐะนะดะตั€ั‹ ะฒ ั„ะธะทะธั‡ะตัะบะพะผ ะผะธั€ะต 
     //ะฟะพ ะดะฐะฝะฝั‹ะผ ะธะท ะธะณั€ะพะฒะพะณะพ ัะพัั‚ะพัะฝะธั
     private readonly GameState _presentState;

     public TimeMachine(IGameStateHistory history, GameState presentState, ExecutableSystem[] timeInitSystems)
     {
         _history = history; 
         _presentState = presentState;
         _systems = timeInitSystems;  
     }

     public GameState TravelToTime(int tick)
     {
         var pastState = tick == _presentState.Time ? _presentState : _history.Get(tick);
         foreach (var system in _systems)
         {
             system.Execute(pastState);
         }
         return pastState;
     }
}

ื›ืœ ืฉื ื•ืชืจ ื”ื™ื” ืœื”ื‘ื™ืŸ ืื™ืš ืœื”ืฉืชืžืฉ ื‘ืžื›ื•ื ื” ื”ื–ื• ื›ื“ื™ ืœืคืฆื•ืช ื‘ืงืœื•ืช ืขืœ ื™ืจื™ื•ืช ื•ื™ื›ื•ืœื•ืช.

ื‘ืžืงืจื” ื”ืคืฉื•ื˜ ื‘ื™ื•ืชืจ, ื›ืืฉืจ ื”ืžื›ื ื™ืงื” ืžื‘ื•ืกืกืช ืขืœ ืกืจื™ืงืช ื”ื™ื˜ ื‘ื•ื“ื“ืช, ื ืจืื” ืฉื”ื›ืœ ื‘ืจื•ืจ: ืœืคื ื™ ืฉื”ืฉื—ืงืŸ ื™ื•ืจื”, ื”ื•ื ืฆืจื™ืš ืœื”ื—ื–ื™ืจ ืืช ื”ืขื•ืœื ื”ืคื™ื–ื™ ืœืžืฆื‘ ื”ืจืฆื•ื™, ืœื‘ืฆืข raycast, ืœืกืคื•ืจ ืืช ื”ืคื’ื™ืขื” ืื• ื”ื—ืžืฆื”, ื• ืœื”ื—ื–ื™ืจ ืืช ื”ืขื•ืœื ืœืžืฆื‘ ื”ื”ืชื—ืœืชื™.

ืื‘ืœ ื™ืฉ ืžืขื˜ ืžืื•ื“ ืžื›ื•ื ืื™ื ื›ืืœื” ื‘-Dino Squad! ืจื•ื‘ ื›ืœื™ ื”ื ืฉืง ื‘ืžืฉื—ืง ื™ื•ืฆืจื™ื ืงืœื™ืขื™ื - ื›ื“ื•ืจื™ื ืืจื•ื›ื™ื ืฉืขืคื™ื ืœืžืกืคืจ ืชืงืœื•ืช ืกื™ืžื•ืœืฆื™ื” (ื‘ืžืงืจื™ื ืžืกื•ื™ืžื™ื, ืขืฉืจื•ืช ื˜ื™ืงื™ื). ืžื” ืœืขืฉื•ืช ืื™ืชื, ื‘ืื™ื–ื• ืฉืขื” ื”ื ืฆืจื™ื›ื™ื ืœื˜ื•ืก?

ะ’ ืžืืžืจ ืขืชื™ืง ืœื’ื‘ื™ ืขืจื™ืžืช ื”ืจืฉืช Half-Life, ื”ื—ื‘ืจ'ื” ืž-Valve ืฉืืœื• ืืช ืื•ืชื” ืฉืืœื”, ื•ื”ืชืฉื•ื‘ื” ืฉืœื”ื ื”ื™ื™ืชื” ื›ื–ื•: ืคื™ืฆื•ื™ ืขืœ ืคื™ื’ื•ืจ ืงืœื™ืขื™ื ื”ื•ื ื‘ืขื™ื™ืชื™, ื•ืขื“ื™ืฃ ืœื”ื™ืžื ืข ืžื›ืš.

ืœื ื”ื™ื™ืชื” ืœื ื• ืืคืฉืจื•ืช ื–ื•: ื›ืœื™ ื ืฉืง ืžื‘ื•ืกืกื™ ืงืœื™ืขื™ื ื”ื™ื• ืชื›ื•ื ื” ืžืจื›ื–ื™ืช ื‘ืขื™ืฆื•ื‘ ื”ืžืฉื—ืง. ืื– ื”ื™ื™ื ื• ืฆืจื™ื›ื™ื ืœื”ืžืฆื™ื ืžืฉื”ื•. ืœืื—ืจ ืกื™ืขื•ืจ ืžื•ื—ื•ืช, ื’ื™ื‘ืฉื ื• ืฉืชื™ ืืคืฉืจื•ื™ื•ืช ืฉื ืจืื” ืฉืขื‘ื“ื•:

1. ืื ื—ื ื• ืงื•ืฉืจื™ื ืืช ื”ืงืœื™ืข ืœื–ืžืŸ ืฉืœ ื”ืฉื—ืงืŸ ืฉื™ืฆืจ ืื•ืชื•. ื›ืœ ืกื™ืžื•ืŸ ืฉืœ ืกื™ืžื•ืœืฆื™ื™ืช ื”ืฉืจืช, ืขื‘ื•ืจ ื›ืœ ื›ื“ื•ืจ ืฉืœ ื›ืœ ืฉื—ืงืŸ, ืื ื• ืžื—ื–ื™ืจื™ื ืืช ื”ืขื•ืœื ื”ืคื™ื–ื™ ืœืžืฆื‘ ื”ืœืงื•ื— ื•ืžื‘ืฆืขื™ื ืืช ื”ื—ื™ืฉื•ื‘ื™ื ื”ื“ืจื•ืฉื™ื. ื’ื™ืฉื” ื–ื• ืืคืฉืจื” ืขื•ืžืก ืžื‘ื•ื–ืจ ืขืœ ื”ืฉืจืช ื•ื–ืžืŸ ื˜ื™ืกื” ืฆืคื•ื™ ืฉืœ ืงืœื™ืขื™ื. ื—ื™ื–ื•ื™ ื”ื™ื” ื—ืฉื•ื‘ ื‘ืžื™ื•ื—ื“ ืขื‘ื•ืจื ื•, ืžื›ื™ื•ื•ืŸ ืฉื™ืฉ ืœื ื• ืืช ื›ืœ ื”ืงืœื™ืขื™ื, ื›ื•ืœืœ ืงืœื™ืขื™ ื”ืื•ื™ื‘, ื—ื–ื•ื™ื™ื ืขืœ ื”ืœืงื•ื—.

ื›ื™ืฆื“ ืฉื™ืคืจื ื• ืืช ื”ืžื›ื ื™ืงื” ืฉืœ ื—ื™ืฉื•ื‘ื™ื ื‘ืœื™ืกื˜ื™ื™ื ืขื‘ื•ืจ ื™ื•ืจื” ื ื™ื™ื“ ืขื ืืœื’ื•ืจื™ืชื ืคื™ืฆื•ื™ ื—ื‘ื™ื•ืŸ ืจืฉืช
ื‘ืชืžื•ื ื”, ื”ืฉื—ืงืŸ ื‘ืกื™ืžื•ืŸ 30 ื™ื•ืจื” ื˜ื™ืœ ื‘ืฆื™ืคื™ื™ื”: ื”ื•ื ืจื•ืื” ืœืื™ื–ื” ื›ื™ื•ื•ืŸ ื”ืื•ื™ื‘ ืจืฅ ื•ื™ื•ื“ืข ืืช ื”ืžื”ื™ืจื•ืช ื”ืžืฉื•ืขืจืช ืฉืœ ื”ื˜ื™ืœ. ืžืงื•ืžื™ืช ื”ื•ื ืจื•ืื” ืฉืคื’ืข ื‘ืžื˜ืจื” ื‘ืกื™ืžื•ืŸ ื”-33. ื”ื•ื“ื•ืช ืœืคื™ืฆื•ื™ ืคื™ื’ื•ืจ, ื”ื•ื ื™ื•ืคื™ืข ื’ื ื‘ืฉืจืช

2. ืื ื—ื ื• ืขื•ืฉื™ื ื”ื›ืœ ื›ืžื• ื‘ืื•ืคืฆื™ื” ื”ืจืืฉื•ื ื”, ืื‘ืœ ืื—ืจื™ ืฉืกืคืจื ื• ืกื™ืžื•ืŸ ืื—ื“ ืฉืœ ื”ื“ืžื™ื™ืช ื”ืงืœื™ืข, ืื ื—ื ื• ืœื ืขื•ืฆืจื™ื, ืืœื ืžืžืฉื™ื›ื™ื ืœื“ืžื•ืช ืืช ื”ื˜ื™ืกื” ืฉืœื• ื‘ืชื•ืš ืื•ืชื• ืกื™ืžื•ืŸ ืฉืจืช, ื›ืœ ืคืขื ืžืงืจื‘ื™ื ืืช ื”ื–ืžืŸ ืฉืœื• ืœืฉืจืช ืกื™ืžื•ืŸ ืื—ื“ ืื—ื“ ื•ืขื“ื›ื•ืŸ ืขืžื“ื•ืช ืžืชื ื’ืฉื™ื. ืื ื• ืขื•ืฉื™ื ื–ืืช ืขื“ ืฉืื—ื“ ืžืฉื ื™ ื“ื‘ืจื™ื ืงื•ืจื”:

  • ืคื’ ืชื•ืงืฃ ื”ื›ื“ื•ืจ. ื–ื” ืื•ืžืจ ืฉื”ื—ื™ืฉื•ื‘ื™ื ื”ืกืชื™ื™ืžื•, ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœืกืคื•ืจ ื”ื—ืžืฆื” ืื• ืžื›ื”. ื•ื–ื” ื‘ืื•ืชื” ืงืจืฆื™ื” ื‘ื” ื ื•ืจืชื” ื”ื™ืจื™ื™ื”! ืขื‘ื•ืจื ื• ื–ื” ื”ื™ื” ื’ื ืคืœื•ืก ื•ื’ื ืžื™ื ื•ืก. ื™ืชืจื•ืŸ - ื›ื™ ืขื‘ื•ืจ ื”ืฉื—ืงืŸ ื”ื™ื•ืจื” ื–ื” ื”ืคื—ื™ืช ืžืฉืžืขื•ืชื™ืช ืืช ื”ืขื™ื›ื•ื‘ ื‘ื™ืŸ ื”ืคื’ื™ืขื” ืœื™ืจื™ื“ื” ื‘ื‘ืจื™ืื•ืช ื”ืื•ื™ื‘. ื”ื—ื™ืกืจื•ืŸ ื”ื•ื ืฉืื•ืชื• ืืคืงื˜ ื ืฆืคื” ื›ืืฉืจ ื™ืจื™ื‘ื™ื ื™ืจื• ืœืขื‘ืจ ื”ืฉื—ืงืŸ: ื”ืื•ื™ื‘, ื›ืš ื ืจืื”, ืจืง ื™ืจื” ืจืงื˜ื” ืื™ื˜ื™ืช, ื•ื”ื ื–ืง ื›ื‘ืจ ื ืกืคืจ.
  • ื”ืงืœื™ืข ื”ื’ื™ืข ืœื–ืžืŸ ื”ืฉืจืช. ื‘ืžืงืจื” ื–ื”, ื”ืกื™ืžื•ืœืฆื™ื” ืฉืœื• ืชืžืฉื™ืš ื‘ืชื™ืงื™ืช ื”ืฉืจืช ื”ื‘ืื” ืœืœื ื›ืœ ืคื™ืฆื•ื™ ืคื™ื’ื•ืจ. ืขื‘ื•ืจ ืงืœื™ืขื™ื ืื™ื˜ื™ื™ื, ื–ื” ื™ื›ื•ืœ ื‘ืื•ืคืŸ ืชื™ืื•ืจื˜ื™ ืœื”ืคื—ื™ืช ืืช ืžืกืคืจ ื”ื”ื—ื–ืจื•ืช ื”ืคื™ื–ื™ืงืœื™ื•ืช ื‘ื”ืฉื•ื•ืื” ืœืืคืฉืจื•ืช ื”ืจืืฉื•ื ื”. ื™ื—ื“ ืขื ื–ืืช, ื”ืขื•ืžืก ื”ืœื ืื—ื™ื“ ืขืœ ื”ืกื™ืžื•ืœืฆื™ื” ื’ื“ืœ: ื”ืฉืจืช ื”ื™ื” ื‘ื˜ืœ, ืื• ืฉื‘ืชื™ืง ืฉืจืช ืื—ื“ ื”ื•ื ื—ื™ืฉื‘ ืชืจื™ืกืจ ืกื™ืžื•ืœืฆื™ื” ืœืžืกืคืจ ื›ื“ื•ืจื™ื.

ื›ื™ืฆื“ ืฉื™ืคืจื ื• ืืช ื”ืžื›ื ื™ืงื” ืฉืœ ื—ื™ืฉื•ื‘ื™ื ื‘ืœื™ืกื˜ื™ื™ื ืขื‘ื•ืจ ื™ื•ืจื” ื ื™ื™ื“ ืขื ืืœื’ื•ืจื™ืชื ืคื™ืฆื•ื™ ื—ื‘ื™ื•ืŸ ืจืฉืช
ืื•ืชื• ืชืจื—ื™ืฉ ื›ืžื• ื‘ืชืžื•ื ื” ื”ืงื•ื“ืžืช, ืืš ืžื—ื•ืฉื‘ ืœืคื™ ื”ืกื›ืžื” ื”ืฉื ื™ื™ื”. ื”ื˜ื™ืœ "ื”ื“ื‘ื™ืง" ืืช ื–ืžืŸ ื”ืฉืจืช ื‘ืื•ืชื” ืกื™ืžื•ืŸ ืฉื‘ื• ื”ืชืจื—ืฉื” ื”ื™ืจื™ื™ื”, ื•ื ื™ืชืŸ ืœืกืคื•ืจ ืืช ื”ืคื’ื™ืขื” ื›ื‘ืจ ื‘ืกื™ืžื•ืŸ ื”ื‘ื. ื‘ืกื™ืžื•ืŸ ื”-31, ื‘ืžืงืจื” ื–ื”, ืœื ื—ืœื™ื ืขื•ื“ ืคื™ืฆื•ื™ื™ ืคื™ื’ื•ืจ

ื‘ื™ื™ืฉื•ื ืฉืœื ื•, ืฉืชื™ ื”ื’ื™ืฉื•ืช ื”ืœืœื• ื ื‘ื“ืœื• ื‘ื›ืžื” ืฉื•ืจื•ืช ืงื•ื“ ื‘ืœื‘ื“, ืื– ื™ืฆืจื ื• ืืช ืฉืชื™ื”ืŸ, ื•ื‘ืžืฉืš ื–ืžืŸ ืจื‘ ื”ืŸ ื”ืชืงื™ื™ืžื• ื‘ืžืงื‘ื™ืœ. ื‘ื”ืชืื ืœืžื›ื ื™ืงืช ื”ื ืฉืง ื•ืœืžื”ื™ืจื•ืช ื”ืงืœื™ืข, ื‘ื—ืจื ื• ืืคืฉืจื•ืช ื›ื–ื• ืื• ืื—ืจืช ืœื›ืœ ื“ื™ื ื•ื–ืื•ืจ. ื ืงื•ื“ืช ื”ืžืคื ื” ื›ืืŸ ื”ื™ื™ืชื” ื”ื”ื•ืคืขื” ื‘ืžืฉื—ืง ื”ืžื›ื ื™ืงื” ื›ืžื• "ืื ืืชื” ืคื•ื’ืข ื‘ืื•ื™ื‘ ื›ืœ ื›ืš ื”ืจื‘ื” ืคืขืžื™ื ื‘ื–ืžืŸ ื›ื–ื” ื•ื›ื–ื”, ืงื‘ืœ ื‘ื•ื ื•ืก ื›ื–ื” ื•ื›ื–ื”". ื›ืœ ืžื›ื•ื ืื™ ืฉื‘ื• ื”ื–ืžืŸ ืฉื‘ื• ื”ืฉื—ืงืŸ ืคื’ืข ื‘ืื•ื™ื‘ ืฉื™ื—ืง ืชืคืงื™ื“ ื—ืฉื•ื‘ ืกื™ืจื‘ ืœืขื‘ื•ื“ ืขื ื”ื’ื™ืฉื” ื”ืฉื ื™ื™ื”. ืื– ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื”ืœื›ื ื• ืขื ื”ืืคืฉืจื•ืช ื”ืจืืฉื•ื ื”, ื•ื”ื™ื ื—ืœื” ื›ืขืช ืขืœ ื›ืœ ื›ืœื™ ื”ื ืฉืง ื•ื›ืœ ื”ื™ื›ื•ืœื•ืช ื”ืคืขื™ืœื•ืช ื‘ืžืฉื—ืง.

ื‘ื ืคืจื“, ื›ื“ืื™ ืœื”ืขืœื•ืช ืืช ื ื•ืฉื ื”ื‘ื™ืฆื•ืขื™ื. ืื ื—ืฉื‘ืชื ืฉื›ืœ ื–ื” ื™ืื˜ ืืช ื”ืงืฆื‘, ืื ื™ ืขื•ื ื”: ื–ื”ื•. Unity ื“ื™ ืื™ื˜ื™ืช ื‘ื”ื–ื–ืช ืžืชื ื’ืฉื™ื ื•ื‘ื›ื™ื‘ื•ื™ ืฉืœื”ื. ื‘-Dino Squad, ื‘ืžืงืจื” ื”"ื’ืจื•ืข" ื‘ื™ื•ืชืจ, ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ื›ืžื” ืžืื•ืช ืงืœื™ืขื™ื ื”ืงื™ื™ืžื™ื ื‘ื•-ื–ืžื ื™ืช ื‘ืœื—ื™ืžื”. ื”ืขื‘ืจืช ืžืชื ื’ืฉื™ื ื›ื“ื™ ืœืกืคื•ืจ ื›ืœ ืงืœื™ืข ื‘ื ืคืจื“ ื”ื™ื ืžื•ืชืจื•ืช ืฉืœื ืžืฉืชืœืžืช. ืœื›ืŸ, ื–ื” ื”ื™ื” ื”ื›ืจื—ื™ ืขื‘ื•ืจื ื• ืœืžื–ืขืจ ืืช ืžืกืคืจ ื”"ื—ื–ืจื•ืช" ืฉืœ ื”ืคื™ื–ื™ืงื”. ืœืฉื ื›ืš ื™ืฆืจื ื• ืจื›ื™ื‘ ื ืคืจื“ ื‘-ECS ื‘ื• ืื ื• ืžืงืœื™ื˜ื™ื ืืช ื”ื–ืžืŸ ืฉืœ ื”ื ื’ืŸ. ื”ื•ืกืคื ื• ืื•ืชื• ืœื›ืœ ื”ื’ื•ืคื™ื ืฉื“ื•ืจืฉื™ื ืคื™ืฆื•ื™ ืคื™ื’ื•ืจ (ืงืœื™ืขื™ื, ื™ื›ื•ืœื•ืช ื•ื›ื•'). ืœืคื ื™ ืฉื ืชื—ื™ืœ ืœืขื‘ื“ ื™ืฉื•ื™ื•ืช ื›ืืœื”, ืื ื• ืžืื’ื“ื™ื ืื•ืชืŸ ืขื“ ืœื–ืžืŸ ื–ื” ื•ืžืขื‘ื“ื™ื ืื•ืชืŸ ื™ื—ื“, ืžื’ืœื’ืœื™ื ืืช ื”ืขื•ืœื ื”ืคื™ื–ื™ ืคืขื ืื—ืช ืขื‘ื•ืจ ื›ืœ ืืฉื›ื•ืœ.

ื‘ืฉืœื‘ ื–ื” ื™ืฉ ืœื ื• ืžืขืจื›ืช ืฉืขื•ื‘ื“ืช ื‘ืื•ืคืŸ ื›ืœืœื™. ื”ืงื•ื“ ืฉืœื• ื‘ืฆื•ืจื” ืžืขื˜ ืคืฉื•ื˜ื”:

public sealed class LagCompensationSystemGroup : ExecutableSystem
{
     //ะœะฐัˆะธะฝะฐ ะฒั€ะตะผะตะฝะธ
     private readonly ITimeMachine _timeMachine;

     //ะะฐะฑะพั€ ัะธัั‚ะตะผ ะปะฐะณะบะพะผะฟะตะฝัะฐั†ะธะธ
     private readonly LagCompensationSystem[] _systems;
     
     //ะะฐัˆะฐ ั€ะตะฐะปะธะทะฐั†ะธั ะบะปะฐัั‚ะตั€ะธะทะฐั‚ะพั€ะฐ
     private readonly TimeTravelMap _travelMap = new TimeTravelMap();

    public LagCompensationSystemGroup(ITimeMachine timeMachine, 
        LagCompensationSystem[] lagCompensationSystems)
     {
         _timeMachine = timeMachine;
         _systems = lagCompensationSystems;
     }

     public override void Execute(GameState gs)
     {
         //ะะฐ ะฒั…ะพะด ะบะปะฐัั‚ะตั€ะธะทะฐั‚ะพั€ ะฟั€ะธะฝะธะผะฐะตั‚ ั‚ะตะบัƒั‰ะตะต ะธะณั€ะพะฒะพะต ัะพัั‚ะพัะฝะธะต,
         //ะฐ ะฝะฐ ะฒั‹ั…ะพะด ะฒั‹ะดะฐะตั‚ ะฝะฐะฑะพั€ ยซะบะพั€ะทะธะฝยป. ะ’ ะบะฐะถะดะพะน ะบะพั€ะทะธะฝะต ะปะตะถะฐั‚ ัะฝั‚ะธั‚ะธ,
         //ะบะพั‚ะพั€ั‹ะผ ะดะปั ะปะฐะณะบะพะผะฟะตะฝัะฐั†ะธะธ ะฝัƒะถะฝะพ ะพะดะฝะพ ะธ ั‚ะพ ะถะต ะฒั€ะตะผั ะธะท ะธัั‚ะพั€ะธะธ.
         var buckets = _travelMap.RefillBuckets(gs);

         for (int bucketIndex = 0; bucketIndex < buckets.Count; bucketIndex++)
         {
             ProcessBucket(gs, buckets[bucketIndex]);
         }

         //ะ’ ะบะพะฝั†ะต ะปะฐะณะบะพะผะฟะตะฝัะฐั†ะธะธ ะผั‹ ะฒะพััั‚ะฐะฝะฐะฒะปะธะฒะฐะตะผ ั„ะธะทะธั‡ะตัะบะธะน ะผะธั€ 
         //ะฒ ะธัั…ะพะดะฝะพะต ัะพัั‚ะพัะฝะธะต
         _timeMachine.TravelToTime(gs.Time);
     }

     private void ProcessBucket(GameState presentState, TimeTravelMap.Bucket bucket)
     {
         //ะžั‚ะบะฐั‚ั‹ะฒะฐะตะผ ะฒั€ะตะผั ะพะดะธะฝ ั€ะฐะท ะดะปั ะบะฐะถะดะพะน ะบะพั€ะทะธะฝั‹
         var pastState = _timeMachine.TravelToTime(bucket.Time);

         foreach (var system in _systems)
         {
               system.PastState = pastState;
               system.PresentState = presentState;

               foreach (var entity in bucket)
               {
                   system.Execute(entity);
               }
          }
     }
}

ื›ืœ ืฉื ื•ืชืจ ื”ื™ื” ืœื”ื’ื“ื™ืจ ืืช ื”ืคืจื˜ื™ื:

1. ืœื”ื‘ื™ืŸ ืขื“ ื›ืžื” ืœื”ื’ื‘ื™ืœ ืืช ืžืจื—ืง ื”ืชื ื•ืขื” ื”ืžืงืกื™ืžืœื™ ื‘ื–ืžืŸ.

ื”ื™ื” ืœื ื• ื—ืฉื•ื‘ ืœื”ืคื•ืš ืืช ื”ืžืฉื—ืง ืœื ื’ื™ืฉ ื›ื›ืœ ื”ืืคืฉืจ ื‘ืชื ืื™ื ืฉืœ ืจืฉืชื•ืช ืกืœื•ืœืจื™ื•ืช ื’ืจื•ืขื•ืช, ืื– ื”ื’ื‘ืœื ื• ืืช ื”ืกื™ืคื•ืจ ืขื ืžืจื•ื•ื— ืฉืœ 30 ื˜ื™ืงื™ื (ืขื ืงืฆื‘ ื˜ื™ืง ืฉืœ 20 ื”ืจืฅ). ื–ื” ืžืืคืฉืจ ืœืฉื—ืงื ื™ื ืœืคื’ื•ืข ื‘ื™ืจื™ื‘ื™ื ืืคื™ืœื• ื‘ืคื™ื ื’ื™ื ื’ื‘ื•ื”ื™ื ืžืื•ื“.

2. ืงื‘ืข ืื™ืœื• ื—ืคืฆื™ื ื ื™ืชืŸ ืœื”ื–ื™ื– ื‘ื–ืžืŸ ื•ืื™ืœื• ืœื.

ืื ื—ื ื•, ื›ืžื•ื‘ืŸ, ืžื–ื™ื–ื™ื ืืช ื”ื™ืจื™ื‘ื™ื ืฉืœื ื•. ืื‘ืœ ืžื’ื ื™ ืื ืจื’ื™ื” ื”ื ื™ืชื ื™ื ืœื”ืชืงื ื”, ืœืžืฉืœ, ืœื. ื”ื—ืœื˜ื ื• ืฉืขื“ื™ืฃ ืœืชืช ืขื“ื™ืคื•ืช ืœื™ื›ื•ืœืช ื”ื”ื’ื ืชื™ืช, ื›ืคื™ ืฉื ืขืฉื” ืœืจื•ื‘ ื‘ืงืœื™ืขื™ื ืžืงื•ื•ื ื™ื. ืื ื”ืฉื—ืงืŸ ื›ื‘ืจ ื”ื ื™ื— ืžื’ืŸ ื‘ื”ื•ื•ื”, ื›ื“ื•ืจื™ื ืขื ืคื™ืฆื•ื™ ืขืœ ืคื™ื’ื•ืจ ืžื”ืขื‘ืจ ืœื ืืžื•ืจื™ื ืœืขื•ืฃ ื“ืจื›ื•.

3. ืœื”ื—ืœื™ื˜ ื”ืื ื™ืฉ ืฆื•ืจืš ืœืคืฆื•ืช ืขืœ ื™ื›ื•ืœื•ืช ื”ื“ื™ื ื•ื–ืื•ืจื™ื: ื ืฉื™ื›ื”, ืžื›ืช ื–ื ื‘ ื•ื›ื•' ื”ื—ืœื˜ื ื• ืžื” ืฆืจื™ืš ื•ืžืขื‘ื“ื™ื ืื•ืชื ืœืคื™ ืื•ืชื ื›ืœืœื™ื ื›ืžื• ื›ื“ื•ืจื™ื.

4. ืงื‘ืขื• ืžื” ืœืขืฉื•ืช ืขื ื”ืžืชื ื’ืฉื™ื ืฉืœ ื”ืฉื—ืงืŸ ืฉืขื‘ื•ืจื• ืžืชื‘ืฆืข ืคื™ืฆื•ื™ ืคื™ื’ื•ืจ. ื‘ืžื•ื‘ืŸ ื˜ื•ื‘, ื”ืžื™ืงื•ื ืฉืœื”ื ืœื ืฆืจื™ืš ืœืขื‘ื•ืจ ืœืขื‘ืจ: ื”ืฉื—ืงืŸ ืฆืจื™ืš ืœืจืื•ืช ืืช ืขืฆืžื• ื‘ืื•ืชื• ื–ืžืŸ ืฉื‘ื• ื”ื•ื ื ืžืฆื ื›ืขืช ื‘ืฉืจืช. ืขื ื–ืืช, ืื ื• ื’ื ืžื—ื–ื™ืจื™ื ืœืื—ื•ืจ ืืช ื”ืžืชื ื’ืฉื™ื ืฉืœ ื”ืฉื—ืงืŸ ื”ื™ื•ืจื”, ื•ื™ืฉ ืœื›ืš ืžืกืคืจ ืกื™ื‘ื•ืช.

ืจืืฉื™ืช, ื–ื” ืžืฉืคืจ ืืฉื›ื•ืœื•ืช: ืื ื—ื ื• ื™ื›ื•ืœื™ื ืœื”ืฉืชืžืฉ ื‘ืื•ืชื• ืžืฆื‘ ืคื™ื–ื™ ืขื‘ื•ืจ ื›ืœ ื”ืฉื—ืงื ื™ื ืขื ืคื™ื ื’ื™ื ืงืจื•ื‘ื™ื.

ืฉื ื™ืช, ื‘ื›ืœ ื”ื”ื˜ืœื•ืช ื•ื”ื—ืคื™ืคื•ืช ืื ื• ืชืžื™ื“ ืœื ื›ื•ืœืœื™ื ืืช ื”ืžืชื ื’ืฉื™ื ืฉืœ ื”ืฉื—ืงืŸ ืฉื‘ื‘ืขืœื•ืชื• ื”ื™ื›ื•ืœื•ืช ืื• ื”ืงืœื™ืขื™ื. ื‘-Dino Squad, ืฉื—ืงื ื™ื ืฉื•ืœื˜ื™ื ื‘ื“ื™ื ื•ื–ืื•ืจื™ื, ืฉื™ืฉ ืœื”ื ื’ื™ืื•ืžื˜ืจื™ื” ืœื ืกื˜ื ื“ืจื˜ื™ืช ืœืžื“ื™ ื‘ืกื˜ื ื“ืจื˜ื™ื ืฉืœ ื™ื•ืจื”. ื’ื ืื ื”ืฉื—ืงืŸ ื™ื•ืจื” ื‘ื–ื•ื•ื™ืช ื™ื•ืฆืืช ื“ื•ืคืŸ ื•ืžืกืœื•ืœ ื”ื›ื“ื•ืจ ื™ืขื‘ื•ืจ ื“ืจืš ืžืชื ื’ืฉ ื”ื“ื™ื ื•ื–ืื•ืจื™ื ืฉืœ ื”ืฉื—ืงืŸ, ื”ื›ื“ื•ืจ ื™ืชืขืœื ืžืžื ื•.

ืฉืœื™ืฉื™ืช, ืื ื• ืžื—ืฉื‘ื™ื ืืช ืžื™ืงื•ืžื™ ื”ื ืฉืง ืฉืœ ื”ื“ื™ื ื•ื–ืื•ืจ ืื• ืืช ื ืงื•ื“ืช ื”ื™ื™ืฉื•ื ืฉืœ ื”ื™ื›ื•ืœืช ื‘ืืžืฆืขื•ืช ื ืชื•ื ื™ื ืžื”-ECS ืขื•ื“ ืœืคื ื™ ืชื—ื™ืœืช ืคื™ืฆื•ื™ ื”ืคื™ื’ื•ืจ.

ื›ืชื•ืฆืื” ืžื›ืš, ื”ืžื™ืงื•ื ื”ืืžื™ืชื™ ืฉืœ ื”ืžืชื ื’ืฉื™ื ืฉืœ ื”ืฉื—ืงืŸ ื”ืžืชื•ื’ืžืœ ื‘ืคื™ื’ื•ืจ ืื™ื ื• ื—ืฉื•ื‘ ืขื‘ื•ืจื ื•, ื•ืœื›ืŸ ื ืงื˜ื ื• ื‘ื“ืจืš ืคืจื•ื“ื•ืงื˜ื™ื‘ื™ืช ื™ื•ืชืจ ื•ื‘ื• ื–ืžื ื™ืช ืคืฉื•ื˜ื” ื™ื•ืชืจ.

ืื™ ืืคืฉืจ ืคืฉื•ื˜ ืœื”ืกื™ืจ ืืช ื”ืฉื”ื™ื” ื‘ืจืฉืช, ืืคืฉืจ ืจืง ืœื”ืกื•ื•ืช ืื•ืชื”. ื›ืžื• ื›ืœ ืฉื™ื˜ื” ืื—ืจืช ืฉืœ ืชื—ืคื•ืฉืช, ืœืคื™ืฆื•ื™ ืขืœ ืคื™ื’ื•ืจ ืฉืจืช ื™ืฉ ืคืฉืจื•ืช. ื–ื” ืžืฉืคืจ ืืช ื—ื•ื•ื™ืช ื”ืžืฉื—ืง ืฉืœ ื”ืฉื—ืงืŸ ืฉื™ื•ืจื” ืขืœ ื—ืฉื‘ื•ืŸ ื”ืฉื—ืงืŸ ืฉื™ื•ืจื™ื ื‘ื•. ืขื‘ื•ืจ ื“ื™ื ื• ืกืงื•ื•ืื“, ืœืขื•ืžืช ื–ืืช, ื”ื‘ื—ื™ืจื” ื›ืืŸ ื”ื™ื™ืชื” ื‘ืจื•ืจื”.

ื›ืžื•ื‘ืŸ, ืขืœ ื›ืœ ื–ื” ื”ื™ื” ืฆืจื™ืš ืœืฉืœื ื’ื ืขืœ ื™ื“ื™ ื”ืžื•ืจื›ื‘ื•ืช ื”ืžื•ื’ื‘ืจืช ืฉืœ ืงื•ื“ ื”ืฉืจืช ื‘ื›ืœืœื•ืชื• โ€“ ื”ืŸ ืขื‘ื•ืจ ืžืชื›ื ืชื™ื ื•ื”ืŸ ืขื‘ื•ืจ ืžืขืฆื‘ื™ ืžืฉื—ืงื™ื. ืื ืงื•ื“ื ืœื›ืŸ ื”ืกื™ืžื•ืœืฆื™ื” ื”ื™ื™ืชื” ืงืจื™ืื” ืจืฆื™ืคื” ืคืฉื•ื˜ื” ืฉืœ โ€‹โ€‹ืžืขืจื›ื•ืช, ืื– ืขื ืคื™ืฆื•ื™ ืคื™ื’ื•ืจ, ื”ื•ืคื™ืขื• ื‘ื” ืœื•ืœืื•ืช ืžืงื•ื ื ื•ืช ื•ืขื ืคื™ื. ื”ืฉืงืขื ื• ื’ื ืžืืžืฆื™ื ืจื‘ื™ื ื›ื“ื™ ืฉื™ื”ื™ื” ื ื•ื— ืœืขื‘ื•ื“ ืื™ืชื•.

ื‘ื’ืจืกืช 2019 (ื•ืื•ืœื™ ืงืฆืช ืงื•ื“ื ืœื›ืŸ), Unity ื”ื•ืกื™ืคื” ืชืžื™ื›ื” ืžืœืื” ื‘ืกืฆื ื•ืช ืคื™ื–ื™ื•ืช ืขืฆืžืื™ื•ืช. ื”ื˜ืžืขื ื• ืื•ืชื ื‘ืฉืจืช ื›ืžืขื˜ ืžื™ื“ ืœืื—ืจ ื”ืขื“ื›ื•ืŸ, ื›ื™ ืจืฆื™ื ื• ืœื”ื™ืคื˜ืจ ื‘ืžื”ื™ืจื•ืช ืžื”ืขื•ืœื ื”ืคื™ื–ื™ ื”ืžืฉื•ืชืฃ ืœื›ืœ ื”ื—ื“ืจื™ื.

ื ืชื ื• ืœื›ืœ ื—ื“ืจ ืžืฉื—ืงื™ื ืกืฆื ื” ืคื™ื–ื™ืช ืžืฉืœื• ื•ื‘ื›ืš ื‘ื™ื˜ืœื ื• ืืช ื”ืฆื•ืจืš "ืœื ืงื•ืช" ืืช ื”ืกืฆื ื” ืžื ืชื•ื ื™ ื”ื—ื“ืจ ื”ืฉื›ืŸ ืœืคื ื™ ื—ื™ืฉื•ื‘ ื”ืกื™ืžื•ืœืฆื™ื”. ืจืืฉื™ืช, ื–ื” ื ืชืŸ ืขืœื™ื™ื” ืžืฉืžืขื•ืชื™ืช ื‘ืคืจื™ื•ืŸ. ืฉื ื™ืช, ื–ื” ืื™ืคืฉืจ ืœื”ื™ืคื˜ืจ ืžืžื—ืœืงื” ืฉืœืžื” ืฉืœ ื‘ืื’ื™ื ืฉื”ืชืขื•ืจืจื• ืื ื”ืžืชื›ื ืช ื‘ื™ืฆืข ืฉื’ื™ืื” ื‘ืงื•ื“ ื”ื ื™ืงื•ื™ ืฉืœ ื”ืกืฆื ื” ื‘ืขืช ื”ื•ืกืคืช ืจื›ื™ื‘ื™ ืžืฉื—ืง ื—ื“ืฉื™ื. ืฉื’ื™ืื•ืช ื›ืืœื” ื”ื™ื• ืงืฉื•ืช ืœื ื™ืคื•ื™, ื•ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื”ืŸ ื”ื•ื‘ื™ืœื• ืœืžืฆื‘ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ืคื™ื–ื™ื™ื ื‘ืกืฆื ื” ืฉืœ ื—ื“ืจ ืื—ื“ "ื–ื•ืจืžื™ื" ืœื—ื“ืจ ืื—ืจ.

ื‘ื ื•ืกืฃ, ืขืฉื™ื ื• ืžื—ืงืจ ืขืœ ื”ืื ื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘ืกืฆื ื•ืช ืคื™ื–ื™ื•ืช ื›ื“ื™ ืœืื—ืกืŸ ืืช ื”ื”ื™ืกื˜ื•ืจื™ื” ืฉืœ ื”ืขื•ืœื ื”ืคื™ื–ื™. ื›ืœื•ืžืจ, ื‘ืชื ืื™, ืœื”ืงืฆื•ืช ืœื ืกืฆื ื” ืื—ืช ืœื›ืœ ื—ื“ืจ, ืืœื 30 ืกืฆื ื•ืช, ื•ืœืขืฉื•ืช ืžื”ืŸ ื—ื™ืฅ ืžื—ื–ื•ืจื™, ืฉื‘ื• ืœืื—ืกืŸ ืืช ื”ืกื™ืคื•ืจ. ื‘ืื•ืคืŸ ื›ืœืœื™, ื”ืชื‘ืจืจ ืฉื”ืื•ืคืฆื™ื” ืขื•ื‘ื“ืช, ืื‘ืœ ืœื ื™ื™ืฉืžื ื• ืื•ืชื”: ื”ื™ื ืœื ื”ืจืืชื” ืขืœื™ื™ื” ืžื˜ื•ืจืคืช ื‘ืคืจื™ื•ืŸ, ืืœื ื“ืจืฉื” ืฉื™ื ื•ื™ื™ื ืžืกื•ื›ื ื™ื ืœืžื“ื™. ื”ื™ื” ืงืฉื” ืœื—ื–ื•ืช ืื™ืš ื”ืฉืจืช ื™ืชื ื”ื’ ื›ืฉืขื•ื‘ื“ ื‘ืžืฉืš ื–ืžืŸ ืจื‘ ืขื ื›ืœ ื›ืš ื”ืจื‘ื” ืกืฆื ื•ืช. ืœื›ืŸ, ืคืขืœื ื• ืขืœ ืคื™ ื”ื›ืœืœ: "ืื ื–ื” ืœื ื ืฉื‘ืจ, ืœื ืœืชืงืŸ ืืช ื–ื”".

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”