Can’t Do It

I thought I would talk a little about something that has really helped with the anxiety (that I didn’t expect to feel) that happened when I started the internship at Antimatter. I feel that the opportunity to work for them, even at this low level, is so rare that I think I got myself a little worked up wanting to show them that I am serious about the work and skilled enough to add value to them.

The problem

There were a few reasons why I think the anxiety started. It’s important to understand that I am typically not an anxious person. I steadily break problems down, and then solve them. I have good self discipline and I don’t usually panic. But, there was a perfect storm of factors at play here that I think caused this problem and I will explore those in a second. The main issue was that I perceived that it was taking too long to complete what I felt were basic tasks. I found myself stewing on things and not reaching out for help. I was also experiencing difficulty hunting down solutions to problems because if I did find something that looked like a solution, I could barely understand the other components that made up that solution. I felt very vulnerable. Silly really as I look back. I was losing sight of the fact that I had been brought on as a programming intern and not the new Technical Lead, Lord of All the Bits! I fell into that trap of expecting more from myself than I was actually capable of giving and then getting frustrated when I couldn’t deliver. Did it to myself.

Why I had the problem

  • Being new to C++: I finished long course on Udemy that was teaching me how to code in C++ recently. Very recently actually. I finished the course on the 24th May and the internship started on the 3rd of June. So that meant that I was in the studio, expecting from myself that I would be able to code properly 10 days after finishing the course.
  • Unreal’s C++: This is C++ on steroids. Unreal is built on C++ and uses some really cool but complicated and thorough tools to make the magic happen and if you wish to use C++ for Unreal projects then you really need to know about these features and conventions. I didn’t know about those things and that gave me another issue.
  • Unreal API: You have just arrived in a new town and someone says ‘hey, pop to the local shop and pick up some…’. Ordinarily, not a problem. But you just got here and don’t know where the shop is. Suddenly, something straight forward and simple is made complicated and difficult just due to your lack of knowledge. This is how I felt coming from Blueprint to C++. Basic things that would have take 40 seconds in BP took 3 hours and in C++, which I must say caused an enormous amount of stress.
  • Version Control: Using Perforce and collaborating with 20 odd people from all over the world was an experience in itself too. I have had very limited experience with version control having used Git but this was on another level.
  • The codebase: Oh my. The code base for the project that we are working on has been put together by people that really know what they are doing and is very granular. It uses assets I didn’t know about in novel ways (to me at least) and just working out the structure behind the code I needed to come off was very challenging.

The solution

That has been pretty simple actually. First I just made sure that I spoke about how I was finding it and that I knew that I was being too hard on myself. I needed some reassurance that I was not there to ‘change the world’ and just there to get a bit better at coding! Then after I realised that they expected me to struggle, I came up with the idea of the Can’t Do It timer. When I get stuck and feel that I am not moving forward, I put the timer on. If I solve the problem or make significant progress, I stop the timer. If I don’t, the timer will do off and when it does, I am duty bound to reach out to someone for a hand. Sometimes its the guys in the room and sometimes its the programming lead, who is abroad. Whoever it is, I talk to them.

How its going now

So much better! It’s made such a difference to the way in which I am tackling things. Also, I find that the lessons that I learn from reaching out solve other problems of course and that in turn stops me having to reach out so much. I have also started writing the solutions down in a Workflowy doc so that I should not have to ask about that solution again.

The future

I have had a couple of days now where I have made great progress and I feel that my skill level is growing. I see more of that in the future and I am really looking forward to the time where I am more engaged in ‘how should I do this thing’ and not so much ‘why is this thing not working’.

Onward.

DAILY STAND-UP, JUNE 27TH

Done: Suggested to David that we produce the coding standard including a source control strategy as the next step. Worked on finalising the first iteration of the game play loop. Started to define ‘threat levels’ as part of the mechanics and fleshed them out a little in the doc. Came up with the idea of a Code Name Generator so that the Op’s get some more interesting and unique names. Came up with the idea of Random Events with the Op to add more interest. Found an interesting video featuring an ex CIA master of disguise talking about the craft and put that on the Inspire Channel

Doing: Working on the Dead Drop game play loop as an example of one of the Ops and hope to have the first draft of the entire App loop today.

Blockers: None

Daily Stand-up, June 26th

Done: Uploaded video to YouTube, put images on my Journal (took them down again as there were not mine!), had Davids link to the XD prototype ready to go. Attended the meeting and gave part of the presentation which I think went well enough for the amount of time that we had to plan. Earlier in the day, I caught up with all the Slack channels and looked through some of the products that may be competition to us.

Doing: Finishing the gameplay loop to a first iteration standard so that it could be the target for the first working prototype, even if that has a ton of placeholder. Then if there is time, I would like to look into Unity for onboarding.

Blockers: None

Exploring Space, no, not that one.

Image from here

Currently, we are engaged in a group project that is centered around the theme of location aware apps. There are other constraints too but I don’t have the time to present a full run down. The purpose of this journal has shifted a little now and its not an academic, marked piece of work and more a place where I can record some what’s, where’s and why’s so that I refer back to this in the future. It’s content should be enough that it jogs my memory of the process and not a full account of everything, so apologies for that.

As part of week ones content we were advised to read a piece called “Step and Play!: Space as interface in the context of location-based musical album apps” found on the ACM Digital Library.

Using the space

The paper talks about the use of the environment in order to access content within a musical album that you own or are experiencing. So the idea is that you have to travel to different locations to play the different songs or that the audio changes and updates based on the listeners physical location. I like the sound of that (Ha!) but the hermit in my immediately thought, ‘yes, thats fine, but I have paid for this I will expect to be able to access it from right here in my throne!’. So, I must say that the purpose to which this material was applied in the paper didn’t really make me want to actually use musical albums but it was food for thought.

Music in urban environments

Now this was interesting to me. I found that it resonated with me because the author talks about the combination of the physical locations that are being traversed by the listener and the ‘invisible’ layer of music that sits alongside or over the top of that more visual and physical experience. He talks about the fact that personal music really was the first mobile AR system. And I think he’s right. A persons reality, how they experience the physical space in which they find themselves, is changed by whatever they are listening to. I have personally experienced this and found it very interesting to have a vocabulary with which to talk about the effect that the use of personal audio can have. The paper talks about putting the listener in the directors chair, that they have agency over this physical sense of hearing and all without any real consequence. There is nothing that the listener has really given up in order that they can do this. I know, I know, they need to more careful crossing the road and all that, but, essentially, they are still in command. It’s very satisfying to have that choice and in thinking about that, it’s made me think how much listening to music may be less to do with the music and at least a little to do with enjoying that agency. Hmm…

What is means to us

Our project (which will be discussed in other posts) will use this structure and we have agreed that the narrative and player directions will be delivered via headphones as much as possible. Our idea centres around making the player feel like an Agent and one of the key mechanics for that is that they will be able to interact with a fully voice acted Handler. I think that this will increase immersion and have the effect that the paper talks about. I hope that we will be able to augment the reality of the player using the headphones as much as any other technology we a planning to incorporate.

Antimatter Games

Just a short post (as I have less than no time at the moment) to say that I am very, very pleased to have been offered a gameplay programming internship at Antimatter games in Falmouth over the next three months! I am not sure how much I can say about what I am doing but I can say that I am learning a lot and enjoying the process. I find that the biggest challenge is working with a well developed, complicated and optimised codebase for the fist time. I haven’t long finished the C++ course that I talked about a few weeks. That course focused on the basics of C++ and now there are a lot of other things that I need to wrap my little brain around.

The Project

Can’t tell you.

The work

Nope, can’t tell you that either.

The Pay

INFINITY BILLION DOLLARS. And free coffee.

Completing the App Jam

This is now the second app jam I have done an I am really noticing the benefit to having to come up with something interesting within the confines of the, er, constraints. This jam was based around the theme of the module which is ‘Location Aware Apps’.

The initial theme was then further constrained with the words Police, Withdraw, and Difficulty. We were told that there would be an added twist in that there would also be a set of modifiers added to the mix. The plan was that you would have to incorporate and, yep, you guessed, ‘modify’ the concept that had no doubt been bubbling in your brain. It served another purpose too. It stopped the Jam getting too technical to quickly and forced us to stay away from actual development and stay with the ideas a bit longer. I think that this was good for me as I tend to do two things, although I am working on both of them.

1: I jump straight in. When I have some idea that I think is awesome, I tend to want to run with it and I do wonder if at least some of that is done to me wanting to get to some sort of execution before the sense of the idea being ‘awesome’ dissipates. I like the excitement of having an idea, developing it out and then seeing it on-screen.

2: I seem to be in good company with this one and it’s the game devs old enemy, over-scoping. I get very carried away once my brain starts ticking and ideas spawn ideas and so on. I will say, although every over-scoping addict will say this, that I think I do have a good ability to stay focused and on track. I don’t come up with sets of mechanics that should really be in different games, it does all fit in with the idea that I am developing. There just tends to be a lot of it. I think that this is why I like Agile, Epics, User Stories and so on. Its a really good way of being allowed to get carried away and then making sure that you just pick that one or two features that you are going to make first.

Modifiers

The modifiers for the Jam were (pulled from Canvas, I dont have the time to type all this!):

  • Happy Anniversary!
    • Your app should incorporate one of GAM730 2018’s themes – either COMBINE, GHOST or EXPLORATIVE – in addition to this year’s three themes.
  • Public information
    • Use offline or live data from a public API in your app.
  • LEGO Got It Right 
    • There are no spoken or written words in this app. This is even true in the instructions.
  • Wrist Watcher
    • The app is designed to run on a smart-watch, or uses wearable technology in some way.
  • Rumbled
    • Use haptics (vibration/rumble) to make your app more accessible to people who have some difficulty seeing or hearing
  • Where in the world is…
    • App content changes depending on the user’s geographical location (GPS, IP location, etc). The user experience is therefore significantly different for people all around the globe.

Agent Walkabout

So my Idea was to produce a mobile game that uses Geo-Location and Augmented Reality to provide the player with a secret agent type experience. The player would interact with a Handler, who is fully voice acted, and be sent out into the real world on Operations that they would be able to complete by going to a location, performing some action and leaving the area quickly. The suitable modifiers (or Diversifiers) as I have just realised they are called, may be Wrist Watcher, Rumbled and Public Information. I have lots more information about this idea and if I have more time I would like to talk about how I came up with it and perhaps present the entire concept.

Here we go again…

Yes, I am braced.

The course has resumed and that means just one thing. Fatigue. Actually it means a few other things too. It means that I get to learn more about the things that interest me, I get challenged and I get to experience the feeling of accomplishment when the marks come in. Sometimes. Lets get on then…

This module is all about creating an app or game in a collaborative team. This presents a host of opportunities and difficulties and time will tell how many of each we will face. I am generally optimistic and a good problem solver but I have had mixed experiences with academic team work in the past as have many of the cohort. I think, and hope, that at this level working together should be enjoyable and relatively friction free.

What I hope to give

If we get to the end of this project and I have supplied the team with the very best ideas I could, have worked hard to provide the best technical implementation I could and added value to team members where I could, then I will consider the project a success. I do believe that a person just sort of ‘knows’ that they did all that they could, and thats what I will be aiming for regardless of grade. I also want to make sure that the people in the team feel that they can approach me with whatever they need to discuss. I think that its a persons responsibility to make themselves approachable in this kind of context and be mindful of tone, body language and other forms of non verbal communication so that a trusting and open environment can be created. I will endeavour to give honest feedback in a constructive way and will not be rude or insincere in my behaviour toward the work, the team or myself.

What I hope to gain

That said, I don’t want a poor grade! That would not be desirable at all… But, I think I have found that chasing the grade to closely is a recipe for frustration. So, I am focused more on what I believe the course is trying to steer me toward. I think that is the cyclical analysis of my weaknesses, the recognition of where I am falling down, the creation of some plan to solve that issue and the completion of some reflective practice to assess the success of that plan and the practice that it prescribed. On a practical level I hope to learn about AR in Unreal and how to make and deploy Android mobile apps. I also hope to gain a better understanding and appreciation for what works and what does not with regard to working within a distributed team. There will be challenges there and I hope to learn from them

How I think I will record what happens

I have had a little think about how I may record the progress that I make and that the team makes while creating the app. I think that the major areas to cover will be:

Me: Am I operating as I should? Am I completing the tasks and work that I said I would and to the standard that I would be happy with?

Team: Are we operating as a competent, supportive and professional team that is ready to support the needs of the members and also call out poor behaviours and attitudes that are detrimental to the project.

Work: Are we progressing with the work individually and on the whole. This is where supporting services like version control and communication tools may be reported on I think.

Project: I have made this separate from ‘Work’. This may be a look at how the project is going forward overall. Is it going forward as we had planned? Have there been any problems, pivots and so on. Are we able to stick to the Sprint plan and so on.

Lets get to it…