Added navigation by tag, added first content, fixed thumbnails

This commit is contained in:
Warwick 2023-10-25 14:59:10 +01:00
parent a9645f3455
commit 7919aeefdb
17 changed files with 133 additions and 27 deletions

View file

@ -1,6 +1,7 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
tags: draft
thumbnail: /img/fof.png
tags: ["draft"]
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

46
content/projects/monq.md Normal file
View 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.
![Tiger AI](/projects/monq/TigerAI.png)
![Tiger Diagram](/projects/monq/TigerDiagram.png)
### 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.
![Mirror Reflections](/projects/monq/MirrorReflection.png)

View 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)

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

View file

@ -76,8 +76,13 @@ a:visited {
margin: 10px auto;
}
.flex-wrap-container .container {
max-width: 800px;
}
.flex-wrap-container {
display: flex;
align-items: flex-start;
flex-direction: row;
flex-wrap: wrap;
}

View file

@ -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 }}

View file

@ -2,9 +2,11 @@
<div class="container">
<section id="single-article">
<article id="article-content">
<h1> {{.Title}} </h1>
<time datetime="{{.Params.date.Format "2006-01-02T15:04:05"}}" class="index-article__date">{{.Params.date.Format "2 January 2006"}}</span>
<h1 style="margin-bottom: 1px"> {{.Title}} </h1>
{{- 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>
{{ .Content }}
</article>

View file

@ -1,23 +1,23 @@
<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">
<a class="summary__link" href="{{ .Permalink }}">
<h4>{{ .Title }}</h4>
<h4 style="margin: 0">{{ .Title }}</h4>
{{- partial "taglist.html" . -}}
</a>
<p>{{.Summary}}</p>
<span class="summary__date">
{{.Params.date.Format "2 January 2006"}}
</span>
</div>
<div>
{{ if .Params.thumbnail }}
{{- $image := resources.Get .Params.thumbnail -}}
<div style="align-self: center">
<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>
{{ end }}
</div>
{{ end }}
</div>
<hr>
</div>

View file

@ -11,33 +11,40 @@
<div class="container">
<h2>Projects</h2>
<hr>
{{ range where .Site.RegularPages "Type" "projects" }}
{{- $pageLen := len (where .Site.RegularPages "Type" "projects") -}}
{{- range $i, $element := (where .Site.RegularPages "Type" "projects") }}
{{ .Render "summary" }}
{{ end }}
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
{{- end }}
</div>
<div class="container">
<h2>Blog</h2>
<hr>
{{ range where .Site.RegularPages "Type" "posts" }}
{{- $pageLen := len (where .Site.RegularPages "Type" "posts") -}}
{{- range $i, $element := (where .Site.RegularPages "Type" "posts") }}
{{ .Render "summary" }}
{{ end }}
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
{{- end }}
</div>
<div class="container">
<h2>Research Papers</h2>
<hr>
{{ range where .Site.RegularPages "Type" "papers" }}
{{- $pageLen := len (where .Site.RegularPages "Type" "papers") -}}
{{- range $i, $element := (where .Site.RegularPages "Type" "papers") }}
{{ .Render "summary" }}
{{ end }}
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
{{- end }}
</div>
<div class="container">
<h2>Articles</h2>
<hr>
{{ range where .Site.RegularPages "Type" "articles" }}
{{- $pageLen := len (where .Site.RegularPages "Type" "articles") -}}
{{- range $i, $element := (where .Site.RegularPages "Type" "articles") }}
{{ .Render "summary" }}
{{ end }}
{{- if lt $i (sub $pageLen 1) }} <hr> {{ end -}}
{{- end }}
</div>
</div>

View 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) }} &middot; {{ end -}}
{{- end -}}
</div>
{{- end -}}
{{- end }}

View file

@ -0,0 +1,4 @@
{{ $link := .Get 0 }}
<video width="100%" controls autoplay muted>
<source src="{{$link}}">
</video>

View file

@ -4,18 +4,16 @@
name = "Warwick_portfolio"
license = "MIT"
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/"
tags = []
features = []
min_version = "0.41.0"
[author]
name = ""
homepage = ""
name = "Warwick New"
homepage = "https://warwick-new.co.uk"
# If porting an existing theme
[original]
name = ""
homepage = ""
repo = ""
[taxonomies]
tag = "tags"
category = "categories"