Compare commits

..

69 Commits

Author SHA1 Message Date
513504d175 Should cache Astro build folders, not dist
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 3m47s
2025-09-08 16:19:46 +09:30
6542cb42a2 More consistent shadow on about image
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 9m25s
2025-09-08 16:05:50 +09:30
5c5a7524ab Try cache implementation (may need server-side configuration)
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 12m4s
2025-09-08 13:41:05 +09:30
c9357ce1cd Change Awoken on front page to Hollow Knight: Silksong
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 19m48s
2025-09-05 18:06:45 +09:30
51db7a18f7 Add Hollow Knight: Silksong and Submerged: Hidden Depths to About page
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 20m56s
2025-09-05 11:31:31 +09:30
e629567d32 Declare some image heights for better responsiveness 2025-09-05 11:24:58 +09:30
b3064609cf Add Hollow Knight: Silksong 🧵
Some checks are pending
Build and Deploy to Web Server / deploy (push) Has started running
2025-09-05 11:20:44 +09:30
85234ce522 Sync package-lock.json as well
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 16m0s
2025-09-01 10:34:07 +09:30
f743618b5f Don't delete node_modules to hopefully speed up remote deployment 2025-09-01 10:19:50 +09:30
ce6dffbaf5 Better handle project URLs
Some checks failed
Build and Deploy to Web Server / deploy (push) Has been cancelled
2025-08-29 15:02:25 +09:30
d0c1319258 Why did I do package-lock and not package?
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 19m33s
2025-08-29 14:12:06 +09:30
7c8ab1c988 Better handle contact form JS
Some checks failed
Build and Deploy to Web Server / deploy (push) Failing after 11m57s
2025-08-29 12:52:22 +09:30
52362b748b Add SSR deployment method
Some checks are pending
Build and Deploy to Web Server / deploy (push) Has started running
2025-08-29 12:43:07 +09:30
e46a4a560a Add SSR contact form
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 18m1s
2025-08-29 11:36:58 +09:30
1c3b37a70c Merge branch 'main' of git.nathancummins.com.au:encie22/portfolio
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 16m51s
2025-08-28 16:06:56 +09:30
ca15fa782d Expand DNDT, add TrackInline, more tracks 2025-08-28 16:03:29 +09:30
ba8eec5879 Add colour options for primary colour 2025-08-28 16:02:32 +09:30
0802b69c56 Add Y space to tokens on projects page
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m56s
2025-08-26 13:45:39 +09:30
c74299c2b1 Add links and key figures to project pages
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 16m35s
2025-08-25 17:49:45 +09:30
982589927f Allow filtering of projects
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m24s
2025-08-25 11:18:39 +09:30
025914083c Add MWM, fix max-h
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 16m13s
2025-08-25 09:45:23 +09:30
69a17c48f3 Fix about page black padding
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m55s
2025-08-22 17:09:25 +09:30
352a9c18f5 Flesh out about a little more, still temporary
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m49s
2025-08-22 16:42:08 +09:30
51723e0c44 Small correction to old bio
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m46s
2025-08-22 10:53:41 +09:30
17f185f953 Add automatic development webserver launch 2025-08-22 10:42:06 +09:30
7805a7dfa9 Sound designer, footer wasn't clickable
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m51s
2025-08-22 10:22:25 +09:30
41079e93c1 Add alt as caption, add details to header, add some early writing to DNDT
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m17s
2025-08-21 17:11:19 +09:30
a4423b18cf Small fix to projects page
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m5s
2025-08-21 16:26:43 +09:30
a37051afce Pad content to footer, better handle carousel
Some checks are pending
Build and Deploy to Web Server / deploy (push) Has started running
2025-08-21 16:19:18 +09:30
e790264b99 Add Jeff's website
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m16s
2025-08-21 14:47:34 +09:30
aa392b8122 Key figures, minor fixes
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 17m42s
2025-08-21 14:02:09 +09:30
583e2ba10b Editor config
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 15m39s
2025-08-15 12:11:29 +09:30
e97c58a7a1 Finish (?) code snippets, add to do regarding blockquote author 2025-08-15 12:01:31 +09:30
ee5da382c9 Handle null image
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 14m56s
2025-08-14 17:57:16 +09:30
778490bed8 Better slugs, improvements to projects, some fixes
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 14m57s
2025-08-14 11:11:10 +09:30
1f45a74b2a Some corrections with types and undeleted file
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 18m1s
2025-08-14 09:48:52 +09:30
63e0e1fd28 Add fallback for year generated at build time
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m18s
2025-08-13 14:35:12 +09:30
e6ffefaa2e Missing full stop in footer
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m9s
2025-08-13 10:48:20 +09:30
9445b3f2e3 Add and clarify license
Some checks are pending
Build and Deploy to Web Server / deploy (push) Has started running
2025-08-13 10:46:40 +09:30
41a827d390 Move projects to root in preparation for later posts
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m19s
2025-08-13 09:45:43 +09:30
c3dd168566 Add note about server enviroment 2025-08-13 09:41:25 +09:30
b2c89275ec Refactor and simplify navbar, now behaves more consistenly 2025-08-13 09:36:51 +09:30
69792d4faf Begin styling projects page
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m15s
2025-08-13 07:42:38 +09:30
9617feed0c robots plugin, setup shiki 2025-08-13 07:41:15 +09:30
5852aa7ebd Change to Roboto import, add Fira Code 2025-08-13 07:38:52 +09:30
b43bf3860f Change recommended extensions to be more accurate 2025-08-13 07:37:08 +09:30
027c7b2abc More space between projects on smaller screens
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m6s
2025-08-12 13:16:31 +09:30
d22dc9374f Better handle navbar scrolling
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m27s
2025-08-12 12:59:08 +09:30
f107a30048 Slight correction to SEO 2025-08-12 12:45:26 +09:30
68a5c45fd5 Add year to project cards if not ongoing
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m26s
2025-08-12 11:48:48 +09:30
e1d61ac2e0 Fix Awoken description
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m15s
2025-08-12 11:14:24 +09:30
640d0b15b2 Correct .png to .jpg
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m22s
2025-08-11 19:20:00 +09:30
98641f3ddd Better deal with transparent navbar when mobile
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m1s
2025-08-11 18:38:28 +09:30
8535965ea7 Navbar gray when dark mode
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 13m27s
2025-08-11 18:04:58 +09:30
e45c898ca1 Specify LFS
All checks were successful
Build and Deploy to Web Server / deploy (push) Successful in 12m45s
2025-08-11 17:45:08 +09:30
dd951fbce6 Track images, fonts, and audio as LFS
Some checks failed
Build and Deploy to Web Server / deploy (push) Failing after 5m12s
2025-08-11 17:21:57 +09:30
02a2d96ce5 Custom pipeline not using the Astro action
Some checks failed
Build and Deploy to Web Server / deploy (push) Has been cancelled
2025-08-11 17:14:53 +09:30
9537648437 Add custom deployment workflow
Some checks failed
Build and Deploy to Web Server / deploy (push) Has been cancelled
2025-08-11 16:56:23 +09:30
ddeefb0044 Export individual socials 2025-08-11 16:32:23 +09:30
b9d6b959dd Fix overflow, add footer max-w 2025-08-11 16:18:46 +09:30
321d776d0d Add buffered percentage bar 2025-08-11 14:03:26 +09:30
8bbc49ff22 Some better SEO 2025-08-11 13:51:33 +09:30
7773d7c3ea Working player, some other fixes 2025-08-11 13:23:47 +09:30
a5f00515a5 Fix image resolution when supplying image to SEO 2025-08-11 09:36:38 +09:30
4b48554501 Stop responsive styles in favour of Tailwind (hopefully picking smallest files still works) 2025-08-11 08:49:38 +09:30
608d9af232 Add --host to dev server for local network 2025-08-11 08:48:47 +09:30
057b88437c Some content fixes, some layout fixes 2025-08-11 08:48:14 +09:30
f8ab08d76a Only zoom project cards when screen is large enough 2025-08-11 08:46:34 +09:30
1666351268 Only include pages for projects that have body 2025-08-11 08:44:03 +09:30
202 changed files with 6805 additions and 963 deletions

6
.editorconfig Normal file
View File

@@ -0,0 +1,6 @@
[*]
indent_style = space
indent_size = 2
insert_final_newline = true
trim_trailing_whitespace = true
end_of_line = crlf

8
.gitattributes vendored Normal file
View File

@@ -0,0 +1,8 @@
*.[pP][nN][gG] filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.[jJ][pP][gG] filter=lfs diff=lfs merge=lfs -text
*.[jJ][pP][eE][gG] filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text

View File

@@ -0,0 +1,65 @@
name: Build and Deploy to Web Server
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
lfs: true
- name: Cache Astro build cache folder
uses: actions/cache@v4
with:
path: |
node_modules/.astro/
node_modules/.vite/
key: ${{ runner.os }}-buildcache
- name: Setup Node
uses: actions/setup-node@v5
with:
node-version: 22
cache: npm
- name: Install
shell: "bash"
working-directory: .
run: npm install
- name: Build
shell: "bash"
working-directory: .
run: npm run build
- name: Set up SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DEPLOY_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H "${{ secrets.DEPLOY_HOST }}" >> ~/.ssh/known_hosts
- name: Install rsync
run: |
apt-get update
apt-get install -y rsync
- name: Deploy via rsync
run: |
rsync -avz --delete --exclude 'node_modules/' ./dist/ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:${{ secrets.DEPLOY_DIRECTORY }}
- name: Copy package.json via rsync
run: |
rsync -avz ./package*.json ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:${{ secrets.DEPLOY_DIRECTORY }}
- name: Install and restart service
run: |
ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} '/home/deployers/${{ secrets.DEPLOY_USER }}/deploy.sh'

View File

@@ -1,4 +1,11 @@
{
"recommendations": ["astro-build.astro-vscode"],
"recommendations": [
"astro-build.astro-vscode",
"bradlc.vscode-tailwindcss",
"unifiedjs.vscode-mdx",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint",
"EditorConfig.EditorConfig"
],
"unwantedRecommendations": []
}
}

View File

@@ -17,5 +17,8 @@
],
"css.customData": [
".vscode/tailwind.json"
]
],
"[mdx]": {
"editor.wordWrap": "on"
}
}

18
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,18 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Run development webserver on startup",
"type": "shell",
"command": "npm run dev",
"windows": {
"command": "npm run dev"
},
"presentation": {
"reveal": "always",
"panel": "new"
},
"runOptions": { "runOn": "folderOpen" }
}
]
}

40
LICENSE Normal file
View File

@@ -0,0 +1,40 @@
This repository contains both software source code and other creative works.
## Code licence
All software source code in this repository is licensed under the MIT License
below, unless otherwise indicated in a specific file's header.
## MIT License
Copyright (c) 2025 Nathan Cummins
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
## Non-code content licence
All non-code content in this repository — including, but not limited to, music
(including melodies, harmonies, arrangements, lyrics, sound recordings, and
other musical elements), audio recordings, images, photographs, written
biographies, descriptive texts, and project documentation — is copyright © 2025
Nathan Cummins, all rights reserved, unless otherwise stated in the file itself.
Such non-code content may not be copied, modified, distributed, or otherwise
used without prior written permission from Nathan Cummins, except where
explicitly provided under a separate licence or allowed by law.

View File

@@ -2,17 +2,19 @@
## [nathancummins.com.au](https://www.nathancummins.com.au)
This repo contains the source for my personal portfolio website at [nathancummins.com.au](https://www.nathancummins.com.au) that features projects bios, skills, music, and projects that I have worked on.
This repo contains the source and creative materials for my personal portfolio website at [nathancummins.com.au](https://www.nathancummins.com.au) which showcases my projects, skills, music, and biography.
You are free to use any code in this repository under the conditions of the license as described below and in the [LICENSE file](LICENSE).
Thanks for checking it out!
## TL;DR
Please feel free to fork, clone, modify, or otherwise make use of any source code in this website for your own projects.
This does not include all copyrighted materials (or any materials that are otherwise intellectual property), including audio files, imagery, and some text relating especially relating to projects or biographical information.
I kindly request that you refrain from obtaining any of these materials via any method.
- **Code:** All source code in this repository is licensed under the [MIT License](LICENSE). You are welcome to fork, clone, modify, or otherwise use the code in your own projects, provided you give appropriate credit.
- **Non-code content:** All other materials — including music and audio (melodies, harmonies, arrangements, lyrics, sound recordings, and other musical elements and audio), images, photographs, written biographies, project descriptions, and any other creative works — are copyright © 2025 Nathan Cummins, **all rights reserved**. These may not be copied, modified, distributed, or otherwise used without prior written permission.
If you use anything from this repository I would appreciate proper credit by linking back to my [website](https://www.nathancummins.com.au) or at least by including my name and email address ([nathan@nathancummins.com.au](https://www.nathancummins.com.au)).
I'd also love to know how you have made use of it - reach out and let me know and I'd love to see what you've done!
If you use the code, I would appreciate proper credit by linking back to my [website](https://www.nathancummins.com.au) or including my name and email ([nathan@nathancummins.com.au](https://www.nathancummins.com.au)).
Id also love to see what you've made — feel free to get in touch!
## Built With
@@ -47,7 +49,7 @@ This website was built primarily with the following technologies:
To build, as with most Astro projects, simply run `npm run build`, which currently outputs the built website to the `dist` folder.
Eventually, this website will automatically deploy via my custom-built deployment system and self-hosted server environment (todo!).
### Show your support
## Show your support
You sharing my website is all the support I need.
However, if you'd like to support me in any other way, please feel free to get in touch!

View File

@@ -10,6 +10,12 @@ import mdx from "@astrojs/mdx";
import sitemap from "@astrojs/sitemap";
import robotsTxt from "astro-robots-txt";
import { transformerMetaHighlight } from "@shikijs/transformers";
import node from "@astrojs/node";
// https://astro.build/config
export default defineConfig({
vite: {
@@ -26,15 +32,36 @@ export default defineConfig({
}
},
integrations: [icon(), mdx(), sitemap()],
integrations: [icon(), mdx(), sitemap(), robotsTxt()],
markdown: {
shikiConfig: {
transformers: [
transformerMetaHighlight(),
{
pre(hast) {
hast.properties["data-meta"] = this.options.meta?.__raw;
hast.properties["data-code"] = this.source;
}
}
],
themes: {
light: "github-light",
dark: "github-dark"
}
}
},
site: "https://www.nathancummins.com.au",
trailingSlash: "always",
image: {
responsiveStyles: true
responsiveStyles: false
},
output: "static"
output: "static",
adapter: node({
mode: "standalone"
})
});

4962
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -3,13 +3,14 @@
"type": "module",
"version": "0.0.1",
"scripts": {
"dev": "astro dev",
"dev": "astro dev --host",
"build": "astro build",
"preview": "astro preview",
"astro": "astro"
},
"dependencies": {
"@astrojs/mdx": "^4.3.1",
"@astrojs/node": "^9.4.3",
"@astrojs/sitemap": "^3.4.2",
"@iconify-json/fa": "^1.2.1",
"@iconify-json/fa7-brands": "^1.2.0",
@@ -19,11 +20,18 @@
"@tailwindcss/vite": "^4.1.11",
"astro": "^5.12.8",
"astro-icon": "^1.1.5",
"astro-robots-txt": "^1.0.0",
"astro-seo-schema": "^5.1.0",
"get-audio-duration": "^4.0.1",
"nodemailer": "^7.0.5",
"schema-dts": "^1.1.5",
"tailwindcss": "^4.1.11"
},
"devDependencies": {
"@cspell/dict-en-au": "^1.1.4",
"@shikijs/transformers": "^3.9.2",
"@types/howler": "^2.2.12",
"@types/nodemailer": "^7.0.1",
"@typescript-eslint/eslint-plugin": "^8.38.0",
"@typescript-eslint/parser": "^8.38.0",
"eslint": "^9.32.0",

View File

@@ -3,7 +3,14 @@ title: Awoken
role: Principal Orchestrator
type: Feature Film
date: 2019-07-01
description: Three young misfits venture into the Australian outback to find what they believe is a meteorite that has crash landed near their country town, only to discover it's something far more mysterious.
slug: awoken
description: A young medical student attempts to cure her brother from a terminal sleep illness, called fatal familial insomnia, where you are unable to sleep until you die. On her quest to help him, a more sinister reason for his condition is revealed.
keyFigure:
- title: Composed by
name: Christopher Larkin
href: https://composerlarkin.com
- title: Directed by
name: Daniel J. Phillips
images:
{
"hero":

View File

@@ -3,7 +3,14 @@ title: Barbecue
role: Additional Orchestration
type: Feature Film
date: 2017-07-01
slug: barbecue
description: The rituals, stories and traditions surrounding the process of cooking meat over an open flame are shared by numerous cultures around the world.
keyFigure:
- title: Composed by
name: Christopher Larkin
href: https://composerlarkin.com
- title: Directed by
name: Matthew Salleh
images:
{
"hero":

View File

@@ -3,6 +3,10 @@ title: Down To Earth
role: Composer
type: Short Film
date: 2020-07-01
slug: down-to-earth
keyFigure:
- title: Directed by
name: Nick Crowhurst
description: Three young misfits venture into the Australian outback to find what they believe is a meteorite that has crash landed near their country town, only to discover it's something far more mysterious.
images:
{

View File

@@ -0,0 +1,91 @@
---
title: Dungeons and Dining Tables
role: Composer and Sound Designer
type: Video Game
date: 2026-07-01
slug: dungeons-and-dining-tables
ongoing: true
description: "Delve dungeons to collect rare furniture, take that furniture back to your home to decorate and the cosier your house is, the higher your stats! 🪑🏡⚔️ Go forth and drive the grumpiness from the land: Your perfect home is just a dungeon away! Oh, and you play as an Axolotl 🥳"
keyFigure:
- title: Developed by
name: Catalyst Games
frontPage:
order: 1
images:
{
"hero":
{
"src": "nathan-cummins-dungeons-and-dining-tables-1.jpg",
"alt": "The Dungeons and Dining Tables main character, an axolotl, looking over a valley."
},
"other": "dungeons-and-dining-tables"
}
externalLinks:
[
{ "name": "Website", "href": "https://dndt.link", "icon": "mdi:web" },
{
"name": "Steam",
"href": "https://dndt.link/steam",
"icon": "fa7-brands:steam"
}
]
---
import TrackInline from "@components/TrackInline.astro";
<small>
_This page contains just a few details of my involvement in the project. I
will continue to update it and add more details while the game develops (and
when I get the time to!)_.
</small>
Since late 2023 I have had the pleasure of working with the team at Catalyst Games on the cozy-adventure RPG _Dungeons and Dining Tables_, a game where you play as an axolotl on a quest to decorate their house.
This little axolotl and the team around it have since become key figures in my life and I consider myself privileged to be a part of the project's development.
![The axolotl, which I affectionately name Frank after the axolotl of a friend. Screenshot from a development build.](/src/assets/img/projects/dungeons-and-dining-tables/nathan-cummins-dungeons-and-dining-tables-13.jpg)
# My Role
While I joined the team partway through the development of the project, I have still been involved since quite early in the development timeline as a composer, sound designer, and also as a programmer responsible for almost all integration of audio.
This has allowed me to deeply integrate both music and sound into the game and with cross-pollination of the two together, from birds that tweet the melody of the area that you are in, to music that mixes between highly orchestrated pieces to music for jazz quartet, to custom designed logic allowing sounds to be obscured by objects in the game-world.
# The Gameplay and My Approach
While I can't share too much currently, the [steam page](https://store.steampowered.com/app/2941630/Dungeons_and_Dining_Tables/) has a good overview of the the gameplay:
> Dungeons and Dining Tables is a Cozy-Adventure RPG where you play as an Axolotl on a quest to decorate their house and defeat the termites out to eat their furniture!
>
> Randomly generated dungeons to explore with puzzles to complete, enemies to defeat and rare furniture loot to collect. Travel through the World Tree, take on new rogue-like challenges and defeat bosses for the most epic of furnishings (maybe even a Legendary Bed of Maximum Health!)
>
> Furniture collected on a dungeon run can be used to decorate not only your humble home but also the homes of the cute and quirky characters of the town of Kindlerest! Decorating your home will give you comfy points that are used to level up your house, improve player stats, upgrade shops and other quality of life features for your dungeon runs.
Considering the gameplay, my approach to the audio has been to make it as dynamic and responsive to the gameplay as possible, with reactive music and sound design that not only compliments but heightens the user experience.
This is best exemplified by the music of the town _Kindlerest_, which is a cosy orchestral piece (with some hustle-and-bustle for good measure) that transitions seamlessly to a jazz quartet piece (_Pine for a Tune_) while you are decorating your house via some simple layering in FMOD.
<div class="my-4">
<TrackInline id="dndt-kindlerest" />
<TrackInline id="dndt-pine-for-a-tune" />
</div>
![The decoration mode. Screenshot from a development build.](/src/assets/img/projects/dungeons-and-dining-tables/nathan-cummins-dungeons-and-dining-tables-4.jpeg)
# My Inspiration
Throughout the project my inspiration has been drawn from a variety of sources.
Primarily and probably unsurprisingly, I have drawn a lot of inspiration from the art style itself and in particular the animations done by the extremely talented Ty Hemi.
The art style and animations are so full of character that it is difficult not to be inspired by them and as a result my sound design work tries to reflect the same character and charm.
I have also of course taken a lot of inspiration from games that have been significant to my development as a composer and as a sound designer.
The games that have inspired me the most include _Super Mario Galaxy_ and many games from the _The Legend of Zelda_ series, in particular the approach to the sound design of _The Legend of Zelda: Breath of the Wild_.
It is also impossible to ignore the influence of the _Animal Crossing_ series, in particular _Animal Crossing: New Horizons_ which is most evident in the UI sounds.
# Listen
<div class="my-4">
<TrackInline id="dndt-lampshade-grove" />
<TrackInline id="dndt-kindlerest" />
<TrackInline id="dndt-pine-for-a-tune" />
<TrackInline id="dndt-the-couch-troll" />
<TrackInline id="dndt-the-couch-trolls-lair" />
<TrackInline id="dndt-gameplay-trailer" />
</div>

View File

@@ -3,7 +3,13 @@ title: Ella
role: Composer
type: Short Film
date: 2013-07-01
slug: ella
description: When Ella learns that her sister Gracie is sick, Ella must turn to the stars to help heal her sister.
keyFigure:
- title: Directed by
name: Jess Cahill
- title: Winner of
name: NASA Humans In Space Art Challenge, viewed in the International Space Station
images:
{
"hero":

View File

@@ -3,7 +3,12 @@ title: Frontier Quest
role: Composer and Sound Designer
type: Video Game
date: 2021-02-01
slug: frontier-quest
description: Rebuild a frontier town and become acquainted with its community in puzzle-RPG Frontier Quest! Explore the frontier, collect materials and defeat monsters with the right equipment in order to restore the town and uncover the secrets of the frontier.
keyFigure:
- title: Developed by
name: Stellar Advent
href: https://stellaradvent.com/
images:
{
"hero":

View File

@@ -0,0 +1,39 @@
---
title: "Hollow Knight: Silksong"
role: Orchestration and Typesetting
type: Video Game
date: 2025-09-04
slug: hollow-knight-silksong
description: "Discover a vast, haunted kingdom in Hollow Knight: Silksong! Explore, fight and survive as you ascend to the peak of a land ruled by silk and song."
keyFigure:
- title: Composed by
name: Christopher Larkin
href: https://composerlarkin.com
- title: Developed by
name: Team Cherry
href: https://www.teamcherry.com.au/
frontPage:
order: 2
images:
{
"hero":
{
"src": "nathan-cummins-hollow-knight-silksong-1.png",
"alt": "The main playable character of Hollow Knight: Silksong."
},
"other": "hollow-knight-silksong"
}
externalLinks:
[
{
"name": "Website",
"href": "https://hollowknightsilksong.com/",
"icon": "mdi:web"
},
{
"name": "Steam",
"href": "https://store.steampowered.com/app/1030300/Hollow_Knight_Silksong/",
"icon": "fa7-brands:steam"
}
]
---

View File

@@ -3,7 +3,12 @@ title: Lucie's Potager
role: Composer and Sound Designer
type: Video Game
date: 2023-02-01
slug: lucies-potager
description: Farm and sell exotic plants with Lucie in this shopkeeping RPG!
keyFigure:
- title: Developed by
name: Stellar Advent
href: https://stellaradvent.com/
images:
{
"hero":

View File

@@ -1,9 +1,14 @@
---
title: Meowing Point
role: Additional Music
role: Additional Music (Single Track)
type: Video Game
date: 2023-10-01
slug: meowing-point
description: Point and meow. 3D hidden cat game. These creatures have been turned into stone. Find and save them all.
keyFigure:
- title: Developed by
name: Francisco Martinez
href: https://yofrancisco.com/
images:
{
"hero":

View File

@@ -3,8 +3,13 @@ title: "Music With Motion: Down Under"
role: Conductor / Artistic Director
type: Concert
date: 2025-11-15
slug: music-with-motion-down-under
keyFigure:
- title: Performed by
name: Woodville Concert Band
href: https://www.woodvillecb.com.au/2025/music-with-motion-down-under/
description: "Music With Motion: Down Under is a dynamic celebration of Australia's video game soundtracks—performed live by a full wind orchestra and synchronised in real time with stunning visuals on the big screen. Premiering all-new orchestrations created especially for this event by award-winning Artistic Director Dr Nathan Cummins, the performance showcases music from games developed across the country, including several from right here in South Australia. Many of these games have never had their music performed live, and you'll be among the very first to hear it."
frontPage: { "order": 2 }
frontPage: { "order": 3 }
images:
{
"hero":

View File

@@ -0,0 +1,21 @@
---
title: Pixelated Symphonies
role: Conductor / Artistic Director
type: Concert
date: 2025-03-09
slug: pixelated-symphonies
description: "A symphonic exploration of video game music with 14 commissioned arrangements. Experience the magic of these legendary symphonic video game soundtracks like never before! Join [the Adelaide Wind Orchestra] for an unforgettable concert of musical enchantment as video game industry insider and composer Dr Nathan Cummins and AWO take you on a wild ride through this iconic music. From the epic adventures of Super Mario to the heartwarming melodies of The Legend of Zelda, immerse yourself and be swept away by the brilliance of Australia's leading symphonic wind orchestra."
frontPage: { "order": 4 }
keyFigure:
- title: Performed by
name: Adelaide Wind Orchestra
href: https://www.awo.org.au/
images:
{
"hero":
{
"src": "nathan-cummins-pixelated-symphonies-1.jpg",
"alt": "The key artwork for the concert Pixelated Symphonies."
}
}
---

View File

@@ -3,8 +3,15 @@ title: Roc's Odyssey
role: Composer and Sound Designer
type: Video Game
date: 2025-02-21
slug: rocs-odyssey
description: Explore vast landscapes and get lost in a beautiful yet dangerous world in Roc's Odyssey. Filled with intense combat, strange allies, platforming, enemies, treasures, secrets, upgrades, friendships and lore this hand drawn action adventure will have you hooked!
frontPage: { "order": 4 }
frontPage: { "order": 6 }
keyFigure:
- title: Developed by
name: Sunshine Festival Studios
href: https://www.sunshinefestivalstudios.com/
- title: Director / Lead Developer
name: Hari "Graig" Dimitriou
images:
{
"hero":

View File

@@ -3,7 +3,12 @@ title: Scooter
role: Composer
type: Short Film
date: 2022-02-21
slug: scooter
description: An eccentric senior citizen who would like to visit his daughter one last time sets him off on an epic 250km journey from the outback to the city on his trusty scooter.
keyFigure:
- title: Directed by
name: John deCaux / Six Foot Four Productions
href: https://sixfootfourproductions.com.au
images:
{
"hero":

View File

@@ -3,7 +3,12 @@ title: "Submerged: Hidden Depths"
role: Music Transcription & Preparation
type: Video Game
date: 2020-10-22
slug: submerged-hidden-depths
description: Boat, climb, interact and explore in the beautiful ruins of a sunken world.
keyFigure:
- title: Composed by
name: Jeff van Dyck
href: https://jeffvandyck.com/
images:
{
"hero":

View File

@@ -3,7 +3,12 @@ title: The Lion and the Mouse
role: Composer
type: Concert Music
date: 2024-10-12
slug: the-lion-and-the-mouse
description: "A piece for narrator and orchestra (or wind orchestra) that aims to teach children about music and the instruments of the orchestra. Experience the beloved Aesop fable come to life, through wind instruments and storytelling designed to inspire the imagination of children and families."
keyFigure:
- title: Performed by
name: Woodville Concert Band
href: https://www.woodvillecb.com.au/2024/the-lion-and-the-mouse/
frontPage: { "order": 5 }
images:
{

View File

@@ -3,7 +3,12 @@ title: TOHU
role: Brass Arrangement (Junkle), Orchestration (Circus)
type: Video Game
date: 2021-10-22
slug: tohu
description: Experience a brand new adventure game set amongst a world of weird and wonderful fish planets. Explore beautiful environments, solve intricate puzzles and discover the truth about a mysterious little girl and her mechanical alter-ego, Cubus.
keyFigure:
- title: Composed by
name: Christopher Larkin
href: https://composerlarkin.com
images:
{
"hero":

Binary file not shown.

BIN
public/audio/dungeons-and-dining-tables/Kindlerest.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
public/audio/dungeons-and-dining-tables/Pine_for_a_Tune.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
public/audio/dungeons-and-dining-tables/The_Couch_Troll.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 265 KiB

After

Width:  |  Height:  |  Size: 131 B

View File

@@ -1,4 +1,4 @@
Nathan Cummins is an award-winning composer, orchestrator, conductor, and performer, based in Adelaide, South Australia.
Nathan Cummins is an award-winning composer, orchestrator, conductor, and sound designer based in Adelaide, South Australia.
He specialises in crafted orchestration for video games, film, and television with a focus on live and vibrant textures across multiple genres and mediums.
His original works and orchestrations have featured prominently in media and in the concert hall, including performances by the Australian String Quartet, the Elder Conservatorium Wind Orchestra, and the Gold Coast Philharmonic Orchestra.
His orchestrations have been used in concerts and recording sessions throughout the world.

View File

@@ -1,2 +1,2 @@
Nathan Cummins is an award-winning composer, orchestrator, sound designer, and conductor known for his vibrant music across video games, film, and live performance.
Based in Adelaide, he brings classical craft, bold creativity, and technical innovation to every project—from the playful music of _Dungeons and Dining Tables_, to the orchestration of _Awoken_ (composed by Christopher Larkin), and to directing multimedia concert events that bring game music to life on stage.
Based in Adelaide, he brings classical craft, bold creativity, and technical innovation to every project—from the playful music of _Dungeons and Dining Tables_, to the orchestration of _Hollow Knight: Silksong_ (composed by Christopher Larkin), and to directing multimedia concert events that bring game music to life on stage.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 MiB

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 100 MiB

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 MiB

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 MiB

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 MiB

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 MiB

After

Width:  |  Height:  |  Size: 133 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 680 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 978 KiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 536 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 879 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 449 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 273 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 509 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 130 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 676 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 440 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 379 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 395 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 610 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 230 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 439 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 MiB

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 KiB

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 371 KiB

After

Width:  |  Height:  |  Size: 131 B

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