feat: commit unoptimised assets to cleanup later
Some checks are pending
Docker / run-tests (push) Waiting to run
Docker / build-and-push-image (push) Blocked by required conditions

This commit is contained in:
Troy 2025-05-05 19:29:23 +01:00
parent 26258249d1
commit de0b56ef5b
Signed by: troy
GPG key ID: DFC06C02ED3B4711
142 changed files with 359 additions and 425 deletions

View file

@ -1,4 +1,4 @@
import { defineConfig } from "astro/config";
import { defineConfig, fontProviders } from "astro/config";
import sitemap from "@astrojs/sitemap";
import rehypeExternalLinks from "rehype-external-links";
import mdx from "@astrojs/mdx";
@ -31,4 +31,23 @@ export default defineConfig({
},
},
},
redirects: {
"/archive": "/projects/archive",
},
experimental: {
fonts: [
{
provider: fontProviders.fontsource(),
name: "Outfit",
cssVariable: "--font-outfit",
weights: ["100 900"],
},
{
provider: fontProviders.fontsource(),
name: "Red Hat Mono",
cssVariable: "--font-red-hat-mono",
weights: ["300 700"],
},
],
},
});

205
package-lock.json generated
View file

@ -9,16 +9,14 @@
"version": "0.0.1",
"dependencies": {
"@astrojs/check": "0.9.4",
"@astrojs/mdx": "^4.2.5",
"@astrojs/mdx": "^4.2.6",
"@astrojs/rss": "^4.0.11",
"@astrojs/sitemap": "3.3.1",
"@fontsource-variable/outfit": "^5.2.5",
"@fontsource-variable/red-hat-mono": "^5.2.5",
"@tailwindcss/vite": "^4.1.4",
"astro": "^5.7.7",
"@tailwindcss/vite": "^4.1.5",
"astro": "^5.7.10",
"astro-icon": "^1.1.5",
"rehype-external-links": "^3.0.0",
"tailwindcss": "^4.1.4",
"tailwindcss": "^4.1.5",
"typescript": "^5.8.3"
},
"devDependencies": {
@ -154,9 +152,9 @@
}
},
"node_modules/@astrojs/mdx": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.2.5.tgz",
"integrity": "sha512-iKGu9GssmypLWf6ycJu6OYa9E3W16KA2y3ApBPlZpz1pwR70xXEr2XugQUwxGfFCI2KcZLIND/9FdKM7ZXVffA==",
"version": "4.2.6",
"resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.2.6.tgz",
"integrity": "sha512-0i/GmOm6d0qq1/SCfcUgY/IjDc/bS0i42u7h85TkPFBmlFOcBZfkYhR5iyz6hZLwidvJOEq5yGfzt9B1Azku4w==",
"license": "MIT",
"dependencies": {
"@astrojs/markdown-remark": "6.3.1",
@ -762,24 +760,6 @@
"node": ">=18"
}
},
"node_modules/@fontsource-variable/outfit": {
"version": "5.2.5",
"resolved": "https://registry.npmjs.org/@fontsource-variable/outfit/-/outfit-5.2.5.tgz",
"integrity": "sha512-MejrIp6Cbmd3u5AZtsot8kmhZiyQM5CATsdcBB2hktYIrv5CVekRSUmFDXL4FpF7K70IvFp2ZMfImm5VhnVf7Q==",
"license": "OFL-1.1",
"funding": {
"url": "https://github.com/sponsors/ayuhito"
}
},
"node_modules/@fontsource-variable/red-hat-mono": {
"version": "5.2.5",
"resolved": "https://registry.npmjs.org/@fontsource-variable/red-hat-mono/-/red-hat-mono-5.2.5.tgz",
"integrity": "sha512-BP2zCfaBvjvx/+ijLYH6joqQ7aZyM5XecNuXSPUQ3G05fjU3q2MfEPT8CjIQ6LgsSpCxWOmrdlxOofDb/8pp2g==",
"license": "OFL-1.1",
"funding": {
"url": "https://github.com/sponsors/ayuhito"
}
},
"node_modules/@iconify-json/mdi": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/@iconify-json/mdi/-/mdi-1.2.3.tgz",
@ -1644,44 +1624,44 @@
}
},
"node_modules/@tailwindcss/node": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.4.tgz",
"integrity": "sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.1.5.tgz",
"integrity": "sha512-CBhSWo0vLnWhXIvpD0qsPephiaUYfHUX3U9anwDaHZAeuGpTiB3XmsxPAN6qX7bFhipyGBqOa1QYQVVhkOUGxg==",
"license": "MIT",
"dependencies": {
"enhanced-resolve": "^5.18.1",
"jiti": "^2.4.2",
"lightningcss": "1.29.2",
"tailwindcss": "4.1.4"
"tailwindcss": "4.1.5"
}
},
"node_modules/@tailwindcss/oxide": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.4.tgz",
"integrity": "sha512-p5wOpXyOJx7mKh5MXh5oKk+kqcz8T+bA3z/5VWWeQwFrmuBItGwz8Y2CHk/sJ+dNb9B0nYFfn0rj/cKHZyjahQ==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.1.5.tgz",
"integrity": "sha512-1n4br1znquEvyW/QuqMKQZlBen+jxAbvyduU87RS8R3tUSvByAkcaMTkJepNIrTlYhD+U25K4iiCIxE6BGdRYA==",
"license": "MIT",
"engines": {
"node": ">= 10"
},
"optionalDependencies": {
"@tailwindcss/oxide-android-arm64": "4.1.4",
"@tailwindcss/oxide-darwin-arm64": "4.1.4",
"@tailwindcss/oxide-darwin-x64": "4.1.4",
"@tailwindcss/oxide-freebsd-x64": "4.1.4",
"@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.4",
"@tailwindcss/oxide-linux-arm64-gnu": "4.1.4",
"@tailwindcss/oxide-linux-arm64-musl": "4.1.4",
"@tailwindcss/oxide-linux-x64-gnu": "4.1.4",
"@tailwindcss/oxide-linux-x64-musl": "4.1.4",
"@tailwindcss/oxide-wasm32-wasi": "4.1.4",
"@tailwindcss/oxide-win32-arm64-msvc": "4.1.4",
"@tailwindcss/oxide-win32-x64-msvc": "4.1.4"
"@tailwindcss/oxide-android-arm64": "4.1.5",
"@tailwindcss/oxide-darwin-arm64": "4.1.5",
"@tailwindcss/oxide-darwin-x64": "4.1.5",
"@tailwindcss/oxide-freebsd-x64": "4.1.5",
"@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.5",
"@tailwindcss/oxide-linux-arm64-gnu": "4.1.5",
"@tailwindcss/oxide-linux-arm64-musl": "4.1.5",
"@tailwindcss/oxide-linux-x64-gnu": "4.1.5",
"@tailwindcss/oxide-linux-x64-musl": "4.1.5",
"@tailwindcss/oxide-wasm32-wasi": "4.1.5",
"@tailwindcss/oxide-win32-arm64-msvc": "4.1.5",
"@tailwindcss/oxide-win32-x64-msvc": "4.1.5"
}
},
"node_modules/@tailwindcss/oxide-android-arm64": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.4.tgz",
"integrity": "sha512-xMMAe/SaCN/vHfQYui3fqaBDEXMu22BVwQ33veLc8ep+DNy7CWN52L+TTG9y1K397w9nkzv+Mw+mZWISiqhmlA==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.5.tgz",
"integrity": "sha512-LVvM0GirXHED02j7hSECm8l9GGJ1RfgpWCW+DRn5TvSaxVsv28gRtoL4aWKGnXqwvI3zu1GABeDNDVZeDPOQrw==",
"cpu": [
"arm64"
],
@ -1695,9 +1675,9 @@
}
},
"node_modules/@tailwindcss/oxide-darwin-arm64": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.4.tgz",
"integrity": "sha512-JGRj0SYFuDuAGilWFBlshcexev2hOKfNkoX+0QTksKYq2zgF9VY/vVMq9m8IObYnLna0Xlg+ytCi2FN2rOL0Sg==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.5.tgz",
"integrity": "sha512-//TfCA3pNrgnw4rRJOqavW7XUk8gsg9ddi8cwcsWXp99tzdBAZW0WXrD8wDyNbqjW316Pk2hiN/NJx/KWHl8oA==",
"cpu": [
"arm64"
],
@ -1711,9 +1691,9 @@
}
},
"node_modules/@tailwindcss/oxide-darwin-x64": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.4.tgz",
"integrity": "sha512-sdDeLNvs3cYeWsEJ4H1DvjOzaGios4QbBTNLVLVs0XQ0V95bffT3+scptzYGPMjm7xv4+qMhCDrkHwhnUySEzA==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.5.tgz",
"integrity": "sha512-XQorp3Q6/WzRd9OalgHgaqgEbjP3qjHrlSUb5k1EuS1Z9NE9+BbzSORraO+ecW432cbCN7RVGGL/lSnHxcd+7Q==",
"cpu": [
"x64"
],
@ -1727,9 +1707,9 @@
}
},
"node_modules/@tailwindcss/oxide-freebsd-x64": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.4.tgz",
"integrity": "sha512-VHxAqxqdghM83HslPhRsNhHo91McsxRJaEnShJOMu8mHmEj9Ig7ToHJtDukkuLWLzLboh2XSjq/0zO6wgvykNA==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.5.tgz",
"integrity": "sha512-bPrLWbxo8gAo97ZmrCbOdtlz/Dkuy8NK97aFbVpkJ2nJ2Jo/rsCbu0TlGx8joCuA3q6vMWTSn01JY46iwG+clg==",
"cpu": [
"x64"
],
@ -1743,9 +1723,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.4.tgz",
"integrity": "sha512-OTU/m/eV4gQKxy9r5acuesqaymyeSCnsx1cFto/I1WhPmi5HDxX1nkzb8KYBiwkHIGg7CTfo/AcGzoXAJBxLfg==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.5.tgz",
"integrity": "sha512-1gtQJY9JzMAhgAfvd/ZaVOjh/Ju/nCoAsvOVJenWZfs05wb8zq+GOTnZALWGqKIYEtyNpCzvMk+ocGpxwdvaVg==",
"cpu": [
"arm"
],
@ -1759,9 +1739,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm64-gnu": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.4.tgz",
"integrity": "sha512-hKlLNvbmUC6z5g/J4H+Zx7f7w15whSVImokLPmP6ff1QqTVE+TxUM9PGuNsjHvkvlHUtGTdDnOvGNSEUiXI1Ww==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.5.tgz",
"integrity": "sha512-dtlaHU2v7MtdxBXoqhxwsWjav7oim7Whc6S9wq/i/uUMTWAzq/gijq1InSgn2yTnh43kR+SFvcSyEF0GCNu1PQ==",
"cpu": [
"arm64"
],
@ -1775,9 +1755,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-arm64-musl": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.4.tgz",
"integrity": "sha512-X3As2xhtgPTY/m5edUtddmZ8rCruvBvtxYLMw9OsZdH01L2gS2icsHRwxdU0dMItNfVmrBezueXZCHxVeeb7Aw==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.5.tgz",
"integrity": "sha512-fg0F6nAeYcJ3CriqDT1iVrqALMwD37+sLzXs8Rjy8Z1ZHshJoYceodfyUwGJEsQoTyWbliFNRs2wMQNXtT7MVA==",
"cpu": [
"arm64"
],
@ -1791,9 +1771,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-x64-gnu": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.4.tgz",
"integrity": "sha512-2VG4DqhGaDSmYIu6C4ua2vSLXnJsb/C9liej7TuSO04NK+JJJgJucDUgmX6sn7Gw3Cs5ZJ9ZLrnI0QRDOjLfNQ==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.5.tgz",
"integrity": "sha512-SO+F2YEIAHa1AITwc8oPwMOWhgorPzzcbhWEb+4oLi953h45FklDmM8dPSZ7hNHpIk9p/SCZKUYn35t5fjGtHA==",
"cpu": [
"x64"
],
@ -1807,9 +1787,9 @@
}
},
"node_modules/@tailwindcss/oxide-linux-x64-musl": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.4.tgz",
"integrity": "sha512-v+mxVgH2kmur/X5Mdrz9m7TsoVjbdYQT0b4Z+dr+I4RvreCNXyCFELZL/DO0M1RsidZTrm6O1eMnV6zlgEzTMQ==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.5.tgz",
"integrity": "sha512-6UbBBplywkk/R+PqqioskUeXfKcBht3KU7juTi1UszJLx0KPXUo10v2Ok04iBJIaDPkIFkUOVboXms5Yxvaz+g==",
"cpu": [
"x64"
],
@ -1823,9 +1803,9 @@
}
},
"node_modules/@tailwindcss/oxide-wasm32-wasi": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.4.tgz",
"integrity": "sha512-2TLe9ir+9esCf6Wm+lLWTMbgklIjiF0pbmDnwmhR9MksVOq+e8aP3TSsXySnBDDvTTVd/vKu1aNttEGj3P6l8Q==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.5.tgz",
"integrity": "sha512-hwALf2K9FHuiXTPqmo1KeOb83fTRNbe9r/Ixv9ZNQ/R24yw8Ge1HOWDDgTdtzntIaIUJG5dfXCf4g9AD4RiyhQ==",
"bundleDependencies": [
"@napi-rs/wasm-runtime",
"@emnapi/core",
@ -1840,10 +1820,10 @@
"license": "MIT",
"optional": true,
"dependencies": {
"@emnapi/core": "^1.4.0",
"@emnapi/runtime": "^1.4.0",
"@emnapi/wasi-threads": "^1.0.1",
"@napi-rs/wasm-runtime": "^0.2.8",
"@emnapi/core": "^1.4.3",
"@emnapi/runtime": "^1.4.3",
"@emnapi/wasi-threads": "^1.0.2",
"@napi-rs/wasm-runtime": "^0.2.9",
"@tybys/wasm-util": "^0.9.0",
"tslib": "^2.8.0"
},
@ -1852,9 +1832,9 @@
}
},
"node_modules/@tailwindcss/oxide-win32-arm64-msvc": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.4.tgz",
"integrity": "sha512-VlnhfilPlO0ltxW9/BgfLI5547PYzqBMPIzRrk4W7uupgCt8z6Trw/tAj6QUtF2om+1MH281Pg+HHUJoLesmng==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.5.tgz",
"integrity": "sha512-oDKncffWzaovJbkuR7/OTNFRJQVdiw/n8HnzaCItrNQUeQgjy7oUiYpsm9HUBgpmvmDpSSbGaCa2Evzvk3eFmA==",
"cpu": [
"arm64"
],
@ -1868,9 +1848,9 @@
}
},
"node_modules/@tailwindcss/oxide-win32-x64-msvc": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.4.tgz",
"integrity": "sha512-+7S63t5zhYjslUGb8NcgLpFXD+Kq1F/zt5Xv5qTv7HaFTG/DHyHD9GA6ieNAxhgyA4IcKa/zy7Xx4Oad2/wuhw==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.5.tgz",
"integrity": "sha512-WiR4dtyrFdbb+ov0LK+7XsFOsG+0xs0PKZKkt41KDn9jYpO7baE3bXiudPVkTqUEwNfiglCygQHl2jklvSBi7Q==",
"cpu": [
"x64"
],
@ -1900,14 +1880,14 @@
}
},
"node_modules/@tailwindcss/vite": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.4.tgz",
"integrity": "sha512-4UQeMrONbvrsXKXXp/uxmdEN5JIJ9RkH7YVzs6AMxC/KC1+Np7WZBaNIco7TEjlkthqxZbt8pU/ipD+hKjm80A==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.1.5.tgz",
"integrity": "sha512-FE1stRoqdHSb7RxesMfCXE8icwI1W6zGE/512ae3ZDrpkQYTTYeSyUJPRCjZd8CwVAhpDUbi1YR8pcZioFJQ/w==",
"license": "MIT",
"dependencies": {
"@tailwindcss/node": "4.1.4",
"@tailwindcss/oxide": "4.1.4",
"tailwindcss": "4.1.4"
"@tailwindcss/node": "4.1.5",
"@tailwindcss/oxide": "4.1.5",
"tailwindcss": "4.1.5"
},
"peerDependencies": {
"vite": "^5.2.0 || ^6"
@ -2311,9 +2291,9 @@
}
},
"node_modules/astro": {
"version": "5.7.7",
"resolved": "https://registry.npmjs.org/astro/-/astro-5.7.7.tgz",
"integrity": "sha512-nmp8U3oQLZ/eDlobF1UG0hiSycVvHrVyPDMXZxuohpd24Z2aO2Ea0YnfZxS5Sx4uh9c8UBxy4fHTcoQlXNx3TQ==",
"version": "5.7.10",
"resolved": "https://registry.npmjs.org/astro/-/astro-5.7.10.tgz",
"integrity": "sha512-9TQcFZqP2w6//JXXUHfw8/5PX7KUx9EkG5O3m+hISuyeUztvjY1q5+p7+C5HiXyg24Zs3KkpieoL5BGRXGCAGA==",
"license": "MIT",
"dependencies": {
"@astrojs/compiler": "^2.11.0",
@ -2363,11 +2343,11 @@
"tinyglobby": "^0.2.12",
"tsconfck": "^3.1.5",
"ultrahtml": "^1.6.0",
"unifont": "~0.4.0",
"unifont": "~0.4.1",
"unist-util-visit": "^5.0.0",
"unstorage": "^1.15.0",
"vfile": "^6.0.3",
"vite": "^6.2.6",
"vite": "^6.3.4",
"vitefu": "^1.0.6",
"xxhash-wasm": "^1.1.0",
"yargs-parser": "^21.1.1",
@ -3665,9 +3645,9 @@
}
},
"node_modules/fdir": {
"version": "6.4.3",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz",
"integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==",
"version": "6.4.4",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz",
"integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==",
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
@ -7343,9 +7323,9 @@
}
},
"node_modules/tailwindcss": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.4.tgz",
"integrity": "sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==",
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz",
"integrity": "sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==",
"license": "MIT"
},
"node_modules/tapable": {
@ -7396,12 +7376,12 @@
"license": "MIT"
},
"node_modules/tinyglobby": {
"version": "0.2.12",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz",
"integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==",
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz",
"integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==",
"license": "MIT",
"dependencies": {
"fdir": "^6.4.3",
"fdir": "^6.4.4",
"picomatch": "^4.0.2"
},
"engines": {
@ -7894,14 +7874,17 @@
}
},
"node_modules/vite": {
"version": "6.2.6",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.2.6.tgz",
"integrity": "sha512-9xpjNl3kR4rVDZgPNdTL0/c6ao4km69a/2ihNQbcANz8RuCOK3hQBmLSJf3bRKVQjVMda+YvizNE8AwvogcPbw==",
"version": "6.3.4",
"resolved": "https://registry.npmjs.org/vite/-/vite-6.3.4.tgz",
"integrity": "sha512-BiReIiMS2fyFqbqNT/Qqt4CVITDU9M9vE+DKcVAsB+ZV0wvTKd+3hMbkpxz1b+NmEDMegpVbisKiAZOnvO92Sw==",
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.4",
"picomatch": "^4.0.2",
"postcss": "^8.5.3",
"rollup": "^4.30.1"
"rollup": "^4.34.9",
"tinyglobby": "^0.2.13"
},
"bin": {
"vite": "bin/vite.js"

View file

@ -13,16 +13,14 @@
},
"dependencies": {
"@astrojs/check": "0.9.4",
"@astrojs/mdx": "^4.2.5",
"@astrojs/mdx": "^4.2.6",
"@astrojs/rss": "^4.0.11",
"@astrojs/sitemap": "3.3.1",
"@fontsource-variable/outfit": "^5.2.5",
"@fontsource-variable/red-hat-mono": "^5.2.5",
"@tailwindcss/vite": "^4.1.4",
"astro": "^5.7.7",
"@tailwindcss/vite": "^4.1.5",
"astro": "^5.7.10",
"astro-icon": "^1.1.5",
"rehype-external-links": "^3.0.0",
"tailwindcss": "^4.1.4",
"tailwindcss": "^4.1.5",
"typescript": "^5.8.3"
},
"devDependencies": {

View file

@ -9,7 +9,7 @@ const { href, link } = Astro.props;
<a href={`${href}`}>
<div
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full px-3 py-1.5 text-center text-sm font-medium text-nowrap capitalize transition-colors duration-300"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-md px-3 py-1.5 text-center text-sm font-medium text-nowrap capitalize transition-colors duration-300"
>
{link}
</div>

View file

@ -78,7 +78,7 @@ const sortedProjects = [...projects].sort((a, b) => a.id - b.id);
{project.tags.map((tag) => (
<a
href={`/tags/${createSlug(tag)}`}
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-full px-2 py-1 text-center font-sans text-[10px] font-light text-nowrap capitalize no-underline transition-colors duration-300"
class="bg-button text-secondary hover:bg-button-active flex w-fit flex-row items-center gap-1 justify-self-center rounded-sm px-2 py-1 text-center font-sans text-[10px] font-light text-nowrap capitalize no-underline transition-colors duration-300"
>
{tag}
</a>

View file

@ -17,16 +17,15 @@ const { items } = Astro.props as Props;
<div class="grid grid-cols-1 gap-3 md:grid-cols-2">
{
items.map((item: Item) => (
<div class="aspect-[2/1] flex-col overflow-hidden rounded-sm">
<div class="flex-col overflow-hidden rounded-sm">
{item.src && (
<a href={item.src.src} target="_blank">
<Image
src={item.src}
alt={item.alt}
title={item.alt}
loading="eager"
class="mt-0 mb-0 aspect-[2/1] h-full w-full cursor-zoom-in object-cover transition-all duration-300 ease-in-out hover:brightness-50"
class="mt-0 mb-0 h-full max-h-[90svh] w-full object-cover"
/>
</a>
)}
</div>
))

View file

@ -2,6 +2,7 @@
import { SITE } from "@consts";
import gradient from "../../public/assets/gradient.avif";
import { ClientRouter } from "astro:transitions";
import { Font } from "astro:assets";
interface Props {
title: string;
@ -20,9 +21,6 @@ let { tags } = Astro.props;
if (typeof tags !== "undefined") {
tags = SITE.KEYWORDS.concat(tags);
}
import outfit from "@fontsource-variable/outfit/files/outfit-latin-wght-normal.woff2?url";
import redhatmono from "@fontsource-variable/red-hat-mono/files/red-hat-mono-latin-wght-normal.woff2?url";
---
<head>
@ -96,18 +94,6 @@ import redhatmono from "@fontsource-variable/red-hat-mono/files/red-hat-mono-lat
<ClientRouter />
<!-- Font Preload -->
<link
rel="preload"
as="font"
type="font/woff2"
href={outfit}
crossorigin="anonymous"
/>
<link
rel="preload"
as="font"
type="font/woff2"
href={redhatmono}
crossorigin="anonymous"
/>
<Font cssVariable="--font-outfit" preload />
<Font cssVariable="--font-red-hat-mono" preload />
</head>

View file

@ -5,26 +5,26 @@
<span class="text-nowrap">Troy Lusty</span>
<span class="text-tertiary text-pretty">Digital Designer</span>
</h1>
<div
<p
class="text-secondary/70 animate-reveal text-lg font-medium opacity-0 [animation-delay:0.1s]"
>
I am in my final year of studying on a Game Arts and Design BA (Hons) degree
and on the side I manage online operations for a family run
<a
href="/projects/camouflage-store"
class="underline decoration-2 underline-offset-2 hover:no-underline"
class="text-secondary underline decoration-2 underline-offset-2 hover:no-underline"
>outdoor apparel business</a
>.
</div>
<div
</p>
<p
class="text-tertiary animate-reveal text-lg font-medium opacity-0 [animation-delay:0.2s]"
>
Think I could help with a project you're working on?
<a
href="mailto:hello@troylusty.com"
class="ml-1 w-fit rounded-full bg-lime-500/20 px-2 py-1 text-sm text-lime-800 ring ring-lime-500 transition-colors duration-300 hover:bg-lime-500/30 dark:text-lime-200"
class="ml-1 w-fit rounded-sm bg-lime-500/20 px-2 py-1 text-sm text-lime-800 ring ring-lime-500 transition-colors duration-300 hover:bg-lime-500/30 dark:text-lime-200"
>
Send me a message
</a>
</div>
</p>
</section>

View file

@ -1,5 +1,5 @@
<div
class="prose prose-neutral dark:prose-invert prose-lg prose-img:max-h-[90svh] prose-img:rounded-sm prose-img:w-auto prose-img:max-w-full prose-video:max-h-[90svh] prose-video:rounded-sm prose-video:w-auto prose-video::max-w-full prose-a:hover:no-underline"
class="prose prose-neutral dark:prose-invert prose-lg prose-img:max-h-[90svh] prose-img:rounded-sm prose-img:w-auto prose-img:max-w-full prose-video:max-h-[90svh] prose-video:rounded-sm prose-video:w-auto prose-video::max-w-full prose-a:hover:no-underline prose-a:decoration-2 prose-a:underline-offset-2"
>
<slot />
</div>

View file

@ -19,7 +19,7 @@ const next = items[(index + 1) % items.length];
{
items.length > 1 ? (
<div class="animate-reveal mx-auto flex w-full flex-col-reverse items-center justify-between gap-4 opacity-0 [animation-delay:0.1s] md:flex-row">
<div class="animate-reveal mx-auto flex w-full flex-row flex-wrap items-center justify-between gap-2 opacity-0 [animation-delay:0.1s]">
<Button
href={`/${prev.collection}/${prev.slug}`}
link={`Previous: ${prev.data.title}`}

View file

@ -34,6 +34,11 @@ export const SITE: Site = {
href: "/sitemap-index.xml",
icon: "mdi:sitemap",
},
{
name: "Curriculum vitae",
href: "/cv",
icon: "mdi:trophy",
},
{
name: "Email",
href: "mailto:hello@troylusty.com",
@ -59,14 +64,6 @@ export const SITE: Site = {
name: "Posts",
href: "/posts",
},
{
name: "Archive",
href: "/archive",
},
{
name: "CV",
href: "/cv",
},
],
};
@ -87,11 +84,6 @@ export const POSTS: Metadata = {
DESCRIPTION: "A collection of articles on topics I am passionate about.",
};
export const ARCHIVE: Metadata = {
TITLE: "Archive",
DESCRIPTION: "A collection of small, unfinished, or historic personal works.",
};
export const ABOUT: Metadata = {
TITLE: "About",
DESCRIPTION: "About me.",

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 216 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 663 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 870 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 133 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.1 KiB

View file

@ -1,5 +1,5 @@
---
title: "A Long Way Down (Demo)"
title: "A Long Way Down"
description: "A short, atmospheric linear adventure created for my FdA Games and Interactive Design degree."
date: 2023-05-11
featured: true
@ -9,76 +9,62 @@ categories: ["education"]
extraAuthors: [{ name: "Sam Griffiths", url: "https://samgriffiths.dev" }]
---
import Gallery from "@components/Gallery.astro";
import image1 from "alwd-img1.jpg";
import image2 from "alwd-img2.jpg";
import image3 from "alwd-img3.jpg";
import image4 from "alwd-img4.jpg";
import image5 from "alwd-img5.jpg";
import image6 from "alwd-img6.jpg";
import image7 from "29ff3-alwd-introarea-24042023.jpg";
import image8 from "Screenshot_20230402_222043.png";
import image9 from "Screenshot from 2023-03-07 15-30-43.png";
import image10 from "Screenshot from 2023-03-01 20-02-00.jpg";
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. 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.
A Long Way Down is a short, atmospheric linear adventure created alongside my friend Sam 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. This 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>
<video preload="metadata" poster={image1.src} controls>
<source src={alongwaydown_demo_walkthrough} type="video/webm" />
</video>
_Demo walkthrough_
![A Long Way Down Intro Showcase](alwd-img1.jpg)
_Intro_
![A Long Way Down Forest Showcase](alwd-img2.avif)
_Forest_
![A Long Way Down Tree Bridge Showcase](alwd-img3.avif)
_Tree bridge_
![A Long Way Down Swamp Showcase](alwd-img4.avif)
_Swamp_
![A Long Way Down Final Climb](alwd-img5.avif)
_Final climb_
![A Long Way Down Cliff Jump](alwd-img6.avif)
_Cliff jump_
![Alternate night lighting idea](alwd-alternate-night-lighting.avif)
_Alternate night lighting idea_
![Old colour grade on forest section](alwd-early-forest.avif)
_Old colour grade on forest section_
![Early environment stage](alwd-early-environment-stage.avif)
_Early environment stage_
![Initial style experiments](alwd-style-experiment.avif)
_Initial style experiments_
<Gallery
items={[
{ src: image1, alt: "A Long Way Down Intro Showcase" },
{ src: image2, alt: "A Long Way Down Forest Showcase" },
{ src: image3, alt: "A Long Way Down Tree Bridge Showcase" },
{ src: image4, alt: "A Long Way Down Swamp Showcase" },
{ src: image5, alt: "A Long Way Down Final Climb" },
{ src: image6, alt: "A Long Way Down Cliff Jump" },
{ src: image7, alt: "Alternate night lighting idea" },
{ src: image8, alt: "Old colour grade on forest section" },
{ src: image9, alt: "Early environment stage" },
{ src: image10, alt: "Initial style experiments" },
]}
/>
## Nightmare
import image11 from "troy-lusty-nightmare.avif";
import image12 from "troy-lusty-nightmare-frame-1182.avif";
import image13 from "troy-lusty-highresscreenshot00000.png";
import image14 from "troy-lusty-untitled.png";
import nightmare from "nightmare.webm";
This is the environment I created in collaboration with Sam Griffiths for our Unit 8 - Developing a Creative Media Production Project - Final Major Project which concluded 2021-04-21. I was in charge of the art side of the project including asset production, composition, and lighting although we both helped one another out when necessary with blueprints etc. Additionally, I created this short cinematic in Unreal Engine's cinematic level sequencer by keyframing the transform values and focus distance of a camera.
This is the environment I created in collaboration with Sam Griffiths for our Unit 8 - Developing a Creative Media Production Project - Final Major Project which concluded 2021-04-21. I was in charge of the art side of the project including asset production, composition, and lighting. Additionally, I created this short cinematic in Unreal Engine's cinematic level sequencer by keyframing the transform values and focus distance of a camera.
<video preload="metadata" muted controls>
<source src={nightmare} type="video/webm" />
</video>
_Environment cinematic_
![Frame 0600](troy-lusty-nightmare.avif)
_Frame 0600_
![Frame 1182](troy-lusty-nightmare-frame-1182.avif)
_Frame 1182_
![Frame 1700](troy-lusty-nightmare-frame-1700.avif)
_Frame 1700_
<Gallery
items={[
{ src: image11, alt: "Frame 0600" },
{ src: image12, alt: "Frame 1182" },
{ src: image13, alt: "Development image 1" },
{ src: image14, alt: "Development image 2" },
]}
/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

View file

Before

Width:  |  Height:  |  Size: 879 KiB

After

Width:  |  Height:  |  Size: 879 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 296 KiB

After

Width:  |  Height:  |  Size: 296 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 2.6 MiB

After

Width:  |  Height:  |  Size: 2.6 MiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 3.3 MiB

After

Width:  |  Height:  |  Size: 3.3 MiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 374 KiB

After

Width:  |  Height:  |  Size: 374 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

View file

Before

Width:  |  Height:  |  Size: 199 KiB

After

Width:  |  Height:  |  Size: 199 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 314 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 329 KiB

After

Width:  |  Height:  |  Size: 329 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 1.2 MiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 808 KiB

After

Width:  |  Height:  |  Size: 808 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

View file

Before

Width:  |  Height:  |  Size: 494 KiB

After

Width:  |  Height:  |  Size: 494 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 306 KiB

After

Width:  |  Height:  |  Size: 306 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 8.9 MiB

After

Width:  |  Height:  |  Size: 8.9 MiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 20 MiB

After

Width:  |  Height:  |  Size: 20 MiB

Before After
Before After

View file

@ -0,0 +1,113 @@
---
title: "Archive"
description: "A collection of smaller, unfinished, or historic personal works."
date: 2021-01-15
featured: true
image: { url: "2023-11-23.jpg", alt: "Ugolino and His Sons lighting" }
tags:
[
"blender",
"unreal engine",
"davinci resolve",
"photoshop",
"gimp",
"affinity photo",
]
categories: ["personal"]
---
import Gallery from "@components/Gallery.astro";
Whilst not all of these pieces are large enough to have their own project page, I still think they showcase what I am interested in and it didn't feel right to exclude them entirely. This page receives updates periodically.
import video2023_04_08 from "./2023-04-08.webm";
import video2023_02_08 from "./2023-02-08.webm";
import video2023_01_08 from "./2023-01-08.webm";
import video2023_07_19 from "./2023-07-19.webm";
<div class="mb-6 grid grid-cols-1 gap-3 md:grid-cols-2">
<video
preload="metadata"
autoplay
muted
loop
class="mt-0 mb-0 aspect-square h-full max-h-[90svh] w-full object-cover"
>
<source src={video2023_04_08} type="video/webm" />
</video>
<video
preload="metadata"
autoplay
muted
loop
class="mt-0 mb-0 aspect-square h-full max-h-[90svh] w-full object-cover"
>
<source src={video2023_02_08} type="video/webm" />
</video>
<video
preload="metadata"
autoplay
muted
loop
class="mt-0 mb-0 aspect-square h-full max-h-[90svh] w-full object-cover"
>
<source src={video2023_01_08} type="video/webm" />
</video>
<video
preload="metadata"
autoplay
muted
loop
class="mt-0 mb-0 aspect-square h-full max-h-[90svh] w-full object-cover"
>
<source src={video2023_07_19} type="video/webm" />
</video>
</div>
import image2024_04_01 from "./2024-04-01.jpg";
import image2022_01_27 from "./2022-01-27.jpg";
import image2022_01_06 from "./2022-01-06.jpg";
import image2023_11_23 from "./2023-11-23.jpg";
import image2024_02_15 from "./2024-02-15.jpg";
import image2023_10_12 from "./2023-10-12.jpg";
import image2022_09_26 from "./2022-09-26.jpg";
import image2023_11_02 from "./2023-11-02.jpg";
import image2022_03_27 from "./2022-03-27.png";
import image2022_05_17 from "./2022-05-17.jpg";
import image2023_01_05 from "./2023-01-05.jpg";
import image2024_07_19 from "./2024-07-19.jpg";
import image2025_01_24 from "./2025-01-24.jpg";
import image2022_03_28 from "./2022-03-28.jpg";
import image2023_044_18 from "./2023-04-18.avif";
import imageforestfire from "./forestfire.jpg";
import imagedatsun from "./datsun.jpg";
import imageedit from "./edit.jpg";
import imagezomax from "./zomax.jpg";
import imagesea from "./sea.jpg";
import imagelovesongs from "./lovesongs-2-2153-P.jpg";
<Gallery
items={[
{ src: image2024_04_01, alt: "224 Torquay Road" },
{ src: image2022_01_27, alt: "Studying Spider" },
{ src: image2022_01_06, alt: "Firespline" },
{ src: image2023_11_23, alt: "Ugolino and His Sons lighting" },
{ src: image2024_02_15, alt: "Austin" },
{ src: image2023_10_12, alt: "Austin" },
{ src: image2022_09_26, alt: "Wes Cockx" },
{ src: image2023_11_02, alt: "Trees" },
{ src: image2022_03_27, alt: "Sewer" },
{ src: image2022_05_17, alt: "Hanging light fixtures" },
{ src: image2023_01_05, alt: "Digital Artefact: Corridor" },
{ src: image2024_07_19, alt: "DOF tiles" },
{ src: imageforestfire, alt: "Forest fire" },
{ src: image2025_01_24, alt: "Escalator" },
{ src: image2022_03_28, alt: "Astronaut" },
{ src: imagedatsun, alt: "Datsun" },
{ src: imagezomax, alt: "Zomax" },
{ src: imagesea, alt: "Sea" },
{ src: imagelovesongs, alt: "Love Songs record cover" },
{ src: image2023_044_18, alt: "Abstract swirl" },
{ src: imageedit, alt: "Little Nightmares" },
]}
/>

View file

Before

Width:  |  Height:  |  Size: 805 KiB

After

Width:  |  Height:  |  Size: 805 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 545 KiB

After

Width:  |  Height:  |  Size: 545 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Before After
Before After

View file

@ -1,49 +0,0 @@
---
title: "Digital Artefact: Corridor (Incomplete)"
description: "A virtual production horror environment made in Unreal Engine 5 and inspired by The Shining."
date: 2023-01-20
image:
{
url: "troy-lusty-highresscreenshot05012023-2.avif",
alt: "Progress 5 for Digital Artefact: Corridor project",
}
tags: ["unreal engine", "blender", "davinci resolve", "photoshop"]
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. 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)
_Using Lumen for global illumination._
![Progress 4 for Digital Artefact: Corridor project](troy-lusty-highresscreenshot05012023-1.avif)
_Set the project to use deprecated hardware raytracing instead of Lumen, which resulted in the light spill on the walls being fixed._
![Progress 3 for Digital Artefact: Corridor project](troy-lusty-highresscreenshot00001-squeeze.avif)
_First steps of migrating the scene over to Unreal Engine. Focusing on recreating the lights from Blender into Lumen. I am having issues softening up the shadows being cast from the light shade and wall mounting._
![Progress 2 for Digital Artefact: Corridor project](troy-lusty-hall-1205-2.avif)
_Modelled a new scene design by creating repeatable assets in Blender and utilising collection instancing._
![Progress 1 for Digital Artefact: Corridor project](troy-lusty-troy-lusty-output.avif)
_Initial idea made and presented in Blender for the project pitch._
<video preload="metadata" loop muted controls>
<source src={deltakey} type="video/webm" />
</video>
_Virtual production DaVinci Resolve delta key_
<video preload="metadata" loop muted controls>
<source src={wallpaperpeel} type="video/webm" />
</video>
_Wallpaper peel test_

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 MiB

View file

@ -2,8 +2,8 @@
title: "Kraken in the Cupboard"
description: "Mythical depiction of the Kraken bursting its way out of a bookcase cupboard."
date: 2021-12-11
image: { url: "troy-lusty-kraken.avif", alt: "Kraken in the Cupboard final" }
tags: ["blender"]
image: { url: "finalnoise.jpg", alt: "Kraken in the Cupboard final" }
tags: ["blender", "affinity photo"]
categories: ["personal"]
featured: true
---
@ -11,9 +11,7 @@ featured: true
Rendered using Cycles X, with all compositing done inside of Blender.
I originally began making this to see how closely I could recreate my own dining room, but later decided that it could be pushed further and developed into a full scene by adding in some more elements. Created with some CC0 assets from ambientcg, polyhaven, blendswap, unsplash, and avopix.
_Approximate time taken: 28/11/2021 - 11/12/2021_
![Final](troy-lusty-kraken.avif)
![Final](finalnoise.jpg)
_Final_
@ -25,7 +23,7 @@ _Alternate idea_
_Early progress_
![Main reference images](troy-lusty-kraken-reference.avif)
![Main reference images](referenceupload.jpg)
_Main reference images_

Binary file not shown.

After

Width:  |  Height:  |  Size: 474 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 37 KiB

Some files were not shown because too many files have changed in this diff Show more