Гульня для праграмістаў

Матэрыял з Вікіпедыі - вольнай энцыклапедыі
Перайсці да навігацыі Перайсці да пошуку

Гульня для праграмістаў - кампутарная гульня , у якой чалавек не ўдзельнічае напрамую ў гульні. Замест гэтага ён піша кіравальную праграму , якая змагаецца з сабе падобнымі праграмамі. Такія гульні з'яўляюцца складаным і нетрывіяльным практыкаваннем для праграмістаў.

Класіфікацыя гульняў для праграмістаў

Па мове праграмавання

Праграма можа пісацца на асаблівым выглядзе асэмблера , альбо на мовах высокага ўзроўню . Часцей за ўсё ўжываюцца інтэрпрэтаваныя мовы накшталт Python .

Па мэце гульні

Па мэце гульні такія гульні дзеляцца на:

  • Баі ў памяці . Задача праграмы - « завесіць » праграму суперніка.
  • Настольныя гульні (напрыклад, на світанку кібернетыкі былі папулярныя шахматныя турніры сярод ЭВМ).
  • Баявыя робаты. Мэтай гульні з'яўляецца стварыць кіравальную праграму для баявога робата ці танка. У некаторых гульнях таксама можна змяняць канфігурацыю робата (тып матора, броні, прылад і т. д.). Баі робатаў даволі відовішчныя для старонніх.
  • Іншыя гульні. Кіраванне гоначнай машынай, калоніяй мікробаў, і т. д.

Гісторыя

У 1961 годзе ў Bell Labs была распрацавана гульня « Дарвін ». У пачатку 1980- х гадоў пад уплывам "Дарвіна" была распрацавана гульня " Бой у памяці ". Ёй наканавана было стаць папулярнай, яна нават перасягнула жалезную заслону : у Пераслаўлі-Залескім была свая каманда па «Бою ў памяці».

У 1970 годзе прайшоў першы шахматны турнір сярод ЭВМ .

У 1985 годзе Томам Пойндэкстэрам была распрацавана гульня C Robots – першая праграмісцкая гульня, у якой трэба было кіраваць баявым робатам. Баявы робат - каляска, забяспечаная радарам і мінамётам . Для сканавання мясцовасці трэба было паказаць, на які кут павярнуць радар, і вастрыню дыяграмы скіраванасці . Чым шырэйшая дыяграма, тым больш шанцаў, што варожы робат патрапіць у сектар агляду, але і дакладнасць сканавання, адпаведна, меншая. Мінамёт страляе асколачным снарадам, для стрэлу трэба задаць кірунак і адлегласць, на якой павінен прызямліцца снарад. У гэтай гульні было шмат недахопаў: інтэрпрэтатар быў дастаткова няўдалым; робат, які страляў шмат, звычайна перамагаў робата, які страляў трапна.

Гульня C Robots была ўдасканалена Дэвідам Мальмбергам і перакладзена на мову Паскаль , атрымаўшы назву Pascal Robots (або P-Robots). У гульню быў дададзены выдатак паліва; калі робат заставаўся без паліва, яму заставалася толькі чакаць, пакуль нехта не прыкончыць яго. З'явіліся перашкоды і камандная гульня. Дададзена магчымасць канфігураваць робата: можна абраць адну з трох гармат, адзін з пяці матораў, адзін з пяці паліўных бакаў, адзін з трох варыянтаў броні, а таксама дадатковае абсталяванне: ахоўнае поле, дыстанцыйныя бомбы, рамонтны камплект і маскіроўку. Зрэшты, баланс паміж абсталяваннем не быў прапрацаваны, і быў напісаны робат Now , які эксплуатуе гэты дысбаланс. Now не меў ніякага інтэлекту; фактычна ён з'яўляўся велізарным паліўным бакам, забяспечаным лёгкім маторам, лёгкай бранёй і ахоўным полем. Карыстаючыся тым, што ў робатаў з лёгкай бранёй ахоўнае поле расходуе вельмі мала паліва, Now лёгка выйграваў і ў масавай перастрэлцы, і сам-насам. Таксама пасля таго, як былі апублікаваны зыходныя тэксты Pascal Robots, выявілася некалькі неадпаведнасцяў паводзін гульні заяўленаму ў дакументацыі: напрыклад, у дакументацыі сказана, што дыстанцыйная бомба дзівіць усіх робатаў незалежна ад таго, ці ўключаны шчыт; у рэальнасці ахоўнае поле ратуе ад бомбы.

Мабыць, самая вядомая гульня аб баявых робатах – Robocode , распрацаваная ў IBM . Гэтая гульня моцна адрозніваецца ад Pascal Robots . Калі ў Pascal Robots праграміст задае робату, у які бок ехаць, і ён аўтаматычна выйдзе на гэты курс, то ў Robocode трэба задаваць, на які кут павярнуць руль і з якой хуткасцю ехаць. Усе робаты экіпіраваны аднолькава. Таксама снарады дзівяць не аскепкамі, а прамым трапленнем.

Гульня Robocode таксама ў некаторай ступені вырашыла "праблему арбітра". Калі ў Pascal Robots, каб не дапусціць уцечкі кода, патрэбна была нейтральная бок, якая праводзіць спаборніцтвы (арбітр), то ў Robocode можна проста выкласці для свабоднай скокі class-файл свайго робата. Абфускацыя досыць надзейна абараняе робата ад дэкампіляцыі .

У 1995 годзе прайшлі першыя заезды ў аўтасімулятары RARS (англ.) ( Robot Auto Racing Simulator ). У 1997 годзе быў пачаты праект TORCS , які дазваляў ездзіць як людзям, так і робатам.

У 1996 году на платформе ZX Spectrum з'явілася гульня Івана Гудкова « Салдат будучыні ». У гульні магло ўдзельнічаць 4 робаты. Быў рэжым каманднай гульні 2×2. Робаты маглі працаваць у пары, распазнаваць саюзнікаў. Модульнае праграмаванне. У гульні быў вялікі патэнцыял, але даўжыня праграмы робата была штучна абмежавана і прасторы для творчасці было мала.

Цяпер існуе шмат гульняў для праграмістаў, але толькі нямногія з іх сапраўды папулярныя.

Турніры па настольных гульнях сярод ЭВМ малапапулярныя, гушчару праводзяцца шахматныя турніры паміж людзьмі і кампутарамі. Лепшыя з шахматных праграм для ПК (2006 год) гуляюць на ўзроўні гросмайстра , праграмы для спецыялізаваных кампутараў упэўнена абгульваюць нават чэмпіёнаў . На пачатак 2010-х гадоў асноўная настольная гульня для кампутараў - га ; кампутар гуляе ў га на ўзроўні добрага аматара.

Найбольш вядомыя гульні для праграмістаў

Баі ў памяці

  • Дарвін - кампутарная гульня для праграмістаў, у якой ваявалі некалькі асэмблерных праграм да моманту, пакуль адна з праграм не захопіць усю памяць.
  • Бой у памяці – разнавіднасць кампутарнай гульні "Дарвін", дзе праграмы напісаны на мову Redcode і працуюць пад кіраваннем Memory Array Redcode Simulator.

Упраўленне баявымі робатамі

  • C Robots
  • Pascal Robots
  • Robocode [1] - бітва робатаў-танкаў. Праграмы можна пісаць на Java ці .NET.
  • Robot Battle
  • Robotwar
  • Robot Warfare 1 – бітва робатаў на 2D полі.
  • Scalatron – спаборніцтва робатаў на арэне. Бітва робатаў прадугледжана, але для перамогі ваяваць не абавязкова. Праграмы пішуцца на Scala ці Java.
  • Grobots – гульня-стратэгія, у якой пішуцца праграмы для кіравання камандамі робатаў. Праграмы кіравання робатамі пішуцца на дыялекце мовы праграмавання Forth . Гульня можа быць скарыстана для навучання і вывучэнні Forth [2] .
  • Imperfect World Of Robots (IWOR) – мадэляванне свету, у якім робаты, якія кіруюцца праграмай, будуць жыць, працаваць, абараняць сваё «племя», вырабляць нашчадства. Гульня мае важнае і карыснае адрозненне (з пункту гледжання навучання праграмаванню на базе гэтай гульні; правядзення спаборніцтваў) ад іншых гульняў - робаты, напісаныя для яе, выкарыстоўваюць для свайго функцыянавання "сокеты" і "паведамленні", таму яны могуць быць напісаны практычна ў любых мовах праграмавання і працаваць на машынах з рознымі аперацыйнымі сістэмамі. Гэтая гульня - сервернага тыпу.
  • BOTS : BOts Tactical Simulation - канцэпцыя гульні падобная на іншыя гульні, такія як C Robots або JRobots.
  • JRobots - клон C Robots у Java.
  • General Game Playing - у гэтай гульні чалавек праграмуе не робата, як у многіх іншых гульнях, а правілы гульні, аднак цалкам магчыма запраграмаваць гэтую гульню, як гульню, якая кіруе баявымі робатамі, якія дзейнічаюць па запраграмаваным гульцамі правілах гульні (напрыклад, праграмаванне «базавых» гульнявых. правілаў можа быць ажыццёўлена арганізатарамі спаборніцтваў, а гульцы, на аснове правілаў гульні, распрацоўваюць правілы для робатаў). Гэтая гульня рэалізуе штучны інтэлект - замест таго, каб дзейнічаць на аснове загадзя зададзеных чалавекам "цвёрдых правіл паводзін у тыпавых сітуацыях", баявая машына ў гульні будзе сама вызначаць свае паводзіны і прымаць рашэнні - у адпаведнасці з прадстаўленымі ёй гульнявымі правіламі, якія з'яўляюцца абмежаваннямі для магчымых дзеянняў. Гульня з'яўляецца адначасова і гульнёй і навукова-даследчай прыладай і прыладай навучання ў вобласці штучнага інтэлекту.
  • OpenNERO - гульня з'яўляецца адначасова і гульнёй і навукова-даследчым інструментам і інструментам навучання ў галіне штучнага інтэлекту. Кіраванне баявымі робатамі ў гульні ажыццяўляюць кампутарныя нейрасеці. Асаблівасцю гульні з'яўляецца яе графіка, яна лепш, у параўнанні з іншымі гульнямі з сапраўднага спісу, ёсць мультыплэер. OpenNERO была выкарыстана для рэалізацыі некалькіх дэманстрацый і практыкаванняў для падручніка Расэла і Нарвіга « Штучны інтэлект: сучасны падыход »: метадаў штучнага інтэлекту, такіх як поўны перабор, эўрыстычны пошук, сцэнары, навучанне з падмацаваннем і эвалюцыйныя вылічэнні, а таксама праблем штучнага інтэлекту, як перамяшчэнне па лабірынтах, збору прадметаў і «робатызаваная бітва». Метады і задачы падручніка рэалізаваны ў некалькіх розных асяроддзях (або "модамі"). Neural networks research group мае некаторыя іншыя праекты, блізкія па духу да апісанай гульні і якімі таксама можна карыстацца для гульнявой, навукова-даследчай і адукацыйнай дзейнасці.

Іншыя

  • Colobot – трохмерная навучальная стратэгічная гульня, у якой можна запраграмаваць робатаў на ўбудаванай мове.
  • Ceebot - серыя трохмерных навучальных гульняў для дзяцей, створаных на аснове гульні Colobot і арыентаваных на выкарыстанне ў школах.
  • Robot Auto Racing Simulator або RARS – трохмерны сімулятар гонак паміж запраграмаванымі гоначнымі аўтамабілямі .
  • TORCS - аўтасімулятар , заснаваны на RARS, і прыдатны як для звычайнай язды, так і для спаборніцтва паміж запраграмаванымі гоначнымі аўтамабілямі.
  • Snake Battle – «візуальнае» праграмаванне баявых змеек.
  • Вайна вірусаў - гульня, якая імітуе развіццё двух калоній вірусаў, якія развіваюцца самі і знішчаюць адзін аднаго.
  • Захоп сцяга - камандныя спаборніцтвы, мэтай якіх з'яўляецца ацэнка ўмення ўдзельнікаў атакаваць і абараняць кампутарныя сістэмы.
  • CheckiO – вывучэнне мовы праграмавання Python. Магчымасць гуляць у розныя гульні шляхам праграмавання умоў.

Open source

Нататкі

  1. Ужыванне двухэтапнага генетычнага праграмавання для пабудовы мадэлі танка ў гульні «ROBOCODE» (недаступная спасылка) . - Артыкул. - часопіс НДУ ІЦМА.- сакавік-красавік 2011
  2. Grobots

Спасылкі