Make archive images openable in new tab

This commit is contained in:
Troy 2025-04-26 16:59:32 +01:00
parent 4bf6f04222
commit 522392cdfc
Signed by: troy
GPG key ID: DFC06C02ED3B4711
17 changed files with 34 additions and 113 deletions

View file

@ -11,7 +11,7 @@ extraAuthors: [{ name: "Sam Griffiths", url: "https://samgriffiths.dev" }]
import alongwaydown_demo_walkthrough from "alongwaydown-demo-walkthrough.webm";
A Long Way Down is a short, atmospheric linear adventure created alongside my friend [Sam](https://samgriffiths.dev) as a project for our FdA Games and Interactive Design degree. It is the follow up project to our previous work: [Nightmare](#nightmare), and was made to be an evolutionary improvement of it. Currently the [demo](https://samandtroy.itch.io/alongwaydown) is available to download and play on Itch.io.
A Long Way Down is a short, atmospheric linear adventure created alongside my friend [Sam](https://samgriffiths.dev) as a project for our FdA Games and Interactive Design degree. My role was art direction including the lighting, level design, and majority of asset creation for the project. It is the follow up project to our previous work: [Nightmare](#nightmare), and was made to be an evolutionary improvement of it. Currently the [demo](https://samandtroy.itch.io/alongwaydown) is available to download and play on Itch.io.
<video preload="metadata" controls>
<source src={alongwaydown_demo_walkthrough} type="video/webm" />

View file

@ -14,9 +14,7 @@ categories: ["education"]
import deltakey from "deltakey.webm";
import wallpaperpeel from "wallpaperpeel.webm";
The outcome I went into this project expecting was that I would produce an environment made entirely from scratch which I could create a short test virtual production shot in utilising a motion capture camera rig and live keying. Later I would then properly composite the two bits of footage together.
**This project is presented here in the state it was upon the university deadline. There were a couple issues that occurred towards the end of production which is why the project is listed as incomplete.**
The outcome I went into this project expecting was that I would produce an environment made entirely from scratch which I could create a short test virtual production shot in utilising a motion capture camera rig and live keying. Later I would then properly composite the two bits of footage together. All of the elements of this goal are presented here but sadly due to a data corruption issue, they were not able to be presented in a combined state. **The project is presented in the state it was upon the university deadline and is listed as incomplete.**
![Progress 5 for Digital Artefact: Corridor project](troy-lusty-highresscreenshot05012023-2.avif)

View file

@ -10,8 +10,6 @@ categories: ["client work"]
An ongoing collection of branding and logos designs. Including both 2D and 3D works created inside of various software packages.
![Logofolio title](troy-lusty-logofolio.avif)
![Banner for juce](juce.jpg)
Rebrand for [juce](https://www.twitch.tv/juceboi).

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9 KiB

View file

@ -9,11 +9,11 @@ categories: ["personal"]
import Gallery from "@components/Gallery.astro";
import image1 from "Still2025-04-07111623_1.1.1.avif";
import image2 from "Still2025-04-07111623_1.1.6.avif";
import image3 from "Still2025-04-07111623_1.1.4.avif";
import image4 from "Still2025-04-07111623_1.1.2.avif";
import image5 from "Still2025-04-07111623_1.1.3.avif";
import image1 from "Still 2025-04-26 165037_1.1.1.jpg";
import image2 from "Still 2025-04-26 165037_1.1.2.jpg";
import image3 from "Still 2025-04-26 165037_1.1.3.jpg";
import image4 from "Still 2025-04-26 165037_1.1.4.jpg";
import image5 from "Still 2025-04-26 165037_1.1.6.jpg";
import image6 from "ss_8340a3c02235371547350c557fefb830e6e2d067.avif";
import image7 from "ss_c578870d1c22722983b76c3effe7fba7f5d1cb5e.avif";
import image8 from "ss_b2dc5ca65e2f24088afac3faf79f450057e13383.avif";

View file

@ -1,6 +1,6 @@
---
title: "University Dissertation"
description: "A moody sacrifice scene taking place in a tomb created to test SSGI in Blender Eevee."
description: "Recreation of the same two projects four years after original completion."
date: 2025-01-10
image: { url: "15.jpg", alt: "Tomb final" }
tags: ["blender", "affinity photo", "affinity designer", "gimp"]
@ -8,6 +8,8 @@ categories: ["personal"]
featured: true
---
import Gallery from "@components/Gallery.astro";
import tomb from "./tomb.jpg";
import tomb_remake from "./15.jpg";
import mango from "./ExportRender.jpg";
@ -17,18 +19,22 @@ Tomb was originally posted on 14 Jul 2021, with Terry's Mango Juice on 10 Sept 2
Tomb was created as one of my first experiments utilising Blender's EEVEE real-time rendering engine on an environment. Whereas Terry's Mango Juice was made more to expand my work out into something other than environmental art.
More information regarding the thought process, research, and dissertation done alongside this project will be added after marks have been released.
_More information regarding the thought process, research, and dissertation done alongside this project will be added after marks have been released._
## Tomb
<div class="grid grid-cols-2 gap-2">
<img class="mt-0 mb-0 h-full w-full object-cover" src={tomb.src} />
<img class="mt-0 mb-0 h-full w-full object-cover" src={tomb_remake.src} />
</div>
<Gallery
items={[
{ src: tomb, alt: "Tomb" },
{ src: tomb_remake, alt: "Tomb remake" },
]}
/>
## Terry's Mango Juice
<div class="grid grid-cols-2 gap-2">
<img class="mt-0 mb-0 h-full w-full object-cover" src={mango.src} />
<img class="mt-0 mb-0 h-full w-full object-cover" src={mango_remake.src} />
</div>
<Gallery
items={[
{ src: mango, alt: "Terry's Mango Juice" },
{ src: mango_remake, alt: "Terry's Mango Juice remake" },
]}
/>

View file

@ -1,85 +0,0 @@
---
import Layout from "@layouts/Layout.astro";
import { SITE, ABOUT } from "@consts";
import { Image } from "astro:assets";
import { Icon } from "astro-icon/components";
import Link from "@components/Link.astro";
import icon from "public/assets/icon.png";
import Button from "@components/Button.astro";
---
<Layout title={SITE.TITLE} description={ABOUT.DESCRIPTION}>
<div class="animate-reveal flex items-center justify-between opacity-0">
<div class="flex-1 space-y-1.5">
<h1
class="animate-reveal flex flex-col text-start text-3xl font-semibold opacity-0 sm:block"
>
<span class="text-secondary text-nowrap">{SITE.AUTHOR}</span><span
class="text-tertiary sm:ml-2">{ABOUT.DESCRIPTION}</span
>
</h1>
<p class="text-secondary/70 max-w-md text-pretty">Digital designer.</p><p
class="text-secondary/70 max-w-md items-center text-sm text-pretty"
>
<Link
class="inline-flex gap-x-1.5 align-baseline leading-none hover:underline"
href="https://www.google.com/maps/place/Devon"
>
<Icon name="mdi:earth" class="h-3 w-3" />
Devon, United Kingdom, GMT
</Link>
</p><div class="text-secondary/70 flex gap-x-1 pt-1 text-sm print:hidden">
<a
href={`mailto:${SITE.EMAIL}`}
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:email" title="Email" class="h-4 w-4" />
</a>
<Link
href="/"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:link-variant" title="Website" class="h-4 w-4" />
</Link>
<Link
href="https://code.troylusty.com"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:git" title="Git" class="h-4 w-4" />
</Link>
<Link
href="https://store.steampowered.com/developer/troy"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full p-2 text-center text-sm text-nowrap capitalize transition-colors duration-300"
>
<Icon name="mdi:steam" title="Steamworks" class="h-4 w-4" />
</Link>
</div>
<p
class="text-secondary/70 hidden max-w-md items-center text-sm text-pretty print:flex"
>
<Link
class="inline-flex gap-x-1.5 align-baseline leading-none hover:underline"
href={`mailto:${SITE.EMAIL}`}
>
<Icon name="mdi:email" class="h-3 w-3" />
{SITE.EMAIL}
</Link>
</p>
</div><span
class="relative flex h-28 w-28 shrink-0 overflow-hidden rounded-xl"
>
<Image
src={icon}
alt="Troy Lusty"
class="aspect-square h-full w-full"
loading="eager"
/>
</span>
</div>
<div
class="animate-reveal mx-auto max-w-full opacity-0 [animation-delay:0.2s]"
>
<Button href="/cv" link="CV" />
</div>
</Layout>

View file

@ -26,15 +26,19 @@ const imageList = await Promise.all(
class="text-tertiary ml-2">{ARCHIVE.DESCRIPTION}</span
>
</h1>
<div class="animate-reveal grid grid-cols-2 md:grid-cols-3 gap-2 [animation-delay:0.1s]">
<div
class="animate-reveal grid grid-cols-2 gap-2 [animation-delay:0.1s] md:grid-cols-3"
>
{
imageList.map((item) => (
<Image
src={item.image}
alt={item.alt}
loading="eager"
class="aspect-square h-full w-full rounded-sm object-cover"
/>
<a href={item.image.src} target="_blank">
<Image
src={item.image}
alt={item.alt}
loading="eager"
class="aspect-square h-full w-full cursor-zoom-in rounded-sm object-cover transition-all duration-300 ease-in-out hover:brightness-50"
/>
</a>
))
}
</div>