The Fourteenth Week

I’ll preface this week’s post with a reminder that I’ve switched to a format of editing the notes that I took throughout the week (as opposed to rewriting everything, as I did before), but it’s also worth noting that this week’s post begins with Sunday evening. This is because I uploaded last week’s post on Sunday afternoon and had some work in-mind for the evening. Anyway, without further ado, here’s how my week went (with some good bits and some dreadful bits): 

Sunday

Evening:

  • After having dinner and relaxing for a bit, I spent some time coming up with consistent formulae for the positions of spaces on the triangle grid, and briefly thought about ways in which to draw the grid (using for loops)
  • Feeling incredibly tired, I headed to bed

Monday

Morning:

  • I went to the studio early and, after doing nothing for a short while, thought through how to handle calculating the positions of every space on the triangle grid, and possibly how to calculate the current row (though that can just be changed when moving vertically, technically)
  • I spoke with Richard for a while, and then George came in and tried out the mechanics I’d programmed – he said to make the piano mechanic go in one direction, in order to make it easier for the player to synchronise with the Piano Man
  • I showed Bernie the brass and piano mechanics, and he gave me some feedback:
    • The reversal in the brass mechanic wasn’t clear enough
    • The piano mechanic’s pattern needs to be simpler
    • The piano mechanic ends quite boringly (which is probably because assets aren’t there)
    • When the other characters’ lines join in, they could all blend towards one colour, which could be white (to resemble the combination of all colours)
  • While figuring out the loops for drawing the grid lines, I briefly helped Fred out with some Unity implementation for his UI
  • We went to town to get some lunch

Afternoon:

  • I helped Jamie out with a coding issue, and then returned to the studio to have my lunch
  • I showed Sam Green the prototypes, letting him have a go, and talked him through the structure of the mechanics
  • We spoke about how his songs could conform to the structure, and he mentioned the possibility of having minor alterations for loops of the middle section (so that the player doesn’t get bored of the same loop)
  • George showed me the full arrangement of areas in Unity (and how every interaction has a view of the tower), and then described how we’d each need an image and a short bio for the project’s site (which he and Ella are working on)

img_3812

  • I spent a while chatting to the others and not doing a lot
  • I felt that I could get more done at home, so that’s where I headed
  • After doing some cleaning, I finished off my notes for the triangle grid, coming up with a loop for calculating the vector positions of each space

Evening:

  • After dinner and watching videos for a while, I spent some time placing objects and creating scripts for a new Unity project to house the triangle mechanic

14 01

  • Once that was sorted, I ended up spending the rest of the evening playing with and speaking to a friend, getting no more work done (which I’d hoped would be a one-off) and eventually going to bed

Tuesday

Morning:

  • I went to the computer room early, and after a while spent doing very little, I started adding variables to the script for handling the triangle mechanic’s values
  • I showed Ella the brass and piano mechanic prototypes, and she had difficulty matching the Piano Man’s pattern, cementing my need to make it easier
  • I started feeling incredibly unhappy, and wasn’t able to think straight or work for a long while
  • I moved over to the studio, and Adam tried out the brass prototype, saying that it’s not clear enough that you take the lead and that you can be crazy with it
  • Adam pulled two first years and a second year in, one at a time, to try the game:
    • The first played completely as intended
    • The second spent a good while simply following the outer line with the inner one, not noticing that the balls were being dropped and meant to be caught (he thought that they were just a pretty particle effect), so the balls dropping need to be made more obvious
    • The third initially found the catching difficult, but got there eventually, and played as intended
  • Adam said to keep an eye on how people don’t want to be too drastic with their movements after the reversal, and to consider giving the balls differently pitched sounds (based on the angle from which they were dropped) when they reach the middle to encourage players to be more playful with their drops (I said I could also encourage more playfulness by making the character synchronise more quickly)
  • I joined Adam in his office to talk about my depression and to book and plan the trip to Moving Brands the following day

Afternoon:

  • After going for lunch, I sat in the studio and couldn’t work, feeling incredibly unhappy
  • Feeling hopelessly unhappy, I headed home
  • I rested for a while, and was generally incapable of getting anything done

Evening:

  • After having dinner, washing up and going to Tesco, I looked for exact journey details for the following day
  • With everything planned-out, I briefly thought through and added a few variables to the triangle mechanic’s values script before deciding to go to bed

Wednesday

Morning:

  • While in the shower, I thought about how I could handle setting the positions of the triangle mechanic’s lines, as well as how I could set the direction to move in upon each beat, and I took notes about these solutions afterwards
  • I headed to the Winchester train station, got onto the fairly busy 10:18 train to London Waterloo, and played some Axiom Verge on the way
  • I took the Jubilee line from London Waterloo to London Bridge, and then took the Northern line to Old Street, the closest station to Moving Brands’ studio

Afternoon:

  • For lunch, I picked up a burger and chips from Black Bear Burgers in Boxpark Shoreditch (Jesus, that was fantastic), and then wandered around Shoreditch, where there were roughly seven million vintage clothing shops
  • While wandering, I had my photo and details taken for someone’s project about my generation, which was interesting
  • After visiting a record shop (and feeling too awkward to stay for very long), I made my way to Moving Brands
  • I predominantly spoke to Moving Brands’ Guy and Toby about what I’d been working on, what they’d been working on and how things generally work at the studio, and it was really interesting to do (though I was pretty nervous)
  • I headed to Old Street Station once we’d finished talking (an hour-long conversation become an hour and forty minutes, and it was cool to see and speak to them)
  • After taking the Tube route back the way I came (the trains were notably busier), I got on the train from Waterloo to Winchester (getting on early) and spent the trip playing Axiom Verge and Thumper, listening to music and speaking to the man in the seat beside me

Evening:

  • After getting home, having “dinner” and relaxing for a bit, I started feeling quite unhappy
  • Before heading to bed, I added some more variables to the triangle mechanic and used old code to add a subroutine to increase, reset and stop the counter of the mechanic

14 02

Thursday

Morning:

  • I went to the studio fairly early, and spent some time noting down the particularities of the movement direction of the triangle mechanic, though my tailbone had been hurting a fair amount since getting ready
  • I briefly copied over the code for taking the input axes from the brass mechanic
  • The pain got worse, and I also grew increasingly unhappy, with the combination meaning that I struggled to think straight or work

Afternoon:

  • After lunch, I continued to be incapable of working, and reached an extremely low mood and mental state, though I won’t go into details
  • I went home and spent a long while lingering on some pretty dark, unpleasant thoughts

Evening:

  • After dinner, I talked to a friend for a while, and he swayed my outlook on the situation to some degree
  • I started feeling tired, and then very unhappy again, but still managed to program a subroutine to set the player’s direction based on the analogue stick direction and the position of the space that the player’s line is moving towards
  • Feeling incredibly unhappy, I went to bed

Friday

Morning:

  • I went to the studio, but didn’t do anything for some time, still feeling unhappy from the day before
  • I copied the checks for setting the player’s direction to do so for the Triangle Man’s, and briefly wrote a loop to set the leftmost and rightmost spaces of each row

14 06

  • Adam mentioned various students’ achievements, addressed the agenda for the day and asked us to come up with what’s left for us to do
  • I wrote down a few things left for us to do, and then finished programming the subroutine for setting the arrays of rightmost and leftmost spaces, and the world positions of each space

14 07

  • I sent Ella an A4 image at 300dpi to create images for the publication from, in case she can’t set the resolution in ProCreate

14 08

Afternoon:

  • After lunch, I discussed potential ways of handling the camera for the tower (as George was redesigning the tower to be more interesting), using the ladder ascension in Metal Gear Solid 3: Snake Eater as an example of a big moment made of climbing (since George wanted to make sure the tower’s tall and takes a bit of time to climb)
  • I had a phone conversation with First Support, due to how I’d been feeling the day before
  • Adam gathered us together to talk about remaining tasks and scheduling (and determined that I might be screwed, time-wise)
  • Adam showed us the preview of the publication, and told us that we need to make the game description longer to better fit the allocated space
  • I programmed a subroutine to set the space arrays for the player and the Triangle Man (so that they can be updated with each beat)

14 09

  • I spent a while with the team looking through examples of game websites, and explained the concept of unionisation in the games industry to Bernie
  • I briefly spoke to George and Ella about how to handle the wind villagers popping in and out of view, and we decided to have the synchronising villager pop out from a tree upside down
  • I programmed a short subroutine to increase the target synchronisation values if the player’s and Triangle Man’s directions are the same upon a beat, and then programmed a subroutine to make the synchronisation values lerp towards their targets, cap at 1 and decrease over time when they don’t equal 1 (and are greater than 0)
  • I headed home for the day

Evening:

  • After having dinner, watching some videos and washing up, I programmed a subroutine to set the current state of the interaction based on the counter value and whether the player has synchronised with the Triangle Man

14 12

  • I pulled the RGB values for Gloria’s line from old code and for the Triangle Man’s from Ella’s key art, but when I calculated the midpoint and tested it on an RGB colour picker, it wasn’t a very pleasant colour, so I asked Ella to come up with a better midpoint for the two
  • Ella send me a few greens, and I pulled the RGB values of the one that she felt looked the best and stored the three colours as variables in the triangle mechanic’s value management script
  • I played some Mordhau with a friend for a long while, and went to bed in the early hours, meaning I got no more work done that evening

Saturday

Afternoon:

  • After doing my weekly shopping and having lunch, I thought through how to handle the drawing and clearing of the triangle grid, and then programmed a subroutine to instantiate and set the start and end positions of each line in the grid (using the loop I’d come with a few days prior)
  • I found out that you’re able to destroy all game objects of a certain tag (as well as any particular component of a game object), and programmed a subroutine to destroy all triangle grid lines if prompted (noting that I should probably do the same with the keys in the piano mechanic)
  • I went on a walk with a friend, which was nice, but I was feeling a bit rough afterwards
  • I finished writing some code to set the alpha and colour values of the triangle grid’s lines (which I’d started before the walk)

14 18

Evening:

  • I programmed a short subroutine to clear the triangle grid once the interaction has finished, and called all of the subroutines (with conditions) in the frame update

14 19

  • I called the triangle grid to be cleared and redrawn whenever there’s a change in the number of rows or the length of each triangle side

14 20

  • I briefly programmed the script to draw and set the colour of each line in the triangle grid

14 21

  • I called all of the main value setting scripts in update, and created a prefab for the grid lines, which I dragged into the appropriate public variable for the grid drawing script
  • I entered a series of test values into the main value setting script and tested that the grid drawing was working, and when an error suggested that an array index was out of range, I quickly realised that I had to increase the array’s size by 1 (as I was initially setting the size as the last index)

14 24

  • Looking at another error message, I realised that I also had to set the initial values of a couple of variables in the triangle grid script, as a game object wasn’t being properly referenced
  • The grid lines were now being drawn, but they seemed to be in completely the wrong place, which meant to me that they were either referencing the wrong space position array indices or the space positions were being miscalculated

14 25

  • After staring at the notes I’d made on finding grid space positions, I tested my x position calculations against test values (in my head), and realised that I was dividing the difference between the current space index and the leftmost of its row by the distance between the row’s leftmost and rightmost indices for no reason
  • I removed the needless division from the calculation and tested the drawing of the grid, and it worked like a charm (after I made the triangle side length longer, at least), plus the automatic redrawing was working as intended
  • After washing-up, I spent the remainder of the evening playing Mordhau with a friend, so I got no more work done before going to bed

Sunday

Morning:

  • I set up the analogue stick inputs in the project’s input settings, and the direction setting in the mechanic’s value management script was working as intended

14 28

  • I saw that the player’s and Triangle Man’s target spaces were being set properly, but the rest of their spaces weren’t being derived from the target spaces, so I increased the number of passes on the responsible for loops by 1 and the problem was solved

14 29

Afternoon:

  • After going on a walk and having lunch, by referring to old code for the brass mechanic, I programmed the subroutine to set the colours and gradients of the player’s and Triangle Man’s lines

14 30

  • I programmed some code to set whether the player’s and Triangle Man’s lines should be drawn, and to set their width multipliers based on the mechanic’s counter value (so that they adjust their width upon appearing or disappearing)

14 31

  • After playing with a friend for a short while, I programmed the subroutines for setting the number of points on each line (based on whether the lines are being drawn) and drawing the lines (using the spaces and space positions from the value management script)

Evening:

  • When testing whether the line drawing was working, as well as tweaking the material of the lines to make the colours work properly, I noticed that the lines were moving from the rightmost value of one row straight to the leftmost of the row below while moving right, so I had to fix this
  • After dinner, I added the code (that I’d initially forgotten about) to change the player’s and Triangle Man’s target rows based on the direction in which they’re moving

14 36

  • This fixed the positioning of the lines, but the order in which they were appearing on top of each other and the grid seemed inconsistent, and the initial width setting of the lines was making them shrink from a large width instead of grow from nothing

14 37

  • I kept tweaking various values to make the grid and lines look nicer, but I couldn’t figure out what was causing the issues
  • I made the lines’ points’ z positions properly gradually change between a minimum and maximum value based on the point’s position along the line, by casting the integers as floats (which I’d forgotten to do), though the lines were still inconsistently occluding each other or being occluded by the grid
  • After trying a bunch of potential fixes for a fair while, I decided to start working on the week’s blog post and to come back to the programming later (which brings me to this point in time)

At the time of writing this last bit, it’s already pretty late, so although I was hoping to have the triangle mechanic finished before tomorrow, I think it’d be best to get some sleep and try my best to finish it off in the morning. Aside from fixing the annoying bugs (which still don’t really make sense to me), I still need to program the determining of the Triangle Man’s direction based on the current counter value and whether the role reversal has happened, which will include coming up with some proper test values. I hope that doesn’t take too long, though. Once the triangle mechanic’s out of the way, the idea would be to combine all of the mechanics into one Unity project, and I acknowledge that it could take some time to get everything working together and come up with the appropriate logic and status checks. It’d probably also mean coming up with some more code to change the camera’s target object, and while I’m doing that, I can change the camera’s current value change method to be less aggressive and more efficient (using a cosine instead of difference calculations). While I’m doing that, I could incorporate a ray to make the camera adjust its orbit distance to avoid clipping through objects, though I’ll see whether that’s noted as necessary. I’m sure there’ll be various other jobs this week (possibly including adding music to the interactions or overworld, or at least some Booleans to allow for simple musical implementation), but I’ll see what I’m asked to do, and I hope that I’ll be able to do it. Of course, we’ll see by the time next week’s post comes around.