Гонитва з перешкодами

 
           Яка повільна країна! — сказала Королева. — Ну, а тут,
чи знаєш, доводиться бігти з усіх ніг, щоб тільки залишитися
на тому ж місці! Якщо ж хочеш потрапити в інше місце, тоді
потрібно бігти щонайменше вдвічі швидше! 
 
                        Льюїс Керролл "Аліса в Задзеркаллі


Сьогодні, я хочу розповісти про дивовижну і недооціненою грі, з якою я познайомився трохи менше двох років тому. У якомусь сенсі, саме з цієї гри, а також з Ура, почалося моє знайомство з Дмитром Скирюком. У ті дні я тільки починав цікавитися настільними іграми. Мої пізнання були мізерні і багато в чому наївні. Такі ігри як "Чейз", буквально відкрили для мене новий неосяжний світ. Навіть зараз, робота над цією грою, великою мірою, нагадує детективну історію. В цьому відношенні, гра "<abbr title=«англ. „Погоня“»>Chase" повністю виправдала як свою назву, так і схожість з псевдонімом відомого американського письменника.

Читати далі →

Квантовий Морріс

          Коло танцюючих звивався, як жива істота. Але серед них було вільне місце і воно рухалося. Вона знала, це місце для неї. Міс Тенета заборонила їй. Але коли вона це говорила? І потім, куди їй зрозуміти. Що вона взагалі розуміє? Коли вона танцювала в останній раз? Танець був у крові Тіффані, він манив її. Шести танцюючих недостатньо! 
          … Танцюристи не зводили з неї очей, а вона підстрибувала й кружляла між ними, кожен раз опиняючись там, де нікого не було.  

           сер Террі Пратчетт "Зимових справ майстер"
 

Незважаючи на всю свою неказистость, "Крестики-нолики" є наріжним каменем світу настільних ігор. Принцип "N в ряд" настільки простий і природний, що був винайдений незалежно відразу кількома стародавніми народами. В Китаї і Японії він ліг в основу таких ігор як "Рендзю" і "Хасами Сеги", в стародавній Європі — породив "Мельницу" — прародительку "Алькуэрка" і, зрештою, усього розмаїття сучасних шашок.

У своєму початковому вигляді, «Хрестики-нулики» не здаються грою скільки-небудь цікавою. У самому справі, безпрограшна стратегія, для кожного з гравців, в цій грі, абсолютно очевидна, а перемогти, при правильній грі, абсолютно неможливо. Подібна гра може привернути до себе молодших школярів, але ніяк не серйозних гравців. Втім, є кілька способів все виправити…

Читати далі →

Більше ніж Го

Кидаючи в воду камінці, дивись на кола, утворені ними;
інакше таке кидання буде пустою забавою.


                      Козьма Прутков "Плоди роздуми
 

Ця гра — справжній довгобуд. Я почав працювати над нею ще в червні! Не можна сказати, щоб я кожен день надривався, але крові вона попсувала мені чимало. На сьогоднішній день, це мій самий складний проект в Axiom. За обсягом (вельми нетривіального) коду, MarGo порівнянна хіба що з Ритмомахией.

Що особливого в цій грі? Варто було через неї так мучитися? Я розповім, а ви самі вирішуйте.

Читати далі →

Кілька гарних манкал

             Хоча етикетка була не того кольору і містила чимало орфографічних помилок, більша її частина перебувала на місці, включаючи зроблену крихітним шрифтом напис «Може містити горіхи».
                                                         сер Террі Пратчетт 

Го або Ур? Можна довго сперечатися, яка з ігор давнє, але переможе в цьому протистоянні, швидше за все, Манкала. Археологи вважають за краще мати справу з матеріальними свідоцтвами, але як тільки мова заходить про настільних іграх, все швидко йде в область припущень. Було знайдено чимало дощок, але набагато менше інформації про те, як на них грати. Древні не обтяжували себе детальним описом правил.

З Манкалой ситуація прямо протилежна. Це не одна гра, а досить численне сімейство. В одній тільки Західній Африці, рахунок йде на десятки (якщо не сотні) різновидів. Дошка (як матеріальний артефакт) для таких ігор не обов'язкова. Достатньо взяти жменю камінців і викопати кілька ямок в піску. Не дивно, що археологи випробовують труднощі з визначенням віку цих ігор. Їм просто нічого шукати! Але для уважного дослідника «настільних ігор», манкалы не менш цікаві, ніж птахи сімейства пересмешниковых для Чарлза Дарвіна.

Читати далі →

Як ми проводили конкурс hardware hack на Chaos Constructions 2015

Всім привіт!

На цих вихідних в Санкт-Петербурзі пройшов черговий фестиваль Chaos Constructions, на якому зібралися фанати, програмісти і розробники, щоб позмагатися в майстерності створення demo.

Про те, що таке demo, можна почитати на сайті організаторів. А якщо коротко, то учасникам дається завдання зробити щось вражаюче на spectrum'е або аналогічному ретро-залозі, і при цьому ставляться обмеження на розмір програм і тривалість демки. Наприклад, мене дуже вразила ось ця на Spectrum'е, яка вмістилася всього 256 байт! Так, демка виводиться на великий екран з відмінним звуком, тому видовище вражає!

Наша компанія виступила спонсором фестивалю, а ми з колегами організували і провели конкурс hardware hack, метою якого стало визначити архитекутуру процесора, маючи мінімум знань про неї і скромний набір інструментів.



Про те, як проходив конкурс, як і що ми до нього готували і буде моя стаття. Кому цікаво, прошу під кат.

Читати далі →

Dagaz: Стусани здоровому глузду (частина 9)

image… І повториться все, як у давнину:
Ніч, крижана брижі каналу,
Аптека, вулиця, ліхтар. 

                 Олександр Блок
 
 

Сьогодні, я хочу розповісти про проблему, традиційно ігнорованої більшістю розробників настільних ігор. Якщо комп'ютерна реалізація ігри, на зразок шашок або шахів, коректно обробляє ситуації виграшу (або програшу) гравців (а це теж буває непросто), результат вважається цілком задовільним. Але як бути, якщо гра зайшла в глухий кут? Гравці рухають фігури, без всякої надії на перемогу (і можуть продовжувати робити це до нескінченності).

При грі людини з комп'ютером, це не проблема (зрозуміло хто втомиться першим), але що робити якщо грають два бота? Для порівняння «сили» різних варіантів AI, наприклад, потрібно провести в автоматичному режимі велика кількість ігор. Коректна обробка «нічиїх», в такій ситуації, життєво необхідна. І дуже бажано, щоб вона виконувалася в точній відповідності з правилами гри.

Читати далі →

ФВП поспішають на допомогу

Ця стаття про те, як елементи функціонального програмування допомагають у реальному житті. Таких статей на Хабре багато, але, наскільки я пам'ятаю, про Forth на цю тему ще ніхто не писав. Крім того, я не збираюся розводити з цього приводу теорію (теоретик з мене ще той). Я розповім про суто практичної задачі, з якою зіткнувся буквально вчора. Сподіваюся, моя розповідь буде цікавий.
 

Читати далі →

Стековое програмування з людським обличчям (частина друга)

Як і слід було очікувати, попередній пост викликав суперечливі коментарі. Когось влаштовує існуючий Форт для вирішення питань, когось (як і мене) дратують його особливості.

image

Давайте відразу розставимо всі крапки над i: я не намагаюся скласти заміну Форту. Форт — сімейство середньорівневих мов програмування, яке продовжує продуктивно вирішувати поставлені завдання і на спокій не збирається. Але я міркую в іншій ніші: високорівневий стековий мову з упором на легкість читання програм для початківців (наскільки це взагалі можливо). Велика традиційність і высокоуровневость має свої переваги, але при цьому втрачаються деякі особливості (в тому числі і позитивні) Форту.

У нового уявного мови з'являється своя філософія і свої концепції. Про це я і продовжу писати.

Читати далі →

Стековое програмування з людським обличчям

Думаю, багато хто з вас знаходили в інтернеті статті і книги про стековому програмуванні мовою Forth. Спершу хвиля ентузіазму: як все просто, логічно, зрозуміло і потужно! І чому ж ці ідеї мають таке незначне поширення? Чому так мало програмістів реально використовують мови на зразок Форту? Через якийсь час підступає хвиля розчарування: так, цікава думка, але як же важко читати вихідний код, як тужно ведеться робота зі змінними, рядками і дробовими числами! Цікава іграшка, корисна групі байтослесарей, не більше.

image

Часто на цьому все й закінчується. Але особисто я ніяк не міг примиритися з думкою про те, що витончене конкатенативное програмування так і залишиться в тіні інших ідей. Так, труднощі з читанням вихідного коду. Так, синдром одного рядка. Так, кожен раз для розуміння алгоритму доводиться в уяві транслювати програму і уявляти собі стек, читаючи вихідний код. Але невже це ті недоліки, які обов'язково притаманні стековим мов і без яких стековое програмування перестало б бути стековим? Невже ніяк не можна хоча б згладити подібні недоліки і полегшити життя програмістам? Виявляється, можна і потрібно!

Читати далі →