Added navigation by tag, added first content, fixed thumbnails
This commit is contained in:
parent
a9645f3455
commit
7919aeefdb
17 changed files with 133 additions and 27 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
---
|
---
|
||||||
title: "{{ replace .Name "-" " " | title }}"
|
title: "{{ replace .Name "-" " " | title }}"
|
||||||
date: {{ .Date }}
|
date: {{ .Date }}
|
||||||
tags: draft
|
thumbnail: /img/fof.png
|
||||||
|
tags: ["draft"]
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
BIN
assets/thumbnails/uni-graphics.png
Normal file
BIN
assets/thumbnails/uni-graphics.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1 MiB |
46
content/projects/monq.md
Normal file
46
content/projects/monq.md
Normal file
|
|
@ -0,0 +1,46 @@
|
||||||
|
---
|
||||||
|
title: "Monq"
|
||||||
|
date: 2023-10-25T14:44:18+01:00
|
||||||
|
thumbnail: /img/fof.png
|
||||||
|
tags: ["unreal","c++"]
|
||||||
|
---
|
||||||
|
Monq is my most complete game project. I made it in my second year of
|
||||||
|
university with some friends, and we were going to use it to form a successful
|
||||||
|
startup. I learned a lot about how a multidisciplinary team works and tinkered
|
||||||
|
with creating frameworks in C++ with inheritance both to blueprints and further
|
||||||
|
C++ sub-classes, covering concepts such as all the AI using unreal's tools,
|
||||||
|
puzzle implementation, shader implementation using noise and more. Most of the
|
||||||
|
mechanics for which I was responsible, used a variety of vector and positional
|
||||||
|
mathematics to implement.
|
||||||
|
|
||||||
|
## Trailer
|
||||||
|
{{< youtube fRSD64D0LUw >}}
|
||||||
|
insert youtube vid here
|
||||||
|
|
||||||
|
## Team
|
||||||
|
**Programming:** Warwick New, James Hellman
|
||||||
|
|
||||||
|
**Designers:** James Hellman, Nicholas Stankowski
|
||||||
|
|
||||||
|
**Art:** Harri Slee, Robert Adolfson
|
||||||
|
|
||||||
|
**Music:** Jason Read
|
||||||
|
|
||||||
|
**Writing:** Michael Wheatley
|
||||||
|
|
||||||
|
**Animation:** George Evans, Ross Everson
|
||||||
|
|
||||||
|
## Main Contributions
|
||||||
|
### Tiger AI
|
||||||
|
Here I created an AI that guards an arena. The puzzle part of this boss was based on trying to get the ai to get a chain stuck on pillars left around the arena reducing the range it could navigate. I did this by calculating the distance between the previous attachment point and the next and reducing the available navigatable circumference of the tiger appropriately. Since this was my first more complicated AI, I now know that It would have been far easier to restrict the AI's movement through the use of a more complex steering system rather than calculating where the actor should target moving towards.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### Mirror Reflections
|
||||||
|
Here is an example of me simulating reflections in monq to create a light bounce puzzle. Each mirror triggers the next to recursively make light reflection beams. Here I had to work out angles of reflection before creating a new cast to attach a beam particle.
|
||||||
|
|
||||||
|
I also worked on the sand texture in this image mixing various forms of noise to create the ripples based on changes in topography.
|
||||||
|
|
||||||
|

|
||||||
18
content/projects/university-graphics-project.md
Normal file
18
content/projects/university-graphics-project.md
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
---
|
||||||
|
title: "University Graphics Project"
|
||||||
|
date: 2023-10-25T11:56:20+01:00
|
||||||
|
thumbnail: /thumbnails/uni-graphics.png
|
||||||
|
tags: ["c++", "opengl", "glsl","cmake", "3d maths"]
|
||||||
|
---
|
||||||
|
|
||||||
|
{{< video "/projects/videos/uni-graphics.mp4" >}}
|
||||||
|
|
||||||
|
I made this project for a module at uni. It's a terrain map based on perlin
|
||||||
|
noise with flat face lighting, It was the first project where I picked up a lot
|
||||||
|
of the 3D maths used in games and learned about simulation. It was my first
|
||||||
|
project using GLSL with C++ and also the project I optimised for an
|
||||||
|
optimisation module in my final year. Getting deep into learning more about
|
||||||
|
memory management and Object-Oriented design.
|
||||||
|
|
||||||
|
#### Build
|
||||||
|
- [Win64 Build](/builds/UniGraphics-Win64.zip)
|
||||||
BIN
static/builds/UniGraphics-Win64.zip
Normal file
BIN
static/builds/UniGraphics-Win64.zip
Normal file
Binary file not shown.
BIN
static/projects/monq/MirrorReflection.png
Normal file
BIN
static/projects/monq/MirrorReflection.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 533 KiB |
BIN
static/projects/monq/TigerAI.png
Normal file
BIN
static/projects/monq/TigerAI.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 839 KiB |
BIN
static/projects/monq/TigerDiagram.png
Normal file
BIN
static/projects/monq/TigerDiagram.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 29 KiB |
BIN
static/projects/videos/uni-graphics.mp4
Normal file
BIN
static/projects/videos/uni-graphics.mp4
Normal file
Binary file not shown.
|
|
@ -76,8 +76,13 @@ a:visited {
|
||||||
margin: 10px auto;
|
margin: 10px auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.flex-wrap-container .container {
|
||||||
|
max-width: 800px;
|
||||||
|
}
|
||||||
|
|
||||||
.flex-wrap-container {
|
.flex-wrap-container {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
align-items: flex-start;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
{{ define "main" -}}
|
||||||
|
<div class="container">
|
||||||
|
<h1> {{ .Title | title }} </h1>
|
||||||
|
{{ .Content }}
|
||||||
|
</div>
|
||||||
|
{{range .Pages }}
|
||||||
|
<div class="container">
|
||||||
|
{{ .Render "summary" }}
|
||||||
|
</div>
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
|
@ -2,9 +2,11 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<section id="single-article">
|
<section id="single-article">
|
||||||
<article id="article-content">
|
<article id="article-content">
|
||||||
<h1> {{.Title}} </h1>
|
<h1 style="margin-bottom: 1px"> {{.Title}} </h1>
|
||||||
<time datetime="{{.Params.date.Format "2006-01-02T15:04:05"}}" class="index-article__date">{{.Params.date.Format "2 January 2006"}}</span>
|
{{- partial "taglist.html" . -}}
|
||||||
|
<time datetime="{{.Params.date.Format "2006-01-02T15:04:05"}}" class="index-article__date">
|
||||||
|
{{.Params.date.Format "2 January 2006"}}
|
||||||
|
</time>
|
||||||
<hr>
|
<hr>
|
||||||
{{ .Content }}
|
{{ .Content }}
|
||||||
</article>
|
</article>
|
||||||
|
|
|
||||||
|
|
@ -1,23 +1,23 @@
|
||||||
<div class="item">
|
<div class="item">
|
||||||
<div style="justify-content: space-between" class="flex-wrap-container">
|
<div style="justify-content: space-between; flex-wrap:nowrap" class="flex-wrap-container">
|
||||||
<div class="summary">
|
<div class="summary">
|
||||||
<a class="summary__link" href="{{ .Permalink }}">
|
<a class="summary__link" href="{{ .Permalink }}">
|
||||||
<h4>{{ .Title }}</h4>
|
<h4 style="margin: 0">{{ .Title }}</h4>
|
||||||
|
{{- partial "taglist.html" . -}}
|
||||||
</a>
|
</a>
|
||||||
<p>{{.Summary}}</p>
|
<p>{{.Summary}}</p>
|
||||||
<span class="summary__date">
|
<span class="summary__date">
|
||||||
{{.Params.date.Format "2 January 2006"}}
|
{{.Params.date.Format "2 January 2006"}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
|
||||||
{{ if .Params.thumbnail }}
|
{{ if .Params.thumbnail }}
|
||||||
{{- $image := resources.Get .Params.thumbnail -}}
|
{{- $image := resources.Get .Params.thumbnail -}}
|
||||||
|
<div style="align-self: center">
|
||||||
<a style="display: block" href="{{ .Permalink }}">
|
<a style="display: block" href="{{ .Permalink }}">
|
||||||
<img src="{{ ($image.Fill "200x200 q100 Center").RelPermalink }}">
|
<img style="margin: 0 1em" src="{{ ($image.Fill "200x200 q100 Center").RelPermalink }}">
|
||||||
</a>
|
</a>
|
||||||
{{ end }}
|
|
||||||
</div>
|
</div>
|
||||||
|
{{ end }}
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,33 +11,40 @@
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Projects</h2>
|
<h2>Projects</h2>
|
||||||
<hr>
|
<hr>
|
||||||
{{ range where .Site.RegularPages "Type" "projects" }}
|
{{- $pageLen := len (where .Site.RegularPages "Type" "projects") -}}
|
||||||
|
{{- range $i, $element := (where .Site.RegularPages "Type" "projects") }}
|
||||||
{{ .Render "summary" }}
|
{{ .Render "summary" }}
|
||||||
{{ end }}
|
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
|
||||||
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Blog</h2>
|
<h2>Blog</h2>
|
||||||
<hr>
|
<hr>
|
||||||
{{ range where .Site.RegularPages "Type" "posts" }}
|
{{- $pageLen := len (where .Site.RegularPages "Type" "posts") -}}
|
||||||
|
{{- range $i, $element := (where .Site.RegularPages "Type" "posts") }}
|
||||||
{{ .Render "summary" }}
|
{{ .Render "summary" }}
|
||||||
{{ end }}
|
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
|
||||||
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Research Papers</h2>
|
<h2>Research Papers</h2>
|
||||||
<hr>
|
<hr>
|
||||||
{{ range where .Site.RegularPages "Type" "papers" }}
|
{{- $pageLen := len (where .Site.RegularPages "Type" "papers") -}}
|
||||||
|
{{- range $i, $element := (where .Site.RegularPages "Type" "papers") }}
|
||||||
{{ .Render "summary" }}
|
{{ .Render "summary" }}
|
||||||
{{ end }}
|
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
|
||||||
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Articles</h2>
|
<h2>Articles</h2>
|
||||||
<hr>
|
{{- $pageLen := len (where .Site.RegularPages "Type" "articles") -}}
|
||||||
{{ range where .Site.RegularPages "Type" "articles" }}
|
{{- range $i, $element := (where .Site.RegularPages "Type" "articles") }}
|
||||||
{{ .Render "summary" }}
|
{{ .Render "summary" }}
|
||||||
{{ end }}
|
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
|
||||||
|
{{- end }}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
14
themes/warwick_portfolio/layouts/partials/taglist.html
Normal file
14
themes/warwick_portfolio/layouts/partials/taglist.html
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{{- if isset .Page.Params "tags" -}}
|
||||||
|
{{- $tagsLen := len .Params.tags -}}
|
||||||
|
{{- if gt $tagsLen 0 -}}
|
||||||
|
<!-- Taglist shamelessly stolen from here: https://github.com/LukeSmithxyz/lugo/blob/master/layouts/partials/taglist.html -->
|
||||||
|
<div style="clear:both" class=taglist>
|
||||||
|
{{- with .Site.Params.relatedtext }}{{ . }}<br>{{ end -}}
|
||||||
|
{{- range $k, $v := .Params.tags -}}
|
||||||
|
{{- $url := printf "tags/%s" (. | urlize | lower) -}}
|
||||||
|
<a id="tag_{{ . | lower }}" href="{{ $url | absURL }}">{{ . | title }}</a>
|
||||||
|
{{- if lt $k (sub $tagsLen 1) }} · {{ end -}}
|
||||||
|
{{- end -}}
|
||||||
|
</div>
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
4
themes/warwick_portfolio/layouts/shortcodes/video.html
Normal file
4
themes/warwick_portfolio/layouts/shortcodes/video.html
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
{{ $link := .Get 0 }}
|
||||||
|
<video width="100%" controls autoplay muted>
|
||||||
|
<source src="{{$link}}">
|
||||||
|
</video>
|
||||||
|
|
@ -4,18 +4,16 @@
|
||||||
name = "Warwick_portfolio"
|
name = "Warwick_portfolio"
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE"
|
licenselink = "https://github.com/yourname/yourtheme/blob/master/LICENSE"
|
||||||
description = ""
|
description = "A them I've created to display content in my portfolio."
|
||||||
homepage = "http://example.com/"
|
homepage = "http://example.com/"
|
||||||
tags = []
|
tags = []
|
||||||
features = []
|
features = []
|
||||||
min_version = "0.41.0"
|
min_version = "0.41.0"
|
||||||
|
|
||||||
[author]
|
[author]
|
||||||
name = ""
|
name = "Warwick New"
|
||||||
homepage = ""
|
homepage = "https://warwick-new.co.uk"
|
||||||
|
|
||||||
# If porting an existing theme
|
[taxonomies]
|
||||||
[original]
|
tag = "tags"
|
||||||
name = ""
|
category = "categories"
|
||||||
homepage = ""
|
|
||||||
repo = ""
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue