This commit is contained in:
severak 2021-05-02 00:16:35 +02:00
parent 278b48b68d
commit 0b828d8a46
6 changed files with 221 additions and 7 deletions

View File

@ -1,3 +1,7 @@
# art-lost-in-time
# Art lost in time
a short game about challenges of digital art preservation
a short game about challenges of digital art preservation
> I like to hear the people joke about that all we do all day is moving bits around our harddisks...
>
> Michael Dille (who helped to retrieve lost Warhol's digital art)

193
art.lua Normal file
View File

@ -0,0 +1,193 @@
title = "Art lost in time"
cont=verb{
n="click to continue",
act = function()
walk(here().cont)
end
}
intro = room{
d = [[
ART LOST IN TIME
a short game about challenges of digital art preservation
]],
cont = 'intro2'
}
intro2 = room{
d = [[
In 1985 Andy Warhol created a portrait of singer Debbie Harry using brand new Amiga 1000 computer. This was just a publicity stunt organized by people from Commodore.
But Warhol kept the computer he was given by Commodore and actually used it to make some art.
Now after 30 years is up to you to use all your retrocomputing skills to retrieve ART LOST IN TIME.
But be aware - these old disks are fragile!
]],
img = "painting.png",
cont = 'museum'
}
museum = room{
n = 'in Andy Warhol Museum',
d = [[
You brough all your retrocomputing stuff to the museum to hack into these ages old disks.
]],
img = "museum.png"
}
examine = verb{
n = "examine",
params = {"desc"},
act = function(what)
local description = game[what].desc
p("You look closely at " .. game[what].n .. ":")
if type(description)=='string' then
p(description)
elseif type(description)=='function' then
description()
end
end
}
put = verb{
n = "put",
params = {"floppylike", "_into", "computerlike"},
act = function(what, _into, where)
if where == 'amiga' and (floppy_workbench.w == 'amiga' or floppy_graphics.w == 'amiga') then
p "(You first ejected floppy which was in Amiga's drive.)"
if floppy_graphics.w=='amiga' then move("floppy_graphics", "museum") end
if floppy_workbench.w=='amiga' then move("floppy_workbench", "museum") end
end
if what == 'floppy_workbench' and where == 'notebook' then
p "You don't need this. As Amiga enthusiast you have already installed official WORKBENCH copy on your computer."
elseif what == 'floppy_workbench' and where == 'amiga' then
p "You put WORKBENCH floppy into Amiga."
move("floppy_workbench", "amiga")
elseif what == 'floppy_graphics' and where == 'amiga' then
p "You put GRAPHICSART floppy into Amiga."
move("floppy_graphics", "amiga")
elseif what == 'floppy_graphics' and where == 'notebook' then
p "You put GRAPHICSART floppy into your computer and created bit copy of it."
notebook.bitcopy = true
end
end
}
use = verb{
n = "use",
params = {"use"},
act = function(what)
local fun = game[what].use
if type(fun)=='string' then
p(fun)
elseif type(fun)=='function' then
fun()
end
end
}
into = item{
n = "into",
_into = true,
w = "museum"
}
amiga = item{
n = "Warhol's Amiga",
d = 'There is original Amiga 1000 which was used by Andy Warhol himself.',
w = 'museum',
desc = [[Amiga 1000 - the first multimedia computer ever. It has stunning 256KB of RAM, CPU clocked at 7.09MHz. Such a great machine!
Also this one was used by Andy Warhol.]],
computerlike = true,
use = function()
if amiga.dead then
p "You pressed the power button hard but Amiga seems to be dead forever."
p "Good job - you bricked museum piece!"
return
end
if floppy_workbench.w == 'amiga' then
p "You tried to power up Warhol's Amiga."
p "It actually started and Workbench interface appeared on the screen."
p "But when you clicked on PROGRAMS icons whole thing freezed and screen went black."
p "(also you smell some smoke)"
amiga.dead = true
elseif floppy_graphics.w == 'amiga' then
p "You tried to power up Warhol's Amiga."
p "It actually started and but then it made horrible floppy noise."
p "(Image Floppotron going really wild.)"
p "Ouch! It sounds like it eaten the floppy."
p "Which means you are unable to found Andy's art. GAME OVER!"
p "(also you smell some smoke)"
amiga.dead = true
else
p "It will not start without floppy in it."
end
end
}
floppies = item{
n = "floppies",
d = "There is a stack of floppies in front of you.",
w = "museum",
desc = function()
img "floppies.png"
if floppies.searched == 0 then
p "You found floppy labeled WORKBENCH."
p "(WORKBENCH was operating system for Amiga.)"
move('floppy_workbench', 'museum')
elseif floppies.searched == 1 then
p "You found floppy labeled WORMS."
p "Wow! I did not expect to find out that Andy Warhol played Worms."
elseif floppies.searched == 2 then
p "You found floppy labeled DELUXE PAINT."
elseif floppies.searched == 3 then
p 'You found yellow floppy with label "GRAPHICSART".'
move("floppy_graphics", "museum")
elseif floppies.searched == 4 then
p 'You found floppy labeled "tax reports".'
p "Nothing interesting here."
-- elseif floppies.searched == 4 then
-- p 'You found floppy labeled "PORN".'
-- p "Seriously?"
else
p "There is nothing interesting anymore."
p "It's just a stack of floppies."
end
floppies.searched = floppies.searched + 1
end,
searched = 0
}
notebook = item{
n = "your notebook",
d = "You have your own notebook.",
desc = "Your trusty Toshiba notebook running modern Windows XP. It's equipped with external floppy drive.",
w = "museum",
computerlike = true,
use = function()
if not notebook.bitcopy then
p "I have no idea what to do with my computer now."
return
end
p "I started my computer and loaded bitcopy of GRAPHICSART floppy into WinUAE emulator."
-- TODO - zde bude samotná hra
end
}
floppy_graphics = item{
n = 'floppy "GRAPHICSART"',
desc = "It's yellow floppy with handwritten letters GRAPHICSART. I wonder what's on it.",
floppylike = true
}
floppy_workbench = item{
n = 'WORKBENCH floppy',
desc = "There is a printed label: Amiga Workbench 1.3",
floppylike = true
}

BIN
art/floppies.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

BIN
art/museum.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
art/titulka.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -2,7 +2,7 @@
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Vlak ve 4:20</title>
<title>Art lost in time</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
* {
@ -20,13 +20,17 @@
}
#all {
width: 642px;
width: 1282px;
height: 480px;
margin: auto;
background-color: #fff;
border: 1px solid #000;
}
#img {
float: left;
}
#all:after {
content: "";
display: table;
@ -63,9 +67,10 @@
<body>
<div id="all">
<img src="art/titulka.png" id="img">
<div id="texty">
<p>Demo hry vlak ve 4:20</p>
<p>Pokud se hra nespustí, dejte vědět Severákovi a napište mu, jaký prohlížeč používáte.</p>
<p>Art lost in time</p>
<p>If the game does not start, please report it back to Severák. Please include info which browser (and version) did you used.</p>
</div>
<div id="menu">
</div>
@ -107,13 +112,18 @@ function ui_errormsg(txt)
el_texty.scrollTop = el_texty.scrollHeight;
}
function ui_img(src)
{
document.getElementById('img').src = 'art/' + src;
}
</script>
<script type="application/lua">
local js = require "js"
local window = js.global
gamefile = "syrecky.lua"
gamefile = "art.lua"
-- Hagen game engine
-- (c) Severák 2019-2021
@ -164,6 +174,10 @@ function cls()
window:ui_cls()
end
function img(src)
window:ui_img(src)
end
local function split_lines(str)
local result = {}
for line in str:gmatch '[^\n]+' do
@ -189,6 +203,9 @@ end
function walk(where, nocls)
assert(game[where], "room " .. where .. " does not exist")
if game[where].img then
img(game[where].img)
end
move("me", where)
if not nocls then
cls()