Timeloop: Sink Again Beach — гра з дійсною симуляцією подорожей у часі

Хочу поділитися своїм досвідом технічної реалізації гри із симуляцією подорожей у часі. Маються на увазі саме подорожі у минуле, які обов’язково позначаються на майбутньому. Якщо ви полюбляєте наукову фантастику про подорожі в часі, то одразу розумієте основні складнощі та проблеми, з цим пов’язані. Основним завданням було створити максимально інтерактивну симуляцію з мінімальною кількістю часових парадоксів та помилок.

В основу, від якої я відштовхувався, я заклав такі правила:

  • Гравець може переміститися в конкретний час в межах однієї доби (ранок, день, вечір і ніч) скільки завгодно разів і в будь-якій послідовності.
  • Для переміщення в часі гравець використовує «телепорти», які мають статичну координату в просторі.
  • З одного часу в інший не можна потрапити без явної телепортації (просто почекати).

Проблема зустрічі із собою з майбутнього

Це, мабуть, основний парадокс, який не можна списати на умовність.

Уявіть, що ваш персонаж опиняється вранці о 8:00 на острові, наприклад, на причалі. З цього моменту починається його перебування в цьому часі. Він 10 хвилин робить свої справи і після цього телепортується в інший час. Після цього цей самий персонаж переміщується в ранок о 8:00 ще 9 разів, але починаючи з різних точок у просторі (наприклад, в печері, в церкві, в будинку відьми і т.д.). Маємо ситуацію, коли той самий персонаж існує в цьому часі в 10 екземплярах. Для того, щоб 10-та його «копія» (найстаріша) побачила в грі дев’ятьох своїх попередників в цьому часі, достатньо просто записати дії гравця в минулому і відтворити їх, наче їх повторюють його копії. Тут все просто. Тому що гра знає, що гравець вже зробив.

Але для достовірного досвіду симуляції треба якось показати першій копії (наймолодшій), що в цей час роблять копії з майбутнього. А це неможливо зробити, бо гравець ще цього не встиг зробити і гра цього знати не може.

Звук падаючого дерева за яким ніхто не спостерігає

Цю філософську концепцію я використав для вирішення проблеми, яка зазначена вище. В якості майже єдиного елементу ігрової механіки гравцю забороняється потрапляти собі минулому на очі. Потрапляючи у той самий час вдруге, гравець може натрапити на себе з минулого. В цьому немає проблеми, але минулий він вже не нентрапив на себе з майбутнього і гравець це знає. Для того, щоб не створювати мультиверс і зберегти минулий досвід гравця канонічним, ми просто забороняємо йому з теперішнього потрапляти минулому собі на очі, пояснюючи це тим, що не можна ламати просторово-часовий континуум, бо ці дії призведуть до краша всесвіту і він сам перестане існувати.

Це можно трактувати як умовності, хоча я вважаю це достатньо елегантним вирішенням першого парадоксу.

Уявіть, потрапивши в ранок вперше, ви як гравець ніяк не зможете побачити себе з майбутнього тільки тому, що майбутній ви будете ховатись від себе минулого по всіх кущах, аби продовжити існувати.

Хронологія для різних персонажів різна

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

Це явище продукує цікаві і заплутані ситуації. Бо персонаж А вже знайомий з персонажем B вранці коли B бачить A вперше. І навпаки, B вже знайомий з A вдень, коли А вперше в житті зустрічає В.

На цьому я побудував деякі наративні частини, які дуже складно мені далися.

Детермінованість часу

Близько місяця я витратив на наративну частину, яка була нерозривно пов’язана з ланцюжками дій, які гравець повинен або може виконати.

Відтворити дійсно безшовний і достовірний досвід персонажа, який інтерактивно переміщується у часі, неможливо в грі по типу пісочниці.

Відразу я зрозумів, що у подібній грі всі події мають бути детерміновані, за винятком тих ланцюжків подій, які не впливають на фінальний результат. І справа не в тому, що сам сюжет накладає подібні обмеження, а саме у досвіді персонажа в його хронологічній точці.

У грі з детермінованим часом і повною свободою переміщення в просторі та часі гравець може спочатку побачити наслідки, а вже потім створити причини цих наслідків. Причому, спочатку я гадав, що це проблема, яку треба вирішувати, але тест прототипа продемонстрував, що з точки зору тайм тревелу — це взагалі не проблема і не парадокс. Головне — виконувати правило, що причина майбутніх наслідків має бути обов’язковою подією, яку гравець мусить створити, для проходження гри. І тоді вже неважливо, в якій послідовності гравець стає спостерігачем чи учасником подій.

І на завершення

Це основні тези, до яких я прийшов шляхом довгих роздумів, моделювання і тестів. Саме на них я побудував дуже цікаву симуляцію в форматі комп’ютерної гри. Мене це так захопило, що я довів свій проект до релізу в Steam. Його можна знайти за назвою Timeloop: Sink again beach — нелінійний екшн-квест від першої особи у піратському сеттингу, професійно озвучений українською.

Я не буду лукавити, в грі є багато хронологічних помилок на різних рівнях. Наприклад, коли персонаж каже те, чого ще не може знати. Чи навпаки каже те, що вже не актуально. Про більшість таких помилок я знаю, але я не ставив за мету звести їх кількість до нуля. Було цікаво вирішити основні, які не вирішуються тривіально.

Можливо комусь це буде цікаво спробувати самому. Дякую за увагу!

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини про геймдев

👍ПодобаєтьсяСподобалось12
До обраногоВ обраному2
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Цікаво. Сам розмірковую над гіпотезою, що інформація може бути передана із теперішнього часу до минулого так само, як інформація із минулого до теперішнього часу передається за допомогою стабільного носія ції інформації, наприклад — записаною олівцем у блокноті — і залишеною у капсулі часу, або у шуфлядці на поличці.
Майбутнє — невизначене. Визначається «схлопванием волновой функціі» тобто вибіром спостерігача. Наприклад, коли у нас є кошик куль червоних та синіх та ми один за одним кулі достаємо, вибір майбутнього де шар у руці буде червоний є вибіром коли спостерігач вибере випадково (що означає за якихось умов) червоний шар.
Невизначеність тут — існування майбутнього у якому у руці шар червоно-синій, тобто ось такий у нього колір — і червоний і синій одночасно. Ось це і є хвильова функція, яка не схлопнута.
Тобто, невизначена бульова змінна це змінна яка і true і false. Але після взаємодії із спостерігачем ( у цьому випадку — у коді — це «оператор присваивания» ) стає або true або false
До речі, у двощілинному експерименті по одній із версій частинки саме так себе і поводять що у майбутньому існує не тільки суперпозиція частинок, але й суперпозиція щілин.
Може це допоможе вирішити як показати першій копії, що в цей час роблять копії із майбутнього.

Мені здається що нема ніякого парадоксу «побачити себе». Наприклад я повернувся на 10 хвилин назад у часі — і бачу себе. Тепер нас у цьому часі двоє. Наприклад я дав колишньому собі у пику. Чи означає це що в мене самого з’явиться синець? Звичайно ж НІ ! Бо час плине однаково для нас двох: у нього розбита морда — у мене ціла.
Навіть той самий парадокс про «вбите себе» — не діє! Полетів у минуле — вбив себе колишнього — залишився сам. Полетів у майбутнє — мене вбив майбутній я — він від цього не зникне.
Немає «персонального» часу. Тому ти вірно кажеш що можна показати людині що він вже робив у минулому, але неможливо показати що буде робити прибулець з майбутнього.
Я гадаю що всесвіт не терпить парадоксів. Через одну подію у минулому увесь світ не буде мінятися! Час плине своїм шляхом — це як річка. Якшо перемістився з одного місця у інше — ти просто будеш пливти у іншому часі.
І звичайно, що неможливо потрапити у майбутнє і побачити СВОЄ майбутнє — бо ти ж зник коли відправився у майбутнє отже «майбутнього себе» побачити не можеш.
А відправляючись у минуле — неможливо повернутися. Бо минуле вже змінилося (наприклад там двоє вас) — і у цього минулого вже буде ІНШЕ майбутнє. А людина, яка залишилася б чекати на мандрівника у сьогоденні — більше б його не побачила, як і наслідки будь яких його дій у минулому.

хто не додав в список бажаного, то я вам буду нотифікацією: реліз! доступне до придбання!

Час ще б знайти пошпиляти і щоб світло не відрубали

ха, якраз отримав рекомендацію на цю гру від «Ukrainian translations». Дякую, чекаю на реліз.

Круто!
Тему трохи чіпляли в класиці:
* Watchmen: можна потрапити в минуле, але ти там будеш привидом, що нічого не змінює.
* Sanatorium pod Klepsydra: час — мотузка, події — намистини. Якщо мотузка рветься, намистини падають в бруд та починають гнити. Інколи намистина хоче статись, ти її відчуваєш, але вона не влазить проміж інших.
* Slaughterhouse-Five: головний герой got unstuck in time: живе своє життя не підряд, а рандомними шматками, й знає, що трапиться далі.
* Planescape: Torment: купа історій навколишнього світу почалися через тебе, усюди твої сліди, але ти цього не пам’ятаєш.
* Boogiepop Phantom: в кожному епізоді свої головні герої, і на бекграунді відбуваються події з інших епізодів з іншими героями.
* Noein: люди з віртуальних (можливих) майбутніх світів потрапляють в світ, схожий на своє минуле, і намагаються розібратись, який же світ — справжній.

Нажаль, не пограю на лінуховому ноуті.

Після релізу спробую зібрати на линух.

Та ще ж відяху потрібно.
Але на лінух в будь-якому разі може залучити цікавих користувачів.

Пам’ятаю в Торменті кінцівку, коли можна було навернутись до будизму, піти в каналізацію шукати андедів. Ними правив Тихий Король. Він виявився просто трупом (геть мертвим) на троні. Знімаєш його, сідаєш на трон, і будизм назавжди.

Підписатись на коментарі